diff --git a/3rdparty/vreen/CMakeLists.txt b/3rdparty/vreen/CMakeLists.txt new file mode 100644 index 000000000..24688529c --- /dev/null +++ b/3rdparty/vreen/CMakeLists.txt @@ -0,0 +1,27 @@ +set(QT_USE_QTNETWORK true) + +option(USE_SYSTEM_VREEN "Force use system vreen instead build-in copy" OFF) + +if(USE_SYSTEM_VREEN) + find_package(PkgConfig) + if(PKG_CONFIG_FOUND) + pkg_check_modules(VREEN REQUIRED vreen) + #another spike. In pkgconfig LIBRARIES macro list only lib names + set(VREEN_LIBRARIES ${VREEN_LDFLAGS}) + endif() +endif() +if(NOT VREEN_FOUND) + if(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr") + set(VREEN_IMPORTS_DIR bin) + endif() + set(VREEN_WITH_QMLAPI OFF CACHE INTERNAL "") + set(VREEN_WITH_OAUTH ON CACHE INTERNAL "") + set(VREEN_INSTALL_HEADERS OFF CACHE INTERNAL "") + set(VREEN_DEVELOPER_BUILD OFF CACHE INTERNAL "") + set(VREEN_WITH_EXAMPLES OFF CACHE INTERNAL "") + set(VREEN_WITH_TESTS OFF CACHE INTERNAL "") + add_subdirectory(vreen) + message(STATUS "Using internal copy of vreen") + set(VREEN_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/vreen/include CACHE INTERNAL "") + set(VREEN_LIBRARIES vreen CACHE INTERNAL "") +endif() diff --git a/3rdparty/vreen/vreen/CMakeLists.txt b/3rdparty/vreen/vreen/CMakeLists.txt new file mode 100644 index 000000000..80ddde319 --- /dev/null +++ b/3rdparty/vreen/vreen/CMakeLists.txt @@ -0,0 +1,44 @@ +project(vreen) +cmake_minimum_required(VERSION 2.8 FATAL_ERROR) + +if(COMMAND cmake_policy) + cmake_policy (SET CMP0003 NEW) +endif(COMMAND cmake_policy) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +include(CommonUtils) + +option(VREEN_WITH_OAUTH "Enable webkit based oauth authorization" ON) +option(VREEN_WITH_DIRECTAUTH "Enable direct authorization" OFF) +option(VREEN_WITH_QMLAPI "Enable QtQuick bindings for vreen" ON) +option(VREEN_WITH_EXAMPLES "Enable vreen tests" ON) +option(VREEN_WITH_TESTS "Enable vreen examples" ON) +option(VREEN_INSTALL_HEADERS "Install devel headers for vreen" ON) +option(VREEN_DEVELOPER_BUILD "Install devel headers for vreen" OFF) +option(USE_QT5 "Build with Qt 5" OFF) + +#TODO check if vars is defined +set(RLIBDIR bin) +set(LIBDIR lib${LIB_SUFFIX}) +set(LIB_DESTINATION ${CMAKE_INSTALL_PREFIX}/${LIBDIR}) +if(APPLE) + set(CMAKE_INSTALL_NAME_DIR "${LIB_DESTINATION}") #hack for mac +endif() + +set(CMAKE_VREEN_VERSION_MAJOR 0 CACHE INT "Major vk version number" FORCE) +set(CMAKE_VREEN_VERSION_MINOR 9 CACHE INT "Minor vk version number" FORCE) +set(CMAKE_VREEN_VERSION_PATCH 5 CACHE INT "Release vk version number" FORCE) +set(CMAKE_VREEN_VERSION_STRING "${CMAKE_VREEN_VERSION_MAJOR}.${CMAKE_VREEN_VERSION_MINOR}.${CMAKE_VREEN_VERSION_PATCH}" CACHE STRING "vreen version string" FORCE) + +set(VREEN_INCLUDE_DIR ${PROJECT_BINARY_DIR}/include) +set(VREEN_PRIVATE_INCLUDE_DIR ${VREEN_INCLUDE_DIR}/vreen/${CMAKE_VREEN_VERSION_STRING}) + +add_subdirectory(src) +if(VREEN_WITH_EXAMPLES) + add_subdirectory(examples) +endif() +if(VREEN_WITH_TESTS) + enable_testing() + add_subdirectory(tests) +endif() diff --git a/3rdparty/vreen/vreen/cmake/CommonUtils.cmake b/3rdparty/vreen/vreen/cmake/CommonUtils.cmake new file mode 100644 index 000000000..a41be2ce7 --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/CommonUtils.cmake @@ -0,0 +1,633 @@ +include(CompilerUtils) +include(QtBundleUtils) +include(MocUtils) + +set(CMAKE_AUTOMOC true) + +macro(LIST_CONTAINS var value) +set(${var}) +foreach(value2 ${ARGN}) + if(${value} STREQUAL ${value2}) + set(${var} TRUE) + endif(${value} STREQUAL ${value2}) +endforeach(value2) +endmacro(LIST_CONTAINS) + +macro(LIST_FILTER list regex output) + unset(${output}) + foreach(item ${list}) + string(REGEX MATCH ${regex} item2 ${item}) + if(item MATCHES ${regex}) + list(APPEND ${output} ${item}) + endif() + endforeach() +endmacro() + +macro(PARSE_ARGUMENTS prefix arg_names option_names) + set(DEFAULT_ARGS) + foreach(arg_name ${arg_names}) + set(${prefix}_${arg_name}) + endforeach(arg_name) + foreach(option ${option_names}) + set(${prefix}_${option} FALSE) + endforeach(option) + + set(current_arg_name DEFAULT_ARGS) + set(current_arg_list) + foreach(arg ${ARGN}) + list_contains(is_arg_name ${arg} ${arg_names}) + if(is_arg_name) + set(${prefix}_${current_arg_name} ${current_arg_list}) + set(current_arg_name ${arg}) + set(current_arg_list) + else(is_arg_name) + list_contains(is_option ${arg} ${option_names}) + if(is_option) + set(${prefix}_${arg} TRUE) + else(is_option) + set(current_arg_list ${current_arg_list} ${arg}) + endif(is_option) + endif(is_arg_name) + endforeach(arg) + SET(${prefix}_${current_arg_name} ${current_arg_list}) +endmacro(PARSE_ARGUMENTS) + +macro(qt_use_modules target) + if(USE_QT5) + find_package(Qt5Core QUIET) + endif() + if(Qt5Core_DIR) + add_definitions("-DQT_DISABLE_DEPRECATED_BEFORE=0") + qt5_use_modules(${target} ${ARGN}) + else() + foreach(_module ${ARGN}) + list(APPEND _modules Qt${_module}) + endforeach() + find_package(Qt4 COMPONENTS ${_modules} QUIET) + include(UseQt4) + target_link_libraries(${target} ${QT_LIBRARIES}) + set(${target}_libraries ${QT_LIBRARIES}) + endif() +endmacro() + +macro(UPDATE_COMPILER_FLAGS target) + parse_arguments(FLAGS + "" + "DEVELOPER;CXX11" + ${ARGN} + ) + + if(FLAGS_DEVELOPER) + if(MSVC) + update_cxx_compiler_flag(${target} "/W3" W3) + update_cxx_compiler_flag(${target} "/WX" WX) + else() + update_cxx_compiler_flag(${target} "-Wall" WALL) + update_cxx_compiler_flag(${target} "-Wextra" WEXTRA) + update_cxx_compiler_flag(${target} "-Wnon-virtual-dtor" WDTOR) + update_cxx_compiler_flag(${target} "-Werror" WERROR) + #update_cxx_compiler_flag(${target} "-Wdocumentation" WERROR) + endif() + endif() + + if(FLAGS_CXX11) + update_cxx_compiler_flag(${target} "-std=c++0x" CXX_11) + update_cxx_compiler_flag(${target} "-stdlib=libc++" STD_LIBCXX) + #add check for c++11 support + endif() + + get_target_property(${target}_TYPE ${target} TYPE) + if(${target}_TYPE STREQUAL "STATIC_LIBRARY" AND NOT WIN32) + update_cxx_compiler_flag(${target} "-fpic" PIC) + elseif(${target}_TYPE STREQUAL "SHARED_LIBRARY") + update_cxx_compiler_flag(${target} "-fvisibility=hidden" HIDDEN_VISIBILITY) + endif() + if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + update_cxx_compiler_flag(${target} "-flto" LTO) + endif() + set_target_properties(${target} PROPERTIES COMPILE_FLAGS "${COMPILER_FLAGS}") +endmacro() + +function(__GET_SOURCES name) + list(LENGTH ARGV _len) + if(_len GREATER 1) + list(GET ARGV 1 sourceDir) + endif() + if(NOT DEFINED sourceDir) + set(sourceDir ${CMAKE_CURRENT_SOURCE_DIR}) + endif() + #Search for source and headers in source directory + file(GLOB_RECURSE HDR "${sourceDir}/*.h") + file(GLOB_RECURSE CXX "${sourceDir}/*.cpp") + file(GLOB_RECURSE CC "${sourceDir}/*.c") + file(GLOB_RECURSE FORMS "${sourceDir}/*.ui") + file(GLOB_RECURSE QRC "${sourceDir}/*.qrc") + if(APPLE) + file(GLOB_RECURSE MM "${sourceDir}/*.mm") + endif() + + list(APPEND sources + ${CXX} + ${CC} + ${MM} + ${HDR} + ${FORMS} + ${QRC} + ) + set(${name} ${sources} PARENT_SCOPE) +endfunction() + +function(__CHECK_SOURCE_FILES name) + list_filter("${ARGV}" ".*\\\\.h" HDR) + list_filter("${ARGV}" ".*\\\\.cpp" CXX) + list_filter("${ARGV}" ".*\\\\.cc" CC) + list_filter("${ARGV}" ".*\\\\.mm" MM) + list_filter("${ARGV}" ".*\\\\.ui" FORMS) + list_filter("${ARGV}" ".*\\\\.qrc" QRC) + + if(USE_QT5) + find_package(Qt5Core QUIET) + find_package(Qt5Widgets QUIET) + else() + find_package(Qt4 COMPONENTS QtCore QUIET REQUIRED) + endif() + + if(Qt5Core_DIR) + qt5_add_resources(${name}_QRC ${QRC}) + qt5_wrap_ui(${name}_HDR ${FORMS}) + else() + qt4_add_resources(${name}_QRC ${QRC}) + qt4_wrap_ui(${name}_HDR ${FORMS}) + endif() + + set(__sources "") + list(APPEND _extra_sources + ${CXX} + ${CC} + ${MM} + ${HDR} + ${FORMS} + ${${name}_QRC} + ${${name}_HDR} + ) + set(${name} ${_extra_sources} PARENT_SCOPE) +endfunction() + +macro(ADD_SIMPLE_LIBRARY target) + parse_arguments(LIBRARY + "LIBRARIES;INCLUDES;DEFINES;VERSION;SOVERSION;DEFINE_SYMBOL;SOURCE_DIR;SOURCE_FILES;INCLUDE_DIR;PKGCONFIG_TEMPLATE;QT" + "STATIC;INTERNAL;DEVELOPER;CXX11;NO_FRAMEWORK" + ${ARGN} + ) + + set(FRAMEWORK FALSE) + if(APPLE AND NOT LIBRARY_NO_FRAMEWORK) + set(FRAMEWORK TRUE) + endif() + + if(LIBRARY_STATIC) + set(type STATIC) + set(FRAMEWORK FALSE) + else() + set(type SHARED) + endif() + + if(LIBRARY_DEVELOPER) + list(APPEND opts DEVELOPER) + endif() + if(LIBRARY_CXX11) + list(APPEND opts CXX11) + endif() + + if(NOT LIBRARY_SOURCE_DIR) + set(LIBRARY_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + endif() + + if(NOT LIBRARY_SOURCE_DIR STREQUAL "NONE") + __get_sources(LIBRARY_SOURCES ${LIBRARY_SOURCE_DIR}) + endif() + + set(LIBRARY_EXTRA_SOURCES "") + __check_source_files(LIBRARY_EXTRA_SOURCES ${LIBRARY_SOURCE_FILES}) + + # This project will generate library + add_library(${target} ${type} ${LIBRARY_SOURCES} ${LIBRARY_EXTRA_SOURCES}) + foreach(_define ${LIBRARY_DEFINES}) + add_definitions(-D${_define}) + endforeach() + + include_directories(${CMAKE_CURRENT_BINARY_DIR} + ${LIBRARY_SOURCE_DIR} + ${LIBRARY_INCLUDES} + ) + update_compiler_flags(${target} ${opts}) + qt_use_modules(${target} ${LIBRARY_QT}) + set_target_properties(${target} PROPERTIES + VERSION ${LIBRARY_VERSION} + SOVERSION ${LIBRARY_SOVERSION} + DEFINE_SYMBOL ${LIBRARY_DEFINE_SYMBOL} + FRAMEWORK ${FRAMEWORK} + ) + + target_link_libraries(${target} + ${QT_LIBRARIES} + ${LIBRARY_LIBRARIES} + ) + + #TODO add framework creation ability + if(LIBRARY_INCLUDE_DIR) + set(INCNAME ${LIBRARY_INCLUDE_DIR}) + else() + set(INCNAME ${target}) + endif() + + file(GLOB_RECURSE PUBLIC_HEADERS "${LIBRARY_SOURCE_DIR}/*[^p].h") + file(GLOB_RECURSE PRIVATE_HEADERS "${LIBRARY_SOURCE_DIR}/*_p.h") + + generate_include_headers("include/${INCNAME}" ${PUBLIC_HEADERS}) + generate_include_headers("include/${INCNAME}/${LIBRARY_VERSION}/${INCNAME}/private/" ${PRIVATE_HEADERS}) + if(FRAMEWORK) + set_source_files_properties(${PUBLIC_HEADERS} + PROPERTIES MACOSX_PACKAGE_LOCATION Headers) + set_source_files_properties(${PRIVATE_HEADERS} + PROPERTIES MACOSX_PACKAGE_LOCATION Headers/${LIBRARY_VERSION}/${INCNAME}/private/) + endif() + + if(NOT LIBRARY_INTERNAL) + if(NOT FRAMEWORK) + install(FILES ${PUBLIC_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/${INCNAME}") + install(FILES ${PRIVATE_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/${INCNAME}/${LIBRARY_VERSION}/${INCNAME}/private/") + endif() + if(LIBRARY_PKGCONFIG_TEMPLATE) + string(TOUPPER ${target} _target) + if(FRAMEWORK) + set(${_target}_PKG_LIBS "-L${LIB_DESTINATION} -f${target}") + set(${_target}_PKG_INCDIR "${LIB_DESTINATION}/${target}.framework/Contents/Headers") + else() + set(${_target}_PKG_LIBS "-L${LIB_DESTINATION} -l${target}") + set(${_target}_PKG_INCDIR "${CMAKE_INSTALL_PREFIX}/include/${INCNAME}") + endif() + add_pkgconfig_file(${LIBRARY_PKGCONFIG_TEMPLATE}) + endif() + endif() + if(type STREQUAL "SHARED" OR NOT LIBRARY_INTERNAL) + install(TARGETS ${target} + RUNTIME DESTINATION ${RLIBDIR} + LIBRARY DESTINATION ${LIBDIR} + ARCHIVE DESTINATION ${LIBDIR} + FRAMEWORK DESTINATION ${LIBDIR} + ) + endif() + string(TOLOWER ${type} _type) + message(STATUS "Added ${_type} library ${target}") +endmacro() + +macro(ADD_SIMPLE_EXECUTABLE target) + parse_arguments(EXECUTABLE + "LIBRARIES;INCLUDES;DEFINES;SOURCE_DIR;SOURCE_FILES;QT" + "INTERNAL;GUI;CXX11" + ${ARGN} + ) + + if(EXECUTABLE_GUI) + if(APPLE) + set(type MACOSX_BUNDLE) + else() + set(type WIN32) + endif() + else() + set(type "") + endif() + + if(NOT EXECUTABLE_SOURCE_DIR) + set(EXECUTABLE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + endif() + + set(EXECUTABLE_EXTRA_SOURCES "") + __get_sources(EXECUTABLE_EXTRA_SOURCES ${EXECUTABLE_SOURCE_DIR}) + __check_source_files(SOURCES "${EXECUTABLE_EXTRA_SOURCES};${EXECUTABLE_SOURCE_FILES}") + + # This project will generate library + add_executable(${target} ${type} ${SOURCES}) + foreach(_define ${EXECUTABLE_DEFINES}) + add_definitions(-D${_define}) + endforeach() + + include_directories(${CMAKE_CURRENT_BINARY_DIR} + . + ${EXECUTABLE_INCLUDES} + ) + + if(EXECUTABLE_CXX11) + list(APPEND opts CXX11) + endif() + + update_compiler_flags(${target} ${opts}) + qt_use_modules(${target} ${EXECUTABLE_QT}) + + target_link_libraries(${target} + ${EXECUTABLE_LIBRARIES} + ${QT_LIBRARIES} + ) + + if(NOT EXECUTABLE_INTERNAL) + install(TARGETS ${target} + RUNTIME DESTINATION ${BINDIR} + BUNDLE DESTINATION . + ) + endif() + message(STATUS "Added executable: ${target}") +endmacro() + +macro(ADD_QML_DIR _qmldir) + parse_arguments(QMLDIR + "URI;VERSION;IMPORTS_DIR" + "" + ${ARGN} + ) + if(NOT QMLDIR_IMPORTS_DIR) + set(QMLDIR_IMPORTS_DIR "${QT_IMPORTS_DIR}") + endif() + + string(REPLACE "." "/" _URI ${QMLDIR_URI}) + message(STATUS "Added qmldir: ${_qmldir} with uri ${QMLDIR_URI}") + set(QML_DIR_DESTINATION "${QMLDIR_IMPORTS_DIR}/${_URI}") + deploy_folder("${_qmldir}" + DESTINATION "${QML_DIR_DESTINATION}" + DESCRIPTION "qmldir with uri ${QMLDIR_URI}") +endmacro() + +macro(ADD_QML_MODULE target) + parse_arguments(MODULE + "LIBRARIES;INCLUDES;DEFINES;URI;QML_DIR;VERSION;SOURCE_DIR;SOURCE_FILES;IMPORTS_DIR;PLUGIN_DIR;QT" + "CXX11" + ${ARGN} + ) + + if(NOT MODULE_IMPORTS_DIR) + set(MODULE_IMPORTS_DIR "${QT_IMPORTS_DIR}") + endif() + if(MODULE_QML_DIR) + add_qml_dir("${MODULE_QML_DIR}" + URI "${MODULE_URI}" + VERSION "${MODULE_VERSION}" + IMPORTS_DIR "${MODULE_IMPORTS_DIR}" + ) + endif() + + __get_sources(SOURCES ${MODULE_SOURCE_DIR}) + set(MODULE_EXTRA_SOURCES "") + + __check_source_files(MODULE_EXTRA_SOURCES ${MODULE_SOURCE_FILES}) + list(APPEND SOURCES ${MODULE_EXTRA_SOURCES}) + # This project will generate library + add_library(${target} SHARED ${SOURCES}) + foreach(_define ${MODULE_DEFINES}) + add_definitions(-D${_define}) + endforeach() + + include_directories(${CMAKE_CURRENT_BINARY_DIR} + ${MODULE_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${MODULE_INCLUDES} + ) + + qt_use_modules(${target} ${MODULE_QT}) + target_link_libraries(${target} + ${${target}_libraries} + ${MODULE_LIBRARIES} + ) + + if(MODULE_CXX11) + list(APPEND opts CXX11) + endif() + update_compiler_flags(${target} ${opts}) + message(STATUS "Added qml module: ${target} with uri ${MODULE_URI}") + string(REPLACE "." "/" _URI ${MODULE_URI}) + install(TARGETS ${target} DESTINATION "${MODULE_IMPORTS_DIR}/${_URI}/${MODULE_PLUGIN_DIR}") +endmacro() + +macro(ADD_SIMPLE_QT_TEST target) + parse_arguments(TEST + "LIBRARIES;RESOURCES;SOURCES;QT" + "CXX11" + ${ARGN} + ) + + if(TEST_SOURCES) + set(${target}_SRC ${TEST_SOURCES}) + else() + set(${target}_SRC ${target}.cpp) + endif() + list(APPEND TEST_QT Test) + + list(APPEND ${target}_SRC ${TEST_RESOURCES}) + __check_source_files(${target}_SRC ${${target}_SRC}) + include_directories(${CMAKE_CURRENT_BINARY_DIR}) + add_executable(${target} ${${target}_SRC}) + qt_use_modules(${target} ${TEST_QT}) + target_link_libraries(${target} ${TEST_LIBRARIES} ${QT_LIBRARIES}) + if(TEST_CXX11) + list(APPEND opts CXX11) + endif() + update_compiler_flags(${target} ${opts}) + add_test(NAME ${target} COMMAND ${target}) + message(STATUS "Added simple test: ${target}") +endmacro() + +macro(APPEND_TARGET_LOCATION target list) + get_target_property(${target}_LOCATION ${target} LOCATION) + list(APPEND ${list} ${${target}_LOCATION}) +endmacro() + +macro(CHECK_DIRECTORY_EXIST directory exists) + if(EXISTS ${directory}) + set(_exists FOUND) + else() + set(_exists NOT_FOUND) + endif() + set(exists ${_exists}) +endmacro() + +macro(CHECK_QML_MODULE name exists) + check_directory_exist("${QT_IMPORTS_DIR}/${name}" _exists) + message(STATUS "Checking qml module ${name} - ${_exists}") + set(${exists} ${_exists}) +endmacro() + +macro(ADD_PUBLIC_HEADER header dir) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${header} + ${CMAKE_CURRENT_BINARY_DIR}/include/${dir}/${header} COPYONLY) + list(APPEND PUBLIC_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/include/${dir}/${header}) +endmacro() + +macro(GENERATE_PUBLIC_HEADER header dir name) + add_public_header(${header}) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/include/${dir}/${name} + "#include \"${name}\"\n" + ) + list(APPEND PUBLIC_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/include/${name}) +endmacro() + +macro(GENERATE_INCLUDE_HEADERS _dir) + include_directories(${PROJECT_BINARY_DIR}) + foreach(header ${ARGN}) + get_filename_component(_basename ${header} NAME_WE) + get_filename_component(_abs_FILE ${header} ABSOLUTE) + #message(STATUS "${PROJECT_BINARY_DIR}/${_dir}/${_basename}.h") + + if(NOT EXISTS "${PROJECT_BINARY_DIR}/${_dir}/${_basename}.h" ) + file(WRITE "${PROJECT_BINARY_DIR}/${_dir}/${_basename}.h" + "#include \"${_abs_FILE}\"\n" + ) + endif() + endforeach() +endmacro() + +macro(ADD_CUSTOM_DIRECTORY sourceDir) + parse_arguments(DIR + "DESCRIPTION" + "" + ${ARGN} + ) + + string(RANDOM tail) + get_filename_component(_basename ${sourceDir} NAME_WE) + file(GLOB_RECURSE _files "${sourceDir}/*") + add_custom_target(dir_${_basename}_${tail} ALL + SOURCES ${_files} + ) + if(DIR_DESCRIPTION) + source_group(${DIR_DESCRIPTION} FILES ${_files}) + endif() +endmacro() + +macro(DEPLOY_FOLDER sourceDir) + parse_arguments(FOLDER + "DESCRIPTION;DESTINATION" + "" + ${ARGN} + ) + + get_filename_component(_basename ${sourceDir} NAME_WE) + get_filename_component(_destname ${FOLDER_DESTINATION} NAME_WE) + file(GLOB_RECURSE _files "${sourceDir}/*") + message(STATUS "deploy folder: ${sourceDir}") + add_custom_target(qml_${_destname} ALL + SOURCES ${_files} + ) + file(GLOB _files "${sourceDir}/*") + foreach(_file ${_files}) + if(IS_DIRECTORY ${_file}) + install(DIRECTORY ${_file} DESTINATION ${FOLDER_DESTINATION}) + get_filename_component(_name ${_file} NAME_WE) + else() + install(FILES ${_file} DESTINATION ${FOLDER_DESTINATION}) + endif() + endforeach() + if(FOLDER_DESCRIPTION) + source_group(${FOLDER_DESCRIPTION} FILES ${_files}) + endif() +endmacro() + +macro(ENABLE_QML_DEBUG_SUPPORT target) + +endmacro() + +macro(ADD_PKGCONFIG_FILE file) + #add pkgconfig file + get_filename_component(_name ${file} NAME_WE) + set(PKGCONFIG_DESTINATION ${CMAKE_INSTALL_PREFIX}/${LIBDIR}/pkgconfig) + configure_file(${file} + ${CMAKE_CURRENT_BINARY_DIR}/${_name}.pc + ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${_name}.pc + DESTINATION ${PKGCONFIG_DESTINATION} + ) +endmacro() + +macro(FIND_MODULE module) + parse_arguments(MODULE + "PREFIX;LIBRARY_HINTS;HEADERS_DIR;INCLUDE_HINTS;GLOBAL_HEADER" + "NO_PKGCONFIG;NO_MACOSX_FRAMEWORK" + ${ARGN} + ) + string(TOUPPER ${module} _name) + if(MODULE_PREFIX) + set(_name "${MODULE_PREFIX}_${_name}") + endif() + + #try to use pkgconfig + if(NOT MODULE_NO_PKGCONFIG) + find_package(PkgConfig) + pkg_check_modules(${_name} ${module}) + if(${_name}_FOUND) + list(GET ${_name}_INCLUDE_DIRS 0 ${_name}_INCLUDE_DIR) + list(GET ${_name}_LIBRARIES 0 ${_name}_LIBRARIES) + endif() + #message("${_name} + ${${_name}_LIBRARIES} AND ${${_name}_INCLUDE_DIR}") + endif() + #try to find macosx framework + if(APPLE AND NOT MODULE_NO_MACOSX_FRAMEWORK AND NOT ${_name}_FOUND) + message(STATUS "Try to find MacosX framework ${module}.framework") + find_library(${_name}_LIBRARIES + NAMES ${module} + HINTS ${MODULE_LIBRARY_HINTS} + ) + if(${_name}_LIBRARIES) + set(${_name}_FOUND true) + list(APPEND ${MODULE_PREFIX}_LIBRARIES ${${_name}_LIBRARIES}) + set(${_name}_INCLUDE_DIR "${${MODULE_PREFIX}_LIBRARIES}/Headers/") + list(APPEND ${MODULE_PREFIX}_INCLUDES + ${${_name}_INCLUDE_DIR} + ) + endif() + endif() + #try to use simple find + if(NOT ${_name}_FOUND) + message(STATUS "Try to find ${module}") + include(FindLibraryWithDebug) + find_path(${_name}_INCLUDE_DIR ${MODULE_GLOBAL_HEADER} + HINTS ${MODULE_INCLUDE_HINTS} + PATH_SUFFIXES ${MODULE_HEADERS_DIR} + ) + find_library_with_debug(${_name}_LIBRARIES + WIN32_DEBUG_POSTFIX d + NAMES ${module} + HINTS ${MODULE_LIBRARY_HINTS} + ) + #message("${MODULE_HEADERS_DIR} ${MODULE_INCLUDE_HINTS} ${QT_INCLUDE_DIR}") + endif() + + #include(FindPackageHandleStandardArgs) + #find_package_handle_standard_args(${_name} DEFAULT_MSG ${${_name}_LIBRARIES} ${${_name}_INCLUDE_DIR}) + + if(${_name}_LIBRARIES AND ${_name}_INCLUDE_DIR) + message(STATUS "Found ${module}: ${${_name}_LIBRARIES}") + set(${_name}_FOUND true) + list(APPEND ${MODULE_PREFIX}_LIBRARIES + ${${_name}_LIBRARIES} + ) + list(APPEND ${MODULE_PREFIX}_INCLUDES + ${${_name}_INCLUDE_DIR} + ) + #message("${${_name}_LIBRARIES} \n ${${_name}_INCLUDE_DIR}") + else(${_name}_LIBRARIES AND ${_name}_INCLUDE_DIR) + message(STATUS "Could NOT find ${module}") + endif() + mark_as_advanced(${${_name}_INCLUDE_DIR} ${${_name}_LIBRARIES}) +endmacro() + +macro(FIND_QT_MODULE module) + parse_arguments(MODULE + "HEADERS_DIR;GLOBAL_HEADER" + "" + ${ARGN} + ) + find_module(${module} + PREFIX QT + HEADERS_DIR ${MODULE_HEADERS_DIR} + GLOBAL_HEADER ${MODULE_GLOBAL_HEADER} + LIBRARY_HINTS ${QT_LIBRARY_DIR} + ) +endmacro() diff --git a/3rdparty/vreen/vreen/cmake/CompilerUtils.cmake b/3rdparty/vreen/vreen/cmake/CompilerUtils.cmake new file mode 100644 index 000000000..c251fa3f7 --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/CompilerUtils.cmake @@ -0,0 +1,9 @@ +include(CheckCXXCompilerFlag) + +macro(UPDATE_CXX_COMPILER_FLAG target flag name) + check_cxx_compiler_flag(${flag} COMPILER_SUPPORTS_${name}_FLAG) + if(COMPILER_SUPPORTS_${name}_FLAG) + add_definitions(${flag}) + endif() + set(${name} TRUE) +endmacro() diff --git a/3rdparty/vreen/vreen/cmake/FindLibraryWithDebug.cmake b/3rdparty/vreen/vreen/cmake/FindLibraryWithDebug.cmake new file mode 100644 index 000000000..58cd73086 --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/FindLibraryWithDebug.cmake @@ -0,0 +1,113 @@ +# +# FIND_LIBRARY_WITH_DEBUG +# -> enhanced FIND_LIBRARY to allow the search for an +# optional debug library with a WIN32_DEBUG_POSTFIX similar +# to CMAKE_DEBUG_POSTFIX when creating a shared lib +# it has to be the second and third argument + +# Copyright (c) 2007, Christian Ehrlicher, +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +MACRO(FIND_LIBRARY_WITH_DEBUG var_name win32_dbg_postfix_name dgb_postfix libname) + + IF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX") + + # no WIN32_DEBUG_POSTFIX -> simply pass all arguments to FIND_LIBRARY + FIND_LIBRARY(${var_name} + ${win32_dbg_postfix_name} + ${dgb_postfix} + ${libname} + ${ARGN} + ) + + ELSE(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX") + + IF(NOT WIN32) + # on non-win32 we don't need to take care about WIN32_DEBUG_POSTFIX + + FIND_LIBRARY(${var_name} ${libname} ${ARGN}) + + ELSE(NOT WIN32) + + # 1. get all possible libnames + SET(args ${ARGN}) + SET(newargs "") + SET(libnames_release "") + SET(libnames_debug "") + + LIST(LENGTH args listCount) + + IF("${libname}" STREQUAL "NAMES") + SET(append_rest 0) + LIST(APPEND args " ") + + FOREACH(i RANGE ${listCount}) + LIST(GET args ${i} val) + + IF(append_rest) + LIST(APPEND newargs ${val}) + ELSE(append_rest) + IF("${val}" STREQUAL "PATHS") + LIST(APPEND newargs ${val}) + SET(append_rest 1) + ELSE("${val}" STREQUAL "PATHS") + LIST(APPEND libnames_release "${val}") + LIST(APPEND libnames_debug "${val}${dgb_postfix}") + ENDIF("${val}" STREQUAL "PATHS") + ENDIF(append_rest) + + ENDFOREACH(i) + + ELSE("${libname}" STREQUAL "NAMES") + + # just one name + LIST(APPEND libnames_release "${libname}") + LIST(APPEND libnames_debug "${libname}${dgb_postfix}") + + SET(newargs ${args}) + + ENDIF("${libname}" STREQUAL "NAMES") + + # search the release lib + FIND_LIBRARY(${var_name}_RELEASE + NAMES ${libnames_release} + ${newargs} + ) + + # search the debug lib + FIND_LIBRARY(${var_name}_DEBUG + NAMES ${libnames_debug} + ${newargs} + ) + + IF(${var_name}_RELEASE AND ${var_name}_DEBUG) + + # both libs found + SET(${var_name} optimized ${${var_name}_RELEASE} + debug ${${var_name}_DEBUG}) + + ELSE(${var_name}_RELEASE AND ${var_name}_DEBUG) + + IF(${var_name}_RELEASE) + + # only release found + SET(${var_name} ${${var_name}_RELEASE}) + + ELSE(${var_name}_RELEASE) + + # only debug (or nothing) found + SET(${var_name} ${${var_name}_DEBUG}) + + ENDIF(${var_name}_RELEASE) + + ENDIF(${var_name}_RELEASE AND ${var_name}_DEBUG) + + MARK_AS_ADVANCED(${var_name}_RELEASE) + MARK_AS_ADVANCED(${var_name}_DEBUG) + + ENDIF(NOT WIN32) + + ENDIF(NOT "${win32_dbg_postfix_name}" STREQUAL "WIN32_DEBUG_POSTFIX") + +ENDMACRO(FIND_LIBRARY_WITH_DEBUG) diff --git a/3rdparty/vreen/vreen/cmake/FindQCA2.cmake b/3rdparty/vreen/vreen/cmake/FindQCA2.cmake new file mode 100644 index 000000000..6bfb5fbad --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/FindQCA2.cmake @@ -0,0 +1,8 @@ +#find qca2 +include(CommonUtils) +find_module(qca2 + GLOBAL_HEADER qca.h + HEADERS_DIR QtCrypto + LIBRARY_HINTS ${QT_LIBRARY_DIR} + INCLUDE_HINTS ${QT_INCLUDE_DIR} +) diff --git a/3rdparty/vreen/vreen/cmake/FindQOAuth.cmake b/3rdparty/vreen/vreen/cmake/FindQOAuth.cmake new file mode 100644 index 000000000..2db3d28cb --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/FindQOAuth.cmake @@ -0,0 +1,42 @@ +# Find QOAuth +# +# QOAuth_FOUND - system has QOAuth +# QOAuth_INCLUDE_DIR - the QOAuth include directory +# QOAuth_LIBRARIES - the libraries needed to use QOAuth +# QOAuth_DEFINITIONS - Compiler switches required for using QOAuth +# +# Copyright © 2010 Harald Sitter +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +include(FindLibraryWithDebug) + +if (QOAuth_INCLUDE_DIR AND QOAuth_LIBRARIES) + set(QOAuth_FOUND TRUE) +else (QOAuth_INCLUDE_DIR AND QOAuth_LIBRARIES) + if (NOT WIN32) + find_package(PkgConfig) + pkg_check_modules(PC_QOAuth QUIET qoauth) + set(QOAuth_DEFINITIONS ${PC_QOAuth_CFLAGS_OTHER}) + endif (NOT WIN32) + + find_library_with_debug(QOAuth_LIBRARIES + WIN32_DEBUG_POSTFIX d + NAMES qoauth + HINTS ${PC_QOAuth_LIBDIR} ${PC_QOAuth_LIBRARY_DIRS} + ) + + find_path(QOAuth_INCLUDE_DIR QtOAuth + HINTS ${PC_QOAuth_INCLUDEDIR} ${PC_QOAuth_INCLUDE_DIRS} + PATH_SUFFIXES QtOAuth) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(QOAuth + DEFAULT_MSG + QOAuth_LIBRARIES + QOAuth_INCLUDE_DIR + ) + + mark_as_advanced(QOAuth_INCLUDE_DIR QOAuth_LIBRARIES) +endif (QOAuth_INCLUDE_DIR AND QOAuth_LIBRARIES) diff --git a/3rdparty/vreen/vreen/cmake/FindQt3D.cmake b/3rdparty/vreen/vreen/cmake/FindQt3D.cmake new file mode 100644 index 000000000..5e1f2a81c --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/FindQt3D.cmake @@ -0,0 +1,6 @@ +#find Qt3D +include(CommonUtils) +find_qt_module(Qt3D + GLOBAL_HEADER qt3dglobal.h + HEADERS_DIR Qt3D qt4/Qt3D +) diff --git a/3rdparty/vreen/vreen/cmake/FindQt3DQuick.cmake b/3rdparty/vreen/vreen/cmake/FindQt3DQuick.cmake new file mode 100644 index 000000000..3734a8582 --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/FindQt3DQuick.cmake @@ -0,0 +1,5 @@ +#find Qt3D +find_qt_module(Qt3DQuick + GLOBAL_HEADER qt3dquickglobal.h + HEADERS_DIR Qt3DQuick qt4/Qt3DQuick +) diff --git a/3rdparty/vreen/vreen/cmake/MocUtils.cmake b/3rdparty/vreen/vreen/cmake/MocUtils.cmake new file mode 100644 index 000000000..aa9bef8a5 --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/MocUtils.cmake @@ -0,0 +1,50 @@ +macro(MOC_WRAP_CPP outfiles) + if(NOT CMAKE_AUTOMOC) + # get include dirs + qt4_get_moc_flags(moc_flags) + qt4_extract_options(moc_files moc_options ${ARGN}) + + foreach(it ${moc_files}) + get_filename_component(_abs_file ${it} ABSOLUTE) + get_filename_component(_abs_PATH ${_abs_file} PATH) + get_filename_component(_basename ${it} NAME_WE) + + set(_HAS_MOC false) + + if(EXISTS ${_abs_PATH}/${_basename}.cpp) + set(_header ${_abs_PATH}/${_basename}.cpp) + file(READ ${_header} _contents) + string(REGEX MATCHALL "# *include +[\">]moc_[^ ]+\\.cpp[\">]" _match "${_contents}") + string(REGEX MATCHALL "# *include +[^ ]+\\.moc[\">]" _match2 "${_contents}") + string(REGEX MATCHALL "Q_OBJECT" _match3 "${_contents}") + if(_match) + set(_HAS_MOC true) + foreach(_current_MOC_INC ${_match}) + string(REGEX MATCH "moc_[^ <\"]+\\.cpp" _current_MOC "${_current_MOC_INC}") + set(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC}) + qt4_create_moc_command(${_abs_file} ${_moc} "${_moc_INCS}" "") + macro_add_file_dependencies(${_abs_file} ${_moc}) + endforeach(_current_MOC_INC) + endif() + if(_match2) + set(_HAS_MOC true) + foreach(_current_MOC_INC ${_match2}) + string(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}") + set(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC}) + qt4_create_moc_command(${_header} ${_moc} "${_moc_INCS}" "") + macro_add_file_dependencies(${_header} ${_moc}) + endforeach (_current_MOC_INC) + endif() + endif() + if(NOT _HAS_MOC) + file(READ ${_abs_file} _contents) + string(REGEX MATCHALL "Q_OBJECT|Q_GADGET" _match2 "${_contents}") + if(_match2) + qt4_make_output_file(${_abs_file} moc_ cpp outfile) + qt4_create_moc_command(${_abs_file} ${outfile} "${moc_flags}" "${moc_options}") + set(${outfiles} ${${outfiles}} ${outfile}) + endif() + endif() + endforeach(it) + endif() +endmacro(MOC_WRAP_CPP) diff --git a/3rdparty/vreen/vreen/cmake/QtBundleUtils.cmake b/3rdparty/vreen/vreen/cmake/QtBundleUtils.cmake new file mode 100644 index 000000000..a5ccc92ff --- /dev/null +++ b/3rdparty/vreen/vreen/cmake/QtBundleUtils.cmake @@ -0,0 +1,106 @@ +if(NOT CMAKE_DEBUG_POSTFIX) + if(APPLE) + set(CMAKE_DEBUG_POSTFIX _debug) + elseif(WIN32) + set(CMAKE_DEBUG_POSTFIX d) + endif() +endif() + +macro(DEPLOY_QT_PLUGIN _path) + get_filename_component(_dir ${_path} PATH) + get_filename_component(name ${_path} NAME_WE) + string(TOUPPER ${CMAKE_BUILD_TYPE} _type) + if(${_type} STREQUAL "DEBUG") + set(name "${name}${CMAKE_DEBUG_POSTFIX}") + endif() + + set(name "${CMAKE_SHARED_LIBRARY_PREFIX}${name}") + set(PLUGIN "${QT_PLUGINS_DIR}/${_dir}/${name}${CMAKE_SHARED_LIBRARY_SUFFIX}") + #trying to search lib with suffix 4 + if(NOT EXISTS ${PLUGIN}) + set(name "${name}4") + set(PLUGIN "${QT_PLUGINS_DIR}/${_dir}/${name}${CMAKE_SHARED_LIBRARY_SUFFIX}") + endif() + + #message(${PLUGIN}) + if(EXISTS ${PLUGIN}) + message(STATUS "Deployng ${_path} plugin") + install(FILES ${PLUGIN} DESTINATION "${PLUGINSDIR}/${_dir}" COMPONENT Runtime) + else() + message(STATUS "Could not deploy ${_path} plugin") + endif() +endmacro() + +macro(DEPLOY_QT_PLUGINS) + foreach(plugin ${ARGN}) + deploy_qt_plugin(${plugin}) + endforeach() +endmacro() + +macro(DEPLOY_QML_MODULE _path) + string(TOUPPER ${CMAKE_BUILD_TYPE} _type) + set(_importPath "${QT_IMPORTS_DIR}/${_path}") + if(EXISTS ${_importPath}) + if(WIN32 OR APPLE) + if(${_type} STREQUAL "DEBUG") + set(_libPattern "[^${CMAKE_DEBUG_POSTFIX}]${CMAKE_SHARED_LIBRARY_SUFFIX}$") + else() + set(_libPattern "${CMAKE_DEBUG_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX}$") + endif() + else() + set(_libPattern "^[*]") + endif() + + #evil version + message(STATUS "Deployng ${_path} QtQuick module") + install(DIRECTORY ${_importPath} DESTINATION ${IMPORTSDIR} COMPONENT Runtime + PATTERN "*.pdb" EXCLUDE + REGEX "${_libPattern}" EXCLUDE + ) + else() + message(STATUS "Could not deploy ${_path} QtQuick module") + endif() +endmacro() + +macro(DEPLOY_QML_MODULES) + foreach(plugin ${ARGN}) + deploy_qml_module(${plugin}) + endforeach() +endmacro() + +macro(DEFINE_BUNDLE_PATHS _name) + if(WIN32) + set(BUNDLE_NAME ${_name}.exe) + set(BINDIR bin) + set(BUNDLE_PATH "\${CMAKE_INSTALL_PREFIX}/${BINDIR}/${BUNDLE_NAME}") + set(LIBDIR lib${LIB_SUFFIX}) + set(SHAREDIR share) + set(PLUGINSDIR bin) + set(IMPORTSDIR ${BINDIR}) + set(RLIBDIR ${BINDIR}) + elseif(APPLE) + set(BUNDLE_NAME ${_name}.app) + set(BUNDLE_PATH "\${CMAKE_INSTALL_PREFIX}/${BUNDLE_NAME}") + set(BINDIR ${BUNDLE_NAME}/Contents/MacOS) + set(LIBDIR ${BINDIR}) + set(RLIBDIR ${BUNDLE_NAME}/Contents/Frameworks) + set(SHAREDIR ${BUNDLE_NAME}/Contents/Resources) + set(PLUGINSDIR ${BUNDLE_NAME}/Contents/PlugIns) + set(IMPORTSDIR ${BINDIR}) + else() + set(BUNDLE_NAME ${_name}) + set(BINDIR bin) + set(BUNDLE_PATH "\${CMAKE_INSTALL_PREFIX}/${BINDIR}/${BUNDLE_NAME}") + set(LIBDIR lib${LIB_SUFFIX}) + set(RLIBDIR ${LIBDIR}) + set(SHAREDIR share/apps/${_name}) + set(PLUGINSDIR ${LIBDIR}/plugins/) + set(IMPORTSDIR ${BINDIR}) #)${LIBDIR}/imports) + endif() + + if(APPLE) + set(DEPLOY_APP "${BUNDLE_NAME}") + else() + set(DEPLOY_APP "bin/${BUNDLE_NAME}") + endif() +endmacro() diff --git a/3rdparty/vreen/vreen/cmake/README b/3rdparty/vreen/vreen/cmake/README new file mode 100644 index 000000000..e69de29bb diff --git a/3rdparty/vreen/vreen/cmake_uninstall.cmake.in b/3rdparty/vreen/vreen/cmake_uninstall.cmake.in new file mode 100644 index 000000000..31a573cc2 --- /dev/null +++ b/3rdparty/vreen/vreen/cmake_uninstall.cmake.in @@ -0,0 +1,21 @@ +IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt"") +ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") + +FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling "$ENV{DESTDIR}${file}"") + IF(EXISTS "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "@CMAKE_COMMAND@" ARGS "-E remove "$ENV{DESTDIR}${file}"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing "$ENV{DESTDIR}${file}"") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSE(EXISTS "$ENV{DESTDIR}${file}") + MESSAGE(STATUS "File "$ENV{DESTDIR}${file}" does not exist.") + ENDIF(EXISTS "$ENV{DESTDIR}${file}") +ENDFOREACH(file) diff --git a/3rdparty/vreen/vreen/src/3rdparty/CMakeLists.txt b/3rdparty/vreen/vreen/src/3rdparty/CMakeLists.txt new file mode 100644 index 000000000..2bda20263 --- /dev/null +++ b/3rdparty/vreen/vreen/src/3rdparty/CMakeLists.txt @@ -0,0 +1,17 @@ +find_package(PkgConfig) +if(PKG_CONFIG_FOUND) + pkg_check_modules(K8JSON k8json) + set(K8JSON_LIBRARIES ${K8JSON_LDFLAGS}) +endif() +if(NOT K8JSON_FOUND) + message(STATUS "Using internal copy of k8json") + set(K8JSON_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "") + + list(APPEND SRC "k8json/k8json.cpp") + add_library(k8json STATIC ${SRC}) + target_link_libraries(k8json) + qt_use_modules(k8json Core) + update_compiler_flags(k8json) + add_definitions(-DK8JSON_LIB_MAKEDLL -DK8JSON_INCLUDE_GENERATOR -DK8JSON_INCLUDE_COMPLEX_GENERATOR) + set(K8JSON_LIBRARIES k8json CACHE INTERNAL "") +endif() diff --git a/3rdparty/vreen/vreen/src/3rdparty/k8json/CMakeLists.txt b/3rdparty/vreen/vreen/src/3rdparty/k8json/CMakeLists.txt new file mode 100644 index 000000000..155448f35 --- /dev/null +++ b/3rdparty/vreen/vreen/src/3rdparty/k8json/CMakeLists.txt @@ -0,0 +1,59 @@ +project(k8json) +cmake_minimum_required(VERSION 2.6) + +set(CMAKE_LIBK8JSON_VERSION_MAJOR 1 CACHE INT "Major k8json version number" FORCE) +set(CMAKE_LIBK8JSON_VERSION_MINOR 0 CACHE INT "Minor k8json version number" FORCE) +set(CMAKE_LIBK8JSON_VERSION_PATCH 0 CACHE INT "Release k8json version number" FORCE) +set(CMAKE_LIBK8JSON_VERSION_STRING "${CMAKE_LIBK8JSON_VERSION_MAJOR}.${CMAKE_LIBK8JSON_VERSION_MINOR}.${CMAKE_LIBK8JSON_VERSION_PATCH}" CACHE STRING "k8json version string" FORCE) + +add_definitions(-DK8JSON_LIB_MAKEDLL -DK8JSON_INCLUDE_GENERATOR -DK8JSON_INCLUDE_COMPLEX_GENERATOR) + +set(CMAKE_INSTALL_NAME_DIR ${LIB_INSTALL_DIR}) +set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" ) +set(LIB_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE STRING "Library directory name" FORCE) + +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + +find_package(Qt4 REQUIRED) +include_directories(${QT_INCLUDES}) + +# mingw can't handle exported explicit template instantiations in a DLL +if (MINGW) + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--export-all-symbols ${CMAKE_SHARED_LINKER_FLAGS}") +endif (MINGW) + +set(k8json_SRCS + k8json.cpp +) + +add_library(k8json SHARED ${k8json_SRCS}) + +set_target_properties(k8json PROPERTIES + VERSION ${CMAKE_LIBK8JSON_VERSION_STRING} + SOVERSION ${CMAKE_LIBK8JSON_VERSION_MAJOR} + LINK_INTERFACE_LIBRARIES "" + DEFINE_SYMBOL K8JSON_LIB_MAKEDLL +) + +target_link_libraries(k8json ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY}) + + +install(TARGETS k8json ARCHIVE DESTINATION ${LIB_DESTINATION} + LIBRARY DESTINATION ${LIB_DESTINATION} + RUNTIME DESTINATION bin) + +install(FILES + k8json.h + DESTINATION include/k8json COMPONENT Devel +) + +# Install package config file +if(NOT WIN32) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/k8json.pc.cmake + ${CMAKE_CURRENT_BINARY_DIR}/k8json.pc + ) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/k8json.pc + DESTINATION ${LIB_DESTINATION}/pkgconfig + ) +endif(NOT WIN32) + diff --git a/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.cpp b/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.cpp new file mode 100644 index 000000000..af0863c19 --- /dev/null +++ b/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.cpp @@ -0,0 +1,894 @@ +/* coded by Ketmar // Vampire Avalon (psyc://ketmar.no-ip.org/~Ketmar) + * Understanding is not required. Only obedience. + * + * This program is free software. It comes without any warranty, to + * the extent permitted by applicable law. You can redistribute it + * and/or modify it under the terms of the Do What The Fuck You Want + * To Public License, Version 2, as published by Sam Hocevar. See + * http://sam.zoy.org/wtfpl/COPYING for more details. + */ +//#include + +#if defined(K8JSON_INCLUDE_COMPLEX_GENERATOR) || defined(K8JSON_INCLUDE_GENERATOR) +# include +#endif + +#include "k8json.h" + + +namespace K8JSON { + +static const quint8 utf8Length[256] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x00-0x0f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x10-0x1f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x20-0x2f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x30-0x3f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x40-0x4f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x50-0x5f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x60-0x6f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, //0x70-0x7f + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, //0x80-0x8f + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, //0x90-0x9f + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, //0xa0-0xaf + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, //0xb0-0xbf + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xc0-0xcf c0-c1: overlong encoding: start of a 2-byte sequence, but code point <= 127 + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, //0xd0-0xdf + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, //0xe0-0xef + 4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8 //0xf0-0xff +}; + + +/* + * check if given (const uchar *) represents valid UTF-8 sequence + * NULL (or empty) s is not valid + */ +bool isValidUtf8 (const uchar *s, int maxLen, bool zeroInvalid) { + if (!s) return false; + if (maxLen < 1) return false; + uchar ch = 0; + const uchar *tmpS = s; + while (maxLen > 0) { + ch = *tmpS++; maxLen--; + if (!ch) { + if (maxLen != 0 && zeroInvalid) return false; + break; + } + // ascii or utf-8 + quint8 t = utf8Length[ch]; + if (t&0x08) return false; // invalid utf-8 sequence + if (t) { + // utf-8 + if (maxLen < --t) return false; // invalid utf-8 sequence + while (t--) { + quint8 b = *tmpS++; maxLen--; + if (utf8Length[b] != 9) return false; // invalid utf-8 sequence + } + } + } + return true; +} + + +QString quote (const QString &str) { + int len = str.length(), c; + QString res('"'); res.reserve(len+128); + for (int f = 0; f < len; f++) { + QChar ch(str[f]); + ushort uc = ch.unicode(); + if (uc < 32) { + // control char + switch (uc) { + case '\b': res += "\\b"; break; + case '\f': res += "\\f"; break; + case '\n': res += "\\n"; break; + case '\r': res += "\\r"; break; + case '\t': res += "\\t"; break; + default: + res += "\\u"; + for (c = 4; c > 0; c--) { + ushort n = (uc>>12)&0x0f; + n += '0'+(n>9?7:0); + res += (uchar)n; + } + break; + } + } else { + // normal char + switch (uc) { + case '"': res += "\\\""; break; + case '\\': res += "\\\\"; break; + default: res += ch; break; + } + } + } + res += '"'; + return res; +} + + +/* + * skip blanks and comments + * return ptr to first non-blank char or 0 on error + * 'maxLen' will be changed + */ +const uchar *skipBlanks (const uchar *s, int *maxLength) { + if (!s) return 0; + int maxLen = *maxLength; + if (maxLen < 0) return 0; + while (maxLen > 0) { + // skip blanks + uchar ch = *s++; maxLen--; + if (ch <= ' ') continue; + // skip comments + if (ch == '/') { + if (maxLen < 2) return 0; + switch (*s) { + case '/': + while (maxLen > 0) { + s++; maxLen--; + if (s[-1] == '\n') break; + if (maxLen < 1) return 0; + } + break; + case '*': + s++; maxLen--; // skip '*' + while (maxLen > 0) { + s++; maxLen--; + if (s[-1] == '*' && s[0] == '/') { + s++; maxLen--; // skip '/' + break; + } + if (maxLen < 2) return 0; + } + break; + default: return 0; // error + } + continue; + } + // it must be a token + s--; maxLen++; + break; + } + // done + *maxLength = maxLen; + return s; +} + + +//FIXME: table? +static inline bool isValidIdChar (const uchar ch) { + return ( + ch == '$' || ch == '_' || ch >= 128 || + (ch >= '0' && ch <= '9') || + (ch >= 'A' && ch <= 'Z') || + (ch >= 'a' && ch <= 'z') + ); +} + +/* + * skip one record + * the 'record' is either one full field ( field: val) + * or one list/object. + * return ptr to the first non-blank char after the record (or 0) + * 'maxLen' will be changed + */ +const uchar *skipRec (const uchar *s, int *maxLength) { + if (!s) return 0; + int maxLen = *maxLength; + if (maxLen < 0) return 0; + int fieldNameSeen = 0; + bool again = true; + while (again && maxLen > 0) { + // skip blanks + if (!(s = skipBlanks(s, &maxLen))) return 0; + if (!maxLen) break; + uchar qch, ch = *s++; maxLen--; + // fieldNameSeen<1: no field name was seen + // fieldNameSeen=1: waiting for ':' + // fieldNameSeen=2: field name was seen, ':' was seen too, waiting for value + // fieldNameSeen=3: everything was seen, waiting for terminator + //fprintf(stderr, " ch=[%c]; fns=%i\n", ch, fieldNameSeen); + if (ch == ':') { + if (fieldNameSeen != 1) return 0; // wtf? + fieldNameSeen++; + continue; + } + // it must be a token, skip it + again = false; + //fprintf(stderr, " s=%s\n==========\n", s); + switch (ch) { + case '{': case '[': + if (fieldNameSeen == 1) return 0; // waiting for delimiter; error + fieldNameSeen = 3; + // recursive skip + qch = (ch=='{' ? '}' : ']'); // end char + if (!(s = skipBlanks(s, &maxLen))) return 0; + if (maxLen < 1 || *s != qch) { + //fprintf(stderr, " [%c]\n", *s); + for (;;) { + if (!(s = skipRec(s, &maxLen))) return 0; + if (maxLen < 1) return 0; // no closing char + ch = *s++; maxLen--; + if (ch == ',') continue; // skip next field/value pair + if (ch == qch) break; // end of the list or object + return 0; // error! + } + } else { + //fprintf(stderr, "empty!\n"); + s++; maxLen--; // skip terminator + } + //fprintf(stderr, "[%s]\n", s); + break; + case ']': case '}': case ',': // terminator + //fprintf(stderr, " term [%c] (%i)\n", ch, fieldNameSeen); + if (fieldNameSeen != 3) return 0; // incomplete field + s--; maxLen++; // back to this char + break; + case '"': case '\x27': // string + if (fieldNameSeen == 1 || fieldNameSeen > 2) return 0; // no delimiter + //fprintf(stderr, "000\n"); + fieldNameSeen++; + qch = ch; + while (*s && maxLen > 0) { + ch = *s++; maxLen--; + if (ch == qch) { s--; maxLen++; break; } + if (ch != '\\') continue; + if (maxLen < 2) return 0; // char and quote + ch = *s++; maxLen--; + switch (ch) { + case 'u': + if (maxLen < 5) return 0; + if (s[0] == qch || s[0] == '\\' || s[1] == qch || s[1] == '\\') return 0; + s += 2; maxLen -= 2; + // fallthru + case 'x': + if (maxLen < 3) return 0; + if (s[0] == qch || s[0] == '\\' || s[1] == qch || s[1] == '\\') return 0; + s += 2; maxLen -= 2; + break; + case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': + if (maxLen < 4) return 0; + if (s[0] == qch || s[0] == '\\' || s[1] == qch || s[1] == '\\' || s[2] == qch || s[2] == '\\') return 0; + s += 3; maxLen -= 3; + break; + default: ; // escaped char already skiped + } + } + //fprintf(stderr, " str [%c]; ml=%i\n", *s, maxLen); + if (maxLen < 1 || *s != qch) return 0; // error + s++; maxLen--; // skip quote + //fprintf(stderr, " 001\n"); + again = true; + break; + default: // we can check for punctuation here, but i'm too lazy to do it + if (fieldNameSeen == 1 || fieldNameSeen > 2) return 0; // no delimiter + fieldNameSeen++; + if (isValidIdChar(ch) || ch == '-' || ch == '.' || ch == '+') { + // good token, skip it + again = true; // just a token, skip it and go on + // check for valid utf8? + while (*s && maxLen > 0) { + ch = *s++; maxLen--; + if (ch != '.' && ch != '-' && ch != '+' && !isValidIdChar(ch)) { + s--; maxLen++; + break; + } + } + } else return 0; // error + } + } + if (fieldNameSeen != 3) return 0; + // skip blanks + if (!(s = skipBlanks(s, &maxLen))) return 0; + // done + *maxLength = maxLen; + return s; +} + + +/* + * parse json-quoted string. a relaxed parser, it allows "'"-quoted strings, + * whereas json standard does not. also \x and \nnn are allowed. + * return position after the string or 0 + * 's' should point to the quote char on entry + */ +static const uchar *parseString (QString &str, const uchar *s, int *maxLength) { + if (!s) return 0; + int maxLen = *maxLength; + if (maxLen < 2) return 0; + uchar ch = 0, qch = *s++; maxLen--; + if (qch != '"' && qch != '\x27') return 0; + // calc string length and check string for correctness + int strLen = 0, tmpLen = maxLen; + const uchar *tmpS = s; + while (tmpLen > 0) { + ch = *tmpS++; tmpLen--; strLen++; + if (ch == qch) break; + if (ch != '\\') { + // ascii or utf-8 + quint8 t = utf8Length[ch]; + if (t&0x08) return 0; // invalid utf-8 sequence + if (t) { + // utf-8 + if (tmpLen < t) return 0; // invalid utf-8 sequence + while (--t) { + quint8 b = *tmpS++; tmpLen--; + if (utf8Length[b] != 9) return 0; // invalid utf-8 sequence + } + } + continue; + } + // escape sequence + ch = *tmpS++; tmpLen--; //!strLen++; + if (tmpLen < 2) return 0; + int hlen = 0; + switch (ch) { + case 'u': hlen = 4; + case 'x': + if (!hlen) hlen = 2; + if (tmpLen < hlen+1) return 0; + while (hlen-- > 0) { + ch = *tmpS++; tmpLen--; + if (ch >= 'a') ch -= 32; + if (!(ch >= '0' && ch <= '9') && !(ch >= 'A' && ch <= 'F')) return 0; + } + hlen = 0; + break; + case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': // octal char + if (tmpLen < 3) return 0; + for (hlen = 2; hlen > 0; hlen--) { + ch = *tmpS++; tmpLen--; + if (ch < '0' || ch > '7') return 0; + } + break; + case '"': case '\x27': ch = 0; break; + default: ; // one escaped char; will be checked later + } + } + if (ch != qch) return 0; // no terminating quote + // + str.reserve(str.length()+strLen+1); + ch = 0; + while (maxLen > 0) { + ch = *s++; maxLen--; + if (ch == qch) break; + if (ch != '\\') { + // ascii or utf-8 + quint8 t = utf8Length[ch]; + if (!t) str.append(ch); // ascii + else { + // utf-8 + int u = 0; s--; maxLen++; + while (t--) { + quint8 b = *s++; maxLen--; + u = (u<<6)+(b&0x3f); + } + if (u > 0x10ffff) u &= 0xffff; + if ((u >= 0xd800 && u <= 0xdfff) || // utf16/utf32 surrogates + (u >= 0xfdd0 && u <= 0xfdef) || // just for fun + (u >= 0xfffe && u <= 0xffff)) continue; // bad unicode, skip it + QChar zch(u); + str.append(zch); + } + continue; + } + ch = *s++; maxLen--; // at least one char left here + int uu = 0; int escCLen = 0; + switch (ch) { + case 'u': // unicode char, 4 hex digits + escCLen = 4; + // fallthru + case 'x': { // ascii char, 2 hex digits + if (!escCLen) escCLen = 2; + while (escCLen-- > 0) { + ch = *s++; maxLen--; + if (ch >= 'a') ch -= 32; + uu = uu*16+ch-'0'; + if (ch >= 'A'/* && ch <= 'F'*/) uu -= 7; + } + if (uu > 0x10ffff) uu &= 0xffff; + if ((uu >= 0xd800 && uu <= 0xdfff) || // utf16/utf32 surrogates + (uu >= 0xfdd0 && uu <= 0xfdef) || // just for fun + (uu >= 0xfffe && uu <= 0xffff)) uu = -1; // bad unicode, skip it + if (uu >= 0) { + QChar zch(uu); + str.append(zch); + } + } break; + case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': { // octal char + s--; maxLen++; + uu = 0; + for (int f = 3; f > 0; f--) { + ch = *s++; maxLen--; + uu = uu*8+ch-'0'; + } + QChar zch(uu); + str.append(zch); + } break; + case '\\': str.append('\\'); break; + case '/': str.append('/'); break; + case 'b': str.append('\b'); break; + case 'f': str.append('\f'); break; + case 'n': str.append('\n'); break; + case 'r': str.append('\r'); break; + case 't': str.append('\t'); break; + case '"': case '\x27': str.append(ch); break; + default: + // non-standard! + if (ch != '\t' && ch != '\r' && ch != '\n') return 0; // all other chars are BAD + str.append(ch); + } + } + if (ch != qch) return 0; + *maxLength = maxLen; + return s; +} + + +/* + * parse identifier + */ +static const uchar *parseId (QString &str, const uchar *s, int *maxLength) { + if (!s) return 0; + int maxLen = *maxLength; + if (maxLen < 1) return 0; + uchar ch = 0; + // calc string length and check string for correctness + int strLen = 0, tmpLen = maxLen; + const uchar *tmpS = s; + while (tmpLen > 0) { + ch = *tmpS++; + if (!isValidIdChar(ch)) { + if (!strLen) return 0; + break; + } + tmpLen--; strLen++; + // ascii or utf-8 + quint8 t = utf8Length[ch]; + if (t&0x08) return 0; // invalid utf-8 sequence + if (t) { + // utf-8 + if (tmpLen < t) return 0; // invalid utf-8 sequence + while (--t) { + quint8 b = *tmpS++; tmpLen--; + if (utf8Length[b] != 9) return 0; // invalid utf-8 sequence + } + } + continue; + } +/* + str = "true"; + while (isValidIdChar(*s)) { s++; (*maxLength)--; } + return s; +*/ + // + str.reserve(str.length()+strLen+1); + ch = 0; + while (maxLen > 0) { + ch = *s++; maxLen--; + if (!isValidIdChar(ch)) { s--; maxLen++; break; } + // ascii or utf-8 + quint8 t = utf8Length[ch]; + if (!t) str.append(ch); // ascii + else { + // utf-8 + int u = 0; s--; maxLen++; + while (t--) { + quint8 ch = *s++; maxLen--; + u = (u<<6)+(ch&0x3f); + } + if (u > 0x10ffff) u &= 0xffff; + if ((u >= 0xd800 && u <= 0xdfff) || // utf16/utf32 surrogates + (u >= 0xfdd0 && u <= 0xfdef) || // just for fun + (u >= 0xfffe && u <= 0xffff)) continue; // bad unicode, skip it + QChar zch(u); + str.append(zch); + } + continue; + } + *maxLength = maxLen; + return s; +} + + +/* + * parse number + */ +//TODO: parse 0x... +static const uchar *parseNumber (QVariant &num, const uchar *s, int *maxLength) { + if (!s) return 0; + int maxLen = *maxLength; + if (maxLen < 1) return 0; + uchar ch = *s++; maxLen--; + // check for negative number + bool negative = false, fr = false; + double fnum = 0.0; + switch (ch) { + case '-': + if (maxLen < 1) return 0; + ch = *s++; maxLen--; + negative = true; + break; + case '+': + if (maxLen < 1) return 0; + ch = *s++; maxLen--; + break; + default: ; + } + if (ch != '.' && (ch < '0' || ch > '9')) return 0; // invalid integer part, no fraction part + if (ch == '0' && *maxLength > 0 && *s == 'x') { + // hex number + s++; (*maxLength)--; // skip 'x' + bool wasDigit = false; + for (;;) { + if (*maxLength < 1) break; + uchar ch = *s++; (*maxLength)--; + //if (ch >= 'a' && ch <= 'f') ch -= 32; + if (ch >= '0' && ch <= '9') { + fnum *= 16; fnum += ch-'0'; + } else if (ch >= 'A' && ch <= 'F') { + fnum *= 16; fnum += ch-'A'+10; + } else if (ch >= 'a' && ch <= 'f') { + fnum *= 16; fnum += ch-'a'+10; + } else break; + wasDigit = true; + } + if (!wasDigit) return 0; + goto backanddone; + } + // parse integer part + while (ch >= '0' && ch <= '9') { + ch -= '0'; + fnum = fnum*10+ch; + if (!maxLen) goto done; + ch = *s++; maxLen--; + } + // check for fractional part + if (ch == '.') { + // parse fractional part + if (maxLen < 1) return 0; + ch = *s++; maxLen--; + double frac = 0.1; fr = true; + if (ch < '0' || ch > '9') return 0; // invalid fractional part + while (ch >= '0' && ch <= '9') { + ch -= '0'; + fnum += frac*ch; + if (!maxLen) goto done; + frac /= 10; + ch = *s++; maxLen--; + } + } + // check for exp part + if (ch == 'e' || ch == 'E') { + if (maxLen < 1) return 0; + // check for exp sign + bool expNeg = false; + ch = *s++; maxLen--; + if (ch == '+' || ch == '-') { + if (maxLen < 1) return 0; + expNeg = (ch == '-'); + ch = *s++; maxLen--; + } + // check for exp digits + if (ch < '0' || ch > '9') return 0; // invalid exp + quint32 exp = 0; // 64? %-) + while (ch >= '0' && ch <= '9') { + exp = exp*10+ch-'0'; + if (!maxLen) { s++; maxLen--; break; } + ch = *s++; maxLen--; + } + while (exp--) { + if (expNeg) fnum /= 10; else fnum *= 10; + } + if (expNeg && !fr) { + if (fnum > 2147483647.0 || ((qint64)fnum)*1.0 != fnum) fr = true; + } + } +backanddone: + s--; maxLen++; +done: + if (!fr && fnum > 2147483647.0) fr = true; + if (negative) fnum = -fnum; + if (fr) num = fnum; else num = (qint32)fnum; + *maxLength = maxLen; + return s; +} + + +static const QString sTrue("true"); +static const QString sFalse("false"); +static const QString sNull("null"); + + +/* + * parse field value + * return ptr to the first non-blank char after the value (or 0) + * 'maxLen' will be changed + */ +const uchar *parseValue (QVariant &fvalue, const uchar *s, int *maxLength) { + fvalue.clear(); + if (!(s = skipBlanks(s, maxLength))) return 0; + if (*maxLength < 1) return 0; + switch (*s) { + case '-': case '+': case '.': // '+' and '.' are not in specs! + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + // number + if (!(s = parseNumber(fvalue, s, maxLength))) return 0; + break; + case 't': // true? + if (*maxLength < 4) return 0; + if (s[1] != 'r' || s[2] != 'u' || s[3] != 'e') return 0; + if (*maxLength > 4 && isValidIdChar(s[4])) return 0; + s += 4; (*maxLength) -= 4; + fvalue = true; + break; + case 'f': // false? + if (*maxLength < 5) return 0; + if (s[1] != 'a' || s[2] != 'l' || s[3] != 's' || s[4] != 'e') return 0; + if (*maxLength > 5 && isValidIdChar(s[5])) return 0; + s += 5; (*maxLength) -= 5; + fvalue = false; + break; + case 'n': // null? + if (*maxLength < 4) return 0; + if (s[1] != 'u' || s[2] != 'l' || s[3] != 'l') return 0; + if (*maxLength > 4 && isValidIdChar(s[4])) return 0; + s += 4; (*maxLength) -= 4; + // fvalue is null already + break; + case '"': case '\x27': { + // string + QString tmp; + if (!(s = parseString(tmp, s, maxLength))) return 0; + fvalue = tmp; + } + break; + case '{': case '[': + // object or list + if (!(s = parseRecord(fvalue, s, maxLength))) return 0; + break; + default: // unknown + return 0; + } + if (!(s = skipBlanks(s, maxLength))) return 0; + return s; +} + + +/* + * parse one field (f-v pair) + * return ptr to the first non-blank char after the record (or 0) + * 'maxLen' will be changed + */ +const uchar *parseField (QString &fname, QVariant &fvalue, const uchar *s, int *maxLength) { + if (!s) return 0; + //int maxLen = *maxLength; + fname.clear(); + fvalue.clear(); + if (!(s = skipBlanks(s, maxLength))) return 0; + if (*maxLength < 1) return 0; + uchar ch = *s; + // field name + if (isValidIdChar(ch)) { + // id + if (!(s = parseId(fname, s, maxLength))) return 0; + } else if (ch == '"' || ch == '\x27') { + // string + if (!(s = parseString(fname, s, maxLength))) return 0; + } + // ':' + if (!(s = skipBlanks(s, maxLength))) return 0; + if (*maxLength < 2 || *s != ':') return 0; + s++; (*maxLength)--; + // field value + return parseValue(fvalue, s, maxLength); +} + + +/* + * parse one record (list or object) + * return ptr to the first non-blank char after the record (or 0) + * 'maxLen' will be changed + */ +const uchar *parseRecord (QVariant &res, const uchar *s, int *maxLength) { + if (!s) return 0; + //int maxLen = *maxLength; + res.clear(); + if (!(s = skipBlanks(s, maxLength))) return 0; + if (*maxLength < 1) return 0; + // field name or list/object start + QString str; QVariant val; + uchar ch = *s; + bool isList = false; + switch (ch) { + case '[': isList = true; // list, fallthru + case '{': { // object + if (*maxLength < 2) return 0; + uchar ech = isList ? ']' : '}'; + s++; (*maxLength)--; + if (!(s = skipBlanks(s, maxLength))) return 0; + QVariantMap obj; QVariantList lst; + if (*maxLength < 1 || *s != ech) { + for (;;) { + if (isList) { + // list, only values + if (!(s = parseValue(val, s, maxLength))) return 0; + lst << val; + } else { + // object, full fields + if (!(s = parseField(str, val, s, maxLength))) return 0; + obj[str] = val; + } + if (*maxLength > 0) { + bool wasComma = false; + // skip commas + while (true) { + if (!(s = skipBlanks(s, maxLength))) return 0; + if (*maxLength < 1) { ch = '\0'; wasComma = false; break; } + ch = *s; + if (ch == ech) { s++; (*maxLength)--; break; } + if (ch != ',') break; + s++; (*maxLength)--; + wasComma = true; + } + if (ch == ech) break; // end of the object/list + if (wasComma) continue; + // else error + } + // error + s = 0; + break; + } + } else { + s++; (*maxLength)--; + } + if (isList) res = lst; else res = obj; + return s; + } // it will never comes here + default: ; + } + if (!(s = parseField(str, val, s, maxLength))) return 0; + QVariantMap obj; + obj[str] = val; + res = obj; + return s; +} + + +#ifdef K8JSON_INCLUDE_GENERATOR +# ifndef K8JSON_INCLUDE_COMPLEX_GENERATOR +# define _K8_JSON_COMPLEX_WORD static +# else +# define _K8_JSON_COMPLEX_WORD +# endif +#else +# ifdef K8JSON_INCLUDE_COMPLEX_GENERATOR +# define _K8_JSON_COMPLEX_WORD +# endif +#endif + +#if defined(K8JSON_INCLUDE_COMPLEX_GENERATOR) || defined(K8JSON_INCLUDE_GENERATOR) +# ifndef K8JSON_INCLUDE_COMPLEX_GENERATOR +typedef bool (*generatorCB) (void *udata, QString &err, QByteArray &res, const QVariant &val, int indent); +# endif + +_K8_JSON_COMPLEX_WORD bool generateExCB (void *udata, generatorCB cb, QString &err, QByteArray &res, const QVariant &val, int indent) { + switch (val.type()) { + case QVariant::Invalid: res += "null"; break; + case QVariant::Bool: res += (val.toBool() ? "true" : "false"); break; + case QVariant::Char: res += quote(QString(val.toChar())).toUtf8(); break; + case QVariant::Double: res += QString::number(val.toDouble()).toLatin1(); break; //CHECKME: is '.' always '.'? + case QVariant::Int: res += QString::number(val.toInt()).toLatin1(); break; + case QVariant::LongLong: res += QString::number(val.toLongLong()).toLatin1(); break; + case QVariant::UInt: res += QString::number(val.toUInt()).toLatin1(); break; + case QVariant::ULongLong: res += QString::number(val.toULongLong()).toLatin1(); break; + case QVariant::String: res += quote(val.toString()).toUtf8(); break; + case QVariant::Map: { + //for (int c = indent; c > 0; c--) res += ' '; + res += "{"; + indent++; bool comma = false; + QVariantMap m(val.toMap()); + QVariantMap::const_iterator i; + for (i = m.constBegin(); i != m.constEnd(); ++i) { + if (comma) res += ",\n"; else { res += '\n'; comma = true; } + for (int c = indent; c > 0; c--) res += ' '; + res += quote(i.key()).toUtf8(); + res += ": "; + if (!generateExCB(udata, cb, err, res, i.value(), indent)) return false; + } + indent--; + if (comma) { + res += '\n'; + for (int c = indent; c > 0; c--) res += ' '; + } + res += '}'; + indent--; + } break; + case QVariant::Hash: { + //for (int c = indent; c > 0; c--) res += ' '; + res += "{"; + indent++; bool comma = false; + QVariantHash m(val.toHash()); + QVariantHash::const_iterator i; + for (i = m.constBegin(); i != m.constEnd(); ++i) { + if (comma) res += ",\n"; else { res += '\n'; comma = true; } + for (int c = indent; c > 0; c--) res += ' '; + res += quote(i.key()).toUtf8(); + res += ": "; + if (!generateExCB(udata, cb, err, res, i.value(), indent)) return false; + } + indent--; + if (comma) { + res += '\n'; + for (int c = indent; c > 0; c--) res += ' '; + } + res += '}'; + indent--; + } break; + case QVariant::List: { + //for (int c = indent; c > 0; c--) res += ' '; + res += "["; + indent++; bool comma = false; + QVariantList m(val.toList()); + foreach (const QVariant &v, m) { + if (comma) res += ",\n"; else { res += '\n'; comma = true; } + for (int c = indent; c > 0; c--) res += ' '; + if (!generateExCB(udata, cb, err, res, v, indent)) return false; + } + indent--; + if (comma) { + res += '\n'; + for (int c = indent; c > 0; c--) res += ' '; + } + res += ']'; + indent--; + } break; + case QVariant::StringList: { + //for (int c = indent; c > 0; c--) res += ' '; + res += "["; + indent++; bool comma = false; + QStringList m(val.toStringList()); + foreach (const QString &v, m) { + if (comma) res += ",\n"; else { res += '\n'; comma = true; } + for (int c = indent; c > 0; c--) res += ' '; + res += quote(v).toUtf8(); + } + indent--; + if (comma) { + res += '\n'; + for (int c = indent; c > 0; c--) res += ' '; + } + res += ']'; + indent--; + } break; + default: + if (cb) return cb(udata, err, res, val, indent); + err = QString("invalid variant type: %1").arg(val.typeName()); + return false; + } + return true; +} + + +_K8_JSON_COMPLEX_WORD bool generateCB (void *udata, generatorCB cb, QByteArray &res, const QVariant &val, int indent) { + QString err; + return generateExCB(udata, cb, err, res, val, indent); +} +#endif + + +#ifdef K8JSON_INCLUDE_GENERATOR +bool generateEx (QString &err, QByteArray &res, const QVariant &val, int indent) { + return generateExCB(0, 0, err, res, val, indent); +} + + +bool generate (QByteArray &res, const QVariant &val, int indent) { + QString err; + return generateExCB(0, 0, err, res, val, indent); +} +#endif + + +} diff --git a/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.h b/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.h new file mode 100644 index 000000000..2b8a724e4 --- /dev/null +++ b/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.h @@ -0,0 +1,130 @@ +/* coded by Ketmar // Vampire Avalon (psyc://ketmar.no-ip.org/~Ketmar) + * Understanding is not required. Only obedience. + * + * This program is free software. It comes without any warranty, to + * the extent permitted by applicable law. You can redistribute it + * and/or modify it under the terms of the Do What The Fuck You Want + * To Public License, Version 2, as published by Sam Hocevar. See + * http://sam.zoy.org/wtfpl/COPYING for more details. + */ +#ifndef K8JSON_H +#define K8JSON_H + +//#define K8JSON_INCLUDE_GENERATOR +//#define K8JSON_INCLUDE_COMPLEX_GENERATOR + + +#include +#include +#include +#include +#include + +#if defined(K8JSON_INCLUDE_COMPLEX_GENERATOR) || defined(K8JSON_INCLUDE_GENERATOR) +# include +#endif + +#if defined(K8JSON_LIB_MAKEDLL) +# define K8JSON_EXPORT Q_DECL_EXPORT +#elif defined(K8JSON_LIB_DLL) +# define K8JSON_EXPORT Q_DECL_IMPORT +#else +# define K8JSON_EXPORT +#endif + + +namespace K8JSON { + +/* + * quote string to JSON-friendly format, add '"' + */ +K8JSON_EXPORT QString quote (const QString &str); + +/* + * check if given (const uchar *) represents valid UTF-8 sequence + * NULL (or empty) s is not valid + * sequence ends on '\0' if zeroInvalid==false + */ +K8JSON_EXPORT bool isValidUtf8 (const uchar *s, int maxLen, bool zeroInvalid=false); + + +/* + * skip blanks and comments + * return ptr to first non-blank char or 0 on error + * 'maxLen' will be changed + */ +K8JSON_EXPORT const uchar *skipBlanks (const uchar *s, int *maxLength); + +/* + * skip one record + * the 'record' is either one full field ( field: val) + * or one list/object. + * return ptr to the first non-blank char after the record (or 0) + * 'maxLen' will be changed + */ +K8JSON_EXPORT const uchar *skipRec (const uchar *s, int *maxLength); + +/* + * parse field value + * return ptr to the first non-blank char after the value (or 0) + * 'maxLen' will be changed + */ +K8JSON_EXPORT const uchar *parseValue (QVariant &fvalue, const uchar *s, int *maxLength); + + +/* + * parse one field (f-v pair) + * return ptr to the first non-blank char after the record (or 0) + * 'maxLen' will be changed + */ +K8JSON_EXPORT const uchar *parseField (QString &fname, QVariant &fvalue, const uchar *s, int *maxLength); + +/* + * parse one record (list or object) + * return ptr to the first non-blank char after the record (or 0) + * 'maxLen' will be changed + */ +K8JSON_EXPORT const uchar *parseRecord (QVariant &res, const uchar *s, int *maxLength); + + +#ifdef K8JSON_INCLUDE_GENERATOR +/* + * generate JSON text from variant + * 'err' must be empty (generateEx() will not clear it) + * return false on error + */ +K8JSON_EXPORT bool generateEx (QString &err, QByteArray &res, const QVariant &val, int indent=0); + +/* + * same as above, but without error message + */ +K8JSON_EXPORT bool generate (QByteArray &res, const QVariant &val, int indent=0); +#endif + + +#ifdef K8JSON_INCLUDE_COMPLEX_GENERATOR +/* + * callback for unknown variant type + * return false and set 'err' on error + * or return true and *add* converted value (valid sequence of utf-8 bytes) to res + */ +typedef bool (*generatorCB) (void *udata, QString &err, QByteArray &res, const QVariant &val, int indent); + +/* + * generate JSON text from variant + * 'err' must be empty (generateEx() will not clear it) + * return false on error + */ +K8JSON_EXPORT bool generateExCB (void *udata, generatorCB cb, QString &err, QByteArray &res, const QVariant &val, int indent=0); + +/* + * same as above, but without error message + */ +K8JSON_EXPORT bool generateCB (void *udata, generatorCB cb, QByteArray &res, const QVariant &val, int indent=0); +#endif + + +} + + +#endif diff --git a/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.pc.cmake b/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.pc.cmake new file mode 100644 index 000000000..6c51050c7 --- /dev/null +++ b/3rdparty/vreen/vreen/src/3rdparty/k8json/k8json.pc.cmake @@ -0,0 +1,12 @@ +prefix=${CMAKE_INSTALL_PREFIX} +exec_prefix=${CMAKE_INSTALL_PREFIX}/bin +libdir=${LIB_DESTINATION} +includedir=${CMAKE_INSTALL_PREFIX}/include + +Name: k8json +Description: Small and fast Qt JSON parser +Requires: QtCore +Version: ${CMAKE_LIBK8JSON_VERSION_MAJOR}.${CMAKE_LIBK8JSON_VERSION_MINOR}.${CMAKE_LIBK8JSON_VERSION_PATCH} +Libs: -L${LIB_DESTINATION} -lk8json +Cflags: -I${CMAKE_INSTALL_PREFIX}/include + diff --git a/3rdparty/vreen/vreen/src/CMakeLists.txt b/3rdparty/vreen/vreen/src/CMakeLists.txt new file mode 100644 index 000000000..d7845a034 --- /dev/null +++ b/3rdparty/vreen/vreen/src/CMakeLists.txt @@ -0,0 +1,9 @@ +if(NOT VREEN_INSTALL_HEADERS) + set(INTERNAL_FLAG "INTERNAL") +endif() +if(VREEN_DEVELOPER_BUILD) + set(DEVELOPER_FLAG "DEVELOPER") +endif() + +add_subdirectory(3rdparty) +add_subdirectory(api) diff --git a/3rdparty/vreen/vreen/src/api/CMakeLists.txt b/3rdparty/vreen/vreen/src/api/CMakeLists.txt new file mode 100644 index 000000000..d9a7b1de2 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/CMakeLists.txt @@ -0,0 +1,14 @@ +add_simple_library(vreen + STATIC CXX11 + ${INTERNAL_FLAG} + ${DEVELOPER_FLAG} + DEFINE_SYMBOL VK_LIBRARY + DEFINES "K8JSON_INCLUDE_GENERATOR;K8JSON_INCLUDE_COMPLEX_GENERATOR" + VERSION ${CMAKE_VREEN_VERSION_STRING} + SOVERSION ${CMAKE_VREEN_VERSION_MAJOR} + LIBRARIES ${K8JSON_LIBRARIES} + INCLUDES ${K8JSON_INCLUDE_DIRS} + INCLUDE_DIR vreen + PKGCONFIG_TEMPLATE vreen.pc.cmake + QT Core Network Gui +) diff --git a/3rdparty/vreen/vreen/src/api/abstractlistmodel.cpp b/3rdparty/vreen/vreen/src/api/abstractlistmodel.cpp new file mode 100644 index 000000000..f6890a3af --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/abstractlistmodel.cpp @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "abstractlistmodel.h" +#include + +namespace Vreen { + +AbstractListModel::AbstractListModel(QObject *parent) : + QAbstractListModel(parent) +{ +} + +QVariantMap AbstractListModel::get(int row) +{ + auto roles = roleNames(); + QVariantMap map; + auto index = createIndex(row, 0); + for (auto it = roles.constBegin(); it != roles.constEnd(); it++) { + auto value = data(index, it.key()); + map.insert(it.value(), value); + } + return map; +} + +QVariant AbstractListModel::get(int row, const QByteArray &field) +{ + auto index = createIndex(row, 0); + return data(index, roleNames().key(field)); +} + +} //namespace Vreen + diff --git a/3rdparty/vreen/vreen/src/api/abstractlistmodel.h b/3rdparty/vreen/vreen/src/api/abstractlistmodel.h new file mode 100644 index 000000000..90d8ce3c6 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/abstractlistmodel.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef ABSTRACTLISTMODEL_H +#define ABSTRACTLISTMODEL_H + +#include +#include "vk_global.h" + +namespace Vreen { + +class VK_SHARED_EXPORT AbstractListModel : public QAbstractListModel +{ + Q_OBJECT +public: + explicit AbstractListModel(QObject *parent = 0); + Q_INVOKABLE QVariantMap get(int row); + Q_INVOKABLE QVariant get(int row, const QByteArray &field); +}; + +} //namespace Vreen + +#endif // ABSTRACTLISTMODEL_H + diff --git a/3rdparty/vreen/vreen/src/api/attachment.cpp b/3rdparty/vreen/vreen/src/api/attachment.cpp new file mode 100644 index 000000000..06c2e793d --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/attachment.cpp @@ -0,0 +1,234 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "attachment.h" +#include +#include + +namespace Vreen { + +QDataStream &operator <<(QDataStream &out, const Vreen::Attachment &item) +{ + return out << item.data(); +} + +QDataStream &operator >>(QDataStream &out, Vreen::Attachment &item) +{ + QVariantMap data; + out >> data; + item.setData(data); + return out; +} + +const static QStringList types = QStringList() + << "photo" + << "posted_photo" + << "video" + << "audio" + << "doc" + << "graffiti" + << "link" + << "note" + << "app" + << "poll" + << "page"; + +class AttachmentData : public QSharedData { +public: + AttachmentData() : QSharedData(), + type(Attachment::Other), + ownerId(0), + mediaId(0) {} + AttachmentData(const AttachmentData &o) : QSharedData(o), + type(o.type), + ownerId(o.ownerId), + mediaId(o.mediaId), + data(o.data) {} + Attachment::Type type; + int ownerId; + int mediaId; + QVariantMap data; + + static Attachment::Type getType(const QString &type) + { + return static_cast(types.indexOf(type)); + } +}; + +/*! + * \brief The Attachment class + * Api reference: \link http://vk.com/developers.php?oid=-1&p=Описание_поля_attachments + */ + +/*! + * \brief Attachment::Attachment + */ +Attachment::Attachment() : d(new AttachmentData) +{ +} + +Attachment::Attachment(const QVariantMap &data) : d(new AttachmentData) +{ + setData(data); +} + +Attachment::Attachment(const QString &string) : d(new AttachmentData) +{ + QRegExp regex("(\\w+)(\\d+)_(\\d+)"); + regex.indexIn(string); + //convert type to enum + d->data.insert("type", d->type = AttachmentData::getType(regex.cap(1))); + d->ownerId = regex.cap(2).toInt(); + d->mediaId = regex.cap(3).toInt(); +} + +Attachment::Attachment(const Attachment &rhs) : d(rhs.d) +{ +} + +Attachment &Attachment::operator=(const Attachment &rhs) +{ + if (this != &rhs) + d.operator=(rhs.d); + return *this; +} + +Attachment::~Attachment() +{ +} + +void Attachment::setData(const QVariantMap &data) +{ + d->data.clear(); + QString type = data.value("type").toString(); + + //move properties to top level + auto map = data.value(type).toMap(); + for (auto it = map.constBegin(); it != map.constEnd(); it++) + d->data.insert(it.key(), it.value()); + //convert type to enum + d->data.insert("type", d->type = AttachmentData::getType(type)); +} + +QVariantMap Attachment::data() const +{ + return d->data; +} + +Attachment::Type Attachment::type() const +{ + return d->type; +} + +void Attachment::setType(Attachment::Type type) +{ + d->type = type; +} + +void Attachment::setType(const QString &type) +{ + d->type = d->getType(type); +} + +int Attachment::ownerId() const +{ + return d->ownerId; +} + +void Attachment::setOwnerId(int ownerId) +{ + d->ownerId = ownerId; +} + +int Attachment::mediaId() const +{ + return d->mediaId; +} + +void Attachment::setMediaId(int id) +{ + d->mediaId = id; +} + +Attachment Attachment::fromData(const QVariant &data) +{ + return Attachment(data.toMap()); +} + +Attachment::List Attachment::fromVariantList(const QVariantList &list) +{ + Attachment::List attachments; + foreach (auto item, list) + attachments.append(Attachment::fromData(item.toMap())); + return attachments; +} + +QVariantList Attachment::toVariantList(const Attachment::List &list) +{ + QVariantList variantList; + foreach (auto item, list) + variantList.append(item.data()); + return variantList; +} + +Attachment::Hash Attachment::toHash(const Attachment::List &list) +{ + Hash hash; + foreach (auto attachment, list) + hash.insert(attachment.type(), attachment); + return hash; +} + +QVariantMap Attachment::toVariantMap(const Attachment::Hash &hash) +{ + //FIXME i want to Qt5 + QVariantMap map; + foreach (auto key, hash.keys()) + map.insert(QString::number(key), toVariantList(hash.values(key))); + return map; +} + +QVariant Attachment::property(const QString &name, const QVariant &def) const +{ + return d->data.value(name, def); +} + +QStringList Attachment::dynamicPropertyNames() const +{ + return d->data.keys(); +} + +void Attachment::setProperty(const QString &name, const QVariant &value) +{ + d->data.insert(name, value); +} + +bool Attachment::isFetched() const +{ + return !d->data.isEmpty(); +} + +} // namespace Vreen + +#include "moc_attachment.cpp" diff --git a/3rdparty/vreen/vreen/src/api/attachment.h b/3rdparty/vreen/vreen/src/api/attachment.h new file mode 100644 index 000000000..7e84927dd --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/attachment.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_ATTACHMENT_H +#define VK_ATTACHMENT_H + +#include +#include +#include "vk_global.h" + +namespace Vreen { + +class AttachmentData; + +class VK_SHARED_EXPORT Attachment +{ + Q_GADGET + Q_ENUMS(Type) +public: + enum Type { + Photo, + PostedPhoto, + Video, + Audio, + Document, + Graffiti, + Link, + Note, + ApplicationImage, + Poll, + Page, + Other = -1 + }; + typedef QList List; + typedef QMultiHash Hash; + + Attachment(); + Attachment(const Attachment &); + Attachment &operator=(const Attachment &); + ~Attachment(); + + void setData(const QVariantMap &data); + QVariantMap data() const; + Type type() const; + void setType(Type); + void setType(const QString &type); + int ownerId() const; + void setOwnerId(int ownerId); + int mediaId() const; + void setMediaId(int mediaId); + bool isFetched() const; + + static Attachment fromData(const QVariant &data); + static List fromVariantList(const QVariantList &list); + static QVariantList toVariantList(const List &list); + static Hash toHash(const List &list); + static QVariantMap toVariantMap(const Hash &hash); + + QVariant property(const QString &name, const QVariant &def = QVariant()) const; + template + T property(const char *name, const T &def) const + { return QVariant::fromValue(property(name, QVariant::fromValue(def))); } + void setProperty(const QString &name, const QVariant &value); + QStringList dynamicPropertyNames() const; + template + static T to(const Attachment &attachment); + template + static Attachment from(const T &item); + + friend QDataStream &operator <<(QDataStream &out, const Vreen::Attachment &item); + friend QDataStream &operator >>(QDataStream &out, Vreen::Attachment &item); +protected: + Attachment(const QVariantMap &data); + Attachment(const QString &string); +private: + QSharedDataPointer d; +}; + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::Attachment) +Q_DECLARE_METATYPE(Vreen::Attachment::List) +Q_DECLARE_METATYPE(Vreen::Attachment::Hash) +Q_DECLARE_METATYPE(Vreen::Attachment::Type) + + +#endif // VK_ATTACHMENT_H + diff --git a/3rdparty/vreen/vreen/src/api/audio.cpp b/3rdparty/vreen/vreen/src/api/audio.cpp new file mode 100644 index 000000000..fb73323c7 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/audio.cpp @@ -0,0 +1,405 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "audio.h" +#include "client.h" +#include "reply_p.h" +#include "utils_p.h" +#include +#include +#include +#include + +namespace Vreen { + +class AudioProvider; +class AudioProviderPrivate +{ + Q_DECLARE_PUBLIC(AudioProvider) +public: + AudioProviderPrivate(AudioProvider *q, Client *client) : q_ptr(q), client(client) {} + AudioProvider *q_ptr; + Client *client; + + static QVariant handleAudio(const QVariant &response) { + AudioItemList items; + auto list = response.toList(); + if (list.count() && list.first().canConvert()) + list.removeFirst(); //HACK For stupid API((( + + foreach (auto item, list) { + auto map = item.toMap(); + AudioItem audio; + audio.setId(map.value("aid").toInt()); + audio.setOwnerId(map.value("owner_id").toInt()); + audio.setArtist(fromHtmlEntities(map.value("artist").toString())); + audio.setTitle(fromHtmlEntities(map.value("title").toString())); + audio.setDuration(map.value("duration").toReal()); + audio.setAlbumId(map.value("album").toInt()); + audio.setLyricsId(map.value("lyrics_id").toInt()); + audio.setUrl(map.value("url").toUrl()); + items.append(audio); + } + return QVariant::fromValue(items); + } + + static QVariant handleAudioAlbum(const QVariant &response) { + AudioAlbumItemList items; + auto list = response.toList(); + + if (list.count() && list.first().canConvert()) + list.removeFirst(); + + foreach (auto item, list) { + auto map = item.toMap(); + AudioAlbumItem audio; + audio.setId(map.value("album_id").toInt()); + audio.setOwnerId(map.value("owner_id").toInt()); + audio.setTitle(fromHtmlEntities(map.value("title").toString())); + items.append(audio); + } + return QVariant::fromValue(items); + } +}; + +AudioProvider::AudioProvider(Client *client) : + d_ptr(new AudioProviderPrivate(this, client)) +{ + +} + +AudioProvider::~AudioProvider() +{ + +} + +/*! + * \brief AudioProvider::get \link http://vk.com/developers.php?oid=-1&p=audio.get + * \param uid + * \param count + * \param offset + * \return reply + */ +AudioItemListReply *AudioProvider::getContactAudio(int uid, int count, int offset, int album_id) +{ + Q_D(AudioProvider); + QVariantMap args; + if (uid) + args.insert(uid > 0 ? "uid" : "gid", qAbs(uid)); + if (album_id > 0) + args.insert("album_id", album_id); + args.insert("count", count); + args.insert("offset", offset); + + auto reply = d->client->request("audio.get", args, AudioProviderPrivate::handleAudio); + return reply; +} + +/*! + * \brief AudioProvider::searchAudio \link http://vk.com/developers.php?oid=-1&p=audio.search + * + * \param query + * \param autocomplete + * \param lyrics + * \param count + * \param offset + * \return reply + **/ +AudioItemListReply *AudioProvider::searchAudio(const QString& query, int count, int offset, bool autoComplete, Vreen::AudioProvider::SortOrder sort, bool withLyrics) +{ + Q_D(AudioProvider); + QVariantMap args; + args.insert("q", query); + args.insert("auto_complete", autoComplete); + args.insert("sort", static_cast(sort)); + args.insert("lyrics", withLyrics); + args.insert("count", count); + args.insert("offset", offset); + + auto reply = d->client->request("audio.search", args, AudioProviderPrivate::handleAudio); + return reply; +} + +AudioAlbumItemListReply *AudioProvider::getAlbums(int ownerId, int count, int offset) +{ + Q_D(AudioProvider); + QVariantMap args; + args.insert("owner_id", ownerId); + args.insert("count", count); + args.insert("offset", offset); + + auto reply = d->client->request("audio.getAlbums", args, AudioProviderPrivate::handleAudioAlbum); + return reply; +} + +AudioItemListReply *AudioProvider::getRecommendationsForUser(int uid, int count, int offset) +{ + Q_D(AudioProvider); + QVariantMap args; + if (uid < 0) { + qDebug("Vreen::AudioProvider::getRecomendationForUser may not work with groups (uid < 0)"); + + } + args.insert("uid",uid); + args.insert("count", count); + args.insert("offset", offset); + + auto reply = d->client->request("audio.getRecommendations", args, AudioProviderPrivate::handleAudio); + return reply; +} + +IntReply *AudioProvider::getCount(int oid) +{ + Q_D(AudioProvider); + + oid = oid?oid:d->client->id(); + + QVariantMap args; + args.insert("oid", oid); + + auto reply = d->client->request("audio.getCount", args, ReplyPrivate::handleInt); + return reply; +} + +IntReply *AudioProvider::addToLibrary(int aid, int oid, int gid) +{ + Q_D(AudioProvider); + + QVariantMap args; + args.insert("aid", aid); + args.insert("oid", oid); + + if (gid) { + args.insert("gid",gid); + } + + auto reply = d->client->request("audio.add", args, ReplyPrivate::handleInt); + return reply; +} + +IntReply *AudioProvider::removeFromLibrary(int aid, int oid) +{ + Q_D(AudioProvider); + + QVariantMap args; + args.insert("aid", aid); + args.insert("oid", oid); + + auto reply = d->client->request("audio.delete", args, ReplyPrivate::handleInt); + return reply; +} + +AudioItemListReply *AudioProvider::getAudiosByIds(const QString &ids) +{ + Q_D(AudioProvider); + + QVariantMap args; + args.insert("audios", ids); + + auto reply = d->client->request("audio.getById", args, AudioProviderPrivate::handleAudio); + return reply; +} + +class AudioModel; +class AudioModelPrivate +{ + Q_DECLARE_PUBLIC(AudioModel) +public: + AudioModelPrivate(AudioModel *q) : q_ptr(q) {} + AudioModel *q_ptr; + AudioItemList itemList; + + IdComparator audioItemComparator; +}; + +AudioModel::AudioModel(QObject *parent) : AbstractListModel(parent), + d_ptr(new AudioModelPrivate(this)) +{ + auto roles = roleNames(); + roles[IdRole] = "aid"; + roles[TitleRole] = "title"; + roles[ArtistRole] = "artist"; + roles[UrlRole] = "url"; + roles[DurationRole] = "duration"; + roles[AlbumIdRole] = "albumId"; + roles[LyricsIdRole] = "lyricsId"; + roles[OwnerIdRole] = "ownerId"; + setRoleNames(roles); +} + +AudioModel::~AudioModel() +{ +} + +int AudioModel::count() const +{ + return d_func()->itemList.count(); +} + +void AudioModel::insertAudio(int index, const AudioItem &item) +{ + beginInsertRows(QModelIndex(), index, index); + d_func()->itemList.insert(index, item); + endInsertRows(); +} + +void AudioModel::replaceAudio(int i, const AudioItem &item) +{ + auto index = createIndex(i, 0); + d_func()->itemList[i] = item; + emit dataChanged(index, index); +} + +void AudioModel::setAudio(const AudioItemList &items) +{ + Q_D(AudioModel); + clear(); + beginInsertRows(QModelIndex(), 0, items.count()); + d->itemList = items; + qSort(d->itemList.begin(), d->itemList.end(), d->audioItemComparator); + endInsertRows(); +} + +void AudioModel::sort(int, Qt::SortOrder order) +{ + Q_D(AudioModel); + d->audioItemComparator.sortOrder = order; + setAudio(d->itemList); +} + +void AudioModel::removeAudio(int aid) +{ + Q_D(AudioModel); + int index = findAudio(aid); + if (index == -1) + return; + beginRemoveRows(QModelIndex(), index, index); + d->itemList.removeAt(index); + endRemoveRows(); +} + +void AudioModel::addAudio(const AudioItem &item) +{ + Q_D(AudioModel); + if (findAudio(item.id()) != -1) + return; + + int index = d->itemList.count(); + beginInsertRows(QModelIndex(), index, index); + d->itemList.append(item); + endInsertRows(); + + //int index = 0; + //if (d->sortOrder == Qt::AscendingOrder) + // index = d->itemList.count(); + //insertAudio(index, item); +} + +void AudioModel::clear() +{ + Q_D(AudioModel); + beginRemoveRows(QModelIndex(), 0, d->itemList.count()); + d->itemList.clear(); + endRemoveRows(); +} + +void AudioModel::truncate(int count) +{ + Q_D(AudioModel); + if (count > 0 && count > d->itemList.count()) { + qWarning("Unable to truncate"); + return; + } + beginRemoveRows(QModelIndex(), 0, count); + d->itemList.erase(d->itemList.begin() + count, d->itemList.end()); + endRemoveRows(); +} + +int AudioModel::rowCount(const QModelIndex &) const +{ + return count(); +} + +void AudioModel::setSortOrder(Qt::SortOrder order) +{ + Q_D(AudioModel); + if (order != d->audioItemComparator.sortOrder) { + d->audioItemComparator.sortOrder = order; + emit sortOrderChanged(order); + sort(0, order); + } +} + +Qt::SortOrder AudioModel::sortOrder() const +{ + Q_D(const AudioModel); + return d->audioItemComparator.sortOrder; +} + +QVariant AudioModel::data(const QModelIndex &index, int role) const +{ + Q_D(const AudioModel); + int row = index.row(); + auto item = d->itemList.at(row); + switch (role) { + case IdRole: + return item.id(); + break; + case TitleRole: + return item.title(); + case ArtistRole: + return item.artist(); + case UrlRole: + return item.url(); + case DurationRole: + return item.duration(); + case AlbumIdRole: + return item.albumId(); + case LyricsIdRole: + return item.lyricsId(); + case OwnerIdRole: + return item.ownerId(); + default: + break; + } + return QVariant::Invalid; +} + +int AudioModel::findAudio(int id) const +{ + Q_D(const AudioModel); + //auto it = qBinaryFind(d->itemList.begin(), d->itemList.end(), id, d->audioItemComparator); + //auto index = it - d->itemList.begin(); + //return index; + + for (int i = 0; i != d->itemList.count(); i++) + if (d->itemList.at(i).id() == id) + return id; + return -1; +} + +} // namespace Vreen + +#include "moc_audio.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/audio.h b/3rdparty/vreen/vreen/src/api/audio.h new file mode 100644 index 000000000..204e2fe43 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/audio.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_AUDIO_H +#define VK_AUDIO_H + +#include +#include "audioitem.h" +#include "abstractlistmodel.h" +#include "reply.h" + +namespace Vreen { + +class Client; +typedef ReplyBase AudioItemListReply; +typedef ReplyBase AudioAlbumItemListReply; + +class AudioProviderPrivate; +class VK_SHARED_EXPORT AudioProvider : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(AudioProvider) + Q_ENUMS(SortOrder) +public: + + enum SortOrder { + SortByDate = 0, + SortByDuration, + SortByPopularity + }; + + AudioProvider(Client *client); + virtual ~AudioProvider(); + AudioItemListReply *getContactAudio(int uid = 0, int count = 50, int offset = 0, int album_id = -1); + AudioItemListReply *getAudiosByIds(const QString& ids); + AudioItemListReply *getRecommendationsForUser(int uid = 0, int count = 50, int offset = 0); + AudioItemListReply *searchAudio(const QString& query, int count = 50, int offset = 0, bool autoComplete = true, Vreen::AudioProvider::SortOrder sort = SortByPopularity, bool withLyrics = false); + AudioAlbumItemListReply *getAlbums(int ownerId, int count = 50, int offset = 0); + IntReply *getCount(int oid = 0); + IntReply *addToLibrary(int aid, int oid, int gid = 0); + IntReply *removeFromLibrary(int aid, int oid); +protected: + QScopedPointer d_ptr; +}; + +class AudioModelPrivate; +class VK_SHARED_EXPORT AudioModel : public AbstractListModel +{ + Q_OBJECT + Q_DECLARE_PRIVATE(AudioModel) + + Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder NOTIFY sortOrderChanged) +public: + + enum Roles { + IdRole = Qt::UserRole + 1, + TitleRole, + ArtistRole, + UrlRole, + DurationRole, + AlbumIdRole, + LyricsIdRole, + OwnerIdRole + }; + + AudioModel(QObject *parent); + virtual ~AudioModel(); + + int count() const; + int findAudio(int id) const; + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + virtual int rowCount(const QModelIndex &parent) const; + void setSortOrder(Qt::SortOrder order); + Qt::SortOrder sortOrder() const; +public slots: + void clear(); + void truncate(int count); + void addAudio(const Vreen::AudioItem &item); + void removeAudio(int aid); +signals: + void sortOrderChanged(Qt::SortOrder); +protected: + void insertAudio(int index, const AudioItem &item); + void replaceAudio(int index, const AudioItem &item); + void setAudio(const AudioItemList &items); + virtual void sort(int column, Qt::SortOrder order); +private: + QScopedPointer d_ptr; +}; + +} // namespace Vreen + +#endif // VK_AUDIO_H + diff --git a/3rdparty/vreen/vreen/src/api/audioitem.cpp b/3rdparty/vreen/vreen/src/api/audioitem.cpp new file mode 100644 index 000000000..aa07fb3e9 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/audioitem.cpp @@ -0,0 +1,238 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "audioitem.h" +#include +#include +#include "client.h" + +namespace Vreen { + +template<> +AudioItem Attachment::to(const Attachment &data) +{ + AudioItem item; + item.setId(data.property("aid").toInt()); + item.setOwnerId(data.property("owner_id").toInt()); + item.setArtist(data.property("performer").toString()); + item.setTitle(data.property("title").toString()); + item.setUrl(data.property("url").toUrl()); + item.setDuration(data.property("duration").toDouble()); + return item; +} + +class AudioItemData : public QSharedData { +public: + AudioItemData() : + id(0), ownerId(0), + duration(0), + lyricsId(0), + albumId(0) + {} + AudioItemData(AudioItemData &o) : QSharedData(), + id(o.id), ownerId(o.ownerId), + artist(o.artist), + title(o.title), + duration(o.duration), + url(o.url), + lyricsId(o.lyricsId), + albumId(o.albumId) + {} + int id; + int ownerId; + QString artist; + QString title; + qreal duration; + QUrl url; + int lyricsId; + int albumId; +}; + +AudioItem::AudioItem() : data(new AudioItemData) +{ +} + +AudioItem::AudioItem(const AudioItem &rhs) : data(rhs.data) +{ +} + +AudioItem &AudioItem::operator=(const AudioItem &rhs) +{ + if (this != &rhs) + data.operator=(rhs.data); + return *this; +} + +AudioItem::~AudioItem() +{ +} + +int AudioItem::id() const +{ + return data->id; +} + +void AudioItem::setId(int id) +{ + data->id = id; +} + +int AudioItem::ownerId() const +{ + return data->ownerId; +} + +void AudioItem::setOwnerId(int ownerId) +{ + data->ownerId = ownerId; +} + +QString AudioItem::artist() const +{ + return data->artist; +} + +void AudioItem::setArtist(const QString &artist) +{ + data->artist = artist; +} + +QString AudioItem::title() const +{ + return data->title; +} + +void AudioItem::setTitle(const QString &title) +{ + data->title = title; +} + +qreal AudioItem::duration() const +{ + return data->duration; +} + +void AudioItem::setDuration(qreal duration) +{ + data->duration = duration; +} + +QUrl AudioItem::url() const +{ + return data->url; +} + +void AudioItem::setUrl(const QUrl &url) +{ + data->url = url; +} + +int AudioItem::lyricsId() const +{ + return data->lyricsId; +} + +void AudioItem::setLyricsId(int lyricsId) +{ + data->lyricsId = lyricsId; +} + +int AudioItem::albumId() const +{ + return data->albumId; +} + +void AudioItem::setAlbumId(int albumId) +{ + data->albumId = albumId; +} + +class AudioAlbumItemData : public QSharedData { +public: + AudioAlbumItemData() : + id(0), + ownerId(0) + {} + AudioAlbumItemData(AudioAlbumItemData &o) : QSharedData(), + id(o.id), + ownerId(o.ownerId), + title(o.title) + {} + int id; + int ownerId; + QString title; +}; + +AudioAlbumItem::AudioAlbumItem() : data(new AudioAlbumItemData) +{ +} + +AudioAlbumItem::AudioAlbumItem(const AudioAlbumItem &rhs) : data(rhs.data) +{ +} + +AudioAlbumItem &AudioAlbumItem::operator=(const AudioAlbumItem &rhs) +{ + if (this != &rhs) + data.operator=(rhs.data); + return *this; +} + +AudioAlbumItem::~AudioAlbumItem() +{ + +} + +int AudioAlbumItem::ownerId() const +{ + return data->ownerId; +} + +void AudioAlbumItem::setOwnerId(int ownerId) +{ + data->ownerId = ownerId; +} + +int AudioAlbumItem::id() const +{ + return data->id; +} + +void AudioAlbumItem::setId(int id) +{ + data->id = id; +} + +QString AudioAlbumItem::title() const +{ + return data->title; +} + +void AudioAlbumItem::setTitle(const QString &title) +{ + data->title = title; +} + +} // namespace Vreen + diff --git a/3rdparty/vreen/vreen/src/api/audioitem.h b/3rdparty/vreen/vreen/src/api/audioitem.h new file mode 100644 index 000000000..55b4a647c --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/audioitem.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_AUDIOITEM_H +#define VK_AUDIOITEM_H + +#include +#include "attachment.h" +#include + +class QUrl; + +namespace Vreen { + +class Client; +class AudioItemData; + +class VK_SHARED_EXPORT AudioItem +{ +public: + AudioItem(); + AudioItem(const AudioItem &); + AudioItem &operator=(const AudioItem &); + ~AudioItem(); + + int id() const; + void setId(int aid); + int ownerId() const; + void setOwnerId(int ownerId); + QString artist() const; + void setArtist(const QString &artist); + QString title() const; + void setTitle(const QString &title); + qreal duration() const; + void setDuration(qreal duration); + QUrl url() const; + void setUrl(const QUrl &url); + int lyricsId() const; + void setLyricsId(int lyricsId); + int albumId() const; + void setAlbumId(int albumId); +private: + QSharedDataPointer data; +}; +typedef QList AudioItemList; + +class AudioAlbumItemData; +class VK_SHARED_EXPORT AudioAlbumItem +{ +public: + AudioAlbumItem(); + AudioAlbumItem(const AudioAlbumItem &other); + AudioAlbumItem &operator=(const AudioAlbumItem &other); + ~AudioAlbumItem(); + + int id() const; + void setId(int id); + int ownerId() const; + void setOwnerId(int ownerId); + QString title() const; + void setTitle(const QString &title); +private: + QSharedDataPointer data; +}; +typedef QList AudioAlbumItemList; + +template<> +AudioItem Attachment::to(const Attachment &data); + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::AudioItem) +Q_DECLARE_METATYPE(Vreen::AudioItemList) +Q_DECLARE_METATYPE(Vreen::AudioAlbumItem) +Q_DECLARE_METATYPE(Vreen::AudioAlbumItemList) + +#endif // VK_AUDIOITEM_H + diff --git a/3rdparty/vreen/vreen/src/api/chatsession.cpp b/3rdparty/vreen/vreen/src/api/chatsession.cpp new file mode 100644 index 000000000..4d8ef7383 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/chatsession.cpp @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "chatsession.h" +#include "messagesession_p.h" +#include "contact.h" +#include "client_p.h" +#include "longpoll.h" +#include + +namespace Vreen { + +class ChatSessionPrivate : public MessageSessionPrivate +{ + Q_DECLARE_PUBLIC(ChatSession) +public: + ChatSessionPrivate(ChatSession *q, Contact *contact) : + MessageSessionPrivate(q, contact->client(), contact->id()), + contact(contact), isActive(false) {} + + Contact *contact; + bool isActive; + + void _q_message_read_state_updated(const QVariant &); + void _q_message_added(const Message &message); +}; + + +/*! + * \brief The ChatSession class + * Api reference: \link http://vk.com/developers.php?oid=-1&p=Расширенные_методы_API + */ + +/*! + * \brief ChatSession::ChatSession + * \param contact + */ +ChatSession::ChatSession(Contact *contact) : + MessageSession(new ChatSessionPrivate(this, contact)) +{ + Q_D(ChatSession); + auto longPoll = d->contact->client()->longPoll(); + connect(longPoll, SIGNAL(messageAdded(Vreen::Message)), + this, SLOT(_q_message_added(Vreen::Message))); + connect(longPoll, SIGNAL(messageDeleted(int)), + this, SIGNAL(messageDeleted(int))); + connect(d->contact, SIGNAL(nameChanged(QString)), SLOT(setTitle(QString))); + setTitle(d->contact->name()); +} + +ChatSession::~ChatSession() +{ + +} + +Contact *ChatSession::contact() const +{ + return d_func()->contact; +} + +bool ChatSession::isActive() const +{ + return d_func()->isActive; +} + +void ChatSession::setActive(bool set) +{ + Q_D(ChatSession); + d->isActive = set; +} + +ReplyBase *ChatSession::doGetHistory(int count, int offset) +{ + Q_D(ChatSession); + QVariantMap args; + args.insert("count", count); + args.insert("offset", offset); + args.insert("uid", d->contact->id()); + + auto reply = d->client->request>("messages.getHistory", + args, + MessageListHandler(d->client->id())); + return reply; +} + +SendMessageReply *ChatSession::doSendMessage(const Message &message) +{ + Q_D(ChatSession); + return d->contact->client()->sendMessage(message); +} + +void ChatSessionPrivate::_q_message_read_state_updated(const QVariant &response) +{ + Q_Q(ChatSession); + auto reply = qobject_cast(q->sender()); + if (response.toInt() == 1) { + auto set = reply->property("set").toBool(); + auto ids = reply->property("mids").value(); + foreach(int id, ids) + emit q->messageReadStateChanged(id, set); + } +} + +void ChatSessionPrivate::_q_message_added(const Message &message) +{ + //auto sender = client->contact(); + //if (sender == contact || !sender) //HACK some workaround + int id = message.isIncoming() ? message.fromId() : message.toId(); + if (!message.chatId() && id == contact->id()) { + emit q_func()->messageAdded(message); + } +} + +} // namespace Vreen + +#include "moc_chatsession.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/chatsession.h b/3rdparty/vreen/vreen/src/api/chatsession.h new file mode 100644 index 000000000..cd45e02f6 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/chatsession.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_CHATSESSION_H +#define VK_CHATSESSION_H + +#include "message.h" +#include "messagesession.h" + +namespace Vreen { + +class Reply; +class ChatSessionPrivate; +class VK_SHARED_EXPORT ChatSession : public MessageSession +{ + Q_OBJECT + Q_DECLARE_PRIVATE(ChatSession) + + Q_PROPERTY(Contact *contact READ contact CONSTANT) +public: + ChatSession(Contact *contact); + virtual ~ChatSession(); + + Contact *contact() const; + bool isActive() const; + void setActive(bool set); +protected: + virtual ReplyBase *doGetHistory(int count = 16, int offset = 0); + virtual SendMessageReply *doSendMessage(const Vreen::Message &message); +private: + + Q_PRIVATE_SLOT(d_func(), void _q_message_added(const Vreen::Message &)) +}; + +} // namespace Vreen + +#endif // VK_CHATSESSION_H + diff --git a/3rdparty/vreen/vreen/src/api/client.cpp b/3rdparty/vreen/vreen/src/api/client.cpp new file mode 100644 index 000000000..770412dd9 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/client.cpp @@ -0,0 +1,440 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "client_p.h" +#include "message.h" +#include "contact.h" +#include "groupmanager.h" +#include "reply_p.h" +#include "utils_p.h" +#include +#include + +namespace Vreen { + +Client::Client(QObject *parent) : + QObject(parent), + d_ptr(new ClientPrivate(this)) +{ +} + +Client::Client(const QString &login, const QString &password, QObject *parent) : + QObject(parent), + d_ptr(new ClientPrivate(this)) +{ + Q_D(Client); + d->login = login; + d->password = password; +} + +Client::~Client() +{ +} + +QString Client::password() const +{ + return d_func()->password; +} + +void Client::setPassword(const QString &password) +{ + d_func()->password = password; + emit passwordChanged(password); +} + +QString Client::login() const +{ + return d_func()->login; +} + +void Client::setLogin(const QString &login) +{ + d_func()->login = login; + emit loginChanged(login); +} + +Client::State Client::connectionState() const +{ + Q_D(const Client); + if (d->connection.isNull()) + return StateInvalid; + return d->connection.data()->connectionState(); +} + +bool Client::isOnline() const +{ + if (auto c = connection()) + return c->connectionState() == Client::StateOnline; + else + return false; +} + +QString Client::activity() const +{ + return d_func()->activity; +} + +Connection *Client::connection() const +{ + return d_func()->connection.data(); +} + +Connection *Client::connection() +{ + Q_D(Client); + if (d->connection.isNull()) + qWarning("Unknown method of connection. Use oauth webkit connection"); + // setConnection(new DirectConnection(this)); + return d_func()->connection.data(); +} + +void Client::setConnection(Connection *connection) +{ + Q_D(Client); + if (d->connection != connection) { + if (d->connection) { + d->connection.data()->deleteLater(); + } + + d->connection = connection; + connect(connection, SIGNAL(connectionStateChanged(Vreen::Client::State)), + this, SLOT(_q_connection_state_changed(Vreen::Client::State))); + connect(connection, SIGNAL(error(Vreen::Client::Error)), this, SIGNAL(error(Vreen::Client::Error))); + + emit connectionChanged(d->connection); + } +} + +Roster *Client::roster() const +{ + return d_func()->roster.data(); +} + +Roster *Client::roster() +{ + Q_D(Client); + if (d->roster.isNull()) { + d->roster = new Roster(this, d->connection.isNull() ? 0 : d->connection->uid()); + } + return d->roster.data(); +} + +LongPoll *Client::longPoll() const +{ + return d_func()->longPoll.data(); +} + +LongPoll *Client::longPoll() +{ + Q_D(Client); + if (d->longPoll.isNull()) { + d->longPoll = new LongPoll(this); + + emit longPollChanged(d->longPoll.data()); + } + return d->longPoll.data(); +} + +GroupManager *Client::groupManager() const +{ + return d_func()->groupManager.data(); +} + +GroupManager *Client::groupManager() +{ + Q_D(Client); + if (!d->groupManager) + d->groupManager = new GroupManager(this); + return d->groupManager.data(); +} + +Reply *Client::request(const QUrl &url) +{ + QNetworkRequest request(url); + auto networkReply = connection()->get(request); + auto reply = new Reply(networkReply); + d_func()->processReply(reply); + return reply; +} + +Reply *Client::request(const QString &method, const QVariantMap &args) +{ + auto reply = new Reply(connection()->get(method, args)); + d_func()->processReply(reply); + return reply; +} + +Buddy *Client::me() const +{ + if (auto r = roster()) + return r->owner(); + return 0; +} + +Buddy *Client::me() +{ + return roster()->owner(); +} + +Contact *Client::contact(int id) const +{ + Contact *contact = 0; + if (id > 0) { + if (roster()) + contact = roster()->buddy(id); + if (!contact && groupManager()) + contact = groupManager()->group(id); + } else if (id < 0 && groupManager()) + contact = groupManager()->group(id); + return contact; +} + +int Client::id() const +{ + return me() ? me()->id() : 0; +} + +SendMessageReply *Client::sendMessage(const Message &message) +{ + //TODO add delayed send + if (!isOnline()) + return 0; + + //checks + Q_ASSERT(message.toId()); + + QVariantMap args; + //TODO add chat messages support and contact check + args.insert("uid", message.toId()); + args.insert("message", message.body()); + args.insert("title", message.subject()); + return request("messages.send", args, ReplyPrivate::handleInt); +} + +/*! + * \brief Client::getMessage see \link http://vk.com/developers.php?p=messages.getById + */ +Reply *Client::getMessage(int mid, int previewLength) +{ + QVariantMap args; + args.insert("mid", mid); + args.insert("preview_length", previewLength); + return request("messages.getById", args); +} + +Reply *Client::addLike(int ownerId, int postId, bool retweet, const QString &message) +{ + QVariantMap args; + args.insert("owner_id", ownerId); + args.insert("post_id", postId); + args.insert("repost", (int)retweet); + args.insert("message", message); + return request("wall.addLike", args); +} + +Reply *Client::deleteLike(int ownerId, int postId) +{ + QVariantMap args; + args.insert("owner_id", ownerId); + args.insert("post_id", postId); + auto reply = request("wall.deleteLike", args); + return reply; +} + +void Client::connectToHost() +{ + Q_D(Client); + //TODO add warnings + connection()->connectToHost(d->login, d->password); +} + +void Client::connectToHost(const QString &login, const QString &password) +{ + setLogin(login); + setPassword(password); + connectToHost(); +} + +void Client::disconnectFromHost() +{ + connection()->disconnectFromHost(); +} + + +void Client::setActivity(const QString &activity) +{ + Q_D(Client); + if (d->activity != activity) { + auto reply = setStatus(activity); + connect(reply, SIGNAL(resultReady(const QVariant &)), SLOT(_q_activity_update_finished(const QVariant &))); + } +} + +bool Client::isInvisible() const +{ + return d_func()->isInvisible; +} + +void Client::setInvisible(bool set) +{ + Q_D(Client); + if (d->isInvisible != set) { + d->isInvisible = set; + if (isOnline()) + d->setOnlineUpdaterRunning(!set); + emit invisibleChanged(set); + } +} + +bool Client::trackMessages() const +{ + return d_func()->trackMessages; +} + +void Client::setTrackMessages(bool set) +{ + Q_D(Client); + if( d->trackMessages != set ) { + d->trackMessages = set; + emit trackMessagesChanged(set); + } +} + +Reply *Client::setStatus(const QString &text, int aid) +{ + QVariantMap args; + args.insert("text", text); + if (aid) + args.insert("audio", QString("%1_%2").arg(me()->id()).arg(aid)); + return request("status.set", args); +} + +void Client::processReply(Reply *reply) +{ + d_func()->processReply(reply); +} + +QNetworkReply *Client::requestHelper(const QString &method, const QVariantMap &args) +{ + return connection()->get(method, args); +} + +void ClientPrivate::_q_activity_update_finished(const QVariant &response) +{ + Q_Q(Client); + auto reply = sender_cast(q->sender()); + if (response.toInt() == 1) { + activity = reply->networkReply()->url().queryItemValue("text"); + emit q->activityChanged(activity); + } +} + +void ClientPrivate::_q_update_online() +{ + Q_Q(Client); + q->request("account.setOnline"); +} + +void ClientPrivate::processReply(Reply *reply) +{ + Q_Q(Client); + q->connect(reply, SIGNAL(resultReady(const QVariant &)), q, SLOT(_q_reply_finished(const QVariant &))); + q->connect(reply, SIGNAL(error(int)), q, SLOT(_q_error_received(int))); + emit q->replyCreated(reply); +} + +ReplyBase *ClientPrivate::getMessages(Client *client, const IdList &list, int previewLength) +{ + QVariantMap map; + if (list.count() == 1) + map.insert("mid", list.first()); + else + map.insert("mids", join(list)); + map.insert("preview_length", previewLength); + return client->request>("messages.getById", + map, + MessageListHandler(client->id())); +} + +void ClientPrivate::setOnlineUpdaterRunning(bool set) +{ + if (set) { + onlineUpdater.start(); + _q_update_online(); + } else + onlineUpdater.stop(); +} + +void ClientPrivate::_q_connection_state_changed(Client::State state) +{ + Q_Q(Client); + switch (state) { + case Client::StateOffline: + emit q->onlineStateChanged(false); + setOnlineUpdaterRunning(false); + break; + case Client::StateOnline: + emit q->onlineStateChanged(true); + if (!roster.isNull()) { + roster->setUid(connection->uid()); + emit q->meChanged(roster->owner()); + } + if (!isInvisible) + setOnlineUpdaterRunning(true); + break; + default: + break; + } + emit q->connectionStateChanged(state); +} + +void ClientPrivate::_q_error_received(int code) +{ + Q_Q(Client); + auto reply = sender_cast(q->sender()); + qDebug() << "Error received :" << code << reply->networkReply()->url(); + reply->deleteLater(); + auto error = static_cast(code); + emit q->error(error); + if (error == Client::ErrorAuthorizationFailed) { + connection->disconnectFromHost(); + connection->clear(); + } +} + +void ClientPrivate::_q_reply_finished(const QVariant &) +{ + auto reply = sender_cast(q_func()->sender()); + reply->deleteLater(); +} + +void ClientPrivate::_q_network_manager_error(int) +{ + +} + +} // namespace Vreen + +#include "moc_client.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/client.h b/3rdparty/vreen/vreen/src/api/client.h new file mode 100644 index 000000000..13244eba2 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/client.h @@ -0,0 +1,174 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_CLIENT_H +#define VK_CLIENT_H + +#include "vk_global.h" +#include "reply.h" +#include +#include +#include + +class QUrl; +namespace Vreen { + +class Message; +class Connection; +class ClientPrivate; +class Roster; +class GroupManager; +class LongPoll; +class Contact; +class Buddy; + +typedef ReplyBase SendMessageReply; + +class VK_SHARED_EXPORT Client : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(Client) + + Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged DESIGNABLE true) + Q_PROPERTY(QString login READ login WRITE setLogin NOTIFY loginChanged DESIGNABLE true) + Q_PROPERTY(bool online READ isOnline NOTIFY onlineStateChanged DESIGNABLE true) + Q_PROPERTY(State connectionState READ connectionState NOTIFY connectionStateChanged DESIGNABLE true) + Q_PROPERTY(Vreen::Roster* roster READ roster NOTIFY rosterChanged DESIGNABLE true) + Q_PROPERTY(Vreen::GroupManager* groupManager READ groupManager NOTIFY groupManagerChanged DESIGNABLE true) + Q_PROPERTY(Vreen::LongPoll* longPoll READ longPoll NOTIFY longPollChanged DESIGNABLE true) + Q_PROPERTY(Vreen::Buddy* me READ me NOTIFY meChanged DESIGNABLE true) + Q_PROPERTY(Vreen::Connection* connection READ connection WRITE setConnection NOTIFY connectionChanged DESIGNABLE true) + Q_PROPERTY(QString activity READ activity WRITE setActivity NOTIFY activityChanged DESIGNABLE true) + Q_PROPERTY(bool invisible READ isInvisible WRITE setInvisible NOTIFY invisibleChanged) + Q_PROPERTY(bool trackMessages READ trackMessages WRITE setTrackMessages NOTIFY trackMessagesChanged) + + Q_ENUMS(State) + Q_ENUMS(Error) +public: + + enum State { + StateOffline, + StateConnecting, + StateOnline, + StateInvalid + }; + enum Error { + ErrorUnknown = 1, + ErrorApplicationDisabled = 2, + ErrorIncorrectSignature = 4, + ErrorAuthorizationFailed = 5, + ErrorToManyRequests = 6, + ErrorPermissionDenied = 7, + ErrorCaptchaNeeded = 14, + ErrorMissingOrInvalidParameter = 100, + ErrorNetworkReply = 4096 + }; + + explicit Client(QObject *parent = 0); + explicit Client(const QString &login, const QString &password, QObject *parent = 0); + virtual ~Client(); + QString password() const; + void setPassword(const QString &password); + QString login() const; + void setLogin(const QString &login); + State connectionState() const; + bool isOnline() const; + QString activity() const; + void setActivity(const QString &activity); + bool isInvisible() const; + void setInvisible(bool set); + bool trackMessages() const; + void setTrackMessages(bool set); + + Connection *connection() const; + Connection *connection(); + void setConnection(Connection *connection); + Roster *roster(); + Roster *roster() const; + LongPoll *longPoll(); + LongPoll *longPoll() const; + GroupManager *groupManager(); + GroupManager *groupManager() const; + + Reply *request(const QUrl &); + Reply *request(const QString &method, const QVariantMap &args = QVariantMap()); + template + ReplyImpl *request(const QString &method, const QVariantMap &args, const Handler &handler); + SendMessageReply *sendMessage(const Message &message); + Reply *getMessage(int mid, int previewLength = 0); + Reply *addLike(int ownerId, int postId, bool retweet = false, const QString &message = QString()); //TODO move method + Reply *deleteLike(int ownerId, int postId); //TODO move method + + Q_INVOKABLE Buddy *me(); + Buddy *me() const; + Q_INVOKABLE Contact *contact(int id) const; + int id() const; +public slots: + void connectToHost(); + void connectToHost(const QString &login, const QString &password); + void disconnectFromHost(); +signals: + void loginChanged(const QString &login); + void passwordChanged(const QString &password); + void connectionChanged(Vreen::Connection *connection); + void connectionStateChanged(Vreen::Client::State state); + void replyCreated(Vreen::Reply*); + void error(Vreen::Client::Error error); + void onlineStateChanged(bool online); + void rosterChanged(Vreen::Roster*); + void groupManagerChanged(Vreen::GroupManager*); + void longPollChanged(Vreen::LongPoll*); + void meChanged(Vreen::Buddy *me); + void activityChanged(const QString &activity); + void invisibleChanged(bool set); + void trackMessagesChanged(bool set); +protected: + Reply *setStatus(const QString &text, int aid = 0); + QScopedPointer d_ptr; +private: + void processReply(Reply *reply); + QNetworkReply *requestHelper(const QString &method, const QVariantMap &args); + + Q_PRIVATE_SLOT(d_func(), void _q_connection_state_changed(Vreen::Client::State)) + Q_PRIVATE_SLOT(d_func(), void _q_error_received(int)) + Q_PRIVATE_SLOT(d_func(), void _q_reply_finished(const QVariant &)) + Q_PRIVATE_SLOT(d_func(), void _q_activity_update_finished(const QVariant &)) + Q_PRIVATE_SLOT(d_func(), void _q_update_online()) + Q_PRIVATE_SLOT(d_func(), void _q_network_manager_error(int)) +}; + +template +ReplyImpl *Client::request(const QString &method, const QVariantMap &args, const Handler &handler) +{ + ReplyImpl *reply = new ReplyImpl(handler, requestHelper(method, args)); + processReply(reply); + return reply; +} + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::Client*) + +#endif // VK_CLIENT_H + diff --git a/3rdparty/vreen/vreen/src/api/client_p.h b/3rdparty/vreen/vreen/src/api/client_p.h new file mode 100644 index 000000000..edf0793a3 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/client_p.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 * 60); +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef CLIENT_P_H +#define CLIENT_P_H + +#include "client.h" +#include "reply_p.h" +#include "connection.h" +#include "roster.h" +#include "reply.h" +#include "message.h" +#include "longpoll.h" +#include "utils.h" +#include +#include +#include + +namespace Vreen { + +class ClientPrivate +{ + Q_DECLARE_PUBLIC(Client) +public: + ClientPrivate(Client *q) : q_ptr(q), isInvisible(false), trackMessages(true) + { + onlineUpdater.setInterval(15000 * 60); + onlineUpdater.setSingleShot(false); + q->connect(&onlineUpdater, SIGNAL(timeout()), q, SLOT(_q_update_online())); + } + Client *q_ptr; + QString login; + QString password; + QPointer connection; + QPointer roster; + QPointer longPoll; + QPointer groupManager; + QString activity; + bool isInvisible; + bool trackMessages; + QTimer onlineUpdater; + + void setOnlineUpdaterRunning(bool set); + + void _q_connection_state_changed(Vreen::Client::State state); + void _q_error_received(int error); + void _q_reply_finished(const QVariant &); + void _q_network_manager_error(int); + void _q_activity_update_finished(const QVariant &); + void _q_update_online(); + + void processReply(Reply *reply); + + //some orphaned methods + static ReplyBase *getMessages(Client *client, const IdList &list, int previewLength = 0); +}; + +} //namespace Vreen + +#endif // CLIENT_P_H + diff --git a/3rdparty/vreen/vreen/src/api/commentssession.cpp b/3rdparty/vreen/vreen/src/api/commentssession.cpp new file mode 100644 index 000000000..af9342e1b --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/commentssession.cpp @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "commentssession.h" +#include "contact.h" +#include "client.h" +#include "reply.h" + +namespace Vreen { + +class CommentSession; +class CommentSessionPrivate +{ + Q_DECLARE_PUBLIC(CommentSession) +public: + CommentSessionPrivate(CommentSession *q, Contact *contact) : + q_ptr(q), contact(contact), postId(0), + sort(Qt::AscendingOrder), + needLikes(true), + previewLenght(0) + + {} + CommentSession *q_ptr; + Contact *contact; + int postId; + Qt::SortOrder sort; + bool needLikes; + int previewLenght; + + void _q_comments_received(const QVariant &response) + { + auto list = response.toList(); + if (!list.isEmpty()) { + list.takeFirst(); + foreach (auto item, list) + emit q_func()->commentAdded(item.toMap()); + } + } +}; + + +/*! + * \brief CommentsSession::CommentsSession + * \param client + */ +CommentSession::CommentSession(Contact *contact) : + QObject(contact), + d_ptr(new CommentSessionPrivate(this, contact)) +{ +} + +void CommentSession::setPostId(int postId) +{ + Q_D(CommentSession); + d->postId = postId; +} + +int CommentSession::postId() const +{ + return d_func()->postId; +} + +CommentSession::~CommentSession() +{ +} + +Reply *CommentSession::getComments(int offset, int count) +{ + Q_D(CommentSession); + QVariantMap args; + args.insert("owner_id", (d->contact->type() == Contact::GroupType ? -1 : 1) * d->contact->id()); + args.insert("post_id", d->postId); + args.insert("offset", offset); + args.insert("count", count); + args.insert("need_likes", d->needLikes); + args.insert("preview_lenght", d->previewLenght); + args.insert("sort", d->sort == Qt::AscendingOrder ? "asc" : "desc"); + auto reply = d->contact->client()->request("wall.getComments", args); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_comments_received(QVariant))); + return reply; +} + +} // namespace Vreen + +#include "moc_commentssession.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/commentssession.h b/3rdparty/vreen/vreen/src/api/commentssession.h new file mode 100644 index 000000000..e97c70772 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/commentssession.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_COMMENTSSESSION_H +#define VK_COMMENTSSESSION_H + +#include +#include +#include "vk_global.h" + +namespace Vreen { + +class Reply; +class Contact; +class CommentSessionPrivate; + +class VK_SHARED_EXPORT CommentSession : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(CommentSession) +public: + CommentSession(Vreen::Contact *contact); + virtual ~CommentSession(); + void setPostId(int id); + int postId() const; +public slots: + Reply *getComments(int offset = 0, int count = 100); +signals: + void commentAdded(const QVariantMap &item); + void commentDeleted(int commentId); +private: + QScopedPointer d_ptr; + + Q_PRIVATE_SLOT(d_func(), void _q_comments_received(QVariant)) +}; + +typedef QList CommentList; + +} // namespace Vreen + +#endif // VK_COMMENTSSESSION_H + diff --git a/3rdparty/vreen/vreen/src/api/connection.cpp b/3rdparty/vreen/vreen/src/api/connection.cpp new file mode 100644 index 000000000..7bdba931d --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/connection.cpp @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "connection_p.h" + +namespace Vreen { + +Connection::Connection(QObject *parent) : + QNetworkAccessManager(parent), + d_ptr(new ConnectionPrivate(this)) +{ +} + +Connection::Connection(ConnectionPrivate *data, QObject *parent) : + QNetworkAccessManager(parent), + d_ptr(data) +{ +} + +Connection::~Connection() +{ +} + +QNetworkReply *Connection::get(QNetworkRequest request) +{ + decorateRequest(request); + return QNetworkAccessManager::get(request); +} + +QNetworkReply *Connection::get(const QString &method, const QVariantMap &args) +{ + return QNetworkAccessManager::get(makeRequest(method, args)); +} + +QNetworkReply *Connection::put(const QString &method, QIODevice *data, const QVariantMap &args) +{ + return QNetworkAccessManager::put(makeRequest(method, args), data); +} + +QNetworkReply *Connection::put(const QString &method, const QByteArray &data, const QVariantMap &args) +{ + return QNetworkAccessManager::put(makeRequest(method, args), data); +} + +/*! + * \brief Connection::clear auth data. Default implementation doesn't nothing. + */ +void Connection::clear() +{ +} + +void Connection::setConnectionOption(Connection::ConnectionOption option, const QVariant &value) +{ + Q_D(Connection); + d->options[option] = value; +} + +QVariant Connection::connectionOption(Connection::ConnectionOption option) const +{ + return d_func()->options[option]; +} + +void Connection::decorateRequest(QNetworkRequest &) +{ +} + +} // namespace Vreen + diff --git a/3rdparty/vreen/vreen/src/api/connection.h b/3rdparty/vreen/vreen/src/api/connection.h new file mode 100644 index 000000000..7548fc072 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/connection.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_CONNECTION_H +#define VK_CONNECTION_H + +#include +#include +#include +#include "client.h" + +namespace Vreen { + +class Reply; +class ConnectionPrivate; + +class VK_SHARED_EXPORT Connection : public QNetworkAccessManager +{ + Q_OBJECT + Q_DECLARE_PRIVATE(Connection) + Q_ENUMS(ConnectionOption) +public: + Connection(QObject *parent = 0); + Connection(ConnectionPrivate *data, QObject *parent = 0); + ~Connection(); + + enum ConnectionOption { + ShowAuthDialog, + KeepAuthData + }; + + virtual void connectToHost(const QString &login, const QString &password) = 0; + virtual void disconnectFromHost() = 0; + + QNetworkReply *get(QNetworkRequest request); + QNetworkReply *get(const QString &method, const QVariantMap &args = QVariantMap()); + QNetworkReply *put(const QString &method, QIODevice *data, const QVariantMap &args = QVariantMap()); + QNetworkReply *put(const QString &method, const QByteArray &data, const QVariantMap &args = QVariantMap()); + + virtual Client::State connectionState() const = 0; + virtual int uid() const = 0; + virtual void clear(); + + Q_INVOKABLE void setConnectionOption(ConnectionOption option, const QVariant &value); + Q_INVOKABLE QVariant connectionOption(ConnectionOption option) const; +signals: + void connectionStateChanged(Vreen::Client::State connectionState); + void error(Vreen::Client::Error); +protected: + virtual QNetworkRequest makeRequest(const QString &method, const QVariantMap &args = QVariantMap()) = 0; + virtual void decorateRequest(QNetworkRequest &); + QScopedPointer d_ptr; +}; + +} //namespace Vreen + +Q_DECLARE_METATYPE(Vreen::Connection*) + +#endif // VK_CONNECTION_H + diff --git a/3rdparty/vreen/vreen/src/api/connection_p.h b/3rdparty/vreen/vreen/src/api/connection_p.h new file mode 100644 index 000000000..ff79c28d9 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/connection_p.h @@ -0,0 +1,44 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef CONNECTION_P_H +#define CONNECTION_P_H +#include "connection.h" + +namespace Vreen { + +class Connection; +class VK_SHARED_EXPORT ConnectionPrivate +{ + Q_DECLARE_PUBLIC(Connection) +public: + ConnectionPrivate(Connection *q) : q_ptr(q) {} + Connection *q_ptr; + QMap options; +}; + +} + + +#endif // CONNECTION_P_H diff --git a/3rdparty/vreen/vreen/src/api/contact.cpp b/3rdparty/vreen/vreen/src/api/contact.cpp new file mode 100644 index 000000000..ecb1f358b --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/contact.cpp @@ -0,0 +1,317 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include +#include "contact_p.h" +#include "message.h" +#include "roster_p.h" +#include "groupmanager_p.h" + +namespace Vreen { + +Contact::Contact(int id, Client *client) : + QObject(client), + d_ptr(new ContactPrivate(this, id, client)) +{ +} + +Contact::Contact(ContactPrivate *data) : + QObject(data->client), + d_ptr(data) +{ +} + +Contact::~Contact() +{ +} + +Contact::Type Contact::type() +{ + return d_func()->type; +} + +int Contact::id() const +{ + return d_func()->id; +} + +Client *Contact::client() const +{ + return d_func()->client; +} + +QString Contact::photoSource(Contact::PhotoSize size) const +{ + Q_D(const Contact); + return d->sources.value(size); +} + +void Contact::setPhotoSource(const QString &source, Contact::PhotoSize size) +{ + d_func()->sources[size] = source; + emit photoSourceChanged(source, size); +} + +void Contact::fill(Contact *contact, const QVariantMap &data) +{ + auto it = data.constBegin(); + for (; it != data.constEnd(); it++) { + QByteArray property = "_q_" + it.key().toLatin1(); + contact->setProperty(property.data(), it.value()); + } +} + +Buddy::Buddy(int id, Client *client) : + Contact(new BuddyPrivate(this, id, client)) +{ + if (id < 0) + qWarning() << "Buddy's id must be positive"; +} + +QString Buddy::firstName() const +{ + return d_func()->firstName; +} + +void Buddy::setFirstName(const QString &firstName) +{ + Q_D(Buddy); + if (d->firstName != firstName) { + d->firstName = firstName; + emit firstNameChanged(firstName); + emit nameChanged(name()); + } +} + +QString Buddy::lastName() const +{ + return d_func()->lastName; +} + +void Buddy::setLastName(const QString &lastName) +{ + Q_D(Buddy); + if (d->lastName != lastName) { + d->lastName = lastName; + emit lastNameChanged(lastName); + emit nameChanged(name()); + } +} + +bool Buddy::isOnline() const +{ + return d_func()->status != Offline; +} + +void Buddy::setOnline(bool set) +{ + setStatus(set ? Online : Offline); + emit onlineChanged(set); +} + +QString Buddy::name() const +{ + Q_D(const Buddy); + if (d->firstName.isEmpty() && d->lastName.isEmpty()) + return tr("id%1").arg(id()); + else if (d->lastName.isEmpty()) + return d->firstName; + else if (d->firstName.isEmpty()) + return d->lastName; + else + return d->firstName + ' ' + d->lastName; + +} + +QStringList Buddy::tags() const +{ + Q_D(const Buddy); + QStringList tags; + foreach (auto data, d->tagIdList) { + int id = data.toInt(); + tags.append(d->client->roster()->tags().value(id, tr("Unknown tag id %1").arg(id))); + } + return tags; +} + +QString Buddy::activity() const +{ + return d_func()->activity; +} + +Buddy::Status Buddy::status() const +{ + return d_func()->status; +} + +void Buddy::setStatus(Buddy::Status status) +{ + Q_D(Buddy); + //hack for delayed replies recieve + if (!d->client->isOnline()) + status = Offline; + + if (d->status != status) { + d_func()->status = status; + emit statusChanged(status); + } +} + +bool Buddy::isFriend() const +{ + return d_func()->isFriend; +} + +void Buddy::setIsFriend(bool set) +{ + Q_D(Buddy); + if (d->isFriend != set) { + d->isFriend = set; + emit isFriendChanged(set); + } +} + +/*! + * \brief Buddy::update + * \param fields - some fields need to update. + * \note This request will be called immediately. + * \sa update + * api reference \link http://vk.com/developers.php?oid=-1&p=users.get + */ +void Buddy::update(const QStringList &fields) +{ + IdList ids; + ids.append(id()); + d_func()->client->roster()->update(ids, fields); +} + +/*! + * \brief Buddy::update + * Add contact to update queue and it will be updated as soon as posible in near future. + * Use this method if you know that it takes more than one update + * \sa update(fields) + */ +void Buddy::update() +{ + Q_D(Buddy); + d->client->roster()->d_func()->appendToUpdaterQueue(this); +} + +SendMessageReply *Buddy::sendMessage(const QString &body, const QString &subject) +{ + Q_D(Buddy); + Message message(d->client); + message.setBody(body); + message.setSubject(subject); + message.setToId(id()); + return d->client->sendMessage(message); +} + +Reply *Buddy::addToFriends(const QString &reason) +{ + Q_D(Buddy); + QVariantMap args; + args.insert("uid", d->id); + args.insert("text", reason); + auto reply = d->client->request("friends.add", args); + connect(reply, SIGNAL(resultReady(QVariant)), this, SLOT(_q_friends_add_finished(QVariant))); + return reply; +} + +Reply *Buddy::removeFromFriends() +{ + Q_D(Buddy); + QVariantMap args; + args.insert("uid", d->id); + auto reply = d->client->request("friends.delete", args); + connect(reply, SIGNAL(resultReady(QVariant)), this, SLOT(_q_friends_delete_finished(QVariant))); + return reply; +} + +Group::Group(int id, Client *client) : + Contact(new GroupPrivate(this, id, client)) +{ + Q_D(Group); + if (id > 0) + qWarning() << "Group's id must be negative"; + d->type = GroupType; +} + +QString Group::name() const +{ + Q_D(const Group); + if (!d->name.isEmpty()) + return d->name; + return tr("group-%1").arg(id()); +} + +void Group::setName(const QString &name) +{ + d_func()->name = name; + emit nameChanged(name); +} + +void Group::update() +{ + Q_D(Group); + d->client->groupManager()->d_func()->appendToUpdaterQueue(this); +} + +void BuddyPrivate::_q_friends_add_finished(const QVariant &response) +{ + Q_Q(Buddy); + int answer = response.toInt(); + switch (answer) { + case 1: + //TODO + break; + case 2: + q->setIsFriend(true); + case 4: + //TODO + break; + default: + break; + } +} + +void BuddyPrivate::_q_friends_delete_finished(const QVariant &response) +{ + Q_Q(Buddy); + int answer = response.toInt(); + switch (answer) { + case 1: + q->setIsFriend(false); + break; + case 2: + //TODO + default: + break; + } +} + +} // namespace Vreen + +#include "moc_contact.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/contact.h b/3rdparty/vreen/vreen/src/api/contact.h new file mode 100644 index 000000000..4fa67c766 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/contact.h @@ -0,0 +1,243 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_USER_H +#define VK_USER_H + +#include "client.h" +#include +#include + +namespace Vreen { + +#define VK_COMMON_FIELDS QLatin1String("first_name") \ + << QLatin1String("last_name") \ + << QLatin1String("online") \ + << QLatin1String("photo") \ + << QLatin1String("photo_medium") \ + << QLatin1String("photo_medium_rec") \ + << QLatin1String("photo_big") \ + << QLatin1String("photo_big_rec") \ + << QLatin1String("lists") \ + << QLatin1String("activity") + +#define VK_EXTENDED_FIELDS QLatin1String("sex") \ + << QLatin1String("bdate") \ + << QLatin1String("city") \ + << QLatin1String("country") \ + << QLatin1String("education") \ + << QLatin1String("can_post") \ + << QLatin1String("contacts") \ + << QLatin1String("can_see_all_posts") \ + << QLatin1String("can_write_private_message") \ + << QLatin1String("last_seen") \ + << QLatin1String("relation") \ + << QLatin1String("nickname") \ + << QLatin1String("wall_comments") \ + +#define VK_GROUP_FIELDS QLatin1String("city") \ + << "country" \ + << "place" \ + << "description" \ + << "wiki_page" \ + << "members_count" \ + << "counters" \ + << "start_date" \ + << "end_date" \ + << "can_post" \ + << "activity" + +#define VK_ALL_FIELDS VK_COMMON_FIELDS \ + << VK_EXTENDED_FIELDS + +class Client; +class ContactPrivate; +class VK_SHARED_EXPORT Contact : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(Contact) + Q_ENUMS(Type) + Q_ENUMS(Status) + + Q_PROPERTY(int id READ id CONSTANT) + Q_PROPERTY(QString name READ name NOTIFY nameChanged) + Q_PROPERTY(Type type READ type CONSTANT) + Q_PRIVATE_PROPERTY(Contact::d_func(), QString photoSource READ defaultSource NOTIFY photoSourceChanged) + Q_PRIVATE_PROPERTY(Contact::d_func(), QString photoSourceBig READ bigSource NOTIFY photoSourceChanged) + + Q_PRIVATE_PROPERTY(Contact::d_func(), QString _q_photo READ smallSource WRITE setSmallSource DESIGNABLE false) + Q_PRIVATE_PROPERTY(Contact::d_func(), QString _q_photo_medium READ mediumSource WRITE setMediumSource DESIGNABLE false) + Q_PRIVATE_PROPERTY(Contact::d_func(), QString _q_photo_medium_rec READ mediumSourceRec WRITE setMediumSourceRec DESIGNABLE false) + Q_PRIVATE_PROPERTY(Contact::d_func(), QString _q_photo_big READ bigSource WRITE setBigSource DESIGNABLE false) + Q_PRIVATE_PROPERTY(Contact::d_func(), QString _q_photo_big_rec READ bigSourceRec WRITE setBigSourceRec DESIGNABLE false) +public: + + enum PhotoSize { + PhotoSizeSmall, + PhotoSizeMedium, + PhotoSizeBig, + PhotoSizeMediumRec, + PhotoSizeBigRec + }; + + enum Type { + BuddyType, + GroupType, + ChatType + }; + + enum Status { + Online, + Away, + Offline, + Unknown + }; + + Contact(int id, Client *client); + Contact(ContactPrivate *data); + virtual ~Contact(); + virtual QString name() const = 0; + Type type(); + int id() const; + Client *client() const; + Q_INVOKABLE QString photoSource(PhotoSize size = PhotoSizeSmall) const; + void setPhotoSource(const QString &source, PhotoSize size = PhotoSizeSmall); + static void fill(Contact *contact, const QVariantMap &data); +signals: + void nameChanged(const QString &name); + void photoSourceChanged(const QString &source, Vreen::Contact::PhotoSize); +protected: + QScopedPointer d_ptr; +}; + +#define VK_CONTACT_TYPE(ContactType) \ + public: \ + static Contact::Type staticType() { return ContactType; } \ + virtual Contact::Type type() const { return staticType(); } \ + private: + +class BuddyPrivate; +class VK_SHARED_EXPORT Buddy : public Contact +{ + Q_OBJECT + Q_DECLARE_PRIVATE(Buddy) + VK_CONTACT_TYPE(BuddyType) + + Q_PROPERTY(QString fistName READ firstName NOTIFY firstNameChanged) + Q_PROPERTY(QString lastName READ lastName NOTIFY lastNameChanged) + Q_PROPERTY(bool online READ isOnline NOTIFY onlineChanged) + Q_PROPERTY(QStringList tags READ tags NOTIFY tagsChanged) + Q_PROPERTY(QString activity READ activity NOTIFY activityChanged) + Q_PROPERTY(Status status READ status NOTIFY statusChanged) + Q_PROPERTY(bool isFriend READ isFriend NOTIFY isFriendChanged) + + //private properties + Q_PROPERTY(QString _q_first_name READ firstName WRITE setFirstName DESIGNABLE false) + Q_PROPERTY(QString _q_last_name READ lastName WRITE setLastName DESIGNABLE false) + Q_PROPERTY(bool _q_online READ isOnline WRITE setOnline DESIGNABLE false STORED false) + Q_PRIVATE_PROPERTY(d_func(), QVariantList _q_lists READ lists WRITE setLists DESIGNABLE false) + Q_PRIVATE_PROPERTY(d_func(), QString _q_activity READ getActivity WRITE setActivity DESIGNABLE false) +public: + //TODO name case support maybe needed + QString firstName() const; + void setFirstName(const QString &firstName); + QString lastName() const; + void setLastName(const QString &lastName); + bool isOnline() const; + void setOnline(bool set); + virtual QString name() const; + QStringList tags() const; + QString activity() const; + Status status() const; + void setStatus(Status status); + bool isFriend() const; + void setIsFriend(bool set); +public slots: + void update(const QStringList &fields); + void update(); + SendMessageReply *sendMessage(const QString &body, const QString &subject = QString()); + Reply *addToFriends(const QString &reason = QString()); + Reply *removeFromFriends(); +signals: + void firstNameChanged(const QString &name); + void lastNameChanged(const QString &name); + void onlineChanged(bool isOnline); + void tagsChanged(const QStringList &tags); + void activityChanged(const QString &activity); + void statusChanged(Vreen::Contact::Status); + void isFriendChanged(bool isFriend); +protected: + Buddy(int id, Client *client); + + friend class Roster; + friend class RosterPrivate; + + Q_PRIVATE_SLOT(d_func(), void _q_friends_add_finished(const QVariant &response)) + Q_PRIVATE_SLOT(d_func(), void _q_friends_delete_finished(const QVariant &response)) +}; + +class GroupPrivate; +class VK_SHARED_EXPORT Group : public Contact +{ + Q_OBJECT + Q_DECLARE_PRIVATE(Group) + VK_CONTACT_TYPE(GroupType) + + Q_PROPERTY(QString _q_name READ name WRITE setName DESIGNABLE false) +public: + virtual QString name() const; + void setName(const QString &name); +public slots: + void update(); +protected: + Group(int id, Client *client); + + friend class GroupManager; +}; + +//TODO group chats +class GroupChat; + +typedef QList ContactList; +typedef QList BuddyList; +typedef QList GroupList; + +//contact's casts +template +Q_INLINE_TEMPLATE T contact_cast(Contact *contact) +{ + //T t = reinterpret_cast(0); + //if (t->staticType() == contact->type()) + // return static_cast(contact); + return qobject_cast(contact); +} + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::Contact*) +Q_DECLARE_METATYPE(Vreen::Buddy*) +Q_DECLARE_METATYPE(Vreen::Group*) + +#endif // VK_USER_H + diff --git a/3rdparty/vreen/vreen/src/api/contact_p.h b/3rdparty/vreen/vreen/src/api/contact_p.h new file mode 100644 index 000000000..9487e3632 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/contact_p.h @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef USER_P_H +#define USER_P_H +#include "contact.h" +#include "client.h" +#include +#include + +namespace Vreen { + +class Contact; +class ContactPrivate +{ + Q_DECLARE_PUBLIC(Contact) +public: + ContactPrivate(Contact *q, int id, Client *client) : q_ptr(q), + client(client), id(id), type(Contact::BuddyType), + sources(Contact::PhotoSizeBigRec + 1), + preferedSize(Contact::PhotoSizeMediumRec) + { + + } + Contact *q_ptr; + Client *client; + int id; + Contact::Type type; + QVector sources; + Contact::PhotoSize preferedSize; + + QString defaultSource() const + { + //return sources[preferedSize]; + for (int index = preferedSize; index != -1; index--) { + auto photo = sources.value(index); + if (!photo.isNull()) + return photo; + } + return QString(); + } + QString smallSource() { return sources[Contact::PhotoSizeSmall]; } + void setSmallSource(const QString &source) + { + q_func()->setPhotoSource(source, Contact::PhotoSizeSmall); + } + QString mediumSource() { return sources[Contact::PhotoSizeMedium]; } + void setMediumSource(const QString &source) + { + q_func()->setPhotoSource(source, Contact::PhotoSizeMedium); + } + QString mediumSourceRec() { return sources[Contact::PhotoSizeMediumRec]; } + void setMediumSourceRec(const QString &source) + { + q_func()->setPhotoSource(source, Contact::PhotoSizeMediumRec); + } + QString bigSource() { return sources[Contact::PhotoSizeBig]; } + void setBigSource(const QString &source) + { + q_func()->setPhotoSource(source, Contact::PhotoSizeBig); + } + QString bigSourceRec() { return sources[Contact::PhotoSizeBigRec]; } + void setBigSourceRec(const QString &source) + { + q_func()->setPhotoSource(source, Contact::PhotoSizeBigRec); + } +}; + +class BuddyPrivate : public ContactPrivate +{ + Q_DECLARE_PUBLIC(Buddy) +public: + BuddyPrivate(Contact *q, int id, Client *client) : + ContactPrivate(q, id, client), + status(Buddy::Offline), + isFriend(false) + { + type = Contact::BuddyType; + } + QString firstName; + QString lastName; + Buddy::Status status; + QVariantList tagIdList; + QString activity; + bool isFriend; + + QVariantList lists() const { return QVariantList(); } + void setLists(const QVariantList &list) + { + Q_Q(Buddy); + tagIdList.clear(); + foreach (auto value, list) + tagIdList.append(value); + emit q->tagsChanged(q->tags()); + } + QString getActivity() const { return activity; } + void setActivity(const QString &now) + { + if (activity != now) { + activity = now; + emit q_func()->activityChanged(now); + } + } + + void _q_friends_add_finished(const QVariant &response); + void _q_friends_delete_finished(const QVariant &response); +}; + +class GroupPrivate : public ContactPrivate +{ + Q_DECLARE_PUBLIC(Group) +public: + GroupPrivate(Contact *q, int id, Client *client) : ContactPrivate(q, id, client) {} + QString name; +}; + +} //namespace Vreen + +#endif // USER_P_H + diff --git a/3rdparty/vreen/vreen/src/api/contentdownloader.cpp b/3rdparty/vreen/vreen/src/api/contentdownloader.cpp new file mode 100644 index 000000000..c51d24c1a --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/contentdownloader.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "contentdownloader_p.h" +#include "utils.h" +#include +#include +#include +#include +#include + +namespace Vreen { + +static QPointer networkManager; + +ContentDownloader::ContentDownloader(QObject *parent) : + QObject(parent) +{ + if (!networkManager) { + networkManager = new NetworkAccessManager; + //use another thread for more smooth gui + //auto thread = new QThread; + //networkManager->moveToThread(thread); + //connect(networkManager.data(), SIGNAL(destroyed()), thread, SLOT(quit())); + //connect(thread, SIGNAL(finished()), SLOT(deleteLater())); + //thread->start(QThread::LowPriority); + } +} + +QString ContentDownloader::download(const QUrl &link) +{ + QString path = networkManager->cacheDir() + + networkManager->fileHash(link) + + QLatin1String(".") + + QFileInfo(link.path()).completeSuffix(); + + if (QFileInfo(path).exists()) { + //FIXME it maybe not work in some cases (use event instead emit) + emit downloadFinished(path); + } else { + QNetworkRequest request(link); + request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); + auto reply = networkManager->get(request); + reply->setProperty("path", path); + connect(reply, SIGNAL(finished()), this, SLOT(replyDone())); + } + return path; +} + +void ContentDownloader::replyDone() +{ + auto reply = sender_cast(sender()); + QString cacheDir = networkManager->cacheDir(); + QDir dir(cacheDir); + if (!dir.exists()) { + if(!dir.mkpath(cacheDir)) { + qWarning("Unable to create cache dir"); + return; + } + } + //TODO move method to manager in other thread + QString path = reply->property("path").toString(); + QFile file(path); + if (!file.open(QIODevice::WriteOnly)) { + qWarning("Unable to write file!"); + return; + } + file.write(reply->readAll()); + file.close(); + + emit downloadFinished(path); +} + +} // namespace Vreen + +#include "moc_contentdownloader.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/contentdownloader.h b/3rdparty/vreen/vreen/src/api/contentdownloader.h new file mode 100644 index 000000000..480de3899 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/contentdownloader.h @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_CONTENTDOWNLOADER_H +#define VK_CONTENTDOWNLOADER_H + +#include +#include "vk_global.h" + +class QUrl; + +namespace Vreen { + +class VK_SHARED_EXPORT ContentDownloader : public QObject +{ + Q_OBJECT +public: + explicit ContentDownloader(QObject *parent = 0); + Q_INVOKABLE QString download(const QUrl &link); +signals: + void downloadFinished(const QString &fileName); +private slots: + void replyDone(); +}; + +} // namespace Vreen + +#endif // VK_CONTENTDOWNLOADER_H + diff --git a/3rdparty/vreen/vreen/src/api/contentdownloader_p.h b/3rdparty/vreen/vreen/src/api/contentdownloader_p.h new file mode 100644 index 000000000..797bbbf69 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/contentdownloader_p.h @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef CONTENTDOWNLOADER_P_H +#define CONTENTDOWNLOADER_P_H +#include +#include +#include +#include +#include +#include "contentdownloader.h" + +namespace Vreen { + +class NetworkAccessManager : public QNetworkAccessManager +{ + Q_OBJECT +public: + NetworkAccessManager(QObject *parent = 0) : QNetworkAccessManager(parent) + { + + } + + QString fileHash(const QUrl &url) const + { + QCryptographicHash hash(QCryptographicHash::Md5); + hash.addData(url.toString().toUtf8()); + return hash.result().toHex(); + } + QString cacheDir() const + { + auto dir = QDesktopServices::storageLocation(QDesktopServices::DataLocation); + return dir + QLatin1String("/vk/"); + } +}; + +} //namespace Vreen + +#endif // CONTENTDOWNLOADER_P_H diff --git a/3rdparty/vreen/vreen/src/api/dynamicpropertydata.cpp b/3rdparty/vreen/vreen/src/api/dynamicpropertydata.cpp new file mode 100644 index 000000000..0a28fff7c --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/dynamicpropertydata.cpp @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "dynamicpropertydata_p.h" +#include + +namespace Vreen { + +QVariant DynamicPropertyData::property(const char *name, const QVariant &def, + const QList &gNames, + const QList &gGetters) const +{ + QByteArray prop = QByteArray::fromRawData(name, strlen(name)); + int id = gNames.indexOf(prop); + if (id < 0) { + id = names.indexOf(prop); + if(id < 0) + return def; + return values.at(id); + } + return (this->*gGetters.at(id))(); +} + +void DynamicPropertyData::setProperty(const char *name, const QVariant &value, + const QList &gNames, + const QList &gSetters) +{ + QByteArray prop = QByteArray::fromRawData(name, strlen(name)); + int id = gNames.indexOf(prop); + if (id < 0) { + id = names.indexOf(prop); + if (!value.isValid()) { + if(id < 0) + return; + names.removeAt(id); + values.removeAt(id); + } else { + if (id < 0) { + prop.detach(); + names.append(prop); + values.append(value); + } else { + values[id] = value; + } + } + } else { + (this->*gSetters.at(id))(value); + } +} + +} // namespace Vreen + diff --git a/3rdparty/vreen/vreen/src/api/dynamicpropertydata_p.h b/3rdparty/vreen/vreen/src/api/dynamicpropertydata_p.h new file mode 100644 index 000000000..eb451e03c --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/dynamicpropertydata_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_DYNAMICPROPERTYDATA_P_H +#define VK_DYNAMICPROPERTYDATA_P_H + +//from euroelessar code + +#include +#include + +namespace Vreen { + +class DynamicPropertyData; + +namespace CompiledProperty +{ + typedef QVariant (DynamicPropertyData::*Getter)() const; + typedef void (DynamicPropertyData::*Setter)(const QVariant &variant); +} + +class DynamicPropertyData : public QSharedData +{ +public: + typedef CompiledProperty::Getter Getter; + typedef CompiledProperty::Setter Setter; + DynamicPropertyData() {} + DynamicPropertyData(const DynamicPropertyData &o) : + QSharedData(o), names(o.names), values(o.values) {} + QList names; + QList values; + + QVariant property(const char *name, const QVariant &def, const QList &names, + const QList &getters) const; + void setProperty(const char *name, const QVariant &value, const QList &names, + const QList &setters); +}; + +} // namespace Vreen + +#endif // VK_DYNAMICPROPERTYDATA_P_H + diff --git a/3rdparty/vreen/vreen/src/api/friendrequest.cpp b/3rdparty/vreen/vreen/src/api/friendrequest.cpp new file mode 100644 index 000000000..1e46b509d --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/friendrequest.cpp @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "friendrequest.h" +#include + +namespace Vreen { + +class FriendRequestData : public QSharedData { +public: + FriendRequestData(int uid) : QSharedData(), + uid(uid) + {} + FriendRequestData(const FriendRequestData &o) : QSharedData(o), + uid(o.uid), + message(o.message), + mutual(o.mutual) + {} + + int uid; + QString message; + IdList mutual; +}; + +FriendRequest::FriendRequest(int uid) : data(new FriendRequestData(uid)) +{ +} + +FriendRequest::FriendRequest(const FriendRequest &rhs) : data(rhs.data) +{ +} + +FriendRequest &FriendRequest::operator=(const FriendRequest &rhs) +{ + if (this != &rhs) + data.operator=(rhs.data); + return *this; +} + +FriendRequest::~FriendRequest() +{ +} + +int FriendRequest::uid() const +{ + return data->uid; +} + +void FriendRequest::setUid(int uid) +{ + data->uid = uid; +} + +IdList FriendRequest::mutualFriends() const +{ + return data->mutual; +} + +void FriendRequest::setMutualFriends(const IdList &mutual) +{ + data->mutual = mutual; +} + +QString FriendRequest::message() const +{ + return data->message; +} + +void FriendRequest::setMessage(const QString &message) +{ + data->message = message; +} + +} // namespace Vreen diff --git a/3rdparty/vreen/vreen/src/api/friendrequest.h b/3rdparty/vreen/vreen/src/api/friendrequest.h new file mode 100644 index 000000000..c017e23fe --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/friendrequest.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VREEN_FRIENDREQUEST_H +#define VREEN_FRIENDREQUEST_H + +#include "vk_global.h" +#include +#include + +namespace Vreen { + +class FriendRequestData; + +class VK_SHARED_EXPORT FriendRequest +{ +public: + explicit FriendRequest(int uid = 0); + FriendRequest(const FriendRequest &); + FriendRequest &operator=(const FriendRequest &); + ~FriendRequest(); + int uid() const; + void setUid(int uid); + QString message() const; + void setMessage(const QString &message); + IdList mutualFriends() const; + void setMutualFriends(const IdList &mutualFriends); +private: + QSharedDataPointer data; +}; +typedef QList FriendRequestList; + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::FriendRequest) +Q_DECLARE_METATYPE(Vreen::FriendRequestList) + +#endif // VREEN_FRIENDREQUEST_H diff --git a/3rdparty/vreen/vreen/src/api/groupchatsession.cpp b/3rdparty/vreen/vreen/src/api/groupchatsession.cpp new file mode 100644 index 000000000..313b6d998 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/groupchatsession.cpp @@ -0,0 +1,336 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "groupchatsession.h" +#include "messagesession_p.h" +#include "client_p.h" +#include "reply_p.h" +#include "roster.h" +#include + +namespace Vreen { + +class GroupChatSession; +class GroupChatSessionPrivate : public MessageSessionPrivate +{ + Q_DECLARE_PUBLIC(GroupChatSession) +public: + GroupChatSessionPrivate(MessageSession *q, Client *client, int uid) : + MessageSessionPrivate(q, client, uid), + adminId(0) + {} + QString title; + QHash buddies; + int adminId; + + Buddy *addContact(int id); + void removeContact(int id); + + void _q_message_sent(const QVariant &response); + void _q_info_received(const QVariant &response); + void _q_participant_added(const QVariant &response); + void _q_participant_removed(const QVariant &response); + void _q_title_updated(const QVariant &response); + void _q_online_changed(bool set); + void _q_message_added(const Vreen::Message &); + void _q_group_chat_updated(int chatId, bool self); +}; + +/*! + * \brief The GroupChatSession class, based on + * \link http://vk.com/developers.php?oid=-1&p=messages.getChat + * \link http://vk.com/developers.php?o=-1&p=messages.createChat + * etc + */ + +/*! + * \brief GroupChatSession::GroupChatSession + * \param chatId + * \param client + */ + +GroupChatSession::GroupChatSession(int chatId, Client *client) : + MessageSession(new GroupChatSessionPrivate(this, client, chatId)) +{ + connect(client, SIGNAL(onlineStateChanged(bool)), SLOT(_q_online_changed(bool))); + connect(client->longPoll(), SIGNAL(groupChatUpdated(int,bool)), SLOT(_q_group_chat_updated(int,bool))); +} + +BuddyList GroupChatSession::participants() const +{ + return d_func()->buddies.values(); +} + +Buddy *GroupChatSession::admin() const +{ + return static_cast(findParticipant(d_func()->adminId)); +} + +QString GroupChatSession::title() const +{ + return d_func()->title; +} + +Buddy *GroupChatSession::findParticipant(int uid) const +{ + foreach (auto buddy, d_func()->buddies) + if (buddy->id() == uid) + return buddy; + return 0; +} + +bool GroupChatSession::isJoined() const +{ + Q_D(const GroupChatSession); + return d->buddies.contains(d->client->me()->id()) + && d->client->isOnline(); +} + +//Buddy *GroupChatSession::participant(int uid) +//{ +// auto p = findParticipant(uid); +// if (!p) +// p = d_func()->addContact(uid); +// return p; +//} + +Reply *GroupChatSession::create(Client *client, const IdList &uids, const QString &title) +{ + QStringList list; + foreach (auto &uid, uids) + list.append(QString::number(uid)); + QVariantMap args; + args.insert("uids", list.join(",")); + args.insert("title", title); + return client->request("messages.createChat", args); +} + +void GroupChatSession::setTitle(const QString &title) +{ + Q_D(GroupChatSession); + if (d->title != title) { + d->title = title; + emit titleChanged(title); + } +} + +ReplyBase *GroupChatSession::doGetHistory(int count, int offset) +{ + Q_D(GroupChatSession); + QVariantMap args; + args.insert("count", count); + args.insert("offset", offset); + args.insert("chat_id", d->uid); + + auto reply = d->client->request>("messages.getHistory", + args, + MessageListHandler(d->client->id())); + return reply; +} + +SendMessageReply *GroupChatSession::doSendMessage(const Message &message) +{ + Q_D(GroupChatSession); + QVariantMap args; + //TODO move to client + args.insert("chat_id", d->uid); + args.insert("message", message.body()); + args.insert("title", message.subject()); + + return d->client->request("messages.send", args, ReplyPrivate::handleInt); +} + +Reply *GroupChatSession::getInfo() +{ + Q_D(GroupChatSession); + QVariantMap args; + args.insert("chat_id", d->uid); + + auto reply = d->client->request("messages.getChat", args); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_info_received(QVariant))); + return reply; +} + +/*! + * \brief GroupChatSession::inviteParticipant \link http://vk.com/developers.php?oid=-1&p=messages.addChatUser + * \param buddy + * \return + */ +Reply *GroupChatSession::inviteParticipant(Contact *buddy) +{ + Q_D(GroupChatSession); + QVariantMap args; + args.insert("chat_id", d->uid); + args.insert("uid", buddy->id()); + + auto reply = d->client->request("messages.addChatUser", args); + reply->setProperty("uid", buddy->id()); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_participant_added(QVariant))); + return reply; +} + +Reply *GroupChatSession::removeParticipant(Contact *buddy) +{ + Q_D(GroupChatSession); + QVariantMap args; + args.insert("chat_id", d->uid); + args.insert("uid", buddy->id()); + + auto reply = d->client->request("messages.removeChatUser", args); + reply->setProperty("uid", buddy->id()); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_participant_removed(QVariant))); + return reply; +} + +Reply *GroupChatSession::updateTitle(const QString &title) +{ + Q_D(GroupChatSession); + QVariantMap args; + args.insert("chat_id", d->uid); + args.insert("title", title); + + auto reply = d->client->request("messages.editChat", args); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_title_updated(QVariant))); + return reply; +} + +void GroupChatSession::join() +{ + Q_D(GroupChatSession); + if (!isJoined() && d->client->isOnline()) + inviteParticipant(d_func()->client->me()); +} + +void GroupChatSession::leave() +{ + if (isJoined()) + removeParticipant(d_func()->client->me()); +} + +void GroupChatSessionPrivate::_q_info_received(const QVariant &response) +{ + Q_Q(GroupChatSession); + auto map = response.toMap(); + adminId = map.value("admin_id").toInt(); + q->setTitle(map.value("title").toString()); + + QSet uidsToAdd; + foreach (auto item, map.value("users").toList()) + uidsToAdd.insert(item.toInt()); + + QSet uids = buddies.keys().toSet(); + QSet uidsToRemove = uids - uidsToAdd; + uidsToAdd -= uids; + foreach (auto uid, uidsToRemove) + removeContact(uid); + foreach (auto uid, uidsToAdd) + addContact(uid); +} + +void GroupChatSessionPrivate::_q_participant_added(const QVariant &response) +{ + if (response.toInt() == 1) { + int id = q_func()->sender()->property("uid").toInt(); + addContact(id); + } +} + +void GroupChatSessionPrivate::_q_participant_removed(const QVariant &response) +{ + if (response.toInt() == 1) { + int id = q_func()->sender()->property("uid").toInt(); + removeContact(id); + } +} + +void GroupChatSessionPrivate::_q_title_updated(const QVariant &response) +{ + Q_Q(GroupChatSession); + auto map = response.toMap(); + q->setTitle(map.value("title").toString()); +} + +void GroupChatSessionPrivate::_q_online_changed(bool set) +{ + foreach (auto contact, buddies) { + if (auto buddy = qobject_cast(contact)) { + if (set) + buddy->update(); + else + buddy->setOnline(false); + } + } + if (!set) + emit q_func()->isJoinedChanged(false); +} + +void GroupChatSessionPrivate::_q_message_added(const Message &msg) +{ + if (msg.chatId() == uid) { + emit q_func()->messageAdded(msg); + } +} + +void GroupChatSessionPrivate::_q_group_chat_updated(int chatId, bool) +{ + Q_Q(GroupChatSession); + if (chatId == uid) + q->getInfo(); +} + +Buddy *GroupChatSessionPrivate::addContact(int id) +{ + Q_Q(GroupChatSession); + if (id) { + if (!buddies.contains(id)) { + auto contact = client->roster()->buddy(id); + buddies.insert(id, contact); + emit q->participantAdded(contact); + if (contact == client->me()) { + emit q->isJoinedChanged(true); + } + return contact; + } + } + return 0; +} + +void GroupChatSessionPrivate::removeContact(int id) +{ + Q_Q(GroupChatSession); + if (id) { + if (buddies.contains(id)) { + buddies.remove(id); + auto contact = client->roster()->buddy(id); + emit q->participantRemoved(contact); + if (contact == client->me()) + emit q->isJoinedChanged(false); + } + } +} + +} // namespace Vreen + +#include "moc_groupchatsession.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/groupchatsession.h b/3rdparty/vreen/vreen/src/api/groupchatsession.h new file mode 100644 index 000000000..2f6a5f9a3 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/groupchatsession.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_GROUPCHATSESSION_H +#define VK_GROUPCHATSESSION_H +#include "messagesession.h" +#include "contact.h" + +namespace Vreen { + +class GroupChatSessionPrivate; + +class VK_SHARED_EXPORT GroupChatSession : public Vreen::MessageSession +{ + Q_OBJECT + Q_DECLARE_PRIVATE(GroupChatSession) + + Q_PROPERTY(QString title READ title NOTIFY titleChanged) + Q_PROPERTY(bool joined READ isJoined NOTIFY isJoinedChanged) +public: + explicit GroupChatSession(int chatId, Client *parent); + + BuddyList participants() const; + Buddy *admin() const; + QString title() const; + Buddy *findParticipant(int uid) const; + //Buddy *participant(int uid); + bool isJoined() const; + + static Reply *create(Client *client, const IdList &uids, const QString &title = QString()); +public slots: + Reply *getInfo(); + Reply *inviteParticipant(Contact *buddy); + Reply *removeParticipant(Contact *buddy); + Reply *updateTitle(const QString &title); + void join(); + void leave(); +signals: + void participantAdded(Vreen::Buddy*); + void participantRemoved(Vreen::Buddy*); + void titleChanged(QString); + void isJoinedChanged(bool); +protected: + void setTitle(const QString &title); + virtual SendMessageReply *doSendMessage(const Vreen::Message &message); + virtual ReplyBase *doGetHistory(int count = 16, int offset = 0); +private: + Q_PRIVATE_SLOT(d_func(), void _q_info_received(const QVariant &response)) + Q_PRIVATE_SLOT(d_func(), void _q_participant_added(const QVariant &response)) + Q_PRIVATE_SLOT(d_func(), void _q_participant_removed(const QVariant &response)) + Q_PRIVATE_SLOT(d_func(), void _q_title_updated(const QVariant &response)) + Q_PRIVATE_SLOT(d_func(), void _q_online_changed(bool)) + Q_PRIVATE_SLOT(d_func(), void _q_message_added(const Vreen::Message &)) + Q_PRIVATE_SLOT(d_func(), void _q_group_chat_updated(int chatId, bool self)) +}; + +} // namespace Vreen + +#endif // VK_GROUPCHATSESSION_H + diff --git a/3rdparty/vreen/vreen/src/api/groupmanager.cpp b/3rdparty/vreen/vreen/src/api/groupmanager.cpp new file mode 100644 index 000000000..e496b1380 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/groupmanager.cpp @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "client.h" +#include "contact.h" +#include "utils_p.h" +#include +#include "groupmanager_p.h" + +namespace Vreen { + +GroupManager::GroupManager(Client *client) : + QObject(client), + d_ptr(new GroupManagerPrivate(this, client)) +{ +} + +GroupManager::~GroupManager() +{ +} + +Client *GroupManager::client() const +{ + return d_func()->client; +} + +Group *GroupManager::group(int gid) +{ + Q_D(GroupManager); + auto group = d->groupHash.value(gid); + if (!group) { + group = new Group(gid, client()); + d->groupHash.insert(gid, group); + } + return group; +} + +Group *GroupManager::group(int gid) const +{ + return d_func()->groupHash.value(gid); +} + +Reply *GroupManager::update(const IdList &ids, const QStringList &fields) +{ + Q_D(GroupManager); + QVariantMap args; + args.insert("gids", join(ids)); + args.insert("fields", fields.join(",")); + auto reply = d->client->request("groups.getById", args); + reply->connect(reply, SIGNAL(resultReady(const QVariant&)), + this, SLOT(_q_update_finished(const QVariant&))); + return reply; +} + +Reply *GroupManager::update(const GroupList &groups, const QStringList &fields) +{ + IdList ids; + foreach (auto group, groups) + ids.append(group->id()); + return update(ids, fields); +} + +void GroupManagerPrivate::_q_update_finished(const QVariant &response) +{ + Q_Q(GroupManager); + auto list = response.toList(); + foreach (auto data, list) { + auto map = data.toMap(); + int id = -map.value("gid").toInt(); + Contact::fill(q->group(id), map); + } +} + +void GroupManagerPrivate::_q_updater_handle() +{ + Q_Q(GroupManager); + q->update(updaterQueue); + updaterQueue.clear(); +} + +void GroupManagerPrivate::appendToUpdaterQueue(Group *contact) +{ + if (!updaterQueue.contains(-contact->id())) + updaterQueue.append(-contact->id()); + if (!updaterTimer.isActive()) + updaterTimer.start(); +} + +} // namespace Vreen + +#include "moc_groupmanager.cpp" diff --git a/3rdparty/vreen/vreen/src/api/groupmanager.h b/3rdparty/vreen/vreen/src/api/groupmanager.h new file mode 100644 index 000000000..4b855fc29 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/groupmanager.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_GROUPMANAGER_H +#define VK_GROUPMANAGER_H + +#include "contact.h" +#include + +namespace Vreen { + +class Client; +class Group; +class GroupManagerPrivate; + +class VK_SHARED_EXPORT GroupManager : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(GroupManager) +public: + explicit GroupManager(Client *client); + virtual ~GroupManager(); + Client *client() const; + Group *group(int gid) const; + Group *group(int gid); +public slots: + Reply *update(const IdList &ids, const QStringList &fields = QStringList() << VK_GROUP_FIELDS); + Reply *update(const GroupList &groups, const QStringList &fields = QStringList() << VK_GROUP_FIELDS); +signals: + void groupCreated(Group *group); +protected: + QScopedPointer d_ptr; +private: + + Q_PRIVATE_SLOT(d_func(), void _q_update_finished(const QVariant &response)) + Q_PRIVATE_SLOT(d_func(), void _q_updater_handle()) + + friend class Group; + friend class GroupPrivate; +}; + +} // namespace Vreen + +#endif // VK_GROUPMANAGER_H + diff --git a/3rdparty/vreen/vreen/src/api/groupmanager_p.h b/3rdparty/vreen/vreen/src/api/groupmanager_p.h new file mode 100644 index 000000000..58249f6b0 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/groupmanager_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ + +#ifndef GROUPMANAGER_P_H +#define GROUPMANAGER_P_H + +#include "groupmanager.h" +#include "client.h" +#include "contact.h" +#include + +namespace Vreen { + +class GroupManager; +class GroupManagerPrivate +{ + Q_DECLARE_PUBLIC(GroupManager) +public: + GroupManagerPrivate(GroupManager *q, Client *client) : q_ptr(q), client(client) + { + updaterTimer.setInterval(5000); + updaterTimer.setSingleShot(true); + updaterTimer.connect(&updaterTimer, SIGNAL(timeout()), + q, SLOT(_q_updater_handle())); + } + GroupManager *q_ptr; + Client *client; + QHash groupHash; + + //updater + QTimer updaterTimer; + IdList updaterQueue; + + void _q_update_finished(const QVariant &response); + void _q_updater_handle(); + void appendToUpdaterQueue(Group *contact); +}; + +} //namespace Vreen + +#endif // GROUPMANAGER_P_H diff --git a/3rdparty/vreen/vreen/src/api/json.cpp b/3rdparty/vreen/vreen/src/api/json.cpp new file mode 100644 index 000000000..0acfe755b --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/json.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "json.h" +#include + +namespace Vreen { + +namespace JSON { + +/*! + * \brief Parse JSON data to QVariant + * \param String with JSON data + * \return Result of parsing, QVariant::Null if there was an error + */ +QVariant parse(const QByteArray &data) +{ + QVariant res; + int len = data.size(); + K8JSON::parseRecord(res, reinterpret_cast(data.constData()), &len); + return res; +} + +/*! + * \brief Generate JSON string from QVariant + * \param data QVariant with data + * \param indent Identation of new lines + * \return JSON string with data +*/ +QByteArray generate(const QVariant &data, int indent) +{ + QByteArray res; + K8JSON::generate(res, data, indent); + return res; +} + +} //namespace JSON + +} // namespace Vreen + diff --git a/3rdparty/vreen/vreen/src/api/json.h b/3rdparty/vreen/vreen/src/api/json.h new file mode 100644 index 000000000..6c76cccb2 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/json.h @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_JSON_H +#define VK_JSON_H +#include "vk_global.h" +#include + +namespace Vreen { + +namespace JSON { + VK_SHARED_EXPORT QVariant parse(const QByteArray &data); + VK_SHARED_EXPORT QByteArray generate(const QVariant &data, int indent = 0); +} //namespace JSON + +} // namespace Vreen + +#endif // VK_JSON_H + diff --git a/3rdparty/vreen/vreen/src/api/localstorage.cpp b/3rdparty/vreen/vreen/src/api/localstorage.cpp new file mode 100644 index 000000000..fd7161e62 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/localstorage.cpp @@ -0,0 +1,33 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licees/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "localstorage.h" + +namespace Vreen { + +AbstractLocalStorage::AbstractLocalStorage() +{ +} + +} // namespace Vreen diff --git a/3rdparty/vreen/vreen/src/api/localstorage.h b/3rdparty/vreen/vreen/src/api/localstorage.h new file mode 100644 index 000000000..910e75dba --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/localstorage.h @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licees/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VREEN_LOCALSTORAGE_H +#define VREEN_LOCALSTORAGE_H +#include "contact.h" + +namespace Vreen { + +class AbstractLocalStorage +{ +public: + AbstractLocalStorage(); + virtual ~AbstractLocalStorage() {} +protected: + virtual void loadBuddies(Roster *roster) = 0; + virtual void storeBuddies(Roster *roster) = 0; + //TODO group managers + //key value storage + virtual void store(const QString &key, const QVariant &value) = 0; + virtual QVariant load(const QString &key) = 0; + //TODO messages history async get and set +}; + +} // namespace Vreen + +#endif // VREEN_LOCALSTORAGE_H diff --git a/3rdparty/vreen/vreen/src/api/longpoll.cpp b/3rdparty/vreen/vreen/src/api/longpoll.cpp new file mode 100644 index 000000000..b83a6bd81 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/longpoll.cpp @@ -0,0 +1,279 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "longpoll_p.h" +#include "connection.h" +#include "message.h" +#include "roster.h" +#include "contact.h" +#include +#include + +namespace Vreen { + +static const int chatMessageOffset = 2000000000; + +/*! + * \brief The LongPoll class + * Api reference: \link http://vk.com/developers.php?oid=-1&p=messages.getLongPollServer + */ + +/*! + * \brief LongPoll::LongPoll + * \param client + */ +LongPoll::LongPoll(Client *client) : + QObject(client), + d_ptr(new LongPollPrivate(this)) +{ + Q_D(LongPoll); + d->client = client; + setRunning(client->isOnline() && client->trackMessages()); + + connect(client, SIGNAL(onlineStateChanged(bool)), SLOT(_q_update_running())); + connect(client, SIGNAL(trackMessagesChanged(bool)), SLOT(_q_update_running())); +} + +LongPoll::~LongPoll() +{ + +} + +void LongPoll::setMode(LongPoll::Mode mode) +{ + d_func()->mode = mode; +} + +LongPoll::Mode LongPoll::mode() const +{ + return d_func()->mode; +} + +int LongPoll::pollInterval() const +{ + return d_func()->pollInterval; +} + +void LongPoll::setRunning(bool set) +{ + Q_D(LongPoll); + if (set != d->isRunning) { + d->isRunning = set; + if (set) + requestServer(); + } +} + +void LongPoll::requestServer() +{ + Q_D(LongPoll); + if (d->isRunning) { + auto reply = d->client->request("messages.getLongPollServer"); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_request_server_finished(QVariant))); + } +} + +void LongPoll::requestData(const QByteArray &timeStamp) +{ + Q_D(LongPoll); + if (d->dataRequestReply) { + d->dataRequestReply->disconnect(this, SLOT(_q_on_data_recieved(QVariant))); + d->dataRequestReply->deleteLater(); + } + if (d->isRunning) { + QUrl url = d->dataUrl; + url.addQueryItem("ts", timeStamp); + auto reply = d->client->request(url); + connect(reply, SIGNAL(resultReady(QVariant)), this, SLOT(_q_on_data_recieved(QVariant))); + d->dataRequestReply = reply; + } +} + +void LongPollPrivate::_q_request_server_finished(const QVariant &response) +{ + Q_Q(LongPoll); + + QVariantMap data = response.toMap(); + if (data.isEmpty()) { + QTimer::singleShot(pollInterval, q, SLOT(requestServer())); + return; + } + + QString url("http://%1?act=a_check&key=%2&wait=%3&mode=%4"); + dataUrl = url.arg(data.value("server").toString(), + data.value("key").toString(), + QString::number(waitInterval), + QString::number(mode)); + q->requestData(data.value("ts").toByteArray()); +} + +void LongPollPrivate::_q_on_data_recieved(const QVariant &response) +{ + Q_Q(LongPoll); + auto data = response.toMap(); + + if (data.contains("failed")) { + q->requestServer(); + return; + } + + QVariantList updates = data.value("updates").toList(); + for (int i = 0; i < updates.size(); i++) { + QVariantList update = updates.at(i).toList(); + int updateType = update.value(0, -1).toInt(); + switch (updateType) { + case LongPoll::MessageDeleted: { + emit q->messageDeleted(update.value(1).toInt()); + break; + } + case LongPoll::MessageAdded: { + QVariantMap additional = update.value(7).toMap(); + + int rid = additional.value("from").toInt(); + auto attachmets = getAttachments(additional); + + Message::Flags flags(update.value(2).toInt()); + Message message(client); + message.setAttachments(attachmets); + int cid = update.value(3).toInt(); + + if ((cid - chatMessageOffset) >= 0) { + //WTF chat flag? + message.setChatId(cid - chatMessageOffset); + } + message.setId(update.value(1).toInt()); + message.setFlags(flags); + if (flags & Message::FlagOutbox) { + message.setToId(message.chatId() ? rid : cid); + message.setFromId(client->me()->id()); + } else { + message.setFromId(message.chatId() ? rid : cid); + message.setToId(client->me()->id()); + } + message.setSubject(update.value(5).toString()); + message.setBody(update.value(6).toString()); + message.setDate(QDateTime::currentDateTime()); + emit q->messageAdded(message); + break; + } + case LongPoll::MessageFlagsReplaced: { + int id = update.value(1).toInt(); + int flags = update.value(2).toInt(); + int userId = update.value(3).toInt(); + emit q->messageFlagsReplaced(id, flags, userId); + break; + } + case LongPoll::MessageFlagsReseted: { //TODO remove copy/paste + int id = update.value(1).toInt(); + int flags = update.value(2).toInt(); + int userId = update.value(3).toInt(); + emit q->messageFlagsReseted(id, flags, userId); + break; + } + case LongPoll::UserOnline: + case LongPoll::UserOffline: { + // WTF? Why VKontakte sends minus as first char of id? + auto id = qAbs(update.value(1).toInt()); + Buddy::Status status; + if (updateType == LongPoll::UserOnline) + status = Buddy::Online; + else + status = update.value(2).toInt() == 1 ? Buddy::Away + : Buddy::Offline; + emit q->contactStatusChanged(id, status); + break; + } + case LongPoll::GroupChatUpdated: { + int chat_id = update.value(1).toInt(); + bool self = update.value(1).toInt(); + emit q->groupChatUpdated(chat_id, self); + break; + } + case LongPoll::ChatTyping: { + int user_id = qAbs(update.value(1).toInt()); + //int flags = update.at(2).toInt(); + emit q->contactTyping(user_id); + break; + } + case LongPoll::GroupChatTyping: { + int user_id = qAbs(update.value(1).toInt()); + int chat_id = update.at(2).toInt(); + emit q->contactTyping(user_id, chat_id); + break; + } + case LongPoll::UserCall: { + int user_id = qAbs(update.value(1).toInt()); + int call_id = update.at(2).toInt(); + emit q->contactCall(user_id, call_id); + break; + } + } + } + + q->requestData(data.value("ts").toByteArray()); +} + +void LongPollPrivate::_q_update_running() +{ + Q_Q(LongPoll); + q->setRunning(client->isOnline() && client->trackMessages()); +} + +Attachment::List LongPollPrivate::getAttachments(const QVariantMap &map) +{ + QHash hash; + hash.reserve(map.keys().size() / 2); + auto it = map.constBegin(); + for (; it != map.constEnd(); it++) { + QString key = it.key(); + if (key.startsWith("attach")) { + key = key.remove(0, 6); + if (key.endsWith("type")) { + key.chop(5); + int i = key.toInt(); + hash[i].setType(it.value().toString()); + } else { + QStringList values = it.value().toString().split('_'); + int i = key.toInt(); + hash[i].setOwnerId(values[0].toInt()); + hash[i].setMediaId(values[1].toInt()); + } + } + } + return hash.values(); +} + +void LongPoll::setPollInterval(int interval) +{ + Q_D(LongPoll); + if (d->pollInterval != interval) { + d->pollInterval = interval; + emit pollIntervalChanged(interval); + } +} + +} // namespace Vreen + +#include "moc_longpoll.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/longpoll.h b/3rdparty/vreen/vreen/src/api/longpoll.h new file mode 100644 index 000000000..bcd5daf80 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/longpoll.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_LONGPOLL_H +#define VK_LONGPOLL_H + +#include +#include "contact.h" + +namespace Vreen { + +class Message; +class Client; +class LongPollPrivate; +class VK_SHARED_EXPORT LongPoll : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(LongPoll) + Q_PROPERTY(int pollInterval READ pollInterval WRITE setPollInterval NOTIFY pollIntervalChanged) +public: + + enum ServerAnswer { + MessageDeleted = 0, + MessageFlagsReplaced= 1, + MessageFlagsSet = 2, + MessageFlagsReseted = 3, + MessageAdded = 4, + UserOnline = 8, + UserOffline = 9, + GroupChatUpdated = 51, + ChatTyping = 61, + GroupChatTyping = 62, + UserCall = 70 + + }; + + enum OfflineFlag { + OfflineTimeout = 1 + }; + Q_DECLARE_FLAGS(OfflineFlags, OfflineFlag) + + enum Mode { + NoRecieveAttachments = 0, + RecieveAttachments = 2 + }; + + LongPoll(Client *client); + virtual ~LongPoll(); + void setMode(Mode mode); + Mode mode() const; + int pollInterval() const; + void setPollInterval(int interval); +signals: + void messageAdded(const Vreen::Message &msg); + void messageDeleted(int mid); + void messageFlagsReplaced(int mid, int mask, int userId = 0); + void messageFlagsReseted(int mid, int mask, int userId = 0); + void contactStatusChanged(int userId, Vreen::Contact::Status status); + void contactTyping(int userId, int chatId = 0); + void contactCall(int userId, int callId); + void groupChatUpdated(int chatId, bool self); + void pollIntervalChanged(int); +public slots: + void setRunning(bool set); +protected slots: + void requestServer(); + void requestData(const QByteArray &timeStamp); +protected: + QScopedPointer d_ptr; + + Q_PRIVATE_SLOT(d_func(), void _q_request_server_finished(const QVariant &)) + Q_PRIVATE_SLOT(d_func(), void _q_on_data_recieved(const QVariant &)) + Q_PRIVATE_SLOT(d_func(), void _q_update_running()); +}; + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::LongPoll*) + +#endif // VK_LONGPOLL_H + diff --git a/3rdparty/vreen/vreen/src/api/longpoll_p.h b/3rdparty/vreen/vreen/src/api/longpoll_p.h new file mode 100644 index 000000000..0c1ce7b0c --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/longpoll_p.h @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef LONGPOLL_P_H +#define LONGPOLL_P_H + +#include "longpoll.h" +#include "client.h" +#include "reply.h" +#include "attachment.h" + +#include +#include +#include +#include +#include + +#include + +namespace Vreen { + +class LongPoll; +class LongPollPrivate +{ + Q_DECLARE_PUBLIC(LongPoll) +public: + LongPollPrivate(LongPoll *q) : q_ptr(q), client(0), + mode(LongPoll::RecieveAttachments), pollInterval(1500), waitInterval(25), isRunning(false) {} + LongPoll *q_ptr; + Client *client; + + LongPoll::Mode mode; + int pollInterval; + int waitInterval; + QUrl dataUrl; + bool isRunning; + QPointer dataRequestReply; + + void _q_request_server_finished(const QVariant &response); + void _q_on_data_recieved(const QVariant &response); + void _q_update_running(); + Attachment::List getAttachments(const QVariantMap &map); +}; + + +} //namespace Vreen + +#endif // LONGPOLL_P_H + diff --git a/3rdparty/vreen/vreen/src/api/message.cpp b/3rdparty/vreen/vreen/src/api/message.cpp new file mode 100644 index 000000000..9bc067c43 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/message.cpp @@ -0,0 +1,327 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "message.h" +#include "contact.h" +#include "client.h" +#include "roster.h" +#include +#include "dynamicpropertydata_p.h" +#include "utils_p.h" +#include + +namespace Vreen { + +class MessageData : public DynamicPropertyData +{ +public: + MessageData(int clientId) : + clientId(clientId), + messageId(0), + fromId(0), + toId(0), + chatId(0), + userCount(0), + adminId(0), + latitude(-1), + longitude(-1) + {} + MessageData(const MessageData &o) : + DynamicPropertyData(o), + clientId(o.clientId), + messageId(o.messageId), + fromId(o.fromId), + toId(o.toId), + date(o.date), + flags(o.flags), + subject(o.subject), + body(o.body), + forwardMsgIds(o.forwardMsgIds), + chatId(o.chatId), + chatActive(o.chatActive), + userCount(o.userCount), + adminId(o.adminId), + latitude(o.latitude), + longitude(o.longitude), + attachmentHash(o.attachmentHash) + {} + ~MessageData() {} + + int clientId; + int messageId; + int fromId; + int toId; + QDateTime date; + Message::Flags flags; + QString subject; + QString body; + QList forwardMsgIds; + int chatId; + QList chatActive; + int userCount; + int adminId; + qreal latitude; + qreal longitude; + Attachment::Hash attachmentHash; + + void fill(const QVariantMap &data) + { + messageId = data.value("mid").toInt(); + + int contactId = data.value("from_id").toInt(); + if (contactId) { + bool isIncoming = (contactId == clientId); + setFlag(Message::FlagOutbox, !isIncoming); + if (isIncoming) { + fromId = clientId; + toId = 0; + } else { + fromId = contactId; + toId = clientId; + } + } else { + setFlag(Message::FlagOutbox, data.value("out").toBool()); + contactId = data.value("uid").toInt(); + if (!flags.testFlag(Message::FlagOutbox)) { + fromId = contactId; + toId = clientId; + } else { + toId = contactId; + fromId = clientId; + } + } + + date = QDateTime::fromTime_t(data.value("date").toInt()); + setFlag(Message::FlagUnread, !data.value("read_state").toBool()); + subject = fromHtmlEntities(data.value("title").toString()); + body = fromHtmlEntities(data.value("body").toString()); + attachmentHash = Attachment::toHash(Attachment::fromVariantList(data.value("attachments").toList())); + //TODO forward messages + chatId = data.value("chat_id").toInt(); + } + + void setFlag(Message::Flag flag, bool set = true) + { + if (set) + flags |= flag; + else + flags &= ~flag; + } + + int getId(Contact *contact) const + { + return contact ? contact->id() : 0; + } +}; + + +/*! + * \brief The Message class + * Api reference: \link http://vk.com/developers.php?oid=-1&p=Формат_описания_личных_сообщений */ + +Message::Message(Client *client) : + d(new MessageData(client->id())) +{ +} + +Message::Message(int clientId) : + d(new MessageData(clientId)) +{ +} + +Message::Message(const QVariantMap &data, int clientId) : + d(new MessageData(clientId)) +{ + d->fill(data); +} + +Message::Message(const QVariantMap &data, Client *client) : + d(new MessageData(client->id())) +{ + d->fill(data); +} + +Message::Message(const Message &other) : d(other.d) +{ +} + +Message &Message::operator =(const Message &other) +{ + if (this != &other) + d.operator=(other.d); + return *this; +} + +bool Message::operator ==(const Message &other) +{ + return id() == other.id(); +} + +Message::~Message() +{ +} + +int Message::id() const +{ + return d->messageId; +} + +void Message::setId(int id) +{ + d->messageId = id; +} + +QDateTime Message::date() const +{ + return d->date; +} + +void Message::setDate(const QDateTime &date) +{ + d->date = date; +} + +int Message::fromId() const +{ + return d->fromId; +} + +void Message::setFromId(int id) +{ + d->fromId = id; +} + +int Message::toId() const +{ + return d->toId; +} + +void Message::setToId(int id) +{ + d->toId = id; +} + +int Message::chatId() const +{ + return d->chatId; +} + +void Message::setChatId(int chatId) +{ + d->chatId = chatId; +} + +QString Message::subject() const +{ + return d->subject; +} + +void Message::setSubject(const QString &title) +{ + d->subject = title; +} + +QString Message::body() const +{ + return d->body; +} + +void Message::setBody(const QString &body) +{ + d->body = body; +} + +bool Message::isUnread() const +{ + return testFlag(FlagUnread); +} + +void Message::setUnread(bool set) +{ + setFlag(FlagUnread, set); +} + +bool Message::isIncoming() const +{ + return !testFlag(FlagOutbox); +} + +void Message::setIncoming(bool set) +{ + setFlag(FlagOutbox, !set); +} + +void Message::setFlags(Message::Flags flags) +{ + d->flags = flags; +} + +Message::Flags Message::flags() const +{ + return d->flags; +} + +void Message::setFlag(Flag flag, bool set) +{ + d->setFlag(flag, set); +} + +bool Message::testFlag(Flag flag) const +{ + return d->flags.testFlag(flag); +} + +Attachment::Hash Message::attachments() const +{ + return d->attachmentHash; +} + +Attachment::List Message::attachments(Attachment::Type type) const +{ + return d->attachmentHash.values(type); +} + +void Message::setAttachments(const Attachment::List &attachmentList) +{ + d->attachmentHash = Attachment::toHash(attachmentList); +} + +MessageList Message::fromVariantList(const QVariantList &list, Vreen::Client *client) +{ + return fromVariantList(list, client->id()); +} + +MessageList Message::fromVariantList(const QVariantList &list, int clientId) +{ + MessageList messageList; + foreach (auto item, list) { + Vreen::Message message(item.toMap(), clientId); + messageList.append(message); + } + return messageList; +} + +} // namespace Vreen + +#include "moc_message.cpp" diff --git a/3rdparty/vreen/vreen/src/api/message.h b/3rdparty/vreen/vreen/src/api/message.h new file mode 100644 index 000000000..8b4f4662d --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/message.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_MESSAGE_H +#define VK_MESSAGE_H +#include +#include +#include "attachment.h" + +namespace Vreen { + +class Contact; +class Message; +typedef QList MessageList; + +class Client; +class MessageData; +class VK_SHARED_EXPORT Message +{ + Q_GADGET + Q_ENUMS(ReadState) + Q_ENUMS(Direction) + Q_ENUMS(Flags) +public: + enum Flag { + FlagUnread = 1, + FlagOutbox = 2, + FlagReplied = 4, + FlagImportant= 8, + FlagChat = 16, + FlagFriends = 32, + FlagSpam = 64, + FlagDeleted = 128, + FlagFixed = 256, + FlagMedia = 512 + }; + Q_DECLARE_FLAGS(Flags, Flag) + enum Filter { + FilterNone = 0, + FilterUnread = 1, + FilterNotFromChat = 2, + FilterFromFriends = 4 + }; + + Message(int clientId); + Message(const QVariantMap &data, int clientId); + Message(Client *client = 0); + Message(const QVariantMap &data, Client *client); + Message(const Message &other); + Message &operator =(const Message &other); + bool operator ==(const Message &other); + virtual ~Message(); + + int id() const; + void setId(int id); + QDateTime date() const; + void setDate(const QDateTime &date); + int fromId() const; + void setFromId(int id); + int toId() const; + void setToId(int id); + int chatId() const; + void setChatId(int chatId); + QString subject() const; + void setSubject(const QString &subject); + QString body() const; + void setBody(const QString &body); + bool isUnread() const; + void setUnread(bool set); + bool isIncoming() const; + void setIncoming(bool set); + void setFlags(Flags flags); + Flags flags() const; + void setFlag(Flag flag, bool set = true); + bool testFlag(Flag flag) const; + Attachment::Hash attachments() const; + Attachment::List attachments(Attachment::Type type) const; + void setAttachments(const Attachment::List &attachmentList); + + static MessageList fromVariantList(const QVariantList &list, Client *client); + static MessageList fromVariantList(const QVariantList &list, int clientId); +private: + QSharedDataPointer d; +}; + +typedef QList IdList; + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::Message) +Q_DECLARE_METATYPE(Vreen::MessageList) +Q_DECLARE_METATYPE(Vreen::IdList) +Q_DECLARE_OPERATORS_FOR_FLAGS(Vreen::Message::Flags) + +#endif // VK_MESSAGE_H + diff --git a/3rdparty/vreen/vreen/src/api/messagemodel.cpp b/3rdparty/vreen/vreen/src/api/messagemodel.cpp new file mode 100644 index 000000000..a87c2d418 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/messagemodel.cpp @@ -0,0 +1,286 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "messagemodel.h" +#include "contact.h" +#include "longpoll.h" +#include "utils.h" +#include "utils_p.h" +#include "client.h" +#include +#include +#include + +namespace Vreen { + +class MessageListModel; +class MessageListModelPrivate +{ + Q_DECLARE_PUBLIC(MessageListModel) +public: + MessageListModelPrivate(MessageListModel *q) : q_ptr(q), + messageComparator(Qt::DescendingOrder) {} + MessageListModel *q_ptr; + QPointer client; + + MessageList messageList; + IdComparator messageComparator; +}; + + +MessageListModel::MessageListModel(QObject *parent) : + QAbstractListModel(parent), + d_ptr(new MessageListModelPrivate(this)) +{ + auto roles = roleNames(); + roles[SubjectRole] = "subject"; + roles[BodyRole] = "body"; + roles[FromRole] = "from"; + roles[ToRole] = "to"; + roles[ReadStateRole] = "unread"; + roles[DirectionRole] = "incoming"; + roles[DateRole] = "date"; + roles[IdRole] = "mid"; + roles[AttachmentRole] = "attachments"; + roles[ChatIdRole] = "chatId"; + setRoleNames(roles); +} + +MessageListModel::~MessageListModel() +{ + +} + +int MessageListModel::count() const +{ + return d_func()->messageList.count(); +} + +Message MessageListModel::at(int index) const +{ + return d_func()->messageList.at(index); +} + +int MessageListModel::findMessage(int id) +{ + Q_D(MessageListModel); + for (int index = 0; index != d->messageList.count(); index++) + if (d->messageList.at(index).id() == id) + return index; + return -1; +} + + +QVariant MessageListModel::data(const QModelIndex &index, int role) const +{ + Q_D(const MessageListModel); + + int row = index.row(); + auto message = d->messageList.at(row); + switch (role) { + case SubjectRole: + return message.subject(); + break; + case BodyRole: + return fromHtmlEntities(message.body()); + case FromRole: + return QVariant::fromValue(d->client->contact(message.fromId())); + case ToRole: + return QVariant::fromValue(d->client->contact(message.toId())); + case ReadStateRole: + return message.isUnread(); + case DirectionRole: + return message.isIncoming(); + case DateRole: + return message.date(); + case IdRole: + return message.id(); + case AttachmentRole: + return Attachment::toVariantMap(message.attachments()); + case ChatIdRole: + return message.chatId(); + default: + break; + } + return QVariant::Invalid; +} + +int MessageListModel::rowCount(const QModelIndex &) const +{ + return count(); +} + +void MessageListModel::setSortOrder(Qt::SortOrder order) +{ + Q_D(MessageListModel); + if (d->messageComparator.sortOrder != order) { + sort(0, order); + emit sortOrderChanged(order); + } +} + +Qt::SortOrder MessageListModel::sortOrder() const +{ + return d_func()->messageComparator.sortOrder; +} + +void MessageListModel::setClient(Client *client) +{ + Q_D(MessageListModel); + if (d->client != client) { + d->client = client; + emit clientChanged(client); + + if (d->client) { + auto longPoll = d->client.data()->longPoll(); + connect(longPoll, SIGNAL(messageFlagsReplaced(int, int, int)), SLOT(replaceMessageFlags(int, int, int))); + connect(longPoll, SIGNAL(messageFlagsReseted(int,int,int)), SLOT(resetMessageFlags(int,int))); + } + if (client) + client->disconnect(this); + } +} + +Client *MessageListModel::client() const +{ + return d_func()->client.data(); +} + +void MessageListModel::addMessage(const Message &message) +{ + Q_D(MessageListModel); + int index = findMessage(message.id()); + if (index != -1) + return; + + index = lowerBound(d->messageList, message, d->messageComparator); + doInsertMessage(index, message); +} + +void MessageListModel::removeMessage(const Message &message) +{ + Q_D(MessageListModel); + int index = d->messageList.indexOf(message); + if (index == -1) + return; + doRemoveMessage(index); +} + +void MessageListModel::removeMessage(int id) +{ + int index = findMessage(id); + if (index != -1) + doRemoveMessage(index); +} + +void MessageListModel::setMessages(const MessageList &messages) +{ + clear(); + foreach (auto message, messages) { + addMessage(message); + qApp->processEvents(QEventLoop::ExcludeUserInputEvents); + } +} + +void MessageListModel::clear() +{ + Q_D(MessageListModel); + beginRemoveRows(QModelIndex(), 0, d->messageList.count()); + d->messageList.clear(); + endRemoveRows(); +} + +void MessageListModel::doReplaceMessage(int i, const Message &message) +{ + auto index = createIndex(i, 0); + d_func()->messageList[i] = message; + emit dataChanged(index, index); +} + +void MessageListModel::doInsertMessage(int index, const Message &message) +{ + Q_D(MessageListModel); + beginInsertRows(QModelIndex(), index, index); + d->messageList.insert(index, message); + endInsertRows(); +} + +void MessageListModel::doRemoveMessage(int index) +{ + Q_D(MessageListModel); + beginRemoveRows(QModelIndex(), index, index); + d->messageList.removeAt(index); + endRemoveRows(); +} + +void MessageListModel::moveMessage(int sourceIndex, int destinationIndex) +{ + Q_D(MessageListModel); + beginMoveRows(QModelIndex(), sourceIndex, sourceIndex, + QModelIndex(), destinationIndex); + d->messageList.move(sourceIndex, destinationIndex); + endMoveRows(); +} + +void MessageListModel::sort(int column, Qt::SortOrder order) +{ + Q_D(MessageListModel); + Q_UNUSED(column); + d->messageComparator.sortOrder = order; + qStableSort(d->messageList.begin(), d->messageList.end(), d->messageComparator); + emit dataChanged(createIndex(0, 0), createIndex(d->messageList.count(), 0)); +} + +void MessageListModel::replaceMessageFlags(int id, int mask, int userId) +{ + Q_UNUSED(userId); + int index = findMessage(id); + if (index == -1) + return; + + auto message = at(index); + Message::Flags flags = message.flags(); + flags |= static_cast(mask); + message.setFlags(flags); + doReplaceMessage(index, message); +} + +void MessageListModel::resetMessageFlags(int id, int mask, int userId) +{ + Q_UNUSED(userId); + int index = findMessage(id); + if (index == -1) + return; + + auto message = at(index); + auto flags = message.flags(); + flags &= ~mask; + message.setFlags(flags); + doReplaceMessage(index, message); +} + +} //namespace Vreen + +#include "moc_messagemodel.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/messagemodel.h b/3rdparty/vreen/vreen/src/api/messagemodel.h new file mode 100644 index 000000000..21e61a558 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/messagemodel.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef MESSAGEMODEL_H +#define MESSAGEMODEL_H + +#include +#include "message.h" + +namespace Vreen { + +class MessageListModelPrivate; +class VK_SHARED_EXPORT MessageListModel : public QAbstractListModel +{ + Q_OBJECT + Q_DECLARE_PRIVATE(MessageListModel) + Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder NOTIFY sortOrderChanged) + Q_PROPERTY(Vreen::Client* client READ client WRITE setClient NOTIFY clientChanged) +public: + + enum Roles { + SubjectRole = Qt::UserRole + 1, + BodyRole, + FromRole, + ToRole, + ReadStateRole, + DirectionRole, + DateRole, + IdRole, + ChatIdRole, + AttachmentRole + }; + + MessageListModel(QObject *parent = 0); + virtual ~MessageListModel(); + int count() const; + Message at(int index) const; + int findMessage(int id); + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + virtual int rowCount(const QModelIndex &parent) const; + void setSortOrder(Qt::SortOrder order); + Qt::SortOrder sortOrder() const; + void setClient(Client *client); + Client *client() const; +signals: + void sortOrderChanged(Qt::SortOrder order); + void clientChanged(Vreen::Client*); +public slots: + void addMessage(const Vreen::Message &message); + void removeMessage(const Vreen::Message &message); + void removeMessage(int id); + void setMessages(const Vreen::MessageList &messages); + void clear(); +protected: + virtual void doReplaceMessage(int index, const::Vreen::Message &message); + virtual void doInsertMessage(int index, const::Vreen::Message &message); + virtual void doRemoveMessage(int index); + void moveMessage(int sourceIndex, int destinationIndex); + virtual void sort(int column, Qt::SortOrder order); +protected slots: + void replaceMessageFlags(int id, int mask, int userId = 0); + void resetMessageFlags(int id, int mask, int userId = 0); +private: + QScopedPointer d_ptr; +}; + +} //namespace Vreen + +#endif // MESSAGEMODEL_H + diff --git a/3rdparty/vreen/vreen/src/api/messagesession.cpp b/3rdparty/vreen/vreen/src/api/messagesession.cpp new file mode 100644 index 000000000..44bb5a2ef --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/messagesession.cpp @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "messagesession_p.h" +#include "client.h" +#include "utils_p.h" + +namespace Vreen { + +MessageSession::MessageSession(MessageSessionPrivate *data) : + QObject(data->client), + d_ptr(data) +{ +} +MessageSession::~MessageSession() +{ +} + +Client *MessageSession::client() const +{ + return d_func()->client; +} + +int MessageSession::uid() const +{ + return d_func()->uid; +} + +QString MessageSession::title() const +{ + return d_func()->title; +} + +void MessageSession::setTitle(const QString &title) +{ + Q_D(MessageSession); + if (d->title != title) { + d->title = title; + emit titleChanged(title); + } +} + +ReplyBase *MessageSession::getHistory(int count, int offset) +{ + auto reply = doGetHistory(count, offset); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_history_received(QVariant))); + return reply; +} + +SendMessageReply *MessageSession::sendMessage(const QString &body, const QString &subject) +{ + Q_D(MessageSession); + Message msg(d->client); + msg.setToId(d->uid); + msg.setBody(body); + msg.setSubject(subject); + return sendMessage(msg); +} + +SendMessageReply *MessageSession::sendMessage(const Message &message) +{ + return doSendMessage(message); +} + +Reply *MessageSession::markMessagesAsRead(IdList ids, bool set) +{ + Q_D(MessageSession); + QString request = set ? "messages.markAsRead" + : "messages.markAsNew"; + QVariantMap args; + args.insert("mids", join(ids)); + auto reply = d->client->request(request, args); + reply->setProperty("mids", qVariantFromValue(ids)); + reply->setProperty("set", set); + return reply; +} + +void MessageSessionPrivate::_q_history_received(const QVariant &) +{ + Q_Q(MessageSession); + auto reply = static_cast*>(q->sender()); + foreach (auto message, reply->result()) + emit q->messageAdded(message); +} + +} // namespace Vreen + +#include "moc_messagesession.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/messagesession.h b/3rdparty/vreen/vreen/src/api/messagesession.h new file mode 100644 index 000000000..81428f8da --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/messagesession.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_MESSAGESESSION_H +#define VK_MESSAGESESSION_H + +#include +#include "message.h" +#include "client.h" + +namespace Vreen { + +class Message; +class Client; +class MessageSessionPrivate; + +class VK_SHARED_EXPORT MessageSession : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(MessageSession) + + Q_PROPERTY(int uid READ uid CONSTANT) + Q_PROPERTY(Client* client READ client CONSTANT) + Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged) +public: + explicit MessageSession(MessageSessionPrivate *data); + virtual ~MessageSession(); + Client *client() const; + int uid() const; + QString title() const; +public slots: + ReplyBase *getHistory(int count = 16, int offset = 0); + SendMessageReply *sendMessage(const QString &body, const QString &subject = QString()); + SendMessageReply *sendMessage(const Message &message); + Reply *markMessagesAsRead(IdList ids, bool set = true); + void setTitle(const QString &title); +signals: + void messageAdded(const Vreen::Message &message); + void messageDeleted(int id); + void messageReadStateChanged(int mid, bool isRead); + void titleChanged(const QString &title); +protected: + virtual SendMessageReply *doSendMessage(const Vreen::Message &message) = 0; + virtual ReplyBase *doGetHistory(int count, int offset) = 0; + QScopedPointer d_ptr; +private: + Q_PRIVATE_SLOT(d_func(), void _q_history_received(const QVariant &)) +}; + +} // namespace Vreen + +#endif // VK_MESSAGESESSION_H + diff --git a/3rdparty/vreen/vreen/src/api/messagesession_p.h b/3rdparty/vreen/vreen/src/api/messagesession_p.h new file mode 100644 index 000000000..f48d57565 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/messagesession_p.h @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef MESSAGESESSION_P_H +#define MESSAGESESSION_P_H +#include "messagesession.h" +#include "longpoll.h" + +namespace Vreen { + +class MessageSession; +class MessageSessionPrivate +{ + Q_DECLARE_PUBLIC(MessageSession) +public: + MessageSessionPrivate(MessageSession *q, Client *client, int uid) : + q_ptr(q), client(client), uid(uid) {} + MessageSession *q_ptr; + Client *client; + int uid; + QString title; + + void _q_history_received(const QVariant &); +}; + +} //namespace Vreen + +#endif // MESSAGESESSION_P_H + diff --git a/3rdparty/vreen/vreen/src/api/newsfeed.cpp b/3rdparty/vreen/vreen/src/api/newsfeed.cpp new file mode 100644 index 000000000..6b893d774 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/newsfeed.cpp @@ -0,0 +1,148 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "newsfeed.h" +#include "utils.h" +#include "client.h" +#include "roster.h" +#include "groupmanager.h" +#include + +namespace Vreen { + +static const char *filters_str[] = { + "post", + "photo", + "photo_tag", + "friend", + "note" +}; + +class NewsFeed; +class NewsFeedPrivate +{ + Q_DECLARE_PUBLIC(NewsFeed) +public: + NewsFeedPrivate(NewsFeed *q, Client *client) : q_ptr(q), client(client) {} + NewsFeed *q_ptr; + Client *client; + + void updateProfiles(const QVariantList &profiles) + { + foreach (auto item, profiles) { + auto map = item.toMap(); + int uid = map.value("uid").toInt(); + + if (uid > 0) { + auto roster = client->roster(); + auto buddy = roster->buddy(uid); + Contact::fill(buddy, map); + } else { + auto manager = client->groupManager(); + auto group = manager->group(-uid); + Contact::fill(group, map); + } + } + } + + void updateGroups(const QVariantList &groups) + { + foreach (auto item, groups) { + auto map = item.toMap(); + auto manager = client->groupManager(); + int gid = -map.value("gid").toInt(); + auto contact = manager->group(gid); + Contact::fill(contact, map); + } + } + + void _q_news_received(const QVariant &response) + { + Q_Q(NewsFeed); + auto map = response.toMap(); + updateProfiles(map.value("profiles").toList()); + updateGroups(map.value("groups").toList()); + + auto items = map.value("items").toList(); + NewsItemList news; + foreach (auto item, items) { + auto newsItem = NewsItem::fromData(item); + auto map = item.toMap(); + auto itemCount = strCount(filters_str); + for (size_t i = 0; i != itemCount; i++) { + auto list = map.value(filters_str[i]).toList(); + if (list.count()) { + auto count = list.takeFirst().toInt(); + Q_UNUSED(count); + newsItem.setAttachments(Attachment::fromVariantList(list)); + break; + } + } + news.append(newsItem); + } + emit q->newsReceived(news); + } +}; + +/*! + * \brief The NewsFeed class + * Api reference: \link http://vk.com/developers.php?oid=-1&p=Расширенные_методы_API + */ + +/*! + * \brief NewsFeed::NewsFeed + * \param client + */ +NewsFeed::NewsFeed(Client *client) : + QObject(client), + d_ptr(new NewsFeedPrivate(this, client)) +{ + +} + +NewsFeed::~NewsFeed() +{ + +} + +/*! + * \brief NewsFeed::getNews API reference is \link http://vk.com/developers.php?oid=-1&p=newsfeed.get + * \return + */ +Reply *NewsFeed::getNews(Filters filters, quint8 count, int offset) +{ + QVariantMap args; + args.insert("count", count); + args.insert("filters", flagsToStrList(filters, filters_str).join(",")); + args.insert("offset", offset); + + auto reply = d_func()->client->request("newsfeed.get", args); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_news_received(QVariant))); + return reply; +} + +} //namespace Vreen + +#include "moc_newsfeed.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/newsfeed.h b/3rdparty/vreen/vreen/src/api/newsfeed.h new file mode 100644 index 000000000..008b0e4ab --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/newsfeed.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef NEWSFEED_H +#define NEWSFEED_H +#include +#include "newsitem.h" +#include + +namespace Vreen { + +class NewsFeedPrivate; +class Client; +class Reply; + +class VK_SHARED_EXPORT NewsFeed : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(NewsFeed) + Q_ENUMS(Filter) +public: + + enum Filter { + FilterNone = 0, + FilterPost = 0x01, + FilterPhoto = 0x02, + FilterPhotoTag = 0x04, + FilterFriend = 0x08, + FilterNote = 0x10 + }; + Q_DECLARE_FLAGS(Filters, Filter) + + NewsFeed(Client *client); + virtual ~NewsFeed(); +public slots: + Reply *getNews(Filters filters = FilterNone, quint8 count = 25, int offset = 0); +signals: + void newsReceived(const Vreen::NewsItemList &list); +private: + QScopedPointer d_ptr; + + Q_PRIVATE_SLOT(d_func(), void _q_news_received(QVariant)) +}; + +} //namespace Vreen + +Q_DECLARE_OPERATORS_FOR_FLAGS(Vreen::NewsFeed::Filters) + +#endif // NEWSFEED_H + diff --git a/3rdparty/vreen/vreen/src/api/newsitem.cpp b/3rdparty/vreen/vreen/src/api/newsitem.cpp new file mode 100644 index 000000000..cca110233 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/newsitem.cpp @@ -0,0 +1,234 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licees/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "newsitem.h" +#include "utils.h" +#include "utils_p.h" +#include +#include +#include + +namespace Vreen { + +class NewsItemData : public QSharedData { +public: + NewsItemData() : QSharedData() {} + NewsItemData(const NewsItemData &o) : QSharedData(o), + body(o.body), + data(o.data), + likes(o.likes), + reposts(o.reposts), + attachmentHash(o.attachmentHash) + {} + + QString body; + + QVariantMap data; + QVariantMap likes; + QVariantMap reposts; + Attachment::Hash attachmentHash; +}; + +QDataStream &operator <<(QDataStream &out, const NewsItem &item) +{ + auto &d = item.d; + return out << d->body + << d->data + << d->likes + << d->reposts + << d->attachmentHash.values(); +} + +QDataStream &operator >>(QDataStream &out, NewsItem &item) +{ + auto &d = item.d; + Attachment::List list; + out >> d->body + >> d->data + >> d->likes + >> d->reposts + >> list; + d->attachmentHash = Attachment::toHash(list); + return out; +} + +const static QStringList types = QStringList() + << "post" + << "photo" + << "photo_tag" + << "friend" + << "note"; + +/*! + * \brief The NewsItem class + * Api reference: \link http://vk.com/developers.php?oid=-1&p=newsfeed.get + */ + +/*! + * \brief NewsItem::NewsItem + */ + +NewsItem::NewsItem() : d(new NewsItemData) +{ +} + +NewsItem::NewsItem(const QVariantMap &data) : d(new NewsItemData) +{ + setData(data); +} + +NewsItem::NewsItem(const NewsItem &rhs) : d(rhs.d) +{ +} + +NewsItem &NewsItem::operator=(const NewsItem &rhs) +{ + if (this != &rhs) + d.operator=(rhs.d); + return *this; +} + +NewsItem::~NewsItem() +{ +} + +NewsItem NewsItem::fromData(const QVariant &data) +{ + return NewsItem(data.toMap()); +} + +void NewsItem::setData(const QVariantMap &data) +{ + d->data = data; + d->body = fromHtmlEntities(d->data.take("text").toString()); + d->likes = d->data.take("likes").toMap(); + d->reposts = d->data.take("reposts").toMap(); + auto attachmentList = Attachment::fromVariantList(d->data.take("attachments").toList()); + setAttachments(attachmentList); + +} + +Attachment::Hash NewsItem::attachments() const +{ + return d->attachmentHash; +} + +Attachment::List NewsItem::attachments(Attachment::Type type) const +{ + return d->attachmentHash.values(type); +} + +void NewsItem::setAttachments(const Attachment::List &attachmentList) +{ + d->attachmentHash = Attachment::toHash(attachmentList); +} + +NewsItem::Type NewsItem::type() const +{ + return static_cast(types.indexOf(d->data.value("type").toString())); +} + +void NewsItem::setType(NewsItem::Type type) +{ + d->data.insert("type", types.value(type)); +} + +int NewsItem::postId() const +{ + return d->data.value("post_id").toInt(); +} + +void NewsItem::setPostId(int postId) +{ + d->data.insert("post_id", postId); +} + +int NewsItem::sourceId() const +{ + return d->data.value("source_id").toInt(); +} + +void NewsItem::setSourceId(int sourceId) +{ + d->data.insert("source_id", sourceId); +} + +QString NewsItem::body() const +{ + return d->body; +} + +void NewsItem::setBody(const QString &body) +{ + d->body = body; +} + +QDateTime NewsItem::date() const +{ + return QDateTime::fromTime_t(d->data.value("date").toInt()); +} + +void NewsItem::setDate(const QDateTime &date) +{ + d->data.insert("date", date.toTime_t()); +} + +QVariant NewsItem::property(const QString &name, const QVariant &def) const +{ + return d->data.value(name, def); +} + +QStringList NewsItem::dynamicPropertyNames() const +{ + return d->data.keys(); +} + +void NewsItem::setProperty(const QString &name, const QVariant &value) +{ + d->data.insert(name, value); +} + +QVariantMap NewsItem::likes() const +{ + return d->likes; +} + +void NewsItem::setLikes(const QVariantMap &likes) +{ + d->likes = likes; +} + +QVariantMap NewsItem::reposts() const +{ + return d->reposts; +} + +void NewsItem::setReposts(const QVariantMap &reposts) +{ + d->reposts = reposts; +} + +} // namespace Vreen + +#include "moc_newsitem.cpp" diff --git a/3rdparty/vreen/vreen/src/api/newsitem.h b/3rdparty/vreen/vreen/src/api/newsitem.h new file mode 100644 index 000000000..ac027774f --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/newsitem.h @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_NEWSITEM_H +#define VK_NEWSITEM_H + +#include +#include +#include "attachment.h" + +namespace Vreen { + +class NewsItemData; + +class VK_SHARED_EXPORT NewsItem +{ + Q_GADGET + Q_ENUMS(Type) +public: + + enum Type { + Post, + Photo, + PhotoTag, + Note, + Invalid = -1 + }; + + NewsItem(); + NewsItem(const NewsItem &); + NewsItem &operator=(const NewsItem &); + ~NewsItem(); + + static NewsItem fromData(const QVariant &data); + + Attachment::Hash attachments() const; + Attachment::List attachments(Attachment::Type type) const; + void setAttachments(const Attachment::List &attachmentList); + Type type() const; + void setType(Type type); + int postId() const; + void setPostId(int postId); + int sourceId() const; + void setSourceId(int sourceId); + QString body() const; + void setBody(const QString &body); + QDateTime date() const; + void setDate(const QDateTime &date); + QVariantMap likes() const; + void setLikes(const QVariantMap &likes); + QVariantMap reposts() const; + void setReposts(const QVariantMap &reposts); + + QVariant property(const QString &name, const QVariant &def = QVariant()) const; + template + T property(const char *name, const T &def) const + { return QVariant::fromValue(property(name, QVariant::fromValue(def))); } + void setProperty(const QString &name, const QVariant &value); + QStringList dynamicPropertyNames() const; + + VK_SHARED_EXPORT friend QDataStream &operator <<(QDataStream &out, const Vreen::NewsItem &item); + VK_SHARED_EXPORT friend QDataStream &operator >>(QDataStream &out, Vreen::NewsItem &item); +protected: + NewsItem(const QVariantMap &data); + void setData(const QVariantMap &data); +private: + QSharedDataPointer d; +}; +typedef QList NewsItemList; + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::NewsItem) +Q_DECLARE_METATYPE(Vreen::NewsItemList) + +#endif // VK_NEWSITEM_H + diff --git a/3rdparty/vreen/vreen/src/api/pollitem.cpp b/3rdparty/vreen/vreen/src/api/pollitem.cpp new file mode 100644 index 000000000..4fc0d8bf9 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/pollitem.cpp @@ -0,0 +1,149 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licees/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "pollitem.h" +#include +#include + +namespace Vreen { + +template<> +PollItem Attachment::to(const Attachment &data) +{ + PollItem item; + item.setPollId(data.property("poll_id").toInt()); + item.setQuestion(data.property("question").toString()); + return item; +} + +class PollItemData : public QSharedData { +public: + PollItemData() : + ownerId(0), pollId(0), votes(0), answerId(0) {} + PollItemData(const PollItemData &o) : QSharedData(o), + ownerId(o.ownerId), pollId(o.pollId), created(o.created), + question(o.question), votes(o.votes), answerId(o.answerId), + answers(o.answers) + {} + + int ownerId; + int pollId; + QDateTime created; + QString question; + int votes; + int answerId; + PollItem::AnswerList answers; +}; + +PollItem::PollItem(int pollId) : data(new PollItemData) +{ + data->pollId = pollId; +} + +PollItem::PollItem(const PollItem &rhs) : data(rhs.data) +{ +} + +PollItem &PollItem::operator=(const PollItem &rhs) +{ + if (this != &rhs) + data.operator=(rhs.data); + return *this; +} + +PollItem::~PollItem() +{ +} + +int PollItem::ownerId() const +{ + return data->ownerId; +} + +void PollItem::setOwnerId(int ownerId) +{ + data->ownerId = ownerId; +} + +int PollItem::pollId() const +{ + return data->pollId; +} + +void PollItem::setPollId(int pollId) +{ + data->pollId = pollId; +} + +QDateTime PollItem::created() const +{ + return data->created; +} + +void PollItem::setCreated(const QDateTime &created) +{ + data->created = created; +} + +QString PollItem::question() const +{ + return data->question; +} + +void PollItem::setQuestion(const QString &question) +{ + data->question = question; +} + +int PollItem::votes() const +{ + return data->votes; +} + +void PollItem::setVotes(int votes) +{ + data->votes = votes; +} + +int PollItem::answerId() const +{ + return data->answerId; +} + +void PollItem::setAnswerId(int answerId) +{ + data->answerId = answerId; +} + +PollItem::AnswerList PollItem::answers() const +{ + return data->answers; +} + +void PollItem::setAnswers(const PollItem::AnswerList &answers) +{ + data->answers = answers; +} + +} //namespace Vreen diff --git a/3rdparty/vreen/vreen/src/api/pollitem.h b/3rdparty/vreen/vreen/src/api/pollitem.h new file mode 100644 index 000000000..0317ad065 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/pollitem.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licees/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef POLLITEM_H +#define POLLITEM_H + +#include +#include +#include "attachment.h" + +namespace Vreen { + +class PollItemData; + +class VK_SHARED_EXPORT PollItem +{ +public: + struct Answer { + int id; + QString text; + int votes; + qreal rate; + }; + typedef QList AnswerList; + + PollItem(int pollId = 0); + PollItem(const PollItem &); + PollItem &operator=(const PollItem &); + ~PollItem(); + + int ownerId() const; + void setOwnerId(int ownerId); + int pollId() const; + void setPollId(int pollId); + QDateTime created() const; + void setCreated(const QDateTime &created); + QString question() const; + void setQuestion(const QString &question); + int votes() const; + void setVotes(int votes); + int answerId() const; + void setAnswerId(int answerId); + AnswerList answers() const; + void setAnswers(const AnswerList &answers); +private: + QSharedDataPointer data; +}; + +template<> +PollItem Attachment::to(const Attachment &data); + +} //namespace Vreen + +Q_DECLARE_METATYPE(Vreen::PollItem) + +#endif // POLLITEM_H diff --git a/3rdparty/vreen/vreen/src/api/pollprovider.cpp b/3rdparty/vreen/vreen/src/api/pollprovider.cpp new file mode 100644 index 000000000..c0f7ccf32 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/pollprovider.cpp @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licees/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include +#include "client.h" +#include "pollprovider.h" +#include "pollitem.h" + +namespace Vreen { + +class PollProvider; +class PollProviderPrivate +{ + Q_DECLARE_PUBLIC(PollProvider) +public: + PollProviderPrivate(PollProvider *q, Client *client) : q_ptr(q), client(client) {} + PollProvider *q_ptr; + Client *client; + + static QVariant handlePoll(const QVariant& response) { + auto map = response.toMap(); + PollItem poll; + poll.setOwnerId(map.value("owner_id").toInt()); + poll.setPollId(map.value("poll_id").toInt()); + poll.setCreated(map.value("created").toDateTime()); + poll.setQuestion(map.value("question").toString()); + poll.setVotes(map.value("votes").toInt()); + poll.setAnswerId(map.value("answer_id").toInt()); + + PollItem::AnswerList answerList; + auto answers = map.value("answers").toList(); + foreach (auto item, answers) { + auto map = item.toMap(); + PollItem::Answer answer; + answer.id = map.value("id").toInt(); + answer.text = map.value("text").toString(); + answer.votes = map.value("votes").toInt(); + answer.rate = map.value("rate").toReal(); + answerList.append(answer); + } + poll.setAnswers(answerList); + + return QVariant::fromValue(poll); + } + +}; + +PollProvider::PollProvider(Client *client) : + QObject(client), + d_ptr(new PollProviderPrivate(this, client)) +{ +} + +PollProvider::~PollProvider() +{ +} + +PollItemReply *PollProvider::getPollById(int ownerId, int pollId) +{ + Q_D(PollProvider); + QVariantMap args; + args.insert("owner_id", ownerId); + args.insert("poll_id", pollId); + + auto reply = d->client->request("polls.getById", args, PollProviderPrivate::handlePoll); + return reply; +} + +Reply *PollProvider::addVote(int pollId, int answerId, int ownerId) +{ + Q_D(PollProvider); + QVariantMap args; + args.insert("poll_id", pollId); + args.insert("answer_id", answerId); + if (ownerId) + args.insert("owner_id", ownerId); + + auto reply = d->client->request("polls.addVote", args); + return reply; +} + +Reply *PollProvider::deleteVote(int pollId, int answerId, int ownerId) +{ + Q_D(PollProvider); + QVariantMap args; + args.insert("poll_id", pollId); + args.insert("answer_id", answerId); + if (ownerId) + args.insert("owner_id", ownerId); + + auto reply = d->client->request("polls.deleteVote", args); + return reply; +} + +} // namespace Vreen diff --git a/3rdparty/vreen/vreen/src/api/pollprovider.h b/3rdparty/vreen/vreen/src/api/pollprovider.h new file mode 100644 index 000000000..8296ac62f --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/pollprovider.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licees/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VREEN_POLLPROVIDER_H +#define VREEN_POLLPROVIDER_H + +#include "pollitem.h" +#include "reply.h" + +namespace Vreen { + +class Client; +typedef ReplyBase PollItemReply; + +class PollProviderPrivate; +class VK_SHARED_EXPORT PollProvider : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(PollProvider) +public: + explicit PollProvider(Client *client); + ~PollProvider(); + + PollItemReply *getPollById(int ownerId, int pollId); + Reply *addVote(int pollId, int answerId, int ownerId = 0); + Reply *deleteVote(int pollId, int answerId, int ownerId = 0); +protected: + QScopedPointer d_ptr; +}; + +} // namespace Vreen + +#endif // VREEN_POLLPROVIDER_H diff --git a/3rdparty/vreen/vreen/src/api/reply.cpp b/3rdparty/vreen/vreen/src/api/reply.cpp new file mode 100644 index 000000000..acaf54b04 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/reply.cpp @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "reply_p.h" +#include +#include "client.h" +#include "message.h" + +namespace Vreen { + +Reply::Reply(QNetworkReply *reply) : + QObject(reply), + d_ptr(new ReplyPrivate(this)) +{ + setReply(reply); + + //qDebug() << "--Send reply:" << reply->url(); +} + +Reply::~Reply() +{ + //FIXME maybee it's never been used + if (auto networkReply = d_func()->networkReply.data()) + networkReply->deleteLater(); +} + +QNetworkReply *Reply::networkReply() const +{ + return d_func()->networkReply.data(); +} + +QVariant Reply::response() const +{ + return d_func()->response; +} + +QVariant Reply::error() const +{ + return d_func()->error; +} + +QVariant Reply::result() const +{ + Q_D(const Reply); + return d->result; +} + +void Reply::setReply(QNetworkReply *reply) +{ + Q_D(Reply); + if (!d->networkReply.isNull()) + d->networkReply.data()->deleteLater(); + d->networkReply = reply; + setParent(reply); + + connect(reply, SIGNAL(finished()), SLOT(_q_reply_finished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(_q_network_reply_error(QNetworkReply::NetworkError))); +} + +void Reply::setHandlerImpl(Reply::ResultHandlerBase *handler) +{ + Q_D(Reply); + d->resultHandler.reset(handler); +} + +void ReplyPrivate::_q_reply_finished() +{ + Q_Q(Reply); + auto reply = static_cast(q->sender()); + QVariantMap map = JSON::parse(reply->readAll()).toMap(); + //TODO error and captcha handler + + //qDebug() << "--Reply finished: " << reply->url().encodedPath(); + + response = map.value("response"); + if (!response.isNull()) { + if (resultHandler) + result = resultHandler->handle(response); + emit q->resultReady(response); + return; + } else { + error = map.value("error"); + int errorCode = error.toMap().value("error_code").toInt(); + if (errorCode) { + emit q->error(errorCode); + emit q->resultReady(response); //emit blank response to mark reply as finished + return; + } + } + if (!map.isEmpty()) { + response = map; + emit q->resultReady(response); + } +} + +void ReplyPrivate::_q_network_reply_error(QNetworkReply::NetworkError code) +{ + Q_Q(Reply); + error = code; + emit q->error(Client::ErrorNetworkReply); + emit q->resultReady(response); +} + + +QVariant MessageListHandler::operator()(const QVariant &response) +{ + MessageList msgList; + auto list = response.toList(); + if (list.count()) { + list.removeFirst(); //remove count + msgList = Message::fromVariantList(list, clientId); + } + return QVariant::fromValue(msgList); +} + +} // namespace Vreen + +#include "moc_reply.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/reply.h b/3rdparty/vreen/vreen/src/api/reply.h new file mode 100644 index 000000000..09b75c8dd --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/reply.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_REPLY_H +#define VK_REPLY_H + +#include +#include +#include "vk_global.h" +#include + +class QNetworkReply; +namespace Vreen { + +class ReplyPrivate; +class VK_SHARED_EXPORT Reply : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(Reply) +public: + + class ResultHandlerBase + { + public: + virtual ~ResultHandlerBase() {} + virtual QVariant handle(const QVariant &data) = 0; + }; + + template + class ResultHandlerImpl : public ResultHandlerBase + { + public: + ResultHandlerImpl(Method method) : m_method(method) {} + QVariant handle(const QVariant &data) + { + return m_method(data); + } + private: + Method m_method; + }; + + virtual ~Reply(); + QNetworkReply *networkReply() const; + QVariant response() const; + Q_INVOKABLE QVariant error() const; + QVariant result() const; + + template + void setResultHandler(const Method &handler); +signals: + void resultReady(const QVariant &variables); + void error(int code); +protected: + explicit Reply(QNetworkReply *networkReply = 0); + void setReply(QNetworkReply *networkReply); + + QScopedPointer d_ptr; + + friend class Client; +private: + void setHandlerImpl(ResultHandlerBase *handler); + + Q_PRIVATE_SLOT(d_func(), void _q_reply_finished()) + Q_PRIVATE_SLOT(d_func(), void _q_network_reply_error(QNetworkReply::NetworkError)) +}; + + +template +void Reply::setResultHandler(const Method &handler) +{ + setHandlerImpl(new ResultHandlerImpl(handler)); +} + +template +class ReplyBase : public Reply +{ +public: + T result() const { return qvariant_cast(Reply::result()); } +protected: + template + explicit ReplyBase(Method handler, QNetworkReply *networkReply = 0) : + Reply(networkReply) + { + setResultHandler(handler); + } + friend class Client; +}; + +//some useful typedefs +typedef ReplyBase IntReply; + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::Reply*) + +#endif // VK_REPLY_H + diff --git a/3rdparty/vreen/vreen/src/api/reply_p.h b/3rdparty/vreen/vreen/src/api/reply_p.h new file mode 100644 index 000000000..4fd1809f8 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/reply_p.h @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef REPLY_P_H +#define REPLY_P_H +#include "reply.h" +#include "json.h" +#include "reply.h" +#include "QNetworkReply" +#include +#include +#include + +namespace Vreen { + +class ReplyPrivate +{ + Q_DECLARE_PUBLIC(Reply) +public: + ReplyPrivate(Reply *q) : q_ptr(q), resultHandler(0) {} + Reply *q_ptr; + + QPointer networkReply; + QVariant response; + QVariant error; + QScopedPointer resultHandler; + QVariant result; + + void _q_reply_finished(); + void _q_network_reply_error(QNetworkReply::NetworkError); + + static QVariant handleInt(const QVariant &response) { return response.toInt(); } +}; + + +struct MessageListHandler { + MessageListHandler(int clientId) : clientId(clientId) {} + QVariant operator()(const QVariant &response); + + int clientId; +}; + +} //namespace Vreen + +#endif // REPLY_P_H + diff --git a/3rdparty/vreen/vreen/src/api/roster.cpp b/3rdparty/vreen/vreen/src/api/roster.cpp new file mode 100644 index 000000000..c355d95b1 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/roster.cpp @@ -0,0 +1,346 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "roster_p.h" +#include "longpoll.h" +#include "utils_p.h" + +#include +#include + +namespace Vreen { + +/*! + * \brief The Roster class + * Api reference: \link http://vk.com/developers.php?oid=-1&p=friends.get + */ + +/*! + * \brief Roster::Roster + * \param client + */ +Roster::Roster(Client *client, int uid) : + QObject(client), + d_ptr(new RosterPrivate(this, client)) +{ + Q_D(Roster); + connect(d->client->longPoll(), SIGNAL(contactStatusChanged(int, Vreen::Contact::Status)), + this, SLOT(_q_status_changed(int, Vreen::Contact::Status))); + connect(d->client, SIGNAL(onlineStateChanged(bool)), SLOT(_q_online_changed(bool))); + if (uid) + setUid(uid); +} + +Roster::~Roster() +{ + +} + +void Roster::setUid(int uid) +{ + Q_D(Roster); + if (uid) { + if (d->owner) { + if (uid == d->owner->id()) + return; + else + qDeleteAll(d->buddyHash); + } + d->owner = buddy(uid); + emit uidChanged(uid); + } else { + qDeleteAll(d->buddyHash); + emit uidChanged(uid); + } +} + +int Roster::uid() const +{ + Q_D(const Roster); + if (d->owner) + return d->owner->id(); + return 0; +} + +Buddy *Roster::owner() const +{ + return d_func()->owner; +} + +Buddy *Roster::buddy(int id) +{ + Q_D(Roster); + if (!id) { + qWarning("Contact id cannot be null!"); + return 0; + } + if (id < 0) { + id = qAbs(id); + qWarning("For groups use class GroupManager"); + } + + + auto buddy = d->buddyHash.value(id); + if (!buddy) { + if (d->owner && d->owner->id() == id) + return d->owner; + buddy = new Buddy(id, d->client); + d->addBuddy(buddy); + } + return buddy; +} + +Buddy *Roster::buddy(int id) const +{ + return d_func()->buddyHash.value(id); +} + +BuddyList Roster::buddies() const +{ + return d_func()->buddyHash.values(); +} + +QMap Roster::tags() const +{ + return d_func()->tags; +} + +void Roster::setTags(const QMap &tags) +{ + d_func()->tags = tags; + emit tagsChanged(tags); +} + +/*! + * \brief Roster::getDialogs + * \param offset + * \param count + * \param previewLength + * \return + */ +Reply *Roster::getDialogs(int offset, int count, int previewLength) +{ + QVariantMap args; + args.insert("count", count); + args.insert("offset", offset); + if (previewLength != -1) + args.insert("preview_length", previewLength); + return d_func()->client->request("messages.getDialogs", args); +} + +/*! + * \brief Roster::getMessages + * \param offset + * \param count + * \param filter + * \return + */ +Reply *Roster::getMessages(int offset, int count, Message::Filter filter) +{ + QVariantMap args; + args.insert("count", count); + args.insert("offset", offset); + args.insert("filter", filter); + return d_func()->client->request("messages.get", args); +} + +void Roster::sync(const QStringList &fields) +{ + Q_D(Roster); + //TODO rewrite with method chains with lambdas in Qt5 + QVariantMap args; + args.insert("fields", fields.join(",")); + args.insert("order", "hints"); + + d->getTags(); + d->getFriends(args); +} + +/*! + * \brief Roster::update + * \param ids + * \param fields from \link http://vk.com/developers.php?oid=-1&p=Описание_полей_параметра_fields + */ +Reply *Roster::update(const IdList &ids, const QStringList &fields) +{ + Q_D(Roster); + QVariantMap args; + args.insert("uids", join(ids)); + args.insert("fields", fields.join(",")); + auto reply = d->client->request("users.get", args); + reply->connect(reply, SIGNAL(resultReady(const QVariant&)), + this, SLOT(_q_friends_received(const QVariant&))); + return reply; +} + +Reply *Roster::update(const BuddyList &buddies, const QStringList &fields) +{ + IdList ids; + foreach (auto buddy, buddies) + ids.append(buddy->id()); + return update(ids, fields); +} + +ReplyBase *Roster::getFriendRequests(int count, int offset, FriendRequestFlags flags) +{ + Q_D(Roster); + QVariantMap args; + args.insert("count", count); + args.insert("offset", offset); + if (flags & NeedMutualFriends) + args.insert("need_mutual", true); + if (flags & NeedMessages) + args.insert("need_messages", true); + if (flags & GetOutRequests) + args.insert("out", 1); + auto reply = d->client->request>("friends.getRequests", + args, + RosterPrivate::handleGetRequests); + return reply; +} + +void RosterPrivate::getTags() +{ + Q_Q(Roster); + auto reply = client->request("friends.getLists"); + reply->connect(reply, SIGNAL(resultReady(const QVariant&)), + q, SLOT(_q_tags_received(const QVariant&))); +} + +void RosterPrivate::getOnline() +{ +} + +void RosterPrivate::getFriends(const QVariantMap &args) +{ + Q_Q(Roster); + auto reply = client->request("friends.get", args); + reply->setProperty("friend", true); + reply->setProperty("sync", true); + reply->connect(reply, SIGNAL(resultReady(const QVariant&)), + q, SLOT(_q_friends_received(const QVariant&))); +} + +void RosterPrivate::addBuddy(Buddy *buddy) +{ + Q_Q(Roster); + if (!buddy->isFriend()) { + IdList ids; + ids.append(buddy->id()); + //q->update(ids, QStringList() << VK_COMMON_FIELDS); //TODO move! + } + buddyHash.insert(buddy->id(), buddy); + emit q->buddyAdded(buddy); +} + +void RosterPrivate::appendToUpdaterQueue(Buddy *contact) +{ + if (!updaterQueue.contains(contact->id())) + updaterQueue.append(contact->id()); + if (!updaterTimer.isActive()) + updaterTimer.start(); +} + +QVariant RosterPrivate::handleGetRequests(const QVariant &response) +{ + FriendRequestList list; + foreach (auto item, response.toList()) { + QVariantMap map = item.toMap(); + FriendRequest request(map.value("uid").toInt()); + + request.setMessage(map.value("message").toString()); + IdList ids; + QVariantMap mutuals = map.value("mutual").toMap(); + foreach (auto user, mutuals.value("users").toList()) + ids.append(user.toInt()); + request.setMutualFriends(ids); + list.append(request); + } + return QVariant::fromValue(list); +} + +void RosterPrivate::_q_tags_received(const QVariant &response) +{ + Q_Q(Roster); + auto list = response.toList(); + QMap tags; + foreach (auto item, list) { + tags.insert(item.toMap().value("lid").toInt(),item.toMap().value("name").toString()); + } + q->setTags(tags); +} + +void RosterPrivate::_q_friends_received(const QVariant &response) +{ + Q_Q(Roster); + bool isFriend = q->sender()->property("friend").toBool(); + bool isSync = q->sender()->property("sync").toBool(); + auto list = response.toList(); + foreach (auto data, list) { + auto map = data.toMap(); + int id = map.value("uid").toInt(); + auto buddy = buddyHash.value(id); + if (!buddy) { + buddy = new Buddy(id, client); + Contact::fill(buddy, map); + buddy->setIsFriend(isFriend); + buddyHash[id] = buddy; + if (!isSync) + emit q->buddyAdded(buddy); + } else { + buddy->setIsFriend(isFriend); + Contact::fill(buddy, map); + if (!isSync) + emit q->buddyUpdated(buddy); + } + } + emit q->syncFinished(true); +} + +void RosterPrivate::_q_status_changed(int userId, Buddy::Status status) +{ + Q_Q(Roster); + auto buddy = q->buddy(userId); + buddy->setStatus(status); +} + +void RosterPrivate::_q_online_changed(bool set) +{ + if (!set) + foreach(auto buddy, buddyHash) + buddy->setOnline(false); +} + +void RosterPrivate::_q_updater_handle() +{ + Q_Q(Roster); + q->update(updaterQueue); + updaterQueue.clear(); +} + + +} // namespace Vreen + +#include "moc_roster.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/roster.h b/3rdparty/vreen/vreen/src/api/roster.h new file mode 100644 index 000000000..b7bf886cb --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/roster.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_ROSTER_H +#define VK_ROSTER_H + +#include "contact.h" +#include "message.h" +#include "reply.h" +#include "friendrequest.h" +#include +#include + +namespace Vreen { +class Client; + +class RosterPrivate; +class VK_SHARED_EXPORT Roster : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(Roster) + Q_FLAGS(FriendRequestFlags) +public: + + enum NameCase { + NomCase, + GenCase, + DatCase, + AccCase, + InsCase, + AblCase + }; + + enum FriendRequestFlag { + NeedMutualFriends, + NeedMessages, + GetOutRequests + }; + Q_DECLARE_FLAGS(FriendRequestFlags, FriendRequestFlag) + + Roster(Client *client, int uid = 0); + virtual ~Roster(); + void setUid(int uid); + int uid() const; + + Buddy *owner() const; + Buddy *buddy(int id); + Buddy *buddy(int id) const; + BuddyList buddies() const; + + QMap tags() const; + void setTags(const QMap &list); + Reply *getDialogs(int offset = 0, int count = 16, int previewLength = -1); + Reply *getMessages(int offset = 0, int count = 50, Message::Filter filter = Message::FilterNone); +public slots: + void sync(const QStringList &fields = QStringList() + << VK_COMMON_FIELDS + ); + Reply *update(const IdList &ids, const QStringList &fields = QStringList() + << VK_ALL_FIELDS + ); + Reply *update(const BuddyList &buddies, const QStringList &fields = QStringList() + << VK_ALL_FIELDS + ); + ReplyBase *getFriendRequests(int count = 100, int offset = 0, FriendRequestFlags flags = NeedMessages); +signals: + void buddyAdded(Vreen::Buddy *buddy); + void buddyUpdated(Vreen::Buddy *buddy); + void buddyRemoved(int id); + void tagsChanged(const QMap &); + void syncFinished(bool success); + void uidChanged(int uid); +protected: + QScopedPointer d_ptr; + + //friend class Contact; + friend class Buddy; + //friend class Group; + + Q_PRIVATE_SLOT(d_func(), void _q_tags_received(const QVariant &response)) + Q_PRIVATE_SLOT(d_func(), void _q_friends_received(const QVariant &response)) + Q_PRIVATE_SLOT(d_func(), void _q_status_changed(int userId, Vreen::Contact::Status status)) + Q_PRIVATE_SLOT(d_func(), void _q_online_changed(bool)) + Q_PRIVATE_SLOT(d_func(), void _q_updater_handle()) +}; + +} // namespace Vreen + +Q_DECLARE_METATYPE(Vreen::Roster*) +Q_DECLARE_OPERATORS_FOR_FLAGS(Vreen::Roster::FriendRequestFlags) + +#endif // VK_ROSTER_H + diff --git a/3rdparty/vreen/vreen/src/api/roster_p.h b/3rdparty/vreen/vreen/src/api/roster_p.h new file mode 100644 index 000000000..8237269d9 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/roster_p.h @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef ROSTER_P_H +#define ROSTER_P_H +#include "roster.h" +#include "client_p.h" +#include "contact_p.h" + +namespace Vreen { + +typedef QHash BuddyHash; + +class Roster; +class RosterPrivate +{ + Q_DECLARE_PUBLIC(Roster) +public: + RosterPrivate(Roster *q, Client *client) : + q_ptr(q), client(client), owner(0) + { + updaterTimer.setInterval(5000); + updaterTimer.setSingleShot(true); + updaterTimer.connect(&updaterTimer, SIGNAL(timeout()), + q, SLOT(_q_updater_handle())); + } + + Roster *q_ptr; + Client *client; + BuddyHash buddyHash; + Buddy *owner; + QMap tags; + + //TODO i want to use Qt5 slots + //class Updater { + //public: + // typedef std::function Handler; + + // Updater(Client *client, const QVariantMap &query, const Handler &handler) : + // client(client), + // query(query), + // handler(handler) + // { + // timer.setInterval(5000); + // timer.setSingleShot(true); + // QObject::connect(&timer, &timeout, this, &handle); + // } + // inline void handle() { + // if (queue.count()) { + // handler(client.data(), queue, query); + // queue.clear(); + // } + // } + // inline void append(const IdList &items) { + // queue.append(items); + // if (!timer.isActive()) { + // timer.start(); + // } + // } + //protected: + // QPointer client; + // QVariantMap query; + // IdList queue; + // QTimer timer; + // Handler handler; + //} updater; + + //updater + QTimer updaterTimer; + IdList updaterQueue; + + void getTags(); + void getOnline(); + void getFriends(const QVariantMap &args = QVariantMap()); + void addBuddy(Buddy *contact); + void appendToUpdaterQueue(Buddy *contact); + + static QVariant handleGetRequests(const QVariant &response); + + void _q_tags_received(const QVariant &response); + void _q_friends_received(const QVariant &response); + void _q_status_changed(int userId, Vreen::Contact::Status status); + void _q_online_changed(bool); + void _q_updater_handle(); +}; + +} //namespace Vreen + +#endif // ROSTER_P_H + diff --git a/3rdparty/vreen/vreen/src/api/utils.cpp b/3rdparty/vreen/vreen/src/api/utils.cpp new file mode 100644 index 000000000..2000cc8c8 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/utils.cpp @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "utils.h" +#include +#include +#include + +//#define MAX_ENTITY 258 +//extern const struct QTextHtmlEntity { const char *name; quint16 code; } entities[MAX_ENTITY]; + +namespace Vreen { + +QString join(IdList ids) +{ + QString result; + if (ids.isEmpty()) + return result; + + result = QString::number(ids.takeFirst()); + foreach (auto id, ids) + result += QLatin1Literal(",") % QString::number(id); + return result; +} + +QString toCamelCase(QString string) +{ + int from = 0; + while ((from = string.indexOf("_", from)) != -1) { + auto index = from + 1; + string.remove(from, 1); + auto letter = string.at(index); + string.replace(index, 1, letter.toUpper()); + } + return string; +} + +QString fromHtmlEntities(const QString &source) +{ + //Simple hack from slashdot + QTextDocument text; + text.setHtml(source); + return text.toPlainText(); +} + +QString toHtmlEntities(const QString &source) +{ + return Qt::escape(source); +} + +} //namespace Vreen + diff --git a/3rdparty/vreen/vreen/src/api/utils.h b/3rdparty/vreen/vreen/src/api/utils.h new file mode 100644 index 000000000..bb6afdf45 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/utils.h @@ -0,0 +1,151 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef UTILS_H +#define UTILS_H +#include "vk_global.h" +#include + +#include + +namespace Vreen { + +typedef QList IdList; + +template +Q_INLINE_TEMPLATE T sender_cast(QObject *sender) +{ +#ifndef QT_NO_DEBUG + Q_ASSERT(qobject_cast(sender)); +#endif + return static_cast(sender); +} + +template +Q_INLINE_TEMPLATE int strToEnum(const T &str, const char *(&strings)[N]) +{ + for(int i=0; i < N; i++) { + if(QLatin1String(strings[i]) == str) + return i; + } + return -1; +} + +template +Q_INLINE_TEMPLATE X strToEnum(const T &str, const char *(&strings)[N]) +{ + return static_cast(strToEnum(str,strings)); +} + +template +Q_INLINE_TEMPLATE QLatin1String enumToStr(int i, const char *(&strings)[N]) +{ + return QLatin1String((i < 0 || i >= N) ? 0 : strings[i]); +} + +template +Q_INLINE_TEMPLATE QStringList flagsToStrList(int i, const char *(&strings)[N]) +{ + QStringList list; + for (int pos = 0; pos < N; pos++) { + int flag = 1 << pos; + if ((flag) & i) + list.append(strings[pos]); + } + return list; +} + +template +int lowerBound(Container container, const T &value, LessThan lessThan) +{ + auto it = qLowerBound(container.constBegin(), container.constEnd(), value, lessThan); + int index = it - container.constBegin(); + return index; +} + +template +Q_INLINE_TEMPLATE size_t strCount(const char *(&)[N]) +{ + return N; +} + +template +struct ComparatorBase +{ + ComparatorBase(Method method, Qt::SortOrder order = Qt::AscendingOrder) : + method(method), + sortOrder(order) + { + + } + inline bool operator()(const Item &a, const Item &b) const + { + return operator()(method(a), method(b)); + } + inline bool operator()(const Item &a, int id) const + { + return operator()(method(a), id); + } + inline bool operator()(Value id, const Item &b) const + { + return operator()(id, method(b)); + } + inline bool operator()(Value a, Value b) const + { + return sortOrder == Qt::AscendingOrder ? a < b + : b < a; + } + + const Method method; + Qt::SortOrder sortOrder; +}; + +template +struct Comparator : public ComparatorBase +{ + typedef Value (*Method)(const Item &); + Comparator(Method method, Qt::SortOrder order = Qt::AscendingOrder) : + ComparatorBase(method, order) + { + + } +}; + +template +struct IdComparator : public Comparator +{ + IdComparator(Qt::SortOrder order = Qt::AscendingOrder) : + Comparator(id_, order) + { + + } +private: + inline static int id_(const Container &a) { return a.id(); } +}; + + +} //namespace Vreen + +#endif // UTILS_H + diff --git a/3rdparty/vreen/vreen/src/api/utils_p.h b/3rdparty/vreen/vreen/src/api/utils_p.h new file mode 100644 index 000000000..f868e001f --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/utils_p.h @@ -0,0 +1,37 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2013 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef UTILS_P_H +#define UTILS_P_H +#include "utils.h" + +namespace Vreen { + +QString VK_SHARED_EXPORT join(IdList ids); +QString VK_SHARED_EXPORT toCamelCase(QString string); +QString VK_SHARED_EXPORT fromHtmlEntities(const QString &source); + +} //namespace Vreen + +#endif // UTILS_P_H diff --git a/3rdparty/vreen/vreen/src/api/vk_global.h b/3rdparty/vreen/vreen/src/api/vk_global.h new file mode 100644 index 000000000..fa1f5e91d --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/vk_global.h @@ -0,0 +1,34 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef API_GLOBAL_H +#define API_GLOBAL_H + +#include + +#define VK_SHARED_EXPORT +typedef QList IdList; + +#endif // API_GLOBAL_H + diff --git a/3rdparty/vreen/vreen/src/api/vreen.pc.cmake b/3rdparty/vreen/vreen/src/api/vreen.pc.cmake new file mode 100644 index 000000000..595bba66b --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/vreen.pc.cmake @@ -0,0 +1,12 @@ +prefix=${CMAKE_INSTALL_PREFIX} +exec_prefix=${CMAKE_INSTALL_PREFIX}/bin +libdir=${LIB_DESTINATION} +includedir=${VREEN_PKG_INCDIR} + +Name: vreen +Description: Simple and fast Qt Binding for vk.com API +Requires: QtCore QtNetwork +Version: ${LIBRARY_VERSION} +Libs: ${VREEN_PKG_LIBS} +Cflags: -I${VREEN_PKG_INCDIR} + diff --git a/3rdparty/vreen/vreen/src/api/wallpost.cpp b/3rdparty/vreen/vreen/src/api/wallpost.cpp new file mode 100644 index 000000000..ccfd280c4 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/wallpost.cpp @@ -0,0 +1,247 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "wallpost.h" +#include "dynamicpropertydata_p.h" +#include +#include "roster.h" +#include "client.h" +#include "utils_p.h" + +namespace Vreen { + +class WallPostData : public QSharedData +{ +public: + WallPostData() : QSharedData(), + id(0), + fromId(0), + toId(0), + ownerId(0), + signerId(0) + {} + WallPostData(const WallPostData &o) : QSharedData(o), + id(o.id), + body(o.body), + date(o.date), + fromId(o.fromId), + toId(o.toId), + ownerId(o.ownerId), + signerId(o.signerId), + copyText(o.copyText), + likes(o.likes), + reposts(o.reposts), + attachmentHash(o.attachmentHash), + data(o.data) + {} + + int id; + QString body; + QDateTime date; + int fromId; + int toId; + int ownerId; + int signerId; + QString copyText; + QVariantMap likes; + QVariantMap reposts; + Attachment::Hash attachmentHash; + QVariantMap data; +}; + +WallPost::WallPost() : + d(new WallPostData()) +{ +} + +WallPost::WallPost(QVariantMap data) : + d(new WallPostData()) +{ + d->id = data.take("id").toInt(); + d->body = fromHtmlEntities(data.take("text").toString()); + d->fromId = data.take("from_id").toInt(); + d->toId = data.take("to_id").toInt(); + d->ownerId = data.take("copy_owner_id").toInt(); + d->signerId = data.take("signer_id").toInt(); + d->copyText = fromHtmlEntities(data.take("copy_text").toString()); + d->date = QDateTime::fromTime_t(data.take("date").toUInt()); + d->likes = data.take("likes").toMap(); + d->reposts = data.take("reposts").toMap(); + setAttachments(Attachment::fromVariantList(data.take("attachments").toList())); + d->data = data; +} + +WallPost::WallPost(const WallPost &other) : d(other.d) +{ +} + +WallPost &WallPost::operator=(const WallPost &other) +{ + if (this != &other) + d.operator=(other.d); + return *this; +} + +WallPost::~WallPost() +{ +} + +void WallPost::setId(int id) +{ + d->id = id; +} + +int WallPost::id() const +{ + return d->id; +} + +void WallPost::setBody(const QString &body) +{ + d->body = body; +} + +QString WallPost::body() const +{ + return d->body; +} + +void WallPost::setFromId(int id) +{ + d->fromId = id; +} + +int WallPost::fromId() const +{ + return d->fromId; +} + +void WallPost::setToId(int id) +{ + d->toId = id; +} + +int WallPost::toId() const +{ + return d->toId; +} + +int WallPost::ownerId() const +{ + return d->ownerId; +} + +void WallPost::setOwnerId(int ownerId) +{ + d->ownerId = ownerId; +} + +void WallPost::setDate(const QDateTime &date) +{ + d->date = date; +} + +QDateTime WallPost::date() const +{ + return d->date; +} + +int WallPost::signerId() const +{ + return d->signerId; +} + +void WallPost::setSignerId(int signerId) +{ + d->signerId = signerId; +} + +QString WallPost::copyText() const +{ + return d->copyText; +} + +void WallPost::setCopyText(const QString ©Text) +{ + d->copyText = copyText; +} + +Attachment::Hash WallPost::attachments() const +{ + return d->attachmentHash; +} + +Attachment::List WallPost::attachments(Attachment::Type type) const +{ + return d->attachmentHash.values(type); +} + +void WallPost::setAttachments(const Attachment::List &list) +{ + d->attachmentHash = Attachment::toHash(list); +} + +QVariantMap WallPost::likes() const +{ + return d->likes; +} + +void WallPost::setLikes(const QVariantMap &likes) +{ + d->likes = likes; +} + +WallPost WallPost::fromData(const QVariant data) +{ + return WallPost(data.toMap()); +} + +QVariant WallPost::property(const QString &name, const QVariant &def) const +{ + return d->data.value(name, def); +} + +void WallPost::setProperty(const QString &name, const QVariant &value) +{ + d->data.insert(name, value); +} + +QStringList WallPost::dynamicPropertyNames() const +{ + return d->data.keys(); +} + +QVariantMap WallPost::reposts() const +{ + return d->reposts; +} + +void WallPost::setReposts(const QVariantMap &reposts) +{ + d->reposts = reposts; +} + + +} //namespace Vreen + diff --git a/3rdparty/vreen/vreen/src/api/wallpost.h b/3rdparty/vreen/vreen/src/api/wallpost.h new file mode 100644 index 000000000..6643aeac6 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/wallpost.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef WALLPOST_H +#define WALLPOST_H + +#include +#include +#include "vk_global.h" +#include "attachment.h" + +namespace Vreen { + +class WallPostData; +class Client; +class Contact; + +class VK_SHARED_EXPORT WallPost +{ +public: + WallPost(); + WallPost(const WallPost &); + WallPost &operator=(const WallPost &); + ~WallPost(); + + void setId(int id); + int id() const; + void setBody(const QString &body); + QString body() const; + void setFromId(int id); + int fromId() const; + void setToId(int id); + int toId() const; + int ownerId() const; + void setOwnerId(int ownerId); + void setDate(const QDateTime &date); + QDateTime date() const; + int signerId() const; + void setSignerId(int signerId); + QString copyText() const; + void setCopyText(const QString ©Text); + Attachment::Hash attachments() const; + Attachment::List attachments(Attachment::Type type) const; + void setAttachments(const Attachment::List &attachmentList); + QVariantMap likes() const; + void setLikes(const QVariantMap &likes); + QVariantMap reposts() const; + void setReposts(const QVariantMap &reposts); + + static WallPost fromData(const QVariant data); + + QVariant property(const QString &name, const QVariant &def = QVariant()) const; + template + T property(const char *name, const T &def) const + { return QVariant::fromValue(property(name, QVariant::fromValue(def))); } + + void setProperty(const QString &name, const QVariant &value); + QStringList dynamicPropertyNames() const; +protected: + WallPost(QVariantMap data); +private: + QSharedDataPointer d; +}; +typedef QList WallPostList; + +} //namespace Vreen + +#endif // WALLPOST_H + diff --git a/3rdparty/vreen/vreen/src/api/wallsession.cpp b/3rdparty/vreen/vreen/src/api/wallsession.cpp new file mode 100644 index 000000000..0388cb722 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/wallsession.cpp @@ -0,0 +1,163 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#include "wallsession.h" +#include "contact.h" +#include "wallpost.h" +#include "utils.h" +#include "client_p.h" +#include + +namespace Vreen { + +static const char *filters[] = { + "owner", + "others", + "all" +}; + +class WallSession; +class WallSessionPrivate +{ + Q_DECLARE_PUBLIC(WallSession) +public: + WallSessionPrivate(WallSession *q, Contact *contact) : q_ptr(q), contact(contact) {} + WallSession *q_ptr; + Contact *contact; + + void _q_posts_received(const QVariant &response) + { + auto list = response.toMap().value("wall").toList(); + if (!list.isEmpty()) { + list.takeFirst(); + foreach (auto item, list) { + auto post = WallPost::fromData(item); + emit q_func()->postAdded(post); + } + } + } + + void _q_like_added(const QVariant &response) + { + //FIXME error handler + auto reply = sender_cast(q_func()->sender()); + auto url = reply->networkReply()->url(); + int id = url.queryItemValue("post_id").toInt(); + int retweet = url.queryItemValue("repost").toInt(); + auto map = response.toMap(); + + emit q_func()->postLikeAdded(id, + map.value("likes").toInt(), + map.value("reposts").toInt(), + retweet); + } + + void _q_like_deleted(const QVariant &response) + { + auto reply = sender_cast(q_func()->sender()); + auto url = reply->networkReply()->url(); + int id = url.queryItemValue("post_id").toInt(); + int likesCount = response.toMap().value("likes").toInt(); + + emit q_func()->postLikeDeleted(id, likesCount); + } +}; + +WallSession::WallSession(Contact *contact) : + QObject(contact), + d_ptr(new WallSessionPrivate(this, contact)) +{ + +} + +WallSession::~WallSession() +{ + +} + +/*! + * \brief WallSession::getPosts. A wrapper on API method wall.get, \link http://vk.com/developers.php?oid=-1&p=wall.get + * \param filter determine what types of messages on the wall to get. The following parameter values​​: + * Owner - messages on the wall by its owner + * Others - posts on the wall, not on its owner + * All - all the messages on the wall + * \param count + * \param offset + * \param extended flag: true - three arrays will be returned to wall, profiles, and groups. By default, additional fields will not be returned. + * \return + */ +Reply *WallSession::getPosts(WallSession::Filter filter, quint8 count, int offset, bool extended) +{ + Q_D(WallSession); + QVariantMap args; + args.insert("owner_id", QString::number(d->contact->id())); + args.insert("offset", offset); + args.insert("count", count); + args.insert("filter", filters[filter-1]); + args.insert("extended", extended); + auto reply = d->contact->client()->request("wall.get", args); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_posts_received(QVariant))); + + return reply; +} + +Contact *WallSession::contact() const +{ + return d_func()->contact; +} + +/*! + * \brief Vreen::WallSession::like A wrapper on API method wall.addLike \link http://vk.com/developers.php?oid=-1&p=wall.addLike + * \param postId + * \param retweet + * \return + */ +Vreen::Reply *Vreen::WallSession::addLike(int postId, bool retweet, const QString &message) +{ + Q_D(WallSession); + auto reply = d->contact->client()->addLike(d->contact->id(), + postId, + retweet, + message); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_like_added(QVariant))); + return reply; +} + +/*! + * \brief WallSession::deleteLike a wrapper on API method wall.deleteLike \link http://vk.com/developers.php?oid=-1&p=wall.deleteLike + * \param postId + * \return + */ +Reply *WallSession::deleteLike(int postId) +{ + Q_D(WallSession); + auto reply = d->contact->client()->deleteLike(d->contact->id(), postId); + connect(reply, SIGNAL(resultReady(QVariant)), SLOT(_q_like_deleted(QVariant))); + return reply; +} + +} // namespace Vreen + +#include "moc_wallsession.cpp" + diff --git a/3rdparty/vreen/vreen/src/api/wallsession.h b/3rdparty/vreen/vreen/src/api/wallsession.h new file mode 100644 index 000000000..0c99a1d30 --- /dev/null +++ b/3rdparty/vreen/vreen/src/api/wallsession.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Vreen - vk.com API Qt bindings +** +** Copyright © 2012 Aleksey Sidorov +** +***************************************************************************** +** +** $VREEN_BEGIN_LICENSE$ +** This program is free software: you can redistribute it and/or modify +** it under the terms of the GNU Lesser General Public License as published by +** the Free Software Foundation, either version 3 of the License, or +** (at your option) any later version. +** +** This program 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 Lesser General Public License for more details. +** +** You should have received a copy of the GNU General Public License +** along with this program. If not, see http://www.gnu.org/licenses/. +** $VREEN_END_LICENSE$ +** +****************************************************************************/ +#ifndef VK_WALLSESSION_H +#define VK_WALLSESSION_H + +#include "client.h" +#include "wallpost.h" + +namespace Vreen { + +class Reply; +class WallSessionPrivate; +class VK_SHARED_EXPORT WallSession : public QObject +{ + Q_OBJECT + Q_DECLARE_PRIVATE(WallSession) + Q_ENUMS(Filter) +public: + enum Filter { + Owner = 0x1, + Others = 0x2, + All = Owner | Others + }; + + explicit WallSession(Contact *contact); + Contact *contact() const; + virtual ~WallSession(); + +public slots: + Reply *getPosts(Filter filter = All, quint8 count = 16, int offset = 0, bool extended = false); + Reply *addLike(int postId, bool retweet = false, const QString &message = QString()); + Reply *deleteLike(int postId); +signals: + void postAdded(const Vreen::WallPost &post); + void postDeleted(int postId); + void postLikeAdded(int postId, int likesCount, int repostsCount, bool isRetweeted); + void postLikeDeleted(int postId, int likesCount); +protected: + QScopedPointer d_ptr; + + Q_PRIVATE_SLOT(d_func(), void _q_posts_received(QVariant)) + Q_PRIVATE_SLOT(d_func(), void _q_like_added(QVariant)) + Q_PRIVATE_SLOT(d_func(), void _q_like_deleted(QVariant)) +}; + +} // namespace Vreen + +#endif // VK_WALLSESSION_H + diff --git a/CMakeLists.txt b/CMakeLists.txt index 9764981ca..cc59cbc22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ include(cmake/Deb.cmake) include(cmake/Rpm.cmake) include(cmake/SpotifyVersion.cmake) include(cmake/OptionalSource.cmake) +include(cmake/Format.cmake) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) if (CMAKE_CXX_COMPILER MATCHES ".*clang") @@ -20,24 +21,6 @@ if (APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --stdlib=libc++") endif () -set(CMAKE_REQUIRED_FLAGS "-std=c++0x") -check_cxx_source_compiles( - "#include - int main() { - std::unordered_map m; - return 0; - } - " - USE_STD_UNORDERED_MAP) -check_cxx_source_compiles( - "int main() { - [](){}(); - } - " - HAVE_LAMBDAS) -unset(CMAKE_REQUIRED_FLAGS) - - if (UNIX AND NOT APPLE) set(LINUX 1) endif (UNIX AND NOT APPLE) @@ -79,6 +62,7 @@ pkg_check_modules(INDICATEQT indicate-qt) pkg_check_modules(LIBGPOD libgpod-1.0>=0.7.92) pkg_check_modules(LIBMTP libmtp>=1.0) pkg_check_modules(LIBMYGPO_QT libmygpo-qt>=1.0.7) +pkg_check_modules(LIBPULSE libpulse) pkg_check_modules(LIBXML libxml-2.0) pkg_check_modules(QCA qca2) pkg_check_modules(QJSON REQUIRED QJson) @@ -123,7 +107,6 @@ if(LASTFM_INCLUDE_DIRS AND LASTFM1_INCLUDE_DIRS) endif() if (APPLE) - find_library(GROWL Growl) find_library(SPARKLE Sparkle) find_library(SPOTIFY libspotify) @@ -203,11 +186,6 @@ optional_component(GOOGLE_DRIVE ON "Google Drive support" DEPENDS "Taglib 1.8" "TAGLIB_VERSION VERSION_GREATER 1.7.999" ) -optional_component(UBUNTU_ONE ON "Ubuntu One file support" - DEPENDS "Google sparsehash" SPARSEHASH_INCLUDE_DIRS - DEPENDS "Taglib 1.8" "TAGLIB_VERSION VERSION_GREATER 1.7.999" -) - optional_component(DROPBOX ON "Dropbox support" DEPENDS "Google sparsehash" SPARSEHASH_INCLUDE_DIRS DEPENDS "Taglib 1.8" "TAGLIB_VERSION VERSION_GREATER 1.7.999" @@ -223,6 +201,8 @@ optional_component(BOX ON "Box support" DEPENDS "Taglib 1.8" "TAGLIB_VERSION VERSION_GREATER 1.7.999" ) +optional_component(VK ON "Vk.com support") + optional_component(AUDIOCD ON "Devices: Audio CD support" DEPENDS "libcdio" CDIO_FOUND ) @@ -274,6 +254,10 @@ optional_component(SPARKLE ON "Sparkle integration" DEPENDS "Sparkle" SPARKLE ) +optional_component(LIBPULSE ON "Pulse audio integration" + DEPENDS "libpulse" LIBPULSE_FOUND +) + optional_component(VISUALISATIONS ON "Visualisations") if(NOT HAVE_SPOTIFY_BLOB AND NOT QCA_FOUND) @@ -288,6 +272,12 @@ if (HAVE_DBUS) find_package(Qt4 REQUIRED QtDbus) endif () +if (HAVE_VK) + add_subdirectory(3rdparty/vreen) + include_directories(${VREEN_INCLUDE_DIRS}) + include_directories(${VREENOAUTH_INCLUDE_DIRS}) +endif(HAVE_VK) + # We can include the Qt definitions now include(${QT_USE_FILE}) @@ -382,14 +372,10 @@ if(GMOCK_INCLUDE_DIRS) endif(GTEST_INCLUDE_DIRS) endif(GMOCK_INCLUDE_DIRS) -# Use system sha2 if it's available -find_path(SHA2_INCLUDE_DIRS sha2.h) -find_library(SHA2_LIBRARIES sha2) -if(NOT SHA2_INCLUDE_DIRS OR NOT SHA2_LIBRARIES) - add_subdirectory(3rdparty/sha2) - set(SHA2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/sha2) - set(SHA2_LIBRARIES sha2) -endif(NOT SHA2_INCLUDE_DIRS OR NOT SHA2_LIBRARIES) +# Never use the system's sha2. +add_subdirectory(3rdparty/sha2) +set(SHA2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/sha2) +set(SHA2_LIBRARIES sha2) # Use our 3rdparty chromaprint if a system one wasn't found if(NOT CHROMAPRINT_FOUND) diff --git a/Changelog b/Changelog index 9b52e8999..1d39409bb 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,28 @@ +Version 1.2.3: + Bugfixes: + * Fix compilation with GCC 4.9. + * (Linux) Fix poor search performance with sqlite 3.8. + * (Ubuntu) Fix dependency issues on Ubuntu 14.04. + * (Windows) Upgrade to OpenSSL 1.0.1g to fix CVE-2014-0160. + + + +Version 1.2.2: + Major features: + * (Android Remote) Add kittens support. + + Bugfixes: + * Rename SkyDrive to OneDrive. + * Don't include the user's IP address in the log (from the network remote + settings dialog). + * (Debian) Fix a bug with HTTPS logins to all cloud storage providers. + * (Mac OS X) Fix a bug in the workaround for a weird font issue on 10.9. + * (Mac OS X) Fix rendering of source icons on retina displays. + * (Android Remote) Don't advertise songs that aren't available. + * (Android Remote) Fix playing songs with special characters in filenames. + + + Version 1.2.1: Bugfixes: * Fix library download in the network remote. diff --git a/cmake/Format.cmake b/cmake/Format.cmake new file mode 100644 index 000000000..8f20ff494 --- /dev/null +++ b/cmake/Format.cmake @@ -0,0 +1,4 @@ +add_custom_target(format-diff + COMMAND python ${CMAKE_SOURCE_DIR}/dist/format.py) +add_custom_target(format + COMMAND python ${CMAKE_SOURCE_DIR}/dist/format.py -i) diff --git a/cmake/Translations.cmake b/cmake/Translations.cmake index 0061be4b3..462145e2c 100644 --- a/cmake/Translations.cmake +++ b/cmake/Translations.cmake @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 2.6) -set (XGETTEXT_OPTIONS --qt --keyword=tr --flag=tr:1:pass-c-format --flag=tr:1:pass-qt-format +set (XGETTEXT_OPTIONS --qt --keyword=tr:1,2c --keyword=tr --flag=tr:1:pass-c-format --flag=tr:1:pass-qt-format --keyword=trUtf8 --flag=tr:1:pass-c-format --flag=tr:1:pass-qt-format - --keyword=translate:2 --flag=translate:2:pass-c-format --flag=translate:2:pass-qt-format + --keyword=translate:2,3c --keyword=translate:2 --flag=translate:2:pass-c-format --flag=translate:2:pass-qt-format --keyword=QT_TR_NOOP --flag=QT_TR_NOOP:1:pass-c-format --flag=QT_TR_NOOP:1:pass-qt-format --keyword=QT_TRANSLATE_NOOP:2 --flag=QT_TRANSLATE_NOOP:2:pass-c-format --flag=QT_TRANSLATE_NOOP:2:pass-qt-format --keyword=_ --flag=_:1:pass-c-format --flag=_:1:pass-qt-format diff --git a/cmake/Version.cmake b/cmake/Version.cmake index 5272dddea..bd78c06c2 100644 --- a/cmake/Version.cmake +++ b/cmake/Version.cmake @@ -3,7 +3,7 @@ # Version numbers. set(CLEMENTINE_VERSION_MAJOR 1) set(CLEMENTINE_VERSION_MINOR 2) -set(CLEMENTINE_VERSION_PATCH 1) +set(CLEMENTINE_VERSION_PATCH 3) # set(CLEMENTINE_VERSION_PRERELEASE rc4) # This should be set to OFF in a release branch diff --git a/data/allthethings.png b/data/allthethings.png deleted file mode 100644 index ab5c3bf66..000000000 Binary files a/data/allthethings.png and /dev/null differ diff --git a/data/clementineplasmarunner.qrc b/data/clementineplasmarunner.qrc deleted file mode 100644 index a4ff71d9c..000000000 --- a/data/clementineplasmarunner.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - nocover.png - - diff --git a/data/currenttrack_bar_left.png b/data/currenttrack_bar_left.png index e0827d7e9..32c194aaf 100644 Binary files a/data/currenttrack_bar_left.png and b/data/currenttrack_bar_left.png differ diff --git a/data/currenttrack_bar_right.png b/data/currenttrack_bar_right.png index 5dfd7dcc6..04a288af3 100644 Binary files a/data/currenttrack_bar_right.png and b/data/currenttrack_bar_right.png differ diff --git a/data/currenttrack_pause.png b/data/currenttrack_pause.png index f4897310a..daab62c96 100644 Binary files a/data/currenttrack_pause.png and b/data/currenttrack_pause.png differ diff --git a/data/currenttrack_play.png b/data/currenttrack_play.png index 8e8809ed5..eb031fa12 100644 Binary files a/data/currenttrack_play.png and b/data/currenttrack_play.png differ diff --git a/data/data.qrc b/data/data.qrc index 4c5473fed..c6644f68a 100644 --- a/data/data.qrc +++ b/data/data.qrc @@ -16,6 +16,9 @@ icon.png icons/22x22/application-exit.png icons/22x22/applications-internet.png + icons/22x22/audio-card.png + icons/22x22/audio-headphones.png + icons/22x22/audio-headset.png icons/22x22/configure.png icons/22x22/dialog-ok-apply.png icons/22x22/dialog-warning.png @@ -245,18 +248,11 @@ last.fm/as_disabled.png last.fm/as_light.png last.fm/as.png - last.fm/ban.png last.fm/icon_radio.png last.fm/icon_tag.png last.fm/icon_user.png last.fm/lastfm.png - last.fm/loved_radio.png last.fm/love.png - last.fm/my_friends.png - last.fm/my_neighbours.png - last.fm/neighbour_radio.png - last.fm/personal_radio.png - last.fm/recommended_radio.png last.fm/user_purple.png logo.png lumberjacksong.txt @@ -396,10 +392,27 @@ star-on.png tiny-pause.png tiny-start.png - twitter.css volumeslider-gradient.png volumeslider-handle_glow.png volumeslider-handle.png volumeslider-inset.png + vk/add.png + vk/bookmarks.png + vk/delete.png + vk/discography.png + vk/download.png + vk/edit.png + vk/find.png + vk/group.png + vk/my_music.png + vk/play_alt.png + vk/playlist.png + vk/recommends.png + vk/remove.png + vk/upload.png + vk/user.png + vk/deactivated.gif + providers/vk.png + vk/link.png diff --git a/data/grooveshark-valicert-ca.pem b/data/grooveshark-valicert-ca.pem index 0c3389594..1cb1d7126 100644 --- a/data/grooveshark-valicert-ca.pem +++ b/data/grooveshark-valicert-ca.pem @@ -17,3 +17,27 @@ IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd -----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- diff --git a/data/icon.png b/data/icon.png index cd0563d79..a3cec0baf 100644 Binary files a/data/icon.png and b/data/icon.png differ diff --git a/data/icon_large_grey.png b/data/icon_large_grey.png index f5a42f2bb..e6b5b2731 100644 Binary files a/data/icon_large_grey.png and b/data/icon_large_grey.png differ diff --git a/data/icons/22x22/audio-card.png b/data/icons/22x22/audio-card.png new file mode 100644 index 000000000..d5a7ad470 Binary files /dev/null and b/data/icons/22x22/audio-card.png differ diff --git a/data/icons/22x22/audio-headphones.png b/data/icons/22x22/audio-headphones.png new file mode 100644 index 000000000..66f9a357f Binary files /dev/null and b/data/icons/22x22/audio-headphones.png differ diff --git a/data/icons/22x22/audio-headset.png b/data/icons/22x22/audio-headset.png new file mode 100644 index 000000000..751dfa1c6 Binary files /dev/null and b/data/icons/22x22/audio-headset.png differ diff --git a/data/icons/22x22/configure.png b/data/icons/22x22/configure.png index 45b8fae8b..e64a673be 100644 Binary files a/data/icons/22x22/configure.png and b/data/icons/22x22/configure.png differ diff --git a/data/icons/22x22/dialog-ok-apply.png b/data/icons/22x22/dialog-ok-apply.png index 050dcc53b..3acd2bdcb 100644 Binary files a/data/icons/22x22/dialog-ok-apply.png and b/data/icons/22x22/dialog-ok-apply.png differ diff --git a/data/icons/22x22/edit-delete.png b/data/icons/22x22/edit-delete.png index b0de61d22..00404d02a 100644 Binary files a/data/icons/22x22/edit-delete.png and b/data/icons/22x22/edit-delete.png differ diff --git a/data/icons/22x22/edit-rename.png b/data/icons/22x22/edit-rename.png index ea8872fea..45c77c84d 100644 Binary files a/data/icons/22x22/edit-rename.png and b/data/icons/22x22/edit-rename.png differ diff --git a/data/icons/22x22/go-home.png b/data/icons/22x22/go-home.png index aab6a883e..771dc5cb2 100644 Binary files a/data/icons/22x22/go-home.png and b/data/icons/22x22/go-home.png differ diff --git a/data/icons/22x22/go-jump.png b/data/icons/22x22/go-jump.png index 74e837d5f..3b5dde6e0 100644 Binary files a/data/icons/22x22/go-jump.png and b/data/icons/22x22/go-jump.png differ diff --git a/data/icons/22x22/ipodtouchicon.png b/data/icons/22x22/ipodtouchicon.png index 4ea2cbd54..6af0e02b1 100644 Binary files a/data/icons/22x22/ipodtouchicon.png and b/data/icons/22x22/ipodtouchicon.png differ diff --git a/data/icons/22x22/list-remove.png b/data/icons/22x22/list-remove.png index 2bb1a5983..2857006a1 100644 Binary files a/data/icons/22x22/list-remove.png and b/data/icons/22x22/list-remove.png differ diff --git a/data/icons/22x22/media-playlist-repeat.png b/data/icons/22x22/media-playlist-repeat.png index b8b48b84e..04990a773 100644 Binary files a/data/icons/22x22/media-playlist-repeat.png and b/data/icons/22x22/media-playlist-repeat.png differ diff --git a/data/icons/22x22/media-playlist-shuffle.png b/data/icons/22x22/media-playlist-shuffle.png index 7a5ef060a..55f9e1d78 100644 Binary files a/data/icons/22x22/media-playlist-shuffle.png and b/data/icons/22x22/media-playlist-shuffle.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-U2-color.png b/data/icons/22x22/multimedia-player-ipod-U2-color.png index 4aa7b36c7..8abdf2435 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-U2-color.png and b/data/icons/22x22/multimedia-player-ipod-U2-color.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-U2-monochrome.png b/data/icons/22x22/multimedia-player-ipod-U2-monochrome.png index 2c6db3ab5..6ce4234b8 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-U2-monochrome.png and b/data/icons/22x22/multimedia-player-ipod-U2-monochrome.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-mini-blue.png b/data/icons/22x22/multimedia-player-ipod-mini-blue.png index fbe1d2719..15817a438 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-mini-blue.png and b/data/icons/22x22/multimedia-player-ipod-mini-blue.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-mini-gold.png b/data/icons/22x22/multimedia-player-ipod-mini-gold.png index 869ab0e02..391f2338a 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-mini-gold.png and b/data/icons/22x22/multimedia-player-ipod-mini-gold.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-mini-green.png b/data/icons/22x22/multimedia-player-ipod-mini-green.png index 263f0b164..b70858125 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-mini-green.png and b/data/icons/22x22/multimedia-player-ipod-mini-green.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-mini-pink.png b/data/icons/22x22/multimedia-player-ipod-mini-pink.png index b3b8157cf..90f184b51 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-mini-pink.png and b/data/icons/22x22/multimedia-player-ipod-mini-pink.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-mini-silver.png b/data/icons/22x22/multimedia-player-ipod-mini-silver.png index 92968dfd5..2d697ea20 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-mini-silver.png and b/data/icons/22x22/multimedia-player-ipod-mini-silver.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-nano-black.png b/data/icons/22x22/multimedia-player-ipod-nano-black.png index f238e6a0a..04b69379a 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-nano-black.png and b/data/icons/22x22/multimedia-player-ipod-nano-black.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-nano-green.png b/data/icons/22x22/multimedia-player-ipod-nano-green.png index 6268ac074..3a7fc85f8 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-nano-green.png and b/data/icons/22x22/multimedia-player-ipod-nano-green.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-nano-white.png b/data/icons/22x22/multimedia-player-ipod-nano-white.png index 703ae9a87..ebac3be6d 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-nano-white.png and b/data/icons/22x22/multimedia-player-ipod-nano-white.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-shuffle.png b/data/icons/22x22/multimedia-player-ipod-shuffle.png index 0ae0a3fb7..93a516cbe 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-shuffle.png and b/data/icons/22x22/multimedia-player-ipod-shuffle.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-standard-color.png b/data/icons/22x22/multimedia-player-ipod-standard-color.png index 23b1856b8..f45f30994 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-standard-color.png and b/data/icons/22x22/multimedia-player-ipod-standard-color.png differ diff --git a/data/icons/22x22/multimedia-player-ipod-standard-monochrome.png b/data/icons/22x22/multimedia-player-ipod-standard-monochrome.png index 0b18a2a9c..08ccbd18c 100644 Binary files a/data/icons/22x22/multimedia-player-ipod-standard-monochrome.png and b/data/icons/22x22/multimedia-player-ipod-standard-monochrome.png differ diff --git a/data/icons/22x22/phone-google-nexus-one.png b/data/icons/22x22/phone-google-nexus-one.png index 5dbf7aa08..b287b1411 100644 Binary files a/data/icons/22x22/phone-google-nexus-one.png and b/data/icons/22x22/phone-google-nexus-one.png differ diff --git a/data/icons/22x22/phone-nokia-n900.png b/data/icons/22x22/phone-nokia-n900.png index 1814ab928..e8fcd5c39 100644 Binary files a/data/icons/22x22/phone-nokia-n900.png and b/data/icons/22x22/phone-nokia-n900.png differ diff --git a/data/icons/22x22/phone-palm-pre.png b/data/icons/22x22/phone-palm-pre.png index 983e3d680..9e6eaf958 100644 Binary files a/data/icons/22x22/phone-palm-pre.png and b/data/icons/22x22/phone-palm-pre.png differ diff --git a/data/icons/22x22/view-choose.png b/data/icons/22x22/view-choose.png index c0fa58ecf..519258dde 100644 Binary files a/data/icons/22x22/view-choose.png and b/data/icons/22x22/view-choose.png differ diff --git a/data/icons/22x22/view-media-playlist.png b/data/icons/22x22/view-media-playlist.png index 181958ba4..61b19cfce 100644 Binary files a/data/icons/22x22/view-media-playlist.png and b/data/icons/22x22/view-media-playlist.png differ diff --git a/data/icons/22x22/x-clementine-album.png b/data/icons/22x22/x-clementine-album.png index 612fc8159..714021362 100644 Binary files a/data/icons/22x22/x-clementine-album.png and b/data/icons/22x22/x-clementine-album.png differ diff --git a/data/icons/22x22/x-clementine-albums.png b/data/icons/22x22/x-clementine-albums.png index ad5b6983c..cd6f66d45 100644 Binary files a/data/icons/22x22/x-clementine-albums.png and b/data/icons/22x22/x-clementine-albums.png differ diff --git a/data/icons/22x22/x-clementine-artist.png b/data/icons/22x22/x-clementine-artist.png index b50ec42a5..87be8b78a 100644 Binary files a/data/icons/22x22/x-clementine-artist.png and b/data/icons/22x22/x-clementine-artist.png differ diff --git a/data/icons/22x22/zoom-in.png b/data/icons/22x22/zoom-in.png index 8393e281a..ac86abc5a 100644 Binary files a/data/icons/22x22/zoom-in.png and b/data/icons/22x22/zoom-in.png differ diff --git a/data/icons/32x32/download.png b/data/icons/32x32/download.png index ec888b8dd..2110d19e7 100644 Binary files a/data/icons/32x32/download.png and b/data/icons/32x32/download.png differ diff --git a/data/icons/32x32/edit-rename.png b/data/icons/32x32/edit-rename.png index 5f089f584..c450d309a 100644 Binary files a/data/icons/32x32/edit-rename.png and b/data/icons/32x32/edit-rename.png differ diff --git a/data/icons/32x32/go-home.png b/data/icons/32x32/go-home.png index b16c19f26..575efe974 100644 Binary files a/data/icons/32x32/go-home.png and b/data/icons/32x32/go-home.png differ diff --git a/data/icons/32x32/input-keyboard.png b/data/icons/32x32/input-keyboard.png index eff45df7c..8b9d14d3d 100644 Binary files a/data/icons/32x32/input-keyboard.png and b/data/icons/32x32/input-keyboard.png differ diff --git a/data/icons/32x32/ipodtouchicon.png b/data/icons/32x32/ipodtouchicon.png index a0d8dbb7a..678eb9c6e 100644 Binary files a/data/icons/32x32/ipodtouchicon.png and b/data/icons/32x32/ipodtouchicon.png differ diff --git a/data/icons/32x32/media-playlist-repeat.png b/data/icons/32x32/media-playlist-repeat.png index 79dad7263..3ea206ac0 100644 Binary files a/data/icons/32x32/media-playlist-repeat.png and b/data/icons/32x32/media-playlist-repeat.png differ diff --git a/data/icons/32x32/media-playlist-shuffle.png b/data/icons/32x32/media-playlist-shuffle.png index b85db42ad..aa1747e27 100644 Binary files a/data/icons/32x32/media-playlist-shuffle.png and b/data/icons/32x32/media-playlist-shuffle.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-mini-blue.png b/data/icons/32x32/multimedia-player-ipod-mini-blue.png index f8525d150..48224198a 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-mini-blue.png and b/data/icons/32x32/multimedia-player-ipod-mini-blue.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-mini-gold.png b/data/icons/32x32/multimedia-player-ipod-mini-gold.png index 75ed5afad..4a8d0baea 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-mini-gold.png and b/data/icons/32x32/multimedia-player-ipod-mini-gold.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-mini-green.png b/data/icons/32x32/multimedia-player-ipod-mini-green.png index 0654ce9da..d09cf37cf 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-mini-green.png and b/data/icons/32x32/multimedia-player-ipod-mini-green.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-mini-pink.png b/data/icons/32x32/multimedia-player-ipod-mini-pink.png index 5189b8d71..51dc89501 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-mini-pink.png and b/data/icons/32x32/multimedia-player-ipod-mini-pink.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-mini-silver.png b/data/icons/32x32/multimedia-player-ipod-mini-silver.png index 91f941849..7ccc0b20e 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-mini-silver.png and b/data/icons/32x32/multimedia-player-ipod-mini-silver.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-nano-black.png b/data/icons/32x32/multimedia-player-ipod-nano-black.png index 37d3d010c..adaa9484c 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-nano-black.png and b/data/icons/32x32/multimedia-player-ipod-nano-black.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-nano-green.png b/data/icons/32x32/multimedia-player-ipod-nano-green.png index 7df1299dd..4528980a1 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-nano-green.png and b/data/icons/32x32/multimedia-player-ipod-nano-green.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-nano-white.png b/data/icons/32x32/multimedia-player-ipod-nano-white.png index d0c2bbf4e..9f75d1fe4 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-nano-white.png and b/data/icons/32x32/multimedia-player-ipod-nano-white.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-shuffle.png b/data/icons/32x32/multimedia-player-ipod-shuffle.png index 70b6fb13e..8f746e6fb 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-shuffle.png and b/data/icons/32x32/multimedia-player-ipod-shuffle.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-standard-color.png b/data/icons/32x32/multimedia-player-ipod-standard-color.png index 0c7c22fc3..1bf6be329 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-standard-color.png and b/data/icons/32x32/multimedia-player-ipod-standard-color.png differ diff --git a/data/icons/32x32/multimedia-player-ipod-standard-monochrome.png b/data/icons/32x32/multimedia-player-ipod-standard-monochrome.png index 19aed5652..17723a1e3 100644 Binary files a/data/icons/32x32/multimedia-player-ipod-standard-monochrome.png and b/data/icons/32x32/multimedia-player-ipod-standard-monochrome.png differ diff --git a/data/icons/32x32/phone-google-nexus-one.png b/data/icons/32x32/phone-google-nexus-one.png index d125b30b0..00a516166 100644 Binary files a/data/icons/32x32/phone-google-nexus-one.png and b/data/icons/32x32/phone-google-nexus-one.png differ diff --git a/data/icons/32x32/phone-htc-g1-white.png b/data/icons/32x32/phone-htc-g1-white.png index b9dda6f5b..5868e9e88 100644 Binary files a/data/icons/32x32/phone-htc-g1-white.png and b/data/icons/32x32/phone-htc-g1-white.png differ diff --git a/data/icons/32x32/phone-nokia-n900.png b/data/icons/32x32/phone-nokia-n900.png index 27038474b..9d6a5f22d 100644 Binary files a/data/icons/32x32/phone-nokia-n900.png and b/data/icons/32x32/phone-nokia-n900.png differ diff --git a/data/icons/32x32/phone-palm-pre.png b/data/icons/32x32/phone-palm-pre.png index 273aa6a8d..899298149 100644 Binary files a/data/icons/32x32/phone-palm-pre.png and b/data/icons/32x32/phone-palm-pre.png differ diff --git a/data/icons/32x32/view-media-playlist.png b/data/icons/32x32/view-media-playlist.png index 4122eb4ef..6257d7cc9 100644 Binary files a/data/icons/32x32/view-media-playlist.png and b/data/icons/32x32/view-media-playlist.png differ diff --git a/data/icons/32x32/wiimotedev.png b/data/icons/32x32/wiimotedev.png index a759f57cc..c6ddab2b3 100644 Binary files a/data/icons/32x32/wiimotedev.png and b/data/icons/32x32/wiimotedev.png differ diff --git a/data/icons/48x48/ipodtouchicon.png b/data/icons/48x48/ipodtouchicon.png index eff5cf367..1d63b28c5 100644 Binary files a/data/icons/48x48/ipodtouchicon.png and b/data/icons/48x48/ipodtouchicon.png differ diff --git a/data/icons/48x48/media-optical.png b/data/icons/48x48/media-optical.png index e4cb7aab9..c9619b839 100644 Binary files a/data/icons/48x48/media-optical.png and b/data/icons/48x48/media-optical.png differ diff --git a/data/icons/48x48/media-playlist-repeat.png b/data/icons/48x48/media-playlist-repeat.png index 089a46155..8b5571772 100644 Binary files a/data/icons/48x48/media-playlist-repeat.png and b/data/icons/48x48/media-playlist-repeat.png differ diff --git a/data/icons/48x48/media-playlist-shuffle.png b/data/icons/48x48/media-playlist-shuffle.png index 99de62ffa..67fa752d4 100644 Binary files a/data/icons/48x48/media-playlist-shuffle.png and b/data/icons/48x48/media-playlist-shuffle.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-mini-blue.png b/data/icons/48x48/multimedia-player-ipod-mini-blue.png index abf18292d..f20198a9e 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-mini-blue.png and b/data/icons/48x48/multimedia-player-ipod-mini-blue.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-mini-gold.png b/data/icons/48x48/multimedia-player-ipod-mini-gold.png index ca56b0348..41768df65 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-mini-gold.png and b/data/icons/48x48/multimedia-player-ipod-mini-gold.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-mini-green.png b/data/icons/48x48/multimedia-player-ipod-mini-green.png index 142241126..a0ce4ab80 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-mini-green.png and b/data/icons/48x48/multimedia-player-ipod-mini-green.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-mini-pink.png b/data/icons/48x48/multimedia-player-ipod-mini-pink.png index 134add1f9..0e970ce87 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-mini-pink.png and b/data/icons/48x48/multimedia-player-ipod-mini-pink.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-mini-silver.png b/data/icons/48x48/multimedia-player-ipod-mini-silver.png index aaa5b5fdb..34401b231 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-mini-silver.png and b/data/icons/48x48/multimedia-player-ipod-mini-silver.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-nano-black.png b/data/icons/48x48/multimedia-player-ipod-nano-black.png index a383ff719..c67f07c90 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-nano-black.png and b/data/icons/48x48/multimedia-player-ipod-nano-black.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-nano-green.png b/data/icons/48x48/multimedia-player-ipod-nano-green.png index 96ef9f57e..292d6e45c 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-nano-green.png and b/data/icons/48x48/multimedia-player-ipod-nano-green.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-nano-white.png b/data/icons/48x48/multimedia-player-ipod-nano-white.png index d8374d969..551c44865 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-nano-white.png and b/data/icons/48x48/multimedia-player-ipod-nano-white.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-shuffle.png b/data/icons/48x48/multimedia-player-ipod-shuffle.png index e9ecb20dd..ea725c806 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-shuffle.png and b/data/icons/48x48/multimedia-player-ipod-shuffle.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-standard-color.png b/data/icons/48x48/multimedia-player-ipod-standard-color.png index 4ea000db5..09e4a8e09 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-standard-color.png and b/data/icons/48x48/multimedia-player-ipod-standard-color.png differ diff --git a/data/icons/48x48/multimedia-player-ipod-standard-monochrome.png b/data/icons/48x48/multimedia-player-ipod-standard-monochrome.png index 4f2b8597d..3276d8c79 100644 Binary files a/data/icons/48x48/multimedia-player-ipod-standard-monochrome.png and b/data/icons/48x48/multimedia-player-ipod-standard-monochrome.png differ diff --git a/data/icons/48x48/phone-google-nexus-one.png b/data/icons/48x48/phone-google-nexus-one.png index 98d0c9fa0..98fc46eeb 100644 Binary files a/data/icons/48x48/phone-google-nexus-one.png and b/data/icons/48x48/phone-google-nexus-one.png differ diff --git a/data/icons/48x48/phone-htc-g1-white.png b/data/icons/48x48/phone-htc-g1-white.png index 484537f19..9e9935b70 100644 Binary files a/data/icons/48x48/phone-htc-g1-white.png and b/data/icons/48x48/phone-htc-g1-white.png differ diff --git a/data/icons/48x48/phone-nokia-n900.png b/data/icons/48x48/phone-nokia-n900.png index 7fcff59cb..da0752e31 100644 Binary files a/data/icons/48x48/phone-nokia-n900.png and b/data/icons/48x48/phone-nokia-n900.png differ diff --git a/data/icons/48x48/phone-palm-pre.png b/data/icons/48x48/phone-palm-pre.png index dcca76cd1..88fc473b6 100644 Binary files a/data/icons/48x48/phone-palm-pre.png and b/data/icons/48x48/phone-palm-pre.png differ diff --git a/data/icons/48x48/spotify.png b/data/icons/48x48/spotify.png index 9b5c2868e..4c0562488 100644 Binary files a/data/icons/48x48/spotify.png and b/data/icons/48x48/spotify.png differ diff --git a/data/last.fm/as_disabled.png b/data/last.fm/as_disabled.png index b9195b887..01d62f693 100644 Binary files a/data/last.fm/as_disabled.png and b/data/last.fm/as_disabled.png differ diff --git a/data/last.fm/as_light.png b/data/last.fm/as_light.png index e813ec401..eef8009ca 100644 Binary files a/data/last.fm/as_light.png and b/data/last.fm/as_light.png differ diff --git a/data/last.fm/ban.png b/data/last.fm/ban.png deleted file mode 100644 index 5cbf154e4..000000000 Binary files a/data/last.fm/ban.png and /dev/null differ diff --git a/data/last.fm/lastfm.png b/data/last.fm/lastfm.png index 3d0c9d4cc..31d5fac2e 100644 Binary files a/data/last.fm/lastfm.png and b/data/last.fm/lastfm.png differ diff --git a/data/last.fm/my_friends.png b/data/last.fm/my_friends.png deleted file mode 100644 index 912432ecd..000000000 Binary files a/data/last.fm/my_friends.png and /dev/null differ diff --git a/data/last.fm/my_neighbours.png b/data/last.fm/my_neighbours.png deleted file mode 100644 index 98e4fbbe7..000000000 Binary files a/data/last.fm/my_neighbours.png and /dev/null differ diff --git a/data/last.fm/neighbour_radio.png b/data/last.fm/neighbour_radio.png deleted file mode 100644 index 28ab99a9a..000000000 Binary files a/data/last.fm/neighbour_radio.png and /dev/null differ diff --git a/data/last.fm/personal_radio.png b/data/last.fm/personal_radio.png deleted file mode 100644 index 0f10eeaf8..000000000 Binary files a/data/last.fm/personal_radio.png and /dev/null differ diff --git a/data/last.fm/recommended_radio.png b/data/last.fm/recommended_radio.png deleted file mode 100644 index 0b7bdfcce..000000000 Binary files a/data/last.fm/recommended_radio.png and /dev/null differ diff --git a/data/logo.png b/data/logo.png index 40039fc2f..16db98dce 100644 Binary files a/data/logo.png and b/data/logo.png differ diff --git a/data/nocover.png b/data/nocover.png index 523b00b1b..1a2fe40bf 100644 Binary files a/data/nocover.png and b/data/nocover.png differ diff --git a/data/nyancat.png b/data/nyancat.png index 5af9a0028..7ce86474a 100644 Binary files a/data/nyancat.png and b/data/nyancat.png differ diff --git a/data/osd_background.png b/data/osd_background.png index f11404b96..579faa581 100644 Binary files a/data/osd_background.png and b/data/osd_background.png differ diff --git a/data/osd_shadow_edge.png b/data/osd_shadow_edge.png index d2e22c793..c06ca15ed 100644 Binary files a/data/osd_shadow_edge.png and b/data/osd_shadow_edge.png differ diff --git a/data/playstore/af_generic_rgb_wo_45.png b/data/playstore/af_generic_rgb_wo_45.png index bf774ab29..f54f61c88 100644 Binary files a/data/playstore/af_generic_rgb_wo_45.png and b/data/playstore/af_generic_rgb_wo_45.png differ diff --git a/data/playstore/ar_generic_rgb_wo_45.png b/data/playstore/ar_generic_rgb_wo_45.png index c403608c1..01bfa8b4d 100644 Binary files a/data/playstore/ar_generic_rgb_wo_45.png and b/data/playstore/ar_generic_rgb_wo_45.png differ diff --git a/data/playstore/be_generic_rgb_wo_45.png b/data/playstore/be_generic_rgb_wo_45.png index bec6c7a4c..5fb157058 100644 Binary files a/data/playstore/be_generic_rgb_wo_45.png and b/data/playstore/be_generic_rgb_wo_45.png differ diff --git a/data/playstore/bg_generic_rgb_wo_45.png b/data/playstore/bg_generic_rgb_wo_45.png index 9a2747199..cb28d06ca 100644 Binary files a/data/playstore/bg_generic_rgb_wo_45.png and b/data/playstore/bg_generic_rgb_wo_45.png differ diff --git a/data/playstore/ca_generic_rgb_wo_45.png b/data/playstore/ca_generic_rgb_wo_45.png index 698a4cda0..2be8945fb 100644 Binary files a/data/playstore/ca_generic_rgb_wo_45.png and b/data/playstore/ca_generic_rgb_wo_45.png differ diff --git a/data/playstore/cs_generic_rgb_wo_45.png b/data/playstore/cs_generic_rgb_wo_45.png index b97b805cc..af25f8812 100644 Binary files a/data/playstore/cs_generic_rgb_wo_45.png and b/data/playstore/cs_generic_rgb_wo_45.png differ diff --git a/data/playstore/da_generic_rgb_wo_45.png b/data/playstore/da_generic_rgb_wo_45.png index 541ba293c..6cdca6a27 100644 Binary files a/data/playstore/da_generic_rgb_wo_45.png and b/data/playstore/da_generic_rgb_wo_45.png differ diff --git a/data/playstore/de_generic_rgb_wo_45.png b/data/playstore/de_generic_rgb_wo_45.png index 1396f7972..6544ce298 100644 Binary files a/data/playstore/de_generic_rgb_wo_45.png and b/data/playstore/de_generic_rgb_wo_45.png differ diff --git a/data/playstore/el_generic_rgb_wo_45.png b/data/playstore/el_generic_rgb_wo_45.png index adaea5fdf..530c70f37 100644 Binary files a/data/playstore/el_generic_rgb_wo_45.png and b/data/playstore/el_generic_rgb_wo_45.png differ diff --git a/data/playstore/en_generic_rgb_wo_45.png b/data/playstore/en_generic_rgb_wo_45.png index 73dd393c5..ffb6753f2 100644 Binary files a/data/playstore/en_generic_rgb_wo_45.png and b/data/playstore/en_generic_rgb_wo_45.png differ diff --git a/data/playstore/es_generic_rgb_wo_45.png b/data/playstore/es_generic_rgb_wo_45.png index b89274d71..2f13acff5 100644 Binary files a/data/playstore/es_generic_rgb_wo_45.png and b/data/playstore/es_generic_rgb_wo_45.png differ diff --git a/data/playstore/et_generic_rgb_wo_45.png b/data/playstore/et_generic_rgb_wo_45.png index 0e2673811..46342e477 100644 Binary files a/data/playstore/et_generic_rgb_wo_45.png and b/data/playstore/et_generic_rgb_wo_45.png differ diff --git a/data/playstore/fa_generic_rgb_wo_45.png b/data/playstore/fa_generic_rgb_wo_45.png index 25827f69c..a980accb8 100644 Binary files a/data/playstore/fa_generic_rgb_wo_45.png and b/data/playstore/fa_generic_rgb_wo_45.png differ diff --git a/data/playstore/fi_generic_rgb_wo_45.png b/data/playstore/fi_generic_rgb_wo_45.png index 93dc4fc10..8b039322f 100644 Binary files a/data/playstore/fi_generic_rgb_wo_45.png and b/data/playstore/fi_generic_rgb_wo_45.png differ diff --git a/data/playstore/fr_generic_rgb_wo_45.png b/data/playstore/fr_generic_rgb_wo_45.png index 3e1768f82..66f3bc157 100644 Binary files a/data/playstore/fr_generic_rgb_wo_45.png and b/data/playstore/fr_generic_rgb_wo_45.png differ diff --git a/data/playstore/hr_generic_rgb_wo_45.png b/data/playstore/hr_generic_rgb_wo_45.png index b8acaac1e..766b07023 100644 Binary files a/data/playstore/hr_generic_rgb_wo_45.png and b/data/playstore/hr_generic_rgb_wo_45.png differ diff --git a/data/playstore/hu_generic_rgb_wo_45.png b/data/playstore/hu_generic_rgb_wo_45.png index 3b2184d5c..064ba0dff 100644 Binary files a/data/playstore/hu_generic_rgb_wo_45.png and b/data/playstore/hu_generic_rgb_wo_45.png differ diff --git a/data/playstore/it_generic_rgb_wo_45.png b/data/playstore/it_generic_rgb_wo_45.png index ee5f85ee4..0fb15b829 100644 Binary files a/data/playstore/it_generic_rgb_wo_45.png and b/data/playstore/it_generic_rgb_wo_45.png differ diff --git a/data/playstore/ja_generic_rgb_wo_45.png b/data/playstore/ja_generic_rgb_wo_45.png index 5f5281a3a..4d6b64eab 100644 Binary files a/data/playstore/ja_generic_rgb_wo_45.png and b/data/playstore/ja_generic_rgb_wo_45.png differ diff --git a/data/playstore/ko_generic_rgb_wo_45.png b/data/playstore/ko_generic_rgb_wo_45.png index 61ae04aba..35602d0f6 100644 Binary files a/data/playstore/ko_generic_rgb_wo_45.png and b/data/playstore/ko_generic_rgb_wo_45.png differ diff --git a/data/playstore/lt_generic_rgb_wo_45.png b/data/playstore/lt_generic_rgb_wo_45.png index 96564d5fb..58d3f379a 100644 Binary files a/data/playstore/lt_generic_rgb_wo_45.png and b/data/playstore/lt_generic_rgb_wo_45.png differ diff --git a/data/playstore/lv_generic_rgb_wo_45.png b/data/playstore/lv_generic_rgb_wo_45.png index 8182ca52f..372ac56d9 100644 Binary files a/data/playstore/lv_generic_rgb_wo_45.png and b/data/playstore/lv_generic_rgb_wo_45.png differ diff --git a/data/playstore/ms_generic_rgb_wo_45.png b/data/playstore/ms_generic_rgb_wo_45.png index d6ccc6ba3..87e015b30 100644 Binary files a/data/playstore/ms_generic_rgb_wo_45.png and b/data/playstore/ms_generic_rgb_wo_45.png differ diff --git a/data/playstore/nl_generic_rgb_wo_45.png b/data/playstore/nl_generic_rgb_wo_45.png index 6b5826d3b..9a2670abc 100644 Binary files a/data/playstore/nl_generic_rgb_wo_45.png and b/data/playstore/nl_generic_rgb_wo_45.png differ diff --git a/data/playstore/pl_generic_rgb_wo_45.png b/data/playstore/pl_generic_rgb_wo_45.png index 78cadedb7..0ba79ea42 100644 Binary files a/data/playstore/pl_generic_rgb_wo_45.png and b/data/playstore/pl_generic_rgb_wo_45.png differ diff --git a/data/playstore/ro_generic_rgb_wo_45.png b/data/playstore/ro_generic_rgb_wo_45.png index c18a54833..c7d5ca580 100644 Binary files a/data/playstore/ro_generic_rgb_wo_45.png and b/data/playstore/ro_generic_rgb_wo_45.png differ diff --git a/data/playstore/ru_generic_rgb_wo_45.png b/data/playstore/ru_generic_rgb_wo_45.png index c049ddb4a..f07bf5311 100644 Binary files a/data/playstore/ru_generic_rgb_wo_45.png and b/data/playstore/ru_generic_rgb_wo_45.png differ diff --git a/data/playstore/sk_generic_rgb_wo_45.png b/data/playstore/sk_generic_rgb_wo_45.png index 27ce06ac7..2777aedfc 100644 Binary files a/data/playstore/sk_generic_rgb_wo_45.png and b/data/playstore/sk_generic_rgb_wo_45.png differ diff --git a/data/playstore/sl_generic_rgb_wo_45.png b/data/playstore/sl_generic_rgb_wo_45.png index 115a99dd1..38440c585 100644 Binary files a/data/playstore/sl_generic_rgb_wo_45.png and b/data/playstore/sl_generic_rgb_wo_45.png differ diff --git a/data/playstore/sr_generic_rgb_wo_45.png b/data/playstore/sr_generic_rgb_wo_45.png index 86dba47b6..0cac2dde6 100644 Binary files a/data/playstore/sr_generic_rgb_wo_45.png and b/data/playstore/sr_generic_rgb_wo_45.png differ diff --git a/data/playstore/sv_generic_rgb_wo_45.png b/data/playstore/sv_generic_rgb_wo_45.png index fb390d89c..9a32c5d6a 100644 Binary files a/data/playstore/sv_generic_rgb_wo_45.png and b/data/playstore/sv_generic_rgb_wo_45.png differ diff --git a/data/playstore/tr_generic_rgb_wo_45.png b/data/playstore/tr_generic_rgb_wo_45.png index baa8394cd..bae2e8086 100644 Binary files a/data/playstore/tr_generic_rgb_wo_45.png and b/data/playstore/tr_generic_rgb_wo_45.png differ diff --git a/data/playstore/uk_generic_rgb_wo_45.png b/data/playstore/uk_generic_rgb_wo_45.png index 68c111fe2..3100b1351 100644 Binary files a/data/playstore/uk_generic_rgb_wo_45.png and b/data/playstore/uk_generic_rgb_wo_45.png differ diff --git a/data/playstore/vi_generic_rgb_wo_45.png b/data/playstore/vi_generic_rgb_wo_45.png index e39d00ad5..e0ab216e0 100644 Binary files a/data/playstore/vi_generic_rgb_wo_45.png and b/data/playstore/vi_generic_rgb_wo_45.png differ diff --git a/data/providers/amazon.png b/data/providers/amazon.png index d7a2ba023..5f92ffe10 100644 Binary files a/data/providers/amazon.png and b/data/providers/amazon.png differ diff --git a/data/providers/aol.png b/data/providers/aol.png index 003a84999..985b97a0f 100644 Binary files a/data/providers/aol.png and b/data/providers/aol.png differ diff --git a/data/providers/bbc.png b/data/providers/bbc.png index d00a8dc28..579f85f8b 100644 Binary files a/data/providers/bbc.png and b/data/providers/bbc.png differ diff --git a/data/providers/cdbaby.png b/data/providers/cdbaby.png index bd771b901..547a89183 100644 Binary files a/data/providers/cdbaby.png and b/data/providers/cdbaby.png differ diff --git a/data/providers/digitallyimported.png b/data/providers/digitallyimported.png index 7e5840876..86b18ba04 100644 Binary files a/data/providers/digitallyimported.png and b/data/providers/digitallyimported.png differ diff --git a/data/providers/dropbox.png b/data/providers/dropbox.png index 70c015a3f..d9a18826b 100644 Binary files a/data/providers/dropbox.png and b/data/providers/dropbox.png differ diff --git a/data/providers/echonest.png b/data/providers/echonest.png index 804b7838c..74863e7a5 100644 Binary files a/data/providers/echonest.png and b/data/providers/echonest.png differ diff --git a/data/providers/itunes.png b/data/providers/itunes.png index 656b12ed7..e8c686ef8 100644 Binary files a/data/providers/itunes.png and b/data/providers/itunes.png differ diff --git a/data/providers/jamendo.png b/data/providers/jamendo.png index 128ec17b6..ef23018f7 100644 Binary files a/data/providers/jamendo.png and b/data/providers/jamendo.png differ diff --git a/data/providers/jazzradio.png b/data/providers/jazzradio.png index d82d78d4d..45f8b6138 100644 Binary files a/data/providers/jazzradio.png and b/data/providers/jazzradio.png differ diff --git a/data/providers/magnatune.png b/data/providers/magnatune.png index 97b1ca4f8..68370f4bc 100644 Binary files a/data/providers/magnatune.png and b/data/providers/magnatune.png differ diff --git a/data/providers/mog.png b/data/providers/mog.png index c65fa3359..017420f89 100644 Binary files a/data/providers/mog.png and b/data/providers/mog.png differ diff --git a/data/providers/mtvmusic.png b/data/providers/mtvmusic.png index 321b784b4..7da4685b6 100644 Binary files a/data/providers/mtvmusic.png and b/data/providers/mtvmusic.png differ diff --git a/data/providers/musicbrainz.png b/data/providers/musicbrainz.png index f56ef9194..a87e056a0 100644 Binary files a/data/providers/musicbrainz.png and b/data/providers/musicbrainz.png differ diff --git a/data/providers/myspace.png b/data/providers/myspace.png index ce6e9e05f..304d628ea 100644 Binary files a/data/providers/myspace.png and b/data/providers/myspace.png differ diff --git a/data/providers/podcast16.png b/data/providers/podcast16.png index 1679ab05b..667bdef57 100644 Binary files a/data/providers/podcast16.png and b/data/providers/podcast16.png differ diff --git a/data/providers/podcast32.png b/data/providers/podcast32.png index ea50b84b7..66cb4d3bf 100644 Binary files a/data/providers/podcast32.png and b/data/providers/podcast32.png differ diff --git a/data/providers/radiogfm.png b/data/providers/radiogfm.png index f7da69020..b7fd94e4f 100644 Binary files a/data/providers/radiogfm.png and b/data/providers/radiogfm.png differ diff --git a/data/providers/rockradio.png b/data/providers/rockradio.png index ca5dde632..ffc7634af 100644 Binary files a/data/providers/rockradio.png and b/data/providers/rockradio.png differ diff --git a/data/providers/skydrive.png b/data/providers/skydrive.png index d76c6f935..5e8f45a27 100644 Binary files a/data/providers/skydrive.png and b/data/providers/skydrive.png differ diff --git a/data/providers/somafm.png b/data/providers/somafm.png index 1d06677df..e793f5bc0 100644 Binary files a/data/providers/somafm.png and b/data/providers/somafm.png differ diff --git a/data/providers/songkick.png b/data/providers/songkick.png index d52946418..5e59c4d6d 100644 Binary files a/data/providers/songkick.png and b/data/providers/songkick.png differ diff --git a/data/providers/subsonic-32.png b/data/providers/subsonic-32.png index 74221eb34..077c3c72e 100644 Binary files a/data/providers/subsonic-32.png and b/data/providers/subsonic-32.png differ diff --git a/data/providers/ubuntuone.png b/data/providers/ubuntuone.png index 4513269f8..1a8d1f195 100644 Binary files a/data/providers/ubuntuone.png and b/data/providers/ubuntuone.png differ diff --git a/data/providers/vk.png b/data/providers/vk.png new file mode 100644 index 000000000..f4ab8ff89 Binary files /dev/null and b/data/providers/vk.png differ diff --git a/data/providers/wikipedia.png b/data/providers/wikipedia.png index dbcf2a165..4a84436fa 100644 Binary files a/data/providers/wikipedia.png and b/data/providers/wikipedia.png differ diff --git a/data/sidebar_background.png b/data/sidebar_background.png index 9f34525ec..22ce985b0 100644 Binary files a/data/sidebar_background.png and b/data/sidebar_background.png differ diff --git a/data/spotify-attribution.png b/data/spotify-attribution.png index 1a5fb5827..7bb769f28 100644 Binary files a/data/spotify-attribution.png and b/data/spotify-attribution.png differ diff --git a/data/star-off.png b/data/star-off.png index ca999b44a..b5e1d7766 100644 Binary files a/data/star-off.png and b/data/star-off.png differ diff --git a/data/star-on.png b/data/star-on.png index 3df0f8160..1e84493b1 100644 Binary files a/data/star-on.png and b/data/star-on.png differ diff --git a/data/tiny-start.png b/data/tiny-start.png index 49d2a93fb..52ef6ca63 100644 Binary files a/data/tiny-start.png and b/data/tiny-start.png differ diff --git a/data/twitter.css b/data/twitter.css deleted file mode 100644 index a08b0daac..000000000 --- a/data/twitter.css +++ /dev/null @@ -1,8 +0,0 @@ -.tweet { - background-color: white; - margin-bottom: 12px; -} - -.tweet.alternate { - background-color: #f6f6f6; -} diff --git a/data/vk/add.png b/data/vk/add.png new file mode 100644 index 000000000..5d47db460 Binary files /dev/null and b/data/vk/add.png differ diff --git a/data/vk/bookmarks.png b/data/vk/bookmarks.png new file mode 100644 index 000000000..e2c67ffd1 Binary files /dev/null and b/data/vk/bookmarks.png differ diff --git a/data/vk/deactivated.gif b/data/vk/deactivated.gif new file mode 100644 index 000000000..4414b8019 Binary files /dev/null and b/data/vk/deactivated.gif differ diff --git a/data/vk/delete.png b/data/vk/delete.png new file mode 100644 index 000000000..7f40e250a Binary files /dev/null and b/data/vk/delete.png differ diff --git a/data/vk/discography.png b/data/vk/discography.png new file mode 100644 index 000000000..5af8f0f0d Binary files /dev/null and b/data/vk/discography.png differ diff --git a/data/vk/download.png b/data/vk/download.png new file mode 100644 index 000000000..730a99065 Binary files /dev/null and b/data/vk/download.png differ diff --git a/data/vk/edit.png b/data/vk/edit.png new file mode 100644 index 000000000..e17f1d0f3 Binary files /dev/null and b/data/vk/edit.png differ diff --git a/data/vk/find.png b/data/vk/find.png new file mode 100644 index 000000000..213a4f1a3 Binary files /dev/null and b/data/vk/find.png differ diff --git a/data/vk/group.png b/data/vk/group.png new file mode 100644 index 000000000..ca3b7466b Binary files /dev/null and b/data/vk/group.png differ diff --git a/data/vk/link.png b/data/vk/link.png new file mode 100644 index 000000000..a6d3f47d6 Binary files /dev/null and b/data/vk/link.png differ diff --git a/data/vk/my_music.png b/data/vk/my_music.png new file mode 100644 index 000000000..0198b5a23 Binary files /dev/null and b/data/vk/my_music.png differ diff --git a/data/vk/play_alt.png b/data/vk/play_alt.png new file mode 100644 index 000000000..2ccec3060 Binary files /dev/null and b/data/vk/play_alt.png differ diff --git a/data/vk/playlist.png b/data/vk/playlist.png new file mode 100644 index 000000000..a4cb22870 Binary files /dev/null and b/data/vk/playlist.png differ diff --git a/data/vk/recommends.png b/data/vk/recommends.png new file mode 100644 index 000000000..2a0d3b3c4 Binary files /dev/null and b/data/vk/recommends.png differ diff --git a/data/vk/remove.png b/data/vk/remove.png new file mode 100644 index 000000000..9a8f8929b Binary files /dev/null and b/data/vk/remove.png differ diff --git a/data/vk/upload.png b/data/vk/upload.png new file mode 100644 index 000000000..0596e0a49 Binary files /dev/null and b/data/vk/upload.png differ diff --git a/data/vk/user.png b/data/vk/user.png new file mode 100644 index 000000000..f58b69688 Binary files /dev/null and b/data/vk/user.png differ diff --git a/data/volumeslider-handle_glow.png b/data/volumeslider-handle_glow.png index 3684e2250..f783fde7c 100644 Binary files a/data/volumeslider-handle_glow.png and b/data/volumeslider-handle_glow.png differ diff --git a/debian/control b/debian/control index e008a5501..b96b75fe4 100644 --- a/debian/control +++ b/debian/control @@ -34,7 +34,8 @@ Build-Depends: debhelper (>= 7), libchromaprint-dev | libfftw3-dev, libfftw3-dev, libsparsehash-dev, - libsqlite3-dev + libsqlite3-dev, + libpulse-dev Standards-Version: 3.8.1 Homepage: http://www.clementine-player.org/ diff --git a/debian/copyright b/debian/copyright index 511f8c26a..17dd500ca 100644 --- a/debian/copyright +++ b/debian/copyright @@ -45,7 +45,8 @@ Files: src/core/fht.* Copyright: 2004, Melchior FRANZ License: GPL-2+ -Files: src/core/scoped_nsobject.h +Files: ext/libclementine-common/core/arraysize.h + src/core/scoped_nsobject.h src/core/scoped_cftyperef.h src/core/scoped_nsautorelease_pool.* Copyright: 2011, The Chromium Authors @@ -65,6 +66,10 @@ Files: dist/cpplint.py Copyright: 2009, Google Inc. License: BSD-Google +Files: 3rdparty/google-breakpad/* +Copyright: 2006, Google Inc. +License: BSD-Google + Files: 3rdparty/gmock/scripts/generator/* Copyright: 2007, Neal Norwitz 2007, Google Inc. @@ -100,18 +105,13 @@ Files: 3rdparty/qxt/* Copyright: 2007, Qxt Foundation License: CPL 1.0 and/or LGPL-2.1 -Files: 3rdparty/universalchardet/* -Copyright: Netscape Communications Corporation -License: MPL-1.1 or GPL-2+ or LGPL-2.1+ - -Files: 3rdparty/keychain/* -Copyright: 2011, David Sansome - 2011, John Maguire +Files: 3rdparty/libechonest/* +Copyright: 2010-2012, Leo Franchi License: GPL-2+ Files: 3rdparty/SPMediaKeyTap/* Copyright: 2011, Joachim Bengtsson -License: SPMediaKeyTapLicense +License: other Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: . * Neither the name of the organization nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. @@ -285,38 +285,6 @@ License: Sqlite public domain May you find forgiveness for yourself and forgive others. May you share freely, never taking more than you give. -License: MPL-1.1 - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - . - Software distributed under the License is distributed on an "AS IS" basis, - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - for the specific language governing rights and limitations under the - License. - . - The Original Code is Mozilla Communicator client code. - . - The Initial Developer of the Original Code is - Netscape Communications Corporation. - Portions created by the Initial Developer are Copyright (C) 1998 - the Initial Developer. All Rights Reserved. - . - Contributor(s): - . - Alternatively, the contents of this file may be used under the terms of - either the GNU General Public License Version 2 or later (the "GPL"), or - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - in which case the provisions of the GPL or the LGPL are applicable instead - of those above. If you wish to allow use of your version of this file only - under the terms of either the GPL or the LGPL, and not to allow others to - use your version of this file under the terms of the MPL, indicate your - decision by deleting the provisions above and replace them with the notice - and other provisions required by the GPL or the LGPL. If you do not delete - the provisions above, a recipient may use your version of this file under - the terms of any one of the MPL, the GPL or the LGPL. - License: Apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/dist/clementine.desktop b/dist/clementine.desktop old mode 100755 new mode 100644 index fdd6bd827..5cd4fcfe2 --- a/dist/clementine.desktop +++ b/dist/clementine.desktop @@ -7,15 +7,21 @@ Name[sr@ijekavian]=Клементина Name[sr@ijekavianlatin]=Klementina Name[sr@latin]=Klementina GenericName=Clementine Music Player +GenericName[ca]=Reproductor de música Clementine +GenericName[es]=Reproductor de música Clementine GenericName[pl]=Odtwarzacz muzyki Clementine GenericName[pt]=Reprodutor de músicas Clementine +GenericName[sl]=Predvajalnik glasbe Clementine GenericName[sr]=Клементина музички плејер GenericName[sr@ijekavian]=Клементина музички плејер GenericName[sr@ijekavianlatin]=Klementina muzički plejer GenericName[sr@latin]=Klementina muzički plejer Comment=Plays music and last.fm streams +Comment[ca]=Reproducció de música i fluxos de Last.fm +Comment[es]=Reproducción de música y flujos de Last.fm Comment[pl]=Odtwarzanie muzyki i strumieni last.fm Comment[pt]=Reprodução de músicas e emissões last.fm +Comment[sl]=Predvaja glasbo in pretoke last.fm Comment[sr]=Репродукује музику и last.fm токове Comment[sr@ijekavian]=Репродукује музику и last.fm токове Comment[sr@ijekavianlatin]=Reprodukuje muziku i last.fm tokove @@ -27,12 +33,12 @@ Terminal=false Categories=AudioVideo;Player;Qt;Audio; StartupNotify=false MimeType=application/ogg;application/x-ogg;application/x-ogm-audio;audio/aac;audio/mp4;audio/mpeg;audio/mpegurl;audio/ogg;audio/vnd.rn-realaudio;audio/vorbis;audio/x-flac;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-ms-wma;audio/x-musepack;audio/x-oggflac;audio/x-pn-realaudio;audio/x-scpls;audio/x-speex;audio/x-vorbis;audio/x-vorbis+ogg;audio/x-wav;video/x-ms-asf;x-content/audio-player;x-scheme-handler/zune;x-scheme-handler/itpc;x-scheme-handler/itms;x-scheme-handler/feed; -X-Ayatana-Desktop-Shortcuts=Play;Pause;Stop;Previous;Next; +Actions=Play;Pause;Stop;Previous;Next; -[Play Shortcut Group] +[Desktop Action Play] Name=Play Exec=clementine --play -TargetEnvironment=Unity +OnlyShowIn=Unity; Name[af]=Speel Name[be]=Прайграць Name[bg]=Възпроизвеждане @@ -43,7 +49,6 @@ Name[da]=Afspil Name[de]=Wiedergabe Name[el]=Αναπαραγωγή Name[es]=Reproducir -Name[es_AR]=Reproducir Name[et]=Mängi Name[eu]=Erreproduzitu Name[fa]=پخش @@ -81,10 +86,10 @@ Name[vi]=Phát Name[zh_CN]=播放 Name[zh_TW]=播放 -[Pause Shortcut Group] +[Desktop Action Pause] Name=Pause Exec=clementine --pause -TargetEnvironment=Unity +OnlyShowIn=Unity; Name[be]=Прыпыніць Name[bg]=Пауза Name[br]=Ehan @@ -92,7 +97,6 @@ Name[ca]=Pausa Name[cs]=Pozastavit Name[el]=Παύση Name[es]=Pausar -Name[es_AR]=Pausar Name[et]=Paus Name[eu]=Pausarazi Name[fa]=ایست @@ -128,10 +132,10 @@ Name[vi]=Tạm dừng Name[zh_CN]=暂停 Name[zh_TW]=暫停 -[Stop Shortcut Group] +[Desktop Action Stop] Name=Stop Exec=clementine --stop -TargetEnvironment=Unity +OnlyShowIn=Unity; Name[be]=Спыніць Name[bg]=Спиране Name[br]=Paouez @@ -140,7 +144,6 @@ Name[cs]=Zastavit Name[de]=Anhalten Name[el]=Σταμάτημα Name[es]=Detener -Name[es_AR]=Detener Name[et]=Peata Name[eu]=Gelditu Name[fa]=ایست @@ -178,10 +181,10 @@ Name[vi]=Dừng Name[zh_CN]=停止 Name[zh_TW]=停止 -[Previous Shortcut Group] +[Desktop Action Previous] Name=Previous Exec=clementine --previous -TargetEnvironment=Unity +OnlyShowIn=Unity; Name[af]=Vorige Name[be]=Папярэдні Name[bg]=Предишна @@ -192,7 +195,6 @@ Name[da]=Forrige Name[de]=Vorheriger Name[el]=Προηγούμενο Name[es]=Anterior -Name[es_AR]=Anterior Name[eu]=Aurrekoa Name[fa]=پیشین Name[fi]=Edellinen @@ -227,10 +229,10 @@ Name[vi]=Trước Name[zh_CN]=上一首 Name[zh_TW]=往前 -[Next Shortcut Group] +[Desktop Action Next] Name=Next Exec=clementine --next -TargetEnvironment=Unity +OnlyShowIn=Unity; Name[af]=Volgende Name[be]=Далей Name[bg]=Следваща @@ -241,7 +243,6 @@ Name[da]=Næste Name[de]=Weiter Name[el]=Επόμενο Name[es]=Siguiente -Name[es_AR]=Siguiente Name[eu]=Hurrengoa Name[fa]=پسین Name[fi]=Seuraava @@ -278,4 +279,3 @@ Name[uz]=Keyingi Name[vi]=Tiếp theo Name[zh_CN]=下一首 Name[zh_TW]=下一個 - diff --git a/dist/clementine.spec.in b/dist/clementine.spec.in index 0fa211cc9..f42736820 100644 --- a/dist/clementine.spec.in +++ b/dist/clementine.spec.in @@ -12,10 +12,10 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: desktop-file-utils liblastfm-devel taglib-devel gettext BuildRequires: qt4-devel boost-devel gcc-c++ glew-devel libgpod-devel BuildRequires: cmake gstreamer-devel gstreamer-plugins-base-devel -BuildRequires: libimobiledevice-devel libplist-devel usbmuxd-devel +BuildRequires: libplist-devel usbmuxd-devel BuildRequires: libmtp-devel protobuf-devel protobuf-compiler libcdio-devel BuildRequires: qjson-devel qca2-devel fftw-devel sparsehash-devel -BuildRequires: sqlite-devel +BuildRequires: sqlite-devel pulseaudio-libs-devel Requires: libgpod protobuf-lite libcdio qjson qca-ossl sqlite diff --git a/dist/cpplint.py b/dist/cpplint.py index a8c9f6784..ecea0793d 100755 --- a/dist/cpplint.py +++ b/dist/cpplint.py @@ -28,40 +28,6 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# Here are some issues that I've had people identify in my code during reviews, -# that I think are possible to flag automatically in a lint tool. If these were -# caught by lint, it would save time both for myself and that of my reviewers. -# Most likely, some of these are beyond the scope of the current lint framework, -# but I think it is valuable to retain these wish-list items even if they cannot -# be immediately implemented. -# -# Suggestions -# ----------- -# - Check for no 'explicit' for multi-arg ctor -# - Check for boolean assign RHS in parens -# - Check for ctor initializer-list colon position and spacing -# - Check that if there's a ctor, there should be a dtor -# - Check accessors that return non-pointer member variables are -# declared const -# - Check accessors that return non-const pointer member vars are -# *not* declared const -# - Check for using public includes for testing -# - Check for spaces between brackets in one-line inline method -# - Check for no assert() -# - Check for spaces surrounding operators -# - Check for 0 in pointer context (should be NULL) -# - Check for 0 in char context (should be '\0') -# - Check for camel-case method name conventions for methods -# that are not simple inline getters and setters -# - Do not indent namespace contents -# - Avoid inlining non-trivial constructors in header files -# - Check for old-school (void) cast for call-sites of functions -# ignored return value -# - Check gUnit usage of anonymous namespace -# - Check for class declaration order (typedefs, consts, enums, -# ctor(s?), dtor, friend declarations, methods, member vars) -# - """Does google-lint on c++ files. The goal of this script is to identify places in the code that *may* @@ -89,7 +55,8 @@ import unicodedata _USAGE = """ Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] - [--counting=total|toplevel|detailed] + [--counting=total|toplevel|detailed] [--root=subdir] + [--linelength=digits] [file] ... The style guidelines this tries to follow are those in @@ -104,7 +71,8 @@ Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] suppresses errors of all categories on that line. The files passed in will be linted; at least one file must be provided. - Linted extensions are .cc, .cpp, and .h. Other file types will be ignored. + Default linted extensions are .cc, .cpp, .cu, .cuh and .h. Change the + extensions with the --extensions flag. Flags: @@ -152,13 +120,25 @@ Syntax: cpplint.py [--verbose=#] [--output=vs7] [--filter=-x,+y,...] No flag => CHROME_BROWSER_UI_BROWSER_H_ --root=chrome => BROWSER_UI_BROWSER_H_ --root=chrome/browser => UI_BROWSER_H_ + + linelength=digits + This is the allowed line length for the project. The default value is + 80 characters. + + Examples: + --linelength=120 + + extensions=extension,extension,... + The allowed file extensions that cpplint will check + + Examples: + --extensions=hpp,cpp """ # We categorize each error message we print. Here are the categories. # We want an explicit list so we can list them all in cpplint --filter=. # If you add a new error message with a new category, add it to the list # here! cpplint_unittest.py should tell you if you forget to do this. -# \ used for clearer layout -- pylint: disable-msg=C6013 _ERROR_CATEGORIES = [ 'build/class', 'build/deprecated', @@ -185,6 +165,7 @@ _ERROR_CATEGORIES = [ 'readability/multiline_string', 'readability/namespace', 'readability/nolint', + 'readability/nul', 'readability/streams', 'readability/todo', 'readability/utf8', @@ -200,20 +181,19 @@ _ERROR_CATEGORIES = [ 'runtime/printf', 'runtime/printf_format', 'runtime/references', - 'runtime/rtti', - 'runtime/sizeof', 'runtime/string', 'runtime/threadsafe_fn', + 'runtime/vlog', 'whitespace/blank_line', 'whitespace/braces', 'whitespace/comma', 'whitespace/comments', + 'whitespace/empty_conditional_body', 'whitespace/empty_loop_body', 'whitespace/end_of_line', 'whitespace/ending_newline', 'whitespace/forcolon', 'whitespace/indent', - 'whitespace/labels', 'whitespace/line_length', 'whitespace/newline', 'whitespace/operators', @@ -227,42 +207,149 @@ _ERROR_CATEGORIES = [ # flag. By default all errors are on, so only add here categories that should be # off by default (i.e., categories that must be enabled by the --filter= flags). # All entries here should start with a '-' or '+', as in the --filter= flag. -_DEFAULT_FILTERS = ['-build/include_alpha'] +_DEFAULT_FILTERS = ['-build/include_alpha', '-build/include_order', '-build/include', '-readability/function'] # We used to check for high-bit characters, but after much discussion we # decided those were OK, as long as they were in UTF-8 and didn't represent # hard-coded international strings, which belong in a separate i18n file. -# Headers that we consider STL headers. -_STL_HEADERS = frozenset([ - 'algobase.h', 'algorithm', 'alloc.h', 'bitset', 'deque', 'exception', - 'function.h', 'functional', 'hash_map', 'hash_map.h', 'hash_set', - 'hash_set.h', 'iterator', 'list', 'list.h', 'map', 'memory', 'new', - 'pair.h', 'pthread_alloc', 'queue', 'set', 'set.h', 'sstream', 'stack', - 'stl_alloc.h', 'stl_relops.h', 'type_traits.h', - 'utility', 'vector', 'vector.h', - ]) - -# Non-STL C++ system headers. +# C++ headers _CPP_HEADERS = frozenset([ - 'algo.h', 'builtinbuf.h', 'bvector.h', 'cassert', 'cctype', - 'cerrno', 'cfloat', 'ciso646', 'climits', 'clocale', 'cmath', - 'complex', 'complex.h', 'csetjmp', 'csignal', 'cstdarg', 'cstddef', - 'cstdio', 'cstdlib', 'cstring', 'ctime', 'cwchar', 'cwctype', - 'defalloc.h', 'deque.h', 'editbuf.h', 'exception', 'fstream', - 'fstream.h', 'hashtable.h', 'heap.h', 'indstream.h', 'iomanip', - 'iomanip.h', 'ios', 'iosfwd', 'iostream', 'iostream.h', 'istream', - 'istream.h', 'iterator.h', 'limits', 'map.h', 'multimap.h', 'multiset.h', - 'numeric', 'ostream', 'ostream.h', 'parsestream.h', 'pfstream.h', - 'PlotFile.h', 'procbuf.h', 'pthread_alloc.h', 'rope', 'rope.h', - 'ropeimpl.h', 'SFile.h', 'slist', 'slist.h', 'stack.h', 'stdexcept', - 'stdiostream.h', 'streambuf', 'streambuf.h', 'stream.h', 'strfile.h', - 'string', 'strstream', 'strstream.h', 'tempbuf.h', 'tree.h', 'typeinfo', + # Legacy + 'algobase.h', + 'algo.h', + 'alloc.h', + 'builtinbuf.h', + 'bvector.h', + 'complex.h', + 'defalloc.h', + 'deque.h', + 'editbuf.h', + 'fstream.h', + 'function.h', + 'hash_map', + 'hash_map.h', + 'hash_set', + 'hash_set.h', + 'hashtable.h', + 'heap.h', + 'indstream.h', + 'iomanip.h', + 'iostream.h', + 'istream.h', + 'iterator.h', + 'list.h', + 'map.h', + 'multimap.h', + 'multiset.h', + 'ostream.h', + 'pair.h', + 'parsestream.h', + 'pfstream.h', + 'procbuf.h', + 'pthread_alloc', + 'pthread_alloc.h', + 'rope', + 'rope.h', + 'ropeimpl.h', + 'set.h', + 'slist', + 'slist.h', + 'stack.h', + 'stdiostream.h', + 'stl_alloc.h', + 'stl_relops.h', + 'streambuf.h', + 'stream.h', + 'strfile.h', + 'strstream.h', + 'tempbuf.h', + 'tree.h', + 'type_traits.h', + 'vector.h', + # 17.6.1.2 C++ library headers + 'algorithm', + 'array', + 'atomic', + 'bitset', + 'chrono', + 'codecvt', + 'complex', + 'condition_variable', + 'deque', + 'exception', + 'forward_list', + 'fstream', + 'functional', + 'future', + 'initializer_list', + 'iomanip', + 'ios', + 'iosfwd', + 'iostream', + 'istream', + 'iterator', + 'limits', + 'list', + 'locale', + 'map', + 'memory', + 'mutex', + 'new', + 'numeric', + 'ostream', + 'queue', + 'random', + 'ratio', + 'regex', + 'set', + 'sstream', + 'stack', + 'stdexcept', + 'streambuf', + 'string', + 'strstream', + 'system_error', + 'thread', + 'tuple', + 'typeindex', + 'typeinfo', + 'type_traits', + 'unordered_map', + 'unordered_set', + 'utility', 'valarray', + 'vector', + # 17.6.1.2 C++ headers for C library facilities + 'cassert', + 'ccomplex', + 'cctype', + 'cerrno', + 'cfenv', + 'cfloat', + 'cinttypes', + 'ciso646', + 'climits', + 'clocale', + 'cmath', + 'csetjmp', + 'csignal', + 'cstdalign', + 'cstdarg', + 'cstdbool', + 'cstddef', + 'cstdint', + 'cstdio', + 'cstdlib', + 'cstring', + 'ctgmath', + 'ctime', + 'cuchar', + 'cwchar', + 'cwctype', ]) - # Assertion macros. These are defined in base/logging.h and # testing/base/gunit.h. Note that the _M versions need to come first # for substring matching to work. @@ -317,9 +404,8 @@ _ALT_TOKEN_REPLACEMENT = { # Compile regular expression that matches all the above keywords. The "[ =()]" # bit is meant to avoid matching these keywords outside of boolean expressions. # -# False positives include C-style multi-line comments (http://go/nsiut ) -# and multi-line strings (http://go/beujw ), but those have always been -# troublesome for cpplint. +# False positives include C-style multi-line comments and multi-line strings +# but those have always been troublesome for cpplint. _ALT_TOKEN_REPLACEMENT_PATTERN = re.compile( r'[ =()](' + ('|'.join(_ALT_TOKEN_REPLACEMENT.keys())) + r')(?=[ (]|$)') @@ -357,6 +443,14 @@ _error_suppressions = {} # This is set by --root flag. _root = None +# The allowed line length of files. +# This is set by --linelength flag. +_line_length = 80 + +# The allowed extensions for file names +# This is set by --extensions flag. +_valid_extensions = set(['cc', 'h', 'cpp', 'cu', 'cuh']) + def ParseNolintSuppressions(filename, raw_line, linenum, error): """Updates the global list of error-suppressions. @@ -411,14 +505,32 @@ def Match(pattern, s): # The regexp compilation caching is inlined in both Match and Search for # performance reasons; factoring it out into a separate function turns out # to be noticeably expensive. - if not pattern in _regexp_compile_cache: + if pattern not in _regexp_compile_cache: _regexp_compile_cache[pattern] = sre_compile.compile(pattern) return _regexp_compile_cache[pattern].match(s) +def ReplaceAll(pattern, rep, s): + """Replaces instances of pattern in a string with a replacement. + + The compiled regex is kept in a cache shared by Match and Search. + + Args: + pattern: regex pattern + rep: replacement text + s: search string + + Returns: + string with replacements made (or original string if no replacements) + """ + if pattern not in _regexp_compile_cache: + _regexp_compile_cache[pattern] = sre_compile.compile(pattern) + return _regexp_compile_cache[pattern].sub(rep, s) + + def Search(pattern, s): """Searches the string for the pattern, caching the compiled regexp.""" - if not pattern in _regexp_compile_cache: + if pattern not in _regexp_compile_cache: _regexp_compile_cache[pattern] = sre_compile.compile(pattern) return _regexp_compile_cache[pattern].search(s) @@ -459,11 +571,17 @@ class _IncludeState(dict): def __init__(self): dict.__init__(self) + self.ResetSection() + + def ResetSection(self): # The name of the current section. self._section = self._INITIAL_SECTION # The path of last found header. self._last_header = '' + def SetLastHeader(self, header_path): + self._last_header = header_path + def CanonicalizeAlphabeticalOrder(self, header_path): """Returns a path canonicalized for alphabetical comparison. @@ -479,19 +597,25 @@ class _IncludeState(dict): """ return header_path.replace('-inl.h', '.h').replace('-', '_').lower() - def IsInAlphabeticalOrder(self, header_path): + def IsInAlphabeticalOrder(self, clean_lines, linenum, header_path): """Check if a header is in alphabetical order with the previous header. Args: - header_path: Header to be checked. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + header_path: Canonicalized header to be checked. Returns: Returns true if the header is in alphabetical order. """ - canonical_header = self.CanonicalizeAlphabeticalOrder(header_path) - if self._last_header > canonical_header: + # If previous section is different from current section, _last_header will + # be reset to empty string, so it's always less than current header. + # + # If previous line was a blank line, assume that the headers are + # intentionally sorted the way they are. + if (self._last_header > header_path and + not Match(r'^\s*$', clean_lines.elided[linenum - 1])): return False - self._last_header = canonical_header return True def CheckNextIncludeOrder(self, header_type): @@ -884,7 +1008,7 @@ def Error(filename, linenum, category, confidence, message): filename, linenum, message, category, confidence)) -# Matches standard C++ escape esequences per 2.13.2.3 of the C++ standard. +# Matches standard C++ escape sequences per 2.13.2.3 of the C++ standard. _RE_PATTERN_CLEANSE_LINE_ESCAPES = re.compile( r'\\([abfnrtv?"\\\']|\d+|x[0-9a-fA-F]+)') # Matches strings. Escape codes should already be removed by ESCAPES. @@ -923,6 +1047,67 @@ def IsCppString(line): return ((line.count('"') - line.count(r'\"') - line.count("'\"'")) & 1) == 1 +def CleanseRawStrings(raw_lines): + """Removes C++11 raw strings from lines. + + Before: + static const char kData[] = R"( + multi-line string + )"; + + After: + static const char kData[] = "" + (replaced by blank line) + ""; + + Args: + raw_lines: list of raw lines. + + Returns: + list of lines with C++11 raw strings replaced by empty strings. + """ + + delimiter = None + lines_without_raw_strings = [] + for line in raw_lines: + if delimiter: + # Inside a raw string, look for the end + end = line.find(delimiter) + if end >= 0: + # Found the end of the string, match leading space for this + # line and resume copying the original lines, and also insert + # a "" on the last line. + leading_space = Match(r'^(\s*)\S', line) + line = leading_space.group(1) + '""' + line[end + len(delimiter):] + delimiter = None + else: + # Haven't found the end yet, append a blank line. + line = '' + + else: + # Look for beginning of a raw string. + # See 2.14.15 [lex.string] for syntax. + matched = Match(r'^(.*)\b(?:R|u8R|uR|UR|LR)"([^\s\\()]*)\((.*)$', line) + if matched: + delimiter = ')' + matched.group(2) + '"' + + end = matched.group(3).find(delimiter) + if end >= 0: + # Raw string ended on same line + line = (matched.group(1) + '""' + + matched.group(3)[end + len(delimiter):]) + delimiter = None + else: + # Start of a multi-line raw string + line = matched.group(1) + '""' + + lines_without_raw_strings.append(line) + + # TODO(unknown): if delimiter is not None here, we might want to + # emit a warning for unterminated string. + return lines_without_raw_strings + + def FindNextMultiLineCommentStart(lines, lineix): """Find the beginning marker for a multiline comment.""" while lineix < len(lines): @@ -997,9 +1182,11 @@ class CleansedLines(object): self.lines = [] self.raw_lines = lines self.num_lines = len(lines) - for linenum in range(len(lines)): - self.lines.append(CleanseComments(lines[linenum])) - elided = self._CollapseStrings(lines[linenum]) + self.lines_without_raw_strings = CleanseRawStrings(lines) + for linenum in range(len(self.lines_without_raw_strings)): + self.lines.append(CleanseComments( + self.lines_without_raw_strings[linenum])) + elided = self._CollapseStrings(self.lines_without_raw_strings[linenum]) self.elided.append(CleanseComments(elided)) def NumLines(self): @@ -1039,7 +1226,8 @@ def FindEndOfExpressionInLine(line, startpos, depth, startchar, endchar): endchar: expression closing character. Returns: - Index just after endchar. + On finding matching endchar: (index just after matching endchar, 0) + Otherwise: (-1, new depth at end of this line) """ for i in xrange(startpos, len(line)): if line[i] == startchar: @@ -1047,14 +1235,14 @@ def FindEndOfExpressionInLine(line, startpos, depth, startchar, endchar): elif line[i] == endchar: depth -= 1 if depth == 0: - return i + 1 - return -1 + return (i + 1, 0) + return (-1, depth) def CloseExpression(clean_lines, linenum, pos): - """If input points to ( or { or [, finds the position that closes it. + """If input points to ( or { or [ or <, finds the position that closes it. - If lines[linenum][pos] points to a '(' or '{' or '[', finds the + If lines[linenum][pos] points to a '(' or '{' or '[' or '<', finds the linenum/pos that correspond to the closing of the expression. Args: @@ -1071,30 +1259,104 @@ def CloseExpression(clean_lines, linenum, pos): line = clean_lines.elided[linenum] startchar = line[pos] - if startchar not in '({[': + if startchar not in '({[<': return (line, clean_lines.NumLines(), -1) if startchar == '(': endchar = ')' if startchar == '[': endchar = ']' if startchar == '{': endchar = '}' + if startchar == '<': endchar = '>' # Check first line - end_pos = FindEndOfExpressionInLine(line, pos, 0, startchar, endchar) + (end_pos, num_open) = FindEndOfExpressionInLine( + line, pos, 0, startchar, endchar) if end_pos > -1: return (line, linenum, end_pos) - tail = line[pos:] - num_open = tail.count(startchar) - tail.count(endchar) + + # Continue scanning forward while linenum < clean_lines.NumLines() - 1: linenum += 1 line = clean_lines.elided[linenum] - delta = line.count(startchar) - line.count(endchar) - if num_open + delta <= 0: - return (line, linenum, - FindEndOfExpressionInLine(line, 0, num_open, startchar, endchar)) - num_open += delta + (end_pos, num_open) = FindEndOfExpressionInLine( + line, 0, num_open, startchar, endchar) + if end_pos > -1: + return (line, linenum, end_pos) # Did not find endchar before end of file, give up return (line, clean_lines.NumLines(), -1) + +def FindStartOfExpressionInLine(line, endpos, depth, startchar, endchar): + """Find position at the matching startchar. + + This is almost the reverse of FindEndOfExpressionInLine, but note + that the input position and returned position differs by 1. + + Args: + line: a CleansedLines line. + endpos: start searching at this position. + depth: nesting level at endpos. + startchar: expression opening character. + endchar: expression closing character. + + Returns: + On finding matching startchar: (index at matching startchar, 0) + Otherwise: (-1, new depth at beginning of this line) + """ + for i in xrange(endpos, -1, -1): + if line[i] == endchar: + depth += 1 + elif line[i] == startchar: + depth -= 1 + if depth == 0: + return (i, 0) + return (-1, depth) + + +def ReverseCloseExpression(clean_lines, linenum, pos): + """If input points to ) or } or ] or >, finds the position that opens it. + + If lines[linenum][pos] points to a ')' or '}' or ']' or '>', finds the + linenum/pos that correspond to the opening of the expression. + + Args: + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + pos: A position on the line. + + Returns: + A tuple (line, linenum, pos) pointer *at* the opening brace, or + (line, 0, -1) if we never find the matching opening brace. Note + we ignore strings and comments when matching; and the line we + return is the 'cleansed' line at linenum. + """ + line = clean_lines.elided[linenum] + endchar = line[pos] + if endchar not in ')}]>': + return (line, 0, -1) + if endchar == ')': startchar = '(' + if endchar == ']': startchar = '[' + if endchar == '}': startchar = '{' + if endchar == '>': startchar = '<' + + # Check last line + (start_pos, num_open) = FindStartOfExpressionInLine( + line, pos, 0, startchar, endchar) + if start_pos > -1: + return (line, linenum, start_pos) + + # Continue scanning backward + while linenum > 0: + linenum -= 1 + line = clean_lines.elided[linenum] + (start_pos, num_open) = FindStartOfExpressionInLine( + line, len(line) - 1, num_open, startchar, endchar) + if start_pos > -1: + return (line, linenum, start_pos) + + # Did not find startchar before beginning of file, give up + return (line, 0, -1) + + def CheckForCopyright(filename, lines, error): """Logs an error if no Copyright message appears at the top of the file.""" @@ -1207,13 +1469,17 @@ def CheckForHeaderGuard(filename, lines, error): '#endif line should be "#endif // %s"' % cppvar) -def CheckForUnicodeReplacementCharacters(filename, lines, error): - """Logs an error for each line containing Unicode replacement characters. +def CheckForBadCharacters(filename, lines, error): + """Logs an error for each line containing bad characters. - These indicate that either the file contained invalid UTF-8 (likely) - or Unicode replacement characters (which it shouldn't). Note that - it's possible for this to throw off line numbering if the invalid - UTF-8 occurred adjacent to a newline. + Two kinds of bad characters: + + 1. Unicode replacement characters: These indicate that either the file + contained invalid UTF-8 (likely) or Unicode replacement characters (which + it shouldn't). Note that it's possible for this to throw off line + numbering if the invalid UTF-8 occurred adjacent to a newline. + + 2. NUL bytes. These are problematic for some tools. Args: filename: The name of the current file. @@ -1224,6 +1490,8 @@ def CheckForUnicodeReplacementCharacters(filename, lines, error): if u'\ufffd' in line: error(filename, linenum, 'readability/utf8', 5, 'Line contains invalid UTF-8 (or Unicode replacement character).') + if '\0' in line: + error(filename, linenum, 'readability/nul', 5, 'Line contains NUL byte.') def CheckForNewlineAtEOF(filename, lines, error): @@ -1278,8 +1546,8 @@ def CheckForMultilineCommentsAndStrings(filename, clean_lines, linenum, error): if (line.count('"') - line.count('\\"')) % 2: error(filename, linenum, 'readability/multiline_string', 5, 'Multi-line string ("...") found. This lint script doesn\'t ' - 'do well with such strings, and may give bogus warnings. They\'re ' - 'ugly and unnecessary, and you should use concatenation instead".') + 'do well with such strings, and may give bogus warnings. ' + 'Use C++11 raw strings or concatenation instead.') threading_list = ( @@ -1293,7 +1561,6 @@ threading_list = ( ('gmtime(', 'gmtime_r('), ('localtime(', 'localtime_r('), ('rand(', 'rand_r('), - ('readdir(', 'readdir_r('), ('strtok(', 'strtok_r('), ('ttyname(', 'ttyname_r('), ) @@ -1317,7 +1584,7 @@ def CheckPosixThreading(filename, clean_lines, linenum, error): line = clean_lines.elided[linenum] for single_thread_function, multithread_safe_function in threading_list: ix = line.find(single_thread_function) - # Comparisons made explicit for clarity -- pylint: disable-msg=C6403 + # Comparisons made explicit for clarity -- pylint: disable=g-explicit-bool-comparison if ix >= 0 and (ix == 0 or (not line[ix - 1].isalnum() and line[ix - 1] not in ('_', '.', '>'))): error(filename, linenum, 'runtime/threadsafe_fn', 2, @@ -1326,6 +1593,25 @@ def CheckPosixThreading(filename, clean_lines, linenum, error): '...) for improved thread safety.') +def CheckVlogArguments(filename, clean_lines, linenum, error): + """Checks that VLOG() is only used for defining a logging level. + + For example, VLOG(2) is correct. VLOG(INFO), VLOG(WARNING), VLOG(ERROR), and + VLOG(FATAL) are not. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + if Search(r'\bVLOG\((INFO|ERROR|WARNING|DFATAL|FATAL)\)', line): + error(filename, linenum, 'runtime/vlog', 5, + 'VLOG() should be used with numeric verbosity level. ' + 'Use LOG() if you want symbolic severity levels.') + + # Matches invalid increment: *count++, which moves pointer instead of # incrementing a value. _RE_PATTERN_INVALID_INCREMENT = re.compile( @@ -1401,8 +1687,18 @@ class _ClassInfo(_BlockInfo): self.is_derived = False if class_or_struct == 'struct': self.access = 'public' + self.is_struct = True else: self.access = 'private' + self.is_struct = False + + # Remember initial indentation level for this class. Using raw_lines here + # instead of elided to account for leading comments. + initial_indent = Match(r'^( *)\S', clean_lines.raw_lines[linenum]) + if initial_indent: + self.class_indent = len(initial_indent.group(1)) + else: + self.class_indent = 0 # Try to find the end of the class. This will be confused by things like: # class A { @@ -1423,6 +1719,19 @@ class _ClassInfo(_BlockInfo): if Search('(^|[^:]):($|[^:])', clean_lines.elided[linenum]): self.is_derived = True + def CheckEnd(self, filename, clean_lines, linenum, error): + # Check that closing brace is aligned with beginning of the class. + # Only do this if the closing brace is indented by only whitespaces. + # This means we will not check single-line class definitions. + indent = Match(r'^( *)\}', clean_lines.elided[linenum]) + if indent and len(indent.group(1)) != self.class_indent: + if self.is_struct: + parent = 'struct ' + self.name + else: + parent = 'class ' + self.name + error(filename, linenum, 'whitespace/indent', 3, + 'Closing brace should be aligned with beginning of %s' % parent) + class _NamespaceInfo(_BlockInfo): """Stores information about a namespace.""" @@ -1455,14 +1764,14 @@ class _NamespaceInfo(_BlockInfo): # # Note that we accept C style "/* */" comments for terminating # namespaces, so that code that terminate namespaces inside - # preprocessor macros can be cpplint clean. Example: http://go/nxpiz + # preprocessor macros can be cpplint clean. # # We also accept stuff like "// end of namespace ." with the # period at the end. # # Besides these, we don't accept anything else, otherwise we might # get false negatives when existing comment is a substring of the - # expected namespace. Example: http://go/ldkdc, http://cl/23548205 + # expected namespace. if self.name: # Named namespace if not Match((r'};*\s*(//|/\*).*\bnamespace\s+' + re.escape(self.name) + @@ -1533,7 +1842,6 @@ class _NestingState(object): #else struct ResultDetailsPageElementExtensionPoint : public Extension { #endif - (see http://go/qwddn for original example) We make the following assumptions (good enough for most files): - Preprocessor condition evaluates to true from #if up to first @@ -1661,8 +1969,8 @@ class _NestingState(object): # To avoid these cases, we ignore classes that are followed by '=' or '>' class_decl_match = Match( r'\s*(template\s*<[\w\s<>,:]*>\s*)?' - '(class|struct)\s+([A-Z_]+\s+)*(\w+(?:::\w+)*)' - '(([^=>]|<[^<>]*>)*)$', line) + r'(class|struct)\s+([A-Z_]+\s+)*(\w+(?:::\w+)*)' + r'(([^=>]|<[^<>]*>|<[^<>]*<[^<>]*>\s*>)*)$', line) if (class_decl_match and (not self.stack or self.stack[-1].open_parentheses == 0)): self.stack.append(_ClassInfo( @@ -1677,9 +1985,29 @@ class _NestingState(object): # Update access control if we are inside a class/struct if self.stack and isinstance(self.stack[-1], _ClassInfo): - access_match = Match(r'\s*(public|private|protected)\s*:', line) + classinfo = self.stack[-1] + access_match = Match( + r'^(.*)\b(public|private|protected|signals)(\s+(?:slots\s*)?)?' + r':(?:[^:]|$)', + line) if access_match: - self.stack[-1].access = access_match.group(1) + classinfo.access = access_match.group(2) + + # Check that access keywords are indented +1 space. Skip this + # check if the keywords are not preceded by whitespaces. + indent = access_match.group(1) + if (len(indent) != classinfo.class_indent + 1 and + Match(r'^\s*$', indent)): + if classinfo.is_struct: + parent = 'struct ' + classinfo.name + else: + parent = 'class ' + classinfo.name + slots = '' + if access_match.group(3): + slots = access_match.group(3) + error(filename, linenum, 'whitespace/indent', 3, + '%s%s: should be indented +1 space inside %s' % ( + access_match.group(2), slots, parent)) # Consume braces or semicolons from what's left of the line while True: @@ -1729,8 +2057,8 @@ class _NestingState(object): return classinfo return None - def CheckClassFinished(self, filename, error): - """Checks that all classes have been completely parsed. + def CheckCompletedBlocks(self, filename, error): + """Checks that all classes and namespaces have been completely parsed. Call this when all lines in a file have been processed. Args: @@ -1745,11 +2073,15 @@ class _NestingState(object): error(filename, obj.starting_linenum, 'build/class', 5, 'Failed to find complete declaration of class %s' % obj.name) + elif isinstance(obj, _NamespaceInfo): + error(filename, obj.starting_linenum, 'build/namespaces', 5, + 'Failed to find complete declaration of namespace %s' % + obj.name) def CheckForNonStandardConstructs(filename, clean_lines, linenum, nesting_state, error): - """Logs an error if we see certain non-ANSI constructs ignored by gcc-2. + r"""Logs an error if we see certain non-ANSI constructs ignored by gcc-2. Complain about several constructs which gcc-2 accepts, but which are not standard C++. Warning about these in lint is one way to ease the @@ -1848,8 +2180,8 @@ def CheckForNonStandardConstructs(filename, clean_lines, linenum, line) if (args and args.group(1) != 'void' and - not Match(r'(const\s+)?%s\s*(?:<\w+>\s*)?&' % re.escape(base_classname), - args.group(1).strip())): + not Match(r'(const\s+)?%s(\s+const)?\s*(?:<\w+>\s*)?&' + % re.escape(base_classname), args.group(1).strip())): error(filename, linenum, 'runtime/explicit', 5, 'Single-argument constructors should be marked explicit.') @@ -1892,7 +2224,8 @@ def CheckSpacingForFunctionCall(filename, line, linenum, error): # Note that we assume the contents of [] to be short enough that # they'll never need to wrap. if ( # Ignore control structures. - not Search(r'\b(if|for|while|switch|return|delete)\b', fncall) and + not Search(r'\b(if|for|while|switch|return|new|delete|catch|sizeof)\b', + fncall) and # Ignore pointers/references to functions. not Search(r' \([^)]+\)\([^)]*(\)|,$)', fncall) and # Ignore pointers/references to arrays. @@ -1905,7 +2238,7 @@ def CheckSpacingForFunctionCall(filename, line, linenum, error): 'Extra space after (') if (Search(r'\w\s+\(', fncall) and not Search(r'#\s*define|typedef', fncall) and - not Search(r'\w\s+\((\w+::)?\*\w+\)\(', fncall)): + not Search(r'\w\s+\((\w+::)*\*\w+\)\(', fncall)): error(filename, linenum, 'whitespace/parens', 4, 'Extra space before ( in function call') # If the ) is followed only by a newline or a { + newline, assume it's @@ -2033,7 +2366,7 @@ def CheckComment(comment, filename, linenum, error): '"// TODO(my_username): Stuff."') middle_whitespace = match.group(3) - # Comparisons made explicit for correctness -- pylint: disable-msg=C6403 + # Comparisons made explicit for correctness -- pylint: disable=g-explicit-bool-comparison if middle_whitespace != ' ' and middle_whitespace != '': error(filename, linenum, 'whitespace/todo', 2, 'TODO(my_username) should be followed by a space') @@ -2090,8 +2423,7 @@ def FindNextMatchingAngleBracket(clean_lines, linenum, init_suffix): # We could also check all other operators and terminate the search # early, e.g. if we got something like this "a(),;\[\]]*([<>(),;\[\]])(.*)$', line) if match: # Found an operator, update nesting stack @@ -2214,7 +2546,10 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): error: The function to call with any errors found. """ - raw = clean_lines.raw_lines + # Don't use "elided" lines here, otherwise we can't check commented lines. + # Don't want to use "raw" either, because we don't want to check inside C++11 + # raw strings, + raw = clean_lines.lines_without_raw_strings line = raw[linenum] # Before nixing comments, check if the line is blank for no good @@ -2268,7 +2603,8 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): if not exception: error(filename, linenum, 'whitespace/blank_line', 2, - 'Blank line at the start of a code block. Is this needed?') + 'Redundant blank line at the start of a code block ' + 'should be deleted.') # Ignore blank lines at the end of a block in a long if-else # chain, like this: # if (condition1) { @@ -2283,7 +2619,8 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): and Match(r'\s*}', next_line) and next_line.find('} else ') == -1): error(filename, linenum, 'whitespace/blank_line', 3, - 'Blank line at the end of a code block. Is this needed?') + 'Redundant blank line at the end of a code block ' + 'should be deleted.') matched = Match(r'\s*(public|protected|private):', prev_line) if matched: @@ -2294,7 +2631,7 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): commentpos = line.find('//') if commentpos != -1: # Check if the // may be in quotes. If so, ignore it - # Comparisons made explicit for clarity -- pylint: disable-msg=C6403 + # Comparisons made explicit for clarity -- pylint: disable=g-explicit-bool-comparison if (line.count('"', 0, commentpos) - line.count('\\"', 0, commentpos)) % 2 == 0: # not in quotes # Allow one space for new scopes, two spaces otherwise: @@ -2313,10 +2650,15 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): # //---------------------------------------------------------- # or are an empty C++ style Doxygen comment, like: # /// + # or C++ style Doxygen comments placed after the variable: + # ///< Header comment + # //!< Header comment # or they begin with multiple slashes followed by a space: # //////// Header comment match = (Search(r'[=/-]{4,}\s*$', line[commentend:]) or Search(r'^/$', line[commentend:]) or + Search(r'^!< ', line[commentend:]) or + Search(r'^/< ', line[commentend:]) or Search(r'^/+ ', line[commentend:])) if not match: error(filename, linenum, 'whitespace/comments', 4, @@ -2350,8 +2692,11 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): 'Missing spaces around %s' % match.group(1)) # We allow no-spaces around << when used like this: 10<<20, but # not otherwise (particularly, not when used as streams) - match = Search(r'(\S)(?:L|UL|ULL|l|ul|ull)?<<(\S)', line) - if match and not (match.group(1).isdigit() and match.group(2).isdigit()): + # Also ignore using ns::operator<<; + match = Search(r'(operator|\S)(?:L|UL|ULL|l|ul|ull)?<<(\S)', line) + if (match and + not (match.group(1).isdigit() and match.group(2).isdigit()) and + not (match.group(1) == 'operator' and match.group(2) == ';')): error(filename, linenum, 'whitespace/operators', 3, 'Missing spaces around <<') elif not Match(r'#.*include', line): @@ -2422,13 +2767,22 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): not match.group(2) and Search(r'\bfor\s*\(.*; \)', line)): error(filename, linenum, 'whitespace/parens', 5, 'Mismatching spaces inside () in %s' % match.group(1)) - if not len(match.group(2)) in [0, 1]: + if len(match.group(2)) not in [0, 1]: error(filename, linenum, 'whitespace/parens', 5, 'Should have zero or one spaces inside ( and ) in %s' % match.group(1)) # You should always have a space after a comma (either as fn arg or operator) - if Search(r',[^\s]', line): + # + # This does not apply when the non-space character following the + # comma is another comma, since the only time when that happens is + # for empty macro arguments. + # + # We run this check in two passes: first pass on elided lines to + # verify that lines contain missing whitespaces, second pass on raw + # lines to confirm that those missing whitespaces are not due to + # elided comments. + if Search(r',[^,\s]', line) and Search(r',[^,\s]', raw[linenum]): error(filename, linenum, 'whitespace/comma', 3, 'Missing space after ,') @@ -2447,9 +2801,45 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error): # an initializer list, for instance), you should have spaces before your # braces. And since you should never have braces at the beginning of a line, # this is an easy test. - if Search(r'[^ ({]{', line): - error(filename, linenum, 'whitespace/braces', 5, - 'Missing space before {') + match = Match(r'^(.*[^ ({]){', line) + if match: + # Try a bit harder to check for brace initialization. This + # happens in one of the following forms: + # Constructor() : initializer_list_{} { ... } + # Constructor{}.MemberFunction() + # Type variable{}; + # FunctionCall(type{}, ...); + # LastArgument(..., type{}); + # LOG(INFO) << type{} << " ..."; + # map_of_type[{...}] = ...; + # + # We check for the character following the closing brace, and + # silence the warning if it's one of those listed above, i.e. + # "{.;,)<]". + # + # To account for nested initializer list, we allow any number of + # closing braces up to "{;,)<". We can't simply silence the + # warning on first sight of closing brace, because that would + # cause false negatives for things that are not initializer lists. + # Silence this: But not this: + # Outer{ if (...) { + # Inner{...} if (...){ // Missing space before { + # }; } + # + # There is a false negative with this approach if people inserted + # spurious semicolons, e.g. "if (cond){};", but we will catch the + # spurious semicolon with a separate check. + (endline, endlinenum, endpos) = CloseExpression( + clean_lines, linenum, len(match.group(1))) + trailing_text = '' + if endpos > -1: + trailing_text = endline[endpos:] + for offset in xrange(endlinenum + 1, + min(endlinenum + 3, clean_lines.NumLines() - 1)): + trailing_text += clean_lines.elided[offset] + if not Match(r'^[\s}]*[{.;,)<\]]', trailing_text): + error(filename, linenum, 'whitespace/braces', 5, + 'Missing space before {') # Make sure '} else {' has spaces. if Search(r'}else', line): @@ -2577,15 +2967,15 @@ def CheckBraces(filename, clean_lines, linenum, error): line = clean_lines.elided[linenum] # get rid of comments and strings if Match(r'\s*{\s*$', line): - # We allow an open brace to start a line in the case where someone - # is using braces in a block to explicitly create a new scope, - # which is commonly used to control the lifetime of - # stack-allocated variables. We don't detect this perfectly: we - # just don't complain if the last non-whitespace character on the - # previous non-blank line is ';', ':', '{', or '}', or if the previous - # line starts a preprocessor block. + # We allow an open brace to start a line in the case where someone is using + # braces in a block to explicitly create a new scope, which is commonly used + # to control the lifetime of stack-allocated variables. Braces are also + # used for brace initializers inside function calls. We don't detect this + # perfectly: we just don't complain if the last non-whitespace character on + # the previous non-blank line is ',', ';', ':', '(', '{', or '}', or if the + # previous line starts a preprocessor block. prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] - if (not Search(r'[;:}{]\s*$', prevline) and + if (not Search(r'[,;:}{(]\s*$', prevline) and not Match(r'\s*#', prevline)): error(filename, linenum, 'whitespace/braces', 4, '{ should almost always be at the end of the previous line') @@ -2623,25 +3013,123 @@ def CheckBraces(filename, clean_lines, linenum, error): error(filename, linenum, 'whitespace/newline', 4, 'do/while clauses should not be on a single line') - # Braces shouldn't be followed by a ; unless they're defining a struct - # or initializing an array. - # We can't tell in general, but we can for some common cases. - prevlinenum = linenum - while True: - (prevline, prevlinenum) = GetPreviousNonBlankLine(clean_lines, prevlinenum) - if Match(r'\s+{.*}\s*;', line) and not prevline.count(';'): - line = prevline + line - else: - break - if (Search(r'{.*}\s*;', line) and - line.count('{') == line.count('}') and - not Search(r'struct|class|enum|\s*=\s*{', line)): - error(filename, linenum, 'readability/braces', 4, - "You don't need a ; after a }") + # Block bodies should not be followed by a semicolon. Due to C++11 + # brace initialization, there are more places where semicolons are + # required than not, so we use a whitelist approach to check these + # rather than a blacklist. These are the places where "};" should + # be replaced by just "}": + # 1. Some flavor of block following closing parenthesis: + # for (;;) {}; + # while (...) {}; + # switch (...) {}; + # Function(...) {}; + # if (...) {}; + # if (...) else if (...) {}; + # + # 2. else block: + # if (...) else {}; + # + # 3. const member function: + # Function(...) const {}; + # + # 4. Block following some statement: + # x = 42; + # {}; + # + # 5. Block at the beginning of a function: + # Function(...) { + # {}; + # } + # + # Note that naively checking for the preceding "{" will also match + # braces inside multi-dimensional arrays, but this is fine since + # that expression will not contain semicolons. + # + # 6. Block following another block: + # while (true) {} + # {}; + # + # 7. End of namespaces: + # namespace {}; + # + # These semicolons seems far more common than other kinds of + # redundant semicolons, possibly due to people converting classes + # to namespaces. For now we do not warn for this case. + # + # Try matching case 1 first. + match = Match(r'^(.*\)\s*)\{', line) + if match: + # Matched closing parenthesis (case 1). Check the token before the + # matching opening parenthesis, and don't warn if it looks like a + # macro. This avoids these false positives: + # - macro that defines a base class + # - multi-line macro that defines a base class + # - macro that defines the whole class-head + # + # But we still issue warnings for macros that we know are safe to + # warn, specifically: + # - TEST, TEST_F, TEST_P, MATCHER, MATCHER_P + # - TYPED_TEST + # - INTERFACE_DEF + # - EXCLUSIVE_LOCKS_REQUIRED, SHARED_LOCKS_REQUIRED, LOCKS_EXCLUDED: + # + # We implement a whitelist of safe macros instead of a blacklist of + # unsafe macros, even though the latter appears less frequently in + # google code and would have been easier to implement. This is because + # the downside for getting the whitelist wrong means some extra + # semicolons, while the downside for getting the blacklist wrong + # would result in compile errors. + # + # In addition to macros, we also don't want to warn on compound + # literals. + closing_brace_pos = match.group(1).rfind(')') + opening_parenthesis = ReverseCloseExpression( + clean_lines, linenum, closing_brace_pos) + if opening_parenthesis[2] > -1: + line_prefix = opening_parenthesis[0][0:opening_parenthesis[2]] + macro = Search(r'\b([A-Z_]+)\s*$', line_prefix) + if ((macro and + macro.group(1) not in ( + 'TEST', 'TEST_F', 'MATCHER', 'MATCHER_P', 'TYPED_TEST', + 'EXCLUSIVE_LOCKS_REQUIRED', 'SHARED_LOCKS_REQUIRED', + 'LOCKS_EXCLUDED', 'INTERFACE_DEF')) or + Search(r'\s+=\s*$', line_prefix)): + match = None + + else: + # Try matching cases 2-3. + match = Match(r'^(.*(?:else|\)\s*const)\s*)\{', line) + if not match: + # Try matching cases 4-6. These are always matched on separate lines. + # + # Note that we can't simply concatenate the previous line to the + # current line and do a single match, otherwise we may output + # duplicate warnings for the blank line case: + # if (cond) { + # // blank line + # } + prevline = GetPreviousNonBlankLine(clean_lines, linenum)[0] + if prevline and Search(r'[;{}]\s*$', prevline): + match = Match(r'^(\s*)\{', line) + + # Check matching closing brace + if match: + (endline, endlinenum, endpos) = CloseExpression( + clean_lines, linenum, len(match.group(1))) + if endpos > -1 and Match(r'^\s*;', endline[endpos:]): + # Current {} pair is eligible for semicolon check, and we have found + # the redundant semicolon, output warning here. + # + # Note: because we are scanning forward for opening braces, and + # outputting warnings for the matching closing brace, if there are + # nested blocks with trailing semicolons, we will get the error + # messages in reversed order. + error(filename, endlinenum, 'readability/braces', 4, + "You don't need a ; after a }") -def CheckEmptyLoopBody(filename, clean_lines, linenum, error): - """Loop for empty loop body with only a single semicolon. +def CheckEmptyBlockBody(filename, clean_lines, linenum, error): + """Look for empty loop/conditional body with only a single semicolon. Args: filename: The name of the current file. @@ -2653,8 +3141,12 @@ def CheckEmptyLoopBody(filename, clean_lines, linenum, error): # Search for loop keywords at the beginning of the line. Because only # whitespaces are allowed before the keywords, this will also ignore most # do-while-loops, since those lines should start with closing brace. + # + # We also check "if" blocks here, since an empty conditional block + # is likely an error. line = clean_lines.elided[linenum] - if Match(r'\s*(for|while)\s*\(', line): + matched = Match(r'\s*(for|while|if)\s*\(', line) + if matched: # Find the end of the conditional expression (end_line, end_linenum, end_pos) = CloseExpression( clean_lines, linenum, line.find('(')) @@ -2663,43 +3155,12 @@ def CheckEmptyLoopBody(filename, clean_lines, linenum, error): # No warning for all other cases, including whitespace or newline, since we # have a separate check for semicolons preceded by whitespace. if end_pos >= 0 and Match(r';', end_line[end_pos:]): - error(filename, end_linenum, 'whitespace/empty_loop_body', 5, - 'Empty loop bodies should use {} or continue') - - -def ReplaceableCheck(operator, macro, line): - """Determine whether a basic CHECK can be replaced with a more specific one. - - For example suggest using CHECK_EQ instead of CHECK(a == b) and - similarly for CHECK_GE, CHECK_GT, CHECK_LE, CHECK_LT, CHECK_NE. - - Args: - operator: The C++ operator used in the CHECK. - macro: The CHECK or EXPECT macro being called. - line: The current source line. - - Returns: - True if the CHECK can be replaced with a more specific one. - """ - - # This matches decimal and hex integers, strings, and chars (in that order). - match_constant = r'([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')' - - # Expression to match two sides of the operator with something that - # looks like a literal, since CHECK(x == iterator) won't compile. - # This means we can't catch all the cases where a more specific - # CHECK is possible, but it's less annoying than dealing with - # extraneous warnings. - match_this = (r'\s*' + macro + r'\((\s*' + - match_constant + r'\s*' + operator + r'[^<>].*|' - r'.*[^<>]' + operator + r'\s*' + match_constant + - r'\s*\))') - - # Don't complain about CHECK(x == NULL) or similar because - # CHECK_EQ(x, NULL) won't compile (requires a cast). - # Also, don't complain about more complex boolean expressions - # involving && or || such as CHECK(a == b || c == d). - return Match(match_this, line) and not Search(r'NULL|&&|\|\|', line) + if matched.group(1) == 'if': + error(filename, end_linenum, 'whitespace/empty_conditional_body', 5, + 'Empty conditional bodies should use {}') + else: + error(filename, end_linenum, 'whitespace/empty_loop_body', 5, + 'Empty loop bodies should use {} or continue') def CheckCheck(filename, clean_lines, linenum, error): @@ -2713,26 +3174,120 @@ def CheckCheck(filename, clean_lines, linenum, error): """ # Decide the set of replacement macros that should be suggested - raw_lines = clean_lines.raw_lines - current_macro = '' + lines = clean_lines.elided + check_macro = None + start_pos = -1 for macro in _CHECK_MACROS: - if raw_lines[linenum].find(macro) >= 0: - current_macro = macro + i = lines[linenum].find(macro) + if i >= 0: + check_macro = macro + + # Find opening parenthesis. Do a regular expression match here + # to make sure that we are matching the expected CHECK macro, as + # opposed to some other macro that happens to contain the CHECK + # substring. + matched = Match(r'^(.*\b' + check_macro + r'\s*)\(', lines[linenum]) + if not matched: + continue + start_pos = len(matched.group(1)) break - if not current_macro: + if not check_macro or start_pos < 0: # Don't waste time here if line doesn't contain 'CHECK' or 'EXPECT' return - line = clean_lines.elided[linenum] # get rid of comments and strings + # Find end of the boolean expression by matching parentheses + (last_line, end_line, end_pos) = CloseExpression( + clean_lines, linenum, start_pos) + if end_pos < 0: + return + if linenum == end_line: + expression = lines[linenum][start_pos + 1:end_pos - 1] + else: + expression = lines[linenum][start_pos + 1:] + for i in xrange(linenum + 1, end_line): + expression += lines[i] + expression += last_line[0:end_pos - 1] - # Encourage replacing plain CHECKs with CHECK_EQ/CHECK_NE/etc. - for operator in ['==', '!=', '>=', '>', '<=', '<']: - if ReplaceableCheck(operator, current_macro, line): - error(filename, linenum, 'readability/check', 2, - 'Consider using %s instead of %s(a %s b)' % ( - _CHECK_REPLACEMENT[current_macro][operator], - current_macro, operator)) - break + # Parse expression so that we can take parentheses into account. + # This avoids false positives for inputs like "CHECK((a < 4) == b)", + # which is not replaceable by CHECK_LE. + lhs = '' + rhs = '' + operator = None + while expression: + matched = Match(r'^\s*(<<|<<=|>>|>>=|->\*|->|&&|\|\||' + r'==|!=|>=|>|<=|<|\()(.*)$', expression) + if matched: + token = matched.group(1) + if token == '(': + # Parenthesized operand + expression = matched.group(2) + (end, _) = FindEndOfExpressionInLine(expression, 0, 1, '(', ')') + if end < 0: + return # Unmatched parenthesis + lhs += '(' + expression[0:end] + expression = expression[end:] + elif token in ('&&', '||'): + # Logical and/or operators. This means the expression + # contains more than one term, for example: + # CHECK(42 < a && a < b); + # + # These are not replaceable with CHECK_LE, so bail out early. + return + elif token in ('<<', '<<=', '>>', '>>=', '->*', '->'): + # Non-relational operator + lhs += token + expression = matched.group(2) + else: + # Relational operator + operator = token + rhs = matched.group(2) + break + else: + # Unparenthesized operand. Instead of appending to lhs one character + # at a time, we do another regular expression match to consume several + # characters at once if possible. Trivial benchmark shows that this + # is more efficient when the operands are longer than a single + # character, which is generally the case. + matched = Match(r'^([^-=!<>()&|]+)(.*)$', expression) + if not matched: + matched = Match(r'^(\s*\S)(.*)$', expression) + if not matched: + break + lhs += matched.group(1) + expression = matched.group(2) + + # Only apply checks if we got all parts of the boolean expression + if not (lhs and operator and rhs): + return + + # Check that rhs do not contain logical operators. We already know + # that lhs is fine since the loop above parses out && and ||. + if rhs.find('&&') > -1 or rhs.find('||') > -1: + return + + # At least one of the operands must be a constant literal. This is + # to avoid suggesting replacements for unprintable things like + # CHECK(variable != iterator) + # + # The following pattern matches decimal, hex integers, strings, and + # characters (in that order). + lhs = lhs.strip() + rhs = rhs.strip() + match_constant = r'^([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')$' + if Match(match_constant, lhs) or Match(match_constant, rhs): + # Note: since we know both lhs and rhs, we can provide a more + # descriptive error message like: + # Consider using CHECK_EQ(x, 42) instead of CHECK(x == 42) + # Instead of: + # Consider using CHECK_EQ instead of CHECK(a == b) + # + # We are still keeping the less descriptive message because if lhs + # or rhs gets long, the error message might become unreadable. + error(filename, linenum, 'readability/check', 2, + 'Consider using %s instead of %s(a %s b)' % ( + _CHECK_REPLACEMENT[check_macro][operator], + check_macro, operator)) def CheckAltTokens(filename, clean_lines, linenum, error): @@ -2807,7 +3362,10 @@ def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, error: The function to call with any errors found. """ - raw_lines = clean_lines.raw_lines + # Don't use "elided" lines here, otherwise we can't check commented lines. + # Don't want to use "raw" either, because we don't want to check inside C++11 + # raw strings, + raw_lines = clean_lines.lines_without_raw_strings line = raw_lines[linenum] if line.find('\t') != -1: @@ -2833,21 +3391,12 @@ def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, if line and line[-1].isspace(): error(filename, linenum, 'whitespace/end_of_line', 4, 'Line ends in whitespace. Consider deleting these extra spaces.') - # There are certain situations we allow one space, notably for labels + # There are certain situations we allow one space, notably for section labels elif ((initial_spaces == 1 or initial_spaces == 3) and - not Match(r'\s*\w+\s*:\s*$', cleansed_line)): + not (Match(r'\s*\w+\s*:\s*$', cleansed_line) or Match(r'\s*\w+\s*\w+:\s*$', cleansed_line))): error(filename, linenum, 'whitespace/indent', 3, 'Weird number of spaces at line-start. ' 'Are you using a 2-space indent?') - # Labels should always be indented at least one space. - elif not initial_spaces and line[:2] != '//' and Search(r'[^:]:\s*$', - line): - error(filename, linenum, 'whitespace/labels', 4, - 'Labels should always be indented at least one space. ' - 'If this is a member-initializer list in a constructor or ' - 'the base class list in a class definition, the colon should ' - 'be on the following line.') - # Check if the line is a header guard. is_header_guard = False @@ -2869,12 +3418,14 @@ def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, not Match(r'^\s*//.*http(s?)://\S*$', line) and not Match(r'^// \$Id:.*#[0-9]+ \$$', line)): line_width = GetLineWidth(line) - if line_width > 100: + extended_length = int((_line_length * 1.25)) + if line_width > extended_length: error(filename, linenum, 'whitespace/line_length', 4, - 'Lines should very rarely be longer than 100 characters') - elif line_width > 80: + 'Lines should very rarely be longer than %i characters' % + extended_length) + elif line_width > _line_length: error(filename, linenum, 'whitespace/line_length', 2, - 'Lines should be <= 80 characters long') + 'Lines should be <= %i characters long' % _line_length) if (cleansed_line.count(';') > 1 and # for loops are allowed two ;'s (and may run over two lines). @@ -2890,7 +3441,7 @@ def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, # Some more style checks CheckBraces(filename, clean_lines, linenum, error) - CheckEmptyLoopBody(filename, clean_lines, linenum, error) + CheckEmptyBlockBody(filename, clean_lines, linenum, error) CheckAccess(filename, clean_lines, linenum, nesting_state, error) CheckSpacing(filename, clean_lines, linenum, nesting_state, error) CheckCheck(filename, clean_lines, linenum, error) @@ -2980,8 +3531,7 @@ def _ClassifyInclude(fileinfo, include, is_system): """ # This is a list of all standard c++ header files, except # those already checked for above. - is_stl_h = include in _STL_HEADERS - is_cpp_h = is_stl_h or include in _CPP_HEADERS + is_cpp_h = include in _CPP_HEADERS if is_system: if is_cpp_h: @@ -3069,9 +3619,12 @@ def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): error(filename, linenum, 'build/include_order', 4, '%s. Should be: %s.h, c system, c++ system, other.' % (error_message, fileinfo.BaseName())) - if not include_state.IsInAlphabeticalOrder(include): + canonical_include = include_state.CanonicalizeAlphabeticalOrder(include) + if not include_state.IsInAlphabeticalOrder( + clean_lines, linenum, canonical_include): error(filename, linenum, 'build/include_alpha', 4, 'Include "%s" not in alphabetical order' % include) + include_state.SetLastHeader(canonical_include) # Look for any of the stream classes that are part of standard C++. match = _RE_PATTERN_INCLUDE.match(line) @@ -3085,7 +3638,7 @@ def CheckIncludeLine(filename, clean_lines, linenum, include_state, error): def _GetTextInside(text, start_pattern): - """Retrieves all the text between matching open and close parentheses. + r"""Retrieves all the text between matching open and close parentheses. Given a string of lines and a regular expression string, retrieve all the text following the expression and between opening punctuation symbols like @@ -3140,8 +3693,34 @@ def _GetTextInside(text, start_pattern): return text[start_position:position - 1] -def CheckLanguage(filename, clean_lines, linenum, file_extension, include_state, - error): +# Patterns for matching call-by-reference parameters. +# +# Supports nested templates up to 2 levels deep using this messy pattern: +# < (?: < (?: < [^<>]* +# > +# | [^<>] )* +# > +# | [^<>] )* +# > +_RE_PATTERN_IDENT = r'[_a-zA-Z]\w*' # =~ [[:alpha:]][[:alnum:]]* +_RE_PATTERN_TYPE = ( + r'(?:const\s+)?(?:typename\s+|class\s+|struct\s+|union\s+|enum\s+)?' + r'(?:\w|' + r'\s*<(?:<(?:<[^<>]*>|[^<>])*>|[^<>])*>|' + r'::)+') +# A call-by-reference parameter ends with '& identifier'. +_RE_PATTERN_REF_PARAM = re.compile( + r'(' + _RE_PATTERN_TYPE + r'(?:\s*(?:\bconst\b|[*]))*\s*' + r'&\s*' + _RE_PATTERN_IDENT + r')\s*(?:=[^,()]+)?[,)]') +# A call-by-const-reference parameter either ends with 'const& identifier' +# or looks like 'const type& identifier' when 'type' is atomic. +_RE_PATTERN_CONST_REF_PARAM = ( + r'(?:.*\s*\bconst\s*&\s*' + _RE_PATTERN_IDENT + + r'|const\s+' + _RE_PATTERN_TYPE + r'\s*&\s*' + _RE_PATTERN_IDENT + r')') + + +def CheckLanguage(filename, clean_lines, linenum, file_extension, + include_state, nesting_state, error): """Checks rules from the 'C++ language rules' section of cppguide.html. Some of these rules are hard to test (function overloading, using @@ -3153,6 +3732,8 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, include_state, linenum: The number of the line to check. file_extension: The extension (without the dot) of the filename. include_state: An _IncludeState instance in which the headers are inserted. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. error: The function to call with any errors found. """ # If the line is empty or consists of entirely a comment, no need to @@ -3166,73 +3747,64 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, include_state, CheckIncludeLine(filename, clean_lines, linenum, include_state, error) return - # Create an extended_line, which is the concatenation of the current and - # next lines, for more effective checking of code that may span more than one - # line. - if linenum + 1 < clean_lines.NumLines(): - extended_line = line + clean_lines.elided[linenum + 1] - else: - extended_line = line + # Reset include state across preprocessor directives. This is meant + # to silence warnings for conditional includes. + if Match(r'^\s*#\s*(?:ifdef|elif|else|endif)\b', line): + include_state.ResetSection() # Make Windows paths like Unix. fullname = os.path.abspath(filename).replace('\\', '/') # TODO(unknown): figure out if they're using default arguments in fn proto. - # Check for non-const references in functions. This is tricky because & - # is also used to take the address of something. We allow <> for templates, - # (ignoring whatever is between the braces) and : for classes. - # These are complicated re's. They try to capture the following: - # paren (for fn-prototype start), typename, &, varname. For the const - # version, we're willing for const to be before typename or after - # Don't check the implementation on same line. - fnline = line.split('{', 1)[0] - if (len(re.findall(r'\([^()]*\b(?:[\w:]|<[^()]*>)+(\s?&|&\s?)\w+', fnline)) > - len(re.findall(r'\([^()]*\bconst\s+(?:typename\s+)?(?:struct\s+)?' - r'(?:[\w:]|<[^()]*>)+(\s?&|&\s?)\w+', fnline)) + - len(re.findall(r'\([^()]*\b(?:[\w:]|<[^()]*>)+\s+const(\s?&|&\s?)[\w]+', - fnline))): - - # We allow non-const references in a few standard places, like functions - # called "swap()" or iostream operators like "<<" or ">>". We also filter - # out for loops, which lint otherwise mistakenly thinks are functions. - if not Search( - r'(for|swap|Swap|operator[<>][<>])\s*\(\s*' - r'(?:(?:typename\s*)?[\w:]|<.*>)+\s*&', - fnline): - error(filename, linenum, 'runtime/references', 2, - 'Is this a non-const reference? ' - 'If so, make const or use a pointer.') - # Check to see if they're using an conversion function cast. # I just try to capture the most common basic types, though there are more. # Parameterless conversion functions, such as bool(), are allowed as they are # probably a member operator declaration or default constructor. match = Search( r'(\bnew\s+)?\b' # Grab 'new' operator, if it's there - r'(int|float|double|bool|char|int32|uint32|int64|uint64)\([^)]', line) + r'(int|float|double|bool|char|int32|uint32|int64|uint64)' + r'(\([^)].*)', line) if match: + matched_new = match.group(1) + matched_type = match.group(2) + matched_funcptr = match.group(3) + # gMock methods are defined using some variant of MOCK_METHODx(name, type) # where type may be float(), int(string), etc. Without context they are # virtually indistinguishable from int(x) casts. Likewise, gMock's # MockCallback takes a template parameter of the form return_type(arg_type), # which looks much like the cast we're trying to detect. - if (match.group(1) is None and # If new operator, then this isn't a cast + # + # std::function<> wrapper has a similar problem. + # + # Return types for function pointers also look like casts if they + # don't have an extra space. + if (matched_new is None and # If new operator, then this isn't a cast not (Match(r'^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(', line) or - Match(r'^\s*MockCallback<.*>', line))): + Search(r'\bMockCallback<.*>', line) or + Search(r'\bstd::function<.*>', line)) and + not (matched_funcptr and + Match(r'\((?:[^() ]+::\s*\*\s*)?[^() ]+\)\s*\(', + matched_funcptr))): # Try a bit harder to catch gmock lines: the only place where # something looks like an old-style cast is where we declare the # return type of the mocked method, and the only time when we # are missing context is if MOCK_METHOD was split across - # multiple lines (for example http://go/hrfhr ), so we only need - # to check the previous line for MOCK_METHOD. - if (linenum == 0 or - not Match(r'^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(\S+,\s*$', - clean_lines.elided[linenum - 1])): + # multiple lines. The missing MOCK_METHOD is usually one or two + # lines back, so scan back one or two lines. + # + # It's not possible for gmock macros to appear in the first 2 + # lines, since the class head + section name takes up 2 lines. + if (linenum < 2 or + not (Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\((?:\S+,)?\s*$', + clean_lines.elided[linenum - 1]) or + Match(r'^\s*MOCK_(?:CONST_)?METHOD\d+(?:_T)?\(\s*$', + clean_lines.elided[linenum - 2]))): error(filename, linenum, 'readability/casting', 4, 'Using deprecated casting style. ' 'Use static_cast<%s>(...) instead' % - match.group(2)) + matched_type) CheckCStyleCast(filename, linenum, line, clean_lines.raw_lines[linenum], 'static_cast', @@ -3253,13 +3825,23 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, include_state, # In addition, we look for people taking the address of a cast. This # is dangerous -- casts can assign to temporaries, so the pointer doesn't # point where you think. - if Search( - r'(&\([^)]+\)[\w(])|(&(static|dynamic|reinterpret)_cast\b)', line): + match = Search( + r'(?:&\(([^)]+)\)[\w(])|' + r'(?:&(static|dynamic|down|reinterpret)_cast\b)', line) + if match and match.group(1) != '*': error(filename, linenum, 'runtime/casting', 4, ('Are you taking an address of a cast? ' 'This is dangerous: could be a temp var. ' 'Take the address before doing the cast, rather than after')) + # Create an extended_line, which is the concatenation of the current and + # next lines, for more effective checking of code that may span more than one + # line. + if linenum + 1 < clean_lines.NumLines(): + extended_line = line + clean_lines.elided[linenum + 1] + else: + extended_line = line + # Check for people declaring static/global STL strings at the top level. # This is dangerous because the C++ language does not guarantee that # globals with constructors are initialized before the first access. @@ -3269,20 +3851,18 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, include_state, # Make sure it's not a function. # Function template specialization looks like: "string foo(...". # Class template definitions look like: "string Foo::Method(...". - if match and not Match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)?\s*\(([^"]|$)', - match.group(3)): + # + # Also ignore things that look like operators. These are matched separately + # because operator names cross non-word boundaries. If we change the pattern + # above, we would decrease the accuracy of matching identifiers. + if (match and + not Search(r'\boperator\W', line) and + not Match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)?\s*\(([^"]|$)', match.group(3))): error(filename, linenum, 'runtime/string', 4, 'For a static/global string constant, use a C style string instead: ' '"%schar %s[]".' % (match.group(1), match.group(2))) - # Check that we're not using RTTI outside of testing code. - if Search(r'\bdynamic_cast<', line) and not _IsTestFilename(filename): - error(filename, linenum, 'runtime/rtti', 5, - 'Do not use dynamic_cast<>. If you need to cast within a class ' - "hierarchy, use static_cast<> to upcast. Google doesn't support " - 'RTTI.') - if Search(r'\b([A-Za-z0-9_]*_)\(\1\)', line): error(filename, linenum, 'runtime/init', 4, 'You seem to be initializing a member variable with itself.') @@ -3324,10 +3904,6 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, include_state, error(filename, linenum, 'runtime/printf', 4, 'Almost always, snprintf is better than %s' % match.group(1)) - if Search(r'\bsscanf\b', line): - error(filename, linenum, 'runtime/printf', 1, - 'sscanf can be ok, but is slow and can overflow buffers.') - # Check if some verboten operator overloading is going on # TODO(unknown): catch out-of-line unary operator&: # class X {}; @@ -3443,13 +4019,123 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, include_state, 'http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces' ' for more information.') +def CheckForNonConstReference(filename, clean_lines, linenum, + nesting_state, error): + """Check for non-const references. + + Separate from CheckLanguage since it scans backwards from current + line, instead of scanning forward. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + nesting_state: A _NestingState instance which maintains information about + the current stack of nested blocks being parsed. + error: The function to call with any errors found. + """ + # Do nothing if there is no '&' on current line. + line = clean_lines.elided[linenum] + if '&' not in line: + return + + # Long type names may be broken across multiple lines, usually in one + # of these forms: + # LongType + # ::LongTypeContinued &identifier + # LongType:: + # LongTypeContinued &identifier + # LongType< + # ...>::LongTypeContinued &identifier + # + # If we detected a type split across two lines, join the previous + # line to current line so that we can match const references + # accordingly. + # + # Note that this only scans back one line, since scanning back + # arbitrary number of lines would be expensive. If you have a type + # that spans more than 2 lines, please use a typedef. + if linenum > 1: + previous = None + if Match(r'\s*::(?:[\w<>]|::)+\s*&\s*\S', line): + # previous_line\n + ::current_line + previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+[\w<>])\s*$', + clean_lines.elided[linenum - 1]) + elif Match(r'\s*[a-zA-Z_]([\w<>]|::)+\s*&\s*\S', line): + # previous_line::\n + current_line + previous = Search(r'\b((?:const\s*)?(?:[\w<>]|::)+::)\s*$', + clean_lines.elided[linenum - 1]) + if previous: + line = previous.group(1) + line.lstrip() + else: + # Check for templated parameter that is split across multiple lines + endpos = line.rfind('>') + if endpos > -1: + (_, startline, startpos) = ReverseCloseExpression( + clean_lines, linenum, endpos) + if startpos > -1 and startline < linenum: + # Found the matching < on an earlier line, collect all + # pieces up to current line. + line = '' + for i in xrange(startline, linenum + 1): + line += clean_lines.elided[i].strip() + + # Check for non-const references in function parameters. A single '&' may + # found in the following places: + # inside expression: binary & for bitwise AND + # inside expression: unary & for taking the address of something + # inside declarators: reference parameter + # We will exclude the first two cases by checking that we are not inside a + # function body, including one that was just introduced by a trailing '{'. + # TODO(unknwon): Doesn't account for preprocessor directives. + # TODO(unknown): Doesn't account for 'catch(Exception& e)' [rare]. + check_params = False + if not nesting_state.stack: + check_params = True # top level + elif (isinstance(nesting_state.stack[-1], _ClassInfo) or + isinstance(nesting_state.stack[-1], _NamespaceInfo)): + check_params = True # within class or namespace + elif Match(r'.*{\s*$', line): + if (len(nesting_state.stack) == 1 or + isinstance(nesting_state.stack[-2], _ClassInfo) or + isinstance(nesting_state.stack[-2], _NamespaceInfo)): + check_params = True # just opened global/class/namespace block + # We allow non-const references in a few standard places, like functions + # called "swap()" or iostream operators like "<<" or ">>". Do not check + # those function parameters. + # + # We also accept & in static_assert, which looks like a function but + # it's actually a declaration expression. + whitelisted_functions = (r'(?:[sS]wap(?:<\w:+>)?|' + r'operator\s*[<>][<>]|' + r'static_assert|COMPILE_ASSERT' + r')\s*\(') + if Search(whitelisted_functions, line): + check_params = False + elif not Search(r'\S+\([^)]*$', line): + # Don't see a whitelisted function on this line. Actually we + # didn't see any function name on this line, so this is likely a + # multi-line parameter list. Try a bit harder to catch this case. + for i in xrange(2): + if (linenum > i and + Search(whitelisted_functions, clean_lines.elided[linenum - i - 1])): + check_params = False + break + + if check_params: + decls = ReplaceAll(r'{[^}]*}', ' ', line) # exclude function body + for parameter in re.findall(_RE_PATTERN_REF_PARAM, decls): + if not Match(_RE_PATTERN_CONST_REF_PARAM, parameter): + error(filename, linenum, 'runtime/references', 2, + 'Is this a non-const reference? ' + 'If so, make const or use a pointer: ' + + ReplaceAll(' *<', '<', parameter)) + def CheckCStyleCast(filename, linenum, line, raw_line, cast_type, pattern, error): """Checks for a C-style cast by looking for the pattern. - This also handles sizeof(type) warnings, due to similarity of content. - Args: filename: The name of the current file. linenum: The number of the line to check. @@ -3468,40 +4154,68 @@ def CheckCStyleCast(filename, linenum, line, raw_line, cast_type, pattern, if not match: return False - # e.g., sizeof(int) + # Exclude lines with sizeof, since sizeof looks like a cast. sizeof_match = Match(r'.*sizeof\s*$', line[0:match.start(1) - 1]) if sizeof_match: - error(filename, linenum, 'runtime/sizeof', 1, - 'Using sizeof(type). Use sizeof(varname) instead if possible') - return True + return False # operator++(int) and operator--(int) if (line[0:match.start(1) - 1].endswith(' operator++') or line[0:match.start(1) - 1].endswith(' operator--')): return False - remainder = line[match.end(0):] - - # The close paren is for function pointers as arguments to a function. - # eg, void foo(void (*bar)(int)); - # The semicolon check is a more basic function check; also possibly a - # function pointer typedef. - # eg, void foo(int); or void foo(int) const; - # The equals check is for function pointer assignment. - # eg, void *(*foo)(int) = ... - # The > is for MockCallback<...> ... + # A single unnamed argument for a function tends to look like old + # style cast. If we see those, don't issue warnings for deprecated + # casts, instead issue warnings for unnamed arguments where + # appropriate. # - # Right now, this will only catch cases where there's a single argument, and - # it's unnamed. It should probably be expanded to check for multiple - # arguments with some unnamed. - function_match = Match(r'\s*(\)|=|(const)?\s*(;|\{|throw\(\)|>))', remainder) - if function_match: - if (not function_match.group(3) or - function_match.group(3) == ';' or - ('MockCallback<' not in raw_line and - '/*' not in raw_line)): - error(filename, linenum, 'readability/function', 3, - 'All parameters should be named in a function') + # These are things that we want warnings for, since the style guide + # explicitly require all parameters to be named: + # Function(int); + # Function(int) { + # ConstMember(int) const; + # ConstMember(int) const { + # ExceptionMember(int) throw (...); + # ExceptionMember(int) throw (...) { + # PureVirtual(int) = 0; + # + # These are functions of some sort, where the compiler would be fine + # if they had named parameters, but people often omit those + # identifiers to reduce clutter: + # (FunctionPointer)(int); + # (FunctionPointer)(int) = value; + # Function((function_pointer_arg)(int)) + # ; + # <(FunctionPointerTemplateArgument)(int)>; + remainder = line[match.end(0):] + if Match(r'^\s*(?:;|const\b|throw\b|=|>|\{|\))', remainder): + # Looks like an unnamed parameter. + + # Don't warn on any kind of template arguments. + if Match(r'^\s*>', remainder): + return False + + # Don't warn on assignments to function pointers, but keep warnings for + # unnamed parameters to pure virtual functions. Note that this pattern + # will also pass on assignments of "0" to function pointers, but the + # preferred values for those would be "nullptr" or "NULL". + matched_zero = Match(r'^\s=\s*(\S+)\s*;', remainder) + if matched_zero and matched_zero.group(1) != '0': + return False + + # Don't warn on function pointer declarations. For this we need + # to check what came before the "(type)" string. + if Match(r'.*\)\s*$', line[0:match.start(0)]): + return False + + # Don't warn if the parameter is named with block comments, e.g.: + # Function(int /*unused_param*/); + if '/*' in raw_line: + return False + + # Passed all filters, issue warning here. + error(filename, linenum, 'readability/function', 3, + 'All parameters should be named in a function') return True # At this point, all that should be left is actual casts. @@ -3762,8 +4476,7 @@ def CheckMakePairUsesDeduction(filename, clean_lines, linenum, error): linenum: The number of the line to check. error: The function to call with any errors found. """ - raw = clean_lines.raw_lines - line = raw[linenum] + line = clean_lines.elided[linenum] match = _RE_PATTERN_EXPLICIT_MAKEPAIR.search(line) if match: error(filename, linenum, 'build/explicit_make_pair', @@ -3802,9 +4515,11 @@ def ProcessLine(filename, file_extension, clean_lines, line, CheckForMultilineCommentsAndStrings(filename, clean_lines, line, error) CheckStyle(filename, clean_lines, line, file_extension, nesting_state, error) CheckLanguage(filename, clean_lines, line, file_extension, include_state, - error) + nesting_state, error) + CheckForNonConstReference(filename, clean_lines, line, nesting_state, error) CheckForNonStandardConstructs(filename, clean_lines, line, nesting_state, error) + CheckVlogArguments(filename, clean_lines, line, error) CheckPosixThreading(filename, clean_lines, line, error) CheckInvalidIncrement(filename, clean_lines, line, error) CheckMakePairUsesDeduction(filename, clean_lines, line, error) @@ -3846,13 +4561,13 @@ def ProcessFileData(filename, file_extension, lines, error, ProcessLine(filename, file_extension, clean_lines, line, include_state, function_state, nesting_state, error, extra_check_functions) - nesting_state.CheckClassFinished(filename, error) + nesting_state.CheckCompletedBlocks(filename, error) CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error) # We check here rather than inside ProcessLine so that we see raw # lines rather than "cleaned" lines. - CheckForUnicodeReplacementCharacters(filename, lines, error) + CheckForBadCharacters(filename, lines, error) CheckForNewlineAtEOF(filename, lines, error) @@ -3908,9 +4623,9 @@ def ProcessFile(filename, vlevel, extra_check_functions=[]): # When reading from stdin, the extension is unknown, so no cpplint tests # should rely on the extension. - if (filename != '-' and file_extension != 'cc' and file_extension != 'h' - and file_extension != 'cpp'): - sys.stderr.write('Ignoring %s; not a .cc or .h file\n' % filename) + if filename != '-' and file_extension not in _valid_extensions: + sys.stderr.write('Ignoring %s; not a valid file name ' + '(%s)\n' % (filename, ', '.join(_valid_extensions))) else: ProcessFileData(filename, file_extension, lines, Error, extra_check_functions) @@ -3961,7 +4676,9 @@ def ParseArguments(args): (opts, filenames) = getopt.getopt(args, '', ['help', 'output=', 'verbose=', 'counting=', 'filter=', - 'root=']) + 'root=', + 'linelength=', + 'extensions=']) except getopt.GetoptError: PrintUsage('Invalid arguments.') @@ -3974,7 +4691,7 @@ def ParseArguments(args): if opt == '--help': PrintUsage(None) elif opt == '--output': - if not val in ('emacs', 'vs7', 'eclipse'): + if val not in ('emacs', 'vs7', 'eclipse'): PrintUsage('The only allowed output formats are emacs, vs7 and eclipse.') output_format = val elif opt == '--verbose': @@ -3990,6 +4707,18 @@ def ParseArguments(args): elif opt == '--root': global _root _root = val + elif opt == '--linelength': + global _line_length + try: + _line_length = int(val) + except ValueError: + PrintUsage('Line length must be digits.') + elif opt == '--extensions': + global _valid_extensions + try: + _valid_extensions = set(val.split(',')) + except ValueError: + PrintUsage('Extensions must be comma seperated list.') if not filenames: PrintUsage('No files were specified.') diff --git a/dist/cpplint.py.README b/dist/cpplint.py.README new file mode 100644 index 000000000..41e719db2 --- /dev/null +++ b/dist/cpplint.py.README @@ -0,0 +1,2 @@ +While using cpplint.py use the following options: +--root=src diff --git a/dist/cpplint.sh b/dist/cpplint.sh new file mode 100755 index 000000000..67bd01838 --- /dev/null +++ b/dist/cpplint.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +dire=$1 +if [ x$dire == "x" ];then + dire="src" +fi + +find $dire -regex '.*\.\(h\|cpp\|mm\)' -type f -exec ./dist/cpplint.py --root=src {} 2>&1 \; diff --git a/dist/format.py b/dist/format.py new file mode 100644 index 000000000..834c058d7 --- /dev/null +++ b/dist/format.py @@ -0,0 +1,74 @@ +import argparse +import difflib +import os +import subprocess +import sys +import urllib2 + + +def main(): + parser = argparse.ArgumentParser( + description='Reformats C++ source files that have changed from a given ' + 'git ref.') + parser.add_argument('--url', + default='http://clang.clementine-player.org/format', + help='a URL of a Clang-in-the-cloud service') + parser.add_argument('--ref', default='origin/master', + help='the git-ref to compare against') + parser.add_argument('--extension', action='append', metavar='EXT', + default=['cc', 'cpp', 'h', 'c', 'cxx', 'm', 'mm'], + help='file extensions to reformat') + parser.add_argument('-i', dest='inplace', action='store_true', + help='edit files inplace instead of showing a diff') + args = parser.parse_args() + + try: + root_dir = subprocess.check_output([ + 'git', 'rev-parse', '--show-toplevel']).strip() + except subprocess.CalledProcessError: + # Probably we were not called from a git working directory, just ignore this + # error. + return + + changed_files = subprocess.check_output([ + 'git', 'diff-index', args.ref, '--name-only']).splitlines() + + if not changed_files: + print >> sys.stderr, 'No changes from %s' % args.ref + return + + for filename in changed_files: + if not os.path.splitext(filename)[1][1:] in args.extension: + continue + + path = os.path.join(root_dir, filename) + if not os.path.exists(path): + # Probably a deletion + continue + original = open(path).read() + response = urllib2.urlopen(args.url, original) + formatted = response.read() + + if original == formatted: + print >> sys.stderr, '%s: formatting is correct!' % filename + continue + + diff = difflib.unified_diff( + original.split('\n'), formatted.split('\n'), + os.path.join('a', filename), os.path.join('b', filename), + lineterm='') + + if args.inplace: + with open(path, 'w') as fh: + fh.write(formatted) + + print >> sys.stderr, '%s: %d insertion(s), %d deletion(s)' % ( + filename, + sum(1 for x in diff if x.startswith('+')), + sum(1 for x in diff if x.startswith('-'))) + else: + print '\n'.join(diff) + + +if __name__ == '__main__': + main() diff --git a/dist/googlecode_upload.py b/dist/googlecode_upload.py deleted file mode 100644 index d2d5f974c..000000000 --- a/dist/googlecode_upload.py +++ /dev/null @@ -1,248 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2006, 2007 Google Inc. All Rights Reserved. -# Author: danderson@google.com (David Anderson) -# -# Script for uploading files to a Google Code project. -# -# This is intended to be both a useful script for people who want to -# streamline project uploads and a reference implementation for -# uploading files to Google Code projects. -# -# To upload a file to Google Code, you need to provide a path to the -# file on your local machine, a small summary of what the file is, a -# project name, and a valid account that is a member or owner of that -# project. You can optionally provide a list of labels that apply to -# the file. The file will be uploaded under the same name that it has -# in your local filesystem (that is, the "basename" or last path -# component). Run the script with '--help' to get the exact syntax -# and available options. -# -# Note that the upload script requests that you enter your -# googlecode.com password. This is NOT your Gmail account password! -# This is the password you use on googlecode.com for committing to -# Subversion and uploading files. You can find your password by going -# to http://code.google.com/hosting/settings when logged in with your -# Gmail account. If you have already committed to your project's -# Subversion repository, the script will automatically retrieve your -# credentials from there (unless disabled, see the output of '--help' -# for details). -# -# If you are looking at this script as a reference for implementing -# your own Google Code file uploader, then you should take a look at -# the upload() function, which is the meat of the uploader. You -# basically need to build a multipart/form-data POST request with the -# right fields and send it to https://PROJECT.googlecode.com/files . -# Authenticate the request using HTTP Basic authentication, as is -# shown below. -# -# Licensed under the terms of the Apache Software License 2.0: -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Questions, comments, feature requests and patches are most welcome. -# Please direct all of these to the Google Code users group: -# http://groups.google.com/group/google-code-hosting - -"""Google Code file uploader script. -""" - -__author__ = 'danderson@google.com (David Anderson)' - -import httplib -import os.path -import optparse -import getpass -import base64 -import sys - - -def upload(file, project_name, user_name, password, summary, labels=None): - """Upload a file to a Google Code project's file server. - - Args: - file: The local path to the file. - project_name: The name of your project on Google Code. - user_name: Your Google account name. - password: The googlecode.com password for your account. - Note that this is NOT your global Google Account password! - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - - Returns: a tuple: - http_status: 201 if the upload succeeded, something else if an - error occured. - http_reason: The human-readable string associated with http_status - file_url: If the upload succeeded, the URL of the file on Google - Code, None otherwise. - """ - # The login is the user part of user@gmail.com. If the login provided - # is in the full user@domain form, strip it down. - if user_name.endswith('@gmail.com'): - user_name = user_name[:user_name.index('@gmail.com')] - - form_fields = [('summary', summary)] - if labels is not None: - form_fields.extend([('label', l.strip()) for l in labels]) - - content_type, body = encode_upload_request(form_fields, file) - - upload_host = '%s.googlecode.com' % project_name - upload_uri = '/files' - auth_token = base64.b64encode('%s:%s'% (user_name, password)) - headers = { - 'Authorization': 'Basic %s' % auth_token, - 'User-Agent': 'Googlecode.com uploader v0.9.4', - 'Content-Type': content_type, - } - - server = httplib.HTTPSConnection(upload_host) - server.request('POST', upload_uri, body, headers) - resp = server.getresponse() - server.close() - - if resp.status == 201: - location = resp.getheader('Location', None) - else: - location = None - return resp.status, resp.reason, location - - -def encode_upload_request(fields, file_path): - """Encode the given fields and file into a multipart form body. - - fields is a sequence of (name, value) pairs. file is the path of - the file to upload. The file will be uploaded to Google Code with - the same file name. - - Returns: (content_type, body) ready for httplib.HTTP instance - """ - BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla' - CRLF = '\r\n' - - body = [] - - # Add the metadata about the upload first - for key, value in fields: - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="%s"' % key, - '', - value, - ]) - - # Now add the file itself - file_name = os.path.basename(file_path) - f = open(file_path, 'rb') - file_content = f.read() - f.close() - - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="filename"; filename="%s"' - % file_name, - # The upload server determines the mime-type, no need to set it. - 'Content-Type: application/octet-stream', - '', - file_content, - ]) - - # Finalize the form body - body.extend(['--' + BOUNDARY + '--', '']) - - return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body) - - -def upload_find_auth(file_path, project_name, summary, labels=None, - user_name=None, password=None, tries=3): - """Find credentials and upload a file to a Google Code project's file server. - - file_path, project_name, summary, and labels are passed as-is to upload. - - Args: - file_path: The local path to the file. - project_name: The name of your project on Google Code. - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - config_dir: Path to Subversion configuration directory, 'none', or None. - user_name: Your Google account name. - tries: How many attempts to make. - """ - - while tries > 0: - if user_name is None: - # Read username if not specified or loaded from svn config, or on - # subsequent tries. - sys.stdout.write('Please enter your googlecode.com username: ') - sys.stdout.flush() - user_name = sys.stdin.readline().rstrip() - if password is None: - # Read password if not loaded from svn config, or on subsequent tries. - print 'Please enter your googlecode.com password.' - print '** Note that this is NOT your Gmail account password! **' - print 'It is the password you use to access Subversion repositories,' - print 'and can be found here: http://code.google.com/hosting/settings' - password = getpass.getpass() - - status, reason, url = upload(file_path, project_name, user_name, password, - summary, labels) - # Returns 403 Forbidden instead of 401 Unauthorized for bad - # credentials as of 2007-07-17. - if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]: - # Rest for another try. - user_name = password = None - tries = tries - 1 - else: - # We're done. - break - - return status, reason, url - - -def main(): - parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY ' - '-p PROJECT [options] FILE') - parser.add_option('-s', '--summary', dest='summary', - help='Short description of the file') - parser.add_option('-p', '--project', dest='project', - help='Google Code project name') - parser.add_option('-u', '--user', dest='user', - help='Your Google Code username') - parser.add_option('-w', '--password', dest='password', - help='Your Google Code password') - parser.add_option('-l', '--labels', dest='labels', - help='An optional list of comma-separated labels to attach ' - 'to the file') - - options, args = parser.parse_args() - - if not options.summary: - parser.error('File summary is missing.') - elif not options.project: - parser.error('Project name is missing.') - elif len(args) < 1: - parser.error('File to upload not provided.') - elif len(args) > 1: - parser.error('Only one file may be specified.') - - file_path = args[0] - - if options.labels: - labels = options.labels.split(',') - else: - labels = None - - status, reason, url = upload_find_auth(file_path, options.project, - options.summary, labels, - options.user, options.password) - if url: - print 'The file was uploaded successfully.' - print 'URL: %s' % url - return 0 - else: - print 'An error occurred. Your file was not uploaded.' - print 'Google Code upload server said: %s (%s)' % (reason, status) - return 1 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/dist/googlecode_upload_all.py b/dist/googlecode_upload_all.py deleted file mode 100644 index dbb3500d5..000000000 --- a/dist/googlecode_upload_all.py +++ /dev/null @@ -1,258 +0,0 @@ -import getpass -import os -import re -import subprocess -import sys - -import googlecode_upload - - -PROJECT_NAME = "clementine-player" - -FILENAME_PATTERNS = { - "deb": "clementine_%(major)s.%(minor)s.%(patch)s%(tildeprerelease)s~%(distro)s_%(debarch)s.deb", - "rpm": "clementine-%(major)s.%(minor)s.%(patch)s-%(rpmrelease)s.%(distro)s.%(rpmarch)s.rpm", - "exe": "ClementineSetup-%(major)s.%(minor)s.%(patch)s%(prerelease)s.exe", - "dmg": "clementine-%(major)s.%(minor)s.%(patch)s%(prerelease)s.dmg", - "tar.gz": "clementine-%(major)s.%(minor)s.%(patch)s%(prerelease)s.tar.gz", -} - -LABELS = { - "deb": ["Type-Package", "OpSys-Linux"], - "rpm": ["Type-Package", "OpSys-Linux", "Distro-Fedora"], - "exe": ["Type-Package", "OpSys-Windows", "Arch-i386"], - "dmg": ["Type-Package", "OpSys-OSX", "Distro-Lion", "Arch-x86-64"], - 32: ["Arch-i386"], - 64: ["Arch-x86-64"], - "lucid": ["Distro-Ubuntu"], - "precise": ["Distro-Ubuntu"], - "quantal": ["Distro-Ubuntu"], - "raring": ["Distro-Ubuntu"], - "saucy": ["Distro-Ubuntu"], - "squeeze": ["Distro-Debian"], - "wheezy": ["Distro-Debian"], -} - - -MIN_SIZE = { - "deb": 5000000, - "rpm": 4000000, - "exe": 18000000, - "dmg": 24000000, - "tar.gz": 8000000, -} - -DEB_ARCH = { - 32: "i386", - 64: "amd64", -} - -RPM_ARCH = { - 32: "i686", - 64: "x86_64", -} - -DESCRIPTIONS = { - ("deb", "lucid"): "for Ubuntu Lucid (10.04)", - ("deb", "precise"): "for Ubuntu Precise (12.04)", - ("deb", "quantal"): "for Ubuntu Quantal (12.10)", - ("deb", "raring"): "for Ubuntu Raring (13.04)", - ("deb", "saucy"): "for Ubuntu Saucy (13.10)", - ("deb", "squeeze"): "for Debian Squeeze", - ("deb", "wheezy"): "for Debian Wheezy", - ("rpm", "fc18"): "for Fedora 18", - ("rpm", "fc19"): "for Fedora 19", - ("exe", None): "for Windows", - ("dmg", None): "for Mac OS X", - ("tar.gz", None): "source", -} - -RELEASES = [ - ("deb", "lucid", 32), - ("deb", "lucid", 64), - ("deb", "precise", 32), - ("deb", "precise", 64), - ("deb", "quantal", 32), - ("deb", "quantal", 64), - ("deb", "raring", 32), - ("deb", "raring", 64), - ("deb", "saucy", 32), - ("deb", "saucy", 64), - ("deb", "squeeze", 32), - ("deb", "squeeze", 64), - ("deb", "wheezy", 32), - ("deb", "wheezy", 64), - ("rpm", "fc18", 32), - ("rpm", "fc18", 64), - ("rpm", "fc19", 32), - ("rpm", "fc19", 64), - ("exe", None, None), - ("dmg", None, None), - ("tar.gz", None, None), -] - - -class VersionInfo(object): - def __init__(self, root_dir): - filename = os.path.join(root_dir, "cmake/Version.cmake") - data = open(filename).read() - - self.info = { - "major": self._version(data, "MAJOR"), - "minor": self._version(data, "MINOR"), - "patch": self._version(data, "PATCH"), - "prerelease": self._version(data, "PRERELEASE"), - } - - for key, value in self.info.items(): - setattr(self, key, value) - - def _version(self, data, part): - regex = r"^set\(CLEMENTINE_VERSION_%s (\w+)\)$" % part - match = re.search(regex, data, re.MULTILINE) - - if not match: - return "" - - return match.group(1) - - def filename(self, release): - (package, distro, arch) = release - - data = dict(self.info) - data["distro"] = distro - data["rpmarch"] = RPM_ARCH.get(arch, None) - data["debarch"] = DEB_ARCH.get(arch, None) - data["tildeprerelease"] = "" - data["rpmrelease"] = "1" - - if data["prerelease"]: - data["tildeprerelease"] = "~%s" % data["prerelease"] - data["rpmrelease"] = "0.%s" % data["prerelease"] - - return FILENAME_PATTERNS[package] % data - - def description(self, release): - (package, distro, arch) = release - - version_name = "%(major)s.%(minor)s" % self.info - - if self.patch is not "0": - version_name += ".%s" % self.patch - - if self.prerelease: - version_name += " %s" % self.prerelease.upper() - - os_name = DESCRIPTIONS[(package, distro)] - - if arch is not None: - os_name += " %d-bit" % arch - - return "Clementine %s %s" % (version_name, os_name) - - def labels(self, release): - (package, distro, arch) = release - - labels = LABELS.get(package, []) + \ - LABELS.get(distro, []) + \ - LABELS.get(arch, []) - - if self.prerelease.startswith("rc"): - labels.append("Release-RC") - elif self.prerelease.startswith("beta"): - labels.append("Release-Beta") - else: - labels.append("Release-Stable") - - return labels - - -def get_google_code_password(username): - # Try to read it from the .netrc first - NETRC_REGEX = re.compile( - r'^machine\s+code\.google\.com\s+' - r'login\s+([^@]+)@[^\s]+\s+' - r'password\s+([^\s+])') - - try: - for line in open(os.path.expanduser("~/.netrc")): - match = NETRC_REGEX.match(line) - if match and match.group(1) == username: - print "Using password from ~/.netrc" - return match.group(2) - except IOError: - pass - - # Prompt the user - password = getpass.getpass("Google Code password (different to your Google account): ") - if not password: - return None - - return password - - -def main(): - dist_dir = os.path.dirname(os.path.abspath(__file__)) - root_dir = os.path.normpath(os.path.join(dist_dir, "..")) - - # Read the version file - version = VersionInfo(root_dir) - - # Display the files that will be uploaded - for release in RELEASES: - filename = version.filename(release) - description = version.description(release) - - if not os.path.exists(filename): - print - print "%s - file not found" % filename - print "Run this script from a directory containing all the release packages" - return 1 - - size = os.path.getsize(filename) - - if size < MIN_SIZE[release[0]]: - print - print "%s - file not big enough" % filename - print "%s files are expected to be at least %d bytes, but this was %d bytes" % ( - release[0], MIN_SIZE[release[0]], size) - return 1 - - labels = version.labels(release) - - print "%-40s %15s %-55s %s" % (filename, "%d bytes" % size, description, " ".join(sorted(labels))) - - print - - # Prompt for username and password - username = raw_input("Google username: ") - if not username: - return 1 - - password = get_google_code_password(username) - if password is None: - return 1 - - print - - # Upload everything - for release in RELEASES: - (status, reason, url) = googlecode_upload.upload( - file=version.filename(release), - project_name=PROJECT_NAME, - user_name=username, - password=password, - summary=version.description(release), - labels=version.labels(release), - ) - - if status != 201: - print "%s: (%d) %s" % (version.filename(release), status, reason) - else: - print "Uploaded %s" % url - - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/dist/uploadtoppa.sh b/dist/uploadtoppa.sh index 1c71d3cb8..a53a3ae0d 100755 --- a/dist/uploadtoppa.sh +++ b/dist/uploadtoppa.sh @@ -10,7 +10,7 @@ if [ -z "$REFSPEC" -o -z "$DIST" ]; then fi PPA=ppa:me-davidsansome/clementine -REPO=https://code.google.com/p/clementine-player/ +REPO=https://github.com/clementine-player/Clementine BASE=`pwd` DIRECTORY=clementine diff --git a/dist/windows/clementine.nsi.in b/dist/windows/clementine.nsi.in index 2c6d833d6..babdcea65 100644 --- a/dist/windows/clementine.nsi.in +++ b/dist/windows/clementine.nsi.in @@ -46,7 +46,62 @@ SetCompressor /SOLID lzma !insertmacro MUI_UNPAGE_INSTFILES !insertmacro MUI_UNPAGE_FINISH -!insertmacro MUI_LANGUAGE "English" +!insertmacro MUI_LANGUAGE "English" ;first language is the default language +!insertmacro MUI_LANGUAGE "French" +!insertmacro MUI_LANGUAGE "German" +!insertmacro MUI_LANGUAGE "Spanish" +!insertmacro MUI_LANGUAGE "SpanishInternational" +!insertmacro MUI_LANGUAGE "SimpChinese" +!insertmacro MUI_LANGUAGE "TradChinese" +!insertmacro MUI_LANGUAGE "Japanese" +!insertmacro MUI_LANGUAGE "Korean" +!insertmacro MUI_LANGUAGE "Italian" +!insertmacro MUI_LANGUAGE "Dutch" +!insertmacro MUI_LANGUAGE "Danish" +!insertmacro MUI_LANGUAGE "Swedish" +!insertmacro MUI_LANGUAGE "Norwegian" +!insertmacro MUI_LANGUAGE "NorwegianNynorsk" +!insertmacro MUI_LANGUAGE "Finnish" +!insertmacro MUI_LANGUAGE "Greek" +!insertmacro MUI_LANGUAGE "Russian" +!insertmacro MUI_LANGUAGE "Portuguese" +!insertmacro MUI_LANGUAGE "PortugueseBR" +!insertmacro MUI_LANGUAGE "Polish" +!insertmacro MUI_LANGUAGE "Ukrainian" +!insertmacro MUI_LANGUAGE "Czech" +!insertmacro MUI_LANGUAGE "Slovak" +!insertmacro MUI_LANGUAGE "Croatian" +!insertmacro MUI_LANGUAGE "Bulgarian" +!insertmacro MUI_LANGUAGE "Hungarian" +!insertmacro MUI_LANGUAGE "Thai" +!insertmacro MUI_LANGUAGE "Romanian" +!insertmacro MUI_LANGUAGE "Latvian" +!insertmacro MUI_LANGUAGE "Macedonian" +!insertmacro MUI_LANGUAGE "Estonian" +!insertmacro MUI_LANGUAGE "Turkish" +!insertmacro MUI_LANGUAGE "Lithuanian" +!insertmacro MUI_LANGUAGE "Slovenian" +!insertmacro MUI_LANGUAGE "Serbian" +!insertmacro MUI_LANGUAGE "SerbianLatin" +!insertmacro MUI_LANGUAGE "Arabic" +!insertmacro MUI_LANGUAGE "Farsi" +!insertmacro MUI_LANGUAGE "Hebrew" +!insertmacro MUI_LANGUAGE "Indonesian" +!insertmacro MUI_LANGUAGE "Mongolian" +!insertmacro MUI_LANGUAGE "Luxembourgish" +!insertmacro MUI_LANGUAGE "Albanian" +!insertmacro MUI_LANGUAGE "Breton" +!insertmacro MUI_LANGUAGE "Belarusian" +!insertmacro MUI_LANGUAGE "Icelandic" +!insertmacro MUI_LANGUAGE "Malay" +!insertmacro MUI_LANGUAGE "Bosnian" +!insertmacro MUI_LANGUAGE "Kurdish" +!insertmacro MUI_LANGUAGE "Irish" +!insertmacro MUI_LANGUAGE "Uzbek" +!insertmacro MUI_LANGUAGE "Galician" +!insertmacro MUI_LANGUAGE "Afrikaans" +!insertmacro MUI_LANGUAGE "Catalan" +!insertmacro MUI_LANGUAGE "Esperanto" Name "${PRODUCT_NAME}" OutFile "${PRODUCT_NAME}Setup-@CLEMENTINE_VERSION_SPARKLE@.exe" @@ -56,6 +111,12 @@ ShowUnInstDetails show @NORMAL@RequestExecutionLevel admin @PORTABLE@RequestExecutionLevel user +Function .onInit + + !insertmacro MUI_LANGDLL_DISPLAY + +FunctionEnd + Function RunClementine ShellExecAsUser::ShellExecAsUser "" "$INSTDIR/clementine.exe" "" FunctionEnd @@ -124,6 +185,15 @@ Section "Delete old files" oldfiles Delete "$INSTDIR\libimobiledevice-1.dll" Delete "$INSTDIR\libplist.dll" Delete "$INSTDIR\libusbmuxd.dll" + + ; Dependencies bump + Delete "$INSTDIR\intl.dll" + Delete "$INSTDIR\libexpat-1.dll" + Delete "$INSTDIR\libgcrypt-11.dll" + Delete "$INSTDIR\libgdk_pixbuf-2.0.0.dll" + Delete "$INSTDIR\libgnutls-26.dll" + Delete "$INSTDIR\libpng14-14.dll" + Delete "$INSTDIR\libtasn1-3.dll" SectionEnd Section "Clementine" Clementine @@ -137,21 +207,20 @@ Section "Clementine" Clementine File "clementine-spotifyblob.exe" File "clementine.ico" File "glew32.dll" - File "intl.dll" File "libcdio-14.dll" File "libeay32.dll" - File "libexpat-1.dll" File "libfaac.dll" File "libfaad.dll" + File "libffi-6.dll" File "libfftw3-3.dll" File "libFLAC.dll" File "libgcc_s_sjlj-1.dll" - File "libgcrypt-11.dll" - File "libgdk_pixbuf-2.0-0.dll" + File "libgcrypt-20.dll" File "libgio-2.0-0.dll" File "libglib-2.0-0.dll" File "libgmodule-2.0-0.dll" - File "libgnutls-26.dll" + File "libgmp-10.dll" + File "libgnutls-28.dll" File "libgobject-2.0-0.dll" File "libgpg-error-0.dll" File "libgstapp-0.10-0.dll" @@ -172,17 +241,20 @@ Section "Clementine" Clementine File "libgstsdp-0.10-0.dll" File "libgsttag-0.10-0.dll" File "libgthread-2.0-0.dll" + File "libhogweed-2-4.dll" + File "libiconv-2.dll" File "libid3tag.dll" + File "libintl-8.dll" File "liblastfm.dll" File "libmad.dll" File "libmms-0.dll" File "libmp3lame-0.dll" + File "libnettle-4-6.dll" File "libogg-0.dll" File "liboil-0.3-0.dll" File "liborc-0.4-0.dll" File "liborc-test-0.4-0.dll" File "libplist.dll" - File "libpng14-14.dll" File "libprotobuf-8.dll" File "libqjson.dll" File "libsoup-2.4-1.dll" @@ -190,7 +262,7 @@ Section "Clementine" Clementine File "libspotify.dll" File "libstdc++-6.dll" File "libtag.dll" - File "libtasn1-3.dll" + File "libtasn1-6.dll" File "libvorbis-0.dll" File "libvorbisenc-2.dll" File "libxml2-2.dll" @@ -964,6 +1036,7 @@ Section "Uninstall" Delete "$INSTDIR\libgio-2.0-0.dll" Delete "$INSTDIR\libglib-2.0-0.dll" Delete "$INSTDIR\libgmodule-2.0-0.dll" + Delete "$INSTDIR\libgmp-10.dll" Delete "$INSTDIR\libgnutls-26.dll" Delete "$INSTDIR\libgobject-2.0-0.dll" Delete "$INSTDIR\libgpg-error-0.dll" diff --git a/ext/clementine-spotifyblob/CMakeLists.txt b/ext/clementine-spotifyblob/CMakeLists.txt index 15a9c8dcc..f971216b5 100644 --- a/ext/clementine-spotifyblob/CMakeLists.txt +++ b/ext/clementine-spotifyblob/CMakeLists.txt @@ -7,6 +7,8 @@ include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-spotifyblob) include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-common) include_directories(${CMAKE_SOURCE_DIR}/src) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual -Wall -Wno-sign-compare -Wno-deprecated-declarations -Wno-unused-local-typedefs -Wno-unused-private-field -Wno-unknown-warning-option --std=c++0x -U__STRICT_ANSI__") + link_directories(${SPOTIFY_LIBRARY_DIRS}) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) diff --git a/ext/clementine-spotifyblob/main.cpp b/ext/clementine-spotifyblob/main.cpp index 7d8f61729..cce0d106c 100644 --- a/ext/clementine-spotifyblob/main.cpp +++ b/ext/clementine-spotifyblob/main.cpp @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #include #include @@ -35,7 +34,7 @@ int main(int argc, char** argv) { logging::Init(); - gst_init(NULL, NULL); + gst_init(nullptr, nullptr); const QStringList arguments(a.arguments()); diff --git a/ext/clementine-spotifyblob/mediapipeline.cpp b/ext/clementine-spotifyblob/mediapipeline.cpp index 38c3541ee..69f4c0d3f 100644 --- a/ext/clementine-spotifyblob/mediapipeline.cpp +++ b/ext/clementine-spotifyblob/mediapipeline.cpp @@ -25,15 +25,13 @@ #include MediaPipeline::MediaPipeline(int port, quint64 length_msec) - : port_(port), - length_msec_(length_msec), - accepting_data_(true), - pipeline_(NULL), - appsrc_(NULL), - byte_rate_(1), - offset_bytes_(0) -{ -} + : port_(port), + length_msec_(length_msec), + accepting_data_(true), + pipeline_(nullptr), + appsrc_(nullptr), + byte_rate_(1), + offset_bytes_(0) {} MediaPipeline::~MediaPipeline() { if (pipeline_) { @@ -43,21 +41,31 @@ MediaPipeline::~MediaPipeline() { } bool MediaPipeline::Init(int sample_rate, int channels) { - if (is_initialised()) - return false; + if (is_initialised()) return false; pipeline_ = gst_pipeline_new("pipeline"); // Create elements - appsrc_ = GST_APP_SRC(gst_element_factory_make("appsrc", NULL)); - GstElement* gdppay = gst_element_factory_make("gdppay", NULL); - tcpsink_ = gst_element_factory_make("tcpclientsink", NULL); + appsrc_ = GST_APP_SRC(gst_element_factory_make("appsrc", nullptr)); + GstElement* gdppay = gst_element_factory_make("gdppay", nullptr); + tcpsink_ = gst_element_factory_make("tcpclientsink", nullptr); if (!pipeline_ || !appsrc_ || !tcpsink_) { - if (pipeline_) { gst_object_unref(GST_OBJECT(pipeline_)); pipeline_ = NULL; } - if (appsrc_) { gst_object_unref(GST_OBJECT(appsrc_)); appsrc_ = NULL; } - if (gdppay) { gst_object_unref(GST_OBJECT(gdppay)); } - if (tcpsink_) { gst_object_unref(GST_OBJECT(tcpsink_)); tcpsink_ = NULL; } + if (pipeline_) { + gst_object_unref(GST_OBJECT(pipeline_)); + pipeline_ = nullptr; + } + if (appsrc_) { + gst_object_unref(GST_OBJECT(appsrc_)); + appsrc_ = nullptr; + } + if (gdppay) { + gst_object_unref(GST_OBJECT(gdppay)); + } + if (tcpsink_) { + gst_object_unref(GST_OBJECT(tcpsink_)); + tcpsink_ = nullptr; + } return false; } @@ -65,22 +73,23 @@ bool MediaPipeline::Init(int sample_rate, int channels) { gst_bin_add(GST_BIN(pipeline_), GST_ELEMENT(appsrc_)); gst_bin_add(GST_BIN(pipeline_), gdppay); gst_bin_add(GST_BIN(pipeline_), tcpsink_); - gst_element_link_many(GST_ELEMENT(appsrc_), gdppay, tcpsink_, NULL); + gst_element_link_many(GST_ELEMENT(appsrc_), gdppay, tcpsink_, nullptr); // Set the sink's port - g_object_set(G_OBJECT(tcpsink_), "host", "127.0.0.1", NULL); - g_object_set(G_OBJECT(tcpsink_), "port", port_, NULL); + g_object_set(G_OBJECT(tcpsink_), "host", "127.0.0.1", nullptr); + g_object_set(G_OBJECT(tcpsink_), "port", port_, nullptr); // Try to send 5 seconds of audio in advance to initially fill Clementine's // buffer. - g_object_set(G_OBJECT(tcpsink_), "ts-offset", qint64(-5 * kNsecPerSec), NULL); + g_object_set(G_OBJECT(tcpsink_), "ts-offset", qint64(-5 * kNsecPerSec), + nullptr); // We know the time of each buffer - g_object_set(G_OBJECT(appsrc_), "format", GST_FORMAT_TIME, NULL); + g_object_set(G_OBJECT(appsrc_), "format", GST_FORMAT_TIME, nullptr); // Spotify only pushes data to us every 100ms, so keep the appsrc half full // to prevent tiny stalls. - g_object_set(G_OBJECT(appsrc_), "min-percent", 50, NULL); + g_object_set(G_OBJECT(appsrc_), "min-percent", 50, nullptr); // Set callbacks for when to start/stop pushing data GstAppSrcCallbacks callbacks; @@ -88,7 +97,7 @@ bool MediaPipeline::Init(int sample_rate, int channels) { callbacks.need_data = NeedDataCallback; callbacks.seek_data = SeekDataCallback; - gst_app_src_set_callbacks(appsrc_, &callbacks, this, NULL); + gst_app_src_set_callbacks(appsrc_, &callbacks, this, nullptr); #if Q_BYTE_ORDER == Q_BIG_ENDIAN const int endianness = G_BIG_ENDIAN; @@ -97,14 +106,11 @@ bool MediaPipeline::Init(int sample_rate, int channels) { #endif // Set caps - GstCaps* caps = gst_caps_new_simple("audio/x-raw-int", - "endianness", G_TYPE_INT, endianness, - "signed", G_TYPE_BOOLEAN, TRUE, - "width", G_TYPE_INT, 16, - "depth", G_TYPE_INT, 16, - "rate", G_TYPE_INT, sample_rate, - "channels", G_TYPE_INT, channels, - NULL); + GstCaps* caps = gst_caps_new_simple( + "audio/x-raw-int", "endianness", G_TYPE_INT, endianness, "signed", + G_TYPE_BOOLEAN, TRUE, "width", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16, + "rate", G_TYPE_INT, sample_rate, "channels", G_TYPE_INT, channels, + nullptr); gst_app_src_set_caps(appsrc_, caps); gst_caps_unref(caps); @@ -115,12 +121,12 @@ bool MediaPipeline::Init(int sample_rate, int channels) { gst_app_src_set_size(appsrc_, bytes); // Ready to go - return gst_element_set_state(pipeline_, GST_STATE_PLAYING) != GST_STATE_CHANGE_FAILURE; + return gst_element_set_state(pipeline_, GST_STATE_PLAYING) != + GST_STATE_CHANGE_FAILURE; } void MediaPipeline::WriteData(const char* data, qint64 length) { - if (!is_initialised()) - return; + if (!is_initialised()) return; GstBuffer* buffer = gst_buffer_new_and_alloc(length); @@ -137,8 +143,7 @@ void MediaPipeline::WriteData(const char* data, qint64 length) { } void MediaPipeline::EndStream() { - if (!is_initialised()) - return; + if (!is_initialised()) return; gst_app_src_end_of_stream(appsrc_); } @@ -153,8 +158,9 @@ void MediaPipeline::EnoughDataCallback(GstAppSrc* src, void* data) { me->accepting_data_ = false; } -gboolean MediaPipeline::SeekDataCallback(GstAppSrc* src, guint64 offset, void * data) { - //MediaPipeline* me = reinterpret_cast(data); +gboolean MediaPipeline::SeekDataCallback(GstAppSrc* src, guint64 offset, + void* data) { + // MediaPipeline* me = reinterpret_cast(data); qLog(Debug) << "Gstreamer wants seek to" << offset; return false; diff --git a/ext/clementine-spotifyblob/mediapipeline.h b/ext/clementine-spotifyblob/mediapipeline.h index 4e965d376..32c9b0420 100644 --- a/ext/clementine-spotifyblob/mediapipeline.h +++ b/ext/clementine-spotifyblob/mediapipeline.h @@ -27,7 +27,7 @@ #include class MediaPipeline { -public: + public: MediaPipeline(int port, quint64 length_msec); ~MediaPipeline(); @@ -38,12 +38,12 @@ public: void WriteData(const char* data, qint64 length); void EndStream(); -private: + private: static void NeedDataCallback(GstAppSrc* src, guint length, void* data); static void EnoughDataCallback(GstAppSrc* src, void* data); static gboolean SeekDataCallback(GstAppSrc* src, guint64 offset, void* data); -private: + private: Q_DISABLE_COPY(MediaPipeline) const int port_; @@ -59,4 +59,4 @@ private: quint64 offset_bytes_; }; -#endif // MEDIAPIPELINE_H +#endif // MEDIAPIPELINE_H diff --git a/ext/clementine-spotifyblob/spotify_utilities.cpp b/ext/clementine-spotifyblob/spotify_utilities.cpp index d49676c85..cfc077b96 100644 --- a/ext/clementine-spotifyblob/spotify_utilities.cpp +++ b/ext/clementine-spotifyblob/spotify_utilities.cpp @@ -31,7 +31,8 @@ namespace utilities { QString GetCacheDirectory() { QString user_cache = GetUserDataDirectory(); - return user_cache + "/" + QCoreApplication::applicationName() + "/spotify-cache"; + return user_cache + "/" + QCoreApplication::applicationName() + + "/spotify-cache"; } #ifndef Q_OS_DARWIN // See spotify_utilities.mm for Mac implementation. @@ -47,10 +48,11 @@ QString GetSettingsDirectory() { QString ret; #ifdef Q_OS_WIN32 - ret = GetUserDataDirectory() + "/" + QCoreApplication::applicationName() + "/spotify-settings"; + ret = GetUserDataDirectory() + "/" + QCoreApplication::applicationName() + + "/spotify-settings"; #else ret = QFileInfo(QSettings().fileName()).absolutePath() + "/spotify-settings"; -#endif // Q_OS_WIN32 +#endif // Q_OS_WIN32 // Create the directory QDir dir; @@ -59,6 +61,6 @@ QString GetSettingsDirectory() { return ret; } -#endif // Q_OS_DARWIN +#endif // Q_OS_DARWIN } // namespace utilities diff --git a/ext/clementine-spotifyblob/spotify_utilities.h b/ext/clementine-spotifyblob/spotify_utilities.h index 77481a540..52f103453 100644 --- a/ext/clementine-spotifyblob/spotify_utilities.h +++ b/ext/clementine-spotifyblob/spotify_utilities.h @@ -32,7 +32,6 @@ QString GetUserDataDirectory(); QString GetCacheDirectory(); QString GetSettingsDirectory(); - } #endif diff --git a/ext/clementine-spotifyblob/spotify_utilities.mm b/ext/clementine-spotifyblob/spotify_utilities.mm index dcfad233b..b8a564b9b 100644 --- a/ext/clementine-spotifyblob/spotify_utilities.mm +++ b/ext/clementine-spotifyblob/spotify_utilities.mm @@ -10,10 +10,8 @@ QString GetUserDataDirectory() { NSAutoreleasePool* pool = [NSAutoreleasePool alloc]; [pool init]; - NSArray* paths = NSSearchPathForDirectoriesInDomains( - NSCachesDirectory, - NSUserDomainMask, - YES); + NSArray* paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, + NSUserDomainMask, YES); QString ret; if ([paths count] > 0) { NSString* user_path = [paths objectAtIndex:0]; @@ -28,9 +26,7 @@ QString GetUserDataDirectory() { QString GetSettingsDirectory() { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSArray* paths = NSSearchPathForDirectoriesInDomains( - NSApplicationSupportDirectory, - NSUserDomainMask, - YES); + NSApplicationSupportDirectory, NSUserDomainMask, YES); NSString* ret; if ([paths count] > 0) { ret = [paths objectAtIndex:0]; @@ -40,15 +36,13 @@ QString GetSettingsDirectory() { ret = [ret stringByAppendingString:@"/Clementine/spotify-settings"]; NSFileManager* file_manager = [NSFileManager defaultManager]; - [file_manager createDirectoryAtPath: - ret - withIntermediateDirectories:YES - attributes:nil - error:nil]; + [file_manager createDirectoryAtPath:ret + withIntermediateDirectories:YES + attributes:nil + error:nil]; QString path = QString::fromUtf8([ret UTF8String]); [pool drain]; return path; } - } diff --git a/ext/clementine-spotifyblob/spotifyclient.cpp b/ext/clementine-spotifyblob/spotifyclient.cpp index e89ef0991..df10375b5 100644 --- a/ext/clementine-spotifyblob/spotifyclient.cpp +++ b/ext/clementine-spotifyblob/spotifyclient.cpp @@ -18,14 +18,9 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. -#include - -#include "mediapipeline.h" #include "spotifyclient.h" -#include "spotifykey.h" -#include "spotifymessages.pb.h" -#include "spotify_utilities.h" -#include "core/logging.h" + +#include #include #include @@ -33,21 +28,28 @@ #include #include +#include "core/arraysize.h" +#include "core/logging.h" +#include "mediapipeline.h" +#include "spotifykey.h" +#include "spotifymessages.pb.h" +#include "spotify_utilities.h" + const int SpotifyClient::kSpotifyImageIDSize = 20; const int SpotifyClient::kWaveHeaderSize = 44; - SpotifyClient::SpotifyClient(QObject* parent) - : AbstractMessageHandler(NULL, parent), - api_key_(QByteArray::fromBase64(kSpotifyApiKey)), - protocol_socket_(new QTcpSocket(this)), - session_(NULL), - events_timer_(new QTimer(this)) { + : AbstractMessageHandler(nullptr, parent), + api_key_(QByteArray::fromBase64(kSpotifyApiKey)), + protocol_socket_(new QTcpSocket(this)), + session_(nullptr), + events_timer_(new QTimer(this)) { SetDevice(protocol_socket_); memset(&spotify_callbacks_, 0, sizeof(spotify_callbacks_)); memset(&spotify_config_, 0, sizeof(spotify_config_)); - memset(&playlistcontainer_callbacks_, 0, sizeof(playlistcontainer_callbacks_)); + memset(&playlistcontainer_callbacks_, 0, + sizeof(playlistcontainer_callbacks_)); memset(&get_playlists_callbacks_, 0, sizeof(get_playlists_callbacks_)); memset(&load_playlist_callbacks_, 0, sizeof(load_playlist_callbacks_)); @@ -64,15 +66,17 @@ SpotifyClient::SpotifyClient(QObject* parent) spotify_callbacks_.start_playback = &StartPlaybackCallback; spotify_callbacks_.stop_playback = &StopPlaybackCallback; - - playlistcontainer_callbacks_.container_loaded = &PlaylistContainerLoadedCallback; + playlistcontainer_callbacks_.container_loaded = + &PlaylistContainerLoadedCallback; playlistcontainer_callbacks_.playlist_added = &PlaylistAddedCallback; playlistcontainer_callbacks_.playlist_moved = &PlaylistMovedCallback; playlistcontainer_callbacks_.playlist_removed = &PlaylistRemovedCallback; - get_playlists_callbacks_.playlist_state_changed = &PlaylistStateChangedForGetPlaylists; + get_playlists_callbacks_.playlist_state_changed = + &PlaylistStateChangedForGetPlaylists; - load_playlist_callbacks_.playlist_state_changed = &PlaylistStateChangedForLoadPlaylist; + load_playlist_callbacks_.playlist_state_changed = + &PlaylistStateChangedForLoadPlaylist; QString cache = utilities::GetCacheDirectory(); qLog(Debug) << "Using:" << cache << "for Spotify cache"; @@ -111,41 +115,43 @@ void SpotifyClient::Init(quint16 port) { } void SpotifyClient::LoggedInCallback(sp_session* session, sp_error error) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); const bool success = error == SP_ERROR_OK; - pb::spotify::LoginResponse_Error error_code = pb::spotify::LoginResponse_Error_Other; + pb::spotify::LoginResponse_Error error_code = + pb::spotify::LoginResponse_Error_Other; if (!success) { qLog(Warning) << "Failed to login" << sp_error_message(error); } switch (error) { - case SP_ERROR_BAD_USERNAME_OR_PASSWORD: - error_code = pb::spotify::LoginResponse_Error_BadUsernameOrPassword; - break; - case SP_ERROR_USER_BANNED: - error_code = pb::spotify::LoginResponse_Error_UserBanned; - break; - case SP_ERROR_USER_NEEDS_PREMIUM : - error_code = pb::spotify::LoginResponse_Error_UserNeedsPremium; - break; - default: - error_code = pb::spotify::LoginResponse_Error_Other; - break; + case SP_ERROR_BAD_USERNAME_OR_PASSWORD: + error_code = pb::spotify::LoginResponse_Error_BadUsernameOrPassword; + break; + case SP_ERROR_USER_BANNED: + error_code = pb::spotify::LoginResponse_Error_UserBanned; + break; + case SP_ERROR_USER_NEEDS_PREMIUM: + error_code = pb::spotify::LoginResponse_Error_UserNeedsPremium; + break; + default: + error_code = pb::spotify::LoginResponse_Error_Other; + break; } me->SendLoginCompleted(success, sp_error_message(error), error_code); if (success) { - sp_playlistcontainer_add_callbacks( - sp_session_playlistcontainer(session), - &me->playlistcontainer_callbacks_, me); + sp_playlistcontainer_add_callbacks(sp_session_playlistcontainer(session), + &me->playlistcontainer_callbacks_, me); sp_session_flush_caches(me->session_); } } void SpotifyClient::NotifyMainThreadCallback(sp_session* session) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); QMetaObject::invokeMethod(me, "ProcessEvents", Qt::QueuedConnection); } @@ -160,14 +166,11 @@ void SpotifyClient::LogMessageCallback(sp_session* session, const char* data) { } void SpotifyClient::Search(const pb::spotify::SearchRequest& req) { - sp_search* search = sp_search_create( - session_, req.query().c_str(), - 0, req.limit(), - 0, req.limit_album(), - 0, 0, // artists - 0, 0, // playlists - SP_SEARCH_STANDARD, - &SearchCompleteCallback, this); + sp_search* search = + sp_search_create(session_, req.query().c_str(), 0, req.limit(), 0, + req.limit_album(), 0, 0, // artists + 0, 0, // playlists + SP_SEARCH_STANDARD, &SearchCompleteCallback, this); pending_searches_[search] = req; } @@ -184,10 +187,10 @@ void SpotifyClient::SearchCompleteCallback(sp_search* result, void* userdata) { // we can send our response. const int count = sp_search_num_albums(result); if (count != 0) { - for (int i=0 ; isession_, album, &SearchAlbumBrowseComplete, me); + sp_albumbrowse* browse = sp_albumbrowse_create( + me->session_, album, &SearchAlbumBrowseComplete, me); me->pending_search_album_browse_responses_[browse] = result; } @@ -197,7 +200,8 @@ void SpotifyClient::SearchCompleteCallback(sp_search* result, void* userdata) { me->SendSearchResponse(result); } -void SpotifyClient::SearchAlbumBrowseComplete(sp_albumbrowse* result, void* userdata) { +void SpotifyClient::SearchAlbumBrowseComplete(sp_albumbrowse* result, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); if (!me->pending_search_album_browse_responses_.contains(result)) { @@ -208,7 +212,8 @@ void SpotifyClient::SearchAlbumBrowseComplete(sp_albumbrowse* result, void* user sp_search* search = me->pending_search_album_browse_responses_.take(result); me->pending_search_album_browses_[search].append(result); - if (me->pending_search_album_browses_[search].count() >= sp_search_num_albums(search)) { + if (me->pending_search_album_browses_[search].count() >= + sp_search_num_albums(search)) { me->SendSearchResponse(search); } } @@ -235,14 +240,14 @@ void SpotifyClient::SendSearchResponse(sp_search* result) { // Get the list of tracks from the search int count = sp_search_num_tracks(result); - for (int i=0 ; iadd_result()); } // Get the albums from the search. All these should be resolved by now. QList browses = pending_search_album_browses_.take(result); - foreach (sp_albumbrowse* browse, browses) { + for (sp_albumbrowse* browse : browses) { sp_album* album = sp_albumbrowse_album(browse); pb::spotify::Album* msg = response->add_album(); @@ -251,7 +256,7 @@ void SpotifyClient::SendSearchResponse(sp_search* result) { // Add all tracks const int tracks = sp_albumbrowse_num_tracks(browse); - for (int i=0 ; iadd_track()); } @@ -290,16 +295,23 @@ void SpotifyClient::MessageArrived(const pb::spotify::Message& message) { } } -void SpotifyClient::SetPlaybackSettings(const pb::spotify::PlaybackSettings& req) { +void SpotifyClient::SetPlaybackSettings( + const pb::spotify::PlaybackSettings& req) { sp_bitrate bitrate = SP_BITRATE_320k; switch (req.bitrate()) { - case pb::spotify::Bitrate96k: bitrate = SP_BITRATE_96k; break; - case pb::spotify::Bitrate160k: bitrate = SP_BITRATE_160k; break; - case pb::spotify::Bitrate320k: bitrate = SP_BITRATE_320k; break; + case pb::spotify::Bitrate96k: + bitrate = SP_BITRATE_96k; + break; + case pb::spotify::Bitrate160k: + bitrate = SP_BITRATE_160k; + break; + case pb::spotify::Bitrate320k: + bitrate = SP_BITRATE_320k; + break; } - qLog(Debug) << "Setting playback settings: bitrate" - << bitrate << "normalisation" << req.volume_normalisation(); + qLog(Debug) << "Setting playback settings: bitrate" << bitrate + << "normalisation" << req.volume_normalisation(); sp_session_preferred_bitrate(session_, bitrate); sp_session_preferred_offline_bitrate(session_, bitrate, false); @@ -310,7 +322,8 @@ void SpotifyClient::Login(const pb::spotify::LoginRequest& req) { sp_error error = sp_session_create(&spotify_config_, &session_); if (error != SP_ERROR_OK) { qLog(Warning) << "Failed to create session" << sp_error_message(error); - SendLoginCompleted(false, sp_error_message(error), pb::spotify::LoginResponse_Error_Other); + SendLoginCompleted(false, sp_error_message(error), + pb::spotify::LoginResponse_Error_Other); return; } @@ -324,16 +337,15 @@ void SpotifyClient::Login(const pb::spotify::LoginRequest& req) { pb::spotify::LoginResponse_Error_ReloginFailed); } } else { - sp_session_login(session_, - req.username().c_str(), - req.password().c_str(), - true, // Remember the password. - NULL); + sp_session_login(session_, req.username().c_str(), req.password().c_str(), + true, // Remember the password. + nullptr); } } -void SpotifyClient::SendLoginCompleted(bool success, const QString& error, - pb::spotify::LoginResponse_Error error_code) { +void SpotifyClient::SendLoginCompleted( + bool success, const QString& error, + pb::spotify::LoginResponse_Error error_code) { pb::spotify::Message message; pb::spotify::LoginResponse* response = message.mutable_login_response(); @@ -347,12 +359,13 @@ void SpotifyClient::SendLoginCompleted(bool success, const QString& error, SendMessage(message); } -void SpotifyClient::PlaylistContainerLoadedCallback(sp_playlistcontainer* pc, void* userdata) { +void SpotifyClient::PlaylistContainerLoadedCallback(sp_playlistcontainer* pc, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); // Install callbacks on all the playlists const int count = sp_playlistcontainer_num_playlists(pc); - for (int i=0 ; iget_playlists_callbacks_, me); } @@ -360,7 +373,9 @@ void SpotifyClient::PlaylistContainerLoadedCallback(sp_playlistcontainer* pc, vo me->SendPlaylistList(); } -void SpotifyClient::PlaylistAddedCallback(sp_playlistcontainer* pc, sp_playlist* playlist, int position, void* userdata) { +void SpotifyClient::PlaylistAddedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, int position, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); // Install callbacks on this playlist @@ -369,12 +384,16 @@ void SpotifyClient::PlaylistAddedCallback(sp_playlistcontainer* pc, sp_playlist* me->SendPlaylistList(); } -void SpotifyClient::PlaylistMovedCallback(sp_playlistcontainer* pc, sp_playlist* playlist, int position, int new_position, void* userdata) { +void SpotifyClient::PlaylistMovedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, int position, + int new_position, void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); me->SendPlaylistList(); } -void SpotifyClient::PlaylistRemovedCallback(sp_playlistcontainer* pc, sp_playlist* playlist, int position, void* userdata) { +void SpotifyClient::PlaylistRemovedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, int position, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); // Remove callbacks from this playlist @@ -389,18 +408,19 @@ void SpotifyClient::SendPlaylistList() { sp_playlistcontainer* container = sp_session_playlistcontainer(session_); if (!container) { - qLog(Warning) << "sp_session_playlistcontainer returned NULL"; + qLog(Warning) << "sp_session_playlistcontainer returned nullptr"; return; } const int count = sp_playlistcontainer_num_playlists(container); - for (int i=0 ; imutable_request() = req; SendMessage(message); return; } - sp_playlist_add_callbacks(pending_load.playlist_, &load_playlist_callbacks_, this); + sp_playlist_add_callbacks(pending_load.playlist_, &load_playlist_callbacks_, + this); pending_load_playlists_ << pending_load; PlaylistStateChangedForLoadPlaylist(pending_load.playlist_, this); } void SpotifyClient::SyncPlaylist(const pb::spotify::SyncPlaylistRequest& req) { - sp_playlist* playlist = GetPlaylist(req.request().type(), req.request().user_playlist_index()); + sp_playlist* playlist = + GetPlaylist(req.request().type(), req.request().user_playlist_index()); // The playlist should already be loaded. sp_playlist_set_offline_mode(session_, playlist, req.offline_sync()); } -void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* userdata) { +void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); // If the playlist isn't loaded yet we have to wait @@ -499,8 +525,8 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u // Find this playlist's pending load object int pending_load_index = -1; - PendingLoadPlaylist* pending_load = NULL; - for (int i=0 ; ipending_load_playlists_.count() ; ++i) { + PendingLoadPlaylist* pending_load = nullptr; + for (int i = 0; i < me->pending_load_playlists_.count(); ++i) { if (me->pending_load_playlists_[i].playlist_ == pl) { pending_load_index = i; pending_load = &me->pending_load_playlists_[i]; @@ -516,7 +542,7 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u // If the playlist was just loaded then get all its tracks and ref them if (pending_load->tracks_.isEmpty()) { const int count = sp_playlist_num_tracks(pl); - for (int i=0 ; itracks_ << track; @@ -524,7 +550,7 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u } // If any of the tracks aren't loaded yet we have to wait - foreach (sp_track* track, pending_load->tracks_) { + for (sp_track* track : pending_load->tracks_) { if (!sp_track_is_loaded(track)) { qLog(Debug) << "One or more tracks aren't loaded yet, waiting"; return; @@ -533,17 +559,17 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u // Everything is loaded so send the response protobuf and unref everything. pb::spotify::Message message; - pb::spotify::LoadPlaylistResponse* response = message.mutable_load_playlist_response(); + pb::spotify::LoadPlaylistResponse* response = + message.mutable_load_playlist_response(); // For some reason, we receive the starred tracks in reverse order but not // other playlists. if (pending_load->request_.type() == pb::spotify::Starred) { - std::reverse(pending_load->tracks_.begin(), - pending_load->tracks_.end()); + std::reverse(pending_load->tracks_.begin(), pending_load->tracks_.end()); } *response->mutable_request() = pending_load->request_; - foreach (sp_track* track, pending_load->tracks_) { + for (sp_track* track : pending_load->tracks_) { me->ConvertTrack(track, response->add_track()); sp_track_release(track); } @@ -557,7 +583,8 @@ void SpotifyClient::PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* u me->pending_load_playlists_.removeAt(pending_load_index); } -void SpotifyClient::PlaylistStateChangedForGetPlaylists(sp_playlist* pl, void* userdata) { +void SpotifyClient::PlaylistStateChangedForGetPlaylists(sp_playlist* pl, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); me->SendPlaylistList(); @@ -576,22 +603,21 @@ void SpotifyClient::ConvertTrack(sp_track* track, pb::spotify::Track* pb) { pb->set_track(sp_track_index(track)); // Album art - const QByteArray art_id( - reinterpret_cast( - sp_album_cover(sp_track_album(track), SP_IMAGE_SIZE_LARGE)), - kSpotifyImageIDSize); + const QByteArray art_id(reinterpret_cast(sp_album_cover( + sp_track_album(track), SP_IMAGE_SIZE_LARGE)), + kSpotifyImageIDSize); const QString art_id_b64 = QString::fromAscii(art_id.toBase64()); pb->set_album_art_id(DataCommaSizeFromQString(art_id_b64)); // Artists - for (int i=0 ; iadd_artist(sp_artist_name(sp_track_artist(track, i))); } // URI - Blugh char uri[256]; sp_link* link = sp_link_create_from_track(track, 0); - sp_link_as_string(link, uri, sizeof(uri)); + sp_link_as_string(link, uri, arraysize(uri)); sp_link_release(link); pb->set_uri(uri); @@ -613,39 +639,43 @@ void SpotifyClient::ConvertAlbum(sp_album* album, pb::spotify::Track* pb) { // Album art const QByteArray art_id( - reinterpret_cast(sp_album_cover(album, SP_IMAGE_SIZE_LARGE)), - kSpotifyImageIDSize); + reinterpret_cast(sp_album_cover(album, SP_IMAGE_SIZE_LARGE)), + kSpotifyImageIDSize); const QString art_id_b64 = QString::fromAscii(art_id.toBase64()); pb->set_album_art_id(DataCommaSizeFromQString(art_id_b64)); // URI - Blugh char uri[256]; sp_link* link = sp_link_create_from_album(album); - sp_link_as_string(link, uri, sizeof(uri)); + sp_link_as_string(link, uri, arraysize(uri)); sp_link_release(link); pb->set_uri(uri); } -void SpotifyClient::ConvertAlbumBrowse(sp_albumbrowse* browse, pb::spotify::Track* pb) { +void SpotifyClient::ConvertAlbumBrowse(sp_albumbrowse* browse, + pb::spotify::Track* pb) { pb->set_track(sp_albumbrowse_num_tracks(browse)); } void SpotifyClient::MetadataUpdatedCallback(sp_session* session) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); - foreach (const PendingLoadPlaylist& load, me->pending_load_playlists_) { + for (const PendingLoadPlaylist& load : me->pending_load_playlists_) { PlaylistStateChangedForLoadPlaylist(load.playlist_, me); } - foreach (const PendingPlaybackRequest& playback, me->pending_playback_requests_) { + for (const PendingPlaybackRequest& playback : + me->pending_playback_requests_) { me->TryPlaybackAgain(playback); } } -int SpotifyClient::MusicDeliveryCallback( - sp_session* session, const sp_audioformat* format, - const void* frames, int num_frames) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); +int SpotifyClient::MusicDeliveryCallback(sp_session* session, + const sp_audioformat* format, + const void* frames, int num_frames) { + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); if (!me->media_pipeline_) { return 0; @@ -668,21 +698,23 @@ int SpotifyClient::MusicDeliveryCallback( return 0; } - me->media_pipeline_->WriteData( - reinterpret_cast(frames), - num_frames * format->channels * 2); + me->media_pipeline_->WriteData(reinterpret_cast(frames), + num_frames * format->channels * 2); return num_frames; } void SpotifyClient::EndOfTrackCallback(sp_session* session) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); me->media_pipeline_.reset(); } -void SpotifyClient::StreamingErrorCallback(sp_session* session, sp_error error) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); +void SpotifyClient::StreamingErrorCallback(sp_session* session, + sp_error error) { + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); me->media_pipeline_.reset(); @@ -690,11 +722,13 @@ void SpotifyClient::StreamingErrorCallback(sp_session* session, sp_error error) me->SendPlaybackError(QString::fromUtf8(sp_error_message(error))); } -void SpotifyClient::ConnectionErrorCallback(sp_session* session, sp_error error) { +void SpotifyClient::ConnectionErrorCallback(sp_session* session, + sp_error error) { qLog(Debug) << Q_FUNC_INFO << sp_error_message(error); } -void SpotifyClient::UserMessageCallback(sp_session* session, const char* message) { +void SpotifyClient::UserMessageCallback(sp_session* session, + const char* message) { qLog(Debug) << Q_FUNC_INFO << message; } @@ -707,17 +741,19 @@ void SpotifyClient::StopPlaybackCallback(sp_session* session) { } void SpotifyClient::OfflineStatusUpdatedCallback(sp_session* session) { - SpotifyClient* me = reinterpret_cast(sp_session_userdata(session)); + SpotifyClient* me = + reinterpret_cast(sp_session_userdata(session)); sp_playlistcontainer* container = sp_session_playlistcontainer(session); if (!container) { - qLog(Warning) << "sp_session_playlistcontainer returned NULL"; + qLog(Warning) << "sp_session_playlistcontainer returned nullptr"; return; } const int count = sp_playlistcontainer_num_playlists(container); - for (int i=0 ; imutable_request()->set_type(type); if (index != -1) { progress->mutable_request()->set_user_playlist_index(index); @@ -762,7 +799,7 @@ void SpotifyClient::SendDownloadProgress( int SpotifyClient::GetDownloadProgress(sp_playlist* playlist) { sp_playlist_offline_status status = - sp_playlist_get_offline_status(session_, playlist); + sp_playlist_get_offline_status(session_, playlist); switch (status) { case SP_PLAYLIST_OFFLINE_STATUS_NO: return -1; @@ -864,14 +901,14 @@ void SpotifyClient::LoadImage(const QString& id_b64) { PendingImageRequest pending_load; pending_load.id_ = id; pending_load.id_b64_ = id_b64; - pending_load.image_ = sp_image_create(session_, - reinterpret_cast(id.constData())); + pending_load.image_ = + sp_image_create(session_, reinterpret_cast(id.constData())); pending_image_requests_ << pending_load; if (!image_callbacks_registered_[pending_load.image_]) { sp_image_add_load_callback(pending_load.image_, &ImageLoaded, this); } - image_callbacks_registered_[pending_load.image_] ++; + image_callbacks_registered_[pending_load.image_]++; TryImageAgain(pending_load.image_); } @@ -884,8 +921,8 @@ void SpotifyClient::TryImageAgain(sp_image* image) { // Find the pending request for this image int index = -1; - PendingImageRequest* req = NULL; - for (int i=0 ; i(userdata); - if (!me->pending_album_browses_.contains(result)) - return; + if (!me->pending_album_browses_.contains(result)) return; QString uri = me->pending_album_browses_.take(result); pb::spotify::Message message; - pb::spotify::BrowseAlbumResponse* msg = message.mutable_browse_album_response(); + pb::spotify::BrowseAlbumResponse* msg = + message.mutable_browse_album_response(); msg->set_uri(DataCommaSizeFromQString(uri)); const int count = sp_albumbrowse_num_tracks(result); - for (int i=0 ; iConvertTrack(sp_albumbrowse_track(result, i), msg->add_track()); } @@ -970,32 +1008,32 @@ void SpotifyClient::AlbumBrowseComplete(sp_albumbrowse* result, void* userdata) sp_albumbrowse_release(result); } -void SpotifyClient::BrowseToplist(const pb::spotify::BrowseToplistRequest& req) { +void SpotifyClient::BrowseToplist( + const pb::spotify::BrowseToplistRequest& req) { sp_toplistbrowse* browse = sp_toplistbrowse_create( - session_, - SP_TOPLIST_TYPE_TRACKS, // TODO: Support albums and artists. - SP_TOPLIST_REGION_EVERYWHERE, // TODO: Support other regions. - NULL, - &ToplistBrowseComplete, - this); + session_, SP_TOPLIST_TYPE_TRACKS, // TODO: Support albums and artists. + SP_TOPLIST_REGION_EVERYWHERE, // TODO: Support other regions. + nullptr, &ToplistBrowseComplete, this); pending_toplist_browses_[browse] = req; } -void SpotifyClient::ToplistBrowseComplete(sp_toplistbrowse* result, void* userdata) { +void SpotifyClient::ToplistBrowseComplete(sp_toplistbrowse* result, + void* userdata) { SpotifyClient* me = reinterpret_cast(userdata); qLog(Debug) << "Toplist browse request took:" - << sp_toplistbrowse_backend_request_duration(result) - << "ms"; + << sp_toplistbrowse_backend_request_duration(result) << "ms"; if (!me->pending_toplist_browses_.contains(result)) { return; } - const pb::spotify::BrowseToplistRequest& request = me->pending_toplist_browses_.take(result); + const pb::spotify::BrowseToplistRequest& request = + me->pending_toplist_browses_.take(result); pb::spotify::Message message; - pb::spotify::BrowseToplistResponse* msg = message.mutable_browse_toplist_response(); + pb::spotify::BrowseToplistResponse* msg = + message.mutable_browse_toplist_response(); msg->mutable_request()->CopyFrom(request); const int count = sp_toplistbrowse_num_tracks(result); diff --git a/ext/clementine-spotifyblob/spotifyclient.h b/ext/clementine-spotifyblob/spotifyclient.h index 300695aa1..f93af662c 100644 --- a/ext/clementine-spotifyblob/spotifyclient.h +++ b/ext/clementine-spotifyblob/spotifyclient.h @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #ifndef SPOTIFYCLIENT_H #define SPOTIFYCLIENT_H @@ -39,8 +38,8 @@ class ResponseMessage; class SpotifyClient : public AbstractMessageHandler { Q_OBJECT -public: - SpotifyClient(QObject* parent = 0); + public: + SpotifyClient(QObject* parent = nullptr); ~SpotifyClient(); static const int kSpotifyImageIDSize; @@ -48,14 +47,14 @@ public: void Init(quint16 port); -protected: + protected: void MessageArrived(const pb::spotify::Message& message); void DeviceClosed(); -private slots: + private slots: void ProcessEvents(); -private: + private: void SendLoginCompleted(bool success, const QString& error, pb::spotify::LoginResponse_Error error_code); void SendPlaybackError(const QString& error); @@ -64,49 +63,59 @@ private: // Spotify session callbacks. static void SP_CALLCONV LoggedInCallback(sp_session* session, sp_error error); static void SP_CALLCONV NotifyMainThreadCallback(sp_session* session); - static void SP_CALLCONV LogMessageCallback(sp_session* session, const char* data); - static void SP_CALLCONV SearchCompleteCallback(sp_search* result, void* userdata); + static void SP_CALLCONV + LogMessageCallback(sp_session* session, const char* data); + static void SP_CALLCONV + SearchCompleteCallback(sp_search* result, void* userdata); static void SP_CALLCONV MetadataUpdatedCallback(sp_session* session); - static int SP_CALLCONV MusicDeliveryCallback( - sp_session* session, const sp_audioformat* format, - const void* frames, int num_frames); + static int SP_CALLCONV + MusicDeliveryCallback(sp_session* session, const sp_audioformat* format, + const void* frames, int num_frames); static void SP_CALLCONV EndOfTrackCallback(sp_session* session); - static void SP_CALLCONV StreamingErrorCallback(sp_session* session, sp_error error); + static void SP_CALLCONV + StreamingErrorCallback(sp_session* session, sp_error error); static void SP_CALLCONV OfflineStatusUpdatedCallback(sp_session* session); - static void SP_CALLCONV ConnectionErrorCallback(sp_session* session, sp_error error); - static void SP_CALLCONV UserMessageCallback(sp_session* session, const char* message); + static void SP_CALLCONV + ConnectionErrorCallback(sp_session* session, sp_error error); + static void SP_CALLCONV + UserMessageCallback(sp_session* session, const char* message); static void SP_CALLCONV StartPlaybackCallback(sp_session* session); static void SP_CALLCONV StopPlaybackCallback(sp_session* session); // Spotify playlist container callbacks. - static void SP_CALLCONV PlaylistAddedCallback( - sp_playlistcontainer* pc, sp_playlist* playlist, - int position, void* userdata); - static void SP_CALLCONV PlaylistRemovedCallback( - sp_playlistcontainer* pc, sp_playlist* playlist, - int position, void* userdata); - static void SP_CALLCONV PlaylistMovedCallback( - sp_playlistcontainer* pc, sp_playlist* playlist, - int position, int new_position, void* userdata); - static void SP_CALLCONV PlaylistContainerLoadedCallback( - sp_playlistcontainer* pc, void* userdata); + static void SP_CALLCONV PlaylistAddedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, + int position, void* userdata); + static void SP_CALLCONV PlaylistRemovedCallback(sp_playlistcontainer* pc, + sp_playlist* playlist, + int position, void* userdata); + static void SP_CALLCONV + PlaylistMovedCallback(sp_playlistcontainer* pc, sp_playlist* playlist, + int position, int new_position, void* userdata); + static void SP_CALLCONV + PlaylistContainerLoadedCallback(sp_playlistcontainer* pc, void* userdata); // Spotify playlist callbacks - when loading the list of playlists // initially - static void SP_CALLCONV PlaylistStateChangedForGetPlaylists(sp_playlist* pl, void* userdata); + static void SP_CALLCONV + PlaylistStateChangedForGetPlaylists(sp_playlist* pl, void* userdata); // Spotify playlist callbacks - when loading a playlist - static void SP_CALLCONV PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* userdata); + static void SP_CALLCONV + PlaylistStateChangedForLoadPlaylist(sp_playlist* pl, void* userdata); // Spotify image callbacks. static void SP_CALLCONV ImageLoaded(sp_image* image, void* userdata); // Spotify album browse callbacks. - static void SP_CALLCONV SearchAlbumBrowseComplete(sp_albumbrowse* result, void* userdata); - static void SP_CALLCONV AlbumBrowseComplete(sp_albumbrowse* result, void* userdata); + static void SP_CALLCONV + SearchAlbumBrowseComplete(sp_albumbrowse* result, void* userdata); + static void SP_CALLCONV + AlbumBrowseComplete(sp_albumbrowse* result, void* userdata); // Spotify toplist browse callbacks. - static void SP_CALLCONV ToplistBrowseComplete(sp_toplistbrowse* result, void* userdata); + static void SP_CALLCONV + ToplistBrowseComplete(sp_toplistbrowse* result, void* userdata); // Request handlers. void Login(const pb::spotify::LoginRequest& req); @@ -129,7 +138,7 @@ private: // Gets the appropriate sp_playlist* but does not load it. sp_playlist* GetPlaylist(pb::spotify::PlaylistType type, int user_index); -private: + private: struct PendingLoadPlaylist { pb::spotify::LoadPlaylistRequest request_; sp_playlist* playlist_; @@ -142,7 +151,7 @@ private: sp_link* link_; sp_track* track_; - bool operator ==(const PendingPlaybackRequest& other) const { + bool operator==(const PendingPlaybackRequest& other) const { return request_.track_uri() == other.request_.track_uri() && request_.media_port() == other.request_.media_port(); } @@ -157,7 +166,8 @@ private: void TryPlaybackAgain(const PendingPlaybackRequest& req); void TryImageAgain(sp_image* image); int GetDownloadProgress(sp_playlist* playlist); - void SendDownloadProgress(pb::spotify::PlaylistType type, int index, int download_progress); + void SendDownloadProgress(pb::spotify::PlaylistType type, int index, + int download_progress); QByteArray api_key_; @@ -178,7 +188,8 @@ private: QMap image_callbacks_registered_; QMap pending_searches_; QMap pending_album_browses_; - QMap pending_toplist_browses_; + QMap + pending_toplist_browses_; QMap > pending_search_album_browses_; QMap pending_search_album_browse_responses_; @@ -186,4 +197,4 @@ private: QScopedPointer media_pipeline_; }; -#endif // SPOTIFYCLIENT_H +#endif // SPOTIFYCLIENT_H diff --git a/ext/clementine-spotifyblob/spotifykey.h b/ext/clementine-spotifyblob/spotifykey.h index b4f6c13f4..22bedcb38 100644 --- a/ext/clementine-spotifyblob/spotifykey.h +++ b/ext/clementine-spotifyblob/spotifykey.h @@ -18,16 +18,20 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - // The Spotify terms of service require that application keys are not // accessible to third parties. Therefore this application key is heavily // encrypted here in the source to prevent third parties from viewing it. // It is most definitely not base64 encoded. static const char* kSpotifyApiKey = - "AVlOrvJkKx8T+LEsCk+Kyl24I0MSsjohZAtMFzm2O5Lms1bmAWFWgdZaHkpypzSJPmSd+Wi50wwg" - "JwVCU0sq4Lep1zB4t6Z8h26NK6+z8gmkHVkV9DRPkRgebcUkWTDTflwVPKWF4+gdRjUwprsqBw6O" - "iofRLJzeKaxbmaUGqkSkxVLOiXC9lxylNq6ju7Q7uY8u8XkDUsVM3YIxiWy2+EM7I/lhatzT9xrq" - "rxHe2lg7CzOwF5kuFdwgmi8MQ72xTYXIKnNlOry/hJDlN9lKxkbUBLh+pzbYvO92S2fYKK5PAHvX" - "5+SmSBGbh6dlpHeCGqb8MPdaeZ5I1YxMcDkxa2+tbLA/Muat7gKA9u57TFCtYjun/u/i/ONwdBIQ" - "rePzXZjipO32kYmQAiCkN1p8sgQEcF43QxaVwXGo2X0rRnJf"; + "AVlOrvJkKx8T+LEsCk+Kyl24I0MSsjohZAtMFzm2O5Lms1bmAWFWgdZaHkpypzSJPmSd+" + "Wi50wwg" + "JwVCU0sq4Lep1zB4t6Z8h26NK6+z8gmkHVkV9DRPkRgebcUkWTDTflwVPKWF4+" + "gdRjUwprsqBw6O" + "iofRLJzeKaxbmaUGqkSkxVLOiXC9lxylNq6ju7Q7uY8u8XkDUsVM3YIxiWy2+EM7I/" + "lhatzT9xrq" + "rxHe2lg7CzOwF5kuFdwgmi8MQ72xTYXIKnNlOry/" + "hJDlN9lKxkbUBLh+pzbYvO92S2fYKK5PAHvX" + "5+SmSBGbh6dlpHeCGqb8MPdaeZ5I1YxMcDkxa2+tbLA/Muat7gKA9u57TFCtYjun/u/i/" + "ONwdBIQ" + "rePzXZjipO32kYmQAiCkN1p8sgQEcF43QxaVwXGo2X0rRnJf"; diff --git a/ext/clementine-tagreader/main.cpp b/ext/clementine-tagreader/main.cpp index 79e76f927..c5e5cfeb1 100644 --- a/ext/clementine-tagreader/main.cpp +++ b/ext/clementine-tagreader/main.cpp @@ -31,15 +31,17 @@ int main(int argc, char** argv) { QStringList args(a.arguments()); if (args.count() != 2) { - std::cerr << "This program is used internally by Clementine to parse tags in music files\n" - "without exposing the whole application to crashes caused by malformed\n" + std::cerr << "This program is used internally by Clementine to parse tags " + "in music files\n" + "without exposing the whole application to crashes caused by " + "malformed\n" "files. It is not meant to be run on its own.\n"; return 1; } // Seed random number generator timeval time; - gettimeofday(&time,NULL); + gettimeofday(&time, nullptr); qsrand((time.tv_sec * 1000) + (time.tv_usec / 1000)); logging::Init(); diff --git a/ext/clementine-tagreader/tagreaderworker.cpp b/ext/clementine-tagreader/tagreaderworker.cpp index eb19dd1b5..e4b0b2c9b 100644 --- a/ext/clementine-tagreader/tagreaderworker.cpp +++ b/ext/clementine-tagreader/tagreaderworker.cpp @@ -24,11 +24,8 @@ #include #include - TagReaderWorker::TagReaderWorker(QIODevice* socket, QObject* parent) - : AbstractMessageHandler(socket, parent) -{ -} + : AbstractMessageHandler(socket, parent) {} void TagReaderWorker::MessageArrived(const pb::tagreader::Message& message) { pb::tagreader::Message reply; @@ -42,42 +39,44 @@ void TagReaderWorker::MessageArrived(const pb::tagreader::Message& message) { #endif if (message.has_read_file_request()) { - tag_reader_.ReadFile(QStringFromStdString(message.read_file_request().filename()), - reply.mutable_read_file_response()->mutable_metadata()); + tag_reader_.ReadFile( + QStringFromStdString(message.read_file_request().filename()), + reply.mutable_read_file_response()->mutable_metadata()); } else if (message.has_save_file_request()) { - reply.mutable_save_file_response()->set_success( - tag_reader_.SaveFile(QStringFromStdString(message.save_file_request().filename()), - message.save_file_request().metadata())); + reply.mutable_save_file_response()->set_success(tag_reader_.SaveFile( + QStringFromStdString(message.save_file_request().filename()), + message.save_file_request().metadata())); } else if (message.has_save_song_statistics_to_file_request()) { reply.mutable_save_song_statistics_to_file_response()->set_success( tag_reader_.SaveSongStatisticsToFile( - QStringFromStdString(message.save_song_statistics_to_file_request().filename()), + QStringFromStdString( + message.save_song_statistics_to_file_request().filename()), message.save_song_statistics_to_file_request().metadata())); } else if (message.has_save_song_rating_to_file_request()) { reply.mutable_save_song_rating_to_file_response()->set_success( tag_reader_.SaveSongRatingToFile( - QStringFromStdString(message.save_song_rating_to_file_request().filename()), + QStringFromStdString( + message.save_song_rating_to_file_request().filename()), message.save_song_rating_to_file_request().metadata())); } else if (message.has_is_media_file_request()) { - reply.mutable_is_media_file_response()->set_success( - tag_reader_.IsMediaFile(QStringFromStdString(message.is_media_file_request().filename()))); + reply.mutable_is_media_file_response()->set_success(tag_reader_.IsMediaFile( + QStringFromStdString(message.is_media_file_request().filename()))); } else if (message.has_load_embedded_art_request()) { QByteArray data = tag_reader_.LoadEmbeddedArt( - QStringFromStdString(message.load_embedded_art_request().filename())); - reply.mutable_load_embedded_art_response()->set_data( - data.constData(), data.size()); + QStringFromStdString(message.load_embedded_art_request().filename())); + reply.mutable_load_embedded_art_response()->set_data(data.constData(), + data.size()); } else if (message.has_read_cloud_file_request()) { #ifdef HAVE_GOOGLE_DRIVE const pb::tagreader::ReadCloudFileRequest& req = message.read_cloud_file_request(); if (!tag_reader_.ReadCloudFile( - QUrl::fromEncoded(QByteArray(req.download_url().data(), - req.download_url().size())), - QStringFromStdString(req.title()), - req.size(), - QStringFromStdString(req.mime_type()), - QStringFromStdString(req.authorisation_header()), - reply.mutable_read_cloud_file_response()->mutable_metadata())) { + QUrl::fromEncoded(QByteArray(req.download_url().data(), + req.download_url().size())), + QStringFromStdString(req.title()), req.size(), + QStringFromStdString(req.mime_type()), + QStringFromStdString(req.authorisation_header()), + reply.mutable_read_cloud_file_response()->mutable_metadata())) { reply.mutable_read_cloud_file_response()->clear_metadata(); } #endif @@ -86,10 +85,8 @@ void TagReaderWorker::MessageArrived(const pb::tagreader::Message& message) { SendReply(message, &reply); } - void TagReaderWorker::DeviceClosed() { AbstractMessageHandler::DeviceClosed(); qApp->exit(); } - diff --git a/ext/clementine-tagreader/tagreaderworker.h b/ext/clementine-tagreader/tagreaderworker.h index a2e6eea0a..796671d24 100644 --- a/ext/clementine-tagreader/tagreaderworker.h +++ b/ext/clementine-tagreader/tagreaderworker.h @@ -24,15 +24,15 @@ #include "core/messagehandler.h" class TagReaderWorker : public AbstractMessageHandler { -public: + public: TagReaderWorker(QIODevice* socket, QObject* parent = NULL); -protected: + protected: void MessageArrived(const pb::tagreader::Message& message); void DeviceClosed(); -private: + private: TagReader tag_reader_; }; -#endif // TAGREADERWORKER_H +#endif // TAGREADERWORKER_H diff --git a/ext/libclementine-common/core/arraysize.h b/ext/libclementine-common/core/arraysize.h new file mode 100644 index 000000000..ff43e200b --- /dev/null +++ b/ext/libclementine-common/core/arraysize.h @@ -0,0 +1,34 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// From Chromium src/base/macros.h + +#include // For size_t. + +// The arraysize(arr) macro returns the # of elements in an array arr. +// The expression is a compile-time constant, and therefore can be +// used in defining new arrays, for example. If you use arraysize on +// a pointer by mistake, you will get a compile-time error. +// +// One caveat is that arraysize() doesn't accept any array of an +// anonymous type or a type defined inside a function. In these rare +// cases, you have to use the unsafe ARRAYSIZE_UNSAFE() macro below. This is +// due to a limitation in C++'s template system. The limitation might +// eventually be removed, but it hasn't happened yet. + +// This template function declaration is used in defining arraysize. +// Note that the function doesn't need an implementation, as we only +// use its type. +template +char (&ArraySizeHelper(T (&array)[N]))[N]; + +// That gcc wants both of these prototypes seems mysterious. VC, for +// its part, can't decide which to use (another mystery). Matching of +// template overloads: the final frontier. +#ifndef _MSC_VER +template +char (&ArraySizeHelper(const T (&array)[N]))[N]; +#endif + +#define arraysize(array) (sizeof(ArraySizeHelper(array))) diff --git a/ext/libclementine-common/core/closure.cpp b/ext/libclementine-common/core/closure.cpp index ad14c9413..bd943c0eb 100644 --- a/ext/libclementine-common/core/closure.cpp +++ b/ext/libclementine-common/core/closure.cpp @@ -23,34 +23,22 @@ namespace _detail { -ClosureBase::ClosureBase(ObjectHelper* helper) - : helper_(helper) { -} +ClosureBase::ClosureBase(ObjectHelper* helper) : helper_(helper) {} -ClosureBase::~ClosureBase() { -} +ClosureBase::~ClosureBase() {} -CallbackClosure::CallbackClosure( - QObject* sender, - const char* signal, - boost::function callback) - : ClosureBase(new ObjectHelper(sender, signal, this)), - callback_(callback) { -} +CallbackClosure::CallbackClosure(QObject* sender, const char* signal, + std::function callback) + : ClosureBase(new ObjectHelper(sender, signal, this)), + callback_(callback) {} -void CallbackClosure::Invoke() { - callback_(); -} +void CallbackClosure::Invoke() { callback_(); } -ObjectHelper* ClosureBase::helper() const { - return helper_; -} +ObjectHelper* ClosureBase::helper() const { return helper_; } -ObjectHelper::ObjectHelper( - QObject* sender, - const char* signal, - ClosureBase* closure) - : closure_(closure) { +ObjectHelper::ObjectHelper(QObject* sender, const char* signal, + ClosureBase* closure) + : closure_(closure) { connect(sender, signal, SLOT(Invoked())); connect(sender, SIGNAL(destroyed()), SLOT(deleteLater())); } @@ -64,12 +52,9 @@ void Unpack(QList*) {} } // namespace _detail -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - boost::function callback) { - return new _detail::CallbackClosure( - sender, signal, callback); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + std::function callback) { + return new _detail::CallbackClosure(sender, signal, callback); } void DoAfter(QObject* receiver, const char* slot, int msec) { diff --git a/ext/libclementine-common/core/closure.h b/ext/libclementine-common/core/closure.h index 155df38bd..9b41a332e 100644 --- a/ext/libclementine-common/core/closure.h +++ b/ext/libclementine-common/core/closure.h @@ -19,22 +19,18 @@ #define CLOSURE_H #include +#include #include #include #include -#include -#include -#include -#include - namespace _detail { class ObjectHelper; // Interface for ObjectHelper to call on signal emission. -class ClosureBase : boost::noncopyable { +class ClosureBase { public: virtual ~ClosureBase(); virtual void Invoke() = 0; @@ -45,6 +41,9 @@ class ClosureBase : boost::noncopyable { protected: explicit ClosureBase(ObjectHelper*); ObjectHelper* helper_; + + private: + Q_DISABLE_COPY(ClosureBase); }; // QObject helper as templated QObjects do not work. @@ -53,16 +52,13 @@ class ClosureBase : boost::noncopyable { class ObjectHelper : public QObject { Q_OBJECT public: - ObjectHelper( - QObject* parent, - const char* signal, - ClosureBase* closure); + ObjectHelper(QObject* parent, const char* signal, ClosureBase* closure); private slots: void Invoked(); private: - boost::scoped_ptr closure_; + std::unique_ptr closure_; Q_DISABLE_COPY(ObjectHelper); }; @@ -77,7 +73,8 @@ void Unpack(QList* list, const Arg& arg) { } template -void Unpack(QList* list, const Head& head, const Tail&... tail) { +void Unpack(QList* list, const Head& head, + const Tail&... tail) { Unpack(list, head); Unpack(list, tail...); } @@ -85,48 +82,42 @@ void Unpack(QList* list, const Head& head, const Tail&... tail template class Closure : public ClosureBase { public: - Closure( - QObject* sender, - const char* signal, - QObject* receiver, - const char* slot, - const Args&... args) - : ClosureBase(new ObjectHelper(sender, signal, this)), - // boost::bind is the easiest way to store an argument list. - function_(boost::bind(&Closure::Call, this, args...)), - receiver_(receiver) { + Closure(QObject* sender, const char* signal, QObject* receiver, + const char* slot, const Args&... args) + : ClosureBase(new ObjectHelper(sender, signal, this)), + // std::bind is the easiest way to store an argument list. + function_(std::bind(&Closure::Call, this, args...)), + receiver_(receiver) { const QMetaObject* meta_receiver = receiver->metaObject(); QByteArray normalised_slot = QMetaObject::normalizedSignature(slot + 1); const int index = meta_receiver->indexOfSlot(normalised_slot.constData()); Q_ASSERT(index != -1); slot_ = meta_receiver->method(index); - QObject::connect(receiver_, SIGNAL(destroyed()), helper_, SLOT(deleteLater())); + QObject::connect(receiver_, SIGNAL(destroyed()), helper_, + SLOT(deleteLater())); } - virtual void Invoke() { - function_(); - } + virtual void Invoke() { function_(); } private: void Call(const Args&... args) { QList arg_list; Unpack(&arg_list, args...); - slot_.invoke( - receiver_, - arg_list.size() > 0 ? arg_list[0] : QGenericArgument(), - arg_list.size() > 1 ? arg_list[1] : QGenericArgument(), - arg_list.size() > 2 ? arg_list[2] : QGenericArgument(), - arg_list.size() > 3 ? arg_list[3] : QGenericArgument(), - arg_list.size() > 4 ? arg_list[4] : QGenericArgument(), - arg_list.size() > 5 ? arg_list[5] : QGenericArgument(), - arg_list.size() > 6 ? arg_list[6] : QGenericArgument(), - arg_list.size() > 7 ? arg_list[7] : QGenericArgument(), - arg_list.size() > 8 ? arg_list[8] : QGenericArgument(), - arg_list.size() > 9 ? arg_list[9] : QGenericArgument()); + slot_.invoke(receiver_, + arg_list.size() > 0 ? arg_list[0] : QGenericArgument(), + arg_list.size() > 1 ? arg_list[1] : QGenericArgument(), + arg_list.size() > 2 ? arg_list[2] : QGenericArgument(), + arg_list.size() > 3 ? arg_list[3] : QGenericArgument(), + arg_list.size() > 4 ? arg_list[4] : QGenericArgument(), + arg_list.size() > 5 ? arg_list[5] : QGenericArgument(), + arg_list.size() > 6 ? arg_list[6] : QGenericArgument(), + arg_list.size() > 7 ? arg_list[7] : QGenericArgument(), + arg_list.size() > 8 ? arg_list[8] : QGenericArgument(), + arg_list.size() > 9 ? arg_list[9] : QGenericArgument()); } - boost::function function_; + std::function function_; QObject* receiver_; QMetaMethod slot_; }; @@ -134,20 +125,10 @@ class Closure : public ClosureBase { template class SharedClosure : public Closure { public: - SharedClosure( - QSharedPointer sender, - const char* signal, - QObject* receiver, - const char* slot, - const Args&... args) - : Closure( - sender.data(), - signal, - receiver, - slot, - args...), - data_(sender) { - } + SharedClosure(QSharedPointer sender, const char* signal, QObject* receiver, + const char* slot, const Args&... args) + : Closure(sender.data(), signal, receiver, slot, args...), + data_(sender) {} private: QSharedPointer data_; @@ -155,75 +136,57 @@ class SharedClosure : public Closure { class CallbackClosure : public ClosureBase { public: - CallbackClosure( - QObject* sender, - const char* signal, - boost::function callback); + CallbackClosure(QObject* sender, const char* signal, + std::function callback); virtual void Invoke(); private: - boost::function callback_; + std::function callback_; }; } // namespace _detail template -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - QObject* receiver, - const char* slot, - const Args&... args) { - return new _detail::Closure( - sender, signal, receiver, slot, args...); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + QObject* receiver, const char* slot, + const Args&... args) { + return new _detail::Closure(sender, signal, receiver, slot, args...); } // QSharedPointer variant template -_detail::ClosureBase* NewClosure( - QSharedPointer sender, - const char* signal, - QObject* receiver, - const char* slot, - const Args&... args) { - return new _detail::SharedClosure( - sender, signal, receiver, slot, args...); +_detail::ClosureBase* NewClosure(QSharedPointer sender, const char* signal, + QObject* receiver, const char* slot, + const Args&... args) { + return new _detail::SharedClosure(sender, signal, receiver, slot, + args...); } -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - boost::function callback); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + std::function callback); template -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - boost::function callback, - const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, args...)); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + std::function callback, + const Args&... args) { + return NewClosure(sender, signal, std::bind(callback, args...)); } template -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - void (*callback)(Args...), - const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, args...)); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + void (*callback)(Args...), + const Args&... args) { + return NewClosure(sender, signal, std::bind(callback, args...)); } template -_detail::ClosureBase* NewClosure( - QObject* sender, - const char* signal, - T* receiver, Unused (T::*callback)(Args...), - const Args&... args) { - return NewClosure(sender, signal, boost::bind(callback, receiver, args...)); +_detail::ClosureBase* NewClosure(QObject* sender, const char* signal, + T* receiver, Unused (T::*callback)(Args...), + const Args&... args) { + return NewClosure(sender, signal, std::bind(callback, receiver, args...)); } - void DoAfter(QObject* receiver, const char* slot, int msec); void DoInAMinuteOrSo(QObject* receiver, const char* slot); diff --git a/ext/libclementine-common/core/concurrentrun.h b/ext/libclementine-common/core/concurrentrun.h index 119ee083a..81c0d8b7f 100644 --- a/ext/libclementine-common/core/concurrentrun.h +++ b/ext/libclementine-common/core/concurrentrun.h @@ -18,8 +18,7 @@ #ifndef CONCURRENTRUN_H #define CONCURRENTRUN_H -#include -#include +#include #include #include @@ -42,13 +41,13 @@ ThreadFunctor object and start it. */ - /* Base abstract classes ThreadFunctorBase and ThreadFunctor (for void and non-void result): */ -template -class ThreadFunctorBase : public QFutureInterface, public QRunnable { +template +class ThreadFunctorBase : public QFutureInterface, + public QRunnable { public: ThreadFunctorBase() {} @@ -69,10 +68,8 @@ class ThreadFunctorBase : public QFutureInterface, public QRunnable template class ThreadFunctor : public ThreadFunctorBase { public: - ThreadFunctor(boost::function function, - Args... args) - : function_(boost::bind(function, args...)) { - } + ThreadFunctor(std::function function, Args... args) + : function_(std::bind(function, args...)) {} virtual void run() { this->reportResult(function_()); @@ -80,17 +77,15 @@ class ThreadFunctor : public ThreadFunctorBase { } private: - boost::function function_; + std::function function_; }; // Partial specialisation for void return type. template -class ThreadFunctor : public ThreadFunctorBase { +class ThreadFunctor : public ThreadFunctorBase { public: - ThreadFunctor(boost::function function, - Args... args) - : function_(boost::bind(function, args...)) { - } + ThreadFunctor(std::function function, Args... args) + : function_(std::bind(function, args...)) {} virtual void run() { function_(); @@ -98,42 +93,36 @@ class ThreadFunctor : public ThreadFunctorBase { } private: - boost::function function_; + std::function function_; }; - /* Run functions */ namespace ConcurrentRun { - // Empty argument form. - template - QFuture Run( - QThreadPool* threadpool, - boost::function function) { - return (new ThreadFunctor(function))->Start(threadpool); - } - - // Function object with arguments form. - template - QFuture Run( - QThreadPool* threadpool, - boost::function function, - const Args&... args) { - return (new ThreadFunctor( - function, args...))->Start(threadpool); - } - - // Support passing C function pointers instead of function objects. - template - QFuture Run( - QThreadPool* threadpool, - ReturnType (*function) (Args...), - const Args&... args) { - return Run( - threadpool, boost::function(function), args...); - } +// Empty argument form. +template +QFuture Run(QThreadPool* threadpool, + std::function function) { + return (new ThreadFunctor(function))->Start(threadpool); } -#endif // CONCURRENTRUN_H +// Function object with arguments form. +template +QFuture Run(QThreadPool* threadpool, + std::function function, + const Args&... args) { + return (new ThreadFunctor(function, args...)) + ->Start(threadpool); +} + +// Support passing C function pointers instead of function objects. +template +QFuture Run(QThreadPool* threadpool, + ReturnType (*function)(Args...), const Args&... args) { + return Run(threadpool, std::function(function), args...); +} +} + +#endif // CONCURRENTRUN_H diff --git a/ext/libclementine-common/core/logging.cpp b/ext/libclementine-common/core/logging.cpp index 3c53d7adc..acbc0e2f0 100644 --- a/ext/libclementine-common/core/logging.cpp +++ b/ext/libclementine-common/core/logging.cpp @@ -33,31 +33,37 @@ #include "logging.h" - namespace logging { static Level sDefaultLevel = Level_Debug; -static QMap* sClassLevels = NULL; -static QIODevice* sNullDevice = NULL; +static QMap* sClassLevels = nullptr; +static QIODevice* sNullDevice = nullptr; const char* kDefaultLogLevels = "GstEnginePipeline:2,*:3"; static const char* kMessageHandlerMagic = "__logging_message__"; static const int kMessageHandlerMagicLength = strlen(kMessageHandlerMagic); -static QtMsgHandler sOriginalMessageHandler = NULL; - +static QtMsgHandler sOriginalMessageHandler = nullptr; void GLog(const char* domain, int level, const char* message, void* user_data) { switch (level) { case G_LOG_FLAG_RECURSION: case G_LOG_FLAG_FATAL: case G_LOG_LEVEL_ERROR: - case G_LOG_LEVEL_CRITICAL: qLog(Error) << message; break; - case G_LOG_LEVEL_WARNING: qLog(Warning) << message; break; + case G_LOG_LEVEL_CRITICAL: + qLog(Error) << message; + break; + case G_LOG_LEVEL_WARNING: + qLog(Warning) << message; + break; case G_LOG_LEVEL_MESSAGE: - case G_LOG_LEVEL_INFO: qLog(Info) << message; break; + case G_LOG_LEVEL_INFO: + qLog(Info) << message; + break; case G_LOG_LEVEL_DEBUG: - default: qLog(Debug) << message; break; + default: + qLog(Debug) << message; + break; } } @@ -70,13 +76,19 @@ static void MessageHandler(QtMsgType type, const char* message) { Level level = Level_Debug; switch (type) { case QtFatalMsg: - case QtCriticalMsg: level = Level_Error; break; - case QtWarningMsg: level = Level_Warning; break; + case QtCriticalMsg: + level = Level_Error; + break; + case QtWarningMsg: + level = Level_Warning; + break; case QtDebugMsg: - default: level = Level_Debug; break; + default: + level = Level_Debug; + break; } - foreach (const QString& line, QString::fromLocal8Bit(message).split('\n')) { + for (const QString& line : QString::fromLocal8Bit(message).split('\n')) { CreateLogger(level, "unknown", -1) << line.toLocal8Bit().constData(); } @@ -85,7 +97,6 @@ static void MessageHandler(QtMsgType type, const char* message) { } } - void Init() { delete sClassLevels; delete sNullDevice; @@ -100,10 +111,9 @@ void Init() { } void SetLevels(const QString& levels) { - if (!sClassLevels) - return; + if (!sClassLevels) return; - foreach (const QString& item, levels.split(',')) { + for (const QString& item : levels.split(',')) { const QStringList class_level = item.split(':'); QString class_name; @@ -122,14 +132,14 @@ void SetLevels(const QString& levels) { } if (class_name.isEmpty() || class_name == "*") { - sDefaultLevel = (Level) level; + sDefaultLevel = (Level)level; } else { - sClassLevels->insert(class_name, (Level) level); + sClassLevels->insert(class_name, (Level)level); } } } -QString ParsePrettyFunction(const char * pretty_function) { +QString ParsePrettyFunction(const char* pretty_function) { // Get the class name out of the function name. QString class_name = pretty_function; const int paren = class_name.indexOf('('); @@ -144,7 +154,7 @@ QString ParsePrettyFunction(const char * pretty_function) { const int space = class_name.lastIndexOf(' '); if (space != -1) { - class_name = class_name.mid(space+1); + class_name = class_name.mid(space + 1); } return class_name; @@ -152,13 +162,23 @@ QString ParsePrettyFunction(const char * pretty_function) { QDebug CreateLogger(Level level, const QString& class_name, int line) { // Map the level to a string - const char* level_name = NULL; + const char* level_name = nullptr; switch (level) { - case Level_Debug: level_name = " DEBUG "; break; - case Level_Info: level_name = " INFO "; break; - case Level_Warning: level_name = " WARN "; break; - case Level_Error: level_name = " ERROR "; break; - case Level_Fatal: level_name = " FATAL "; break; + case Level_Debug: + level_name = " DEBUG "; + break; + case Level_Info: + level_name = " INFO "; + break; + case Level_Warning: + level_name = " WARN "; + break; + case Level_Error: + level_name = " ERROR "; + break; + case Level_Fatal: + level_name = " FATAL "; + break; } // Check the settings to see if we're meant to show or hide this message. @@ -182,9 +202,11 @@ QDebug CreateLogger(Level level, const QString& class_name, int line) { } QDebug ret(type); - ret.nospace() << kMessageHandlerMagic - << QDateTime::currentDateTime().toString("hh:mm:ss.zzz").toAscii().constData() - << level_name << function_line.leftJustified(32).toAscii().constData(); + ret.nospace() << kMessageHandlerMagic << QDateTime::currentDateTime() + .toString("hh:mm:ss.zzz") + .toAscii() + .constData() << level_name + << function_line.leftJustified(32).toAscii().constData(); return ret.space(); } @@ -192,10 +214,7 @@ QDebug CreateLogger(Level level, const QString& class_name, int line) { QString CXXDemangle(const QString& mangled_function) { int status; char* demangled_function = abi::__cxa_demangle( - mangled_function.toAscii().constData(), - NULL, - NULL, - &status); + mangled_function.toAscii().constData(), nullptr, nullptr, &status); if (status == 0) { QString ret = QString::fromAscii(demangled_function); free(demangled_function); @@ -232,8 +251,10 @@ QString DemangleSymbol(const QString& symbol) { void DumpStackTrace() { #ifdef Q_OS_UNIX void* callstack[128]; - int callstack_size = backtrace(reinterpret_cast(&callstack), sizeof(callstack)); - char** symbols = backtrace_symbols(reinterpret_cast(&callstack), callstack_size); + int callstack_size = + backtrace(reinterpret_cast(&callstack), sizeof(callstack)); + char** symbols = + backtrace_symbols(reinterpret_cast(&callstack), callstack_size); // Start from 1 to skip ourself. for (int i = 1; i < callstack_size; ++i) { qLog(Debug) << DemangleSymbol(QString::fromAscii(symbols[i])); @@ -244,4 +265,4 @@ void DumpStackTrace() { #endif } -} // namespace logging +} // namespace logging diff --git a/ext/libclementine-common/core/logging.h b/ext/libclementine-common/core/logging.h index 3c582cf73..8cba187ea 100644 --- a/ext/libclementine-common/core/logging.h +++ b/ext/libclementine-common/core/logging.h @@ -18,46 +18,47 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #ifndef LOGGING_H #define LOGGING_H #include #ifdef QT_NO_DEBUG_STREAM -# define qLog(level) while (false) QNoDebug() +#define qLog(level) \ + while (false) QNoDebug() #else -# define qLog(level) \ - logging::CreateLogger(logging::Level_##level, \ - logging::ParsePrettyFunction(__PRETTY_FUNCTION__), __LINE__) +#define qLog(level) \ + logging::CreateLogger(logging::Level_##level, \ + logging::ParsePrettyFunction(__PRETTY_FUNCTION__), \ + __LINE__) #endif namespace logging { - class NullDevice : public QIODevice { - protected: - qint64 readData(char*, qint64) { return -1; } - qint64 writeData(const char*, qint64 len) { return len; } - }; +class NullDevice : public QIODevice { + protected: + qint64 readData(char*, qint64) { return -1; } + qint64 writeData(const char*, qint64 len) { return len; } +}; - enum Level { - Level_Fatal = -1, - Level_Error = 0, - Level_Warning, - Level_Info, - Level_Debug, - }; +enum Level { + Level_Fatal = -1, + Level_Error = 0, + Level_Warning, + Level_Info, + Level_Debug, +}; - void Init(); - void SetLevels(const QString& levels); +void Init(); +void SetLevels(const QString& levels); - void DumpStackTrace(); +void DumpStackTrace(); - QString ParsePrettyFunction(const char* pretty_function); - QDebug CreateLogger(Level level, const QString& class_name, int line); +QString ParsePrettyFunction(const char* pretty_function); +QDebug CreateLogger(Level level, const QString& class_name, int line); - void GLog(const char* domain, int level, const char* message, void* user_data); +void GLog(const char* domain, int level, const char* message, void* user_data); - extern const char* kDefaultLogLevels; +extern const char* kDefaultLogLevels; } -#endif // LOGGING_H +#endif // LOGGING_H diff --git a/ext/libclementine-common/core/messagehandler.cpp b/ext/libclementine-common/core/messagehandler.cpp index e21fc2974..1ea64929b 100644 --- a/ext/libclementine-common/core/messagehandler.cpp +++ b/ext/libclementine-common/core/messagehandler.cpp @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #include "messagehandler.h" #include "core/logging.h" @@ -26,13 +25,13 @@ #include _MessageHandlerBase::_MessageHandlerBase(QIODevice* device, QObject* parent) - : QObject(parent), - device_(NULL), - flush_abstract_socket_(NULL), - flush_local_socket_(NULL), - reading_protobuf_(false), - expected_length_(0), - is_device_closed_(false) { + : QObject(parent), + device_(nullptr), + flush_abstract_socket_(nullptr), + flush_local_socket_(nullptr), + reading_protobuf_(false), + expected_length_(0), + is_device_closed_(false) { if (device) { SetDevice(device); } diff --git a/ext/libclementine-common/core/messagehandler.h b/ext/libclementine-common/core/messagehandler.h index cd2ec285b..5a7f8f2c8 100644 --- a/ext/libclementine-common/core/messagehandler.h +++ b/ext/libclementine-common/core/messagehandler.h @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #ifndef MESSAGEHANDLER_H #define MESSAGEHANDLER_H @@ -37,11 +36,8 @@ class QAbstractSocket; class QIODevice; class QLocalSocket; -#define QStringFromStdString(x) \ - QString::fromUtf8(x.data(), x.size()) -#define DataCommaSizeFromQString(x) \ - x.toUtf8().constData(), x.toUtf8().length() - +#define QStringFromStdString(x) QString::fromUtf8(x.data(), x.size()) +#define DataCommaSizeFromQString(x) x.toUtf8().constData(), x.toUtf8().length() // Reads and writes uint32 length encoded protobufs to a socket. // This base QObject is separate from AbstractMessageHandler because moc can't @@ -49,7 +45,7 @@ class QLocalSocket; class _MessageHandlerBase : public QObject { Q_OBJECT -public: + public: // device can be NULL, in which case you must call SetDevice before writing // any messages. _MessageHandlerBase(QIODevice* device, QObject* parent); @@ -59,16 +55,16 @@ public: // After this is true, messages cannot be sent to the handler any more. bool is_device_closed() const { return is_device_closed_; } -protected slots: + protected slots: void WriteMessage(const QByteArray& data); void DeviceReadyRead(); virtual void DeviceClosed(); -protected: + protected: virtual bool RawMessageArrived(const QByteArray& data) = 0; virtual void AbortAll() = 0; -protected: + protected: typedef bool (QAbstractSocket::*FlushAbstractSocket)(); typedef bool (QLocalSocket::*FlushLocalSocket)(); @@ -83,13 +79,12 @@ protected: bool is_device_closed_; }; - // Reads and writes uint32 length encoded MessageType messages to a socket. // You should subclass this and implement the MessageArrived(MessageType) // method. template class AbstractMessageHandler : public _MessageHandlerBase { -public: + public: AbstractMessageHandler(QIODevice* device, QObject* parent); ~AbstractMessageHandler() { AbortAll(); } @@ -113,7 +108,7 @@ public: // reply on the socket. Used on the worker side. void SendReply(const MessageType& request, MessageType* reply); -protected: + protected: // Called when a message is received from the socket. virtual void MessageArrived(const MessageType& message) {} @@ -121,19 +116,16 @@ protected: bool RawMessageArrived(const QByteArray& data); void AbortAll(); -private: + private: QMap pending_replies_; }; +template +AbstractMessageHandler::AbstractMessageHandler(QIODevice* device, + QObject* parent) + : _MessageHandlerBase(device, parent) {} -template -AbstractMessageHandler::AbstractMessageHandler( - QIODevice* device, QObject* parent) - : _MessageHandlerBase(device, parent) -{ -} - -template +template void AbstractMessageHandler::SendMessage(const MessageType& message) { Q_ASSERT(QThread::currentThread() == thread()); @@ -141,27 +133,28 @@ void AbstractMessageHandler::SendMessage(const MessageType& message) { WriteMessage(QByteArray(data.data(), data.size())); } -template +template void AbstractMessageHandler::SendMessageAsync(const MessageType& message) { std::string data = message.SerializeAsString(); - metaObject()->invokeMethod(this, "WriteMessage", Qt::QueuedConnection, - Q_ARG(QByteArray, QByteArray(data.data(), data.size()))); + metaObject()->invokeMethod( + this, "WriteMessage", Qt::QueuedConnection, + Q_ARG(QByteArray, QByteArray(data.data(), data.size()))); } -template +template void AbstractMessageHandler::SendRequest(ReplyType* reply) { pending_replies_[reply->id()] = reply; SendMessage(reply->request_message()); } -template +template void AbstractMessageHandler::SendReply(const MessageType& request, MessageType* reply) { reply->set_id(request.id()); SendMessage(*reply); } -template +template bool AbstractMessageHandler::RawMessageArrived(const QByteArray& data) { MessageType message; if (!message.ParseFromArray(data.constData(), data.size())) { @@ -180,14 +173,12 @@ bool AbstractMessageHandler::RawMessageArrived(const QByteArray& data) { return true; } -template +template void AbstractMessageHandler::AbortAll() { - foreach (ReplyType* reply, pending_replies_) { + for (ReplyType* reply : pending_replies_) { reply->Abort(); } pending_replies_.clear(); } - - -#endif // MESSAGEHANDLER_H +#endif // MESSAGEHANDLER_H diff --git a/ext/libclementine-common/core/messagereply.cpp b/ext/libclementine-common/core/messagereply.cpp index f2e99dc19..305752215 100644 --- a/ext/libclementine-common/core/messagereply.cpp +++ b/ext/libclementine-common/core/messagereply.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2011, David Sansome - + 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 . */ @@ -18,11 +18,7 @@ #include "messagereply.h" _MessageReplyBase::_MessageReplyBase(QObject* parent) - : QObject(parent), - finished_(false), - success_(false) -{ -} + : QObject(parent), finished_(false), success_(false) {} bool _MessageReplyBase::WaitForFinished() { qLog(Debug) << "Waiting on ID" << id(); diff --git a/ext/libclementine-common/core/messagereply.h b/ext/libclementine-common/core/messagereply.h index ead5f38ba..72904e765 100644 --- a/ext/libclementine-common/core/messagereply.h +++ b/ext/libclementine-common/core/messagereply.h @@ -29,8 +29,8 @@ class _MessageReplyBase : public QObject { Q_OBJECT -public: - _MessageReplyBase(QObject* parent = 0); + public: + _MessageReplyBase(QObject* parent = nullptr); virtual int id() const = 0; bool is_finished() const { return finished_; } @@ -46,20 +46,19 @@ public: signals: void Finished(bool success); -protected: + protected: bool finished_; bool success_; QSemaphore semaphore_; }; - // A reply future class that is returned immediately for requests that will // occur in the background. Similar to QNetworkReply. template class MessageReply : public _MessageReplyBase { -public: - MessageReply(const MessageType& request_message, QObject* parent = 0); + public: + MessageReply(const MessageType& request_message, QObject* parent = nullptr); int id() const { return request_message_.id(); } const MessageType& request_message() const { return request_message_; } @@ -67,21 +66,19 @@ public: void SetReply(const MessageType& message); -private: + private: MessageType request_message_; MessageType reply_message_; }; - -template +template MessageReply::MessageReply(const MessageType& request_message, QObject* parent) - : _MessageReplyBase(parent) -{ + : _MessageReplyBase(parent) { request_message_.MergeFrom(request_message); } -template +template void MessageReply::SetReply(const MessageType& message) { Q_ASSERT(!finished_); @@ -94,4 +91,4 @@ void MessageReply::SetReply(const MessageType& message) { semaphore_.release(); } -#endif // MESSAGEREPLY_H +#endif // MESSAGEREPLY_H diff --git a/ext/libclementine-common/core/override.h b/ext/libclementine-common/core/override.h index deeca9a6c..98c2764d5 100644 --- a/ext/libclementine-common/core/override.h +++ b/ext/libclementine-common/core/override.h @@ -18,7 +18,6 @@ // it is used by the Spotify blob which links against libspotify and is not GPL // compatible. - #ifndef OVERRIDE_H #define OVERRIDE_H @@ -26,13 +25,13 @@ // it is available. #ifndef __has_extension - #define __has_extension(x) 0 +#define __has_extension(x) 0 #endif #if __has_extension(cxx_override_control) // Clang feature checking macro. -# define OVERRIDE override +#define OVERRIDE override #else -# define OVERRIDE +#define OVERRIDE #endif #endif // OVERRIDE_H diff --git a/ext/libclementine-common/core/waitforsignal.h b/ext/libclementine-common/core/waitforsignal.h index 4c90c2e68..94e98249e 100644 --- a/ext/libclementine-common/core/waitforsignal.h +++ b/ext/libclementine-common/core/waitforsignal.h @@ -22,4 +22,4 @@ class QObject; void WaitForSignal(QObject* sender, const char* signal); -#endif // WAITFORSIGNAL_H +#endif // WAITFORSIGNAL_H diff --git a/ext/libclementine-common/core/workerpool.cpp b/ext/libclementine-common/core/workerpool.cpp index d3378eb61..2b74328d9 100644 --- a/ext/libclementine-common/core/workerpool.cpp +++ b/ext/libclementine-common/core/workerpool.cpp @@ -17,9 +17,4 @@ #include "workerpool.h" -_WorkerPoolBase::_WorkerPoolBase(QObject* parent) - : QObject(parent) -{ -} - - +_WorkerPoolBase::_WorkerPoolBase(QObject* parent) : QObject(parent) {} diff --git a/ext/libclementine-common/core/workerpool.h b/ext/libclementine-common/core/workerpool.h index 906c8dc73..49fe099c0 100644 --- a/ext/libclementine-common/core/workerpool.h +++ b/ext/libclementine-common/core/workerpool.h @@ -32,28 +32,26 @@ #include "core/closure.h" #include "core/logging.h" - // Base class containing signals and slots - required because moc doesn't do // templated objects. class _WorkerPoolBase : public QObject { Q_OBJECT -public: - _WorkerPoolBase(QObject* parent = 0); + public: + _WorkerPoolBase(QObject* parent = nullptr); signals: // Emitted when a worker failed to start. This usually happens when the // worker wasn't found, or couldn't be executed. void WorkerFailedToStart(); -protected slots: + protected slots: virtual void DoStart() {} virtual void NewConnection() {} virtual void ProcessError(QProcess::ProcessError) {} virtual void SendQueuedMessages() {} }; - // Manages a pool of one or more external processes. A local socket server is // started for each process, and the address is passed to the process as // argv[1]. The process is expected to connect back to the socket server, and @@ -61,8 +59,8 @@ protected slots: // Instances of HandlerType are created in the WorkerPool's thread. template class WorkerPool : public _WorkerPoolBase { -public: - WorkerPool(QObject* parent = 0); + public: + WorkerPool(QObject* parent = nullptr); ~WorkerPool(); typedef typename HandlerType::MessageType MessageType; @@ -90,7 +88,7 @@ public: // worker. Can be called from any thread. ReplyType* SendMessageWithReply(MessageType* message); -protected: + protected: // These are all reimplemented slots, they are called on the WorkerPool's // thread. void DoStart(); @@ -98,10 +96,13 @@ protected: void ProcessError(QProcess::ProcessError error); void SendQueuedMessages(); -private: + private: struct Worker { - Worker() : local_server_(NULL), local_socket_(NULL), process_(NULL), - handler_(NULL) {} + Worker() + : local_server_(NULL), + local_socket_(NULL), + process_(NULL), + handler_(NULL) {} QLocalServer* local_server_; QLocalSocket* local_socket_; @@ -114,8 +115,8 @@ private: template Worker* FindWorker(T Worker::*member, T value) { - for (typename QList::iterator it = workers_.begin() ; - it != workers_.end() ; ++it) { + for (typename QList::iterator it = workers_.begin(); + it != workers_.end(); ++it) { if ((*it).*member == value) { return &(*it); } @@ -140,7 +141,7 @@ private: // my thread. HandlerType* NextHandler() const; -private: + private: QString local_server_name_; QString executable_name_; QString executable_path_; @@ -155,26 +156,21 @@ private: QQueue message_queue_; }; - template WorkerPool::WorkerPool(QObject* parent) - : _WorkerPoolBase(parent), - next_worker_(0), - next_id_(0) -{ + : _WorkerPoolBase(parent), next_worker_(0), next_id_(0) { worker_count_ = qBound(1, QThread::idealThreadCount() / 2, 2); local_server_name_ = qApp->applicationName().toLower(); - if (local_server_name_.isEmpty()) - local_server_name_ = "workerpool"; + if (local_server_name_.isEmpty()) local_server_name_ = "workerpool"; } template WorkerPool::~WorkerPool() { - foreach (const Worker& worker, workers_) { + for (const Worker& worker : workers_) { if (worker.local_socket_ && worker.process_) { - disconnect(worker.process_, SIGNAL(error(QProcess::ProcessError)), - this, SLOT(ProcessError(QProcess::ProcessError))); + disconnect(worker.process_, SIGNAL(error(QProcess::ProcessError)), this, + SLOT(ProcessError(QProcess::ProcessError))); // The worker is connected. Close his socket and wait for him to exit. qLog(Debug) << "Closing worker socket"; @@ -192,7 +188,7 @@ WorkerPool::~WorkerPool() { } } - foreach (ReplyType* reply, message_queue_) { + for (ReplyType* reply : message_queue_) { reply->Abort(); } } @@ -204,13 +200,15 @@ void WorkerPool::SetWorkerCount(int count) { } template -void WorkerPool::SetLocalServerName(const QString& local_server_name) { +void WorkerPool::SetLocalServerName( + const QString& local_server_name) { Q_ASSERT(workers_.isEmpty()); local_server_name_ = local_server_name; } template -void WorkerPool::SetExecutableName(const QString& executable_name) { +void WorkerPool::SetExecutableName( + const QString& executable_name) { Q_ASSERT(workers_.isEmpty()); executable_name_ = executable_name; } @@ -235,7 +233,7 @@ void WorkerPool::DoStart() { search_path << qApp->applicationDirPath() + "/../PlugIns"; #endif - foreach (const QString& path_prefix, search_path) { + for (const QString& path_prefix : search_path) { const QString executable_path = path_prefix + "/" + executable_name_; if (QFile::exists(executable_path)) { executable_path_ = executable_path; @@ -244,7 +242,7 @@ void WorkerPool::DoStart() { } // Start all the workers - for (int i=0 ; i::StartOneWorker(Worker* worker) { worker->local_server_ = new QLocalServer(this); worker->process_ = new QProcess(this); - connect(worker->local_server_, SIGNAL(newConnection()), SLOT(NewConnection())); + connect(worker->local_server_, SIGNAL(newConnection()), + SLOT(NewConnection())); connect(worker->process_, SIGNAL(error(QProcess::ProcessError)), SLOT(ProcessError(QProcess::ProcessError))); // Create a server, find an unused name and start listening forever { const int unique_number = qrand() ^ ((int)(quint64(this) & 0xFFFFFFFF)); - const QString name = QString("%1_%2").arg(local_server_name_).arg(unique_number); + const QString name = + QString("%1_%2").arg(local_server_name_).arg(unique_number); if (worker->local_server_->listen(name)) { break; @@ -284,7 +284,8 @@ void WorkerPool::StartOneWorker(Worker* worker) { // Start the process worker->process_->setProcessChannelMode(QProcess::ForwardedChannels); worker->process_->start(executable_path_, - QStringList() << worker->local_server_->fullServerName()); + QStringList() + << worker->local_server_->fullServerName()); } template @@ -295,10 +296,10 @@ void WorkerPool::NewConnection() { // Find the worker with this server. Worker* worker = FindWorker(&Worker::local_server_, server); - if (!worker) - return; + if (!worker) return; - qLog(Debug) << "Worker" << worker << "connected to" << server->fullServerName(); + qLog(Debug) << "Worker" << worker << "connected to" + << server->fullServerName(); // Accept the connection. worker->local_socket_ = server->nextPendingConnection(); @@ -322,29 +323,29 @@ void WorkerPool::ProcessError(QProcess::ProcessError error) { // Find the worker with this process. Worker* worker = FindWorker(&Worker::process_, process); - if (!worker) - return; + if (!worker) return; switch (error) { - case QProcess::FailedToStart: - // Failed to start errors are bad - it usually means the worker isn't - // installed. Don't restart the process, but tell our owner, who will - // probably want to do something fatal. - qLog(Error) << "Worker failed to start"; - emit WorkerFailedToStart(); - break; + case QProcess::FailedToStart: + // Failed to start errors are bad - it usually means the worker isn't + // installed. Don't restart the process, but tell our owner, who will + // probably want to do something fatal. + qLog(Error) << "Worker failed to start"; + emit WorkerFailedToStart(); + break; - default: - // On any other error we just restart the process. - qLog(Debug) << "Worker" << worker << "failed with error" << error << "- restarting"; - StartOneWorker(worker); - break; + default: + // On any other error we just restart the process. + qLog(Debug) << "Worker" << worker << "failed with error" << error + << "- restarting"; + StartOneWorker(worker); + break; } } template -typename WorkerPool::ReplyType* -WorkerPool::NewReply(MessageType* message) { +typename WorkerPool::ReplyType* WorkerPool::NewReply( + MessageType* message) { const int id = next_id_.fetchAndAddOrdered(1); message->set_id(id); @@ -390,7 +391,7 @@ void WorkerPool::SendQueuedMessages() { template HandlerType* WorkerPool::NextHandler() const { - for (int i=0 ; i::NextHandler() const { return NULL; } -#endif // WORKERPOOL_H +#endif // WORKERPOOL_H diff --git a/ext/libclementine-remote/remotecontrolmessages.proto b/ext/libclementine-remote/remotecontrolmessages.proto index 2d0ee7433..01dd57942 100644 --- a/ext/libclementine-remote/remotecontrolmessages.proto +++ b/ext/libclementine-remote/remotecontrolmessages.proto @@ -52,6 +52,7 @@ enum MsgType { SONG_FILE_CHUNK = 50; DOWNLOAD_QUEUE_EMPTY = 51; LIBRARY_CHUNK = 52; + DOWNLOAD_TOTAL_SIZE = 53; } // Valid Engine states @@ -243,10 +244,12 @@ enum DownloadItem { CurrentItem = 1; ItemAlbum = 2; APlaylist = 3; + Urls = 4; } message RequestDownloadSongs { optional DownloadItem download_item = 1; optional int32 playlist_id = 2; + repeated string urls = 3; } message ResponseSongFileChunk { @@ -276,9 +279,14 @@ message RequestRateSong { optional float rating = 1; // 0 to 1 } +message ResponseDownloadTotalSize { + optional int32 total_size = 1; + optional int32 file_count = 2; +} + // The message itself message Message { - optional int32 version = 1 [default=14]; + optional int32 version = 1 [default=16]; optional MsgType type = 2 [default=UNKNOWN]; // What data is in the message? optional RequestConnect request_connect = 21; @@ -309,4 +317,5 @@ message Message { optional ResponseSongFileChunk response_song_file_chunk = 32; optional ResponseSongOffer response_song_offer = 33; optional ResponseLibraryChunk response_library_chunk = 34; + optional ResponseDownloadTotalSize response_download_total_size = 36; } diff --git a/ext/libclementine-tagreader/cloudstream.cpp b/ext/libclementine-tagreader/cloudstream.cpp index 100174cca..503cd6652 100644 --- a/ext/libclementine-tagreader/cloudstream.cpp +++ b/ext/libclementine-tagreader/cloudstream.cpp @@ -28,13 +28,13 @@ #include "core/logging.h" namespace { - static const int kTaglibPrefixCacheBytes = 64 * 1024; // Should be enough. - static const int kTaglibSuffixCacheBytes = 8 * 1024; +static const int kTaglibPrefixCacheBytes = 64 * 1024; // Should be enough. +static const int kTaglibSuffixCacheBytes = 8 * 1024; } -CloudStream::CloudStream( - const QUrl& url, const QString& filename, const long length, - const QString& auth, QNetworkAccessManager* network) +CloudStream::CloudStream(const QUrl& url, const QString& filename, + const long length, const QString& auth, + QNetworkAccessManager* network) : url_(url), filename_(filename), encoded_filename_(filename_.toUtf8()), @@ -43,12 +43,9 @@ CloudStream::CloudStream( cursor_(0), network_(network), cache_(length), - num_requests_(0) { -} + num_requests_(0) {} -TagLib::FileName CloudStream::name() const { - return encoded_filename_.data(); -} +TagLib::FileName CloudStream::name() const { return encoded_filename_.data(); } bool CloudStream::CheckCache(int start, int end) { for (int i = start; i <= end; ++i) { @@ -113,18 +110,14 @@ TagLib::ByteVector CloudStream::readBlock(ulong length) { if (!auth_.isEmpty()) { request.setRawHeader("Authorization", auth_.toUtf8()); } - request.setRawHeader( - "Range", QString("bytes=%1-%2").arg(start).arg(end).toUtf8()); + request.setRawHeader("Range", + QString("bytes=%1-%2").arg(start).arg(end).toUtf8()); request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); - // The Ubuntu One server applies the byte range to the gzipped data, rather - // than the raw data so we must disable compression. - if (url_.host() == "files.one.ubuntu.com") { - request.setRawHeader("Accept-Encoding", "identity"); - } QNetworkReply* reply = network_->get(request); - connect(reply, SIGNAL(sslErrors(QList)), SLOT(SSLErrors(QList))); + connect(reply, SIGNAL(sslErrors(QList)), + SLOT(SSLErrors(QList))); ++num_requests_; QEventLoop loop; @@ -163,9 +156,7 @@ bool CloudStream::readOnly() const { return true; } -bool CloudStream::isOpen() const { - return true; -} +bool CloudStream::isOpen() const { return true; } void CloudStream::seek(long offset, TagLib::IOStream::Position p) { switch (p) { @@ -184,24 +175,18 @@ void CloudStream::seek(long offset, TagLib::IOStream::Position p) { } } -void CloudStream::clear() { - cursor_ = 0; -} +void CloudStream::clear() { cursor_ = 0; } -long CloudStream::tell() const { - return cursor_; -} +long CloudStream::tell() const { return cursor_; } -long CloudStream::length() { - return length_; -} +long CloudStream::length() { return length_; } void CloudStream::truncate(long) { qLog(Debug) << Q_FUNC_INFO << "not implemented"; } void CloudStream::SSLErrors(const QList& errors) { - foreach (const QSslError& error, errors) { + for (const QSslError& error : errors) { qLog(Debug) << error.error() << error.errorString(); qLog(Debug) << error.certificate(); } diff --git a/ext/libclementine-tagreader/cloudstream.h b/ext/libclementine-tagreader/cloudstream.h index 6905171bd..4c2e1358d 100644 --- a/ext/libclementine-tagreader/cloudstream.h +++ b/ext/libclementine-tagreader/cloudstream.h @@ -31,11 +31,8 @@ class QNetworkAccessManager; class CloudStream : public QObject, public TagLib::IOStream { Q_OBJECT public: - CloudStream(const QUrl& url, - const QString& filename, - const long length, - const QString& auth, - QNetworkAccessManager* network); + CloudStream(const QUrl& url, const QString& filename, const long length, + const QString& auth, QNetworkAccessManager* network); // Taglib::IOStream virtual TagLib::FileName name() const; @@ -55,9 +52,7 @@ class CloudStream : public QObject, public TagLib::IOStream { return cache_.num_nonempty(); } - int num_requests() const { - return num_requests_; - } + int num_requests() const { return num_requests_; } // Use educated guess to request the bytes that TagLib will probably want. void Precache(); @@ -84,4 +79,4 @@ class CloudStream : public QObject, public TagLib::IOStream { int num_requests_; }; -#endif // GOOGLEDRIVESTREAM_H +#endif // GOOGLEDRIVESTREAM_H diff --git a/ext/libclementine-tagreader/fmpsparser.cpp b/ext/libclementine-tagreader/fmpsparser.cpp index 113f9f316..857aa979e 100644 --- a/ext/libclementine-tagreader/fmpsparser.cpp +++ b/ext/libclementine-tagreader/fmpsparser.cpp @@ -17,24 +17,26 @@ #include "fmpsparser.h" +#include + #include #include -#include +using std::placeholders::_1; +using std::placeholders::_2; -FMPSParser::FMPSParser() : - // The float regex ends with (?:$|(?=::|;;)) to ensure it matches all the way - // up to the end of the value. Without it, it would match a string that - // starts with a number, like "123abc". - float_re_("\\s*([+-]?\\d+(?:\\.\\d+)?)\\s*(?:$|(?=::|;;))"), +FMPSParser::FMPSParser() + : // The float regex ends with (?:$|(?=::|;;)) to ensure it matches all the + // way + // up to the end of the value. Without it, it would match a string that + // starts with a number, like "123abc". + float_re_("\\s*([+-]?\\d+(?:\\.\\d+)?)\\s*(?:$|(?=::|;;))"), - // Matches any character except unescaped slashes, colons and semicolons. - string_re_("((?:[^\\\\;:]|(?:\\\\[\\\\:;]))+)(?:$|(?=::|;;))"), + // Matches any character except unescaped slashes, colons and semicolons. + string_re_("((?:[^\\\\;:]|(?:\\\\[\\\\:;]))+)(?:$|(?=::|;;))"), - // Used for replacing escaped characters. - escape_re_("\\\\([\\\\:;])") -{ -} + // Used for replacing escaped characters. + escape_re_("\\\\([\\\\:;])") {} // Parses a list of things (of type T) that are separated by two consecutive // Separator characters. Each individual thing is parsed by the F function. @@ -56,16 +58,16 @@ static int ParseContainer(const QStringRef& data, F f, QList* ret) { int pos = 0; while (pos < data.length()) { const int len = data.length() - pos; - int matched_len = f(QStringRef(data.string(), data.position() + pos, len), &value); - if (matched_len == -1 || matched_len > len) - break; + int matched_len = + f(QStringRef(data.string(), data.position() + pos, len), &value); + if (matched_len == -1 || matched_len > len) break; ret->append(value); pos += matched_len; // Expect two separators in a row - if (pos + 2 <= data.length() && data.at(pos) == Separator - && data.at(pos+1) == Separator) { + if (pos + 2 <= data.length() && data.at(pos) == Separator && + data.at(pos + 1) == Separator) { pos += 2; } else { break; @@ -105,12 +107,14 @@ int FMPSParser::ParseValueRef(const QStringRef& data, QVariant* ret) const { // Parses an inner list - a list of values int FMPSParser::ParseListRef(const QStringRef& data, QVariantList* ret) const { - return ParseContainer<':'>(data, boost::bind(&FMPSParser::ParseValueRef, this, _1, _2), ret); + return ParseContainer<':'>( + data, std::bind(&FMPSParser::ParseValueRef, this, _1, _2), ret); } // Parses an outer list - a list of lists int FMPSParser::ParseListListRef(const QStringRef& data, Result* ret) const { - return ParseContainer<';'>(data, boost::bind(&FMPSParser::ParseListRef, this, _1, _2), ret); + return ParseContainer<';'>( + data, std::bind(&FMPSParser::ParseListRef, this, _1, _2), ret); } // Convenience functions that take QStrings instead of QStringRefs. Use the diff --git a/ext/libclementine-tagreader/fmpsparser.h b/ext/libclementine-tagreader/fmpsparser.h index dfe669f14..961f5b4ae 100644 --- a/ext/libclementine-tagreader/fmpsparser.h +++ b/ext/libclementine-tagreader/fmpsparser.h @@ -22,7 +22,7 @@ #include class FMPSParser { -public: + public: FMPSParser(); // A FMPS result is a list of lists of values (where a value is a string or @@ -48,11 +48,11 @@ public: int ParseListList(const QString& data, Result* ret) const; int ParseListListRef(const QStringRef& data, Result* ret) const; -private: + private: QRegExp float_re_; QRegExp string_re_; QRegExp escape_re_; Result result_; }; -#endif // FMPSPARSER_H +#endif // FMPSPARSER_H diff --git a/ext/libclementine-tagreader/tagreader.cpp b/ext/libclementine-tagreader/tagreader.cpp index b94a64214..e2f4137d5 100644 --- a/ext/libclementine-tagreader/tagreader.cpp +++ b/ext/libclementine-tagreader/tagreader.cpp @@ -17,6 +17,8 @@ #include "tagreader.h" +#include + #include #include #include @@ -51,25 +53,23 @@ #include -#include - #include "fmpsparser.h" #include "core/logging.h" #include "core/messagehandler.h" #include "core/timeconstants.h" -using boost::scoped_ptr; - // Taglib added support for FLAC pictures in 1.7.0 -#if (TAGLIB_MAJOR_VERSION > 1) || (TAGLIB_MAJOR_VERSION == 1 && TAGLIB_MINOR_VERSION >= 7) -# define TAGLIB_HAS_FLAC_PICTURELIST +#if (TAGLIB_MAJOR_VERSION > 1) || \ + (TAGLIB_MAJOR_VERSION == 1 && TAGLIB_MINOR_VERSION >= 7) +#define TAGLIB_HAS_FLAC_PICTURELIST #endif #ifdef HAVE_GOOGLE_DRIVE -# include "cloudstream.h" +#include "cloudstream.h" #endif -#define NumberToASFAttribute(x) TagLib::ASF::Attribute(QStringToTaglibString(QString::number(x))) +#define NumberToASFAttribute(x) \ + TagLib::ASF::Attribute(QStringToTaglibString(QString::number(x))) class FileRefFactory { public: @@ -80,11 +80,11 @@ class FileRefFactory { class TagLibFileRefFactory : public FileRefFactory { public: virtual TagLib::FileRef* GetFileRef(const QString& filename) { - #ifdef Q_OS_WIN32 - return new TagLib::FileRef(filename.toStdWString().c_str()); - #else - return new TagLib::FileRef(QFile::encodeName(filename).constData()); - #endif +#ifdef Q_OS_WIN32 + return new TagLib::FileRef(filename.toStdWString().c_str()); +#else + return new TagLib::FileRef(QFile::encodeName(filename).constData()); +#endif } }; @@ -97,21 +97,22 @@ TagLib::String StdStringToTaglibString(const std::string& s) { TagLib::String QStringToTaglibString(const QString& s) { return TagLib::String(s.toUtf8().constData(), TagLib::String::UTF8); } - } -const char* TagReader::kMP4_FMPS_Rating_ID = "----:com.apple.iTunes:FMPS_Rating"; -const char* TagReader::kMP4_FMPS_Playcount_ID = "----:com.apple.iTunes:FMPS_Playcount"; -const char* TagReader::kMP4_FMPS_Score_ID = "----:com.apple.iTunes:FMPS_Rating_Amarok_Score"; +const char* TagReader::kMP4_FMPS_Rating_ID = + "----:com.apple.iTunes:FMPS_Rating"; +const char* TagReader::kMP4_FMPS_Playcount_ID = + "----:com.apple.iTunes:FMPS_Playcount"; +const char* TagReader::kMP4_FMPS_Score_ID = + "----:com.apple.iTunes:FMPS_Rating_Amarok_Score"; TagReader::TagReader() - : factory_(new TagLibFileRefFactory), - network_(new QNetworkAccessManager), - kEmbeddedCover("(embedded)") -{} + : factory_(new TagLibFileRefFactory), + network_(new QNetworkAccessManager), + kEmbeddedCover("(embedded)") {} void TagReader::ReadFile(const QString& filename, - pb::tagreader::SongMetadata* song) const { + pb::tagreader::SongMetadata* song) const { const QByteArray url(QUrl::fromLocalFile(filename).toEncoded()); const QFileInfo info(filename); @@ -123,18 +124,18 @@ void TagReader::ReadFile(const QString& filename, song->set_mtime(info.lastModified().toTime_t()); song->set_ctime(info.created().toTime_t()); - scoped_ptr fileref(factory_->GetFileRef(filename)); - if(fileref->isNull()) { + std::unique_ptr fileref(factory_->GetFileRef(filename)); + if (fileref->isNull()) { qLog(Info) << "TagLib hasn't been able to read " << filename << " file"; return; } TagLib::Tag* tag = fileref->tag(); if (tag) { - Decode(tag->title(), NULL, song->mutable_title()); - Decode(tag->artist(), NULL, song->mutable_artist()); // TPE1 - Decode(tag->album(), NULL, song->mutable_album()); - Decode(tag->genre(), NULL, song->mutable_genre()); + Decode(tag->title(), nullptr, song->mutable_title()); + Decode(tag->artist(), nullptr, song->mutable_artist()); // TPE1 + Decode(tag->album(), nullptr, song->mutable_album()); + Decode(tag->genre(), nullptr, song->mutable_genre()); song->set_year(tag->year()); song->set_track(tag->track()); song->set_valid(true); @@ -143,14 +144,17 @@ void TagReader::ReadFile(const QString& filename, QString disc; QString compilation; - // Handle all the files which have VorbisComments (Ogg, OPUS, ...) in the same way; + // Handle all the files which have VorbisComments (Ogg, OPUS, ...) in the same + // way; // apart, so we keep specific behavior for some formats by adding another // "else if" block below. - if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { - ParseOggTag(tag->fieldListMap(), NULL, &disc, &compilation, song); + if (TagLib::Ogg::XiphComment* tag = + dynamic_cast(fileref->file()->tag())) { + ParseOggTag(tag->fieldListMap(), nullptr, &disc, &compilation, song); } - if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { + if (TagLib::MPEG::File* file = + dynamic_cast(fileref->file())) { if (file->ID3v2Tag()) { const TagLib::ID3v2::FrameListMap& map = file->ID3v2Tag()->frameListMap(); @@ -158,45 +162,50 @@ void TagReader::ReadFile(const QString& filename, disc = TStringToQString(map["TPOS"].front()->toString()).trimmed(); if (!map["TBPM"].isEmpty()) - song->set_bpm(TStringToQString(map["TBPM"].front()->toString()).trimmed().toFloat()); + song->set_bpm(TStringToQString(map["TBPM"].front()->toString()) + .trimmed() + .toFloat()); if (!map["TCOM"].isEmpty()) - Decode(map["TCOM"].front()->toString(), NULL, song->mutable_composer()); + Decode(map["TCOM"].front()->toString(), nullptr, + song->mutable_composer()); - if (!map["TIT1"].isEmpty()) // content group - Decode(map["TIT1"].front()->toString(), NULL, song->mutable_grouping()); + if (!map["TIT1"].isEmpty()) // content group + Decode(map["TIT1"].front()->toString(), nullptr, + song->mutable_grouping()); // Skip TPE1 (which is the artist) here because we already fetched it - if (!map["TPE2"].isEmpty()) // non-standard: Apple, Microsoft - Decode(map["TPE2"].front()->toString(), NULL, song->mutable_albumartist()); + if (!map["TPE2"].isEmpty()) // non-standard: Apple, Microsoft + Decode(map["TPE2"].front()->toString(), nullptr, + song->mutable_albumartist()); if (!map["TCMP"].isEmpty()) - compilation = TStringToQString(map["TCMP"].front()->toString()).trimmed(); + compilation = + TStringToQString(map["TCMP"].front()->toString()).trimmed(); - if (!map["APIC"].isEmpty()) - song->set_art_automatic(kEmbeddedCover); + if (!map["APIC"].isEmpty()) song->set_art_automatic(kEmbeddedCover); // Find a suitable comment tag. For now we ignore iTunNORM comments. - for (int i=0 ; i(map["COMM"][i]); if (frame && TStringToQString(frame->description()) != "iTunNORM") { - Decode(frame->text(), NULL, song->mutable_comment()); + Decode(frame->text(), nullptr, song->mutable_comment()); break; } } // Parse FMPS frames - for (int i=0 ; i(map["TXXX"][i]); + dynamic_cast( + map["TXXX"][i]); if (frame && frame->description().startsWith("FMPS_")) { ParseFMPSFrame(TStringToQString(frame->description()), - TStringToQString(frame->fieldList()[1]), - song); + TStringToQString(frame->fieldList()[1]), song); } } @@ -205,7 +214,8 @@ void TagReader::ReadFile(const QString& filename, // will consider POPM tags iff song has no rating/playcount already set. if (!map["POPM"].isEmpty()) { const TagLib::ID3v2::PopularimeterFrame* frame = - dynamic_cast(map["POPM"].front()); + dynamic_cast( + map["POPM"].front()); if (frame) { // Take a user rating only if there's no rating already set if (song->rating() <= 0 && frame->rating() > 0) { @@ -216,19 +226,21 @@ void TagReader::ReadFile(const QString& filename, } } } - } - } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { - if ( file->xiphComment() ) { - ParseOggTag(file->xiphComment()->fieldListMap(), NULL, &disc, &compilation, song); + } else if (TagLib::FLAC::File* file = + dynamic_cast(fileref->file())) { + if (file->xiphComment()) { + ParseOggTag(file->xiphComment()->fieldListMap(), nullptr, &disc, + &compilation, song); #ifdef TAGLIB_HAS_FLAC_PICTURELIST if (!file->pictureList().isEmpty()) { song->set_art_automatic(kEmbeddedCover); } #endif } - Decode(tag->comment(), NULL, song->mutable_comment()); - } else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { + Decode(tag->comment(), nullptr, song->mutable_comment()); + } else if (TagLib::MP4::File* file = + dynamic_cast(fileref->file())) { if (file->tag()) { TagLib::MP4::Tag* mp4_tag = file->tag(); const TagLib::MP4::ItemListMap& items = mp4_tag->itemListMap(); @@ -238,7 +250,7 @@ void TagReader::ReadFile(const QString& filename, if (it != items.end()) { TagLib::StringList album_artists = it->second.toStringList(); if (!album_artists.isEmpty()) { - Decode(album_artists.front(), NULL, song->mutable_albumartist()); + Decode(album_artists.front(), nullptr, song->mutable_albumartist()); } } @@ -248,51 +260,67 @@ void TagReader::ReadFile(const QString& filename, } if (items.contains("disk")) { - disc = TStringToQString(TagLib::String::number(items["disk"].toIntPair().first)); + disc = TStringToQString( + TagLib::String::number(items["disk"].toIntPair().first)); } if (items.contains(kMP4_FMPS_Rating_ID)) { - float rating = TStringToQString(items[kMP4_FMPS_Rating_ID].toStringList().toString('\n')).toFloat(); + float rating = + TStringToQString(items[kMP4_FMPS_Rating_ID].toStringList().toString( + '\n')).toFloat(); if (song->rating() <= 0 && rating > 0) { song->set_rating(rating); } } if (items.contains(kMP4_FMPS_Playcount_ID)) { - int playcount = TStringToQString(items[kMP4_FMPS_Playcount_ID].toStringList().toString('\n')).toFloat(); + int playcount = + TStringToQString( + items[kMP4_FMPS_Playcount_ID].toStringList().toString('\n')) + .toFloat(); if (song->playcount() <= 0 && playcount > 0) { song->set_playcount(playcount); } } if (items.contains(kMP4_FMPS_Playcount_ID)) { - int score = TStringToQString(items[kMP4_FMPS_Score_ID].toStringList().toString('\n')).toFloat() * 100; + int score = TStringToQString( + items[kMP4_FMPS_Score_ID].toStringList().toString('\n')) + .toFloat() * + 100; if (song->score() <= 0 && score > 0) { song->set_score(score); } } - if(items.contains("\251wrt")) { - Decode(items["\251wrt"].toStringList().toString(", "), NULL, song->mutable_composer()); + if (items.contains("\251wrt")) { + Decode(items["\251wrt"].toStringList().toString(", "), nullptr, + song->mutable_composer()); } - if(items.contains("\251grp")) { - Decode(items["\251grp"].toStringList().toString(" "), NULL, song->mutable_grouping()); + if (items.contains("\251grp")) { + Decode(items["\251grp"].toStringList().toString(" "), nullptr, + song->mutable_grouping()); } - Decode(mp4_tag->comment(), NULL, song->mutable_comment()); + Decode(mp4_tag->comment(), nullptr, song->mutable_comment()); } } #ifdef TAGLIB_WITH_ASF - else if (TagLib::ASF::File* file = dynamic_cast(fileref->file())) { - const TagLib::ASF::AttributeListMap& attributes_map = file->tag()->attributeListMap(); + else if (TagLib::ASF::File* file = + dynamic_cast(fileref->file())) { + const TagLib::ASF::AttributeListMap& attributes_map = + file->tag()->attributeListMap(); if (attributes_map.contains("FMPS/Rating")) { - const TagLib::ASF::AttributeList& attributes = attributes_map["FMPS/Rating"]; + const TagLib::ASF::AttributeList& attributes = + attributes_map["FMPS/Rating"]; if (!attributes.isEmpty()) { - float rating = TStringToQString(attributes.front().toString()).toFloat(); + float rating = + TStringToQString(attributes.front().toString()).toFloat(); if (song->rating() <= 0 && rating > 0) { song->set_rating(rating); } } } if (attributes_map.contains("FMPS/Playcount")) { - const TagLib::ASF::AttributeList& attributes = attributes_map["FMPS/Playcount"]; + const TagLib::ASF::AttributeList& attributes = + attributes_map["FMPS/Playcount"]; if (!attributes.isEmpty()) { int playcount = TStringToQString(attributes.front().toString()).toInt(); if (song->playcount() <= 0 && playcount > 0) { @@ -301,9 +329,11 @@ void TagReader::ReadFile(const QString& filename, } } if (attributes_map.contains("FMPS/Rating_Amarok_Score")) { - const TagLib::ASF::AttributeList& attributes = attributes_map["FMPS/Rating_Amarok_Score"]; + const TagLib::ASF::AttributeList& attributes = + attributes_map["FMPS/Rating_Amarok_Score"]; if (!attributes.isEmpty()) { - int score = TStringToQString(attributes.front().toString()).toFloat() * 100; + int score = + TStringToQString(attributes.front().toString()).toFloat() * 100; if (song->score() <= 0 && score > 0) { song->set_score(score); } @@ -312,13 +342,14 @@ void TagReader::ReadFile(const QString& filename, } #endif else if (tag) { - Decode(tag->comment(), NULL, song->mutable_comment()); + Decode(tag->comment(), nullptr, song->mutable_comment()); } if (!disc.isEmpty()) { const int i = disc.indexOf('/'); if (i != -1) { - // disc.right( i ).toInt() is total number of discs, we don't use this at the moment + // disc.right( i ).toInt() is total number of discs, we don't use this at + // the moment song->set_disc(disc.left(i).toInt()); } else { song->set_disc(disc.toInt()); @@ -337,14 +368,18 @@ void TagReader::ReadFile(const QString& filename, if (fileref->audioProperties()) { song->set_bitrate(fileref->audioProperties()->bitrate()); song->set_samplerate(fileref->audioProperties()->sampleRate()); - song->set_length_nanosec(fileref->audioProperties()->length() * kNsecPerSec); + song->set_length_nanosec(fileref->audioProperties()->length() * + kNsecPerSec); } // Get the filetype if we can song->set_type(GuessFileType(fileref.get())); - // Set integer fields to -1 if they're not valid - #define SetDefault(field) if (song->field() <= 0) { song->set_##field(-1); } +// Set integer fields to -1 if they're not valid +#define SetDefault(field) \ + if (song->field() <= 0) { \ + song->set_##field(-1); \ + } SetDefault(track); SetDefault(disc); SetDefault(bpm); @@ -352,16 +387,16 @@ void TagReader::ReadFile(const QString& filename, SetDefault(bitrate); SetDefault(samplerate); SetDefault(lastplayed); - #undef SetDefault +#undef SetDefault } - void TagReader::Decode(const TagLib::String& tag, const QTextCodec* codec, - std::string* output) { + std::string* output) { QString tmp; if (codec && tag.isLatin1()) { // Never override UTF-8. - const std::string fixed = QString::fromUtf8(tag.toCString(true)).toStdString(); + const std::string fixed = + QString::fromUtf8(tag.toCString(true)).toStdString(); tmp = codec->toUnicode(fixed.c_str()).trimmed(); } else { tmp = TStringToQString(tag).trimmed(); @@ -371,7 +406,7 @@ void TagReader::Decode(const TagLib::String& tag, const QTextCodec* codec, } void TagReader::Decode(const QString& tag, const QTextCodec* codec, - std::string* output) { + std::string* output) { if (!codec) { output->assign(DataCommaSizeFromQString(tag)); } else { @@ -381,11 +416,10 @@ void TagReader::Decode(const QString& tag, const QTextCodec* codec, } void TagReader::ParseFMPSFrame(const QString& name, const QString& value, - pb::tagreader::SongMetadata* song) const { + pb::tagreader::SongMetadata* song) const { qLog(Debug) << "Parsing FMPSFrame" << name << ", " << value; FMPSParser parser; - if (!parser.Parse(value) || parser.is_empty()) - return; + if (!parser.Parse(value) || parser.is_empty()) return; QVariant var; if (name == "FMPS_Rating") { @@ -423,9 +457,9 @@ void TagReader::ParseFMPSFrame(const QString& name, const QString& value, } void TagReader::ParseOggTag(const TagLib::Ogg::FieldListMap& map, - const QTextCodec* codec, - QString* disc, QString* compilation, - pb::tagreader::SongMetadata* song) const { + const QTextCodec* codec, QString* disc, + QString* compilation, + pb::tagreader::SongMetadata* song) const { if (!map["COMPOSER"].isEmpty()) Decode(map["COMPOSER"].front(), codec, song->mutable_composer()); if (!map["PERFORMER"].isEmpty()) @@ -439,52 +473,76 @@ void TagReader::ParseOggTag(const TagLib::Ogg::FieldListMap& map, Decode(map["ALBUM ARTIST"].front(), codec, song->mutable_albumartist()); } - if (!map["BPM"].isEmpty() ) - song->set_bpm(TStringToQString( map["BPM"].front() ).trimmed().toFloat()); + if (!map["BPM"].isEmpty()) + song->set_bpm(TStringToQString(map["BPM"].front()).trimmed().toFloat()); - if (!map["DISCNUMBER"].isEmpty() ) - *disc = TStringToQString( map["DISCNUMBER"].front() ).trimmed(); + if (!map["DISCNUMBER"].isEmpty()) + *disc = TStringToQString(map["DISCNUMBER"].front()).trimmed(); - if (!map["COMPILATION"].isEmpty() ) - *compilation = TStringToQString( map["COMPILATION"].front() ).trimmed(); + if (!map["COMPILATION"].isEmpty()) + *compilation = TStringToQString(map["COMPILATION"].front()).trimmed(); - if (!map["COVERART"].isEmpty()) - song->set_art_automatic(kEmbeddedCover); + if (!map["COVERART"].isEmpty()) song->set_art_automatic(kEmbeddedCover); if (!map["METADATA_BLOCK_PICTURE"].isEmpty()) song->set_art_automatic(kEmbeddedCover); if (!map["FMPS_RATING"].isEmpty() && song->rating() <= 0) - song->set_rating(TStringToQString( map["FMPS_RATING"].front() ).trimmed().toFloat()); + song->set_rating( + TStringToQString(map["FMPS_RATING"].front()).trimmed().toFloat()); if (!map["FMPS_PLAYCOUNT"].isEmpty() && song->playcount() <= 0) - song->set_playcount(TStringToQString( map["FMPS_PLAYCOUNT"].front() ).trimmed().toFloat()); + song->set_playcount( + TStringToQString(map["FMPS_PLAYCOUNT"].front()).trimmed().toFloat()); if (!map["FMPS_RATING_AMAROK_SCORE"].isEmpty() && song->score() <= 0) - song->set_score(TStringToQString( map["FMPS_RATING_AMAROK_SCORE"].front() ).trimmed().toFloat() * 100); + song->set_score(TStringToQString(map["FMPS_RATING_AMAROK_SCORE"].front()) + .trimmed() + .toFloat() * + 100); } void TagReader::SetVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const { + const pb::tagreader::SongMetadata& song) + const { - vorbis_comments->addField("COMPOSER", StdStringToTaglibString(song.composer()), true); - vorbis_comments->addField("PERFORMER", StdStringToTaglibString(song.performer()), true); - vorbis_comments->addField("CONTENT GROUP", StdStringToTaglibString(song.grouping()), true); - vorbis_comments->addField("BPM", QStringToTaglibString(song.bpm() <= 0 -1 ? QString() : QString::number(song.bpm())), true); - vorbis_comments->addField("DISCNUMBER", QStringToTaglibString(song.disc() <= 0 -1 ? QString() : QString::number(song.disc())), true); - vorbis_comments->addField("COMPILATION", StdStringToTaglibString(song.compilation() ? "1" : "0"), true); + vorbis_comments->addField("COMPOSER", + StdStringToTaglibString(song.composer()), true); + vorbis_comments->addField("PERFORMER", + StdStringToTaglibString(song.performer()), true); + vorbis_comments->addField("CONTENT GROUP", + StdStringToTaglibString(song.grouping()), true); + vorbis_comments->addField( + "BPM", QStringToTaglibString( + song.bpm() <= 0 - 1 ? QString() : QString::number(song.bpm())), + true); + vorbis_comments->addField( + "DISCNUMBER", + QStringToTaglibString( + song.disc() <= 0 - 1 ? QString() : QString::number(song.disc())), + true); + vorbis_comments->addField( + "COMPILATION", StdStringToTaglibString(song.compilation() ? "1" : "0"), + true); } -void TagReader::SetFMPSStatisticsVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const { - vorbis_comments->addField("FMPS_PLAYCOUNT", QStringToTaglibString(QString::number(song.playcount()))); - vorbis_comments->addField("FMPS_RATING_AMAROK_SCORE", QStringToTaglibString(QString::number(song.score() / 100.0))); +void TagReader::SetFMPSStatisticsVorbisComments( + TagLib::Ogg::XiphComment* vorbis_comments, + const pb::tagreader::SongMetadata& song) const { + vorbis_comments->addField( + "FMPS_PLAYCOUNT", + QStringToTaglibString(QString::number(song.playcount()))); + vorbis_comments->addField( + "FMPS_RATING_AMAROK_SCORE", + QStringToTaglibString(QString::number(song.score() / 100.0))); } -void TagReader::SetFMPSRatingVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const { +void TagReader::SetFMPSRatingVorbisComments( + TagLib::Ogg::XiphComment* vorbis_comments, + const pb::tagreader::SongMetadata& song) const { - vorbis_comments->addField("FMPS_RATING", QStringToTaglibString(QString::number(song.rating()))); + vorbis_comments->addField( + "FMPS_RATING", QStringToTaglibString(QString::number(song.rating()))); } pb::tagreader::SongMetadata_Type TagReader::GuessFileType( @@ -524,135 +582,155 @@ pb::tagreader::SongMetadata_Type TagReader::GuessFileType( } bool TagReader::SaveFile(const QString& filename, - const pb::tagreader::SongMetadata& song) const { - if (filename.isNull()) - return false; + const pb::tagreader::SongMetadata& song) const { + if (filename.isNull()) return false; qLog(Debug) << "Saving tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); - if (!fileref || fileref->isNull()) // The file probably doesn't exist + if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; fileref->tag()->setTitle(StdStringToTaglibString(song.title())); - fileref->tag()->setArtist(StdStringToTaglibString(song.artist())); // TPE1 + fileref->tag()->setArtist(StdStringToTaglibString(song.artist())); // TPE1 fileref->tag()->setAlbum(StdStringToTaglibString(song.album())); fileref->tag()->setGenre(StdStringToTaglibString(song.genre())); fileref->tag()->setComment(StdStringToTaglibString(song.comment())); fileref->tag()->setYear(song.year()); fileref->tag()->setTrack(song.track()); - if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { + if (TagLib::MPEG::File* file = + dynamic_cast(fileref->file())) { TagLib::ID3v2::Tag* tag = file->ID3v2Tag(true); - SetTextFrame("TPOS", song.disc() <= 0 -1 ? QString() : QString::number(song.disc()), tag); - SetTextFrame("TBPM", song.bpm() <= 0 -1 ? QString() : QString::number(song.bpm()), tag); + SetTextFrame( + "TPOS", song.disc() <= 0 - 1 ? QString() : QString::number(song.disc()), + tag); + SetTextFrame("TBPM", + song.bpm() <= 0 - 1 ? QString() : QString::number(song.bpm()), + tag); SetTextFrame("TCOM", song.composer(), tag); SetTextFrame("TIT1", song.grouping(), tag); // Skip TPE1 (which is the artist) here because we already set it SetTextFrame("TPE2", song.albumartist(), tag); SetTextFrame("TCMP", std::string(song.compilation() ? "1" : "0"), tag); - } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::FLAC::File* file = + dynamic_cast(fileref->file())) { TagLib::Ogg::XiphComment* tag = file->xiphComment(); SetVorbisComments(tag, song); - } else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::MP4::File* file = + dynamic_cast(fileref->file())) { TagLib::MP4::Tag* tag = file->tag(); - tag->itemListMap()["disk"] = TagLib::MP4::Item(song.disc() <= 0 -1 ? 0 : song.disc(), 0); - tag->itemListMap()["tmpo"] = TagLib::StringList(song.bpm() <= 0 -1 ? "0" : TagLib::String::number(song.bpm())); + tag->itemListMap()["disk"] = + TagLib::MP4::Item(song.disc() <= 0 - 1 ? 0 : song.disc(), 0); + tag->itemListMap()["tmpo"] = TagLib::StringList( + song.bpm() <= 0 - 1 ? "0" : TagLib::String::number(song.bpm())); tag->itemListMap()["\251wrt"] = TagLib::StringList(song.composer()); tag->itemListMap()["\251grp"] = TagLib::StringList(song.grouping()); - tag->itemListMap()["aART"] = TagLib::StringList(song.albumartist()); - tag->itemListMap()["cpil"] = TagLib::StringList(song.compilation() ? "1" : "0"); + tag->itemListMap()["aART"] = TagLib::StringList(song.albumartist()); + tag->itemListMap()["cpil"] = + TagLib::StringList(song.compilation() ? "1" : "0"); } - // Handle all the files which have VorbisComments (Ogg, OPUS, ...) in the same way; + // Handle all the files which have VorbisComments (Ogg, OPUS, ...) in the same + // way; // apart, so we keep specific behavior for some formats by adding another // "else if" block above. - if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { - SetVorbisComments(tag, song); + if (TagLib::Ogg::XiphComment* tag = + dynamic_cast(fileref->file()->tag())) { + SetVorbisComments(tag, song); } bool ret = fileref->save(); - #ifdef Q_OS_LINUX +#ifdef Q_OS_LINUX if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) - utimensat(0, QFile::encodeName(filename).constData(), NULL, 0); + utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } - #endif // Q_OS_LINUX +#endif // Q_OS_LINUX return ret; } -bool TagReader::SaveSongStatisticsToFile(const QString& filename, - const pb::tagreader::SongMetadata& song) const { - if (filename.isNull()) - return false; +bool TagReader::SaveSongStatisticsToFile( + const QString& filename, const pb::tagreader::SongMetadata& song) const { + if (filename.isNull()) return false; qLog(Debug) << "Saving song statistics tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); - if (!fileref || fileref->isNull()) // The file probably doesn't exist + if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; - if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { + if (TagLib::MPEG::File* file = + dynamic_cast(fileref->file())) { TagLib::ID3v2::Tag* tag = file->ID3v2Tag(true); // Save as FMPS SetUserTextFrame("FMPS_PlayCount", QString::number(song.playcount()), tag); - SetUserTextFrame("FMPS_Rating_Amarok_Score", QString::number(song.score() / 100.0), tag); + SetUserTextFrame("FMPS_Rating_Amarok_Score", + QString::number(song.score() / 100.0), tag); // Also save as POPM TagLib::ID3v2::PopularimeterFrame* frame = GetPOPMFrameFromTag(tag); frame->setCounter(song.playcount()); - } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::FLAC::File* file = + dynamic_cast(fileref->file())) { TagLib::Ogg::XiphComment* vorbis_comments = file->xiphComment(true); SetFMPSStatisticsVorbisComments(vorbis_comments, song); - } else if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { + } else if (TagLib::Ogg::XiphComment* tag = + dynamic_cast( + fileref->file()->tag())) { SetFMPSStatisticsVorbisComments(tag, song); } #ifdef TAGLIB_WITH_ASF - else if (TagLib::ASF::File* file = dynamic_cast(fileref->file())) { + else if (TagLib::ASF::File* file = + dynamic_cast(fileref->file())) { TagLib::ASF::Tag* tag = file->tag(); tag->addAttribute("FMPS/Playcount", NumberToASFAttribute(song.playcount())); - tag->addAttribute("FMPS/Rating_Amarok_Score", NumberToASFAttribute(song.score() / 100.0)); + tag->addAttribute("FMPS/Rating_Amarok_Score", + NumberToASFAttribute(song.score() / 100.0)); } #endif - else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { + else if (TagLib::MP4::File* file = + dynamic_cast(fileref->file())) { TagLib::MP4::Tag* tag = file->tag(); - tag->itemListMap()[kMP4_FMPS_Score_ID] = TagLib::StringList(QStringToTaglibString(QString::number(song.score() / 100.0))); - tag->itemListMap()[kMP4_FMPS_Playcount_ID] = TagLib::StringList(TagLib::String::number(song.playcount())); + tag->itemListMap()[kMP4_FMPS_Score_ID] = TagLib::StringList( + QStringToTaglibString(QString::number(song.score() / 100.0))); + tag->itemListMap()[kMP4_FMPS_Playcount_ID] = + TagLib::StringList(TagLib::String::number(song.playcount())); } else { // Nothing to save: stop now return true; } bool ret = fileref->save(); - #ifdef Q_OS_LINUX +#ifdef Q_OS_LINUX if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) - utimensat(0, QFile::encodeName(filename).constData(), NULL, 0); + utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } - #endif // Q_OS_LINUX +#endif // Q_OS_LINUX return ret; } -bool TagReader::SaveSongRatingToFile(const QString& filename, - const pb::tagreader::SongMetadata& song) const { - if (filename.isNull()) - return false; +bool TagReader::SaveSongRatingToFile( + const QString& filename, const pb::tagreader::SongMetadata& song) const { + if (filename.isNull()) return false; qLog(Debug) << "Saving song rating tags to" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); - if (!fileref || fileref->isNull()) // The file probably doesn't exist + if (!fileref || fileref->isNull()) // The file probably doesn't exist return false; - if (TagLib::MPEG::File* file = dynamic_cast(fileref->file())) { + if (TagLib::MPEG::File* file = + dynamic_cast(fileref->file())) { TagLib::ID3v2::Tag* tag = file->ID3v2Tag(true); // Save as FMPS @@ -662,38 +740,45 @@ bool TagReader::SaveSongRatingToFile(const QString& filename, TagLib::ID3v2::PopularimeterFrame* frame = GetPOPMFrameFromTag(tag); frame->setRating(ConvertToPOPMRating(song.rating())); - } else if (TagLib::FLAC::File* file = dynamic_cast(fileref->file())) { + } else if (TagLib::FLAC::File* file = + dynamic_cast(fileref->file())) { TagLib::Ogg::XiphComment* vorbis_comments = file->xiphComment(true); SetFMPSRatingVorbisComments(vorbis_comments, song); - } else if (TagLib::Ogg::XiphComment* tag = dynamic_cast(fileref->file()->tag())) { + } else if (TagLib::Ogg::XiphComment* tag = + dynamic_cast( + fileref->file()->tag())) { SetFMPSRatingVorbisComments(tag, song); } #ifdef TAGLIB_WITH_ASF - else if (TagLib::ASF::File* file = dynamic_cast(fileref->file())) { + else if (TagLib::ASF::File* file = + dynamic_cast(fileref->file())) { TagLib::ASF::Tag* tag = file->tag(); - tag->addAttribute("FMPS/Rating", NumberToASFAttribute(song.rating())); + tag->addAttribute("FMPS/Rating", NumberToASFAttribute(song.rating())); } #endif - else if (TagLib::MP4::File* file = dynamic_cast(fileref->file())) { + else if (TagLib::MP4::File* file = + dynamic_cast(fileref->file())) { TagLib::MP4::Tag* tag = file->tag(); - tag->itemListMap()[kMP4_FMPS_Rating_ID] = TagLib::StringList(QStringToTaglibString(QString::number(song.rating()))); + tag->itemListMap()[kMP4_FMPS_Rating_ID] = TagLib::StringList( + QStringToTaglibString(QString::number(song.rating()))); } else { // Nothing to save: stop now return true; } bool ret = fileref->save(); - #ifdef Q_OS_LINUX +#ifdef Q_OS_LINUX if (ret) { // Linux: inotify doesn't seem to notice the change to the file unless we // change the timestamps as well. (this is what touch does) - utimensat(0, QFile::encodeName(filename).constData(), NULL, 0); + utimensat(0, QFile::encodeName(filename).constData(), nullptr, 0); } - #endif // Q_OS_LINUX +#endif // Q_OS_LINUX return ret; } -void TagReader::SetUserTextFrame(const QString& description, const QString& value, +void TagReader::SetUserTextFrame(const QString& description, + const QString& value, TagLib::ID3v2::Tag* tag) const { const QByteArray descr_utf8(description.toUtf8()); const QByteArray value_utf8(value.toUtf8()); @@ -723,13 +808,13 @@ void TagReader::SetUserTextFrame(const std::string& description, } void TagReader::SetTextFrame(const char* id, const QString& value, - TagLib::ID3v2::Tag* tag) const { + TagLib::ID3v2::Tag* tag) const { const QByteArray utf8(value.toUtf8()); SetTextFrame(id, std::string(utf8.constData(), utf8.length()), tag); } void TagReader::SetTextFrame(const char* id, const std::string& value, - TagLib::ID3v2::Tag* tag) const { + TagLib::ID3v2::Tag* tag) const { TagLib::ByteVector id_vector(id); // Remove the frame if it already exists @@ -749,13 +834,12 @@ void TagReader::SetTextFrame(const char* id, const std::string& value, bool TagReader::IsMediaFile(const QString& filename) const { qLog(Debug) << "Checking for valid file" << filename; - scoped_ptr fileref(factory_->GetFileRef(filename)); + std::unique_ptr fileref(factory_->GetFileRef(filename)); return !fileref->isNull() && fileref->tag(); } QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { - if (filename.isEmpty()) - return QByteArray(); + if (filename.isEmpty()) return QByteArray(); qLog(Debug) << "Loading art from" << filename; @@ -765,20 +849,20 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { TagLib::FileRef ref(QFile::encodeName(filename).constData()); #endif - if (ref.isNull() || !ref.file()) - return QByteArray(); + if (ref.isNull() || !ref.file()) return QByteArray(); // MP3 TagLib::MPEG::File* file = dynamic_cast(ref.file()); if (file && file->ID3v2Tag()) { - TagLib::ID3v2::FrameList apic_frames = file->ID3v2Tag()->frameListMap()["APIC"]; - if (apic_frames.isEmpty()) - return QByteArray(); + TagLib::ID3v2::FrameList apic_frames = + file->ID3v2Tag()->frameListMap()["APIC"]; + if (apic_frames.isEmpty()) return QByteArray(); TagLib::ID3v2::AttachedPictureFrame* pic = static_cast(apic_frames.front()); - return QByteArray((const char*) pic->picture().data(), pic->picture().size()); + return QByteArray((const char*)pic->picture().data(), + pic->picture().size()); } // Ogg vorbis/speex @@ -788,12 +872,14 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { if (xiph_comment) { TagLib::Ogg::FieldListMap map = xiph_comment->fieldListMap(); - // Other than the below mentioned non-standard COVERART, METADATA_BLOCK_PICTURE + // Other than the below mentioned non-standard COVERART, + // METADATA_BLOCK_PICTURE // is the proposed tag for cover pictures. // (see http://wiki.xiph.org/VorbisComment#METADATA_BLOCK_PICTURE) if (map.contains("METADATA_BLOCK_PICTURE")) { TagLib::StringList pict_list = map["METADATA_BLOCK_PICTURE"]; - for(std::list::iterator it = pict_list.begin(); it != pict_list.end(); ++it) { + for (std::list::iterator it = pict_list.begin(); + it != pict_list.end(); ++it) { QByteArray data(QByteArray::fromBase64(it->toCString())); TagLib::ByteVector tdata(data.data(), data.size()); TagLib::FLAC::Picture p(tdata); @@ -801,7 +887,8 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { return QByteArray(p.data().data(), p.data().size()); } // If there was no specific front cover, just take the first picture - QByteArray data(QByteArray::fromBase64(map["METADATA_BLOCK_PICTURE"].front().toCString())); + QByteArray data(QByteArray::fromBase64( + map["METADATA_BLOCK_PICTURE"].front().toCString())); TagLib::ByteVector tdata(data.data(), data.size()); TagLib::FLAC::Picture p(tdata); return QByteArray(p.data().data(), p.data().size()); @@ -809,8 +896,7 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { // Ogg lacks a definitive standard for embedding cover art, but it seems // b64 encoding a field called COVERART is the general convention - if (!map.contains("COVERART")) - return QByteArray(); + if (!map.contains("COVERART")) return QByteArray(); return QByteArray::fromBase64(map["COVERART"].toString().toCString()); } @@ -852,62 +938,45 @@ QByteArray TagReader::LoadEmbeddedArt(const QString& filename) const { return QByteArray(); } - #ifdef HAVE_GOOGLE_DRIVE -bool TagReader::ReadCloudFile(const QUrl& download_url, - const QString& title, - int size, - const QString& mime_type, - const QString& authorisation_header, - pb::tagreader::SongMetadata* song) const { +bool TagReader::ReadCloudFile(const QUrl& download_url, const QString& title, + int size, const QString& mime_type, + const QString& authorisation_header, + pb::tagreader::SongMetadata* song) const { qLog(Debug) << "Loading tags from" << title; - CloudStream* stream = new CloudStream( - download_url, title, size, authorisation_header, network_); + CloudStream* stream = new CloudStream(download_url, title, size, + authorisation_header, network_); stream->Precache(); - scoped_ptr tag; + std::unique_ptr tag; if (mime_type == "audio/mpeg" && title.endsWith(".mp3")) { - tag.reset(new TagLib::MPEG::File( - stream, // Takes ownership. - TagLib::ID3v2::FrameFactory::instance(), - TagLib::AudioProperties::Accurate)); + tag.reset(new TagLib::MPEG::File(stream, // Takes ownership. + TagLib::ID3v2::FrameFactory::instance(), + TagLib::AudioProperties::Accurate)); } else if (mime_type == "audio/mp4" || (mime_type == "audio/mpeg" && title.endsWith(".m4a"))) { - tag.reset(new TagLib::MP4::File( - stream, - true, - TagLib::AudioProperties::Accurate)); - } + tag.reset( + new TagLib::MP4::File(stream, true, TagLib::AudioProperties::Accurate)); + } #ifdef TAGLIB_HAS_OPUS - else if ((mime_type == "application/opus" || - mime_type == "audio/opus" || - mime_type == "application/ogg" || - mime_type == "audio/ogg") && title.endsWith(".opus")) { - tag.reset(new TagLib::Ogg::Opus::File( - stream, - true, - TagLib::AudioProperties::Accurate)); + else if ((mime_type == "application/opus" || mime_type == "audio/opus" || + mime_type == "application/ogg" || mime_type == "audio/ogg") && + title.endsWith(".opus")) { + tag.reset(new TagLib::Ogg::Opus::File(stream, true, + TagLib::AudioProperties::Accurate)); } #endif - else if (mime_type == "application/ogg" || - mime_type == "audio/ogg") { - tag.reset(new TagLib::Ogg::Vorbis::File( - stream, - true, - TagLib::AudioProperties::Accurate)); - } else if (mime_type == "application/x-flac" || - mime_type == "audio/flac" || - mime_type == "audio/x-flac") { - tag.reset(new TagLib::FLAC::File( - stream, - TagLib::ID3v2::FrameFactory::instance(), - true, - TagLib::AudioProperties::Accurate)); + else if (mime_type == "application/ogg" || mime_type == "audio/ogg") { + tag.reset(new TagLib::Ogg::Vorbis::File(stream, true, + TagLib::AudioProperties::Accurate)); + } else if (mime_type == "application/x-flac" || mime_type == "audio/flac" || + mime_type == "audio/x-flac") { + tag.reset(new TagLib::FLAC::File(stream, + TagLib::ID3v2::FrameFactory::instance(), + true, TagLib::AudioProperties::Accurate)); } else if (mime_type == "audio/x-ms-wma") { - tag.reset(new TagLib::ASF::File( - stream, - true, - TagLib::AudioProperties::Accurate)); + tag.reset( + new TagLib::ASF::File(stream, true, TagLib::AudioProperties::Accurate)); } else { qLog(Debug) << "Unknown mime type for tagging:" << mime_type; return false; @@ -916,8 +985,7 @@ bool TagReader::ReadCloudFile(const QUrl& download_url, if (stream->num_requests() > 2) { // Warn if pre-caching failed. qLog(Warning) << "Total requests for file:" << title - << stream->num_requests() - << stream->cached_bytes(); + << stream->num_requests() << stream->cached_bytes(); } if (tag->tag() && !tag->tag()->isEmpty()) { @@ -943,14 +1011,16 @@ bool TagReader::ReadCloudFile(const QUrl& download_url, return false; } -#endif // HAVE_GOOGLE_DRIVE +#endif // HAVE_GOOGLE_DRIVE -TagLib::ID3v2::PopularimeterFrame* TagReader::GetPOPMFrameFromTag(TagLib::ID3v2::Tag* tag) { - TagLib::ID3v2::PopularimeterFrame* frame = NULL; +TagLib::ID3v2::PopularimeterFrame* TagReader::GetPOPMFrameFromTag( + TagLib::ID3v2::Tag* tag) { + TagLib::ID3v2::PopularimeterFrame* frame = nullptr; const TagLib::ID3v2::FrameListMap& map = tag->frameListMap(); if (!map["POPM"].isEmpty()) { - frame = dynamic_cast(map["POPM"].front()); + frame = + dynamic_cast(map["POPM"].front()); } if (!frame) { @@ -964,15 +1034,15 @@ float TagReader::ConvertPOPMRating(const int POPM_rating) { if (POPM_rating < 0x01) { return 0.0; } else if (POPM_rating < 0x40) { - return 0.20; // 1 star + return 0.20; // 1 star } else if (POPM_rating < 0x80) { - return 0.40; // 2 stars + return 0.40; // 2 stars } else if (POPM_rating < 0xC0) { - return 0.60; // 3 stars - } else if (POPM_rating < 0xFC) { // some players store 5 stars as 0xFC - return 0.80; // 4 stars + return 0.60; // 3 stars + } else if (POPM_rating < 0xFC) { // some players store 5 stars as 0xFC + return 0.80; // 4 stars } - return 1.0; // 5 stars + return 1.0; // 5 stars } int TagReader::ConvertToPOPMRating(const float rating) { diff --git a/ext/libclementine-tagreader/tagreader.h b/ext/libclementine-tagreader/tagreader.h index 7dafd25c0..28d989803 100644 --- a/ext/libclementine-tagreader/tagreader.h +++ b/ext/libclementine-tagreader/tagreader.h @@ -30,15 +30,14 @@ class QString; class QTextCodec; class QUrl; - namespace TagLib { - class FileRef; - class String; +class FileRef; +class String; - namespace ID3v2 { - class Tag; - class PopularimeterFrame; - } +namespace ID3v2 { +class Tag; +class PopularimeterFrame; +} } class FileRefFactory; @@ -52,25 +51,26 @@ class TagReader { public: TagReader(); - void ReadFile(const QString& filename, pb::tagreader::SongMetadata* song) const; - bool SaveFile(const QString& filename, const pb::tagreader::SongMetadata& song) const; + void ReadFile(const QString& filename, + pb::tagreader::SongMetadata* song) const; + bool SaveFile(const QString& filename, + const pb::tagreader::SongMetadata& song) const; // Returns false if something went wrong; returns true otherwise (might // returns true if the file exists but nothing has been written inside because // statistics tag format is not supported for this kind of file) - bool SaveSongStatisticsToFile(const QString& filename, const pb::tagreader::SongMetadata& song) const; - bool SaveSongRatingToFile(const QString& filename, const pb::tagreader::SongMetadata& song) const; + bool SaveSongStatisticsToFile(const QString& filename, + const pb::tagreader::SongMetadata& song) const; + bool SaveSongRatingToFile(const QString& filename, + const pb::tagreader::SongMetadata& song) const; bool IsMediaFile(const QString& filename) const; QByteArray LoadEmbeddedArt(const QString& filename) const; - #ifdef HAVE_GOOGLE_DRIVE - bool ReadCloudFile(const QUrl& download_url, - const QString& title, - int size, - const QString& mime_type, - const QString& access_token, +#ifdef HAVE_GOOGLE_DRIVE + bool ReadCloudFile(const QUrl& download_url, const QString& title, int size, + const QString& mime_type, const QString& access_token, pb::tagreader::SongMetadata* song) const; - #endif // HAVE_GOOGLE_DRIVE +#endif // HAVE_GOOGLE_DRIVE static void Decode(const TagLib::String& tag, const QTextCodec* codec, std::string* output); @@ -80,21 +80,24 @@ class TagReader { void ParseFMPSFrame(const QString& name, const QString& value, pb::tagreader::SongMetadata* song) const; void ParseOggTag(const TagLib::Ogg::FieldListMap& map, - const QTextCodec* codec, - QString* disc, QString* compilation, + const QTextCodec* codec, QString* disc, QString* compilation, pb::tagreader::SongMetadata* song) const; void SetVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, const pb::tagreader::SongMetadata& song) const; - void SetFMPSStatisticsVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const; + void SetFMPSStatisticsVorbisComments( + TagLib::Ogg::XiphComment* vorbis_comments, + const pb::tagreader::SongMetadata& song) const; void SetFMPSRatingVorbisComments(TagLib::Ogg::XiphComment* vorbis_comments, - const pb::tagreader::SongMetadata& song) const; + const pb::tagreader::SongMetadata& song) + const; - pb::tagreader::SongMetadata_Type GuessFileType(TagLib::FileRef* fileref) const; + pb::tagreader::SongMetadata_Type GuessFileType(TagLib::FileRef* fileref) + const; void SetUserTextFrame(const QString& description, const QString& value, TagLib::ID3v2::Tag* tag) const; - void SetUserTextFrame(const std::string& description, const std::string& value, + void SetUserTextFrame(const std::string& description, + const std::string& value, TagLib::ID3v2::Tag* tag) const; void SetTextFrame(const char* id, const QString& value, @@ -102,15 +105,17 @@ class TagReader { void SetTextFrame(const char* id, const std::string& value, TagLib::ID3v2::Tag* tag) const; -private: + private: static const char* kMP4_FMPS_Rating_ID; static const char* kMP4_FMPS_Playcount_ID; static const char* kMP4_FMPS_Score_ID; - // Returns a float in [0.0..1.0] corresponding to the rating range we use in Clementine + // Returns a float in [0.0..1.0] corresponding to the rating range we use in + // Clementine static float ConvertPOPMRating(const int POPM_rating); // Reciprocal static int ConvertToPOPMRating(const float rating); - static TagLib::ID3v2::PopularimeterFrame* GetPOPMFrameFromTag(TagLib::ID3v2::Tag* tag); + static TagLib::ID3v2::PopularimeterFrame* GetPOPMFrameFromTag( + TagLib::ID3v2::Tag* tag); FileRefFactory* factory_; QNetworkAccessManager* network_; @@ -118,4 +123,4 @@ private: const std::string kEmbeddedCover; }; -#endif // TAGREADER_H +#endif // TAGREADER_H diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 63f004be2..93fa03387 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -25,6 +25,7 @@ if (QT_VERSION_MINOR GREATER 5) endif(QT_VERSION_MINOR GREATER 7) endif(QT_VERSION_MINOR GREATER 5) add_definitions(-DQT_NO_URL_CAST_FROM_STRING) +add_definitions(-DBOOST_BIND_NO_PLACEHOLDERS) include_directories(${CMAKE_BINARY_DIR}) include_directories(${GLIB_INCLUDE_DIRS}) @@ -137,6 +138,7 @@ set(SOURCES devices/deviceviewcontainer.cpp devices/filesystemdevice.cpp + engines/devicefinder.cpp engines/enginebase.cpp engines/gstengine.cpp engines/gstenginepipeline.cpp @@ -162,6 +164,7 @@ set(SOURCES globalsearch/suggestionwidget.cpp globalsearch/urlsearchprovider.cpp + internet/cloudfilesearchprovider.cpp internet/cloudfileservice.cpp internet/digitallyimportedclient.cpp internet/digitallyimportedservicebase.cpp @@ -196,6 +199,7 @@ set(SOURCES internet/somafmservice.cpp internet/somafmurlhandler.cpp internet/soundcloudservice.cpp + internet/soundcloudsettingspage.cpp internet/spotifyserver.cpp internet/spotifyservice.cpp internet/spotifysettingspage.cpp @@ -492,10 +496,12 @@ set(HEADERS internet/magnatunesettingspage.h internet/oauthenticator.h internet/savedradio.h + internet/scrobbler.h internet/searchboxwidget.h internet/somafmservice.h internet/somafmurlhandler.h internet/soundcloudservice.h + internet/soundcloudsettingspage.h internet/spotifyserver.h internet/spotifyservice.h internet/spotifysettingspage.h @@ -688,6 +694,7 @@ set(UI internet/magnatunedownloaddialog.ui internet/magnatunesettingspage.ui internet/searchboxwidget.ui + internet/soundcloudsettingspage.ui internet/spotifysettingspage.ui internet/subsonicsettingspage.ui @@ -813,13 +820,10 @@ optional_source(ENABLE_VISUALISATIONS optional_source(HAVE_LIBLASTFM SOURCES covers/lastfmcoverprovider.cpp - globalsearch/lastfmsearchprovider.cpp internet/fixlastfm.cpp internet/lastfmcompat.cpp internet/lastfmservice.cpp internet/lastfmsettingspage.cpp - internet/lastfmstationdialog.cpp - internet/lastfmurlhandler.cpp songinfo/echonestsimilarartists.cpp songinfo/echonesttags.cpp songinfo/lastfmtrackinfoprovider.cpp @@ -828,14 +832,12 @@ optional_source(HAVE_LIBLASTFM covers/lastfmcoverprovider.h internet/lastfmservice.h internet/lastfmsettingspage.h - internet/lastfmstationdialog.h songinfo/echonestsimilarartists.h songinfo/echonesttags.h songinfo/lastfmtrackinfoprovider.h songinfo/tagwidget.h UI internet/lastfmsettingspage.ui - internet/lastfmstationdialog.ui ) @@ -851,7 +853,6 @@ optional_source(HAVE_SPOTIFY_DOWNLOADER # Platform specific - OS X optional_source(APPLE INCLUDE_DIRECTORIES - ${GROWL}/Headers ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/google-breakpad/client/mac/build/Release/Breakpad.framework SOURCES core/macfslistener.mm @@ -859,6 +860,7 @@ optional_source(APPLE core/mac_startup.mm core/scoped_nsautorelease_pool.mm devices/macdevicelister.mm + engines/osxdevicefinder.cpp networkremote/bonjour.mm ui/globalshortcutgrabber.mm ui/macscreensaver.cpp @@ -874,6 +876,7 @@ optional_source(APPLE # Platform specific - Windows optional_source(WIN32 SOURCES + engines/directsounddevicefinder.cpp networkremote/tinysvcmdns.cpp widgets/osd_win.cpp INCLUDE_DIRECTORIES @@ -1081,22 +1084,6 @@ optional_source(HAVE_GOOGLE_DRIVE internet/googledrivesettingspage.ui ) -# Ubuntu One file support -optional_source(HAVE_UBUNTU_ONE - SOURCES - internet/ubuntuoneauthenticator.cpp - internet/ubuntuoneservice.cpp - internet/ubuntuonesettingspage.cpp - internet/ubuntuoneurlhandler.cpp - HEADERS - internet/ubuntuoneauthenticator.h - internet/ubuntuoneservice.h - internet/ubuntuonesettingspage.h - internet/ubuntuoneurlhandler.h - UI - internet/ubuntuonesettingspage.ui -) - # Dropbox support optional_source(HAVE_DROPBOX SOURCES @@ -1117,10 +1104,14 @@ optional_source(HAVE_DROPBOX optional_source(HAVE_SKYDRIVE SOURCES internet/skydriveservice.cpp + internet/skydrivesettingspage.cpp internet/skydriveurlhandler.cpp HEADERS internet/skydriveservice.h + internet/skydrivesettingspage.h internet/skydriveurlhandler.h + UI + internet/skydrivesettingspage.ui ) # Box support @@ -1137,6 +1128,39 @@ optional_source(HAVE_BOX internet/boxsettingspage.ui ) +# Vk.com support +optional_source(HAVE_VK + INCLUDE_DIRECTORIES + ${VREEN_INCLUDE_DIRS} + SOURCES + globalsearch/vksearchprovider.cpp + internet/vkconnection.cpp + internet/vkmusiccache.cpp + internet/vksearchdialog.cpp + internet/vkservice.cpp + internet/vksettingspage.cpp + internet/vkurlhandler.cpp + HEADERS + globalsearch/vksearchprovider.h + internet/vkconnection.h + internet/vkmusiccache.h + internet/vksearchdialog.h + internet/vkservice.h + internet/vksettingspage.h + internet/vkurlhandler.h + UI + internet/vksearchdialog.ui + internet/vksettingspage.ui +) + +# Pulse audio integration +optional_source(HAVE_LIBPULSE + INCLUDE_DIRECTORIES + ${LIBPULSE_INCLUDE_DIRS} + SOURCES + engines/pulsedevicefinder.cpp +) + # Hack to add Clementine to the Unity system tray whitelist optional_source(LINUX SOURCES core/ubuntuunityhack.cpp @@ -1204,6 +1228,10 @@ target_link_libraries(clementine_lib Qocoa ) +if(HAVE_VK) + target_link_libraries(clementine_lib ${VREEN_LIBRARIES}) +endif(HAVE_VK) + if(ENABLE_VISUALISATIONS) target_link_libraries(clementine_lib ${LIBPROJECTM_LIBRARIES}) endif(ENABLE_VISUALISATIONS) @@ -1255,14 +1283,19 @@ if(HAVE_SPOTIFY_DOWNLOADER) link_directories(${QCA_LIBRARY_DIRS}) endif(HAVE_SPOTIFY_DOWNLOADER) +if(HAVE_LIBPULSE) + target_link_libraries(clementine_lib ${LIBPULSE_LIBRARIES}) +endif() + if (APPLE) target_link_libraries(clementine_lib - ${GROWL} /System/Library/Frameworks/AppKit.framework /System/Library/Frameworks/Carbon.framework + /System/Library/Frameworks/CoreAudio.framework /System/Library/Frameworks/DiskArbitration.framework /System/Library/Frameworks/Foundation.framework /System/Library/Frameworks/IOKit.framework + /System/Library/Frameworks/ScriptingBridge.framework ) target_link_libraries(clementine_lib ${SPMEDIAKEYTAP_LIBRARIES}) if (HAVE_SPARKLE) @@ -1282,6 +1315,7 @@ if (WIN32) ${QTSPARKLE_LIBRARIES} tinysvcmdns qtwin + dsound ) endif (WIN32) @@ -1359,22 +1393,19 @@ if (APPLE) DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/Sparkle.framework") endif (HAVE_SPARKLE) - install(DIRECTORY "${GROWL}/Versions/Current/Resources" - DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/Growl.framework") - - install(FILES "${QT_QTCORE_LIBRARY}/Contents/Info.plist" + install(FILES "${QT_QTCORE_LIBRARY_RELEASE}/Contents/Info.plist" DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/QtCore.framework/Contents") - install(FILES "${QT_QTGUI_LIBRARY}/Contents/Info.plist" + install(FILES "${QT_QTGUI_LIBRARY_RELEASE}/Contents/Info.plist" DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/QtGui.framework/Contents") - install(FILES "${QT_QTNETWORK_LIBRARY}/Contents/Info.plist" + install(FILES "${QT_QTNETWORK_LIBRARY_RELEASE}/Contents/Info.plist" DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/QtNetwork.framework/Contents") - install(FILES "${QT_QTOPENGL_LIBRARY}/Contents/Info.plist" + install(FILES "${QT_QTOPENGL_LIBRARY_RELEASE}/Contents/Info.plist" DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/QtOpenGL.framework/Contents") - install(FILES "${QT_QTSQL_LIBRARY}/Contents/Info.plist" + install(FILES "${QT_QTSQL_LIBRARY_RELEASE}/Contents/Info.plist" DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/QtSql.framework/Contents") - install(FILES "${QT_QTSVG_LIBRARY}/Contents/Info.plist" + install(FILES "${QT_QTSVG_LIBRARY_RELEASE}/Contents/Info.plist" DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/QtSvg.framework/Contents") - install(FILES "${QT_QTXML_LIBRARY}/Contents/Info.plist" + install(FILES "${QT_QTXML_LIBRARY_RELEASE}/Contents/Info.plist" DESTINATION "${CMAKE_BINARY_DIR}/clementine.app/Contents/Frameworks/QtXml.framework/Contents") if (HAVE_BREAKPAD) diff --git a/src/analyzers/analyzer.cpp b/src/analyzers/analyzer.cpp index 986bd74fd..54d0667a0 100644 --- a/src/analyzers/analyzer.cpp +++ b/src/analyzers/analyzer.cpp @@ -3,15 +3,13 @@ #include "engines/enginebase.h" AnalyzerBase::AnalyzerBase(QWidget* parent) - : QGLWidget(parent), - engine_(NULL) { -} + : QGLWidget(parent), engine_(nullptr) {} void AnalyzerBase::set_engine(Engine::Base* engine) { disconnect(engine_); engine_ = engine; if (engine_) { connect(engine_, SIGNAL(SpectrumAvailable(const QVector&)), - SLOT(SpectrumAvailable(const QVector&))); + SLOT(SpectrumAvailable(const QVector&))); } } diff --git a/src/analyzers/analyzerbase.cpp b/src/analyzers/analyzerbase.cpp old mode 100644 new mode 100755 index 523c063f1..00c2e57ee --- a/src/analyzers/analyzerbase.cpp +++ b/src/analyzers/analyzerbase.cpp @@ -17,9 +17,9 @@ #include "analyzerbase.h" -#include //interpolate() +#include //interpolate() -#include //event() +#include //event() #include #include #include @@ -27,205 +27,187 @@ #include "engines/enginebase.h" // INSTRUCTIONS Base2D -// 1. do anything that depends on height() in init(), Base2D will call it before you are shown +// 1. do anything that depends on height() in init(), Base2D will call it before +// you are shown // 2. otherwise you can use the constructor to initialise things -// 3. reimplement analyze(), and paint to canvas(), Base2D will update the widget when you return control to it +// 3. reimplement analyze(), and paint to canvas(), Base2D will update the +// widget when you return control to it // 4. if you want to manipulate the scope, reimplement transform() // 5. for convenience are pre-included // TODO make an INSTRUCTIONS file -//can't mod scope in analyze you have to use transform +// can't mod scope in analyze you have to use transform - -//TODO for 2D use setErasePixmap Qt function insetead of m_background +// TODO for 2D use setErasePixmap Qt function insetead of m_background // make the linker happy only for gcc < 4.0 -#if !( __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 0 ) ) && !defined(Q_OS_WIN32) +#if !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 0)) && \ + !defined(Q_OS_WIN32) template class Analyzer::Base; #endif +Analyzer::Base::Base(QWidget* parent, uint scopeSize) + : QWidget(parent), + m_timeout(40) // msec + , + m_fht(new FHT(scopeSize)), + m_engine(nullptr), + m_lastScope(512), + current_chunk_(0), + new_frame_(false), + is_playing_(false) {} -Analyzer::Base::Base( QWidget *parent, uint scopeSize ) - : QWidget( parent ) - , m_timeout( 40 ) // msec - , m_fht( new FHT(scopeSize) ) - , m_engine(NULL) - , m_lastScope(512) - , new_frame_(false) - , is_playing_(false) +void Analyzer::Base::hideEvent(QHideEvent*) { m_timer.stop(); } + +void Analyzer::Base::showEvent(QShowEvent*) { m_timer.start(timeout(), this); } + +void Analyzer::Base::transform(Scope& scope) // virtual { + // this is a standard transformation that should give + // an FFT scope that has bands for pretty analyzers + + // NOTE resizing here is redundant as FHT routines only calculate FHT::size() + // values + // scope.resize( m_fht->size() ); + + float* front = static_cast(&scope.front()); + + float* f = new float[m_fht->size()]; + m_fht->copy(&f[0], front); + m_fht->logSpectrum(front, &f[0]); + m_fht->scale(front, 1.0 / 20); + + scope.resize(m_fht->size() / 2); // second half of values are rubbish + delete[] f; } -void Analyzer::Base::hideEvent(QHideEvent *) { - m_timer.stop(); -} +void Analyzer::Base::paintEvent(QPaintEvent* e) { + QPainter p(this); + p.fillRect(e->rect(), palette().color(QPalette::Window)); -void Analyzer::Base::showEvent(QShowEvent *) { - m_timer.start(timeout(), this); -} + switch (m_engine->state()) { + case Engine::Playing: { + const Engine::Scope& thescope = m_engine->scope(m_timeout); + int i = 0; -void Analyzer::Base::transform( Scope &scope ) //virtual -{ - //this is a standard transformation that should give - //an FFT scope that has bands for pretty analyzers + // convert to mono here - our built in analyzers need mono, but the + // engines provide interleaved pcm + for (uint x = 0; (int)x < m_fht->size(); ++x) { + m_lastScope[x] = + double(thescope[i] + thescope[i + 1]) / (2 * (1 << 15)); + i += 2; + } - //NOTE resizing here is redundant as FHT routines only calculate FHT::size() values - //scope.resize( m_fht->size() ); + is_playing_ = true; + transform(m_lastScope); + analyze(p, m_lastScope, new_frame_); - float *front = static_cast( &scope.front() ); + // scope.resize( m_fht->size() ); - float* f = new float[ m_fht->size() ]; - m_fht->copy( &f[0], front ); - m_fht->logSpectrum( front, &f[0] ); - m_fht->scale( front, 1.0 / 20 ); - - scope.resize( m_fht->size() / 2 ); //second half of values are rubbish - delete [] f; -} - -void Analyzer::Base::paintEvent(QPaintEvent * e) -{ - QPainter p(this); - p.fillRect(e->rect(), palette().color(QPalette::Window)); - - switch( m_engine->state() ) - { - case Engine::Playing: - { - const Engine::Scope &thescope = m_engine->scope(); - int i = 0; - - // convert to mono here - our built in analyzers need mono, but we the engines provide interleaved pcm - for( uint x = 0; (int)x < m_fht->size(); ++x ) - { - m_lastScope[x] = double(thescope[i] + thescope[i+1]) / (2*(1<<15)); - i += 2; - } - - is_playing_ = true; - transform( m_lastScope ); - analyze( p, m_lastScope, new_frame_ ); - - //scope.resize( m_fht->size() ); - - break; + break; } case Engine::Paused: - is_playing_ = false; - analyze(p, m_lastScope, new_frame_); - break; + is_playing_ = false; + analyze(p, m_lastScope, new_frame_); + break; default: - is_playing_ = false; - demo(p); - } + is_playing_ = false; + demo(p); + } - - new_frame_ = false; + new_frame_ = false; } -int Analyzer::Base::resizeExponent( int exp ) -{ - if ( exp < 3 ) - exp = 3; - else if ( exp > 9 ) - exp = 9; +int Analyzer::Base::resizeExponent(int exp) { + if (exp < 3) + exp = 3; + else if (exp > 9) + exp = 9; - if ( exp != m_fht->sizeExp() ) { - delete m_fht; - m_fht = new FHT( exp ); - } - return exp; + if (exp != m_fht->sizeExp()) { + delete m_fht; + m_fht = new FHT(exp); + } + return exp; } -int Analyzer::Base::resizeForBands( int bands ) -{ - int exp; - if ( bands <= 8 ) - exp = 4; - else if ( bands <= 16 ) - exp = 5; - else if ( bands <= 32 ) - exp = 6; - else if ( bands <= 64 ) - exp = 7; - else if ( bands <= 128 ) - exp = 8; - else - exp = 9; +int Analyzer::Base::resizeForBands(int bands) { + int exp; + if (bands <= 8) + exp = 4; + else if (bands <= 16) + exp = 5; + else if (bands <= 32) + exp = 6; + else if (bands <= 64) + exp = 7; + else if (bands <= 128) + exp = 8; + else + exp = 9; - resizeExponent( exp ); - return m_fht->size() / 2; + resizeExponent(exp); + return m_fht->size() / 2; } -void Analyzer::Base::demo(QPainter& p) //virtual +void Analyzer::Base::demo(QPainter& p) // virtual { - static int t = 201; //FIXME make static to namespace perhaps + static int t = 201; // FIXME make static to namespace perhaps - if( t > 999 ) t = 1; //0 = wasted calculations - if( t < 201 ) - { - Scope s( 32 ); + if (t > 999) t = 1; // 0 = wasted calculations + if (t < 201) { + Scope s(32); - const double dt = double(t) / 200; - for( uint i = 0; i < s.size(); ++i ) - s[i] = dt * (sin( M_PI + (i * M_PI) / s.size() ) + 1.0); + const double dt = double(t) / 200; + for (uint i = 0; i < s.size(); ++i) + s[i] = dt * (sin(M_PI + (i * M_PI) / s.size()) + 1.0); - analyze( p, s, new_frame_ ); - } - else analyze( p, Scope( 32, 0 ), new_frame_ ); + analyze(p, s, new_frame_); + } else + analyze(p, Scope(32, 0), new_frame_); - ++t; + ++t; } - -void Analyzer::Base::polishEvent() -{ - init(); //virtual +void Analyzer::Base::polishEvent() { + init(); // virtual } -void -Analyzer::interpolate( const Scope &inVec, Scope &outVec ) //static +void Analyzer::interpolate(const Scope& inVec, Scope& outVec) // static { - double pos = 0.0; - const double step = (double)inVec.size() / outVec.size(); + double pos = 0.0; + const double step = (double)inVec.size() / outVec.size(); - for ( uint i = 0; i < outVec.size(); ++i, pos += step ) - { - const double error = pos - std::floor( pos ); - const unsigned long offset = (unsigned long)pos; + for (uint i = 0; i < outVec.size(); ++i, pos += step) { + const double error = pos - std::floor(pos); + const unsigned long offset = (unsigned long)pos; - unsigned long indexLeft = offset + 0; + unsigned long indexLeft = offset + 0; - if ( indexLeft >= inVec.size() ) - indexLeft = inVec.size() - 1; + if (indexLeft >= inVec.size()) indexLeft = inVec.size() - 1; - unsigned long indexRight = offset + 1; + unsigned long indexRight = offset + 1; - if ( indexRight >= inVec.size() ) - indexRight = inVec.size() - 1; + if (indexRight >= inVec.size()) indexRight = inVec.size() - 1; - outVec[i] = inVec[indexLeft ] * ( 1.0 - error ) + - inVec[indexRight] * error; - } + outVec[i] = inVec[indexLeft] * (1.0 - error) + inVec[indexRight] * error; + } } -void -Analyzer::initSin( Scope &v, const uint size ) //static +void Analyzer::initSin(Scope& v, const uint size) // static { - double step = ( M_PI * 2 ) / size; - double radian = 0; + double step = (M_PI * 2) / size; + double radian = 0; - for ( uint i = 0; i < size; i++ ) - { - v.push_back( sin( radian ) ); - radian += step; - } + for (uint i = 0; i < size; i++) { + v.push_back(sin(radian)); + radian += step; + } } void Analyzer::Base::timerEvent(QTimerEvent* e) { QWidget::timerEvent(e); - if (e->timerId() != m_timer.timerId()) - return; + if (e->timerId() != m_timer.timerId()) return; new_frame_ = true; update(); diff --git a/src/analyzers/analyzerbase.h b/src/analyzers/analyzerbase.h old mode 100644 new mode 100755 index dc79af002..1bc3bd90b --- a/src/analyzers/analyzerbase.h +++ b/src/analyzers/analyzerbase.h @@ -4,19 +4,18 @@ #ifndef ANALYZERBASE_H #define ANALYZERBASE_H - #ifdef __FreeBSD__ #include #endif -#include "core/fht.h" //stack allocated and convenience +#include "core/fht.h" //stack allocated and convenience #include "engines/engine_fwd.h" -#include //stack allocated and convenience +#include //stack allocated and convenience #include //stack allocated -#include //baseclass -#include //included for convenience +#include //baseclass +#include //included for convenience -#include //baseclass +#include //baseclass #ifdef Q_WS_MACX #include //included for convenience #include //included for convenience @@ -29,63 +28,61 @@ class QEvent; class QPaintEvent; class QResizeEvent; - namespace Analyzer { typedef std::vector Scope; -class Base : public QWidget -{ +class Base : public QWidget { Q_OBJECT -public: - ~Base() { delete m_fht; } + public: + ~Base() { delete m_fht; } - uint timeout() const { return m_timeout; } + uint timeout() const { return m_timeout; } - void set_engine(EngineBase* engine) { m_engine = engine; } + void set_engine(EngineBase* engine) { m_engine = engine; } - void changeTimeout( uint newTimeout ) { - m_timeout = newTimeout; - if (m_timer.isActive()) { - m_timer.stop(); - m_timer.start(m_timeout, this); - } + void changeTimeout(uint newTimeout) { + m_timeout = newTimeout; + if (m_timer.isActive()) { + m_timer.stop(); + m_timer.start(m_timeout, this); } + } -protected: - Base( QWidget*, uint scopeSize = 7 ); + protected: + Base(QWidget*, uint scopeSize = 7); - void hideEvent(QHideEvent *); - void showEvent(QShowEvent *); - void paintEvent( QPaintEvent* ); - void timerEvent(QTimerEvent *); + void hideEvent(QHideEvent*); + void showEvent(QShowEvent*); + void paintEvent(QPaintEvent*); + void timerEvent(QTimerEvent*); - void polishEvent(); + void polishEvent(); - int resizeExponent( int ); - int resizeForBands( int ); - virtual void init() {} - virtual void transform( Scope& ); - virtual void analyze( QPainter& p, const Scope&, bool new_frame) = 0; - virtual void demo(QPainter& p); + int resizeExponent(int); + int resizeForBands(int); + virtual void init() {} + virtual void transform(Scope&); + virtual void analyze(QPainter& p, const Scope&, bool new_frame) = 0; + virtual void demo(QPainter& p); -protected: - QBasicTimer m_timer; - uint m_timeout; - FHT *m_fht; - EngineBase* m_engine; - Scope m_lastScope; + protected: + QBasicTimer m_timer; + uint m_timeout; + FHT* m_fht; + EngineBase* m_engine; + Scope m_lastScope; + int current_chunk_; - bool new_frame_; - bool is_playing_; + bool new_frame_; + bool is_playing_; }; +void interpolate(const Scope&, Scope&); +void initSin(Scope&, const uint = 6000); -void interpolate( const Scope&, Scope& ); -void initSin( Scope&, const uint = 6000 ); - -} //END namespace Analyzer +} // END namespace Analyzer using Analyzer::Scope; diff --git a/src/analyzers/analyzercontainer.cpp b/src/analyzers/analyzercontainer.cpp index 445f5315f..e6bd00ec1 100644 --- a/src/analyzers/analyzercontainer.cpp +++ b/src/analyzers/analyzercontainer.cpp @@ -39,21 +39,20 @@ const int AnalyzerContainer::kMediumFramerate = 25; const int AnalyzerContainer::kHighFramerate = 30; const int AnalyzerContainer::kSuperHighFramerate = 60; -AnalyzerContainer::AnalyzerContainer(QWidget *parent) - : QWidget(parent), - current_framerate_(kMediumFramerate), - context_menu_(new QMenu(this)), - context_menu_framerate_(new QMenu(tr("Framerate"), this)), - group_(new QActionGroup(this)), - group_framerate_(new QActionGroup(this)), - mapper_(new QSignalMapper(this)), - mapper_framerate_(new QSignalMapper(this)), - visualisation_action_(NULL), - double_click_timer_(new QTimer(this)), - ignore_next_click_(false), - current_analyzer_(NULL), - engine_(NULL) -{ +AnalyzerContainer::AnalyzerContainer(QWidget* parent) + : QWidget(parent), + current_framerate_(kMediumFramerate), + context_menu_(new QMenu(this)), + context_menu_framerate_(new QMenu(tr("Framerate"), this)), + group_(new QActionGroup(this)), + group_framerate_(new QActionGroup(this)), + mapper_(new QSignalMapper(this)), + mapper_framerate_(new QSignalMapper(this)), + visualisation_action_(nullptr), + double_click_timer_(new QTimer(this)), + ignore_next_click_(false), + current_analyzer_(nullptr), + engine_(nullptr) { QHBoxLayout* layout = new QHBoxLayout(this); setLayout(layout); layout->setContentsMargins(0, 0, 0, 0); @@ -62,7 +61,8 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent) AddFramerate(tr("Low (%1 fps)").arg(kLowFramerate), kLowFramerate); AddFramerate(tr("Medium (%1 fps)").arg(kMediumFramerate), kMediumFramerate); AddFramerate(tr("High (%1 fps)").arg(kHighFramerate), kHighFramerate); - AddFramerate(tr("Super high (%1 fps)").arg(kSuperHighFramerate), kSuperHighFramerate); + AddFramerate(tr("Super high (%1 fps)").arg(kSuperHighFramerate), + kSuperHighFramerate); connect(mapper_framerate_, SIGNAL(mapped(int)), SLOT(ChangeFramerate(int))); context_menu_->addMenu(context_menu_framerate_); @@ -76,8 +76,8 @@ AnalyzerContainer::AnalyzerContainer(QWidget *parent) AddAnalyzerType(); connect(mapper_, SIGNAL(mapped(int)), SLOT(ChangeAnalyzer(int))); - disable_action_ = - context_menu_->addAction(tr("No analyzer"), this, SLOT(DisableAnalyzer())); + disable_action_ = context_menu_->addAction(tr("No analyzer"), this, + SLOT(DisableAnalyzer())); disable_action_->setCheckable(true); group_->addAction(disable_action_); @@ -115,12 +115,11 @@ void AnalyzerContainer::ShowPopupMenu() { context_menu_->popup(last_click_pos_); } -void AnalyzerContainer::mouseDoubleClickEvent(QMouseEvent *) { +void AnalyzerContainer::mouseDoubleClickEvent(QMouseEvent*) { double_click_timer_->stop(); ignore_next_click_ = true; - if (visualisation_action_) - visualisation_action_->trigger(); + if (visualisation_action_) visualisation_action_->trigger(); } void AnalyzerContainer::wheelEvent(QWheelEvent* e) { @@ -128,14 +127,13 @@ void AnalyzerContainer::wheelEvent(QWheelEvent* e) { } void AnalyzerContainer::SetEngine(EngineBase* engine) { - if (current_analyzer_) - current_analyzer_->set_engine(engine); + if (current_analyzer_) current_analyzer_->set_engine(engine); engine_ = engine; } void AnalyzerContainer::DisableAnalyzer() { delete current_analyzer_; - current_analyzer_ = NULL; + current_analyzer_ = nullptr; Save(); } @@ -144,7 +142,8 @@ void AnalyzerContainer::ChangeAnalyzer(int id) { QObject* instance = analyzer_types_[id]->newInstance(Q_ARG(QWidget*, this)); if (!instance) { - qLog(Warning) << "Couldn't intialise a new" << analyzer_types_[id]->className(); + qLog(Warning) << "Couldn't intialise a new" + << analyzer_types_[id]->className(); return; } @@ -152,7 +151,8 @@ void AnalyzerContainer::ChangeAnalyzer(int id) { current_analyzer_ = qobject_cast(instance); current_analyzer_->set_engine(engine_); // Even if it is not supposed to happen, I don't want to get a dbz error - current_framerate_ = current_framerate_ == 0 ? kMediumFramerate : current_framerate_; + current_framerate_ = + current_framerate_ == 0 ? kMediumFramerate : current_framerate_; current_analyzer_->changeTimeout(1000 / current_framerate_); layout()->addWidget(current_analyzer_); @@ -161,7 +161,7 @@ void AnalyzerContainer::ChangeAnalyzer(int id) { } void AnalyzerContainer::ChangeFramerate(int new_framerate) { - if(current_analyzer_) { + if (current_analyzer_) { // Even if it is not supposed to happen, I don't want to get a dbz error new_framerate = new_framerate == 0 ? kMediumFramerate : new_framerate; current_analyzer_->changeTimeout(1000 / new_framerate); @@ -179,7 +179,7 @@ void AnalyzerContainer::Load() { DisableAnalyzer(); disable_action_->setChecked(true); } else { - for (int i=0 ; iclassName()) { ChangeAnalyzer(i); actions_[i]->setChecked(true); @@ -190,8 +190,8 @@ void AnalyzerContainer::Load() { // Framerate current_framerate_ = s.value(kSettingsFramerate, kMediumFramerate).toInt(); - for (int i=0 ; iactions()[i]->setChecked(true); break; @@ -200,8 +200,8 @@ void AnalyzerContainer::Load() { } void AnalyzerContainer::SaveFramerate(int framerate) { -// For now, framerate is common for all analyzers. Maybe each analyzer should -// have its own framerate? + // For now, framerate is common for all analyzers. Maybe each analyzer should + // have its own framerate? current_framerate_ = framerate; QSettings s; s.beginGroup(kSettingsGroup); @@ -212,13 +212,14 @@ void AnalyzerContainer::Save() { QSettings s; s.beginGroup(kSettingsGroup); - s.setValue("type", current_analyzer_ ? - current_analyzer_->metaObject()->className() : - QVariant()); + s.setValue("type", current_analyzer_ + ? current_analyzer_->metaObject()->className() + : QVariant()); } void AnalyzerContainer::AddFramerate(const QString& name, int framerate) { - QAction *action = context_menu_framerate_->addAction(name, mapper_framerate_, SLOT(map())); + QAction* action = + context_menu_framerate_->addAction(name, mapper_framerate_, SLOT(map())); mapper_framerate_->setMapping(action, framerate); group_framerate_->addAction(action); framerate_list_ << framerate; diff --git a/src/analyzers/analyzercontainer.h b/src/analyzers/analyzercontainer.h index 20035798e..b9405d325 100644 --- a/src/analyzers/analyzercontainer.h +++ b/src/analyzers/analyzercontainer.h @@ -28,7 +28,7 @@ class AnalyzerContainer : public QWidget { Q_OBJECT -public: + public: AnalyzerContainer(QWidget* parent); void SetEngine(EngineBase* engine); @@ -40,18 +40,18 @@ public: signals: void WheelEvent(int delta); -protected: - void mouseReleaseEvent(QMouseEvent *); - void mouseDoubleClickEvent(QMouseEvent *); + protected: + void mouseReleaseEvent(QMouseEvent*); + void mouseDoubleClickEvent(QMouseEvent*); void wheelEvent(QWheelEvent* e); -private slots: + private slots: void ChangeAnalyzer(int id); void ChangeFramerate(int new_framerate); void DisableAnalyzer(); void ShowPopupMenu(); -private: + private: static const int kLowFramerate; static const int kMediumFramerate; static const int kHighFramerate; @@ -61,11 +61,11 @@ private: void Save(); void SaveFramerate(int framerate); template - void AddAnalyzerType(); + void AddAnalyzerType(); void AddFramerate(const QString& name, int framerate); -private: - int current_framerate_; // fps + private: + int current_framerate_; // fps QMenu* context_menu_; QMenu* context_menu_framerate_; QActionGroup* group_; @@ -88,11 +88,12 @@ private: }; template - void AnalyzerContainer::AddAnalyzerType() { +void AnalyzerContainer::AddAnalyzerType() { int id = analyzer_types_.count(); analyzer_types_ << &T::staticMetaObject; - QAction* action = context_menu_->addAction(tr(T::kName), mapper_, SLOT(map())); + QAction* action = + context_menu_->addAction(tr(T::kName), mapper_, SLOT(map())); group_->addAction(action); mapper_->setMapping(action, id); action->setCheckable(true); @@ -100,4 +101,3 @@ template } #endif - diff --git a/src/analyzers/baranalyzer.cpp b/src/analyzers/baranalyzer.cpp index 1e9844289..a6549ed8a 100644 --- a/src/analyzers/baranalyzer.cpp +++ b/src/analyzers/baranalyzer.cpp @@ -12,155 +12,157 @@ // #include "baranalyzer.h" -#include //log10(), etc. +#include //log10(), etc. #include #include -const char* BarAnalyzer::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Bar analyzer"); +const char* BarAnalyzer::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Bar analyzer"); +BarAnalyzer::BarAnalyzer(QWidget* parent) + : Analyzer::Base(parent, 8) { + // roof pixmaps don't depend on size() so we do in the ctor + m_bg = parent->palette().color(QPalette::Background); -BarAnalyzer::BarAnalyzer( QWidget *parent ) - : Analyzer::Base( parent, 8 ) - //, m_bands( BAND_COUNT ) - //, barVector( BAND_COUNT, 0 ) - //, roofVector( BAND_COUNT, 50 ) - //, roofVelocityVector( BAND_COUNT, ROOF_VELOCITY_REDUCTION_FACTOR ) -{ - //roof pixmaps don't depend on size() so we do in the ctor - m_bg = parent->palette().color(QPalette::Background); + QColor fg(0xff, 0x50, 0x70); - QColor fg( 0xff, 0x50, 0x70 ); - - double dr = double(m_bg.red() - fg.red()) / (NUM_ROOFS-1); //-1 because we start loop below at 0 - double dg = double(m_bg.green() - fg.green()) / (NUM_ROOFS-1); - double db = double(m_bg.blue() - fg.blue()) / (NUM_ROOFS-1); - - for ( uint i = 0; i < NUM_ROOFS; ++i ) - { - m_pixRoof[i] = QPixmap( COLUMN_WIDTH, 1 ); - m_pixRoof[i].fill( QColor( fg.red()+int(dr*i), fg.green()+int(dg*i), fg.blue()+int(db*i) ) ); - } + double dr = double(m_bg.red() - fg.red()) / + (NUM_ROOFS - 1); //-1 because we start loop below at 0 + double dg = double(m_bg.green() - fg.green()) / (NUM_ROOFS - 1); + double db = double(m_bg.blue() - fg.blue()) / (NUM_ROOFS - 1); + for (uint i = 0; i < NUM_ROOFS; ++i) { + m_pixRoof[i] = QPixmap(COLUMN_WIDTH, 1); + m_pixRoof[i].fill(QColor(fg.red() + int(dr * i), fg.green() + int(dg * i), + fg.blue() + int(db * i))); + } } -void BarAnalyzer::resizeEvent( QResizeEvent * e ) -{ - init(); -} +void BarAnalyzer::resizeEvent(QResizeEvent* e) { init(); } // METHODS ===================================================== -void BarAnalyzer::init() -{ - const double MAX_AMPLITUDE = 1.0; - const double F = double(height() - 2) / (log10( 255 ) * MAX_AMPLITUDE ); +void BarAnalyzer::init() { + const double MAX_AMPLITUDE = 1.0; + const double F = double(height() - 2) / (log10(255) * MAX_AMPLITUDE); + BAND_COUNT = width() / 5; + MAX_DOWN = int(0 - (qMax(1, height() / 50))); + MAX_UP = int(qMax(1, height() / 25)); - BAND_COUNT = width() / 5; - MAX_DOWN = int(0 -(qMax(1, height() / 50))); - MAX_UP = int(qMax(1, height() / 25)); + barVector.resize(BAND_COUNT, 0); + roofVector.resize(BAND_COUNT, height() - 5); + roofVelocityVector.resize(BAND_COUNT, ROOF_VELOCITY_REDUCTION_FACTOR); + m_roofMem.resize(BAND_COUNT); + m_scope.resize(BAND_COUNT); - barVector.resize( BAND_COUNT, 0 ); - roofVector.resize( BAND_COUNT, height() -5 ); - roofVelocityVector.resize( BAND_COUNT, ROOF_VELOCITY_REDUCTION_FACTOR ); - m_roofMem.resize(BAND_COUNT); - m_scope.resize(BAND_COUNT); + // generate a list of values that express amplitudes in range 0-MAX_AMP as + // ints from 0-height() on log scale + for (uint x = 0; x < 256; ++x) { + m_lvlMapper[x] = uint(F * log10(x + 1)); + } - //generate a list of values that express amplitudes in range 0-MAX_AMP as ints from 0-height() on log scale - for ( uint x = 0; x < 256; ++x ) - { - m_lvlMapper[x] = uint( F * log10( x+1 ) ); + m_pixBarGradient = QPixmap(height() * COLUMN_WIDTH, height()); + m_pixCompose = QPixmap(size()); + canvas_ = QPixmap(size()); + canvas_.fill(palette().color(QPalette::Background)); + + QPainter p(&m_pixBarGradient); + for (int x = 0, r = 0x40, g = 0x30, b = 0xff, r2 = 255 - r; x < height(); + ++x) { + for (int y = x; y > 0; --y) { + const double fraction = (double)y / height(); + + // p.setPen( QColor( r + (int)(r2 * fraction), g, b - (int)(255 * + // fraction) ) ); + p.setPen(QColor(r + (int)(r2 * fraction), g, b)); + p.drawLine(x * COLUMN_WIDTH, height() - y, (x + 1) * COLUMN_WIDTH, + height() - y); } + } - m_pixBarGradient = QPixmap( height()*COLUMN_WIDTH, height() ); - m_pixCompose = QPixmap( size() ); - - QPainter p( &m_pixBarGradient ); - for ( int x=0, r=0x40, g=0x30, b=0xff, r2=255-r; - x < height(); ++x ) - { - for ( int y = x; y > 0; --y ) - { - const double fraction = (double)y / height(); - -// p.setPen( QColor( r + (int)(r2 * fraction), g, b - (int)(255 * fraction) ) ); - p.setPen( QColor( r + (int)(r2 * fraction), g, b ) ); - p.drawLine( x*COLUMN_WIDTH, height() - y, (x+1)*COLUMN_WIDTH, height() - y ); - } - } - - - setMinimumSize( QSize( BAND_COUNT * COLUMN_WIDTH, 10 ) ); + setMinimumSize(QSize(BAND_COUNT * COLUMN_WIDTH, 10)); } +void BarAnalyzer::analyze(QPainter& p, const Scope& s, bool new_frame) { + if (!new_frame) { + p.drawPixmap(0, 0, canvas_); + return; + } + // Analyzer::interpolate( s, m_bands ); -void BarAnalyzer::analyze( QPainter& p, const Scope &s, bool new_frame) -{ - //Analyzer::interpolate( s, m_bands ); + Scope& v = m_scope; + Analyzer::interpolate(s, v); + QPainter canvas_painter(&canvas_); - Scope &v = m_scope; - Analyzer::interpolate( s, v ); + canvas_.fill(palette().color(QPalette::Background)); - for ( uint i = 0, x = 0, y2; i < v.size(); ++i, x+=COLUMN_WIDTH+1 ) - { - //assign pre[log10]'d value - y2 = uint(v[i] * 256); //256 will be optimised to a bitshift //no, it's a float - y2 = m_lvlMapper[ (y2 > 255) ? 255 : y2 ]; //lvlMapper is array of ints with values 0 to height() + for (uint i = 0, x = 0, y2; i < v.size(); ++i, x += COLUMN_WIDTH + 1) { + // assign pre[log10]'d value + y2 = uint(v[i] * + 256); // 256 will be optimised to a bitshift //no, it's a float + y2 = m_lvlMapper[(y2 > 255) ? 255 : y2]; // lvlMapper is array of ints with + // values 0 to height() - int change = y2 - barVector[i]; + int change = y2 - barVector[i]; - //using the best of Markey's, piggz and Max's ideas on the way to shift the bars - //we have the following: - // 1. don't adjust shift when doing small up movements - // 2. shift large upwards with a bias towards last value - // 3. fall downwards at a constant pace + // using the best of Markey's, piggz and Max's ideas on the way to shift the + // bars + // we have the following: + // 1. don't adjust shift when doing small up movements + // 2. shift large upwards with a bias towards last value + // 3. fall downwards at a constant pace - /*if ( change > MAX_UP ) //anything too much greater than 2 gives "jitter" + /*if ( change > MAX_UP ) //anything too much greater than 2 gives "jitter" //add some dynamics - makes the value slightly closer to what it was last time y2 = ( barVector[i] + MAX_UP ); //y2 = ( barVector[i] * 2 + y2 ) / 3; - else*/ if ( change < MAX_DOWN ) - y2 = barVector[i] + MAX_DOWN; + else*/ if (change < + MAX_DOWN) + y2 = barVector[i] + MAX_DOWN; - - if ( (int)y2 > roofVector[i] ) - { - roofVector[i] = (int)y2; - roofVelocityVector[i] = 1; - } - - //remember where we are - barVector[i] = y2; - - if ( m_roofMem[i].size() > NUM_ROOFS ) - m_roofMem[i].erase( m_roofMem[i].begin() ); - - //blt last n roofs, a.k.a motion blur - for ( uint c = 0; c < m_roofMem[i].size(); ++c ) - //bitBlt( m_pComposePixmap, x, m_roofMem[i]->at( c ), m_roofPixmaps[ c ] ); - //bitBlt( canvas(), x, m_roofMem[i][c], &m_pixRoof[ NUM_ROOFS - 1 - c ] ); - p.drawPixmap(x, m_roofMem[i][c], m_pixRoof[ NUM_ROOFS - 1 - c ]); - - //blt the bar - p.drawPixmap(x, height() - y2, - *gradient(), y2 * COLUMN_WIDTH, height() - y2, COLUMN_WIDTH, y2); - /*bitBlt( canvas(), x, height() - y2, - gradient(), y2 * COLUMN_WIDTH, height() - y2, COLUMN_WIDTH, y2, Qt::CopyROP );*/ - - m_roofMem[i].push_back( height() - roofVector[i] - 2 ); - - //set roof parameters for the NEXT draw - if ( roofVelocityVector[i] != 0 ) - { - if ( roofVelocityVector[i] > 32 ) //no reason to do == 32 - roofVector[i] -= (roofVelocityVector[i] - 32) / 20; //trivial calculation - - if ( roofVector[i] < 0 ) - { - roofVector[i] = 0; //not strictly necessary - roofVelocityVector[i] = 0; - } - else ++roofVelocityVector[i]; - } + if ((int)y2 > roofVector[i]) { + roofVector[i] = (int)y2; + roofVelocityVector[i] = 1; } + + // remember where we are + barVector[i] = y2; + + if (m_roofMem[i].size() > NUM_ROOFS) + m_roofMem[i].erase(m_roofMem[i].begin()); + + // blt last n roofs, a.k.a motion blur + for (uint c = 0; c < m_roofMem[i].size(); ++c) + // bitBlt( m_pComposePixmap, x, m_roofMem[i]->at( c ), m_roofPixmaps[ c ] + // ); + // bitBlt( canvas(), x, m_roofMem[i][c], &m_pixRoof[ NUM_ROOFS - 1 - c ] + // ); + canvas_painter.drawPixmap(x, m_roofMem[i][c], + m_pixRoof[NUM_ROOFS - 1 - c]); + + // blt the bar + canvas_painter.drawPixmap(x, height() - y2, *gradient(), y2 * COLUMN_WIDTH, + height() - y2, COLUMN_WIDTH, y2); + /*bitBlt( canvas(), x, height() - y2, + gradient(), y2 * COLUMN_WIDTH, height() - y2, COLUMN_WIDTH, y2, + Qt::CopyROP );*/ + + m_roofMem[i].push_back(height() - roofVector[i] - 2); + + // set roof parameters for the NEXT draw + if (roofVelocityVector[i] != 0) { + if (roofVelocityVector[i] > 32) // no reason to do == 32 + roofVector[i] -= + (roofVelocityVector[i] - 32) / 20; // trivial calculation + + if (roofVector[i] < 0) { + roofVector[i] = 0; // not strictly necessary + roofVelocityVector[i] = 0; + } else + ++roofVelocityVector[i]; + } + } + + p.drawPixmap(0, 0, canvas_); } diff --git a/src/analyzers/baranalyzer.h b/src/analyzers/baranalyzer.h index e3d8fdc75..ffe9e27a4 100644 --- a/src/analyzers/baranalyzer.h +++ b/src/analyzers/baranalyzer.h @@ -10,51 +10,51 @@ typedef std::vector aroofMemVec; - -class BarAnalyzer : public Analyzer::Base -{ +class BarAnalyzer : public Analyzer::Base { Q_OBJECT - public: - Q_INVOKABLE BarAnalyzer( QWidget* ); + public: + Q_INVOKABLE BarAnalyzer(QWidget*); - void init(); - virtual void analyze( QPainter& p, const Scope&, bool new_frame); - //virtual void transform( Scope& ); + void init(); + virtual void analyze(QPainter& p, const Scope&, bool new_frame); + // virtual void transform( Scope& ); - /** - * Resizes the widget to a new geometry according to @p e - * @param e The resize-event - */ - void resizeEvent( QResizeEvent * e); + /** + * Resizes the widget to a new geometry according to @p e + * @param e The resize-event + */ + void resizeEvent(QResizeEvent* e); - uint BAND_COUNT; - int MAX_DOWN; - int MAX_UP; - static const uint ROOF_HOLD_TIME = 48; - static const int ROOF_VELOCITY_REDUCTION_FACTOR = 32; - static const uint NUM_ROOFS = 16; - static const uint COLUMN_WIDTH = 4; + uint BAND_COUNT; + int MAX_DOWN; + int MAX_UP; + static const uint ROOF_HOLD_TIME = 48; + static const int ROOF_VELOCITY_REDUCTION_FACTOR = 32; + static const uint NUM_ROOFS = 16; + static const uint COLUMN_WIDTH = 4; - static const char* kName; + static const char* kName; - protected: - QPixmap m_pixRoof[NUM_ROOFS]; - //vector m_roofMem[BAND_COUNT]; + protected: + QPixmap m_pixRoof[NUM_ROOFS]; + // vector m_roofMem[BAND_COUNT]; - //Scope m_bands; //copy of the Scope to prevent creating/destroying a Scope every iteration - uint m_lvlMapper[256]; - std::vector m_roofMem; - std::vector barVector; //positions of bars - std::vector roofVector; //positions of roofs - std::vector roofVelocityVector; //speed that roofs falls + // Scope m_bands; //copy of the Scope to prevent creating/destroying a Scope + // every iteration + uint m_lvlMapper[256]; + std::vector m_roofMem; + std::vector barVector; // positions of bars + std::vector roofVector; // positions of roofs + std::vector roofVelocityVector; // speed that roofs falls - const QPixmap *gradient() const { return &m_pixBarGradient; } + const QPixmap* gradient() const { return &m_pixBarGradient; } - private: - QPixmap m_pixBarGradient; - QPixmap m_pixCompose; - Scope m_scope; //so we don't create a vector every frame - QColor m_bg; + private: + QPixmap m_pixBarGradient; + QPixmap m_pixCompose; + QPixmap canvas_; + Scope m_scope; // so we don't create a vector every frame + QColor m_bg; }; #endif diff --git a/src/analyzers/blockanalyzer.cpp b/src/analyzers/blockanalyzer.cpp index c36e3f032..6b4d630f4 100644 --- a/src/analyzers/blockanalyzer.cpp +++ b/src/analyzers/blockanalyzer.cpp @@ -12,389 +12,403 @@ #include #include -const uint BlockAnalyzer::HEIGHT = 2; -const uint BlockAnalyzer::WIDTH = 4; -const uint BlockAnalyzer::MIN_ROWS = 3; //arbituary -const uint BlockAnalyzer::MIN_COLUMNS = 32; //arbituary -const uint BlockAnalyzer::MAX_COLUMNS = 256; //must be 2**n -const uint BlockAnalyzer::FADE_SIZE = 90; +const uint BlockAnalyzer::HEIGHT = 2; +const uint BlockAnalyzer::WIDTH = 4; +const uint BlockAnalyzer::MIN_ROWS = 3; // arbituary +const uint BlockAnalyzer::MIN_COLUMNS = 32; // arbituary +const uint BlockAnalyzer::MAX_COLUMNS = 256; // must be 2**n +const uint BlockAnalyzer::FADE_SIZE = 90; -const char* BlockAnalyzer::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Block analyzer"); +const char* BlockAnalyzer::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Block analyzer"); -BlockAnalyzer::BlockAnalyzer( QWidget *parent ) - : Analyzer::Base( parent, 9 ) - , m_columns( 0 ) //uint - , m_rows( 0 ) //uint - , m_y( 0 ) //uint - , m_barPixmap( 1, 1 ) //null qpixmaps cause crashes - , m_topBarPixmap( WIDTH, HEIGHT ) - , m_scope( MIN_COLUMNS ) //Scope - , m_store( 1 << 8, 0 ) //vector - , m_fade_bars( FADE_SIZE ) //vector - , m_fade_pos( 1 << 8, 50 ) //vector - , m_fade_intensity( 1 << 8, 32 ) //vector +BlockAnalyzer::BlockAnalyzer(QWidget* parent) + : Analyzer::Base(parent, 9), + m_columns(0) // uint + , + m_rows(0) // uint + , + m_y(0) // uint + , + m_barPixmap(1, 1) // null qpixmaps cause crashes + , + m_topBarPixmap(WIDTH, HEIGHT), + m_scope(MIN_COLUMNS) // Scope + , + m_store(1 << 8, 0) // vector + , + m_fade_bars(FADE_SIZE) // vector + , + m_fade_pos(1 << 8, 50) // vector + , + m_fade_intensity(1 << 8, 32) // vector { - setMinimumSize( MIN_COLUMNS*(WIDTH+1) -1, MIN_ROWS*(HEIGHT+1) -1 ); //-1 is padding, no drawing takes place there - setMaximumWidth( MAX_COLUMNS*(WIDTH+1) -1 ); + setMinimumSize(MIN_COLUMNS * (WIDTH + 1) - 1, + MIN_ROWS * (HEIGHT + 1) - + 1); //-1 is padding, no drawing takes place there + setMaximumWidth(MAX_COLUMNS * (WIDTH + 1) - 1); - // mxcl says null pixmaps cause crashes, so let's play it safe - for ( uint i = 0; i < FADE_SIZE; ++i ) - m_fade_bars[i] = QPixmap( 1, 1 ); + // mxcl says null pixmaps cause crashes, so let's play it safe + for (uint i = 0; i < FADE_SIZE; ++i) m_fade_bars[i] = QPixmap(1, 1); } -BlockAnalyzer::~BlockAnalyzer() -{ +BlockAnalyzer::~BlockAnalyzer() {} + +void BlockAnalyzer::resizeEvent(QResizeEvent* e) { + QWidget::resizeEvent(e); + + m_background = QPixmap(size()); + canvas_ = QPixmap(size()); + + const uint oldRows = m_rows; + + // all is explained in analyze().. + //+1 to counter -1 in maxSizes, trust me we need this! + m_columns = qMax(uint(double(width() + 1) / (WIDTH + 1)), MAX_COLUMNS); + m_rows = uint(double(height() + 1) / (HEIGHT + 1)); + + // this is the y-offset for drawing from the top of the widget + m_y = (height() - (m_rows * (HEIGHT + 1)) + 2) / 2; + + m_scope.resize(m_columns); + + if (m_rows != oldRows) { + m_barPixmap = QPixmap(WIDTH, m_rows * (HEIGHT + 1)); + + for (uint i = 0; i < FADE_SIZE; ++i) + m_fade_bars[i] = QPixmap(WIDTH, m_rows * (HEIGHT + 1)); + + m_yscale.resize(m_rows + 1); + + const uint PRE = 1, + PRO = 1; // PRE and PRO allow us to restrict the range somewhat + + for (uint z = 0; z < m_rows; ++z) + m_yscale[z] = 1 - (log10(PRE + z) / log10(PRE + m_rows + PRO)); + + m_yscale[m_rows] = 0; + + determineStep(); + paletteChange(palette()); + } + + drawBackground(); } -void -BlockAnalyzer::resizeEvent( QResizeEvent *e ) -{ - QWidget::resizeEvent( e ); +void BlockAnalyzer::determineStep() { + // falltime is dependent on rowcount due to our digital resolution (ie we have + // boxes/blocks of pixels) + // I calculated the value 30 based on some trial and error - m_background = QPixmap(size()); - - const uint oldRows = m_rows; - - //all is explained in analyze().. - //+1 to counter -1 in maxSizes, trust me we need this! - m_columns = qMax( uint(double(width()+1) / (WIDTH+1)), MAX_COLUMNS ); - m_rows = uint(double(height()+1) / (HEIGHT+1)); - - //this is the y-offset for drawing from the top of the widget - m_y = (height() - (m_rows * (HEIGHT+1)) + 2) / 2; - - m_scope.resize( m_columns ); - - if( m_rows != oldRows ) { - m_barPixmap = QPixmap( WIDTH, m_rows*(HEIGHT+1) ); - - for ( uint i = 0; i < FADE_SIZE; ++i ) - m_fade_bars[i] = QPixmap( WIDTH, m_rows*(HEIGHT+1) ); - - m_yscale.resize( m_rows + 1 ); - - const uint PRE = 1, PRO = 1; //PRE and PRO allow us to restrict the range somewhat - - for( uint z = 0; z < m_rows; ++z ) - m_yscale[z] = 1 - (log10( PRE+z ) / log10( PRE+m_rows+PRO )); - - m_yscale[m_rows] = 0; - - determineStep(); - paletteChange( palette() ); - } - - - drawBackground(); + const double fallTime = 30 * m_rows; + m_step = double(m_rows * timeout()) / fallTime; } -void -BlockAnalyzer::determineStep() +void BlockAnalyzer::transform(Analyzer::Scope& s) // pure virtual { - // falltime is dependent on rowcount due to our digital resolution (ie we have boxes/blocks of pixels) - // I calculated the value 30 based on some trial and error + for (uint x = 0; x < s.size(); ++x) s[x] *= 2; - const double fallTime = 30 * m_rows; - m_step = double(m_rows * timeout()) / fallTime; + float* front = static_cast(&s.front()); + + m_fht->spectrum(front); + m_fht->scale(front, 1.0 / 20); + + // the second half is pretty dull, so only show it if the user has a large + // analyzer + // by setting to m_scope.size() if large we prevent interpolation of large + // analyzers, this is good! + s.resize(m_scope.size() <= MAX_COLUMNS / 2 ? MAX_COLUMNS / 2 + : m_scope.size()); } -void -BlockAnalyzer::transform( Analyzer::Scope &s ) //pure virtual -{ - for( uint x = 0; x < s.size(); ++x ) - s[x] *= 2; +void BlockAnalyzer::analyze(QPainter& p, const Analyzer::Scope& s, + bool new_frame) { + // y = 2 3 2 1 0 2 + // . . . . # . + // . . . # # . + // # . # # # # + // # # # # # # + // + // visual aid for how this analyzer works. + // y represents the number of blanks + // y starts from the top and increases in units of blocks - float *front = static_cast( &s.front() ); + // m_yscale looks similar to: { 0.7, 0.5, 0.25, 0.15, 0.1, 0 } + // if it contains 6 elements there are 5 rows in the analyzer - m_fht->spectrum( front ); - m_fht->scale( front, 1.0 / 20 ); + if (!new_frame) { + p.drawPixmap(0, 0, canvas_); + return; + } - //the second half is pretty dull, so only show it if the user has a large analyzer - //by setting to m_scope.size() if large we prevent interpolation of large analyzers, this is good! - s.resize( m_scope.size() <= MAX_COLUMNS/2 ? MAX_COLUMNS/2 : m_scope.size() ); -} + QPainter canvas_painter(&canvas_); -void -BlockAnalyzer::analyze( QPainter& p, const Analyzer::Scope &s, bool new_frame) -{ - // y = 2 3 2 1 0 2 - // . . . . # . - // . . . # # . - // # . # # # # - // # # # # # # - // - // visual aid for how this analyzer works. - // y represents the number of blanks - // y starts from the top and increases in units of blocks + Analyzer::interpolate(s, m_scope); - // m_yscale looks similar to: { 0.7, 0.5, 0.25, 0.15, 0.1, 0 } - // if it contains 6 elements there are 5 rows in the analyzer + // Paint the background + canvas_painter.drawPixmap(0, 0, m_background); - Analyzer::interpolate( s, m_scope ); + for (uint y, x = 0; x < m_scope.size(); ++x) { + // determine y + for (y = 0; m_scope[x] < m_yscale[y]; ++y) + ; - // Paint the background - p.drawPixmap(0, 0, m_background); + // this is opposite to what you'd think, higher than y + // means the bar is lower than y (physically) + if ((float)y > m_store[x]) + y = int(m_store[x] += m_step); + else + m_store[x] = y; - for( uint y, x = 0; x < m_scope.size(); ++x ) - { - // determine y - for( y = 0; m_scope[x] < m_yscale[y]; ++y ) - ; - - // this is opposite to what you'd think, higher than y - // means the bar is lower than y (physically) - if( (float)y > m_store[x] ) - y = int(m_store[x] += m_step); - else - m_store[x] = y; - - // if y is lower than m_fade_pos, then the bar has exceeded the height of the fadeout - // if the fadeout is quite faded now, then display the new one - if( y <= m_fade_pos[x] /*|| m_fade_intensity[x] < FADE_SIZE / 3*/ ) { - m_fade_pos[x] = y; - m_fade_intensity[x] = FADE_SIZE; - } - - if( m_fade_intensity[x] > 0 ) { - const uint offset = --m_fade_intensity[x]; - const uint y = m_y + (m_fade_pos[x] * (HEIGHT+1)); - p.drawPixmap(x*(WIDTH+1), y, m_fade_bars[offset], 0, 0, WIDTH, height() - y); - } - - if( m_fade_intensity[x] == 0 ) - m_fade_pos[x] = m_rows; - - //REMEMBER: y is a number from 0 to m_rows, 0 means all blocks are glowing, m_rows means none are - p.drawPixmap( x*(WIDTH+1), y*(HEIGHT+1) + m_y, *bar(), 0, y*(HEIGHT+1), bar()->width(), bar()->height() ); - } - - for( uint x = 0; x < m_store.size(); ++x ) - p.drawPixmap(x*(WIDTH+1), int(m_store[x])*(HEIGHT+1) + m_y, m_topBarPixmap ); -} - - - - - -static inline void -adjustToLimits( int &b, int &f, uint &amount ) -{ - // with a range of 0-255 and maximum adjustment of amount, - // maximise the difference between f and b - - if( b < f ) { - if( b > 255 - f ) { - amount -= f; - f = 0; - } else { - amount -= (255 - f); - f = 255; - } + // if y is lower than m_fade_pos, then the bar has exceeded the height of + // the fadeout + // if the fadeout is quite faded now, then display the new one + if (y <= m_fade_pos[x] /*|| m_fade_intensity[x] < FADE_SIZE / 3*/) { + m_fade_pos[x] = y; + m_fade_intensity[x] = FADE_SIZE; } - else { - if( f > 255 - b ) { - amount -= f; - f = 0; - } else { - amount -= (255 - f); - f = 255; - } + + if (m_fade_intensity[x] > 0) { + const uint offset = --m_fade_intensity[x]; + const uint y = m_y + (m_fade_pos[x] * (HEIGHT + 1)); + canvas_painter.drawPixmap(x * (WIDTH + 1), y, m_fade_bars[offset], 0, 0, + WIDTH, height() - y); } + + if (m_fade_intensity[x] == 0) m_fade_pos[x] = m_rows; + + // REMEMBER: y is a number from 0 to m_rows, 0 means all blocks are glowing, + // m_rows means none are + canvas_painter.drawPixmap(x * (WIDTH + 1), y * (HEIGHT + 1) + m_y, *bar(), + 0, y * (HEIGHT + 1), bar()->width(), + bar()->height()); + } + + for (uint x = 0; x < m_store.size(); ++x) + canvas_painter.drawPixmap( + x * (WIDTH + 1), int(m_store[x]) * (HEIGHT + 1) + m_y, m_topBarPixmap); + + p.drawPixmap(0, 0, canvas_); +} + +static inline void adjustToLimits(int& b, int& f, uint& amount) { + // with a range of 0-255 and maximum adjustment of amount, + // maximise the difference between f and b + + if (b < f) { + if (b > 255 - f) { + amount -= f; + f = 0; + } else { + amount -= (255 - f); + f = 255; + } + } else { + if (f > 255 - b) { + amount -= f; + f = 0; + } else { + amount -= (255 - f); + f = 255; + } + } } /** * Clever contrast function * - * It will try to adjust the foreground color such that it contrasts well with the background + * It will try to adjust the foreground color such that it contrasts well with + *the background * It won't modify the hue of fg unless absolutely necessary * @return the adjusted form of fg */ -QColor -ensureContrast( const QColor &bg, const QColor &fg, uint _amount = 150 ) -{ - class OutputOnExit { - public: - OutputOnExit( const QColor &color ) : c( color ) {} - ~OutputOnExit() { int h,s,v; c.getHsv( &h, &s, &v ); } - private: - const QColor &c; - }; - - // hack so I don't have to cast everywhere - #define amount static_cast(_amount) -// #define STAMP debug() << (QValueList() << fh << fs << fv) << endl; -// #define STAMP1( string ) debug() << string << ": " << (QValueList() << fh << fs << fv) << endl; -// #define STAMP2( string, value ) debug() << string << "=" << value << ": " << (QValueList() << fh << fs << fv) << endl; - - OutputOnExit allocateOnTheStack( fg ); - - int bh, bs, bv; - int fh, fs, fv; - - bg.getHsv( &bh, &bs, &bv ); - fg.getHsv( &fh, &fs, &fv ); - - int dv = abs( bv - fv ); - -// STAMP2( "DV", dv ); - - // value is the best measure of contrast - // if there is enough difference in value already, return fg unchanged - if( dv > amount ) - return fg; - - int ds = abs( bs - fs ); - -// STAMP2( "DS", ds ); - - // saturation is good enough too. But not as good. TODO adapt this a little - if( ds > amount ) - return fg; - - int dh = abs( bh - fh ); - -// STAMP2( "DH", dh ); - - if( dh > 120 ) { - // a third of the colour wheel automatically guarentees contrast - // but only if the values are high enough and saturations significant enough - // to allow the colours to be visible and not be shades of grey or black - - // check the saturation for the two colours is sufficient that hue alone can - // provide sufficient contrast - if( ds > amount / 2 && (bs > 125 && fs > 125) ) -// STAMP1( "Sufficient saturation difference, and hues are compliemtary" ); - return fg; - else if( dv > amount / 2 && (bv > 125 && fv > 125) ) -// STAMP1( "Sufficient value difference, and hues are compliemtary" ); - return fg; - -// STAMP1( "Hues are complimentary but we must modify the value or saturation of the contrasting colour" ); - - //but either the colours are two desaturated, or too dark - //so we need to adjust the system, although not as much - ///_amount /= 2; +QColor ensureContrast(const QColor& bg, const QColor& fg, uint _amount = 150) { + class OutputOnExit { + public: + OutputOnExit(const QColor& color) : c(color) {} + ~OutputOnExit() { + int h, s, v; + c.getHsv(&h, &s, &v); } - if( fs < 50 && ds < 40 ) { - // low saturation on a low saturation is sad - const int tmp = 50 - fs; - fs = 50; - if( amount > tmp ) - _amount -= tmp; - else - _amount = 0; - } + private: + const QColor& c; + }; - // test that there is available value to honor our contrast requirement - if( 255 - dv < amount ) - { - // we have to modify the value and saturation of fg - //adjustToLimits( bv, fv, amount ); +// hack so I don't have to cast everywhere +#define amount static_cast(_amount) + // #define STAMP debug() << (QValueList() << fh << fs << fv) << endl; + // #define STAMP1( string ) debug() << string << ": " << + // (QValueList() << fh << fs << fv) << endl; + // #define STAMP2( string, value ) debug() << string << "=" << value << ": + // " << (QValueList() << fh << fs << fv) << endl; -// STAMP + OutputOnExit allocateOnTheStack(fg); - // see if we need to adjust the saturation - if( amount > 0 ) - adjustToLimits( bs, fs, _amount ); + int bh, bs, bv; + int fh, fs, fv; -// STAMP + bg.getHsv(&bh, &bs, &bv); + fg.getHsv(&fh, &fs, &fv); - // see if we need to adjust the hue - if( amount > 0 ) - fh += amount; // cycles around; + int dv = abs(bv - fv); -// STAMP + // STAMP2( "DV", dv ); - return QColor::fromHsv(fh, fs, fv); - } + // value is the best measure of contrast + // if there is enough difference in value already, return fg unchanged + if (dv > amount) return fg; -// STAMP + int ds = abs(bs - fs); - if( fv > bv && bv > amount ) - return QColor::fromHsv( fh, fs, bv - amount); + // STAMP2( "DS", ds ); -// STAMP + // saturation is good enough too. But not as good. TODO adapt this a little + if (ds > amount) return fg; - if( fv < bv && fv > amount ) - return QColor::fromHsv( fh, fs, fv - amount); + int dh = abs(bh - fh); -// STAMP + // STAMP2( "DH", dh ); - if( fv > bv && (255 - fv > amount) ) - return QColor::fromHsv( fh, fs, fv + amount); + if (dh > 120) { + // a third of the colour wheel automatically guarentees contrast + // but only if the values are high enough and saturations significant enough + // to allow the colours to be visible and not be shades of grey or black -// STAMP + // check the saturation for the two colours is sufficient that hue alone can + // provide sufficient contrast + if (ds > amount / 2 && (bs > 125 && fs > 125)) + // STAMP1( "Sufficient saturation difference, and hues are + // compliemtary" ); + return fg; + else if (dv > amount / 2 && (bv > 125 && fv > 125)) + // STAMP1( "Sufficient value difference, and hues are + // compliemtary" ); + return fg; - if( fv < bv && (255 - bv > amount ) ) - return QColor::fromHsv( fh, fs, bv + amount); + // STAMP1( "Hues are complimentary but we must modify the value or + // saturation of the contrasting colour" ); -// STAMP -// debug() << "Something went wrong!\n"; + // but either the colours are two desaturated, or too dark + // so we need to adjust the system, although not as much + ///_amount /= 2; + } - return Qt::blue; + if (fs < 50 && ds < 40) { + // low saturation on a low saturation is sad + const int tmp = 50 - fs; + fs = 50; + if (amount > tmp) + _amount -= tmp; + else + _amount = 0; + } - #undef amount -// #undef STAMP + // test that there is available value to honor our contrast requirement + if (255 - dv < amount) { + // we have to modify the value and saturation of fg + // adjustToLimits( bv, fv, amount ); + + // STAMP + + // see if we need to adjust the saturation + if (amount > 0) adjustToLimits(bs, fs, _amount); + + // STAMP + + // see if we need to adjust the hue + if (amount > 0) fh += amount; // cycles around; + + // STAMP + + return QColor::fromHsv(fh, fs, fv); + } + + // STAMP + + if (fv > bv && bv > amount) return QColor::fromHsv(fh, fs, bv - amount); + + // STAMP + + if (fv < bv && fv > amount) return QColor::fromHsv(fh, fs, fv - amount); + + // STAMP + + if (fv > bv && (255 - fv > amount)) + return QColor::fromHsv(fh, fs, fv + amount); + + // STAMP + + if (fv < bv && (255 - bv > amount)) + return QColor::fromHsv(fh, fs, bv + amount); + + // STAMP + // debug() << "Something went wrong!\n"; + + return Qt::blue; + +#undef amount + // #undef STAMP } -void -BlockAnalyzer::paletteChange( const QPalette& ) //virtual +void BlockAnalyzer::paletteChange(const QPalette&) // virtual { - const QColor bg = palette().color(QPalette::Background); - const QColor fg = ensureContrast( bg, palette().color(QPalette::Highlight) ); + const QColor bg = palette().color(QPalette::Background); + const QColor fg = ensureContrast(bg, palette().color(QPalette::Highlight)); - m_topBarPixmap.fill( fg ); + m_topBarPixmap.fill(fg); - const double dr = 15*double(bg.red() - fg.red()) / (m_rows*16); - const double dg = 15*double(bg.green() - fg.green()) / (m_rows*16); - const double db = 15*double(bg.blue() - fg.blue()) / (m_rows*16); - const int r = fg.red(), g = fg.green(), b = fg.blue(); + const double dr = 15 * double(bg.red() - fg.red()) / (m_rows * 16); + const double dg = 15 * double(bg.green() - fg.green()) / (m_rows * 16); + const double db = 15 * double(bg.blue() - fg.blue()) / (m_rows * 16); + const int r = fg.red(), g = fg.green(), b = fg.blue(); - bar()->fill( bg ); + bar()->fill(bg); - QPainter p( bar() ); - for( int y = 0; (uint)y < m_rows; ++y ) - //graduate the fg color - p.fillRect( 0, y*(HEIGHT+1), WIDTH, HEIGHT, QColor( r+int(dr*y), g+int(dg*y), b+int(db*y) ) ); + QPainter p(bar()); + for (int y = 0; (uint)y < m_rows; ++y) + // graduate the fg color + p.fillRect(0, y * (HEIGHT + 1), WIDTH, HEIGHT, + QColor(r + int(dr * y), g + int(dg * y), b + int(db * y))); - { - const QColor bg = palette().color(QPalette::Background).dark( 112 ); + { + const QColor bg = palette().color(QPalette::Background).dark(112); - //make a complimentary fadebar colour - //TODO dark is not always correct, dumbo! - int h,s,v; palette().color(QPalette::Background).dark( 150 ).getHsv( &h, &s, &v ); - const QColor fg( QColor::fromHsv(h + 120, s, v)); + // make a complimentary fadebar colour + // TODO dark is not always correct, dumbo! + int h, s, v; + palette().color(QPalette::Background).dark(150).getHsv(&h, &s, &v); + const QColor fg(QColor::fromHsv(h + 120, s, v)); - const double dr = fg.red() - bg.red(); - const double dg = fg.green() - bg.green(); - const double db = fg.blue() - bg.blue(); - const int r = bg.red(), g = bg.green(), b = bg.blue(); + const double dr = fg.red() - bg.red(); + const double dg = fg.green() - bg.green(); + const double db = fg.blue() - bg.blue(); + const int r = bg.red(), g = bg.green(), b = bg.blue(); - // Precalculate all fade-bar pixmaps - for( uint y = 0; y < FADE_SIZE; ++y ) { - m_fade_bars[y].fill( palette().color(QPalette::Background) ); - QPainter f( &m_fade_bars[y] ); - for( int z = 0; (uint)z < m_rows; ++z ) { - const double Y = 1.0 - (log10( FADE_SIZE - y ) / log10( FADE_SIZE )); - f.fillRect( 0, z*(HEIGHT+1), WIDTH, HEIGHT, QColor( r+int(dr*Y), g+int(dg*Y), b+int(db*Y) ) ); - } + // Precalculate all fade-bar pixmaps + for (uint y = 0; y < FADE_SIZE; ++y) { + m_fade_bars[y].fill(palette().color(QPalette::Background)); + QPainter f(&m_fade_bars[y]); + for (int z = 0; (uint)z < m_rows; ++z) { + const double Y = 1.0 - (log10(FADE_SIZE - y) / log10(FADE_SIZE)); + f.fillRect(0, z * (HEIGHT + 1), WIDTH, HEIGHT, + QColor(r + int(dr * Y), g + int(dg * Y), b + int(db * Y))); } - } + } + } - drawBackground(); + drawBackground(); } -void -BlockAnalyzer::drawBackground() -{ - const QColor bg = palette().color(QPalette::Background); - const QColor bgdark = bg.dark( 112 ); +void BlockAnalyzer::drawBackground() { + const QColor bg = palette().color(QPalette::Background); + const QColor bgdark = bg.dark(112); - m_background.fill( bg ); + m_background.fill(bg); - QPainter p( &m_background ); - for( int x = 0; (uint)x < m_columns; ++x ) - for( int y = 0; (uint)y < m_rows; ++y ) - p.fillRect( x*(WIDTH+1), y*(HEIGHT+1) + m_y, WIDTH, HEIGHT, bgdark ); + QPainter p(&m_background); + for (int x = 0; (uint)x < m_columns; ++x) + for (int y = 0; (uint)y < m_rows; ++y) + p.fillRect(x * (WIDTH + 1), y * (HEIGHT + 1) + m_y, WIDTH, HEIGHT, + bgdark); } diff --git a/src/analyzers/blockanalyzer.h b/src/analyzers/blockanalyzer.h index 5894844f3..d6c6d4ac9 100644 --- a/src/analyzers/blockanalyzer.h +++ b/src/analyzers/blockanalyzer.h @@ -12,54 +12,53 @@ class QResizeEvent; class QMouseEvent; class QPalette; - /** * @author Max Howell */ -class BlockAnalyzer : public Analyzer::Base -{ +class BlockAnalyzer : public Analyzer::Base { Q_OBJECT -public: - Q_INVOKABLE BlockAnalyzer( QWidget* ); - ~BlockAnalyzer(); + public: + Q_INVOKABLE BlockAnalyzer(QWidget*); + ~BlockAnalyzer(); - static const uint HEIGHT; - static const uint WIDTH; - static const uint MIN_ROWS; - static const uint MIN_COLUMNS; - static const uint MAX_COLUMNS; - static const uint FADE_SIZE; + static const uint HEIGHT; + static const uint WIDTH; + static const uint MIN_ROWS; + static const uint MIN_COLUMNS; + static const uint MAX_COLUMNS; + static const uint FADE_SIZE; - static const char* kName; + static const char* kName; -protected: - virtual void transform( Scope& ); - virtual void analyze( QPainter& p, const Scope&, bool new_frame); - virtual void resizeEvent( QResizeEvent* ); - virtual void paletteChange( const QPalette& ); + protected: + virtual void transform(Scope&); + virtual void analyze(QPainter& p, const Scope&, bool new_frame); + virtual void resizeEvent(QResizeEvent*); + virtual void paletteChange(const QPalette&); - void drawBackground(); - void determineStep(); + void drawBackground(); + void determineStep(); -private: - QPixmap* bar() { return &m_barPixmap; } + private: + QPixmap* bar() { return &m_barPixmap; } - uint m_columns, m_rows; //number of rows and columns of blocks - uint m_y; //y-offset from top of widget - QPixmap m_barPixmap; - QPixmap m_topBarPixmap; - QPixmap m_background; - Scope m_scope; //so we don't create a vector every frame - std::vector m_store; //current bar heights - std::vector m_yscale; + uint m_columns, m_rows; // number of rows and columns of blocks + uint m_y; // y-offset from top of widget + QPixmap m_barPixmap; + QPixmap m_topBarPixmap; + QPixmap m_background; + QPixmap canvas_; + Scope m_scope; // so we don't create a vector every frame + std::vector m_store; // current bar heights + std::vector m_yscale; - //FIXME why can't I namespace these? c++ issue? - std::vector m_fade_bars; - std::vector m_fade_pos; - std::vector m_fade_intensity; + // FIXME why can't I namespace these? c++ issue? + std::vector m_fade_bars; + std::vector m_fade_pos; + std::vector m_fade_intensity; - float m_step; //rows to fall per frame + float m_step; // rows to fall per frame }; #endif diff --git a/src/analyzers/boomanalyzer.cpp b/src/analyzers/boomanalyzer.cpp index 6a8455312..ef5b4092e 100644 --- a/src/analyzers/boomanalyzer.cpp +++ b/src/analyzers/boomanalyzer.cpp @@ -5,131 +5,122 @@ #include #include -const char* BoomAnalyzer::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Boom analyzer"); +const char* BoomAnalyzer::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Boom analyzer"); -BoomAnalyzer::BoomAnalyzer( QWidget *parent ) - : Analyzer::Base( parent, 9 ) - , K_barHeight( 1.271 )//1.471 - , F_peakSpeed( 1.103 )//1.122 - , F( 1.0 ) - , bar_height( BAND_COUNT, 0 ) - , peak_height( BAND_COUNT, 0 ) - , peak_speed( BAND_COUNT, 0.01 ) - , barPixmap( COLUMN_WIDTH, 50 ) -{ +BoomAnalyzer::BoomAnalyzer(QWidget* parent) + : Analyzer::Base(parent, 9), + K_barHeight(1.271) // 1.471 + , + F_peakSpeed(1.103) // 1.122 + , + F(1.0), + bar_height(BAND_COUNT, 0), + peak_height(BAND_COUNT, 0), + peak_speed(BAND_COUNT, 0.01), + barPixmap(COLUMN_WIDTH, 50) {} + +void BoomAnalyzer::changeK_barHeight(int newValue) { + K_barHeight = (double)newValue / 1000; } -void -BoomAnalyzer::changeK_barHeight( int newValue ) -{ - K_barHeight = (double)newValue / 1000; +void BoomAnalyzer::changeF_peakSpeed(int newValue) { + F_peakSpeed = (double)newValue / 1000; } -void -BoomAnalyzer::changeF_peakSpeed( int newValue ) -{ - F_peakSpeed = (double)newValue / 1000; +void BoomAnalyzer::resizeEvent(QResizeEvent*) { init(); } + +void BoomAnalyzer::init() { + const uint HEIGHT = height() - 2; + const double h = 1.2 / HEIGHT; + + F = double(HEIGHT) / (log10(256) * 1.1 /*<- max. amplitude*/); + + barPixmap = QPixmap(COLUMN_WIDTH - 2, HEIGHT); + canvas_ = QPixmap(size()); + canvas_.fill(palette().color(QPalette::Background)); + + QPainter p(&barPixmap); + for (uint y = 0; y < HEIGHT; ++y) { + const double F = (double)y * h; + + p.setPen(QColor(qMax(0, 255 - int(229.0 * F)), + qMax(0, 255 - int(229.0 * F)), + qMax(0, 255 - int(191.0 * F)))); + p.drawLine(0, y, COLUMN_WIDTH - 2, y); + } } -void BoomAnalyzer::resizeEvent(QResizeEvent *) { - init(); +void BoomAnalyzer::transform(Scope& s) { + float* front = static_cast(&s.front()); + + m_fht->spectrum(front); + m_fht->scale(front, 1.0 / 60); + + Scope scope(32, 0); + + const uint xscale[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 19, 24, 29, 36, + 43, 52, 63, 76, 91, 108, 129, 153, 182, 216, 255}; + + for (uint j, i = 0; i < 32; i++) + for (j = xscale[i]; j < xscale[i + 1]; j++) + if (s[j] > scope[i]) scope[i] = s[j]; + + s = scope; } -void -BoomAnalyzer::init() -{ - const uint HEIGHT = height() - 2; - const double h = 1.2 / HEIGHT; +void BoomAnalyzer::analyze(QPainter& p, const Scope& scope, bool new_frame) { + if (!new_frame) { + p.drawPixmap(0, 0, canvas_); + return; + } + float h; + const uint MAX_HEIGHT = height() - 1; - F = double(HEIGHT) / (log10( 256 ) * 1.1 /*<- max. amplitude*/); + QPainter canvas_painter(&canvas_); + canvas_.fill(palette().color(QPalette::Background)); - barPixmap = QPixmap( COLUMN_WIDTH-2, HEIGHT ); + for (uint i = 0, x = 0, y; i < BAND_COUNT; ++i, x += COLUMN_WIDTH + 1) { + h = log10(scope[i] * 256.0) * F; - QPainter p( &barPixmap ); - for( uint y = 0; y < HEIGHT; ++y ) - { - const double F = (double)y * h; + if (h > MAX_HEIGHT) h = MAX_HEIGHT; - p.setPen(QColor( - qMax(0, 255 - int(229.0 * F)), - qMax(0, 255 - int(229.0 * F)), - qMax(0, 255 - int(191.0 * F)))); - p.drawLine( 0, y, COLUMN_WIDTH-2, y ); - } -} - -void -BoomAnalyzer::transform( Scope &s ) -{ - float *front = static_cast( &s.front() ); - - m_fht->spectrum( front ); - m_fht->scale( front, 1.0 / 60 ); - - Scope scope( 32, 0 ); - - const uint xscale[] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,24,29,36,43,52,63,76,91,108,129,153,182,216,255 }; - - for( uint j, i = 0; i < 32; i++ ) - for( j = xscale[i]; j < xscale[i + 1]; j++ ) - if ( s[j] > scope[i] ) - scope[i] = s[j]; - - s = scope; -} - -void -BoomAnalyzer::analyze( QPainter& p, const Scope& scope, bool new_frame) -{ - float h; - const uint MAX_HEIGHT = height() - 1; - - for( uint i = 0, x = 0, y; i < BAND_COUNT; ++i, x += COLUMN_WIDTH+1 ) - { - h = log10( scope[i]*256.0 ) * F; - - if( h > MAX_HEIGHT ) - h = MAX_HEIGHT; - - if( h > bar_height[i] ) - { - bar_height[i] = h; - - if( h > peak_height[i] ) - { - peak_height[i] = h; - peak_speed[i] = 0.01; - } - else goto peak_handling; - } - else - { - if( bar_height[i] > 0.0 ) - { - bar_height[i] -= K_barHeight; //1.4 - if( bar_height[i] < 0.0 ) bar_height[i] = 0.0; - } - - peak_handling: - - if( peak_height[i] > 0.0 ) - { - peak_height[i] -= peak_speed[i]; - peak_speed[i] *= F_peakSpeed; //1.12 - - if( peak_height[i] < bar_height[i] ) peak_height[i] = bar_height[i]; - if( peak_height[i] < 0.0 ) peak_height[i] = 0.0; - } - } - - y = height() - uint(bar_height[i]); - p.drawPixmap(x+1, y, barPixmap, 0, y, -1, -1); - p.setPen( palette().color(QPalette::Highlight) ); - if (bar_height[i] > 0) - p.drawRect( x, y, COLUMN_WIDTH - 1, height() - y - 1 ); - - y = height() - uint(peak_height[i]); - p.setPen( palette().color(QPalette::Base) ); - p.drawLine( x, y, x+COLUMN_WIDTH-1, y ); + if (h > bar_height[i]) { + bar_height[i] = h; + + if (h > peak_height[i]) { + peak_height[i] = h; + peak_speed[i] = 0.01; + } else + goto peak_handling; + } else { + if (bar_height[i] > 0.0) { + bar_height[i] -= K_barHeight; // 1.4 + if (bar_height[i] < 0.0) bar_height[i] = 0.0; + } + + peak_handling: + + if (peak_height[i] > 0.0) { + peak_height[i] -= peak_speed[i]; + peak_speed[i] *= F_peakSpeed; // 1.12 + + if (peak_height[i] < bar_height[i]) peak_height[i] = bar_height[i]; + if (peak_height[i] < 0.0) peak_height[i] = 0.0; + } } + + y = height() - uint(bar_height[i]); + canvas_painter.drawPixmap(x + 1, y, barPixmap, 0, y, -1, -1); + canvas_painter.setPen(palette().color(QPalette::Highlight)); + if (bar_height[i] > 0) + canvas_painter.drawRect(x, y, COLUMN_WIDTH - 1, height() - y - 1); + + y = height() - uint(peak_height[i]); + canvas_painter.setPen(palette().color(QPalette::Base)); + canvas_painter.drawLine(x, y, x + COLUMN_WIDTH - 1, y); + } + + p.drawPixmap(0, 0, canvas_); } diff --git a/src/analyzers/boomanalyzer.h b/src/analyzers/boomanalyzer.h index a45007a75..bb9532735 100644 --- a/src/analyzers/boomanalyzer.h +++ b/src/analyzers/boomanalyzer.h @@ -11,35 +11,35 @@ @author Max Howell */ -class BoomAnalyzer : public Analyzer::Base -{ -Q_OBJECT -public: - Q_INVOKABLE BoomAnalyzer( QWidget* ); +class BoomAnalyzer : public Analyzer::Base { + Q_OBJECT + public: + Q_INVOKABLE BoomAnalyzer(QWidget*); - static const char* kName; + static const char* kName; - virtual void init(); - virtual void transform( Scope &s ); - virtual void analyze( QPainter& p, const Scope&, bool new_frame); + virtual void init(); + virtual void transform(Scope& s); + virtual void analyze(QPainter& p, const Scope&, bool new_frame); -public slots: - void changeK_barHeight( int ); - void changeF_peakSpeed( int ); + public slots: + void changeK_barHeight(int); + void changeF_peakSpeed(int); -protected: - void resizeEvent( QResizeEvent * e); + protected: + void resizeEvent(QResizeEvent* e); - static const uint COLUMN_WIDTH = 4; - static const uint BAND_COUNT = 32; + static const uint COLUMN_WIDTH = 4; + static const uint BAND_COUNT = 32; - double K_barHeight, F_peakSpeed, F; + double K_barHeight, F_peakSpeed, F; - std::vector bar_height; - std::vector peak_height; - std::vector peak_speed; + std::vector bar_height; + std::vector peak_height; + std::vector peak_speed; - QPixmap barPixmap; + QPixmap barPixmap; + QPixmap canvas_; }; #endif diff --git a/src/analyzers/glanalyzer.cpp b/src/analyzers/glanalyzer.cpp index ec8a6bc4f..32c0a5474 100644 --- a/src/analyzers/glanalyzer.cpp +++ b/src/analyzers/glanalyzer.cpp @@ -23,320 +23,295 @@ #include "glanalyzer.h" #include +GLAnalyzer::GLAnalyzer(QWidget* parent) + : Analyzer::Base3D(parent, 15), m_oldy(32, -10.0f), m_peaks(32) {} -GLAnalyzer::GLAnalyzer( QWidget *parent ) - : Analyzer::Base3D(parent, 15) - , m_oldy(32, -10.0f) - , m_peaks(32) -{} - -GLAnalyzer::~GLAnalyzer() -{} +GLAnalyzer::~GLAnalyzer() {} // METHODS ===================================================== -void GLAnalyzer::analyze( const Scope &s ) -{ - //kdDebug() << "Scope Size: " << s.size() << endl; - /* Scope t(32); - if (s.size() != 32) - { - Analyzer::interpolate(s, t); - } - else - { - t = s; - }*/ - uint offset = 0; - static float peak; - float mfactor = 0.0; - static int drawcount; +void GLAnalyzer::analyze(const Scope& s) { + // kdDebug() << "Scope Size: " << s.size() << endl; + /* Scope t(32); + if (s.size() != 32) + { + Analyzer::interpolate(s, t); + } + else + { + t = s; + }*/ + uint offset = 0; + static float peak; + float mfactor = 0.0; + static int drawcount; - if (s.size() == 64) - { - offset=8; - } + if (s.size() == 64) { + offset = 8; + } - glRotatef(0.25f, 0.0f, 1.0f, 0.5f); //Rotate the scene - drawFloor(); - drawcount++; - if (drawcount > 25) - { - drawcount = 0; - peak = 0.0; - } + glRotatef(0.25f, 0.0f, 1.0f, 0.5f); // Rotate the scene + drawFloor(); + drawcount++; + if (drawcount > 25) { + drawcount = 0; + peak = 0.0; + } - for ( uint i = 0; i < 32; i++ ) - { - if (s[i] > peak) - { - peak = s[i]; - } - } + for (uint i = 0; i < 32; i++) { + if (s[i] > peak) { + peak = s[i]; + } + } - mfactor = 20 / peak; - for ( uint i = 0; i < 32; i++ ) - { + mfactor = 20 / peak; + for (uint i = 0; i < 32; i++) { - //kdDebug() << "Scope item " << i << " value: " << s[i] << endl; + // kdDebug() << "Scope item " << i << " value: " << s[i] << endl; - // Calculate new horizontal position (x) depending on number of samples - x = -16.0f + i; + // Calculate new horizontal position (x) depending on number of samples + x = -16.0f + i; - // Calculating new vertical position (y) depending on the data passed by amarok - y = float(s[i+offset] * mfactor); //This make it kinda dynamically resize depending on the data + // Calculating new vertical position (y) depending on the data passed by + // amarok + y = float(s[i + offset] * mfactor); // This make it kinda dynamically + // resize depending on the data - //Some basic bounds checking - if (y > 30) - y = 30; - else if (y < 0) - y = 0; + // Some basic bounds checking + if (y > 30) + y = 30; + else if (y < 0) + y = 0; - if((y - m_oldy[i]) < -0.6f) // Going Down Too Much - { - y = m_oldy[i] - 0.7f; - } - if (y < 0.0f) - { - y = 0.0f; - } + if ((y - m_oldy[i]) < -0.6f) // Going Down Too Much + { + y = m_oldy[i] - 0.7f; + } + if (y < 0.0f) { + y = 0.0f; + } - m_oldy[i] = y; //Save value as last value + m_oldy[i] = y; // Save value as last value - //Peak Code - if (m_oldy[i] > m_peaks[i].level) - { - m_peaks[i].level = m_oldy[i]; - m_peaks[i].delay = 30; - } + // Peak Code + if (m_oldy[i] > m_peaks[i].level) { + m_peaks[i].level = m_oldy[i]; + m_peaks[i].delay = 30; + } - if (m_peaks[i].delay > 0) - { - m_peaks[i].delay--; - } + if (m_peaks[i].delay > 0) { + m_peaks[i].delay--; + } - if (m_peaks[i].level > 1.0f) - { - if (m_peaks[i].delay <= 0) - { - m_peaks[i].level-=0.4f; - } - } - // Draw the bar - drawBar(x,y); - drawPeak(x, m_peaks[i].level); + if (m_peaks[i].level > 1.0f) { + if (m_peaks[i].delay <= 0) { + m_peaks[i].level -= 0.4f; + } + } + // Draw the bar + drawBar(x, y); + drawPeak(x, m_peaks[i].level); + } - } - - updateGL(); + updateGL(); } -void GLAnalyzer::initializeGL() -{ - // Clear frame (next fading will be preferred to clearing) - glClearColor(0.0f, 0.0f, 0.0f, 1.0f);// Set clear color to black - glClear( GL_COLOR_BUFFER_BIT ); +void GLAnalyzer::initializeGL() { + // Clear frame (next fading will be preferred to clearing) + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set clear color to black + glClear(GL_COLOR_BUFFER_BIT); - // Set the shading model - glShadeModel(GL_SMOOTH); + // Set the shading model + glShadeModel(GL_SMOOTH); - // Set the polygon mode to fill - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + // Set the polygon mode to fill + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - // Enable depth testing for hidden line removal - glEnable(GL_DEPTH_TEST); + // Enable depth testing for hidden line removal + glEnable(GL_DEPTH_TEST); - // Set blend parameters for 'composting alpha' - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); + // Set blend parameters for 'composting alpha' + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } -void GLAnalyzer::resizeGL( int w, int h ) -{ - glViewport( 0, 0, (GLint)w, (GLint)h ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho(-16.0f, 16.0f, -10.0f, 10.0f, -50.0f, 100.0f); - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); +void GLAnalyzer::resizeGL(int w, int h) { + glViewport(0, 0, (GLint)w, (GLint)h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-16.0f, 16.0f, -10.0f, 10.0f, -50.0f, 100.0f); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); } -void GLAnalyzer::paintGL() -{ - glMatrixMode( GL_MODELVIEW ); +void GLAnalyzer::paintGL() { + glMatrixMode(GL_MODELVIEW); #if 0 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); #else - glEnable( GL_DEPTH_TEST ); - glEnable( GL_BLEND ); - glPushMatrix(); - glLoadIdentity(); - glBegin( GL_TRIANGLE_STRIP ); - glColor4f( 0.0f, 0.0f, 0.1f, 0.08f ); - glVertex2f( 20.0f, 10.0f ); - glVertex2f( -20.0f, 10.0f ); - glVertex2f( 20.0f, -10.0f ); - glVertex2f( -20.0f, -10.0f ); - glEnd(); - glPopMatrix(); - glDisable( GL_BLEND ); - glEnable( GL_DEPTH_TEST ); - glClear( GL_DEPTH_BUFFER_BIT ); + glEnable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glPushMatrix(); + glLoadIdentity(); + glBegin(GL_TRIANGLE_STRIP); + glColor4f(0.0f, 0.0f, 0.1f, 0.08f); + glVertex2f(20.0f, 10.0f); + glVertex2f(-20.0f, 10.0f); + glVertex2f(20.0f, -10.0f); + glVertex2f(-20.0f, -10.0f); + glEnd(); + glPopMatrix(); + glDisable(GL_BLEND); + glEnable(GL_DEPTH_TEST); + glClear(GL_DEPTH_BUFFER_BIT); #endif - //swapBuffers(); - - glFlush(); + // swapBuffers(); + glFlush(); } -void GLAnalyzer::drawBar(float xPos, float height) -{ - glPushMatrix(); +void GLAnalyzer::drawBar(float xPos, float height) { + glPushMatrix(); - //Sets color to blue - //Set the colour depending on the height of the bar - glColor3f((height/40) + 0.5f, (height/40) + 0.625f, 1.0f); - glTranslatef(xPos, -10.0f, 0.0f); + // Sets color to blue + // Set the colour depending on the height of the bar + glColor3f((height / 40) + 0.5f, (height / 40) + 0.625f, 1.0f); + glTranslatef(xPos, -10.0f, 0.0f); - glScalef(1.0f, height, 3.0f); - drawCube(); + glScalef(1.0f, height, 3.0f); + drawCube(); - //Set colour to full blue - //glColor3f(0.0f, 0.0f, 1.0f); - //drawFrame(); - glPopMatrix(); + // Set colour to full blue + // glColor3f(0.0f, 0.0f, 1.0f); + // drawFrame(); + glPopMatrix(); } -void GLAnalyzer::drawFloor() -{ - glPushMatrix(); +void GLAnalyzer::drawFloor() { + glPushMatrix(); - //Sets color to amarok blue - glColor3f( 0.5f, 0.625f, 1.0f); - glTranslatef(-16.0f,-11.0f, -4.0f); + // Sets color to amarok blue + glColor3f(0.5f, 0.625f, 1.0f); + glTranslatef(-16.0f, -11.0f, -4.0f); - glScalef(32.0f, 1.0f, 10.0f); - drawCube(); + glScalef(32.0f, 1.0f, 10.0f); + drawCube(); - //Set colour to full blue - glColor3f(0.0f, 0.0f, 1.0f); - drawFrame(); - glPopMatrix(); + // Set colour to full blue + glColor3f(0.0f, 0.0f, 1.0f); + drawFrame(); + glPopMatrix(); } -void GLAnalyzer::drawPeak(float xPos, float ypos) -{ - glPushMatrix(); +void GLAnalyzer::drawPeak(float xPos, float ypos) { + glPushMatrix(); - //Set the colour to red - glColor3f(1.0f, 0.0f, 0.0f); - glTranslatef(xPos, ypos - 10.0f, 0.0f); + // Set the colour to red + glColor3f(1.0f, 0.0f, 0.0f); + glTranslatef(xPos, ypos - 10.0f, 0.0f); - glScalef(1.0f, 1.0f, 3.0f); - drawCube(); + glScalef(1.0f, 1.0f, 3.0f); + drawCube(); - glPopMatrix(); + glPopMatrix(); } -void GLAnalyzer::drawCube() -{ - glPushMatrix(); - glBegin(GL_POLYGON); +void GLAnalyzer::drawCube() { + glPushMatrix(); + glBegin(GL_POLYGON); - //This is the top face - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 0.0f); + // This is the top face + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 0.0f); - //This is the front face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the front face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the right face - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); + // This is the right face + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); - //This is the left face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the left face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the bottom face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the bottom face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the back face - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 1.0f); + // This is the back face + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 1.0f); - glEnd(); - glPopMatrix(); + glEnd(); + glPopMatrix(); } -void GLAnalyzer::drawFrame() -{ - glPushMatrix(); - glBegin(GL_LINES); +void GLAnalyzer::drawFrame() { + glPushMatrix(); + glBegin(GL_LINES); + // This is the top face + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 0.0f); - //This is the top face - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 0.0f); + // This is the front face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the front face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the right face + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); - //This is the right face - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); + // This is the left face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 0.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the left face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 0.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the bottom face + glVertex3f(0.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 0.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 0.0f); - //This is the bottom face - glVertex3f(0.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 0.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 0.0f); + // This is the back face + glVertex3f(0.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 0.0f, 1.0f); + glVertex3f(1.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 1.0f, 1.0f); + glVertex3f(0.0f, 0.0f, 1.0f); - //This is the back face - glVertex3f(0.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 0.0f, 1.0f); - glVertex3f(1.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 1.0f, 1.0f); - glVertex3f(0.0f, 0.0f, 1.0f); - - glEnd(); - glPopMatrix(); + glEnd(); + glPopMatrix(); } #endif diff --git a/src/analyzers/glanalyzer.h b/src/analyzers/glanalyzer.h index 394c46384..3e8e29695 100644 --- a/src/analyzers/glanalyzer.h +++ b/src/analyzers/glanalyzer.h @@ -27,16 +27,13 @@ *@author piggz */ -typedef struct -{ +typedef struct { float level; uint delay; -} -peak_tx; +} peak_tx; -class GLAnalyzer : public Analyzer::Base3D -{ -private: +class GLAnalyzer : public Analyzer::Base3D { + private: std::vector m_oldy; std::vector m_peaks; @@ -47,14 +44,15 @@ private: void drawFloor(); GLfloat x, y; -public: - GLAnalyzer(QWidget *); + + public: + GLAnalyzer(QWidget*); ~GLAnalyzer(); - void analyze( const Scope & ); - -protected: + void analyze(const Scope&); + + protected: void initializeGL(); - void resizeGL( int w, int h ); + void resizeGL(int w, int h); void paintGL(); }; diff --git a/src/analyzers/glanalyzer2.cpp b/src/analyzers/glanalyzer2.cpp index 6f3d1c83a..7d76d1cc8 100644 --- a/src/analyzers/glanalyzer2.cpp +++ b/src/analyzers/glanalyzer2.cpp @@ -27,307 +27,267 @@ #include #include +GLAnalyzer2::GLAnalyzer2(QWidget* parent) : Analyzer::Base3D(parent, 15) { + // initialize openGL context before managing GL calls + makeCurrent(); + loadTexture(locate("data", "amarok/data/dot.png"), dotTexture); + loadTexture(locate("data", "amarok/data/wirl1.png"), w1Texture); + loadTexture(locate("data", "amarok/data/wirl2.png"), w2Texture); -GLAnalyzer2::GLAnalyzer2( QWidget *parent ): -Analyzer::Base3D(parent, 15) -{ - //initialize openGL context before managing GL calls - makeCurrent(); - loadTexture( locate("data","amarok/data/dot.png"), dotTexture ); - loadTexture( locate("data","amarok/data/wirl1.png"), w1Texture ); - loadTexture( locate("data","amarok/data/wirl2.png"), w2Texture ); - - show.paused = true; - show.pauseTimer = 0.0; - show.rotDegrees = 0.0; - frame.rotDegrees = 0.0; + show.paused = true; + show.pauseTimer = 0.0; + show.rotDegrees = 0.0; + frame.rotDegrees = 0.0; } -GLAnalyzer2::~GLAnalyzer2() -{ - freeTexture( dotTexture ); - freeTexture( w1Texture ); - freeTexture( w2Texture ); +GLAnalyzer2::~GLAnalyzer2() { + freeTexture(dotTexture); + freeTexture(w1Texture); + freeTexture(w2Texture); } -void GLAnalyzer2::initializeGL() -{ - // Set a smooth shade model - glShadeModel(GL_SMOOTH); +void GLAnalyzer2::initializeGL() { + // Set a smooth shade model + glShadeModel(GL_SMOOTH); - // Disable depth test (all is drawn on a 2d plane) - glDisable(GL_DEPTH_TEST); + // Disable depth test (all is drawn on a 2d plane) + glDisable(GL_DEPTH_TEST); - // Set blend parameters for 'composting alpha' - glBlendFunc( GL_SRC_ALPHA, GL_ONE ); //superpose - //glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); //fade - glEnable( GL_BLEND ); + // Set blend parameters for 'composting alpha' + glBlendFunc(GL_SRC_ALPHA, GL_ONE); // superpose + // glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); //fade + glEnable(GL_BLEND); - // Clear frame with a black background - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - glClear( GL_COLOR_BUFFER_BIT ); + // Clear frame with a black background + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); } -void GLAnalyzer2::resizeGL( int w, int h ) -{ - // Setup screen. We're going to manually do the perspective projection - glViewport( 0, 0, (GLint)w, (GLint)h ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glOrtho( -10.0f, 10.0f, -10.0f, 10.0f, -5.0f, 5.0f ); +void GLAnalyzer2::resizeGL(int w, int h) { + // Setup screen. We're going to manually do the perspective projection + glViewport(0, 0, (GLint)w, (GLint)h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, -5.0f, 5.0f); - // Get the aspect ratio of the screen to draw 'cicular' particles - float ratio = (float)w / (float)h, - eqPixH = 60, - eqPixW = 80; - if ( ratio >= (4.0/3.0) ) { - unitX = 10.0 / (eqPixH * ratio); - unitY = 10.0 / eqPixH; - } else { - unitX = 10.0 / eqPixW; - unitY = 10.0 / (eqPixW / ratio); + // Get the aspect ratio of the screen to draw 'cicular' particles + float ratio = (float)w / (float)h, eqPixH = 60, eqPixW = 80; + if (ratio >= (4.0 / 3.0)) { + unitX = 10.0 / (eqPixH * ratio); + unitY = 10.0 / eqPixH; + } else { + unitX = 10.0 / eqPixW; + unitY = 10.0 / (eqPixW / ratio); + } + + // Get current timestamp. + timeval tv; + gettimeofday(&tv, nullptr); + show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; +} + +void GLAnalyzer2::paused() { analyze(Scope()); } + +void GLAnalyzer2::analyze(const Scope& s) { + bool haveNoData = s.empty(); + + // if we're going into pause mode, clear timers. + if (!show.paused && haveNoData) show.pauseTimer = 0.0; + + // if we have got data, interpolate it (asking myself why I'm doing it here..) + if (!(show.paused = haveNoData)) { + int bands = s.size(), lowbands = bands / 4, hibands = bands / 3, + midbands = bands - lowbands - hibands; + Q_UNUSED(midbands); + float currentEnergy = 0, currentMeanBand = 0, maxValue = 0; + for (int i = 0; i < bands; i++) { + float value = s[i]; + currentEnergy += value; + currentMeanBand += (float)i * value; + if (value > maxValue) maxValue = value; } - - // Get current timestamp. - timeval tv; - gettimeofday( &tv, NULL ); - show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; -} - -void GLAnalyzer2::paused() -{ - analyze( Scope() ); -} - -void GLAnalyzer2::analyze( const Scope &s ) -{ - bool haveNoData = s.empty(); - - // if we're going into pause mode, clear timers. - if ( !show.paused && haveNoData ) - show.pauseTimer = 0.0; - - // if we have got data, interpolate it (asking myself why I'm doing it here..) - if ( !(show.paused = haveNoData) ) - { - int bands = s.size(), - lowbands = bands / 4, - hibands = bands / 3, - midbands = bands - lowbands - hibands; Q_UNUSED( midbands ); - float currentEnergy = 0, - currentMeanBand = 0, - maxValue = 0; - for ( int i = 0; i < bands; i++ ) - { - float value = s[i]; - currentEnergy += value; - currentMeanBand += (float)i * value; - if ( value > maxValue ) - maxValue = value; - } - frame.silence = currentEnergy < 0.001; - if ( !frame.silence ) - { - frame.meanBand = 100.0 * currentMeanBand / (currentEnergy * bands); - currentEnergy = 100.0 * currentEnergy / (float)bands; - frame.dEnergy = currentEnergy - frame.energy; - frame.energy = currentEnergy; -// printf( "%d [%f :: %f ]\t%f \n", bands, frame.energy, frame.meanBand, maxValue ); - } else - frame.energy = 0.0; - } - - // update the frame - updateGL(); -} - -void GLAnalyzer2::paintGL() -{ - // Compute the dT since the last call to paintGL and update timings - timeval tv; - gettimeofday( &tv, NULL ); - double currentTime = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; - show.dT = currentTime - show.timeStamp; - show.timeStamp = currentTime; - - // Clear frame - glClear( GL_COLOR_BUFFER_BIT ); - - // Shitch to MODEL matrix and reset it to default - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - - // Fade the previous drawings. -/* glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glBegin( GL_TRIANGLE_STRIP ); - glColor4f( 0.0f, 0.0f, 0.0f, 0.2f ); - glVertex2f( 10.0f, 10.0f ); - glVertex2f( -10.0f, 10.0f ); - glVertex2f( 10.0f, -10.0f ); - glVertex2f( -10.0f, -10.0f ); - glEnd();*/ - - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glEnable( GL_TEXTURE_2D ); - float alphaN = show.paused ? 0.2 : (frame.energy / 10.0), - alphaP = show.paused ? 1.0 : (1 - frame.energy / 20.0); - if ( alphaN > 1.0 ) - alphaN = 1.0; - if ( alphaP < 0.1 ) - alphaP = 0.1; - glBindTexture( GL_TEXTURE_2D, w2Texture ); - setTextureMatrix( show.rotDegrees, 0.707*alphaP ); - glColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); - glBegin( GL_TRIANGLE_STRIP ); - glTexCoord2f( 1.0, 1.0 ); - glVertex2f( 10.0f, 10.0f ); - glTexCoord2f( 0.0, 1.0 ); - glVertex2f( -10.0f, 10.0f ); - glTexCoord2f( 1.0, 0.0 ); - glVertex2f( 10.0f, -10.0f ); - glTexCoord2f( 0.0 , 0.0 ); - glVertex2f( -10.0f, -10.0f ); - glEnd(); - glBindTexture( GL_TEXTURE_2D, w1Texture ); - setTextureMatrix( -show.rotDegrees * 2, 0.707 ); - glColor4f( 1.0f, 1.0f, 1.0f, alphaN ); - glBegin( GL_TRIANGLE_STRIP ); - glTexCoord2f( 1.0, 1.0 ); - glVertex2f( 10.0f, 10.0f ); - glTexCoord2f( 0.0, 1.0 ); - glVertex2f( -10.0f, 10.0f ); - glTexCoord2f( 1.0, 0.0 ); - glVertex2f( 10.0f, -10.0f ); - glTexCoord2f( 0.0 , 0.0 ); - glVertex2f( -10.0f, -10.0f ); - glEnd(); - setTextureMatrix( 0.0, 0.0 ); - glDisable( GL_TEXTURE_2D ); - glBlendFunc( GL_SRC_ALPHA, GL_ONE ); - - // Here begins the real draw loop - // some updates to the show - show.rotDegrees += 40.0 * show.dT; - frame.rotDegrees += 80.0 * show.dT; - - // handle the 'pause' status - if ( show.paused ) - { - if ( show.pauseTimer > 0.5 ) - { - if ( show.pauseTimer > 0.6 ) - show.pauseTimer -= 0.6; - drawFullDot( 0.0f, 0.4f, 0.8f, 1.0f ); - drawFullDot( 0.0f, 0.4f, 0.8f, 1.0f ); - } - show.pauseTimer += show.dT; - return; - } - - if ( dotTexture ) { - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, dotTexture ); + frame.silence = currentEnergy < 0.001; + if (!frame.silence) { + frame.meanBand = 100.0 * currentMeanBand / (currentEnergy * bands); + currentEnergy = 100.0 * currentEnergy / (float)bands; + frame.dEnergy = currentEnergy - frame.energy; + frame.energy = currentEnergy; + // printf( "%d [%f :: %f ]\t%f \n", bands, frame.energy, + // frame.meanBand, maxValue ); } else - glDisable( GL_TEXTURE_2D ); + frame.energy = 0.0; + } - glLoadIdentity(); -// glRotatef( -frame.rotDegrees, 0,0,1 ); - glBegin( GL_QUADS ); -// Particle * particle = particleList.first(); -// for (; particle; particle = particleList.next()) - { - glColor4f( 0.0f, 1.0f, 0.0f, 1.0f ); - drawDot( 0, 0, kMax(10.0,(10.0 * frame.energy)) ); - glColor4f( 1.0f, 0.0f, 0.0f, 1.0f ); - drawDot( 6, 0, kMax(10.0, (5.0 * frame.energy)) ); - glColor4f( 0.0f, 0.4f, 1.0f, 1.0f ); - drawDot( -6, 0, kMax(10.0, (5.0 * frame.energy)) ); + // update the frame + updateGL(); +} + +void GLAnalyzer2::paintGL() { + // Compute the dT since the last call to paintGL and update timings + timeval tv; + gettimeofday(&tv, nullptr); + double currentTime = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; + show.dT = currentTime - show.timeStamp; + show.timeStamp = currentTime; + + // Clear frame + glClear(GL_COLOR_BUFFER_BIT); + + // Shitch to MODEL matrix and reset it to default + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + // Fade the previous drawings. + /* glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); + glBegin( GL_TRIANGLE_STRIP ); + glColor4f( 0.0f, 0.0f, 0.0f, 0.2f ); + glVertex2f( 10.0f, 10.0f ); + glVertex2f( -10.0f, 10.0f ); + glVertex2f( 10.0f, -10.0f ); + glVertex2f( -10.0f, -10.0f ); + glEnd();*/ + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_TEXTURE_2D); + float alphaN = show.paused ? 0.2 : (frame.energy / 10.0), + alphaP = show.paused ? 1.0 : (1 - frame.energy / 20.0); + if (alphaN > 1.0) alphaN = 1.0; + if (alphaP < 0.1) alphaP = 0.1; + glBindTexture(GL_TEXTURE_2D, w2Texture); + setTextureMatrix(show.rotDegrees, 0.707 * alphaP); + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(1.0, 1.0); + glVertex2f(10.0f, 10.0f); + glTexCoord2f(0.0, 1.0); + glVertex2f(-10.0f, 10.0f); + glTexCoord2f(1.0, 0.0); + glVertex2f(10.0f, -10.0f); + glTexCoord2f(0.0, 0.0); + glVertex2f(-10.0f, -10.0f); + glEnd(); + glBindTexture(GL_TEXTURE_2D, w1Texture); + setTextureMatrix(-show.rotDegrees * 2, 0.707); + glColor4f(1.0f, 1.0f, 1.0f, alphaN); + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(1.0, 1.0); + glVertex2f(10.0f, 10.0f); + glTexCoord2f(0.0, 1.0); + glVertex2f(-10.0f, 10.0f); + glTexCoord2f(1.0, 0.0); + glVertex2f(10.0f, -10.0f); + glTexCoord2f(0.0, 0.0); + glVertex2f(-10.0f, -10.0f); + glEnd(); + setTextureMatrix(0.0, 0.0); + glDisable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + + // Here begins the real draw loop + // some updates to the show + show.rotDegrees += 40.0 * show.dT; + frame.rotDegrees += 80.0 * show.dT; + + // handle the 'pause' status + if (show.paused) { + if (show.pauseTimer > 0.5) { + if (show.pauseTimer > 0.6) show.pauseTimer -= 0.6; + drawFullDot(0.0f, 0.4f, 0.8f, 1.0f); + drawFullDot(0.0f, 0.4f, 0.8f, 1.0f); } - glEnd(); + show.pauseTimer += show.dT; + return; + } + + if (dotTexture) { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, dotTexture); + } else + glDisable(GL_TEXTURE_2D); + + glLoadIdentity(); + // glRotatef( -frame.rotDegrees, 0,0,1 ); + glBegin(GL_QUADS); + // Particle * particle = particleList.first(); + // for (; particle; particle = particleList.next()) + { + glColor4f(0.0f, 1.0f, 0.0f, 1.0f); + drawDot(0, 0, kMax(10.0, (10.0 * frame.energy))); + glColor4f(1.0f, 0.0f, 0.0f, 1.0f); + drawDot(6, 0, kMax(10.0, (5.0 * frame.energy))); + glColor4f(0.0f, 0.4f, 1.0f, 1.0f); + drawDot(-6, 0, kMax(10.0, (5.0 * frame.energy))); + } + glEnd(); } -void GLAnalyzer2::drawDot( float x, float y, float size ) -{ - float sizeX = size * unitX, - sizeY = size * unitY, - pLeft = x - sizeX, - pTop = y + sizeY, - pRight = x + sizeX, - pBottom = y - sizeY; - glTexCoord2f( 0, 0 ); // Bottom Left - glVertex2f( pLeft, pBottom ); - glTexCoord2f( 0, 1 ); // Top Left - glVertex2f( pLeft, pTop ); - glTexCoord2f( 1, 1 ); // Top Right - glVertex2f( pRight, pTop ); - glTexCoord2f( 1, 0 ); // Bottom Right - glVertex2f( pRight, pBottom ); +void GLAnalyzer2::drawDot(float x, float y, float size) { + float sizeX = size * unitX, sizeY = size * unitY, pLeft = x - sizeX, + pTop = y + sizeY, pRight = x + sizeX, pBottom = y - sizeY; + glTexCoord2f(0, 0); // Bottom Left + glVertex2f(pLeft, pBottom); + glTexCoord2f(0, 1); // Top Left + glVertex2f(pLeft, pTop); + glTexCoord2f(1, 1); // Top Right + glVertex2f(pRight, pTop); + glTexCoord2f(1, 0); // Bottom Right + glVertex2f(pRight, pBottom); } -void GLAnalyzer2::drawFullDot( float r, float g, float b, float a ) -{ - glBindTexture( GL_TEXTURE_2D, dotTexture ); - glEnable( GL_TEXTURE_2D ); - glColor4f( r, g, b, a ); - glBegin( GL_TRIANGLE_STRIP ); - glTexCoord2f( 1.0, 1.0 ); - glVertex2f( 10.0f, 10.0f ); - glTexCoord2f( 0.0, 1.0 ); - glVertex2f( -10.0f, 10.0f ); - glTexCoord2f( 1.0, 0.0 ); - glVertex2f( 10.0f, -10.0f ); - glTexCoord2f( 0.0 , 0.0 ); - glVertex2f( -10.0f, -10.0f ); - glEnd(); - glDisable( GL_TEXTURE_2D ); +void GLAnalyzer2::drawFullDot(float r, float g, float b, float a) { + glBindTexture(GL_TEXTURE_2D, dotTexture); + glEnable(GL_TEXTURE_2D); + glColor4f(r, g, b, a); + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(1.0, 1.0); + glVertex2f(10.0f, 10.0f); + glTexCoord2f(0.0, 1.0); + glVertex2f(-10.0f, 10.0f); + glTexCoord2f(1.0, 0.0); + glVertex2f(10.0f, -10.0f); + glTexCoord2f(0.0, 0.0); + glVertex2f(-10.0f, -10.0f); + glEnd(); + glDisable(GL_TEXTURE_2D); } - -void GLAnalyzer2::setTextureMatrix( float rot, float scale ) -{ - glMatrixMode( GL_TEXTURE); - glLoadIdentity(); - if ( rot != 0.0 || scale != 0.0 ) - { - glTranslatef( 0.5f, 0.5f, 0.0f ); - glRotatef( rot, 0.0f, 0.0f, 1.0f ); - glScalef( scale, scale, 1.0f ); - glTranslatef( -0.5f, -0.5f, 0.0f ); - } - glMatrixMode( GL_MODELVIEW ); +void GLAnalyzer2::setTextureMatrix(float rot, float scale) { + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + if (rot != 0.0 || scale != 0.0) { + glTranslatef(0.5f, 0.5f, 0.0f); + glRotatef(rot, 0.0f, 0.0f, 1.0f); + glScalef(scale, scale, 1.0f); + glTranslatef(-0.5f, -0.5f, 0.0f); + } + glMatrixMode(GL_MODELVIEW); } -bool GLAnalyzer2::loadTexture( QString fileName, GLuint& textureID ) -{ - //reset texture ID to the default EMPTY value - textureID = 0; +bool GLAnalyzer2::loadTexture(QString fileName, GLuint& textureID) { + // reset texture ID to the default EMPTY value + textureID = 0; - //load image - QImage tmp; - if ( !tmp.load( fileName ) ) - return false; + // load image + QImage tmp; + if (!tmp.load(fileName)) return false; - //convert it to suitable format (flipped RGBA) - QImage texture = QGLWidget::convertToGLFormat( tmp ); - if ( texture.isNull() ) - return false; + // convert it to suitable format (flipped RGBA) + QImage texture = QGLWidget::convertToGLFormat(tmp); + if (texture.isNull()) return false; - //get texture number and bind loaded image to that texture - glGenTextures( 1, &textureID ); - glBindTexture( GL_TEXTURE_2D, textureID ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - glTexImage2D( GL_TEXTURE_2D, 0, 4, texture.width(), texture.height(), - 0, GL_RGBA, GL_UNSIGNED_BYTE, texture.bits() ); - return true; + // get texture number and bind loaded image to that texture + glGenTextures(1, &textureID); + glBindTexture(GL_TEXTURE_2D, textureID); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, 4, texture.width(), texture.height(), 0, + GL_RGBA, GL_UNSIGNED_BYTE, texture.bits()); + return true; } - -void GLAnalyzer2::freeTexture( GLuint & textureID ) -{ - if ( textureID > 0 ) - glDeleteTextures( 1, &textureID ); - textureID = 0; +void GLAnalyzer2::freeTexture(GLuint& textureID) { + if (textureID > 0) glDeleteTextures(1, &textureID); + textureID = 0; } #endif diff --git a/src/analyzers/glanalyzer2.h b/src/analyzers/glanalyzer2.h index 3aeb98ae6..d97886990 100644 --- a/src/analyzers/glanalyzer2.h +++ b/src/analyzers/glanalyzer2.h @@ -25,48 +25,46 @@ #include #include +class GLAnalyzer2 : public Analyzer::Base3D { + public: + GLAnalyzer2(QWidget*); + ~GLAnalyzer2(); + void analyze(const Scope&); + void paused(); -class GLAnalyzer2 : public Analyzer::Base3D -{ -public: - GLAnalyzer2(QWidget *); - ~GLAnalyzer2(); - void analyze( const Scope & ); - void paused(); + protected: + void initializeGL(); + void resizeGL(int w, int h); + void paintGL(); -protected: - void initializeGL(); - void resizeGL( int w, int h ); - void paintGL(); - -private: - struct ShowProperties { + private: + struct ShowProperties { bool paused; double timeStamp; double dT; double pauseTimer; float rotDegrees; - } show; + } show; - struct FrameProperties { + struct FrameProperties { float energy; float dEnergy; float meanBand; float rotDegrees; bool silence; - } frame; + } frame; - GLuint dotTexture; - GLuint w1Texture; - GLuint w2Texture; - float unitX, unitY; + GLuint dotTexture; + GLuint w1Texture; + GLuint w2Texture; + float unitX, unitY; - void drawDot( float x, float y, float size ); - void drawFullDot( float r, float g, float b, float a ); - void setTextureMatrix( float rot, float scale ); + void drawDot(float x, float y, float size); + void drawFullDot(float r, float g, float b, float a); + void setTextureMatrix(float rot, float scale); - bool loadTexture(QString file, GLuint& textureID); - void freeTexture(GLuint& textureID); + bool loadTexture(QString file, GLuint& textureID); + void freeTexture(GLuint& textureID); }; #endif diff --git a/src/analyzers/glanalyzer3.cpp b/src/analyzers/glanalyzer3.cpp index cc7ce4c7f..7a5947ed2 100644 --- a/src/analyzers/glanalyzer3.cpp +++ b/src/analyzers/glanalyzer3.cpp @@ -28,453 +28,400 @@ #include #ifndef HAVE_FABSF -inline float fabsf(float f) -{ - return f < 0.f ? -f : f; -} +inline float fabsf(float f) { return f < 0.f ? -f : f; } #endif - -class Ball -{ - public: - Ball() : x( drand48() - drand48() ), y( 1 - 2.0 * drand48() ), - z( drand48() ), vx( 0.0 ), vy( 0.0 ), vz( 0.0 ), - mass( 0.01 + drand48()/10.0 ) +class Ball { + public: + Ball() + : x(drand48() - drand48()), + y(1 - 2.0 * drand48()), + z(drand48()), + vx(0.0), + vy(0.0), + vz(0.0), + mass(0.01 + drand48() / 10.0) //,color( (float[3]) { 0.0, drand48()*0.5, 0.7 + drand48() * 0.3 } ) - { - //this is because GCC < 3.3 can't compile the above line, we aren't sure why though - color[0] = 0.0; color[1] = drand48()*0.5; color[2] = 0.7 + drand48() * 0.3; - }; + { + // this is because GCC < 3.3 can't compile the above line, we aren't sure + // why though + color[0] = 0.0; + color[1] = drand48() * 0.5; + color[2] = 0.7 + drand48() * 0.3; + }; - float x, y, z, vx, vy, vz, mass; - float color[3]; + float x, y, z, vx, vy, vz, mass; + float color[3]; - void updatePhysics( float dT ) - { - x += vx * dT; // position - y += vy * dT; // position - z += vz * dT; // position - if ( y < -0.8 ) vy = fabsf( vy ); - if ( y > 0.8 ) vy = -fabsf( vy ); - if ( z < 0.1 ) vz = fabsf( vz ); - if ( z > 0.9 ) vz = -fabsf( vz ); - vx += (( x > 0 ) ? 4.94 : -4.94) * dT; // G-force - vx *= (1 - 2.9 * dT); // air friction - vy *= (1 - 2.9 * dT); // air friction - vz *= (1 - 2.9 * dT); // air friction - } + void updatePhysics(float dT) { + x += vx * dT; // position + y += vy * dT; // position + z += vz * dT; // position + if (y < -0.8) vy = fabsf(vy); + if (y > 0.8) vy = -fabsf(vy); + if (z < 0.1) vz = fabsf(vz); + if (z > 0.9) vz = -fabsf(vz); + vx += ((x > 0) ? 4.94 : -4.94) * dT; // G-force + vx *= (1 - 2.9 * dT); // air friction + vy *= (1 - 2.9 * dT); // air friction + vz *= (1 - 2.9 * dT); // air friction + } }; -class Paddle -{ - public: - Paddle( float xPos ) : onLeft( xPos < 0 ), mass( 1.0 ), - X( xPos ), x( xPos ), vx( 0.0 ) {}; +class Paddle { + public: + Paddle(float xPos) + : onLeft(xPos < 0), mass(1.0), X(xPos), x(xPos), vx(0.0) {}; - void updatePhysics( float dT ) - { - x += vx * dT; // posision - vx += (1300 * (X - x) / mass) * dT; // elasticity - vx *= (1 - 4.0 * dT); // air friction + void updatePhysics(float dT) { + x += vx * dT; // posision + vx += (1300 * (X - x) / mass) * dT; // elasticity + vx *= (1 - 4.0 * dT); // air friction + } + + void renderGL() { + glBegin(GL_TRIANGLE_STRIP); + glColor3f(0.0f, 0.1f, 0.3f); + glVertex3f(x, -1.0f, 0.0); + glVertex3f(x, 1.0f, 0.0); + glColor3f(0.1f, 0.2f, 0.6f); + glVertex3f(x, -1.0f, 1.0); + glVertex3f(x, 1.0f, 1.0); + glEnd(); + } + + void bounce(Ball* ball) { + if (onLeft && ball->x < x) { + ball->vx = vx * mass / (mass + ball->mass) + fabsf(ball->vx); + ball->vy = (drand48() - drand48()) * 1.8; + ball->vz = (drand48() - drand48()) * 0.9; + ball->x = x; + } else if (!onLeft && ball->x > x) { + ball->vx = vx * mass / (mass + ball->mass) - fabsf(ball->vx); + ball->vy = (drand48() - drand48()) * 1.8; + ball->vz = (drand48() - drand48()) * 0.9; + ball->x = x; } + } - void renderGL() - { - glBegin( GL_TRIANGLE_STRIP ); - glColor3f( 0.0f, 0.1f, 0.3f ); - glVertex3f( x, -1.0f, 0.0 ); - glVertex3f( x, 1.0f, 0.0 ); - glColor3f( 0.1f, 0.2f, 0.6f ); - glVertex3f( x, -1.0f, 1.0 ); - glVertex3f( x, 1.0f, 1.0 ); - glEnd(); - } + void impulse(float strength) { + if ((onLeft && strength > vx) || (!onLeft && strength < vx)) vx += strength; + } - void bounce( Ball * ball ) - { - if ( onLeft && ball->x < x ) - { - ball->vx = vx * mass / (mass + ball->mass) + fabsf( ball->vx ); - ball->vy = (drand48() - drand48()) * 1.8; - ball->vz = (drand48() - drand48()) * 0.9; - ball->x = x; - } - else if ( !onLeft && ball->x > x ) - { - ball->vx = vx * mass / (mass + ball->mass) - fabsf( ball->vx ); - ball->vy = (drand48() - drand48()) * 1.8; - ball->vz = (drand48() - drand48()) * 0.9; - ball->x = x; - } - } - - void impulse( float strength ) - { - if ( (onLeft && strength > vx) || (!onLeft && strength < vx) ) - vx += strength; - } - - private: - bool onLeft; - float mass, X, x, vx; + private: + bool onLeft; + float mass, X, x, vx; }; +GLAnalyzer3::GLAnalyzer3(QWidget* parent) : Analyzer::Base3D(parent, 15) { + // initialize openGL context before managing GL calls + makeCurrent(); + loadTexture(locate("data", "amarok/data/ball.png"), ballTexture); + loadTexture(locate("data", "amarok/data/grid.png"), gridTexture); -GLAnalyzer3::GLAnalyzer3( QWidget *parent ): -Analyzer::Base3D(parent, 15) -{ - //initialize openGL context before managing GL calls - makeCurrent(); - loadTexture( locate("data","amarok/data/ball.png"), ballTexture ); - loadTexture( locate("data","amarok/data/grid.png"), gridTexture ); + balls.setAutoDelete(true); + leftPaddle = new Paddle(-1.0); + rightPaddle = new Paddle(1.0); + for (int i = 0; i < NUMBER_OF_BALLS; i++) balls.append(new Ball()); - balls.setAutoDelete( true ); - leftPaddle = new Paddle( -1.0 ); - rightPaddle = new Paddle( 1.0 ); - for ( int i = 0; i < NUMBER_OF_BALLS; i++ ) - balls.append( new Ball() ); - - show.colorK = 0.0; - show.gridScrollK = 0.0; - show.gridEnergyK = 0.0; - show.camRot = 0.0; - show.camRoll = 0.0; - show.peakEnergy = 1.0; - frame.silence = true; - frame.energy = 0.0; - frame.dEnergy = 0.0; + show.colorK = 0.0; + show.gridScrollK = 0.0; + show.gridEnergyK = 0.0; + show.camRot = 0.0; + show.camRoll = 0.0; + show.peakEnergy = 1.0; + frame.silence = true; + frame.energy = 0.0; + frame.dEnergy = 0.0; } -GLAnalyzer3::~GLAnalyzer3() -{ - freeTexture( ballTexture ); - freeTexture( gridTexture ); - delete leftPaddle; - delete rightPaddle; - balls.clear(); +GLAnalyzer3::~GLAnalyzer3() { + freeTexture(ballTexture); + freeTexture(gridTexture); + delete leftPaddle; + delete rightPaddle; + balls.clear(); } -void GLAnalyzer3::initializeGL() -{ - // Set a smooth shade model - glShadeModel(GL_SMOOTH); +void GLAnalyzer3::initializeGL() { + // Set a smooth shade model + glShadeModel(GL_SMOOTH); - // Disable depth test (all is drawn 'z-sorted') - glDisable( GL_DEPTH_TEST ); + // Disable depth test (all is drawn 'z-sorted') + glDisable(GL_DEPTH_TEST); - // Set blending function (Alpha addition) - glBlendFunc( GL_SRC_ALPHA, GL_ONE ); + // Set blending function (Alpha addition) + glBlendFunc(GL_SRC_ALPHA, GL_ONE); - // Clear frame with a black background - glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + // Clear frame with a black background + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } -void GLAnalyzer3::resizeGL( int w, int h ) -{ - // Setup screen. We're going to manually do the perspective projection - glViewport( 0, 0, (GLint)w, (GLint)h ); - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - glFrustum( -0.5f, 0.5f, -0.5f, 0.5f, 0.5f, 4.5f ); +void GLAnalyzer3::resizeGL(int w, int h) { + // Setup screen. We're going to manually do the perspective projection + glViewport(0, 0, (GLint)w, (GLint)h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 0.5f, 4.5f); - // Get the aspect ratio of the screen to draw 'circular' particles - float ratio = (float)w / (float)h; - if ( ratio >= 1.0 ) { + // Get the aspect ratio of the screen to draw 'circular' particles + float ratio = (float)w / (float)h; + if (ratio >= 1.0) { unitX = 0.34 / ratio; unitY = 0.34; - } else { + } else { unitX = 0.34; unitY = 0.34 * ratio; - } + } - // Get current timestamp. - timeval tv; - gettimeofday( &tv, NULL ); - show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; + // Get current timestamp. + timeval tv; + gettimeofday(&tv, nullptr); + show.timeStamp = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; } -void GLAnalyzer3::paused() -{ - analyze( Scope() ); -} +void GLAnalyzer3::paused() { analyze(Scope()); } -void GLAnalyzer3::analyze( const Scope &s ) -{ - // compute the dTime since the last call - timeval tv; - gettimeofday( &tv, NULL ); - double currentTime = (double)tv.tv_sec + (double)tv.tv_usec/1000000.0; - show.dT = currentTime - show.timeStamp; - show.timeStamp = currentTime; +void GLAnalyzer3::analyze(const Scope& s) { + // compute the dTime since the last call + timeval tv; + gettimeofday(&tv, nullptr); + double currentTime = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0; + show.dT = currentTime - show.timeStamp; + show.timeStamp = currentTime; - // compute energy integrating frame's spectrum - if ( !s.empty() ) - { + // compute energy integrating frame's spectrum + if (!s.empty()) { int bands = s.size(); - float currentEnergy = 0, - maxValue = 0; + float currentEnergy = 0, maxValue = 0; // integrate spectrum -> energy - for ( int i = 0; i < bands; i++ ) - { - float value = s[i]; - currentEnergy += value; - if ( value > maxValue ) - maxValue = value; + for (int i = 0; i < bands; i++) { + float value = s[i]; + currentEnergy += value; + if (value > maxValue) maxValue = value; } currentEnergy *= 100.0 / (float)bands; // emulate a peak detector: currentEnergy -> peakEnergy (3tau = 30 seconds) - show.peakEnergy = 1.0 + ( show.peakEnergy - 1.0 ) * exp( - show.dT / 10.0 ); - if ( currentEnergy > show.peakEnergy ) - show.peakEnergy = currentEnergy; + show.peakEnergy = 1.0 + (show.peakEnergy - 1.0) * exp(-show.dT / 10.0); + if (currentEnergy > show.peakEnergy) show.peakEnergy = currentEnergy; // check for silence frame.silence = currentEnergy < 0.001; // normalize frame energy against peak energy and compute frame stats currentEnergy /= show.peakEnergy; frame.dEnergy = currentEnergy - frame.energy; frame.energy = currentEnergy; - } else + } else frame.silence = true; - // update the frame - updateGL(); + // update the frame + updateGL(); } -void GLAnalyzer3::paintGL() -{ - // limit max dT to 0.05 and update color and scroll constants - if ( show.dT > 0.05 ) - show.dT = 0.05; - show.colorK += show.dT * 0.4; - if ( show.colorK > 3.0 ) - show.colorK -= 3.0; - show.gridScrollK += 0.2 * show.peakEnergy * show.dT; +void GLAnalyzer3::paintGL() { + // limit max dT to 0.05 and update color and scroll constants + if (show.dT > 0.05) show.dT = 0.05; + show.colorK += show.dT * 0.4; + if (show.colorK > 3.0) show.colorK -= 3.0; + show.gridScrollK += 0.2 * show.peakEnergy * show.dT; - // Switch to MODEL matrix and clear screen - glMatrixMode( GL_MODELVIEW ); - glLoadIdentity(); - glClear( GL_COLOR_BUFFER_BIT ); + // Switch to MODEL matrix and clear screen + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glClear(GL_COLOR_BUFFER_BIT); - // Draw scrolling grid - if ( (show.gridEnergyK > 0.05) || (!frame.silence && frame.dEnergy < -0.3) ) - { - show.gridEnergyK *= exp( -show.dT / 0.1 ); - if ( -frame.dEnergy > show.gridEnergyK ) - show.gridEnergyK = -frame.dEnergy*2.0; - float gridColor[4] = { 0.0, 1.0, 0.6, show.gridEnergyK }; - drawScrollGrid( show.gridScrollK, gridColor ); - } + // Draw scrolling grid + if ((show.gridEnergyK > 0.05) || (!frame.silence && frame.dEnergy < -0.3)) { + show.gridEnergyK *= exp(-show.dT / 0.1); + if (-frame.dEnergy > show.gridEnergyK) + show.gridEnergyK = -frame.dEnergy * 2.0; + float gridColor[4] = {0.0, 1.0, 0.6, show.gridEnergyK}; + drawScrollGrid(show.gridScrollK, gridColor); + } - // Roll camera up/down handling the beat - show.camRot += show.camRoll * show.dT; // posision - show.camRoll -= 400 * show.camRot * show.dT; // elasticity - show.camRoll *= (1 - 2.0 * show.dT); // friction - if ( !frame.silence && frame.dEnergy > 0.4 ) - show.camRoll += show.peakEnergy*2.0; - glRotatef( show.camRoll / 2.0, 1,0,0 ); + // Roll camera up/down handling the beat + show.camRot += show.camRoll * show.dT; // posision + show.camRoll -= 400 * show.camRot * show.dT; // elasticity + show.camRoll *= (1 - 2.0 * show.dT); // friction + if (!frame.silence && frame.dEnergy > 0.4) + show.camRoll += show.peakEnergy * 2.0; + glRotatef(show.camRoll / 2.0, 1, 0, 0); - // Translate the drawing plane - glTranslatef( 0.0f, 0.0f, -1.8f ); + // Translate the drawing plane + glTranslatef(0.0f, 0.0f, -1.8f); - // Draw upper/lower planes and paddles - drawHFace( -1.0 ); - drawHFace( 1.0 ); - leftPaddle->renderGL(); - rightPaddle->renderGL(); + // Draw upper/lower planes and paddles + drawHFace(-1.0); + drawHFace(1.0); + leftPaddle->renderGL(); + rightPaddle->renderGL(); - // Draw Balls - if ( ballTexture ) { - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, ballTexture ); - } else - glDisable( GL_TEXTURE_2D ); - glEnable( GL_BLEND ); - Ball * ball = balls.first(); - for ( ; ball; ball = balls.next() ) - { - float color[3], - angle = show.colorK; + // Draw Balls + if (ballTexture) { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, ballTexture); + } else + glDisable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + Ball* ball = balls.first(); + for (; ball; ball = balls.next()) { + float color[3], angle = show.colorK; // Rotate the color based on 'angle' value [0,3) - if ( angle < 1.0 ) - { - color[ 0 ] = ball->color[ 0 ] * (1 - angle) + ball->color[ 1 ] * angle; - color[ 1 ] = ball->color[ 1 ] * (1 - angle) + ball->color[ 2 ] * angle; - color[ 2 ] = ball->color[ 2 ] * (1 - angle) + ball->color[ 0 ] * angle; - } - else if ( angle < 2.0 ) - { - angle -= 1.0; - color[ 0 ] = ball->color[ 1 ] * (1 - angle) + ball->color[ 2 ] * angle; - color[ 1 ] = ball->color[ 2 ] * (1 - angle) + ball->color[ 0 ] * angle; - color[ 2 ] = ball->color[ 0 ] * (1 - angle) + ball->color[ 1 ] * angle; - } - else - { - angle -= 2.0; - color[ 0 ] = ball->color[ 2 ] * (1 - angle) + ball->color[ 0 ] * angle; - color[ 1 ] = ball->color[ 0 ] * (1 - angle) + ball->color[ 1 ] * angle; - color[ 2 ] = ball->color[ 1 ] * (1 - angle) + ball->color[ 2 ] * angle; + if (angle < 1.0) { + color[0] = ball->color[0] * (1 - angle) + ball->color[1] * angle; + color[1] = ball->color[1] * (1 - angle) + ball->color[2] * angle; + color[2] = ball->color[2] * (1 - angle) + ball->color[0] * angle; + } else if (angle < 2.0) { + angle -= 1.0; + color[0] = ball->color[1] * (1 - angle) + ball->color[2] * angle; + color[1] = ball->color[2] * (1 - angle) + ball->color[0] * angle; + color[2] = ball->color[0] * (1 - angle) + ball->color[1] * angle; + } else { + angle -= 2.0; + color[0] = ball->color[2] * (1 - angle) + ball->color[0] * angle; + color[1] = ball->color[0] * (1 - angle) + ball->color[1] * angle; + color[2] = ball->color[1] * (1 - angle) + ball->color[2] * angle; } // Draw the dot and update its physics also checking at bounces - glColor3fv( color ); - drawDot3s( ball->x, ball->y, ball->z, 1.0 ); - ball->updatePhysics( show.dT ); - if ( ball->x < 0 ) - leftPaddle->bounce( ball ); + glColor3fv(color); + drawDot3s(ball->x, ball->y, ball->z, 1.0); + ball->updatePhysics(show.dT); + if (ball->x < 0) + leftPaddle->bounce(ball); else - rightPaddle->bounce( ball ); - } - glDisable( GL_BLEND ); - glDisable( GL_TEXTURE_2D ); + rightPaddle->bounce(ball); + } + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); - // Update physics of paddles - leftPaddle->updatePhysics( show.dT ); - rightPaddle->updatePhysics( show.dT ); - if ( !frame.silence ) - { - leftPaddle->impulse( frame.energy*3.0 + frame.dEnergy*6.0 ); - rightPaddle->impulse( -frame.energy*3.0 - frame.dEnergy*6.0 ); - } + // Update physics of paddles + leftPaddle->updatePhysics(show.dT); + rightPaddle->updatePhysics(show.dT); + if (!frame.silence) { + leftPaddle->impulse(frame.energy * 3.0 + frame.dEnergy * 6.0); + rightPaddle->impulse(-frame.energy * 3.0 - frame.dEnergy * 6.0); + } } -void GLAnalyzer3::drawDot3s( float x, float y, float z, float size ) -{ - // Circular XY dot drawing functions - float sizeX = size * unitX, - sizeY = size * unitY, - pXm = x - sizeX, - pXM = x + sizeX, - pYm = y - sizeY, - pYM = y + sizeY; - // Draw the Dot - glBegin( GL_QUADS ); - glTexCoord2f( 0, 0 ); // Bottom Left - glVertex3f( pXm, pYm, z ); - glTexCoord2f( 0, 1 ); // Top Left - glVertex3f( pXm, pYM, z ); - glTexCoord2f( 1, 1 ); // Top Right - glVertex3f( pXM, pYM, z ); - glTexCoord2f( 1, 0 ); // Bottom Right - glVertex3f( pXM, pYm, z ); - glEnd(); +void GLAnalyzer3::drawDot3s(float x, float y, float z, float size) { + // Circular XY dot drawing functions + float sizeX = size * unitX, sizeY = size * unitY, pXm = x - sizeX, + pXM = x + sizeX, pYm = y - sizeY, pYM = y + sizeY; + // Draw the Dot + glBegin(GL_QUADS); + glTexCoord2f(0, 0); // Bottom Left + glVertex3f(pXm, pYm, z); + glTexCoord2f(0, 1); // Top Left + glVertex3f(pXm, pYM, z); + glTexCoord2f(1, 1); // Top Right + glVertex3f(pXM, pYM, z); + glTexCoord2f(1, 0); // Bottom Right + glVertex3f(pXM, pYm, z); + glEnd(); - // Shadow XZ drawing functions - float sizeZ = size / 10.0, - pZm = z - sizeZ, - pZM = z + sizeZ, - currentColor[4]; - glGetFloatv( GL_CURRENT_COLOR, currentColor ); - float alpha = currentColor[3], - topSide = (y + 1) / 4, - bottomSide = (1 - y) / 4; - // Draw the top shadow - currentColor[3] = topSide * topSide * alpha; - glColor4fv( currentColor ); - glBegin( GL_QUADS ); - glTexCoord2f( 0, 0 ); // Bottom Left - glVertex3f( pXm, 1, pZm ); - glTexCoord2f( 0, 1 ); // Top Left - glVertex3f( pXm, 1, pZM ); - glTexCoord2f( 1, 1 ); // Top Right - glVertex3f( pXM, 1, pZM ); - glTexCoord2f( 1, 0 ); // Bottom Right - glVertex3f( pXM, 1, pZm ); - glEnd(); - // Draw the bottom shadow - currentColor[3] = bottomSide * bottomSide * alpha; - glColor4fv( currentColor ); - glBegin( GL_QUADS ); - glTexCoord2f( 0, 0 ); // Bottom Left - glVertex3f( pXm, -1, pZm ); - glTexCoord2f( 0, 1 ); // Top Left - glVertex3f( pXm, -1, pZM ); - glTexCoord2f( 1, 1 ); // Top Right - glVertex3f( pXM, -1, pZM ); - glTexCoord2f( 1, 0 ); // Bottom Right - glVertex3f( pXM, -1, pZm ); - glEnd(); + // Shadow XZ drawing functions + float sizeZ = size / 10.0, pZm = z - sizeZ, pZM = z + sizeZ, currentColor[4]; + glGetFloatv(GL_CURRENT_COLOR, currentColor); + float alpha = currentColor[3], topSide = (y + 1) / 4, + bottomSide = (1 - y) / 4; + // Draw the top shadow + currentColor[3] = topSide * topSide * alpha; + glColor4fv(currentColor); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); // Bottom Left + glVertex3f(pXm, 1, pZm); + glTexCoord2f(0, 1); // Top Left + glVertex3f(pXm, 1, pZM); + glTexCoord2f(1, 1); // Top Right + glVertex3f(pXM, 1, pZM); + glTexCoord2f(1, 0); // Bottom Right + glVertex3f(pXM, 1, pZm); + glEnd(); + // Draw the bottom shadow + currentColor[3] = bottomSide * bottomSide * alpha; + glColor4fv(currentColor); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); // Bottom Left + glVertex3f(pXm, -1, pZm); + glTexCoord2f(0, 1); // Top Left + glVertex3f(pXm, -1, pZM); + glTexCoord2f(1, 1); // Top Right + glVertex3f(pXM, -1, pZM); + glTexCoord2f(1, 0); // Bottom Right + glVertex3f(pXM, -1, pZm); + glEnd(); } -void GLAnalyzer3::drawHFace( float y ) -{ - glBegin( GL_TRIANGLE_STRIP ); - glColor3f( 0.0f, 0.1f, 0.2f ); - glVertex3f( -1.0f, y, 0.0 ); - glVertex3f( 1.0f, y, 0.0 ); - glColor3f( 0.1f, 0.6f, 0.5f ); - glVertex3f( -1.0f, y, 2.0 ); - glVertex3f( 1.0f, y, 2.0 ); - glEnd(); +void GLAnalyzer3::drawHFace(float y) { + glBegin(GL_TRIANGLE_STRIP); + glColor3f(0.0f, 0.1f, 0.2f); + glVertex3f(-1.0f, y, 0.0); + glVertex3f(1.0f, y, 0.0); + glColor3f(0.1f, 0.6f, 0.5f); + glVertex3f(-1.0f, y, 2.0); + glVertex3f(1.0f, y, 2.0); + glEnd(); } -void GLAnalyzer3::drawScrollGrid( float scroll, float color[4] ) -{ - if ( !gridTexture ) - return; - glMatrixMode( GL_TEXTURE ); - glLoadIdentity(); - glTranslatef( 0.0, -scroll, 0.0 ); - glMatrixMode( GL_MODELVIEW ); - float backColor[4] = { 1.0, 1.0, 1.0, 0.0 }; - for ( int i = 0; i < 3; i++ ) - backColor[ i ] = color[ i ]; - glEnable( GL_TEXTURE_2D ); - glBindTexture( GL_TEXTURE_2D, gridTexture ); - glEnable( GL_BLEND ); - glBegin( GL_TRIANGLE_STRIP ); - glColor4fv( color ); // top face - glTexCoord2f( 0.0f, 1.0f ); - glVertex3f( -1.0f, 1.0f, -1.0f ); - glTexCoord2f( 1.0f, 1.0f ); - glVertex3f( 1.0f, 1.0f, -1.0f ); - glColor4fv( backColor ); // central points - glTexCoord2f( 0.0f, 0.0f ); - glVertex3f( -1.0f, 0.0f, -3.0f ); - glTexCoord2f( 1.0f, 0.0f ); - glVertex3f( 1.0f, 0.0f, -3.0f ); - glColor4fv( color ); // bottom face - glTexCoord2f( 0.0f, 1.0f ); - glVertex3f( -1.0f, -1.0f, -1.0f ); - glTexCoord2f( 1.0f, 1.0f ); - glVertex3f( 1.0f, -1.0f, -1.0f ); - glEnd(); - glDisable( GL_BLEND ); - glDisable( GL_TEXTURE_2D ); - glMatrixMode( GL_TEXTURE ); - glLoadIdentity(); - glMatrixMode( GL_MODELVIEW ); +void GLAnalyzer3::drawScrollGrid(float scroll, float color[4]) { + if (!gridTexture) return; + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glTranslatef(0.0, -scroll, 0.0); + glMatrixMode(GL_MODELVIEW); + float backColor[4] = {1.0, 1.0, 1.0, 0.0}; + for (int i = 0; i < 3; i++) backColor[i] = color[i]; + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, gridTexture); + glEnable(GL_BLEND); + glBegin(GL_TRIANGLE_STRIP); + glColor4fv(color); // top face + glTexCoord2f(0.0f, 1.0f); + glVertex3f(-1.0f, 1.0f, -1.0f); + glTexCoord2f(1.0f, 1.0f); + glVertex3f(1.0f, 1.0f, -1.0f); + glColor4fv(backColor); // central points + glTexCoord2f(0.0f, 0.0f); + glVertex3f(-1.0f, 0.0f, -3.0f); + glTexCoord2f(1.0f, 0.0f); + glVertex3f(1.0f, 0.0f, -3.0f); + glColor4fv(color); // bottom face + glTexCoord2f(0.0f, 1.0f); + glVertex3f(-1.0f, -1.0f, -1.0f); + glTexCoord2f(1.0f, 1.0f); + glVertex3f(1.0f, -1.0f, -1.0f); + glEnd(); + glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); } -bool GLAnalyzer3::loadTexture( QString fileName, GLuint& textureID ) -{ - //reset texture ID to the default EMPTY value - textureID = 0; +bool GLAnalyzer3::loadTexture(QString fileName, GLuint& textureID) { + // reset texture ID to the default EMPTY value + textureID = 0; - //load image - QImage tmp; - if ( !tmp.load( fileName ) ) - return false; + // load image + QImage tmp; + if (!tmp.load(fileName)) return false; - //convert it to suitable format (flipped RGBA) - QImage texture = QGLWidget::convertToGLFormat( tmp ); - if ( texture.isNull() ) - return false; + // convert it to suitable format (flipped RGBA) + QImage texture = QGLWidget::convertToGLFormat(tmp); + if (texture.isNull()) return false; - //get texture number and bind loaded image to that texture - glGenTextures( 1, &textureID ); - glBindTexture( GL_TEXTURE_2D, textureID ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - glTexImage2D( GL_TEXTURE_2D, 0, 4, texture.width(), texture.height(), - 0, GL_RGBA, GL_UNSIGNED_BYTE, texture.bits() ); - return true; + // get texture number and bind loaded image to that texture + glGenTextures(1, &textureID); + glBindTexture(GL_TEXTURE_2D, textureID); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, 4, texture.width(), texture.height(), 0, + GL_RGBA, GL_UNSIGNED_BYTE, texture.bits()); + return true; } -void GLAnalyzer3::freeTexture( GLuint& textureID ) -{ - if ( textureID > 0 ) - glDeleteTextures( 1, &textureID ); - textureID = 0; +void GLAnalyzer3::freeTexture(GLuint& textureID) { + if (textureID > 0) glDeleteTextures(1, &textureID); + textureID = 0; } #endif diff --git a/src/analyzers/glanalyzer3.h b/src/analyzers/glanalyzer3.h index 7abd7614b..643d01dea 100644 --- a/src/analyzers/glanalyzer3.h +++ b/src/analyzers/glanalyzer3.h @@ -1,9 +1,9 @@ /*************************************************************************** - glanalyzer3.h - description - ------------------- - begin : Feb 16 2004 - copyright : (C) 2004 by Enrico Ros - email : eros.kde@email.it + glanalyzer3.h - description + ------------------- + begin : Feb 16 2004 + copyright : (C) 2004 by Enrico Ros + email : eros.kde@email.it ***************************************************************************/ /*************************************************************************** @@ -29,51 +29,50 @@ class QWidget; class Ball; class Paddle; -class GLAnalyzer3 : public Analyzer::Base3D -{ -public: - GLAnalyzer3(QWidget *); - ~GLAnalyzer3(); - void analyze( const Scope & ); - void paused(); +class GLAnalyzer3 : public Analyzer::Base3D { + public: + GLAnalyzer3(QWidget*); + ~GLAnalyzer3(); + void analyze(const Scope&); + void paused(); -protected: - void initializeGL(); - void resizeGL( int w, int h ); - void paintGL(); + protected: + void initializeGL(); + void resizeGL(int w, int h); + void paintGL(); -private: - struct ShowProperties { - double timeStamp; - double dT; - float colorK; - float gridScrollK; - float gridEnergyK; - float camRot; - float camRoll; - float peakEnergy; - } show; + private: + struct ShowProperties { + double timeStamp; + double dT; + float colorK; + float gridScrollK; + float gridEnergyK; + float camRot; + float camRoll; + float peakEnergy; + } show; - struct FrameProperties { - bool silence; - float energy; - float dEnergy; - } frame; - - static const int NUMBER_OF_BALLS = 16; - - QPtrList balls; - Paddle * leftPaddle, * rightPaddle; - float unitX, unitY; - GLuint ballTexture; - GLuint gridTexture; + struct FrameProperties { + bool silence; + float energy; + float dEnergy; + } frame; - void drawDot3s( float x, float y, float z, float size ); - void drawHFace( float y ); - void drawScrollGrid( float scroll, float color[4] ); + static const int NUMBER_OF_BALLS = 16; - bool loadTexture(QString file, GLuint& textureID); - void freeTexture(GLuint& textureID); + QPtrList balls; + Paddle* leftPaddle, *rightPaddle; + float unitX, unitY; + GLuint ballTexture; + GLuint gridTexture; + + void drawDot3s(float x, float y, float z, float size); + void drawHFace(float y); + void drawScrollGrid(float scroll, float color[4]); + + bool loadTexture(QString file, GLuint& textureID); + void freeTexture(GLuint& textureID); }; #endif diff --git a/src/analyzers/nyancatanalyzer.cpp b/src/analyzers/nyancatanalyzer.cpp index 39ea101a0..4de3f8b3f 100644 --- a/src/analyzers/nyancatanalyzer.cpp +++ b/src/analyzers/nyancatanalyzer.cpp @@ -16,44 +16,43 @@ */ #include "nyancatanalyzer.h" -#include "core/logging.h" #include #include #include +#include "core/arraysize.h" +#include "core/logging.h" + const char* NyanCatAnalyzer::kName = "Nyanalyzer cat"; const float NyanCatAnalyzer::kPixelScale = 0.02f; - NyanCatAnalyzer::NyanCatAnalyzer(QWidget* parent) - : Analyzer::Base(parent, 9), - cat_(":/nyancat.png"), - timer_id_(startTimer(kFrameIntervalMs)), - frame_(0), - current_buffer_(0), - available_rainbow_width_(0), - px_per_frame_(0), - x_offset_(0), - background_brush_(QColor(0x0f, 0x43, 0x73)) -{ - memset(history_, 0, sizeof(history_)); + : Analyzer::Base(parent, 9), + cat_(":/nyancat.png"), + timer_id_(startTimer(kFrameIntervalMs)), + frame_(0), + current_buffer_(0), + available_rainbow_width_(0), + px_per_frame_(0), + x_offset_(0), + background_brush_(QColor(0x0f, 0x43, 0x73)) { + memset(history_, 0, arraysize(history_)); - for (int i=0 ; ispectrum(&s.front()); -} +void NyanCatAnalyzer::transform(Scope& s) { m_fht->spectrum(&s.front()); } void NyanCatAnalyzer::timerEvent(QTimerEvent* e) { if (e->timerId() == timer_id_) { @@ -70,18 +69,19 @@ void NyanCatAnalyzer::resizeEvent(QResizeEvent* e) { buffer_[1] = QPixmap(); available_rainbow_width_ = width() - kCatWidth + kRainbowOverlap; - px_per_frame_ = float(available_rainbow_width_) / (kHistorySize-1) + 1; - x_offset_ = px_per_frame_ * (kHistorySize-1) - available_rainbow_width_; + px_per_frame_ = float(available_rainbow_width_) / (kHistorySize - 1) + 1; + x_offset_ = px_per_frame_ * (kHistorySize - 1) - available_rainbow_width_; } -void NyanCatAnalyzer::analyze(QPainter& p, const Analyzer::Scope& s, bool new_frame) { +void NyanCatAnalyzer::analyze(QPainter& p, const Analyzer::Scope& s, + bool new_frame) { // Discard the second half of the transform const int scope_size = s.size() / 2; if ((new_frame && is_playing_) || (buffer_[0].isNull() && buffer_[1].isNull())) { // Transform the music into rainbows! - for (int band=0 ; band=0 ; --band) { + for (int band = kRainbowBands - 1; band >= 0; --band) { buffer_painter.setPen(colors_[band]); - buffer_painter.drawPolyline(&polyline[band*kHistorySize], kHistorySize); - buffer_painter.drawPolyline(&polyline[band*kHistorySize], kHistorySize); + buffer_painter.drawPolyline(&polyline[band * kHistorySize], + kHistorySize); + buffer_painter.drawPolyline(&polyline[band * kHistorySize], + kHistorySize); } } else { const int last_buffer = current_buffer_; current_buffer_ = (current_buffer_ + 1) % 2; - // We can just shuffle the buffer along a bit and draw the new frame's data. + // We can just shuffle the buffer along a bit and draw the new frame's + // data. QPainter buffer_painter(&buffer_[current_buffer_]); buffer_painter.setRenderHint(QPainter::Antialiasing); - buffer_painter.drawPixmap(0, 0, buffer_[last_buffer], - px_per_frame_, 0, - x_offset_ + available_rainbow_width_ - px_per_frame_, 0); - buffer_painter.fillRect(x_offset_ + available_rainbow_width_ - px_per_frame_, 0, - kCatWidth - kRainbowOverlap + px_per_frame_, height(), - background_brush_); + buffer_painter.drawPixmap( + 0, 0, buffer_[last_buffer], px_per_frame_, 0, + x_offset_ + available_rainbow_width_ - px_per_frame_, 0); + buffer_painter.fillRect( + x_offset_ + available_rainbow_width_ - px_per_frame_, 0, + kCatWidth - kRainbowOverlap + px_per_frame_, height(), + background_brush_); - for (int band=kRainbowBands-1 ; band>=0 ; --band) { + for (int band = kRainbowBands - 1; band >= 0; --band) { buffer_painter.setPen(colors_[band]); - buffer_painter.drawPolyline(&polyline[(band+1)*kHistorySize - 3], 3); + buffer_painter.drawPolyline(&polyline[(band + 1) * kHistorySize - 3], + 3); } } } diff --git a/src/analyzers/nyancatanalyzer.h b/src/analyzers/nyancatanalyzer.h index afe6eec0b..8b16527b8 100644 --- a/src/analyzers/nyancatanalyzer.h +++ b/src/analyzers/nyancatanalyzer.h @@ -25,19 +25,19 @@ class NyanCatAnalyzer : public Analyzer::Base { Q_OBJECT -public: + public: Q_INVOKABLE NyanCatAnalyzer(QWidget* parent); static const char* kName; -protected: + protected: void transform(Scope&); void analyze(QPainter& p, const Analyzer::Scope&, bool new_frame); void timerEvent(QTimerEvent* e); void resizeEvent(QResizeEvent* e); -private: + private: static const int kCatHeight = 21; static const int kCatWidth = 34; static const int kCatFrameCount = 6; @@ -50,7 +50,7 @@ private: static const int kFrameIntervalMs = 150; -private: + private: inline QRect CatSourceRect() const { return QRect(0, kCatHeight * frame_, kCatWidth, kCatHeight); } @@ -60,8 +60,8 @@ private: } inline QRect CatDestRect() const { - return QRect(width() - kCatWidth, (height() - kCatHeight) / 2, - kCatWidth, kCatHeight); + return QRect(width() - kCatWidth, (height() - kCatHeight) / 2, kCatWidth, + kCatHeight); } inline QRect SleepingCatDestRect() const { @@ -69,7 +69,7 @@ private: kCatWidth, kSleepingCatHeight); } -private: + private: // "constants" that get initialised in the constructor float band_scale_[kRainbowBands]; QPen colors_[kRainbowBands]; @@ -102,4 +102,4 @@ private: QBrush background_brush_; }; -#endif // NYANCATANALYZER_H +#endif // NYANCATANALYZER_H diff --git a/src/analyzers/sonogram.cpp b/src/analyzers/sonogram.cpp index fbc99ecef..b7e290714 100644 --- a/src/analyzers/sonogram.cpp +++ b/src/analyzers/sonogram.cpp @@ -15,76 +15,66 @@ #include -const char* Sonogram::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Sonogram"); +const char* Sonogram::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Sonogram"); -Sonogram::Sonogram(QWidget *parent) : - Analyzer::Base(parent, 9) -{ -} +Sonogram::Sonogram(QWidget* parent) : Analyzer::Base(parent, 9) {} +Sonogram::~Sonogram() {} -Sonogram::~Sonogram() -{ -} +void Sonogram::resizeEvent(QResizeEvent* e) { + QWidget::resizeEvent(e); - -void Sonogram::resizeEvent(QResizeEvent *e) -{ - QWidget::resizeEvent(e); - -//only for gcc < 4.0 -#if !( __GNUC__ > 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ >= 0 ) ) - resizeForBands(height() < 128 ? 128 : height()); +// only for gcc < 4.0 +#if !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 0)) + resizeForBands(height() < 128 ? 128 : height()); #endif - canvas_ = QPixmap(size()); - canvas_.fill(palette().color(QPalette::Background)); + canvas_ = QPixmap(size()); + canvas_.fill(palette().color(QPalette::Background)); } - -void Sonogram::analyze(QPainter& p, const Scope &s, bool new_frame) -{ - int x = width() - 1; - QColor c; - - QPainter canvas_painter(&canvas_); - canvas_painter.drawPixmap(0, 0, canvas_, 1, 0, x, -1); - - Scope::const_iterator it = s.begin(), end = s.end(); - for (int y = height() - 1; y;) { - if (it >= end || *it < .005) - c = palette().color(QPalette::Background); - else if (*it < .05) - c.setHsv(95, 255, 255 - int(*it * 4000.0)); - else if (*it < 1.0) - c.setHsv(95 - int(*it * 90.0), 255, 255); - else - c = Qt::red; - - canvas_painter.setPen(c); - canvas_painter.drawPoint(x, y--); - - if (it < end) - ++it; - } - - canvas_painter.end(); - +void Sonogram::analyze(QPainter& p, const Scope& s, bool new_frame) { + if (!new_frame) { p.drawPixmap(0, 0, canvas_); + return; + } + + int x = width() - 1; + QColor c; + + QPainter canvas_painter(&canvas_); + canvas_painter.drawPixmap(0, 0, canvas_, 1, 0, x, -1); + + Scope::const_iterator it = s.begin(), end = s.end(); + for (int y = height() - 1; y;) { + if (it >= end || *it < .005) + c = palette().color(QPalette::Background); + else if (*it < .05) + c.setHsv(95, 255, 255 - int(*it * 4000.0)); + else if (*it < 1.0) + c.setHsv(95 - int(*it * 90.0), 255, 255); + else + c = Qt::red; + + canvas_painter.setPen(c); + canvas_painter.drawPoint(x, y--); + + if (it < end) ++it; + } + + canvas_painter.end(); + + p.drawPixmap(0, 0, canvas_); } - -void Sonogram::transform(Scope &scope) -{ - float *front = static_cast(&scope.front()); - m_fht->power2(front); - m_fht->scale(front, 1.0 / 256); - scope.resize( m_fht->size() / 2 ); +void Sonogram::transform(Scope& scope) { + float* front = static_cast(&scope.front()); + m_fht->power2(front); + m_fht->scale(front, 1.0 / 256); + scope.resize(m_fht->size() / 2); } - -void Sonogram::demo(QPainter& p) -{ - analyze(p, Scope(m_fht->size(), 0), new_frame_); +void Sonogram::demo(QPainter& p) { + analyze(p, Scope(m_fht->size(), 0), new_frame_); } - diff --git a/src/analyzers/sonogram.h b/src/analyzers/sonogram.h index dbd2a984a..35ce753cc 100644 --- a/src/analyzers/sonogram.h +++ b/src/analyzers/sonogram.h @@ -20,22 +20,21 @@ @author Melchior FRANZ */ -class Sonogram : public Analyzer::Base -{ +class Sonogram : public Analyzer::Base { Q_OBJECT -public: - Q_INVOKABLE Sonogram(QWidget*); - ~Sonogram(); + public: + Q_INVOKABLE Sonogram(QWidget*); + ~Sonogram(); - static const char* kName; + static const char* kName; -protected: - void analyze(QPainter& p, const Scope&, bool new_frame); - void transform(Scope&); - void demo(QPainter& p); - void resizeEvent(QResizeEvent*); + protected: + void analyze(QPainter& p, const Scope&, bool new_frame); + void transform(Scope&); + void demo(QPainter& p); + void resizeEvent(QResizeEvent*); - QPixmap canvas_; + QPixmap canvas_; }; #endif diff --git a/src/analyzers/turbine.cpp b/src/analyzers/turbine.cpp index ea45de137..5b00cae94 100644 --- a/src/analyzers/turbine.cpp +++ b/src/analyzers/turbine.cpp @@ -12,66 +12,69 @@ #include "turbine.h" -const char* TurbineAnalyzer::kName = QT_TRANSLATE_NOOP("AnalyzerContainer", "Turbine"); +const char* TurbineAnalyzer::kName = + QT_TRANSLATE_NOOP("AnalyzerContainer", "Turbine"); -void TurbineAnalyzer::analyze( QPainter& p, const Scope &scope, bool new_frame) -{ - float h; - const uint hd2 = height() / 2; - const uint MAX_HEIGHT = hd2 - 1; +void TurbineAnalyzer::analyze(QPainter& p, const Scope& scope, bool new_frame) { + if (!new_frame) { + p.drawPixmap(0, 0, canvas_); + return; + } - for( uint i = 0, x = 0, y; i < BAND_COUNT; ++i, x += COLUMN_WIDTH+1 ) - { - h = log10( scope[i]*256.0 ) * F * 0.5; + float h; + const uint hd2 = height() / 2; + const uint MAX_HEIGHT = hd2 - 1; - if( h > MAX_HEIGHT ) - h = MAX_HEIGHT; + QPainter canvas_painter(&canvas_); + canvas_.fill(palette().color(QPalette::Background)); - if( h > bar_height[i] ) - { - bar_height[i] = h; + for (uint i = 0, x = 0, y; i < BAND_COUNT; ++i, x += COLUMN_WIDTH + 1) { + h = log10(scope[i] * 256.0) * F * 0.5; - if( h > peak_height[i] ) - { - peak_height[i] = h; - peak_speed[i] = 0.01; - } - else goto peak_handling; - } - else - { - if( bar_height[i] > 0.0 ) - { - bar_height[i] -= K_barHeight; //1.4 - if( bar_height[i] < 0.0 ) bar_height[i] = 0.0; - } + if (h > MAX_HEIGHT) h = MAX_HEIGHT; - peak_handling: + if (h > bar_height[i]) { + bar_height[i] = h; - if( peak_height[i] > 0.0 ) - { - peak_height[i] -= peak_speed[i]; - peak_speed[i] *= F_peakSpeed; //1.12 + if (h > peak_height[i]) { + peak_height[i] = h; + peak_speed[i] = 0.01; + } else + goto peak_handling; + } else { + if (bar_height[i] > 0.0) { + bar_height[i] -= K_barHeight; // 1.4 + if (bar_height[i] < 0.0) bar_height[i] = 0.0; + } - if( peak_height[i] < bar_height[i] ) peak_height[i] = bar_height[i]; - if( peak_height[i] < 0.0 ) peak_height[i] = 0.0; - } - } + peak_handling: + if (peak_height[i] > 0.0) { + peak_height[i] -= peak_speed[i]; + peak_speed[i] *= F_peakSpeed; // 1.12 - y = hd2 - uint(bar_height[i]); - p.drawPixmap(x+1, y, barPixmap, 0, y, -1, -1); - p.drawPixmap(x+1, hd2, barPixmap, 0, int(bar_height[i]), -1, -1); - - p.setPen( palette().color(QPalette::Highlight) ); - if (bar_height[i] > 0) - p.drawRect( x, y, COLUMN_WIDTH-1, (int)bar_height[i]*2 -1 ); - - const uint x2 = x+COLUMN_WIDTH-1; - p.setPen( palette().color(QPalette::Base) ); - y = hd2 - uint(peak_height[i]); - p.drawLine( x, y, x2, y ); - y = hd2 + uint(peak_height[i]); - p.drawLine( x, y, x2, y ); + if (peak_height[i] < bar_height[i]) peak_height[i] = bar_height[i]; + if (peak_height[i] < 0.0) peak_height[i] = 0.0; + } } + + y = hd2 - uint(bar_height[i]); + canvas_painter.drawPixmap(x + 1, y, barPixmap, 0, y, -1, -1); + canvas_painter.drawPixmap(x + 1, hd2, barPixmap, 0, int(bar_height[i]), -1, + -1); + + canvas_painter.setPen(palette().color(QPalette::Highlight)); + if (bar_height[i] > 0) + canvas_painter.drawRect(x, y, COLUMN_WIDTH - 1, + (int)bar_height[i] * 2 - 1); + + const uint x2 = x + COLUMN_WIDTH - 1; + canvas_painter.setPen(palette().color(QPalette::Base)); + y = hd2 - uint(peak_height[i]); + canvas_painter.drawLine(x, y, x2, y); + y = hd2 + uint(peak_height[i]); + canvas_painter.drawLine(x, y, x2, y); + } + + p.drawPixmap(0, 0, canvas_); } diff --git a/src/analyzers/turbine.h b/src/analyzers/turbine.h index 819f1dd54..1175bff1f 100644 --- a/src/analyzers/turbine.h +++ b/src/analyzers/turbine.h @@ -11,15 +11,14 @@ #include "boomanalyzer.h" -class TurbineAnalyzer : public BoomAnalyzer -{ +class TurbineAnalyzer : public BoomAnalyzer { Q_OBJECT - public: - Q_INVOKABLE TurbineAnalyzer( QWidget *parent ) : BoomAnalyzer( parent ) {} + public: + Q_INVOKABLE TurbineAnalyzer(QWidget* parent) : BoomAnalyzer(parent) {} - void analyze( QPainter& p, const Scope&, bool new_frame); + void analyze(QPainter& p, const Scope&, bool new_frame); - static const char* kName; + static const char* kName; }; #endif diff --git a/src/config.h.in b/src/config.h.in index 56a9bcee8..1352bb7ec 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -29,24 +29,20 @@ #cmakedefine HAVE_DROPBOX #cmakedefine HAVE_GIO #cmakedefine HAVE_GOOGLE_DRIVE -#cmakedefine HAVE_IMOBILEDEVICE -#cmakedefine HAVE_LIBARCHIVE #cmakedefine HAVE_LIBGPOD #cmakedefine HAVE_LIBLASTFM #cmakedefine HAVE_LIBLASTFM1 #cmakedefine HAVE_LIBMTP +#cmakedefine HAVE_LIBPULSE #cmakedefine HAVE_MOODBAR #cmakedefine HAVE_QCA #cmakedefine HAVE_SKYDRIVE #cmakedefine HAVE_SPARKLE #cmakedefine HAVE_SPOTIFY_DOWNLOADER -#cmakedefine HAVE_UBUNTU_ONE +#cmakedefine HAVE_VK #cmakedefine HAVE_WIIMOTEDEV -#cmakedefine IMOBILEDEVICE_USES_UDIDS #cmakedefine TAGLIB_HAS_OPUS #cmakedefine USE_INSTALL_PREFIX #cmakedefine USE_SYSTEM_PROJECTM -#cmakedefine USE_STD_UNORDERED_MAP -#cmakedefine HAVE_LAMBDAS #endif // CONFIG_H_IN diff --git a/src/core/appearance.cpp b/src/core/appearance.cpp index f9afdf9de..13c1c7525 100644 --- a/src/core/appearance.cpp +++ b/src/core/appearance.cpp @@ -27,24 +27,21 @@ const char* Appearance::kBackgroundColor = "background-color"; const QPalette Appearance::kDefaultPalette = QPalette(); -Appearance::Appearance(QObject* parent) - : QObject(parent) -{ +Appearance::Appearance(QObject* parent) : QObject(parent) { QSettings s; s.beginGroup(kSettingsGroup); QPalette p = QApplication::palette(); - background_color_ = s.value(kBackgroundColor, - p.color(QPalette::WindowText)).value(); - foreground_color_ = s.value(kForegroundColor, - p.color(QPalette::Window)).value(); + background_color_ = + s.value(kBackgroundColor, p.color(QPalette::WindowText)).value(); + foreground_color_ = + s.value(kForegroundColor, p.color(QPalette::Window)).value(); } void Appearance::LoadUserTheme() { QSettings s; s.beginGroup(kSettingsGroup); bool use_a_custom_color_set = s.value(kUseCustomColorSet).toBool(); - if (!use_a_custom_color_set) - return; + if (!use_a_custom_color_set) return; ChangeForegroundColor(foreground_color_); ChangeBackgroundColor(background_color_); diff --git a/src/core/appearance.h b/src/core/appearance.h index 31fffc677..e7fb36d0d 100644 --- a/src/core/appearance.h +++ b/src/core/appearance.h @@ -22,24 +22,24 @@ #include class Appearance : public QObject { - public: - Appearance(QObject* parent = NULL); - // Load the user preferred theme, which could the default system theme or a - // custom set of colors that user has chosen - void LoadUserTheme(); - void ResetToSystemDefaultTheme(); - void ChangeForegroundColor(const QColor& color); - void ChangeBackgroundColor(const QColor& color); + public: + Appearance(QObject* parent = nullptr); + // Load the user preferred theme, which could the default system theme or a + // custom set of colors that user has chosen + void LoadUserTheme(); + void ResetToSystemDefaultTheme(); + void ChangeForegroundColor(const QColor& color); + void ChangeBackgroundColor(const QColor& color); - static const char* kSettingsGroup; - static const char* kUseCustomColorSet; - static const char* kForegroundColor; - static const char* kBackgroundColor; - static const QPalette kDefaultPalette; + static const char* kSettingsGroup; + static const char* kUseCustomColorSet; + static const char* kForegroundColor; + static const char* kBackgroundColor; + static const QPalette kDefaultPalette; - private: - QColor foreground_color_; - QColor background_color_; + private: + QColor foreground_color_; + QColor background_color_; }; -#endif // APPEARANCE_H +#endif // APPEARANCE_H diff --git a/src/core/application.cpp b/src/core/application.cpp index 45d96b749..cb06b4dd8 100644 --- a/src/core/application.cpp +++ b/src/core/application.cpp @@ -39,38 +39,42 @@ #include "podcasts/podcastdownloader.h" #include "podcasts/podcastupdater.h" +#ifdef HAVE_LIBLASTFM +#include "internet/lastfmservice.h" +#endif // HAVE_LIBLASTFM + #ifdef HAVE_MOODBAR -# include "moodbar/moodbarcontroller.h" -# include "moodbar/moodbarloader.h" +#include "moodbar/moodbarcontroller.h" +#include "moodbar/moodbarloader.h" #endif bool Application::kIsPortable = false; Application::Application(QObject* parent) - : QObject(parent), - tag_reader_client_(NULL), - database_(NULL), - album_cover_loader_(NULL), - playlist_backend_(NULL), - podcast_backend_(NULL), - appearance_(NULL), - cover_providers_(NULL), - task_manager_(NULL), - player_(NULL), - playlist_manager_(NULL), - current_art_loader_(NULL), - global_search_(NULL), - internet_model_(NULL), - library_(NULL), - device_manager_(NULL), - podcast_updater_(NULL), - podcast_downloader_(NULL), - gpodder_sync_(NULL), - moodbar_loader_(NULL), - moodbar_controller_(NULL), - network_remote_(NULL), - network_remote_helper_(NULL) -{ + : QObject(parent), + tag_reader_client_(nullptr), + database_(nullptr), + album_cover_loader_(nullptr), + playlist_backend_(nullptr), + podcast_backend_(nullptr), + appearance_(nullptr), + cover_providers_(nullptr), + task_manager_(nullptr), + player_(nullptr), + playlist_manager_(nullptr), + current_art_loader_(nullptr), + global_search_(nullptr), + internet_model_(nullptr), + library_(nullptr), + device_manager_(nullptr), + podcast_updater_(nullptr), + podcast_downloader_(nullptr), + gpodder_sync_(nullptr), + moodbar_loader_(nullptr), + moodbar_controller_(nullptr), + network_remote_(nullptr), + network_remote_helper_(nullptr), + scrobbler_(nullptr) { tag_reader_client_ = new TagReaderClient(this); MoveToNewThread(tag_reader_client_); tag_reader_client_->Start(); @@ -111,11 +115,16 @@ Application::Application(QObject* parent) MoveToNewThread(network_remote_); // This must be before libraray_->Init(); - // In the constructor the helper waits for the signal PlaylistManagerInitialized + // In the constructor the helper waits for the signal + // PlaylistManagerInitialized // to start the remote. Without the playlist manager clementine can // crash when a client connects before the manager is initialized! network_remote_helper_ = new NetworkRemoteHelper(this); +#ifdef HAVE_LIBLASTFM + scrobbler_ = new LastFMService(this, this); +#endif // HAVE_LIBLASTFM + library_->Init(); DoInAMinuteOrSo(database_, SLOT(DoBackup())); @@ -125,17 +134,18 @@ Application::~Application() { // It's important that the device manager is deleted before the database. // Deleting the database deletes all objects that have been created in its // thread, including some device library backends. - delete device_manager_; device_manager_ = NULL; + delete device_manager_; + device_manager_ = nullptr; - foreach (QObject* object, objects_in_threads_) { + for (QObject* object : objects_in_threads_) { object->deleteLater(); } - foreach (QThread* thread, threads_) { + for (QThread* thread : threads_) { thread->quit(); } - foreach (QThread* thread, threads_) { + for (QThread* thread : threads_) { thread->wait(); } } @@ -150,14 +160,12 @@ void Application::MoveToNewThread(QObject* object) { } void Application::MoveToThread(QObject* object, QThread* thread) { - object->setParent(NULL); + object->setParent(nullptr); object->moveToThread(thread); objects_in_threads_ << object; } -void Application::AddError(const QString& message) { - emit ErrorAdded(message); -} +void Application::AddError(const QString& message) { emit ErrorAdded(message); } QString Application::language_without_region() const { const int underscore = language_name_.indexOf('_'); @@ -171,13 +179,9 @@ LibraryBackend* Application::library_backend() const { return library()->backend(); } -LibraryModel* Application::library_model() const { - return library()->model(); -} +LibraryModel* Application::library_model() const { return library()->model(); } -void Application::ReloadSettings() { - emit SettingsChanged(); -} +void Application::ReloadSettings() { emit SettingsChanged(); } void Application::OpenSettingsDialogAtPage(SettingsDialog::Page page) { emit SettingsDialogRequested(page); diff --git a/src/core/application.h b/src/core/application.h index f414b12b5..27fdc73ea 100644 --- a/src/core/application.h +++ b/src/core/application.h @@ -44,21 +44,22 @@ class PodcastDownloader; class PlaylistManager; class PodcastBackend; class PodcastUpdater; +class Scrobbler; class TagReaderClient; class TaskManager; - class Application : public QObject { Q_OBJECT -public: + public: static bool kIsPortable; - Application(QObject* parent = NULL); + Application(QObject* parent = nullptr); ~Application(); const QString& language_name() const { return language_name_; } - // Same as language_name, but remove the region code at the end if there is one + // Same as language_name, but remove the region code at the end if there is + // one QString language_without_region() const; void set_language_name(const QString& name) { language_name_ = name; } @@ -83,7 +84,10 @@ public: MoodbarLoader* moodbar_loader() const { return moodbar_loader_; } MoodbarController* moodbar_controller() const { return moodbar_controller_; } NetworkRemote* network_remote() const { return network_remote_; } - NetworkRemoteHelper* network_remote_helper() const { return network_remote_helper_; } + NetworkRemoteHelper* network_remote_helper() const { + return network_remote_helper_; + } + Scrobbler* scrobbler() const { return scrobbler_; } LibraryBackend* library_backend() const; LibraryModel* library_model() const; @@ -91,7 +95,7 @@ public: void MoveToNewThread(QObject* object); void MoveToThread(QObject* object, QThread* thread); -public slots: + public slots: void AddError(const QString& message); void ReloadSettings(); void OpenSettingsDialogAtPage(SettingsDialog::Page page); @@ -101,7 +105,7 @@ signals: void SettingsChanged(); void SettingsDialogRequested(SettingsDialog::Page page); -private: + private: QString language_name_; TagReaderClient* tag_reader_client_; @@ -126,9 +130,10 @@ private: MoodbarController* moodbar_controller_; NetworkRemote* network_remote_; NetworkRemoteHelper* network_remote_helper_; + Scrobbler* scrobbler_; QList objects_in_threads_; QList threads_; }; -#endif // APPLICATION_H +#endif // APPLICATION_H diff --git a/src/core/backgroundstreams.cpp b/src/core/backgroundstreams.cpp index 347b95908..8fd961582 100644 --- a/src/core/backgroundstreams.cpp +++ b/src/core/backgroundstreams.cpp @@ -9,17 +9,14 @@ const char* BackgroundStreams::kSettingsGroup = "BackgroundStreams"; const char* BackgroundStreams::kHypnotoadUrl = "hypnotoad:///"; -const char* BackgroundStreams::kRainUrl = "http://data.clementine-player.org/rainymood"; +const char* BackgroundStreams::kRainUrl = + "http://data.clementine-player.org/rainymood"; const char* BackgroundStreams::kEnterpriseUrl = "enterprise:///"; BackgroundStreams::BackgroundStreams(EngineBase* engine, QObject* parent) - : QObject(parent), - engine_(engine) { -} + : QObject(parent), engine_(engine) {} -BackgroundStreams::~BackgroundStreams() { - SaveStreams(); -} +BackgroundStreams::~BackgroundStreams() { SaveStreams(); } void BackgroundStreams::LoadStreams() { QSettings s; @@ -39,8 +36,7 @@ void BackgroundStreams::LoadStreams() { int size = s.beginReadArray("streams"); for (int i = 0; i < size; ++i) { s.setArrayIndex(i); - AddStream(s.value("name").toString(), - s.value("url").toUrl(), + AddStream(s.value("name").toString(), s.value("url").toUrl(), s.value("volume").toInt()); } @@ -63,8 +59,7 @@ void BackgroundStreams::SaveStreams() { s.endArray(); } -void BackgroundStreams::AddStream(const QString& name, - const QUrl& url, +void BackgroundStreams::AddStream(const QString& name, const QUrl& url, int volume) { if (streams_.contains(name)) { return; @@ -134,7 +129,8 @@ bool BackgroundStreams::IsPlaying(const QString& name) const { void BackgroundStreams::AddAction(const QString& name, QAction* action) { if (!streams_.contains(name)) { - qLog(Error) << "Tried to add action for stream" << name << "which doesn't exist"; + qLog(Error) << "Tried to add action for stream" << name + << "which doesn't exist"; return; } @@ -156,9 +152,9 @@ void BackgroundStreams::StreamActionDestroyed() { return; } - foreach (Stream* stream, streams_.values()) { + for (Stream* stream : streams_.values()) { if (stream->action == action) { - stream->action = NULL; + stream->action = nullptr; } } } @@ -169,7 +165,7 @@ void BackgroundStreams::StreamActionToggled(bool checked) { return; } - foreach (Stream* stream, streams_.values()) { + for (Stream* stream : streams_.values()) { if (stream->action == action) { EnableStream(stream->name, checked); } diff --git a/src/core/backgroundstreams.h b/src/core/backgroundstreams.h index 942f40dfa..6bd03bba9 100644 --- a/src/core/backgroundstreams.h +++ b/src/core/backgroundstreams.h @@ -13,7 +13,7 @@ class QAction; class BackgroundStreams : public QObject { Q_OBJECT public: - explicit BackgroundStreams(EngineBase* engine, QObject* parent = 0); + explicit BackgroundStreams(EngineBase* engine, QObject* parent = nullptr); ~BackgroundStreams(); void LoadStreams(); @@ -29,7 +29,7 @@ class BackgroundStreams : public QObject { void AddAction(const QString& name, QAction* action); - signals: +signals: void StreamStarted(const QString& name); void StreamStopped(const QString& name); @@ -39,7 +39,7 @@ class BackgroundStreams : public QObject { private: struct Stream { - Stream() : volume(0), id(0), action(NULL) {} + Stream() : volume(0), id(0), action(nullptr) {} QString name; QUrl url; diff --git a/src/core/boundfuturewatcher.h b/src/core/boundfuturewatcher.h index cd0a60d7a..ba238ad84 100644 --- a/src/core/boundfuturewatcher.h +++ b/src/core/boundfuturewatcher.h @@ -8,13 +8,10 @@ template class BoundFutureWatcher : public QFutureWatcher, boost::noncopyable { public: - BoundFutureWatcher(const D& data, QObject* parent = 0) - : QFutureWatcher(parent), - data_(data) { - } + BoundFutureWatcher(const D& data, QObject* parent = nullptr) + : QFutureWatcher(parent), data_(data) {} - ~BoundFutureWatcher() { - } + ~BoundFutureWatcher() {} const D& data() const { return data_; } diff --git a/src/core/cachedlist.h b/src/core/cachedlist.h index 9f0c4c828..ca81c184e 100644 --- a/src/core/cachedlist.h +++ b/src/core/cachedlist.h @@ -23,7 +23,7 @@ template class CachedList { -public: + public: // Use a CachedList when you want to download and save a list of things from a // remote service, updating it only periodically. // T must be a registered metatype and must support being stored in @@ -34,10 +34,9 @@ public: CachedList(const QString& settings_group, const QString& name, int cache_duration_secs) - : settings_group_(settings_group), - name_(name), - cache_duration_secs_(cache_duration_secs) { - } + : settings_group_(settings_group), + name_(name), + cache_duration_secs_(cache_duration_secs) {} void Load() { QSettings s; @@ -47,7 +46,7 @@ public: data_.clear(); const int count = s.beginReadArray(name_ + "_data"); - for (int i=0 ; i(); } @@ -61,7 +60,7 @@ public: s.setValue("last_refreshed_" + name_, last_updated_); s.beginWriteArray(name_ + "_data", data_.size()); - for (int i=0 ; i cache_duration_secs_; + last_updated_.secsTo(QDateTime::currentDateTime()) > + cache_duration_secs_; } - void Sort() { - qSort(data_); - } + void Sort() { qSort(data_); } const ListType& Data() const { return data_; } operator ListType() const { return data_; } @@ -91,7 +89,7 @@ public: const_iterator begin() const { return data_.begin(); } const_iterator end() const { return data_.end(); } -private: + private: const QString settings_group_; const QString name_; const int cache_duration_secs_; @@ -100,4 +98,4 @@ private: ListType data_; }; -#endif // CACHEDLIST_H +#endif // CACHEDLIST_H diff --git a/src/core/commandlineoptions.cpp b/src/core/commandlineoptions.cpp index 9d7ab9231..af8b8a2f5 100644 --- a/src/core/commandlineoptions.cpp +++ b/src/core/commandlineoptions.cpp @@ -28,7 +28,6 @@ #include #include - const char* CommandlineOptions::kHelpText = "%1: clementine [%2] [%3]\n" "\n" @@ -62,23 +61,21 @@ const char* CommandlineOptions::kHelpText = " --log-levels %29\n" " --version %30\n"; -const char* CommandlineOptions::kVersionText = - "Clementine %1"; +const char* CommandlineOptions::kVersionText = "Clementine %1"; CommandlineOptions::CommandlineOptions(int argc, char** argv) - : argc_(argc), - argv_(argv), - url_list_action_(UrlList_Append), - player_action_(Player_None), - set_volume_(-1), - volume_modifier_(0), - seek_to_(-1), - seek_by_(0), - play_track_at_(-1), - show_osd_(false), - toggle_pretty_osd_(false), - log_levels_(logging::kDefaultLogLevels) -{ + : argc_(argc), + argv_(argv), + url_list_action_(UrlList_None), + player_action_(Player_None), + set_volume_(-1), + volume_modifier_(0), + seek_to_(-1), + seek_by_(0), + play_track_at_(-1), + show_osd_(false), + toggle_pretty_osd_(false), + log_levels_(logging::kDefaultLogLevels) { #ifdef Q_OS_DARWIN // Remove -psn_xxx option that Mac passes when opened from Finder. RemoveArg("-psn", 1); @@ -93,7 +90,7 @@ void CommandlineOptions::RemoveArg(const QString& starts_with, int count) { QString opt(argv_[i]); if (opt.startsWith(starts_with)) { for (int j = i; j < argc_ - count + 1; ++j) { - argv_[j] = argv_[j+count]; + argv_[j] = argv_[j + count]; } argc_ -= count; break; @@ -103,100 +100,130 @@ void CommandlineOptions::RemoveArg(const QString& starts_with, int count) { bool CommandlineOptions::Parse() { static const struct option kOptions[] = { - {"help", no_argument, 0, 'h'}, - - {"play", no_argument, 0, 'p'}, - {"play-pause", no_argument, 0, 't'}, - {"pause", no_argument, 0, 'u'}, - {"stop", no_argument, 0, 's'}, - {"previous", no_argument, 0, 'r'}, - {"next", no_argument, 0, 'f'}, - {"volume", required_argument, 0, 'v'}, - {"volume-up", no_argument, 0, VolumeUp}, - - {"volume-down", no_argument, 0, VolumeDown}, - {"volume-increase-by", required_argument, 0, VolumeIncreaseBy}, - {"volume-decrease-by", required_argument, 0, VolumeDecreaseBy}, - {"seek-to", required_argument, 0, SeekTo}, - {"seek-by", required_argument, 0, SeekBy}, - {"restart-or-previous", no_argument, 0, RestartOrPrevious}, - - {"append", no_argument, 0, 'a'}, - {"load", no_argument, 0, 'l'}, - {"play-track", required_argument, 0, 'k'}, - {"show-osd", no_argument, 0, 'o'}, - {"toggle-pretty-osd", no_argument, 0, 'y'}, - {"language", required_argument, 0, 'g'}, - {"quiet", no_argument, 0, Quiet}, - {"verbose", no_argument, 0, Verbose}, - {"log-levels", required_argument, 0, LogLevels}, - {"version", no_argument, 0, Version}, - - {0, 0, 0, 0} - }; + {"help", no_argument, 0, 'h'}, + {"play", no_argument, 0, 'p'}, + {"play-pause", no_argument, 0, 't'}, + {"pause", no_argument, 0, 'u'}, + {"stop", no_argument, 0, 's'}, + {"previous", no_argument, 0, 'r'}, + {"next", no_argument, 0, 'f'}, + {"volume", required_argument, 0, 'v'}, + {"volume-up", no_argument, 0, VolumeUp}, + {"volume-down", no_argument, 0, VolumeDown}, + {"volume-increase-by", required_argument, 0, VolumeIncreaseBy}, + {"volume-decrease-by", required_argument, 0, VolumeDecreaseBy}, + {"seek-to", required_argument, 0, SeekTo}, + {"seek-by", required_argument, 0, SeekBy}, + {"restart-or-previous", no_argument, 0, RestartOrPrevious}, + {"append", no_argument, 0, 'a'}, + {"load", no_argument, 0, 'l'}, + {"play-track", required_argument, 0, 'k'}, + {"show-osd", no_argument, 0, 'o'}, + {"toggle-pretty-osd", no_argument, 0, 'y'}, + {"language", required_argument, 0, 'g'}, + {"quiet", no_argument, 0, Quiet}, + {"verbose", no_argument, 0, Verbose}, + {"log-levels", required_argument, 0, LogLevels}, + {"version", no_argument, 0, Version}, + {0, 0, 0, 0}}; // Parse the arguments bool ok = false; forever { - int c = getopt_long(argc_, argv_, "hptusrfv:alk:oyg:", kOptions, NULL); + int c = getopt_long(argc_, argv_, "hptusrfv:alk:oyg:", kOptions, nullptr); // End of the options - if (c == -1) - break; + if (c == -1) break; switch (c) { case 'h': { - QString translated_help_text = QString(kHelpText).arg( - tr("Usage"), tr("options"), tr("URL(s)"), tr("Player options"), - tr("Start the playlist currently playing"), - tr("Play if stopped, pause if playing"), - tr("Pause playback"), - tr("Stop playback"), - tr("Skip backwards in playlist")).arg( - tr("Skip forwards in playlist"), - tr("Set the volume to percent"), - tr("Increase the volume by 4%"), - tr("Decrease the volume by 4%"), - tr("Increase the volume by percent"), - tr("Decrease the volume by percent")).arg( - tr("Seek the currently playing track to an absolute position"), - tr("Seek the currently playing track by a relative amount"), - tr("Restart the track, or play the previous track if within 8 seconds of start."), - tr("Playlist options"), - tr("Append files/URLs to the playlist"), - tr("Loads files/URLs, replacing current playlist"), - tr("Play the th track in the playlist")).arg( - tr("Other options"), - tr("Display the on-screen-display"), - tr("Toggle visibility for the pretty on-screen-display"), - tr("Change the language"), - tr("Equivalent to --log-levels *:1"), - tr("Equivalent to --log-levels *:3"), - tr("Comma separated list of class:level, level is 0-3")).arg( - tr("Print out version information")); + QString translated_help_text = + QString(kHelpText) + .arg(tr("Usage"), tr("options"), tr("URL(s)"), + tr("Player options"), + tr("Start the playlist currently playing"), + tr("Play if stopped, pause if playing"), + tr("Pause playback"), tr("Stop playback"), + tr("Skip backwards in playlist")) + .arg(tr("Skip forwards in playlist"), + tr("Set the volume to percent"), + tr("Increase the volume by 4%"), + tr("Decrease the volume by 4%"), + tr("Increase the volume by percent"), + tr("Decrease the volume by percent")) + .arg(tr("Seek the currently playing track to an absolute " + "position"), + tr("Seek the currently playing track by a relative " + "amount"), + tr("Restart the track, or play the previous track if " + "within 8 seconds of start."), + tr("Playlist options"), + tr("Append files/URLs to the playlist"), + tr("Loads files/URLs, replacing current playlist"), + tr("Play the th track in the playlist")) + .arg(tr("Other options"), tr("Display the on-screen-display"), + tr("Toggle visibility for the pretty on-screen-display"), + tr("Change the language"), + tr("Equivalent to --log-levels *:1"), + tr("Equivalent to --log-levels *:3"), + tr("Comma separated list of class:level, level is 0-3")) + .arg(tr("Print out version information")); std::cout << translated_help_text.toLocal8Bit().constData(); return false; } - case 'p': player_action_ = Player_Play; break; - case 't': player_action_ = Player_PlayPause; break; - case 'u': player_action_ = Player_Pause; break; - case 's': player_action_ = Player_Stop; break; - case 'r': player_action_ = Player_Previous; break; - case 'f': player_action_ = Player_Next; break; - case 'a': url_list_action_ = UrlList_Append; break; - case 'l': url_list_action_ = UrlList_Load; break; - case 'o': show_osd_ = true; break; - case 'y': toggle_pretty_osd_ = true; break; - case 'g': language_ = QString(optarg); break; - case VolumeUp: volume_modifier_ = +4; break; - case VolumeDown: volume_modifier_ = -4; break; - case Quiet: log_levels_ = "1"; break; - case Verbose: log_levels_ = "3"; break; - case LogLevels: log_levels_ = QString(optarg); break; + case 'p': + player_action_ = Player_Play; + break; + case 't': + player_action_ = Player_PlayPause; + break; + case 'u': + player_action_ = Player_Pause; + break; + case 's': + player_action_ = Player_Stop; + break; + case 'r': + player_action_ = Player_Previous; + break; + case 'f': + player_action_ = Player_Next; + break; + case 'a': + url_list_action_ = UrlList_Append; + break; + case 'l': + url_list_action_ = UrlList_Load; + break; + case 'o': + show_osd_ = true; + break; + case 'y': + toggle_pretty_osd_ = true; + break; + case 'g': + language_ = QString(optarg); + break; + case VolumeUp: + volume_modifier_ = +4; + break; + case VolumeDown: + volume_modifier_ = -4; + break; + case Quiet: + log_levels_ = "1"; + break; + case Verbose: + log_levels_ = "3"; + break; + case LogLevels: + log_levels_ = QString(optarg); + break; case Version: { - QString version_text = QString(kVersionText).arg(CLEMENTINE_VERSION_DISPLAY); + QString version_text = + QString(kVersionText).arg(CLEMENTINE_VERSION_DISPLAY); std::cout << version_text.toLocal8Bit().constData() << std::endl; std::exit(0); } @@ -241,7 +268,7 @@ bool CommandlineOptions::Parse() { } // Get any filenames or URLs following the arguments - for (int i=optind ; i> *this; } -QString CommandlineOptions::tr(const char *source_text) { +QString CommandlineOptions::tr(const char* source_text) { return QObject::tr(source_text); } QDataStream& operator<<(QDataStream& s, const CommandlineOptions& a) { - s << qint32(a.player_action_) - << qint32(a.url_list_action_) - << a.set_volume_ - << a.volume_modifier_ - << a.seek_to_ - << a.seek_by_ - << a.play_track_at_ - << a.show_osd_ - << a.urls_ - << a.log_levels_ - << a.toggle_pretty_osd_; + s << qint32(a.player_action_) << qint32(a.url_list_action_) << a.set_volume_ + << a.volume_modifier_ << a.seek_to_ << a.seek_by_ << a.play_track_at_ + << a.show_osd_ << a.urls_ << a.log_levels_ << a.toggle_pretty_osd_; return s; } @@ -308,17 +322,9 @@ QDataStream& operator<<(QDataStream& s, const CommandlineOptions& a) { QDataStream& operator>>(QDataStream& s, CommandlineOptions& a) { quint32 player_action = 0; quint32 url_list_action = 0; - s >> player_action - >> url_list_action - >> a.set_volume_ - >> a.volume_modifier_ - >> a.seek_to_ - >> a.seek_by_ - >> a.play_track_at_ - >> a.show_osd_ - >> a.urls_ - >> a.log_levels_ - >> a.toggle_pretty_osd_; + s >> player_action >> url_list_action >> a.set_volume_ >> + a.volume_modifier_ >> a.seek_to_ >> a.seek_by_ >> a.play_track_at_ >> + a.show_osd_ >> a.urls_ >> a.log_levels_ >> a.toggle_pretty_osd_; a.player_action_ = CommandlineOptions::PlayerAction(player_action); a.url_list_action_ = CommandlineOptions::UrlListAction(url_list_action); diff --git a/src/core/commandlineoptions.h b/src/core/commandlineoptions.h index f6f72bc77..60bef1042 100644 --- a/src/core/commandlineoptions.h +++ b/src/core/commandlineoptions.h @@ -27,7 +27,7 @@ class CommandlineOptions { friend QDataStream& operator>>(QDataStream& s, CommandlineOptions& a); public: - CommandlineOptions(int argc = 0, char** argv = NULL); + CommandlineOptions(int argc = 0, char* *argv = nullptr); static const char* kHelpText; static const char* kVersionText; @@ -37,6 +37,7 @@ class CommandlineOptions { enum UrlListAction { UrlList_Append = 0, UrlList_Load = 1, + UrlList_None = 2, }; enum PlayerAction { Player_None = 0, @@ -90,7 +91,6 @@ class CommandlineOptions { void RemoveArg(const QString& starts_with, int count); private: - int argc_; char** argv_; @@ -114,4 +114,4 @@ class CommandlineOptions { QDataStream& operator<<(QDataStream& s, const CommandlineOptions& a); QDataStream& operator>>(QDataStream& s, CommandlineOptions& a); -#endif // COMMANDLINEOPTIONS_H +#endif // COMMANDLINEOPTIONS_H diff --git a/src/core/crashreporting.cpp b/src/core/crashreporting.cpp index a6995d522..e461d91ec 100644 --- a/src/core/crashreporting.cpp +++ b/src/core/crashreporting.cpp @@ -31,25 +31,23 @@ #include #if defined(HAVE_BREAKPAD) and defined(Q_OS_LINUX) -# include "client/linux/handler/exception_handler.h" -# include "third_party/lss/linux_syscall_support.h" +#include "client/linux/handler/exception_handler.h" +#include "third_party/lss/linux_syscall_support.h" #endif - -const char* CrashSender::kUploadURL = "http://crashes.clementine-player.org/getuploadurl"; +const char* CrashSender::kUploadURL = + "http://crashes.clementine-player.org/getuploadurl"; const char* CrashReporting::kSendCrashReportOption = "--send-crash-report"; -char* CrashReporting::sPath = NULL; +char* CrashReporting::sPath = nullptr; #if defined(HAVE_BREAKPAD) and defined(Q_OS_LINUX) CrashReporting::CrashReporting() - : handler_(new google_breakpad::ExceptionHandler( - QDir::tempPath().toLocal8Bit().constData(), NULL, - CrashReporting::Handler, this, true)) { -} + : handler_(new google_breakpad::ExceptionHandler( + QDir::tempPath().toLocal8Bit().constData(), nullptr, + CrashReporting::Handler, this, true)) {} -CrashReporting::~CrashReporting() { -} +CrashReporting::~CrashReporting() {} bool CrashReporting::SendCrashReport(int argc, char** argv) { if (argc != 4 || strcmp(argv[1], kSendCrashReportOption) != 0) { @@ -76,21 +74,21 @@ void CrashReporting::Print(const char* message) { } } -bool CrashReporting::Handler(const char* dump_path, - const char* minidump_id, - void* context, - bool succeeded) { +bool CrashReporting::Handler(const char* dump_path, const char* minidump_id, + void* context, bool succeeded) { Print("Clementine has crashed! A crash report has been saved to:\n "); Print(dump_path); Print("/"); Print(minidump_id); - Print("\n\nPlease send this to the developers so they can fix the problem:\n" - " http://code.google.com/p/clementine-player/issues/entry\n\n"); + Print( + "\n\nPlease send this to the developers so they can fix the problem:\n" + " http://code.google.com/p/clementine-player/issues/entry\n\n"); if (sPath) { // We know the path to clementine, so exec it again to prompt the user to // upload the report. - const char* argv[] = {sPath, kSendCrashReportOption, dump_path, minidump_id, NULL}; + const char* argv[] = {sPath, kSendCrashReportOption, dump_path, minidump_id, + nullptr}; sys_execv(sPath, argv); } @@ -99,11 +97,10 @@ bool CrashReporting::Handler(const char* dump_path, } CrashSender::CrashSender(const QString& path) - : network_(new QNetworkAccessManager(this)), - path_(path), - file_(new QFile(path_, this)), - progress_(NULL) { -} + : network_(new QNetworkAccessManager(this)), + path_(path), + file_(new QFile(path_, this)), + progress_(nullptr) {} bool CrashSender::Start() { if (!file_->open(QIODevice::ReadOnly)) { @@ -112,10 +109,13 @@ bool CrashSender::Start() { } // No tr() here. - QMessageBox prompt(QMessageBox::Critical, "Clementine has crashed!", QString( - "A crash report has been created and saved to '%1'. With your permission " - "it can be automatically sent to our server so the developers can find " - "out what happened.").arg(path_)); + QMessageBox prompt(QMessageBox::Critical, "Clementine has crashed!", + QString( + "A crash report has been created and saved to '%1'. " + "With your permission " + "it can be automatically sent to our server so the " + "developers can find " + "out what happened.").arg(path_)); prompt.addButton("Don't send", QMessageBox::RejectRole); prompt.addButton("Send crash report", QMessageBox::AcceptRole); if (prompt.exec() == QDialog::Rejected) { @@ -141,7 +141,8 @@ void CrashSender::RedirectFinished() { reply->deleteLater(); - QUrl url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); + QUrl url = + reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); if (!url.isValid()) { progress_->close(); return; @@ -160,14 +161,17 @@ void CrashSender::RedirectFinished() { } QNetworkRequest req(url); - req.setHeader(QNetworkRequest::ContentTypeHeader, "multipart/form-data; boundary=" + boundary); + req.setHeader(QNetworkRequest::ContentTypeHeader, + "multipart/form-data; boundary=" + boundary); // Construct the multipart/form-data QByteArray form_data; form_data.reserve(file_data.size() + 1024); form_data.append("--"); form_data.append(boundary); - form_data.append("\nContent-Disposition: form-data; name=\"data\"; filename=\"data.dmp\"\n"); + form_data.append( + "\nContent-Disposition: form-data; name=\"data\"; " + "filename=\"data.dmp\"\n"); form_data.append("Content-Type: application/octet-stream\n\n"); form_data.append(file_data); form_data.append("\n--"); @@ -178,31 +182,25 @@ void CrashSender::RedirectFinished() { // Upload the data reply = network_->post(req, form_data); - connect(reply, SIGNAL(uploadProgress(qint64,qint64)), SLOT(UploadProgress(qint64))); + connect(reply, SIGNAL(uploadProgress(qint64, qint64)), + SLOT(UploadProgress(qint64))); connect(reply, SIGNAL(finished()), progress_, SLOT(close())); } -void CrashSender::UploadProgress(qint64 bytes) { - progress_->setValue(bytes); -} +void CrashSender::UploadProgress(qint64 bytes) { progress_->setValue(bytes); } -#else // HAVE_BREAKPAD +#else // HAVE_BREAKPAD namespace google_breakpad { - class ExceptionHandler {}; +class ExceptionHandler {}; } -CrashReporting::CrashReporting() { -} +CrashReporting::CrashReporting() {} -CrashReporting::~CrashReporting() { -} +CrashReporting::~CrashReporting() {} -bool CrashReporting::SendCrashReport(int, char**) { - return false; -} +bool CrashReporting::SendCrashReport(int, char**) { return false; } -void CrashReporting::SetApplicationPath(const QString&) { -} +void CrashReporting::SetApplicationPath(const QString&) {} -#endif // HAVE_BREAKPAD +#endif // HAVE_BREAKPAD diff --git a/src/core/crashreporting.h b/src/core/crashreporting.h index 54d30558a..ec36d9bc5 100644 --- a/src/core/crashreporting.h +++ b/src/core/crashreporting.h @@ -18,23 +18,22 @@ #ifndef CRASHREPORTING_H #define CRASHREPORTING_H -#include +#include -#include +#include class QFile; class QNetworkAccessManager; class QProgressDialog; namespace google_breakpad { - class ExceptionHandler; +class ExceptionHandler; } - // Wraps google_breakpad::ExceptionHandler - while an instance of this class // is alive crashes will be handled. class CrashReporting { -public: + public: CrashReporting(); ~CrashReporting(); @@ -48,43 +47,40 @@ public: // --send-crash-report when a crash happens. static void SetApplicationPath(const QString& path); -private: + private: // Prints the message to stdout without using libc. static void Print(const char* message); // Breakpad callback. - static bool Handler(const char* dump_path, - const char* minidump_id, - void* context, - bool succeeded); + static bool Handler(const char* dump_path, const char* minidump_id, + void* context, bool succeeded); -private: + private: Q_DISABLE_COPY(CrashReporting); static const char* kSendCrashReportOption; static char* sPath; - boost::scoped_ptr handler_; + std::unique_ptr handler_; }; - // Asks the user if he wants to send a crash report, and displays a progress // dialog while uploading it if he does. class CrashSender : public QObject { Q_OBJECT -public: + public: CrashSender(const QString& path); // Returns false if the user doesn't want to send the crash report (caller // should exit), or true if he does (caller should start the Qt event loop). bool Start(); -private slots: + private slots: void RedirectFinished(); void UploadProgress(qint64 bytes); -private: + private: static const char* kUploadURL; QNetworkAccessManager* network_; @@ -94,4 +90,4 @@ private: QProgressDialog* progress_; }; -#endif // CRASHREPORTING_H +#endif // CRASHREPORTING_H diff --git a/src/core/database.cpp b/src/core/database.cpp index a5ad6294e..36821fb2d 100644 --- a/src/core/database.cpp +++ b/src/core/database.cpp @@ -46,65 +46,59 @@ int Database::sNextConnectionId = 1; QMutex Database::sNextConnectionIdMutex; Database::Token::Token(const QString& token, int start, int end) - : token(token), - start_offset(start), - end_offset(end) { -} + : token(token), start_offset(start), end_offset(end) {} struct sqlite3_tokenizer_module { int iVersion; - int (*xCreate)( - int argc, /* Size of argv array */ - const char *const*argv, /* Tokenizer argument strings */ - sqlite3_tokenizer **ppTokenizer); /* OUT: Created tokenizer */ + int (*xCreate)(int argc, /* Size of argv array */ + const char* const* argv, /* Tokenizer argument strings */ + sqlite3_tokenizer** ppTokenizer); /* OUT: Created tokenizer */ - int (*xDestroy)(sqlite3_tokenizer *pTokenizer); + int (*xDestroy)(sqlite3_tokenizer* pTokenizer); int (*xOpen)( - sqlite3_tokenizer *pTokenizer, /* Tokenizer object */ - const char *pInput, int nBytes, /* Input buffer */ - sqlite3_tokenizer_cursor **ppCursor);/* OUT: Created tokenizer cursor */ + sqlite3_tokenizer* pTokenizer, /* Tokenizer object */ + const char* pInput, int nBytes, /* Input buffer */ + sqlite3_tokenizer_cursor** ppCursor); /* OUT: Created tokenizer cursor */ - int (*xClose)(sqlite3_tokenizer_cursor *pCursor); + int (*xClose)(sqlite3_tokenizer_cursor* pCursor); int (*xNext)( - sqlite3_tokenizer_cursor *pCursor, /* Tokenizer cursor */ - const char **ppToken, int *pnBytes, /* OUT: Normalized text for token */ - int *piStartOffset, /* OUT: Byte offset of token in input buffer */ - int *piEndOffset, /* OUT: Byte offset of end of token in input buffer */ - int *piPosition); /* OUT: Number of tokens returned before this one */ + sqlite3_tokenizer_cursor* pCursor, /* Tokenizer cursor */ + const char** ppToken, int* pnBytes, /* OUT: Normalized text for token */ + int* piStartOffset, /* OUT: Byte offset of token in input buffer */ + int* piEndOffset, /* OUT: Byte offset of end of token in input buffer */ + int* piPosition); /* OUT: Number of tokens returned before this one */ }; struct sqlite3_tokenizer { - const sqlite3_tokenizer_module *pModule; /* The module for this tokenizer */ + const sqlite3_tokenizer_module* pModule; /* The module for this tokenizer */ /* Tokenizer implementations will typically add additional fields */ }; struct sqlite3_tokenizer_cursor { - sqlite3_tokenizer *pTokenizer; /* Tokenizer for this cursor. */ + sqlite3_tokenizer* pTokenizer; /* Tokenizer for this cursor. */ /* Tokenizer implementations will typically add additional fields */ }; -sqlite3_tokenizer_module* Database::sFTSTokenizer = NULL; +sqlite3_tokenizer_module* Database::sFTSTokenizer = nullptr; - -int Database::FTSCreate(int argc, const char* const* argv, sqlite3_tokenizer** tokenizer) { +int Database::FTSCreate(int argc, const char* const* argv, + sqlite3_tokenizer** tokenizer) { *tokenizer = reinterpret_cast(new UnicodeTokenizer); return SQLITE_OK; } int Database::FTSDestroy(sqlite3_tokenizer* tokenizer) { - UnicodeTokenizer* real_tokenizer = reinterpret_cast(tokenizer); + UnicodeTokenizer* real_tokenizer = + reinterpret_cast(tokenizer); delete real_tokenizer; return SQLITE_OK; } -int Database::FTSOpen( - sqlite3_tokenizer* pTokenizer, - const char* input, - int bytes, - sqlite3_tokenizer_cursor** cursor) { +int Database::FTSOpen(sqlite3_tokenizer* pTokenizer, const char* input, + int bytes, sqlite3_tokenizer_cursor** cursor) { UnicodeTokenizerCursor* new_cursor = new UnicodeTokenizerCursor; new_cursor->pTokenizer = pTokenizer; new_cursor->position = 0; @@ -163,20 +157,18 @@ int Database::FTSOpen( } int Database::FTSClose(sqlite3_tokenizer_cursor* cursor) { - UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); + UnicodeTokenizerCursor* real_cursor = + reinterpret_cast(cursor); delete real_cursor; return SQLITE_OK; } -int Database::FTSNext( - sqlite3_tokenizer_cursor* cursor, - const char** token, - int* bytes, - int* start_offset, - int* end_offset, - int* position) { - UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); +int Database::FTSNext(sqlite3_tokenizer_cursor* cursor, const char** token, + int* bytes, int* start_offset, int* end_offset, + int* position) { + UnicodeTokenizerCursor* real_cursor = + reinterpret_cast(cursor); QList tokens = real_cursor->tokens; if (real_cursor->position >= tokens.size()) { @@ -196,7 +188,6 @@ int Database::FTSNext( return SQLITE_OK; } - void Database::StaticInit() { sFTSTokenizer = new sqlite3_tokenizer_module; sFTSTokenizer->iVersion = 0; @@ -208,24 +199,24 @@ void Database::StaticInit() { return; } -Database::Database(Application* app, QObject* parent, const QString& database_name) - : QObject(parent), - app_(app), - mutex_(QMutex::Recursive), - injected_database_name_(database_name), - query_hash_(0), - startup_schema_version_(-1) -{ +Database::Database(Application* app, QObject* parent, + const QString& database_name) + : QObject(parent), + app_(app), + mutex_(QMutex::Recursive), + injected_database_name_(database_name), + query_hash_(0), + startup_schema_version_(-1) { { QMutexLocker l(&sNextConnectionIdMutex); connection_id_ = sNextConnectionId++; } - directory_ = QDir::toNativeSeparators( - Utilities::GetConfigPath(Utilities::Path_Root)); + directory_ = + QDir::toNativeSeparators(Utilities::GetConfigPath(Utilities::Path_Root)); attached_databases_["jamendo"] = AttachedDatabase( - directory_ + "/jamendo.db", ":/schema/jamendo.sql", false); + directory_ + "/jamendo.db", ":/schema/jamendo.sql", false); QMutexLocker l(&mutex_); Connect(); @@ -241,9 +232,8 @@ QSqlDatabase Database::Connect() { } } - const QString connection_id = - QString("%1_thread_%2").arg(connection_id_).arg( - reinterpret_cast(QThread::currentThread())); + const QString connection_id = QString("%1_thread_%2").arg(connection_id_).arg( + reinterpret_cast(QThread::currentThread())); // Try to find an existing connection for this thread QSqlDatabase db = QSqlDatabase::database(connection_id); @@ -269,8 +259,9 @@ QSqlDatabase Database::Connect() { { QSqlQuery set_fts_tokenizer("SELECT fts3_tokenizer(:name, :pointer)", db); set_fts_tokenizer.bindValue(":name", "unicode"); - set_fts_tokenizer.bindValue(":pointer", QByteArray( - reinterpret_cast(&sFTSTokenizer), sizeof(&sFTSTokenizer))); + set_fts_tokenizer.bindValue( + ":pointer", QByteArray(reinterpret_cast(&sFTSTokenizer), + sizeof(&sFTSTokenizer))); if (!set_fts_tokenizer.exec()) { qLog(Warning) << "Couldn't register FTS3 tokenizer"; } @@ -288,15 +279,15 @@ QSqlDatabase Database::Connect() { for (const QString& key : attached_databases_.keys()) { QString filename = attached_databases_[key].filename_; - if (!injected_database_name_.isNull()) - filename = injected_database_name_; + if (!injected_database_name_.isNull()) filename = injected_database_name_; // Attach the db QSqlQuery q("ATTACH DATABASE :filename AS :alias", db); q.bindValue(":filename", filename); q.bindValue(":alias", key); if (!q.exec()) { - qFatal("Couldn't attach external database '%s'", key.toAscii().constData()); + qFatal("Couldn't attach external database '%s'", + key.toAscii().constData()); } } @@ -311,8 +302,10 @@ QSqlDatabase Database::Connect() { attached_databases_[key].schema_.isEmpty()) continue; // Find out if there are any tables in this database - QSqlQuery q(QString("SELECT ROWID FROM %1.sqlite_master" - " WHERE type='table'").arg(key), db); + QSqlQuery q(QString( + "SELECT ROWID FROM %1.sqlite_master" + " WHERE type='table'").arg(key), + db); if (!q.exec() || !q.next()) { q.finish(); ExecSchemaCommandsFromFile(db, attached_databases_[key].schema_, 0); @@ -327,8 +320,7 @@ void Database::UpdateMainSchema(QSqlDatabase* db) { int schema_version = 0; { QSqlQuery q("SELECT version FROM schema_version", *db); - if (q.next()) - schema_version = q.value(0).toInt(); + if (q.next()) schema_version = q.value(0).toInt(); // Implicit invocation of ~QSqlQuery() when leaving the scope // to release any remaining database locks! } @@ -336,12 +328,13 @@ void Database::UpdateMainSchema(QSqlDatabase* db) { startup_schema_version_ = schema_version; if (schema_version > kSchemaVersion) { - qLog(Warning) << "The database schema (version" << schema_version << ") is newer than I was expecting"; + qLog(Warning) << "The database schema (version" << schema_version + << ") is newer than I was expecting"; return; } if (schema_version < kSchemaVersion) { // Update the schema - for (int v = schema_version+1; v <= kSchemaVersion; ++v) { + for (int v = schema_version + 1; v <= kSchemaVersion; ++v) { UpdateDatabaseSchema(v, *db); } } @@ -384,8 +377,8 @@ void Database::AttachDatabase(const QString& database_name, attached_databases_[database_name] = database; } -void Database::AttachDatabaseOnDbConnection(const QString &database_name, - const AttachedDatabase &database, +void Database::AttachDatabaseOnDbConnection(const QString& database_name, + const AttachedDatabase& database, QSqlDatabase& db) { AttachDatabase(database_name, database); @@ -394,7 +387,8 @@ void Database::AttachDatabaseOnDbConnection(const QString &database_name, q.bindValue(":filename", database.filename_); q.bindValue(":alias", database_name); if (!q.exec()) { - qFatal("Couldn't attach external database '%s'", database_name.toAscii().constData()); + qFatal("Couldn't attach external database '%s'", + database_name.toAscii().constData()); } } @@ -414,7 +408,7 @@ void Database::DetachDatabase(const QString& database_name) { attached_databases_.remove(database_name); } -void Database::UpdateDatabaseSchema(int version, QSqlDatabase &db) { +void Database::UpdateDatabaseSchema(int version, QSqlDatabase& db) { QString filename; if (version == 0) filename = ":/schema/schema.sql"; @@ -434,20 +428,22 @@ void Database::UpdateDatabaseSchema(int version, QSqlDatabase &db) { UrlEncodeFilenameColumn(table, db); } } - qLog(Debug) << "Applying database schema update" << version - << "from" << filename; + qLog(Debug) << "Applying database schema update" << version << "from" + << filename; ExecSchemaCommandsFromFile(db, filename, version - 1, true); t.Commit(); } else { - qLog(Debug) << "Applying database schema update" << version - << "from" << filename; + qLog(Debug) << "Applying database schema update" << version << "from" + << filename; ExecSchemaCommandsFromFile(db, filename, version - 1); } } void Database::UrlEncodeFilenameColumn(const QString& table, QSqlDatabase& db) { QSqlQuery select(QString("SELECT ROWID, filename FROM %1").arg(table), db); - QSqlQuery update(QString("UPDATE %1 SET filename=:filename WHERE ROWID=:id").arg(table), db); + QSqlQuery update( + QString("UPDATE %1 SET filename=:filename WHERE ROWID=:id").arg(table), + db); select.exec(); if (CheckErrors(select)) return; while (select.next()) { @@ -475,16 +471,12 @@ void Database::ExecSchemaCommandsFromFile(QSqlDatabase& db, QFile schema_file(filename); if (!schema_file.open(QIODevice::ReadOnly)) qFatal("Couldn't open schema file %s", filename.toUtf8().constData()); - ExecSchemaCommands(db, - QString::fromUtf8(schema_file.readAll()), - schema_version, - in_transaction); + ExecSchemaCommands(db, QString::fromUtf8(schema_file.readAll()), + schema_version, in_transaction); } -void Database::ExecSchemaCommands(QSqlDatabase& db, - const QString& schema, - int schema_version, - bool in_transaction) { +void Database::ExecSchemaCommands(QSqlDatabase& db, const QString& schema, + int schema_version, bool in_transaction) { // Run each command const QStringList commands(schema.split(QRegExp("; *\n\n"))); @@ -530,8 +522,7 @@ void Database::ExecSongTablesCommands(QSqlDatabase& db, } } else { QSqlQuery query(db.exec(command)); - if (CheckErrors(query)) - qFatal("Unable to update music library database"); + if (CheckErrors(query)) qFatal("Unable to update music library database"); } } } @@ -541,14 +532,17 @@ QStringList Database::SongsTables(QSqlDatabase& db, int schema_version) const { // look for the tables in the main db for (const QString& table : db.tables()) { - if (table == "songs" || table.endsWith("_songs")) - ret << table; + if (table == "songs" || table.endsWith("_songs")) ret << table; } // look for the tables in attached dbs for (const QString& key : attached_databases_.keys()) { - QSqlQuery q(QString("SELECT NAME FROM %1.sqlite_master" - " WHERE type='table' AND name='songs' OR name LIKE '%songs'").arg(key), db); + QSqlQuery q( + QString( + "SELECT NAME FROM %1.sqlite_master" + " WHERE type='table' AND name='songs' OR name LIKE '%songs'") + .arg(key), + db); if (q.exec()) { while (q.next()) { QString tab_name = key + "." + q.value(0).toString(); @@ -595,9 +589,11 @@ bool Database::IntegrityCheck(QSqlDatabase db) { break; } else { if (!error_reported) { - app_->AddError(tr("Database corruption detected. Please read " - "https://code.google.com/p/clementine-player/wiki/DatabaseCorruption " - "for instructions on how to recover your database")); + app_->AddError( + tr("Database corruption detected. Please read " + "https://code.google.com/p/clementine-player/wiki/" + "DatabaseCorruption " + "for instructions on how to recover your database")); } app_->AddError("Database: " + message); error_reported = true; @@ -621,17 +617,16 @@ void Database::DoBackup() { } } -bool Database::OpenDatabase(const QString& filename, sqlite3** connection) const { +bool Database::OpenDatabase(const QString& filename, + sqlite3** connection) const { int ret = sqlite3_open(filename.toUtf8(), connection); if (ret != 0) { if (*connection) { const char* error_message = sqlite3_errmsg(*connection); - qLog(Error) << "Failed to open database for backup:" - << filename + qLog(Error) << "Failed to open database for backup:" << filename << error_message; } else { - qLog(Error) << "Failed to open database for backup:" - << filename; + qLog(Error) << "Failed to open database for backup:" << filename; } return false; } @@ -641,17 +636,19 @@ bool Database::OpenDatabase(const QString& filename, sqlite3** connection) const void Database::BackupFile(const QString& filename) { qLog(Debug) << "Starting database backup"; QString dest_filename = QString("%1.bak").arg(filename); - const int task_id = app_->task_manager()->StartTask(tr("Backing up database")); + const int task_id = + app_->task_manager()->StartTask(tr("Backing up database")); - sqlite3* source_connection = NULL; - sqlite3* dest_connection = NULL; + sqlite3* source_connection = nullptr; + sqlite3* dest_connection = nullptr; BOOST_SCOPE_EXIT((source_connection)(dest_connection)(task_id)(app_)) { - // Harmless to call sqlite3_close() with a NULL pointer. + // Harmless to call sqlite3_close() with a nullptr pointer. sqlite3_close(source_connection); sqlite3_close(dest_connection); app_->task_manager()->SetTaskFinished(task_id); - } BOOST_SCOPE_EXIT_END + } + BOOST_SCOPE_EXIT_END bool success = OpenDatabase(filename, &source_connection); if (!success) { @@ -663,9 +660,8 @@ void Database::BackupFile(const QString& filename) { return; } - sqlite3_backup* backup = sqlite3_backup_init( - dest_connection, "main", - source_connection, "main"); + sqlite3_backup* backup = + sqlite3_backup_init(dest_connection, "main", source_connection, "main"); if (!backup) { const char* error_message = sqlite3_errmsg(dest_connection); qLog(Error) << "Failed to start database backup:" << error_message; diff --git a/src/core/database.h b/src/core/database.h index a3fc8bcc0..6b1442f65 100644 --- a/src/core/database.h +++ b/src/core/database.h @@ -34,7 +34,6 @@ extern "C" { struct sqlite3_tokenizer; struct sqlite3_tokenizer_cursor; struct sqlite3_tokenizer_module; - } class Application; @@ -43,13 +42,14 @@ class Database : public QObject { Q_OBJECT public: - Database(Application* app, QObject* parent = 0, + Database(Application* app, QObject* parent = nullptr, const QString& database_name = QString()); struct AttachedDatabase { AttachedDatabase() {} - AttachedDatabase(const QString& filename, const QString& schema, bool is_temporary) - : filename_(filename), schema_(schema), is_temporary_(is_temporary) {} + AttachedDatabase(const QString& filename, const QString& schema, + bool is_temporary) + : filename_(filename), schema_(schema), is_temporary_(is_temporary) {} QString filename_; QString schema_; @@ -65,21 +65,20 @@ class Database : public QObject { QMutex* Mutex() { return &mutex_; } void RecreateAttachedDb(const QString& database_name); - void ExecSchemaCommands(QSqlDatabase& db, - const QString& schema, - int schema_version, - bool in_transaction = false); + void ExecSchemaCommands(QSqlDatabase& db, const QString& schema, + int schema_version, bool in_transaction = false); int startup_schema_version() const { return startup_schema_version_; } int current_schema_version() const { return kSchemaVersion; } - void AttachDatabase(const QString& database_name, const AttachedDatabase& database); + void AttachDatabase(const QString& database_name, + const AttachedDatabase& database); void AttachDatabaseOnDbConnection(const QString& database_name, const AttachedDatabase& database, QSqlDatabase& db); void DetachDatabase(const QString& database_name); - signals: +signals: void Error(const QString& message); public slots: @@ -88,12 +87,10 @@ class Database : public QObject { private: void UpdateMainSchema(QSqlDatabase* db); - void ExecSchemaCommandsFromFile(QSqlDatabase& db, - const QString& filename, + void ExecSchemaCommandsFromFile(QSqlDatabase& db, const QString& filename, int schema_version, bool in_transaction = false); - void ExecSongTablesCommands(QSqlDatabase& db, - const QStringList& song_tables, + void ExecSongTablesCommands(QSqlDatabase& db, const QStringList& song_tables, const QStringList& commands); void UpdateDatabaseSchema(int version, QSqlDatabase& db); @@ -137,26 +134,23 @@ class Database : public QObject { // Do static initialisation like loading sqlite functions. static void StaticInit(); - typedef int (*Sqlite3CreateFunc) ( - sqlite3*, const char*, int, int, void*, - void (*) (sqlite3_context*, int, sqlite3_value**), - void (*) (sqlite3_context*, int, sqlite3_value**), - void (*) (sqlite3_context*)); + typedef int (*Sqlite3CreateFunc)(sqlite3*, const char*, int, int, void*, + void (*)(sqlite3_context*, int, + sqlite3_value**), + void (*)(sqlite3_context*, int, + sqlite3_value**), + void (*)(sqlite3_context*)); static sqlite3_tokenizer_module* sFTSTokenizer; - static int FTSCreate(int argc, const char* const* argv, sqlite3_tokenizer** tokenizer); + static int FTSCreate(int argc, const char* const* argv, + sqlite3_tokenizer** tokenizer); static int FTSDestroy(sqlite3_tokenizer* tokenizer); - static int FTSOpen(sqlite3_tokenizer* tokenizer, - const char* input, - int bytes, + static int FTSOpen(sqlite3_tokenizer* tokenizer, const char* input, int bytes, sqlite3_tokenizer_cursor** cursor); static int FTSClose(sqlite3_tokenizer_cursor* cursor); - static int FTSNext(sqlite3_tokenizer_cursor* cursor, - const char** token, - int* bytes, - int* start_offset, - int* end_offset, + static int FTSNext(sqlite3_tokenizer_cursor* cursor, const char** token, + int* bytes, int* start_offset, int* end_offset, int* position); struct Token { Token(const QString& token, int start, int end); @@ -181,12 +175,12 @@ class Database : public QObject { class MemoryDatabase : public Database { public: - MemoryDatabase(Application* app, QObject* parent = 0) - : Database(app, parent, ":memory:") {} + MemoryDatabase(Application* app, QObject* parent = nullptr) + : Database(app, parent, ":memory:") {} ~MemoryDatabase() { // Make sure Qt doesn't reuse the same database QSqlDatabase::removeDatabase(Connect().connectionName()); } }; -#endif // DATABASE_H +#endif // DATABASE_H diff --git a/src/core/deletefiles.cpp b/src/core/deletefiles.cpp index e881dc947..3793ef01f 100644 --- a/src/core/deletefiles.cpp +++ b/src/core/deletefiles.cpp @@ -16,34 +16,32 @@ */ #include "deletefiles.h" -#include "musicstorage.h" -#include "taskmanager.h" #include #include #include #include +#include "musicstorage.h" +#include "taskmanager.h" + const int DeleteFiles::kBatchSize = 50; DeleteFiles::DeleteFiles(TaskManager* task_manager, - boost::shared_ptr storage) - : thread_(NULL), - task_manager_(task_manager), - storage_(storage), - started_(false), - task_id_(0), - progress_(0) -{ + std::shared_ptr storage) + : thread_(nullptr), + task_manager_(task_manager), + storage_(storage), + started_(false), + task_id_(0), + progress_(0) { original_thread_ = thread(); } -DeleteFiles::~DeleteFiles() { -} +DeleteFiles::~DeleteFiles() {} void DeleteFiles::Start(const SongList& songs) { - if (thread_) - return; + if (thread_) return; songs_ = songs; @@ -59,7 +57,7 @@ void DeleteFiles::Start(const SongList& songs) { void DeleteFiles::Start(const QStringList& filenames) { SongList songs; - foreach (const QString& filename, filenames) { + for (const QString& filename : filenames) { Song song; song.set_url(QUrl::fromLocalFile(filename)); songs << song; @@ -97,7 +95,7 @@ void DeleteFiles::ProcessSomeFiles() { // We process files in batches so we can be cancelled part-way through. const int n = qMin(songs_.count(), progress_ + kBatchSize); - for ( ; progress_SetTaskProgress(task_id_, progress_, songs_.count()); const Song& song = songs_[progress_]; diff --git a/src/core/deletefiles.h b/src/core/deletefiles.h index 38c995b67..ddef77797 100644 --- a/src/core/deletefiles.h +++ b/src/core/deletefiles.h @@ -18,9 +18,9 @@ #ifndef DELETEFILES_H #define DELETEFILES_H -#include +#include -#include +#include #include "song.h" @@ -30,8 +30,8 @@ class TaskManager; class DeleteFiles : public QObject { Q_OBJECT -public: - DeleteFiles(TaskManager* task_manager, boost::shared_ptr storage); + public: + DeleteFiles(TaskManager* task_manager, std::shared_ptr storage); ~DeleteFiles(); static const int kBatchSize; @@ -42,14 +42,14 @@ public: signals: void Finished(const SongList& songs_with_errors); -private slots: + private slots: void ProcessSomeFiles(); -private: + private: QThread* thread_; QThread* original_thread_; TaskManager* task_manager_; - boost::shared_ptr storage_; + std::shared_ptr storage_; SongList songs_; @@ -61,4 +61,4 @@ private: SongList songs_with_errors_; }; -#endif // DELETEFILES_H +#endif // DELETEFILES_H diff --git a/src/core/fht.cpp b/src/core/fht.cpp index 36d276edf..7f8d84759 100644 --- a/src/core/fht.cpp +++ b/src/core/fht.cpp @@ -22,221 +22,182 @@ #include #include "fht.h" +FHT::FHT(int n) : m_buf(0), m_tab(0), m_log(0) { + if (n < 3) { + m_num = 0; + m_exp2 = -1; + return; + } + m_exp2 = n; + m_num = 1 << n; + if (n > 3) { + m_buf = new float[m_num]; + m_tab = new float[m_num * 2]; + makeCasTable(); + } +} -FHT::FHT(int n) : - m_buf(0), - m_tab(0), - m_log(0) -{ - if (n < 3) { - m_num = 0; - m_exp2 = -1; - return; +FHT::~FHT() { + delete[] m_buf; + delete[] m_tab; + delete[] m_log; +} + +void FHT::makeCasTable(void) { + float d, *costab, *sintab; + int ul, ndiv2 = m_num / 2; + + for (costab = m_tab, sintab = m_tab + m_num / 2 + 1, ul = 0; ul < m_num; + ul++) { + d = M_PI * ul / ndiv2; + *costab = *sintab = cos(d); + + costab += 2, sintab += 2; + if (sintab > m_tab + m_num * 2) sintab = m_tab + 1; + } +} + +float* FHT::copy(float* d, float* s) { + return (float*)memcpy(d, s, m_num * sizeof(float)); +} + +float* FHT::clear(float* d) { + return (float*)memset(d, 0, m_num * sizeof(float)); +} + +void FHT::scale(float* p, float d) { + for (int i = 0; i < (m_num / 2); i++) *p++ *= d; +} + +void FHT::ewma(float* d, float* s, float w) { + for (int i = 0; i < (m_num / 2); i++, d++, s++) *d = *d * w + *s * (1 - w); +} + +void FHT::logSpectrum(float* out, float* p) { + int n = m_num / 2, i, j, k, *r; + if (!m_log) { + m_log = new int[n]; + float f = n / log10((double)n); + for (i = 0, r = m_log; i < n; i++, r++) { + j = int(rint(log10(i + 1.0) * f)); + *r = j >= n ? n - 1 : j; } - m_exp2 = n; - m_num = 1 << n; - if (n > 3) { - m_buf = new float[m_num]; - m_tab = new float[m_num * 2]; - makeCasTable(); + } + semiLogSpectrum(p); + *out++ = *p = *p / 100; + for (k = i = 1, r = m_log; i < n; i++) { + j = *r++; + if (i == j) + *out++ = p[i]; + else { + float base = p[k - 1]; + float step = (p[j] - base) / (j - (k - 1)); + for (float corr = 0; k <= j; k++, corr += step) *out++ = base + corr; } + } } - -FHT::~FHT() -{ - delete[] m_buf; - delete[] m_tab; - delete[] m_log; +void FHT::semiLogSpectrum(float* p) { + float e; + power2(p); + for (int i = 0; i < (m_num / 2); i++, p++) { + e = 10.0 * log10(sqrt(*p * .5)); + *p = e < 0 ? 0 : e; + } } - -void FHT::makeCasTable(void) -{ - float d, *costab, *sintab; - int ul, ndiv2 = m_num / 2; - - for (costab = m_tab, sintab = m_tab + m_num / 2 + 1, ul = 0; ul < m_num; ul++) { - d = M_PI * ul / ndiv2; - *costab = *sintab = cos(d); - - costab += 2, sintab += 2; - if (sintab > m_tab + m_num * 2) - sintab = m_tab + 1; - } +void FHT::spectrum(float* p) { + power2(p); + for (int i = 0; i < (m_num / 2); i++, p++) *p = (float)sqrt(*p * .5); } - -float* FHT::copy(float *d, float *s) -{ - return (float *)memcpy(d, s, m_num * sizeof(float)); +void FHT::power(float* p) { + power2(p); + for (int i = 0; i < (m_num / 2); i++) *p++ *= .5; } +void FHT::power2(float* p) { + int i; + float* q; + _transform(p, m_num, 0); -float* FHT::clear(float *d) -{ - return (float *)memset(d, 0, m_num * sizeof(float)); + *p = (*p * *p), *p += *p, p++; + + for (i = 1, q = p + m_num - 2; i < (m_num / 2); i++, --q) + *p = (*p * *p) + (*q * *q), p++; } - -void FHT::scale(float *p, float d) -{ - for (int i = 0; i < (m_num / 2); i++) - *p++ *= d; -} - - -void FHT::ewma(float *d, float *s, float w) -{ - for (int i = 0; i < (m_num / 2); i++, d++, s++) - *d = *d * w + *s * (1 - w); -} - - -void FHT::logSpectrum(float *out, float *p) -{ - int n = m_num / 2, i, j, k, *r; - if (!m_log) { - m_log = new int[n]; - float f = n / log10((double)n); - for (i = 0, r = m_log; i < n; i++, r++) { - j = int(rint(log10(i + 1.0) * f)); - *r = j >= n ? n - 1 : j; - } - } - semiLogSpectrum(p); - *out++ = *p = *p / 100; - for (k = i = 1, r = m_log; i < n; i++) { - j = *r++; - if (i == j) - *out++ = p[i]; - else { - float base = p[k - 1]; - float step = (p[j] - base) / (j - (k - 1)); - for (float corr = 0; k <= j; k++, corr += step) - *out++ = base + corr; - } - } -} - - -void FHT::semiLogSpectrum(float *p) -{ - float e; - power2(p); - for (int i = 0; i < (m_num / 2); i++, p++) { - e = 10.0 * log10(sqrt(*p * .5)); - *p = e < 0 ? 0 : e; - } -} - - -void FHT::spectrum(float *p) -{ - power2(p); - for (int i = 0; i < (m_num / 2); i++, p++) - *p = (float)sqrt(*p * .5); -} - - -void FHT::power(float *p) -{ - power2(p); - for (int i = 0; i < (m_num / 2); i++) - *p++ *= .5; -} - - -void FHT::power2(float *p) -{ - int i; - float *q; +void FHT::transform(float* p) { + if (m_num == 8) + transform8(p); + else _transform(p, m_num, 0); - - *p = (*p * *p), *p += *p, p++; - - for (i = 1, q = p + m_num - 2; i < (m_num / 2); i++, --q) - *p = (*p * *p) + (*q * *q), p++; } +void FHT::transform8(float* p) { + float a, b, c, d, e, f, g, h, b_f2, d_h2; + float a_c_eg, a_ce_g, ac_e_g, aceg, b_df_h, bdfh; -void FHT::transform(float *p) -{ - if (m_num == 8) - transform8(p); - else - _transform(p, m_num, 0); + a = *p++, b = *p++, c = *p++, d = *p++; + e = *p++, f = *p++, g = *p++, h = *p; + b_f2 = (b - f) * M_SQRT2; + d_h2 = (d - h) * M_SQRT2; + + a_c_eg = a - c - e + g; + a_ce_g = a - c + e - g; + ac_e_g = a + c - e - g; + aceg = a + c + e + g; + + b_df_h = b - d + f - h; + bdfh = b + d + f + h; + + *p = a_c_eg - d_h2; + *--p = a_ce_g - b_df_h; + *--p = ac_e_g - b_f2; + *--p = aceg - bdfh; + *--p = a_c_eg + d_h2; + *--p = a_ce_g + b_df_h; + *--p = ac_e_g + b_f2; + *--p = aceg + bdfh; } +void FHT::_transform(float* p, int n, int k) { + if (n == 8) { + transform8(p + k); + return; + } -void FHT::transform8(float *p) -{ - float a, b, c, d, e, f, g, h, b_f2, d_h2; - float a_c_eg, a_ce_g, ac_e_g, aceg, b_df_h, bdfh; + int i, j, ndiv2 = n / 2; + float a, *t1, *t2, *t3, *t4, *ptab, *pp; - a = *p++, b = *p++, c = *p++, d = *p++; - e = *p++, f = *p++, g = *p++, h = *p; - b_f2 = (b - f) * M_SQRT2; - d_h2 = (d - h) * M_SQRT2; + for (i = 0, t1 = m_buf, t2 = m_buf + ndiv2, pp = &p[k]; i < ndiv2; i++) + *t1++ = *pp++, *t2++ = *pp++; - a_c_eg = a - c - e + g; - a_ce_g = a - c + e - g; - ac_e_g = a + c - e - g; - aceg = a + c + e + g; + memcpy(p + k, m_buf, sizeof(float) * n); - b_df_h = b - d + f - h; - bdfh = b + d + f + h; + _transform(p, ndiv2, k); + _transform(p, ndiv2, k + ndiv2); - *p = a_c_eg - d_h2; - *--p = a_ce_g - b_df_h; - *--p = ac_e_g - b_f2; - *--p = aceg - bdfh; - *--p = a_c_eg + d_h2; - *--p = a_ce_g + b_df_h; - *--p = ac_e_g + b_f2; - *--p = aceg + bdfh; -} + j = m_num / ndiv2 - 1; + t1 = m_buf; + t2 = t1 + ndiv2; + t3 = p + k + ndiv2; + ptab = m_tab; + pp = p + k; + a = *ptab++ * *t3++; + a += *ptab * *pp; + ptab += j; -void FHT::_transform(float *p, int n, int k) -{ - if (n == 8) { - transform8(p + k); - return; - } - - int i, j, ndiv2 = n / 2; - float a, *t1, *t2, *t3, *t4, *ptab, *pp; - - for (i = 0, t1 = m_buf, t2 = m_buf + ndiv2, pp = &p[k]; i < ndiv2; i++) - *t1++ = *pp++, *t2++ = *pp++; - - memcpy(p + k, m_buf, sizeof(float) * n); - - _transform(p, ndiv2, k); - _transform(p, ndiv2, k + ndiv2); - - j = m_num / ndiv2 - 1; - t1 = m_buf; - t2 = t1 + ndiv2; - t3 = p + k + ndiv2; - ptab = m_tab; - pp = p + k; + *t1++ = *pp + a; + *t2++ = *pp++ - a; + for (i = 1, t4 = p + k + n; i < ndiv2; i++, ptab += j) { a = *ptab++ * *t3++; - a += *ptab * *pp; - ptab += j; + a += *ptab * *--t4; *t1++ = *pp + a; *t2++ = *pp++ - a; - - for (i = 1, t4 = p + k + n; i < ndiv2; i++, ptab += j) { - a = *ptab++ * *t3++; - a += *ptab * *--t4; - - *t1++ = *pp + a; - *t2++ = *pp++ - a; - } - memcpy(p + k, m_buf, sizeof(float) * n); + } + memcpy(p + k, m_buf, sizeof(float) * n); } - diff --git a/src/core/fht.h b/src/core/fht.h index 059fb4299..73c5daa6a 100644 --- a/src/core/fht.h +++ b/src/core/fht.h @@ -29,91 +29,90 @@ * * [1] Computer in Physics, Vol. 9, No. 4, Jul/Aug 1995 pp 373-379 */ -class FHT -{ - int m_exp2; - int m_num; - float *m_buf; - float *m_tab; - int *m_log; +class FHT { + int m_exp2; + int m_num; + float* m_buf; + float* m_tab; + int* m_log; - /** - * Create a table of "cas" (cosine and sine) values. - * Has only to be done in the constructor and saves from - * calculating the same values over and over while transforming. - */ - void makeCasTable(); + /** + * Create a table of "cas" (cosine and sine) values. + * Has only to be done in the constructor and saves from + * calculating the same values over and over while transforming. + */ + void makeCasTable(); - /** - * Recursive in-place Hartley transform. For internal use only! - */ - void _transform(float *, int, int); + /** + * Recursive in-place Hartley transform. For internal use only! + */ + void _transform(float*, int, int); - public: - /** - * Prepare transform for data sets with @f$2^n@f$ numbers, whereby @f$n@f$ - * should be at least 3. Values of more than 3 need a trigonometry table. - * @see makeCasTable() - */ - FHT(int); + public: + /** + * Prepare transform for data sets with @f$2^n@f$ numbers, whereby @f$n@f$ + * should be at least 3. Values of more than 3 need a trigonometry table. + * @see makeCasTable() + */ + FHT(int); - ~FHT(); - inline int sizeExp() const { return m_exp2; } - inline int size() const { return m_num; } - float *copy(float *, float *); - float *clear(float *); - void scale(float *, float); + ~FHT(); + inline int sizeExp() const { return m_exp2; } + inline int size() const { return m_num; } + float* copy(float*, float*); + float* clear(float*); + void scale(float*, float); - /** - * Exponentially Weighted Moving Average (EWMA) filter. - * @param d is the filtered data. - * @param s is fresh input. - * @param w is the weighting factor. - */ - void ewma(float *d, float *s, float w); + /** + * Exponentially Weighted Moving Average (EWMA) filter. + * @param d is the filtered data. + * @param s is fresh input. + * @param w is the weighting factor. + */ + void ewma(float* d, float* s, float w); - /** - * Logarithmic audio spectrum. Maps semi-logarithmic spectrum - * to logarithmic frequency scale, interpolates missing values. - * A logarithmic index map is calculated at the first run only. - * @param p is the input array. - * @param out is the spectrum. - */ - void logSpectrum(float *out, float *p); + /** + * Logarithmic audio spectrum. Maps semi-logarithmic spectrum + * to logarithmic frequency scale, interpolates missing values. + * A logarithmic index map is calculated at the first run only. + * @param p is the input array. + * @param out is the spectrum. + */ + void logSpectrum(float* out, float* p); - /** - * Semi-logarithmic audio spectrum. - */ - void semiLogSpectrum(float *); + /** + * Semi-logarithmic audio spectrum. + */ + void semiLogSpectrum(float*); - /** - * Fourier spectrum. - */ - void spectrum(float *); + /** + * Fourier spectrum. + */ + void spectrum(float*); - /** - * Calculates a mathematically correct FFT power spectrum. - * If further scaling is applied later, use power2 instead - * and factor the 0.5 in the final scaling factor. - * @see FHT::power2() - */ - void power(float *); + /** + * Calculates a mathematically correct FFT power spectrum. + * If further scaling is applied later, use power2 instead + * and factor the 0.5 in the final scaling factor. + * @see FHT::power2() + */ + void power(float*); - /** - * Calculates an FFT power spectrum with doubled values as a - * result. The values need to be multiplied by 0.5 to be exact. - * Note that you only get @f$2^{n-1}@f$ power values for a data set - * of @f$2^n@f$ input values. This is the fastest transform. - * @see FHT::power() - */ - void power2(float *); + /** + * Calculates an FFT power spectrum with doubled values as a + * result. The values need to be multiplied by 0.5 to be exact. + * Note that you only get @f$2^{n-1}@f$ power values for a data set + * of @f$2^n@f$ input values. This is the fastest transform. + * @see FHT::power() + */ + void power2(float*); - /** - * Discrete Hartley transform of data sets with 8 values. - */ - void transform8(float *); + /** + * Discrete Hartley transform of data sets with 8 values. + */ + void transform8(float*); - void transform(float *); + void transform(float*); }; #endif diff --git a/src/core/filesystemmusicstorage.cpp b/src/core/filesystemmusicstorage.cpp index 968134483..4895540e6 100644 --- a/src/core/filesystemmusicstorage.cpp +++ b/src/core/filesystemmusicstorage.cpp @@ -17,23 +17,21 @@ #include "filesystemmusicstorage.h" #include "core/logging.h" +#include "core/utilities.h" #include #include #include FilesystemMusicStorage::FilesystemMusicStorage(const QString& root) - : root_(root) -{ -} + : root_(root) {} bool FilesystemMusicStorage::CopyToStorage(const CopyJob& job) { const QFileInfo src = QFileInfo(job.source_); - const QFileInfo dest = QFileInfo(root_ + "/" + job.destination_ ); + const QFileInfo dest = QFileInfo(root_ + "/" + job.destination_); // Don't do anything if the destination is the same as the source - if (src == dest) - return true; + if (src == dest) return true; // Create directories as required QDir dir; @@ -43,8 +41,7 @@ bool FilesystemMusicStorage::CopyToStorage(const CopyJob& job) { } // Remove the destination file if it exists and we want to overwrite - if (job.overwrite_ && dest.exists()) - QFile::remove(dest.absoluteFilePath()); + if (job.overwrite_ && dest.exists()) QFile::remove(dest.absoluteFilePath()); // Copy or move if (job.remove_original_) @@ -54,5 +51,10 @@ bool FilesystemMusicStorage::CopyToStorage(const CopyJob& job) { } bool FilesystemMusicStorage::DeleteFromStorage(const DeleteJob& job) { - return QFile::remove(job.metadata_.url().toLocalFile()); -} + QString path = job.metadata_.url().toLocalFile(); + QFileInfo fileInfo(path); + if (fileInfo.isDir()) + return Utilities::RemoveRecursive(path); + else + return QFile::remove(path); +} \ No newline at end of file diff --git a/src/core/filesystemmusicstorage.h b/src/core/filesystemmusicstorage.h index 9c7ee20d8..71cae43dc 100644 --- a/src/core/filesystemmusicstorage.h +++ b/src/core/filesystemmusicstorage.h @@ -21,7 +21,7 @@ #include "musicstorage.h" class FilesystemMusicStorage : public virtual MusicStorage { -public: + public: FilesystemMusicStorage(const QString& root); ~FilesystemMusicStorage() {} @@ -30,8 +30,8 @@ public: bool CopyToStorage(const CopyJob& job); bool DeleteFromStorage(const DeleteJob& job); -private: + private: QString root_; }; -#endif // FILESYSTEMMUSICSTORAGE_H +#endif // FILESYSTEMMUSICSTORAGE_H diff --git a/src/core/filesystemwatcherinterface.cpp b/src/core/filesystemwatcherinterface.cpp index b6afcb0af..29d8f0cbd 100644 --- a/src/core/filesystemwatcherinterface.cpp +++ b/src/core/filesystemwatcherinterface.cpp @@ -24,10 +24,10 @@ #endif FileSystemWatcherInterface::FileSystemWatcherInterface(QObject* parent) - : QObject(parent) { -} + : QObject(parent) {} -FileSystemWatcherInterface* FileSystemWatcherInterface::Create(QObject* parent) { +FileSystemWatcherInterface* FileSystemWatcherInterface::Create( + QObject* parent) { FileSystemWatcherInterface* ret; #ifdef Q_OS_DARWIN ret = new MacFSListener(parent); diff --git a/src/core/filesystemwatcherinterface.h b/src/core/filesystemwatcherinterface.h index f451f2644..22a91ec23 100644 --- a/src/core/filesystemwatcherinterface.h +++ b/src/core/filesystemwatcherinterface.h @@ -23,15 +23,15 @@ class FileSystemWatcherInterface : public QObject { Q_OBJECT public: - FileSystemWatcherInterface(QObject* parent = 0); + FileSystemWatcherInterface(QObject* parent = nullptr); virtual void Init() {} virtual void AddPath(const QString& path) = 0; virtual void RemovePath(const QString& path) = 0; virtual void Clear() = 0; - static FileSystemWatcherInterface* Create(QObject* parent = 0); + static FileSystemWatcherInterface* Create(QObject* parent = nullptr); - signals: +signals: void PathChanged(const QString& path); }; diff --git a/src/core/globalshortcutbackend.cpp b/src/core/globalshortcutbackend.cpp index 80086ed59..b06d9d70c 100644 --- a/src/core/globalshortcutbackend.cpp +++ b/src/core/globalshortcutbackend.cpp @@ -20,16 +20,11 @@ #include "globalshortcuts.h" GlobalShortcutBackend::GlobalShortcutBackend(GlobalShortcuts* parent) - : QObject(parent), - manager_(parent), - active_(false) -{ -} + : QObject(parent), manager_(parent), active_(false) {} bool GlobalShortcutBackend::Register() { bool ret = DoRegister(); - if (ret) - active_ = true; + if (ret) active_ = true; return ret; } diff --git a/src/core/globalshortcutbackend.h b/src/core/globalshortcutbackend.h index 5666dca17..3393e9861 100644 --- a/src/core/globalshortcutbackend.h +++ b/src/core/globalshortcutbackend.h @@ -25,8 +25,8 @@ class GlobalShortcuts; class GlobalShortcutBackend : public QObject { Q_OBJECT -public: - GlobalShortcutBackend(GlobalShortcuts* parent = 0); + public: + GlobalShortcutBackend(GlobalShortcuts* parent = nullptr); virtual ~GlobalShortcutBackend() {} bool is_active() const { return active_; } @@ -37,7 +37,7 @@ public: signals: void RegisterFinished(bool success); -protected: + protected: virtual bool DoRegister() = 0; virtual void DoUnregister() = 0; @@ -45,4 +45,4 @@ protected: bool active_; }; -#endif // GLOBALSHORTCUTBACKEND_H +#endif // GLOBALSHORTCUTBACKEND_H diff --git a/src/core/globalshortcuts.cpp b/src/core/globalshortcuts.cpp index d758fca78..596a6d5bf 100644 --- a/src/core/globalshortcuts.cpp +++ b/src/core/globalshortcuts.cpp @@ -28,28 +28,32 @@ #include #ifdef QT_DBUS_LIB -# include +#include #endif const char* GlobalShortcuts::kSettingsGroup = "Shortcuts"; -GlobalShortcuts::GlobalShortcuts(QWidget *parent) - : QWidget(parent), - gnome_backend_(NULL), - system_backend_(NULL), - use_gnome_(false), - rating_signals_mapper_(new QSignalMapper(this)) -{ +GlobalShortcuts::GlobalShortcuts(QWidget* parent) + : QWidget(parent), + gnome_backend_(nullptr), + system_backend_(nullptr), + use_gnome_(false), + rating_signals_mapper_(new QSignalMapper(this)) { settings_.beginGroup(kSettingsGroup); // Create actions AddShortcut("play", tr("Play"), SIGNAL(Play())); AddShortcut("pause", tr("Pause"), SIGNAL(Pause())); - AddShortcut("play_pause", tr("Play/Pause"), SIGNAL(PlayPause()), QKeySequence(Qt::Key_MediaPlay)); - AddShortcut("stop", tr("Stop"), SIGNAL(Stop()), QKeySequence(Qt::Key_MediaStop)); - AddShortcut("stop_after", tr("Stop playing after current track"), SIGNAL(StopAfter())); - AddShortcut("next_track", tr("Next track"), SIGNAL(Next()), QKeySequence(Qt::Key_MediaNext)); - AddShortcut("prev_track", tr("Previous track"), SIGNAL(Previous()), QKeySequence(Qt::Key_MediaPrevious)); + AddShortcut("play_pause", tr("Play/Pause"), SIGNAL(PlayPause()), + QKeySequence(Qt::Key_MediaPlay)); + AddShortcut("stop", tr("Stop"), SIGNAL(Stop()), + QKeySequence(Qt::Key_MediaStop)); + AddShortcut("stop_after", tr("Stop playing after current track"), + SIGNAL(StopAfter())); + AddShortcut("next_track", tr("Next track"), SIGNAL(Next()), + QKeySequence(Qt::Key_MediaNext)); + AddShortcut("prev_track", tr("Previous track"), SIGNAL(Previous()), + QKeySequence(Qt::Key_MediaPrevious)); AddShortcut("inc_volume", tr("Increase volume"), SIGNAL(IncVolume())); AddShortcut("dec_volume", tr("Decrease volume"), SIGNAL(DecVolume())); AddShortcut("mute", tr("Mute"), SIGNAL(Mute())); @@ -57,19 +61,32 @@ GlobalShortcuts::GlobalShortcuts(QWidget *parent) AddShortcut("seek_backward", tr("Seek backward"), SIGNAL(SeekBackward())); AddShortcut("show_hide", tr("Show/Hide"), SIGNAL(ShowHide())); AddShortcut("show_osd", tr("Show OSD"), SIGNAL(ShowOSD())); - AddShortcut("toggle_pretty_osd", tr("Toggle Pretty OSD"), SIGNAL(TogglePrettyOSD())); // Toggling possible only for pretty OSD - AddShortcut("shuffle_mode", tr("Change shuffle mode"), SIGNAL(CycleShuffleMode())); - AddShortcut("repeat_mode", tr("Change repeat mode"), SIGNAL(CycleRepeatMode())); - AddShortcut("toggle_last_fm_scrobbling", tr("Enable/disable Last.fm scrobbling"), SIGNAL(ToggleScrobbling())); + AddShortcut( + "toggle_pretty_osd", tr("Toggle Pretty OSD"), + SIGNAL(TogglePrettyOSD())); // Toggling possible only for pretty OSD + AddShortcut("shuffle_mode", tr("Change shuffle mode"), + SIGNAL(CycleShuffleMode())); + AddShortcut("repeat_mode", tr("Change repeat mode"), + SIGNAL(CycleRepeatMode())); + AddShortcut("toggle_last_fm_scrobbling", + tr("Enable/disable Last.fm scrobbling"), + SIGNAL(ToggleScrobbling())); - AddRatingShortcut("rate_zero_star", tr("Rate the current song 0 stars"), rating_signals_mapper_, 0); - AddRatingShortcut("rate_one_star", tr("Rate the current song 1 star"), rating_signals_mapper_, 1); - AddRatingShortcut("rate_two_star", tr("Rate the current song 2 stars"), rating_signals_mapper_, 2); - AddRatingShortcut("rate_three_star", tr("Rate the current song 3 stars"), rating_signals_mapper_, 3); - AddRatingShortcut("rate_four_star", tr("Rate the current song 4 stars"), rating_signals_mapper_, 4); - AddRatingShortcut("rate_five_star", tr("Rate the current song 5 stars"), rating_signals_mapper_, 5); + AddRatingShortcut("rate_zero_star", tr("Rate the current song 0 stars"), + rating_signals_mapper_, 0); + AddRatingShortcut("rate_one_star", tr("Rate the current song 1 star"), + rating_signals_mapper_, 1); + AddRatingShortcut("rate_two_star", tr("Rate the current song 2 stars"), + rating_signals_mapper_, 2); + AddRatingShortcut("rate_three_star", tr("Rate the current song 3 stars"), + rating_signals_mapper_, 3); + AddRatingShortcut("rate_four_star", tr("Rate the current song 4 stars"), + rating_signals_mapper_, 4); + AddRatingShortcut("rate_five_star", tr("Rate the current song 5 stars"), + rating_signals_mapper_, 5); - connect(rating_signals_mapper_, SIGNAL(mapped(int)), SIGNAL(RateCurrentSong(int))); + connect(rating_signals_mapper_, SIGNAL(mapped(int)), + SIGNAL(RateCurrentSong(int))); // Create backends - these do the actual shortcut registration gnome_backend_ = new GnomeGlobalShortcutBackend(this); @@ -98,8 +115,8 @@ void GlobalShortcuts::AddRatingShortcut(const QString& id, const QString& name, mapper->setMapping(shortcut.action, rating); } -GlobalShortcuts::Shortcut GlobalShortcuts::AddShortcut(const QString& id, const QString& name, - const QKeySequence& default_key) { +GlobalShortcuts::Shortcut GlobalShortcuts::AddShortcut( + const QString& id, const QString& name, const QKeySequence& default_key) { Shortcut shortcut; shortcut.action = new QAction(name, this); QKeySequence key_sequence = QKeySequence::fromString( @@ -122,7 +139,7 @@ bool GlobalShortcuts::IsGsdAvailable() const { #ifdef QT_DBUS_LIB return QDBusConnection::sessionBus().interface()->isServiceRegistered( GnomeGlobalShortcutBackend::kGsdService); -#else // QT_DBUS_LIB +#else // QT_DBUS_LIB return false; #endif } @@ -137,21 +154,19 @@ void GlobalShortcuts::ReloadSettings() { } void GlobalShortcuts::Unregister() { - if (gnome_backend_->is_active()) - gnome_backend_->Unregister(); - if (system_backend_->is_active()) - system_backend_->Unregister(); + if (gnome_backend_->is_active()) gnome_backend_->Unregister(); + if (system_backend_->is_active()) system_backend_->Unregister(); } void GlobalShortcuts::Register() { - if (use_gnome_ && gnome_backend_->Register()) - return; + if (use_gnome_ && gnome_backend_->Register()) return; system_backend_->Register(); } bool GlobalShortcuts::IsMacAccessibilityEnabled() const { #ifdef Q_OS_MAC - return static_cast(system_backend_)->IsAccessibilityEnabled(); + return static_cast(system_backend_) + ->IsAccessibilityEnabled(); #else return true; #endif @@ -159,6 +174,7 @@ bool GlobalShortcuts::IsMacAccessibilityEnabled() const { void GlobalShortcuts::ShowMacAccessibilityDialog() { #ifdef Q_OS_MAC - static_cast(system_backend_)->ShowAccessibilityDialog(); + static_cast(system_backend_) + ->ShowAccessibilityDialog(); #endif } diff --git a/src/core/globalshortcuts.h b/src/core/globalshortcuts.h index ff6f97563..113ad35fb 100644 --- a/src/core/globalshortcuts.h +++ b/src/core/globalshortcuts.h @@ -32,8 +32,8 @@ class QSignalMapper; class GlobalShortcuts : public QWidget { Q_OBJECT -public: - GlobalShortcuts(QWidget* parent = 0); + public: + GlobalShortcuts(QWidget* parent = nullptr); static const char* kSettingsGroup; @@ -48,7 +48,7 @@ public: bool IsGsdAvailable() const; bool IsMacAccessibilityEnabled() const; -public slots: + public slots: void ReloadSettings(); void ShowMacAccessibilityDialog(); @@ -76,14 +76,16 @@ signals: void CycleRepeatMode(); void ToggleScrobbling(); -private: + private: void AddShortcut(const QString& id, const QString& name, const char* signal, const QKeySequence& default_key = QKeySequence(0)); - void AddRatingShortcut(const QString& id, const QString& name, QSignalMapper* mapper, - int rating, const QKeySequence& default_key = QKeySequence(0)); - Shortcut AddShortcut(const QString& id, const QString& name, const QKeySequence& default_key); + void AddRatingShortcut(const QString& id, const QString& name, + QSignalMapper* mapper, int rating, + const QKeySequence& default_key = QKeySequence(0)); + Shortcut AddShortcut(const QString& id, const QString& name, + const QKeySequence& default_key); -private: + private: GlobalShortcutBackend* gnome_backend_; GlobalShortcutBackend* system_backend_; diff --git a/src/core/gnomeglobalshortcutbackend.cpp b/src/core/gnomeglobalshortcutbackend.cpp index 7c3bcf67e..46f924516 100644 --- a/src/core/gnomeglobalshortcutbackend.cpp +++ b/src/core/gnomeglobalshortcutbackend.cpp @@ -21,7 +21,7 @@ #include "core/logging.h" #ifdef QT_DBUS_LIB -# include "dbus/gnomesettingsdaemon.h" +#include "dbus/gnomesettingsdaemon.h" #endif #include @@ -30,26 +30,27 @@ #include #ifdef QT_DBUS_LIB -# include +#include #endif -const char* GnomeGlobalShortcutBackend::kGsdService = "org.gnome.SettingsDaemon"; -const char* GnomeGlobalShortcutBackend::kGsdPath = "/org/gnome/SettingsDaemon/MediaKeys"; -const char* GnomeGlobalShortcutBackend::kGsdInterface = "org.gnome.SettingsDaemon.MediaKeys"; +const char* GnomeGlobalShortcutBackend::kGsdService = + "org.gnome.SettingsDaemon"; +const char* GnomeGlobalShortcutBackend::kGsdPath = + "/org/gnome/SettingsDaemon/MediaKeys"; +const char* GnomeGlobalShortcutBackend::kGsdInterface = + "org.gnome.SettingsDaemon.MediaKeys"; GnomeGlobalShortcutBackend::GnomeGlobalShortcutBackend(GlobalShortcuts* parent) - : GlobalShortcutBackend(parent), - interface_(NULL), - is_connected_(false) -{ -} - + : GlobalShortcutBackend(parent), + interface_(nullptr), + is_connected_(false) {} bool GnomeGlobalShortcutBackend::DoRegister() { #ifdef QT_DBUS_LIB qLog(Debug) << "registering"; // Check if the GSD service is available - if (!QDBusConnection::sessionBus().interface()->isServiceRegistered(kGsdService)) { + if (!QDBusConnection::sessionBus().interface()->isServiceRegistered( + kGsdService)) { qLog(Warning) << "gnome settings daemon not registered"; return false; } @@ -64,56 +65,57 @@ bool GnomeGlobalShortcutBackend::DoRegister() { QDateTime::currentDateTime().toTime_t()); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply, this); - NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - this, SLOT(RegisterFinished(QDBusPendingCallWatcher*)), - watcher); + NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, + SLOT(RegisterFinished(QDBusPendingCallWatcher*)), watcher); return true; -#else // QT_DBUS_LIB +#else // QT_DBUS_LIB qLog(Warning) << "dbus not available"; return false; #endif } -void GnomeGlobalShortcutBackend::RegisterFinished(QDBusPendingCallWatcher* watcher) { +void GnomeGlobalShortcutBackend::RegisterFinished( + QDBusPendingCallWatcher* watcher) { #ifdef QT_DBUS_LIB QDBusMessage reply = watcher->reply(); watcher->deleteLater(); if (reply.type() == QDBusMessage::ErrorMessage) { - qLog(Warning) << "Failed to grab media keys" - << reply.errorName() <isServiceRegistered(kGsdService)) - return; - if (!interface_ || !is_connected_) + if (!QDBusConnection::sessionBus().interface()->isServiceRegistered( + kGsdService)) return; + if (!interface_ || !is_connected_) return; is_connected_ = false; interface_->ReleaseMediaPlayerKeys(QCoreApplication::applicationName()); - disconnect(interface_, SIGNAL(MediaPlayerKeyPressed(QString,QString)), - this, SLOT(GnomeMediaKeyPressed(QString,QString))); + disconnect(interface_, SIGNAL(MediaPlayerKeyPressed(QString, QString)), this, + SLOT(GnomeMediaKeyPressed(QString, QString))); #endif } -void GnomeGlobalShortcutBackend::GnomeMediaKeyPressed(const QString&, const QString& key) { - if (key == "Play") manager_->shortcuts()["play_pause"].action->trigger(); - if (key == "Stop") manager_->shortcuts()["stop"].action->trigger(); - if (key == "Next") manager_->shortcuts()["next_track"].action->trigger(); +void GnomeGlobalShortcutBackend::GnomeMediaKeyPressed(const QString&, + const QString& key) { + if (key == "Play") manager_->shortcuts()["play_pause"].action->trigger(); + if (key == "Stop") manager_->shortcuts()["stop"].action->trigger(); + if (key == "Next") manager_->shortcuts()["next_track"].action->trigger(); if (key == "Previous") manager_->shortcuts()["prev_track"].action->trigger(); } diff --git a/src/core/gnomeglobalshortcutbackend.h b/src/core/gnomeglobalshortcutbackend.h index eec34fe5e..6127648bb 100644 --- a/src/core/gnomeglobalshortcutbackend.h +++ b/src/core/gnomeglobalshortcutbackend.h @@ -27,26 +27,26 @@ class QDBusPendingCallWatcher; class GnomeGlobalShortcutBackend : public GlobalShortcutBackend { Q_OBJECT -public: + public: GnomeGlobalShortcutBackend(GlobalShortcuts* parent); static const char* kGsdService; static const char* kGsdPath; static const char* kGsdInterface; -protected: + protected: bool RegisterInNewThread() const { return true; } bool DoRegister(); void DoUnregister(); -private slots: + private slots: void RegisterFinished(QDBusPendingCallWatcher* watcher); void GnomeMediaKeyPressed(const QString& application, const QString& key); -private: + private: OrgGnomeSettingsDaemonMediaKeysInterface* interface_; bool is_connected_; }; -#endif // GNOMEGLOBALSHORTCUTBACKEND_H +#endif // GNOMEGLOBALSHORTCUTBACKEND_H diff --git a/src/core/mac_delegate.h b/src/core/mac_delegate.h index f646cf1c1..8a5aaf5a5 100644 --- a/src/core/mac_delegate.h +++ b/src/core/mac_delegate.h @@ -7,11 +7,10 @@ #import #endif - class PlatformInterface; @class SPMediaKeyTap; -@interface AppDelegate :NSObject { +@interface AppDelegate : NSObject { PlatformInterface* application_handler_; NSMenu* dock_menu_; MacGlobalShortcutBackend* shortcut_handler_; @@ -22,21 +21,23 @@ class PlatformInterface; #endif } -- (id) initWithHandler: (PlatformInterface*)handler; +- (id)initWithHandler:(PlatformInterface*)handler; // NSApplicationDelegate -- (BOOL) applicationShouldHandleReopen: (NSApplication*)app hasVisibleWindows:(BOOL)flag; -- (NSMenu*) applicationDockMenu: (NSApplication*)sender; +- (BOOL)applicationShouldHandleReopen:(NSApplication*)app + hasVisibleWindows:(BOOL)flag; +- (NSMenu*)applicationDockMenu:(NSApplication*)sender; - (void)applicationDidFinishLaunching:(NSNotification*)aNotification; -- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication*)sender; +- (NSApplicationTerminateReply)applicationShouldTerminate: + (NSApplication*)sender; // NSUserNotificationCenterDelegate -- (BOOL) userNotificationCenter: (id)center - shouldPresentNotification: (id)notification; +- (BOOL)userNotificationCenter:(id)center + shouldPresentNotification:(id)notification; -- (void) setDockMenu: (NSMenu*)menu; -- (MacGlobalShortcutBackend*) shortcut_handler; -- (void) setShortcutHandler: (MacGlobalShortcutBackend*)backend; -- (void) mediaKeyTap: (SPMediaKeyTap*)keyTap receivedMediaKeyEvent:(NSEvent*)event; +- (void)setDockMenu:(NSMenu*)menu; +- (MacGlobalShortcutBackend*)shortcut_handler; +- (void)setShortcutHandler:(MacGlobalShortcutBackend*)backend; +- (void)mediaKeyTap:(SPMediaKeyTap*)keyTap + receivedMediaKeyEvent:(NSEvent*)event; @end - diff --git a/src/core/mac_startup.mm b/src/core/mac_startup.mm index c1745326c..9d90ce941 100644 --- a/src/core/mac_startup.mm +++ b/src/core/mac_startup.mm @@ -97,7 +97,7 @@ static BreakpadRef InitBreakpad() { NSDictionary* plist = [[NSBundle mainBundle] infoDictionary]; if (plist) { breakpad = BreakpadCreate(plist); - BreakpadSetFilterCallback(breakpad, &BreakpadCallback, NULL); + BreakpadSetFilterCallback(breakpad, &BreakpadCallback, nullptr); } [pool release]; return breakpad; diff --git a/src/core/mac_utilities.h b/src/core/mac_utilities.h index fadaab0fd..21df859cf 100644 --- a/src/core/mac_utilities.h +++ b/src/core/mac_utilities.h @@ -30,5 +30,4 @@ namespace mac { QKeySequence KeySequenceFromNSEvent(NSEvent* event); void DumpDictionary(CFDictionaryRef dict); float GetDevicePixelRatio(QWidget* widget); - } diff --git a/src/core/macfslistener.h b/src/core/macfslistener.h index be83de5dd..de816dfbf 100644 --- a/src/core/macfslistener.h +++ b/src/core/macfslistener.h @@ -30,13 +30,13 @@ class MacFSListener : public FileSystemWatcherInterface { Q_OBJECT public: - explicit MacFSListener(QObject* parent = 0); + explicit MacFSListener(QObject* parent = nullptr); void Init(); void AddPath(const QString& path); void RemovePath(const QString& path); void Clear(); - signals: +signals: void PathChanged(const QString& path); private slots: @@ -45,13 +45,10 @@ class MacFSListener : public FileSystemWatcherInterface { private: void UpdateStreamAsync(); - static void EventStreamCallback( - ConstFSEventStreamRef stream, - void* user_data, - size_t num_events, - void* event_paths, - const FSEventStreamEventFlags event_flags[], - const FSEventStreamEventId event_ids[]); + static void EventStreamCallback(ConstFSEventStreamRef stream, void* user_data, + size_t num_events, void* event_paths, + const FSEventStreamEventFlags event_flags[], + const FSEventStreamEventId event_ids[]); CFRunLoopRef run_loop_; FSEventStreamRef stream_; diff --git a/src/core/macfslistener.mm b/src/core/macfslistener.mm index 1c683b966..746109808 100644 --- a/src/core/macfslistener.mm +++ b/src/core/macfslistener.mm @@ -25,7 +25,7 @@ #include "core/scoped_nsobject.h" MacFSListener::MacFSListener(QObject* parent) - : FileSystemWatcherInterface(parent), run_loop_(NULL), stream_(NULL) { + : FileSystemWatcherInterface(parent), run_loop_(nullptr), stream_(nullptr) { update_timer_.setSingleShot(true); update_timer_.setInterval(2000); connect(&update_timer_, SIGNAL(timeout()), SLOT(UpdateStream())); @@ -73,7 +73,7 @@ void MacFSListener::UpdateStream() { FSEventStreamStop(stream_); FSEventStreamInvalidate(stream_); FSEventStreamRelease(stream_); - stream_ = NULL; + stream_ = nullptr; } if (paths_.empty()) { @@ -93,7 +93,7 @@ void MacFSListener::UpdateStream() { context.info = this; CFAbsoluteTime latency = 1.0; - stream_ = FSEventStreamCreate(NULL, &EventStreamCallback, &context, // Copied + stream_ = FSEventStreamCreate(nullptr, &EventStreamCallback, &context, // Copied reinterpret_cast(array.get()), kFSEventStreamEventIdSinceNow, latency, kFSEventStreamCreateFlagNone); diff --git a/src/core/macglobalshortcutbackend.h b/src/core/macglobalshortcutbackend.h index 4e42be366..49ef44aac 100644 --- a/src/core/macglobalshortcutbackend.h +++ b/src/core/macglobalshortcutbackend.h @@ -18,20 +18,20 @@ #ifndef MACGLOBALSHORTCUTBACKEND_H #define MACGLOBALSHORTCUTBACKEND_H +#include + #include "globalshortcutbackend.h" #include #include -#include - class MacGlobalShortcutBackendPrivate; class QAction; class MacGlobalShortcutBackend : public GlobalShortcutBackend { Q_OBJECT -public: + public: MacGlobalShortcutBackend(GlobalShortcuts* parent); virtual ~MacGlobalShortcutBackend(); @@ -40,17 +40,17 @@ public: void MacMediaKeyPressed(int key); -protected: + protected: bool DoRegister(); void DoUnregister(); -private: + private: bool KeyPressed(const QKeySequence& sequence); QMap shortcuts_; friend class MacGlobalShortcutBackendPrivate; - boost::scoped_ptr p_; + std::unique_ptr p_; }; -#endif // MACGLOBALSHORTCUTBACKEND_H +#endif // MACGLOBALSHORTCUTBACKEND_H diff --git a/src/core/macglobalshortcutbackend.mm b/src/core/macglobalshortcutbackend.mm index 575421084..566a93cc9 100644 --- a/src/core/macglobalshortcutbackend.mm +++ b/src/core/macglobalshortcutbackend.mm @@ -17,23 +17,27 @@ #include "macglobalshortcutbackend.h" -#include "config.h" -#include "globalshortcuts.h" -#include "mac_startup.h" -#import "mac_utilities.h" - #include +#include +#include +#include +#include + #include #include #include #include #include -#include -#include -#include -#include +#include "config.h" +#include "core/globalshortcuts.h" +#include "core/logging.h" +#include "core/mac_startup.h" +#include "core/utilities.h" + +#import "core/mac_utilities.h" +#import "mac/SBSystemPreferences.h" class MacGlobalShortcutBackendPrivate : boost::noncopyable { public: @@ -134,10 +138,34 @@ void MacGlobalShortcutBackend::ShowAccessibilityDialog() { NSArray* paths = NSSearchPathForDirectoriesInDomains( NSPreferencePanesDirectory, NSSystemDomainMask, YES); if ([paths count] == 1) { - NSURL* prefpane_url = - [NSURL fileURLWithPath:[[paths objectAtIndex:0] - stringByAppendingPathComponent: - @"UniversalAccessPref.prefPane"]]; - [[NSWorkspace sharedWorkspace] openURL:prefpane_url]; + NSURL* prefpane_url = nil; + if (Utilities::GetMacVersion() < 9) { + prefpane_url = + [NSURL fileURLWithPath:[[paths objectAtIndex:0] + stringByAppendingPathComponent: + @"UniversalAccessPref.prefPane"]]; + [[NSWorkspace sharedWorkspace] openURL:prefpane_url]; + } else { + SBSystemPreferencesApplication* system_prefs = [SBApplication + applicationWithBundleIdentifier:@"com.apple.systempreferences"]; + [system_prefs activate]; + + SBElementArray* panes = [system_prefs panes]; + SBSystemPreferencesPane* security_pane = nil; + for (SBSystemPreferencesPane* pane : panes) { + if ([[pane id] isEqualToString:@"com.apple.preference.security"]) { + security_pane = pane; + break; + } + } + [system_prefs setCurrentPane:security_pane]; + + SBElementArray* anchors = [security_pane anchors]; + for (SBSystemPreferencesAnchor* anchor : anchors) { + if ([[anchor name] isEqualToString:@"Privacy_Accessibility"]) { + [anchor reveal]; + } + } + } } } diff --git a/src/core/mergedproxymodel.cpp b/src/core/mergedproxymodel.cpp index 42b4c3cb8..4a090776f 100644 --- a/src/core/mergedproxymodel.cpp +++ b/src/core/mergedproxymodel.cpp @@ -22,55 +22,90 @@ #include -std::size_t hash_value(const QModelIndex& index) { - return qHash(index); -} +// boost::multi_index still relies on these being in the global namespace. +using std::placeholders::_1; +using std::placeholders::_2; + +#include +#include +#include +#include + +using boost::multi_index::hashed_unique; +using boost::multi_index::identity; +using boost::multi_index::indexed_by; +using boost::multi_index::member; +using boost::multi_index::multi_index_container; +using boost::multi_index::ordered_unique; +using boost::multi_index::tag; + +std::size_t hash_value(const QModelIndex& index) { return qHash(index); } + +namespace { + +struct Mapping { + Mapping(const QModelIndex& _source_index) : source_index(_source_index) {} + + QModelIndex source_index; +}; + +struct tag_by_source {}; +struct tag_by_pointer {}; + +} // namespace + +class MergedProxyModelPrivate { + private: + typedef multi_index_container< + Mapping*, + indexed_by< + hashed_unique, + member >, + ordered_unique, identity > > > + MappingContainer; + + public: + MappingContainer mappings_; +}; MergedProxyModel::MergedProxyModel(QObject* parent) - : QAbstractProxyModel(parent), - resetting_model_(NULL) -{ -} + : QAbstractProxyModel(parent), + resetting_model_(nullptr), + p_(new MergedProxyModelPrivate) {} -MergedProxyModel::~MergedProxyModel() { - DeleteAllMappings(); -} +MergedProxyModel::~MergedProxyModel() { DeleteAllMappings(); } void MergedProxyModel::DeleteAllMappings() { - MappingContainer::index::type::iterator begin = - mappings_.get().begin(); - MappingContainer::index::type::iterator end = - mappings_.get().end(); + const auto& begin = p_->mappings_.get().begin(); + const auto& end = p_->mappings_.get().end(); qDeleteAll(begin, end); } void MergedProxyModel::AddSubModel(const QModelIndex& source_parent, QAbstractItemModel* submodel) { connect(submodel, SIGNAL(modelReset()), this, SLOT(SubModelReset())); - connect(submodel, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeInserted(QModelIndex,int,int))); - connect(submodel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - connect(submodel, SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(RowsInserted(QModelIndex,int,int))); - connect(submodel, SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(RowsRemoved(QModelIndex,int,int))); - connect(submodel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(DataChanged(QModelIndex,QModelIndex))); + connect(submodel, SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)), this, + SLOT(RowsAboutToBeInserted(QModelIndex, int, int))); + connect(submodel, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), this, + SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + connect(submodel, SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(RowsInserted(QModelIndex, int, int))); + connect(submodel, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(RowsRemoved(QModelIndex, int, int))); + connect(submodel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(DataChanged(QModelIndex, QModelIndex))); QModelIndex proxy_parent = mapFromSource(source_parent); const int rows = submodel->rowCount(); - if (rows) - beginInsertRows(proxy_parent, 0, rows-1); + if (rows) beginInsertRows(proxy_parent, 0, rows - 1); merge_points_.insert(submodel, source_parent); - if (rows) - endInsertRows(); + if (rows) endInsertRows(); } -void MergedProxyModel::RemoveSubModel(const QModelIndex &source_parent) { +void MergedProxyModel::RemoveSubModel(const QModelIndex& source_parent) { // Find the submodel that the parent corresponded to QAbstractItemModel* submodel = merge_points_.key(source_parent); merge_points_.remove(submodel); @@ -85,17 +120,15 @@ void MergedProxyModel::RemoveSubModel(const QModelIndex &source_parent) { resetting_model_ = submodel; beginRemoveRows(proxy_parent, 0, std::numeric_limits::max() - 1); endRemoveRows(); - resetting_model_ = NULL; + resetting_model_ = nullptr; // Delete all the mappings that reference the submodel - MappingContainer::index::type::iterator it = - mappings_.get().begin(); - MappingContainer::index::type::iterator end = - mappings_.get().end(); + auto it = p_->mappings_.get().begin(); + auto end = p_->mappings_.get().end(); while (it != end) { if ((*it)->source_index.model() == submodel) { delete *it; - it = mappings_.get().erase(it); + it = p_->mappings_.get().erase(it); } else { ++it; } @@ -104,40 +137,42 @@ void MergedProxyModel::RemoveSubModel(const QModelIndex &source_parent) { void MergedProxyModel::setSourceModel(QAbstractItemModel* source_model) { if (sourceModel()) { - disconnect(sourceModel(), SIGNAL(modelReset()), this, SLOT(SourceModelReset())); - disconnect(sourceModel(), SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeInserted(QModelIndex,int,int))); - disconnect(sourceModel(), SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - disconnect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(RowsInserted(QModelIndex,int,int))); - disconnect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(RowsRemoved(QModelIndex,int,int))); - disconnect(sourceModel(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(DataChanged(QModelIndex,QModelIndex))); - disconnect(sourceModel(), SIGNAL(layoutAboutToBeChanged()), - this, SLOT(LayoutAboutToBeChanged())); - disconnect(sourceModel(), SIGNAL(layoutChanged()), - this, SLOT(LayoutChanged())); + disconnect(sourceModel(), SIGNAL(modelReset()), this, + SLOT(SourceModelReset())); + disconnect(sourceModel(), + SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)), this, + SLOT(RowsAboutToBeInserted(QModelIndex, int, int))); + disconnect(sourceModel(), + SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), this, + SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + disconnect(sourceModel(), SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(RowsInserted(QModelIndex, int, int))); + disconnect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(RowsRemoved(QModelIndex, int, int))); + disconnect(sourceModel(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), + this, SLOT(DataChanged(QModelIndex, QModelIndex))); + disconnect(sourceModel(), SIGNAL(layoutAboutToBeChanged()), this, + SLOT(LayoutAboutToBeChanged())); + disconnect(sourceModel(), SIGNAL(layoutChanged()), this, + SLOT(LayoutChanged())); } QAbstractProxyModel::setSourceModel(source_model); connect(sourceModel(), SIGNAL(modelReset()), this, SLOT(SourceModelReset())); - connect(sourceModel(), SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeInserted(QModelIndex,int,int))); - connect(sourceModel(), SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - connect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(RowsInserted(QModelIndex,int,int))); - connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(RowsRemoved(QModelIndex,int,int))); - connect(sourceModel(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(DataChanged(QModelIndex,QModelIndex))); - connect(sourceModel(), SIGNAL(layoutAboutToBeChanged()), - this, SLOT(LayoutAboutToBeChanged())); - connect(sourceModel(), SIGNAL(layoutChanged()), - this, SLOT(LayoutChanged())); + connect(sourceModel(), SIGNAL(rowsAboutToBeInserted(QModelIndex, int, int)), + this, SLOT(RowsAboutToBeInserted(QModelIndex, int, int))); + connect(sourceModel(), SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), + this, SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + connect(sourceModel(), SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(RowsInserted(QModelIndex, int, int))); + connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(RowsRemoved(QModelIndex, int, int))); + connect(sourceModel(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(DataChanged(QModelIndex, QModelIndex))); + connect(sourceModel(), SIGNAL(layoutAboutToBeChanged()), this, + SLOT(LayoutAboutToBeChanged())); + connect(sourceModel(), SIGNAL(layoutChanged()), this, SLOT(LayoutChanged())); } void MergedProxyModel::SourceModelReset() { @@ -145,7 +180,7 @@ void MergedProxyModel::SourceModelReset() { DeleteAllMappings(); // Clear the containers - mappings_.clear(); + p_->mappings_.clear(); merge_points_.clear(); // Reset the proxy @@ -167,17 +202,15 @@ void MergedProxyModel::SubModelReset() { resetting_model_ = submodel; beginRemoveRows(proxy_parent, 0, std::numeric_limits::max() - 1); endRemoveRows(); - resetting_model_ = NULL; + resetting_model_ = nullptr; // Delete all the mappings that reference the submodel - MappingContainer::index::type::iterator it = - mappings_.get().begin(); - MappingContainer::index::type::iterator end = - mappings_.get().end(); + auto it = p_->mappings_.get().begin(); + auto end = p_->mappings_.get().end(); while (it != end) { if ((*it)->source_index.model() == submodel) { delete *it; - it = mappings_.get().erase(it); + it = p_->mappings_.get().erase(it); } else { ++it; } @@ -186,15 +219,15 @@ void MergedProxyModel::SubModelReset() { // "Insert" items from the newly reset submodel int count = submodel->rowCount(); if (count) { - beginInsertRows(proxy_parent, 0, count-1); + beginInsertRows(proxy_parent, 0, count - 1); endInsertRows(); } emit SubModelReset(proxy_parent, submodel); } -QModelIndex MergedProxyModel::GetActualSourceParent(const QModelIndex& source_parent, - QAbstractItemModel* model) const { +QModelIndex MergedProxyModel::GetActualSourceParent( + const QModelIndex& source_parent, QAbstractItemModel* model) const { if (!source_parent.isValid() && model != sourceModel()) return merge_points_.value(model); return source_parent; @@ -202,8 +235,9 @@ QModelIndex MergedProxyModel::GetActualSourceParent(const QModelIndex& source_pa void MergedProxyModel::RowsAboutToBeInserted(const QModelIndex& source_parent, int start, int end) { - beginInsertRows(mapFromSource(GetActualSourceParent( - source_parent, static_cast(sender()))), + beginInsertRows( + mapFromSource(GetActualSourceParent( + source_parent, static_cast(sender()))), start, end); } @@ -213,8 +247,9 @@ void MergedProxyModel::RowsInserted(const QModelIndex&, int, int) { void MergedProxyModel::RowsAboutToBeRemoved(const QModelIndex& source_parent, int start, int end) { - beginRemoveRows(mapFromSource(GetActualSourceParent( - source_parent, static_cast(sender()))), + beginRemoveRows( + mapFromSource(GetActualSourceParent( + source_parent, static_cast(sender()))), start, end); } @@ -222,41 +257,39 @@ void MergedProxyModel::RowsRemoved(const QModelIndex&, int, int) { endRemoveRows(); } -QModelIndex MergedProxyModel::mapToSource(const QModelIndex& proxy_index) const { - if (!proxy_index.isValid()) - return QModelIndex(); +QModelIndex MergedProxyModel::mapToSource(const QModelIndex& proxy_index) + const { + if (!proxy_index.isValid()) return QModelIndex(); Mapping* mapping = static_cast(proxy_index.internalPointer()); - if (mappings_.get().find(mapping) == - mappings_.get().end()) - return QModelIndex(); - if (mapping->source_index.model() == resetting_model_) + if (p_->mappings_.get().find(mapping) == + p_->mappings_.get().end()) return QModelIndex(); + if (mapping->source_index.model() == resetting_model_) return QModelIndex(); return mapping->source_index; } -QModelIndex MergedProxyModel::mapFromSource(const QModelIndex& source_index) const { - if (!source_index.isValid()) - return QModelIndex(); - if (source_index.model() == resetting_model_) - return QModelIndex(); +QModelIndex MergedProxyModel::mapFromSource(const QModelIndex& source_index) + const { + if (!source_index.isValid()) return QModelIndex(); + if (source_index.model() == resetting_model_) return QModelIndex(); // Add a mapping if we don't have one already - MappingContainer::index::type::iterator it = - mappings_.get().find(source_index); + const auto& it = p_->mappings_.get().find(source_index); Mapping* mapping; - if (it != mappings_.get().end()) { + if (it != p_->mappings_.get().end()) { mapping = *it; } else { mapping = new Mapping(source_index); - const_cast(this)->mappings_.insert(mapping); + const_cast(this)->p_->mappings_.insert(mapping); } return createIndex(source_index.row(), source_index.column(), mapping); } -QModelIndex MergedProxyModel::index(int row, int column, const QModelIndex &parent) const { +QModelIndex MergedProxyModel::index(int row, int column, + const QModelIndex& parent) const { QModelIndex source_index; if (!parent.isValid()) { @@ -274,26 +307,23 @@ QModelIndex MergedProxyModel::index(int row, int column, const QModelIndex &pare return mapFromSource(source_index); } -QModelIndex MergedProxyModel::parent(const QModelIndex &child) const { +QModelIndex MergedProxyModel::parent(const QModelIndex& child) const { QModelIndex source_child = mapToSource(child); if (source_child.model() == sourceModel()) return mapFromSource(source_child.parent()); - if (!IsKnownModel(source_child.model())) - return QModelIndex(); + if (!IsKnownModel(source_child.model())) return QModelIndex(); if (!source_child.parent().isValid()) return mapFromSource(merge_points_.value(GetModel(source_child))); return mapFromSource(source_child.parent()); } -int MergedProxyModel::rowCount(const QModelIndex &parent) const { - if (!parent.isValid()) - return sourceModel()->rowCount(QModelIndex()); +int MergedProxyModel::rowCount(const QModelIndex& parent) const { + if (!parent.isValid()) return sourceModel()->rowCount(QModelIndex()); QModelIndex source_parent = mapToSource(parent); - if (!IsKnownModel(source_parent.model())) - return 0; + if (!IsKnownModel(source_parent.model())) return 0; const QAbstractItemModel* child_model = merge_points_.key(source_parent); if (child_model) { @@ -307,27 +337,22 @@ int MergedProxyModel::rowCount(const QModelIndex &parent) const { return source_parent.model()->rowCount(source_parent); } -int MergedProxyModel::columnCount(const QModelIndex &parent) const { - if (!parent.isValid()) - return sourceModel()->columnCount(QModelIndex()); +int MergedProxyModel::columnCount(const QModelIndex& parent) const { + if (!parent.isValid()) return sourceModel()->columnCount(QModelIndex()); QModelIndex source_parent = mapToSource(parent); - if (!IsKnownModel(source_parent.model())) - return 0; + if (!IsKnownModel(source_parent.model())) return 0; const QAbstractItemModel* child_model = merge_points_.key(source_parent); - if (child_model) - return child_model->columnCount(QModelIndex()); + if (child_model) return child_model->columnCount(QModelIndex()); return source_parent.model()->columnCount(source_parent); } -bool MergedProxyModel::hasChildren(const QModelIndex &parent) const { - if (!parent.isValid()) - return sourceModel()->hasChildren(QModelIndex()); +bool MergedProxyModel::hasChildren(const QModelIndex& parent) const { + if (!parent.isValid()) return sourceModel()->hasChildren(QModelIndex()); QModelIndex source_parent = mapToSource(parent); - if (!IsKnownModel(source_parent.model())) - return false; + if (!IsKnownModel(source_parent.model())) return false; const QAbstractItemModel* child_model = merge_points_.key(source_parent); @@ -339,29 +364,27 @@ bool MergedProxyModel::hasChildren(const QModelIndex &parent) const { QVariant MergedProxyModel::data(const QModelIndex& proxyIndex, int role) const { QModelIndex source_index = mapToSource(proxyIndex); - if (!IsKnownModel(source_index.model())) - return QVariant(); + if (!IsKnownModel(source_index.model())) return QVariant(); return source_index.model()->data(source_index, role); } -QMap MergedProxyModel::itemData(const QModelIndex& proxy_index) const { +QMap MergedProxyModel::itemData(const QModelIndex& proxy_index) + const { QModelIndex source_index = mapToSource(proxy_index); - if (!source_index.isValid()) - return sourceModel()->itemData(QModelIndex()); + if (!source_index.isValid()) return sourceModel()->itemData(QModelIndex()); return source_index.model()->itemData(source_index); } -Qt::ItemFlags MergedProxyModel::flags(const QModelIndex &index) const { +Qt::ItemFlags MergedProxyModel::flags(const QModelIndex& index) const { QModelIndex source_index = mapToSource(index); - if (!source_index.isValid()) - return sourceModel()->flags(QModelIndex()); + if (!source_index.isValid()) return sourceModel()->flags(QModelIndex()); return source_index.model()->flags(source_index); } -bool MergedProxyModel::setData(const QModelIndex &index, const QVariant &value, +bool MergedProxyModel::setData(const QModelIndex& index, const QVariant& value, int role) { QModelIndex source_index = mapToSource(index); @@ -374,16 +397,15 @@ QStringList MergedProxyModel::mimeTypes() const { QStringList ret; ret << sourceModel()->mimeTypes(); - foreach (const QAbstractItemModel* model, merge_points_.keys()) { + for (const QAbstractItemModel* model : merge_points_.keys()) { ret << model->mimeTypes(); } return ret; } -QMimeData* MergedProxyModel::mimeData(const QModelIndexList &indexes) const { - if (indexes.isEmpty()) - return 0; +QMimeData* MergedProxyModel::mimeData(const QModelIndexList& indexes) const { + if (indexes.isEmpty()) return 0; // Only ask the first index's model const QAbstractItemModel* model = mapToSource(indexes[0]).model(); @@ -394,17 +416,18 @@ QMimeData* MergedProxyModel::mimeData(const QModelIndexList &indexes) const { // Only ask about the indexes that are actually in that model QModelIndexList indexes_in_model; - foreach (const QModelIndex& proxy_index, indexes) { + for (const QModelIndex& proxy_index : indexes) { QModelIndex source_index = mapToSource(proxy_index); - if (source_index.model() != model) - continue; + if (source_index.model() != model) continue; indexes_in_model << source_index; } return model->mimeData(indexes_in_model); } -bool MergedProxyModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) { +bool MergedProxyModel::dropMimeData(const QMimeData* data, + Qt::DropAction action, int row, int column, + const QModelIndex& parent) { if (!parent.isValid()) { return false; } @@ -412,17 +435,16 @@ bool MergedProxyModel::dropMimeData(const QMimeData* data, Qt::DropAction action return sourceModel()->dropMimeData(data, action, row, column, parent); } -QModelIndex MergedProxyModel::FindSourceParent(const QModelIndex& proxy_index) const { - if (!proxy_index.isValid()) - return QModelIndex(); +QModelIndex MergedProxyModel::FindSourceParent(const QModelIndex& proxy_index) + const { + if (!proxy_index.isValid()) return QModelIndex(); QModelIndex source_index = mapToSource(proxy_index); - if (source_index.model() == sourceModel()) - return source_index; + if (source_index.model() == sourceModel()) return source_index; return merge_points_.value(GetModel(source_index)); } -bool MergedProxyModel::canFetchMore(const QModelIndex &parent) const { +bool MergedProxyModel::canFetchMore(const QModelIndex& parent) const { QModelIndex source_index = mapToSource(parent); if (!source_index.isValid()) @@ -439,34 +461,33 @@ void MergedProxyModel::fetchMore(const QModelIndex& parent) { GetModel(source_index)->fetchMore(source_index); } -QAbstractItemModel* MergedProxyModel::GetModel(const QModelIndex& source_index) const { +QAbstractItemModel* MergedProxyModel::GetModel(const QModelIndex& source_index) + const { // This is essentially const_cast(source_index.model()), // but without the const_cast const QAbstractItemModel* const_model = source_index.model(); - if (const_model == sourceModel()) - return sourceModel(); - foreach (QAbstractItemModel* submodel, merge_points_.keys()) { - if (submodel == const_model) - return submodel; + if (const_model == sourceModel()) return sourceModel(); + for (QAbstractItemModel* submodel : merge_points_.keys()) { + if (submodel == const_model) return submodel; } - return NULL; + return nullptr; } -void MergedProxyModel::DataChanged(const QModelIndex& top_left, const QModelIndex& bottom_right) { +void MergedProxyModel::DataChanged(const QModelIndex& top_left, + const QModelIndex& bottom_right) { emit dataChanged(mapFromSource(top_left), mapFromSource(bottom_right)); } void MergedProxyModel::LayoutAboutToBeChanged() { old_merge_points_.clear(); - foreach (QAbstractItemModel* key, merge_points_.keys()) { + for (QAbstractItemModel* key : merge_points_.keys()) { old_merge_points_[key] = merge_points_.value(key); } } void MergedProxyModel::LayoutChanged() { - foreach (QAbstractItemModel* key, merge_points_.keys()) { - if (!old_merge_points_.contains(key)) - continue; + for (QAbstractItemModel* key : merge_points_.keys()) { + if (!old_merge_points_.contains(key)) continue; const int old_row = old_merge_points_[key].row(); const int new_row = merge_points_[key].row(); @@ -485,17 +506,19 @@ bool MergedProxyModel::IsKnownModel(const QAbstractItemModel* model) const { return false; } -QModelIndexList MergedProxyModel::mapFromSource(const QModelIndexList& source_indexes) const { +QModelIndexList MergedProxyModel::mapFromSource( + const QModelIndexList& source_indexes) const { QModelIndexList ret; - foreach (const QModelIndex& index, source_indexes) { + for (const QModelIndex& index : source_indexes) { ret << mapFromSource(index); } return ret; } -QModelIndexList MergedProxyModel::mapToSource(const QModelIndexList& proxy_indexes) const { +QModelIndexList MergedProxyModel::mapToSource( + const QModelIndexList& proxy_indexes) const { QModelIndexList ret; - foreach (const QModelIndex& index, proxy_indexes) { + for (const QModelIndex& index : proxy_indexes) { ret << mapToSource(index); } return ret; diff --git a/src/core/mergedproxymodel.h b/src/core/mergedproxymodel.h index c8b04ec7c..24dbe47c3 100644 --- a/src/core/mergedproxymodel.h +++ b/src/core/mergedproxymodel.h @@ -18,32 +18,24 @@ #ifndef MERGEDPROXYMODEL_H #define MERGEDPROXYMODEL_H +#include + #include -#include -#include -#include -#include - -using boost::multi_index::multi_index_container; -using boost::multi_index::indexed_by; -using boost::multi_index::hashed_unique; -using boost::multi_index::ordered_unique; -using boost::multi_index::tag; -using boost::multi_index::member; -using boost::multi_index::identity; - std::size_t hash_value(const QModelIndex& index); +class MergedProxyModelPrivate; + class MergedProxyModel : public QAbstractProxyModel { Q_OBJECT public: - MergedProxyModel(QObject* parent = 0); + MergedProxyModel(QObject* parent = nullptr); ~MergedProxyModel(); // Make another model appear as a child of the given item in the source model. - void AddSubModel(const QModelIndex& source_parent, QAbstractItemModel* submodel); + void AddSubModel(const QModelIndex& source_parent, + QAbstractItemModel* submodel); void RemoveSubModel(const QModelIndex& source_parent); // Find the item in the source model that is the parent of the model @@ -52,45 +44,50 @@ class MergedProxyModel : public QAbstractProxyModel { QModelIndex FindSourceParent(const QModelIndex& proxy_index) const; // QAbstractItemModel - QModelIndex index(int row, int column, const QModelIndex &parent) const; - QModelIndex parent(const QModelIndex &child) const; - int rowCount(const QModelIndex &parent) const; - int columnCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &proxyIndex, int role = Qt::DisplayRole) const; - bool hasChildren(const QModelIndex &parent) const; - QMap itemData(const QModelIndex &proxyIndex) const; - Qt::ItemFlags flags(const QModelIndex &index) const; - bool setData(const QModelIndex &index, const QVariant &value, int role); + QModelIndex index(int row, int column, const QModelIndex& parent) const; + QModelIndex parent(const QModelIndex& child) const; + int rowCount(const QModelIndex& parent) const; + int columnCount(const QModelIndex& parent) const; + QVariant data(const QModelIndex& proxyIndex, + int role = Qt::DisplayRole) const; + bool hasChildren(const QModelIndex& parent) const; + QMap itemData(const QModelIndex& proxyIndex) const; + Qt::ItemFlags flags(const QModelIndex& index) const; + bool setData(const QModelIndex& index, const QVariant& value, int role); QStringList mimeTypes() const; - QMimeData* mimeData(const QModelIndexList &indexes) const; - bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent); - bool canFetchMore(const QModelIndex &parent) const; + QMimeData* mimeData(const QModelIndexList& indexes) const; + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int column, const QModelIndex& parent); + bool canFetchMore(const QModelIndex& parent) const; void fetchMore(const QModelIndex& parent); // QAbstractProxyModel // Note that these implementations of map{To,From}Source will not always // give you an index in sourceModel(), you might get an index in one of the // child models instead. - QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; - QModelIndex mapToSource(const QModelIndex &proxyIndex) const; - void setSourceModel(QAbstractItemModel *sourceModel); + QModelIndex mapFromSource(const QModelIndex& sourceIndex) const; + QModelIndex mapToSource(const QModelIndex& proxyIndex) const; + void setSourceModel(QAbstractItemModel* sourceModel); // Convenience functions that call map{To,From}Source multiple times. QModelIndexList mapFromSource(const QModelIndexList& source_indexes) const; QModelIndexList mapToSource(const QModelIndexList& proxy_indexes) const; - signals: +signals: void SubModelReset(const QModelIndex& root, QAbstractItemModel* model); private slots: void SourceModelReset(); void SubModelReset(); - void RowsAboutToBeInserted(const QModelIndex& source_parent, int start, int end); + void RowsAboutToBeInserted(const QModelIndex& source_parent, int start, + int end); void RowsInserted(const QModelIndex& source_parent, int start, int end); - void RowsAboutToBeRemoved(const QModelIndex& source_parent, int start, int end); + void RowsAboutToBeRemoved(const QModelIndex& source_parent, int start, + int end); void RowsRemoved(const QModelIndex& source_parent, int start, int end); - void DataChanged(const QModelIndex& top_left, const QModelIndex& bottom_right); + void DataChanged(const QModelIndex& top_left, + const QModelIndex& bottom_right); void LayoutAboutToBeChanged(); void LayoutChanged(); @@ -102,30 +99,12 @@ class MergedProxyModel : public QAbstractProxyModel { void DeleteAllMappings(); bool IsKnownModel(const QAbstractItemModel* model) const; - struct Mapping { - Mapping(const QModelIndex& _source_index) - : source_index(_source_index) {} - - QModelIndex source_index; - }; - - struct tag_by_source {}; - struct tag_by_pointer {}; - typedef multi_index_container< - Mapping*, - indexed_by< - hashed_unique, - member >, - ordered_unique, - identity > - > - > MappingContainer; - - MappingContainer mappings_; QMap merge_points_; QAbstractItemModel* resetting_model_; QMap old_merge_points_; + + std::unique_ptr p_; }; -#endif // MERGEDPROXYMODEL_H +#endif // MERGEDPROXYMODEL_H diff --git a/src/core/metatypes.cpp b/src/core/metatypes.cpp index ee0151cc7..40ee5d9e1 100644 --- a/src/core/metatypes.cpp +++ b/src/core/metatypes.cpp @@ -6,6 +6,7 @@ #include "config.h" #include "covers/albumcoverfetcher.h" #include "engines/enginebase.h" +#include "engines/gstengine.h" #include "globalsearch/searchprovider.h" #include "internet/digitallyimportedclient.h" #include "internet/geolocator.h" @@ -16,14 +17,16 @@ #include "podcasts/podcast.h" #include "ui/equalizer.h" +#ifdef HAVE_VK +#include "internet/vkservice.h" +#endif + #ifdef HAVE_DBUS #include #include "core/mpris2.h" #include "dbus/metatypes.h" #endif -class GstBuffer; -class GstElement; class GstEnginePipeline; class QNetworkReply; @@ -32,7 +35,8 @@ void RegisterMetaTypes() { qRegisterMetaType("const char*"); qRegisterMetaType("CoverSearchResult"); qRegisterMetaType("CoverSearchResults"); - qRegisterMetaType("DigitallyImportedClient::Channel"); + qRegisterMetaType( + "DigitallyImportedClient::Channel"); qRegisterMetaType("Directory"); qRegisterMetaType("DirectoryList"); qRegisterMetaType("Engine::SimpleMetaBundle"); @@ -42,6 +46,7 @@ void RegisterMetaTypes() { qRegisterMetaType("Geolocator::LatLng"); qRegisterMetaType("GstBuffer*"); qRegisterMetaType("GstElement*"); + qRegisterMetaType("GstEngine::OutputDetails"); qRegisterMetaType("GstEnginePipeline*"); qRegisterMetaType("PlaylistItemList"); qRegisterMetaType("PlaylistItemPtr"); @@ -49,8 +54,10 @@ void RegisterMetaTypes() { qRegisterMetaType("PodcastList"); qRegisterMetaType >("QList"); qRegisterMetaType >("QList"); - qRegisterMetaType("PlaylistSequence::RepeatMode"); - qRegisterMetaType("PlaylistSequence::ShuffleMode"); + qRegisterMetaType( + "PlaylistSequence::RepeatMode"); + qRegisterMetaType( + "PlaylistSequence::ShuffleMode"); qRegisterMetaType >("QList"); qRegisterMetaType >("QList"); qRegisterMetaType >("QList"); @@ -60,18 +67,26 @@ void RegisterMetaTypes() { qRegisterMetaType("QNetworkReply**"); qRegisterMetaType("SearchProvider::ResultList"); qRegisterMetaType("SearchProvider::Result"); - qRegisterMetaType("smart_playlists::GeneratorPtr"); + qRegisterMetaType( + "smart_playlists::GeneratorPtr"); qRegisterMetaType("SomaFMService::Stream"); qRegisterMetaType("SongList"); qRegisterMetaType("Song"); - qRegisterMetaTypeStreamOperators("DigitallyImportedClient::Channel"); + qRegisterMetaTypeStreamOperators( + "DigitallyImportedClient::Channel"); qRegisterMetaTypeStreamOperators("Equalizer::Params"); qRegisterMetaTypeStreamOperators >("ColumnAlignmentMap"); - qRegisterMetaTypeStreamOperators("SomaFMService::Stream"); + qRegisterMetaTypeStreamOperators( + "SomaFMService::Stream"); qRegisterMetaType("SubdirectoryList"); qRegisterMetaType("Subdirectory"); qRegisterMetaType >("QList"); +#ifdef HAVE_VK + qRegisterMetaType("MusicOwner"); + qRegisterMetaTypeStreamOperators("MusicOwner"); +#endif + #ifdef HAVE_DBUS qDBusRegisterMetaType(); qDBusRegisterMetaType(); diff --git a/src/core/mimedata.h b/src/core/mimedata.h index 53c5ed835..e8136aed4 100644 --- a/src/core/mimedata.h +++ b/src/core/mimedata.h @@ -23,16 +23,16 @@ class MimeData : public QMimeData { Q_OBJECT -public: - MimeData(bool clear = false, bool play_now = false, - bool enqueue = false, bool open_in_new_playlist = false) - : override_user_settings_(false), - clear_first_(clear), - play_now_(play_now), - enqueue_now_(enqueue), - open_in_new_playlist_(open_in_new_playlist), - name_for_new_playlist_(QString()), - from_doubleclick_(false) {} + public: + MimeData(bool clear = false, bool play_now = false, bool enqueue = false, + bool open_in_new_playlist = false) + : override_user_settings_(false), + clear_first_(clear), + play_now_(play_now), + enqueue_now_(enqueue), + open_in_new_playlist_(open_in_new_playlist), + name_for_new_playlist_(QString()), + from_doubleclick_(false) {} // If this is set then MainWindow will not touch any of the other flags. bool override_user_settings_; @@ -43,7 +43,8 @@ public: // If this is set then the first item that is inserted will start playing // immediately. Note: this is always overridden with the user's preference - // if the MimeData goes via MainWindow, unless you set override_user_settings_. + // if the MimeData goes via MainWindow, unless you set + // override_user_settings_. bool play_now_; // If this is set then the items are added to the queue after being inserted. @@ -60,12 +61,15 @@ public: // the defaults set by the user. bool from_doubleclick_; - // Returns a pretty name for a playlist containing songs described by this MimeData - // object. By pretty name we mean the value of 'name_for_new_playlist_' or generic + // Returns a pretty name for a playlist containing songs described by this + // MimeData + // object. By pretty name we mean the value of 'name_for_new_playlist_' or + // generic // "Playlist" string if the 'name_for_new_playlist_' attribute is empty. QString get_name_for_new_playlist() { - return name_for_new_playlist_.isEmpty() ? tr("Playlist") : name_for_new_playlist_; + return name_for_new_playlist_.isEmpty() ? tr("Playlist") + : name_for_new_playlist_; } }; -#endif // MIMEDATA_H +#endif // MIMEDATA_H diff --git a/src/core/modelfuturewatcher.h b/src/core/modelfuturewatcher.h index 388a6dcca..171e74892 100644 --- a/src/core/modelfuturewatcher.h +++ b/src/core/modelfuturewatcher.h @@ -7,19 +7,15 @@ template class ModelFutureWatcher : public QFutureWatcher { public: - ModelFutureWatcher(const QModelIndex& index, QObject* parent = 0) - : QFutureWatcher(parent), - index_(index) { - } + ModelFutureWatcher(const QModelIndex& index, QObject* parent = nullptr) + : QFutureWatcher(parent), index_(index) {} - ~ModelFutureWatcher() { - } + ~ModelFutureWatcher() {} const QPersistentModelIndex& index() const { return index_; } private: QPersistentModelIndex index_; - }; #endif diff --git a/src/core/mpris.cpp b/src/core/mpris.cpp index da297cec7..191dd9198 100644 --- a/src/core/mpris.cpp +++ b/src/core/mpris.cpp @@ -22,11 +22,10 @@ namespace mpris { Mpris::Mpris(Application* app, QObject* parent) - : QObject(parent), - mpris1_(new mpris::Mpris1(app, this)), - mpris2_(new mpris::Mpris2(app, mpris1_, this)) -{ + : QObject(parent), + mpris1_(new mpris::Mpris1(app, this)), + mpris2_(new mpris::Mpris2(app, mpris1_, this)) { connect(mpris2_, SIGNAL(RaiseMainWindow()), SIGNAL(RaiseMainWindow())); } -} // namespace mpris +} // namespace mpris diff --git a/src/core/mpris.h b/src/core/mpris.h index f858168b1..bb260e6b8 100644 --- a/src/core/mpris.h +++ b/src/core/mpris.h @@ -30,17 +30,17 @@ class Mpris2; class Mpris : public QObject { Q_OBJECT -public: - Mpris(Application* app, QObject* parent = 0); + public: + Mpris(Application* app, QObject* parent = nullptr); signals: void RaiseMainWindow(); -private: + private: Mpris1* mpris1_; Mpris2* mpris2_; }; -} // namespace mpris +} // namespace mpris -#endif // MPRIS_H +#endif // MPRIS_H diff --git a/src/core/mpris1.cpp b/src/core/mpris1.cpp index 368e284ed..cef1ff7a5 100644 --- a/src/core/mpris1.cpp +++ b/src/core/mpris1.cpp @@ -39,12 +39,11 @@ const char* Mpris1::kDefaultDbusServiceName = "org.mpris.clementine"; Mpris1::Mpris1(Application* app, QObject* parent, const QString& dbus_service_name) - : QObject(parent), - dbus_service_name_(dbus_service_name), - root_(NULL), - player_(NULL), - tracklist_(NULL) -{ + : QObject(parent), + dbus_service_name_(dbus_service_name), + root_(nullptr), + player_(nullptr), + tracklist_(nullptr) { qDBusRegisterMetaType(); qDBusRegisterMetaType(); @@ -53,7 +52,8 @@ Mpris1::Mpris1(Application* app, QObject* parent, } if (!QDBusConnection::sessionBus().registerService(dbus_service_name_)) { - qLog(Warning) << "Failed to register" << dbus_service_name_ << "on the session bus"; + qLog(Warning) << "Failed to register" << dbus_service_name_ + << "on the session bus"; return; } @@ -61,8 +61,10 @@ Mpris1::Mpris1(Application* app, QObject* parent, player_ = new Mpris1Player(app, this); tracklist_ = new Mpris1TrackList(app, this); - connect(app->current_art_loader(), SIGNAL(ArtLoaded(const Song&, const QString&, const QImage&)), - player_, SLOT(CurrentSongChanged(const Song&, const QString&, const QImage&))); + connect(app->current_art_loader(), + SIGNAL(ArtLoaded(const Song&, const QString&, const QImage&)), + player_, + SLOT(CurrentSongChanged(const Song&, const QString&, const QImage&))); } Mpris1::~Mpris1() { @@ -70,27 +72,29 @@ Mpris1::~Mpris1() { } Mpris1Root::Mpris1Root(Application* app, QObject* parent) - : QObject(parent), - app_(app) { + : QObject(parent), app_(app) { new MprisRoot(this); QDBusConnection::sessionBus().registerObject("/", this); } Mpris1Player::Mpris1Player(Application* app, QObject* parent) - : QObject(parent), - app_(app) { + : QObject(parent), app_(app) { new MprisPlayer(this); QDBusConnection::sessionBus().registerObject("/Player", this); - connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), SLOT(EngineStateChanged(Engine::State))); - connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), SLOT(PlaylistManagerInitialized())); + connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), + SLOT(EngineStateChanged(Engine::State))); + connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), + SLOT(PlaylistManagerInitialized())); } // when PlaylistManager gets it ready, we connect PlaylistSequence with this void Mpris1Player::PlaylistManagerInitialized() { - connect(app_->playlist_manager()->sequence(), SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), + connect(app_->playlist_manager()->sequence(), + SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), SLOT(ShuffleModeChanged())); - connect(app_->playlist_manager()->sequence(), SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), + connect(app_->playlist_manager()->sequence(), + SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), SLOT(RepeatModeChanged())); } @@ -99,22 +103,23 @@ Mpris1TrackList::Mpris1TrackList(Application* app, QObject* parent) new MprisTrackList(this); QDBusConnection::sessionBus().registerObject("/TrackList", this); - connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), SLOT(PlaylistChanged(Playlist*))); + connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), + SLOT(PlaylistChanged(Playlist*))); } void Mpris1TrackList::PlaylistChanged(Playlist* playlist) { emit TrackListChange(playlist->rowCount()); } -// we use the state from event and don't try to obtain it from Player +// we use the state from event and don't try to obtain it from Player // later because only the event's version is really the current one void Mpris1Player::EngineStateChanged(Engine::State state) { emit StatusChange(GetStatus(state)); emit CapsChange(GetCaps(state)); } -void Mpris1Player::CurrentSongChanged( - const Song& song, const QString& art_uri, const QImage&) { +void Mpris1Player::CurrentSongChanged(const Song& song, const QString& art_uri, + const QImage&) { last_metadata_ = Mpris1::GetMetadata(song); if (!art_uri.isEmpty()) { @@ -126,11 +131,9 @@ void Mpris1Player::CurrentSongChanged( emit CapsChange(GetCaps()); } - QString Mpris1Root::Identity() { - return QString("%1 %2").arg( - QCoreApplication::applicationName(), - QCoreApplication::applicationVersion()); + return QString("%1 %2").arg(QCoreApplication::applicationName(), + QCoreApplication::applicationVersion()); } Version Mpris1Root::MprisVersion() { @@ -140,42 +143,26 @@ Version Mpris1Root::MprisVersion() { return version; } -void Mpris1Root::Quit() { - qApp->quit(); -} +void Mpris1Root::Quit() { qApp->quit(); } -void Mpris1Player::Pause() { - app_->player()->PlayPause(); -} +void Mpris1Player::Pause() { app_->player()->PlayPause(); } -void Mpris1Player::Stop() { - app_->player()->Stop(); -} +void Mpris1Player::Stop() { app_->player()->Stop(); } -void Mpris1Player::Prev() { - app_->player()->Previous(); -} +void Mpris1Player::Prev() { app_->player()->Previous(); } -void Mpris1Player::Play() { - app_->player()->Play(); -} +void Mpris1Player::Play() { app_->player()->Play(); } -void Mpris1Player::Next() { - app_->player()->Next(); -} +void Mpris1Player::Next() { app_->player()->Next(); } void Mpris1Player::Repeat(bool repeat) { app_->playlist_manager()->sequence()->SetRepeatMode( repeat ? PlaylistSequence::Repeat_Track : PlaylistSequence::Repeat_Off); } -void Mpris1Player::ShuffleModeChanged() { - emit StatusChange(GetStatus()); -} +void Mpris1Player::ShuffleModeChanged() { emit StatusChange(GetStatus()); } -void Mpris1Player::RepeatModeChanged() { - emit StatusChange(GetStatus()); -} +void Mpris1Player::RepeatModeChanged() { emit StatusChange(GetStatus()); } DBusStatus Mpris1Player::GetStatus() const { return GetStatus(app_->player()->GetState()); @@ -199,25 +186,27 @@ DBusStatus Mpris1Player::GetStatus(Engine::State state) const { if (app_->playlist_manager()->sequence()) { PlaylistManagerInterface* playlists_ = app_->playlist_manager(); - PlaylistSequence::RepeatMode repeat_mode = playlists_->sequence()->repeat_mode(); - - status.random = playlists_->sequence()->shuffle_mode() == PlaylistSequence::Shuffle_Off ? 0 : 1; + PlaylistSequence::RepeatMode repeat_mode = + playlists_->sequence()->repeat_mode(); + + status.random = + playlists_->sequence()->shuffle_mode() == PlaylistSequence::Shuffle_Off + ? 0 + : 1; status.repeat = repeat_mode == PlaylistSequence::Repeat_Track ? 1 : 0; - status.repeat_playlist = (repeat_mode == PlaylistSequence::Repeat_Album || - repeat_mode == PlaylistSequence::Repeat_Playlist || - repeat_mode == PlaylistSequence::Repeat_Track) ? 1 : 0; + status.repeat_playlist = + (repeat_mode == PlaylistSequence::Repeat_Album || + repeat_mode == PlaylistSequence::Repeat_Playlist || + repeat_mode == PlaylistSequence::Repeat_Track) + ? 1 + : 0; } return status; - } -void Mpris1Player::VolumeSet(int volume) { - app_->player()->SetVolume(volume); -} +void Mpris1Player::VolumeSet(int volume) { app_->player()->SetVolume(volume); } -int Mpris1Player::VolumeGet() const { - return app_->player()->GetVolume(); -} +int Mpris1Player::VolumeGet() const { return app_->player()->GetVolume(); } void Mpris1Player::PositionSet(int pos_msec) { app_->player()->SeekTo(pos_msec / kMsecPerSec); @@ -227,9 +216,7 @@ int Mpris1Player::PositionGet() const { return app_->player()->engine()->position_nanosec() / kNsecPerMsec; } -QVariantMap Mpris1Player::GetMetadata() const { - return last_metadata_; -} +QVariantMap Mpris1Player::GetMetadata() const { return last_metadata_; } int Mpris1Player::GetCaps() const { return GetCaps(app_->player()->GetState()); @@ -241,12 +228,15 @@ int Mpris1Player::GetCaps(Engine::State state) const { PlaylistManagerInterface* playlists = app_->playlist_manager(); if (playlists->active()) { - // play is disabled when playlist is empty or when last.fm stream is already playing - if (playlists->active() && playlists->active()->rowCount() != 0 - && !(state == Engine::Playing && (app_->player()->GetCurrentItem()->options() & PlaylistItem::LastFMControls))) { + // play is disabled when playlist is empty or when last.fm stream is already + // playing + if (playlists->active() && playlists->active()->rowCount() != 0 && + !(state == Engine::Playing && + (app_->player()->GetCurrentItem()->options() & + PlaylistItem::LastFMControls))) { caps |= CAN_PLAY; } - + if (playlists->active()->next_row() != -1) { caps |= CAN_GO_NEXT; } @@ -257,7 +247,8 @@ int Mpris1Player::GetCaps(Engine::State state) const { if (current_item) { caps |= CAN_PROVIDE_METADATA; - if (state == Engine::Playing && !(current_item->options() & PlaylistItem::PauseDisabled)) { + if (state == Engine::Playing && + !(current_item->options() & PlaylistItem::PauseDisabled)) { caps |= CAN_PAUSE; } if (state != Engine::Empty && !current_item->Metadata().is_stream()) { @@ -268,25 +259,17 @@ int Mpris1Player::GetCaps(Engine::State state) const { return caps; } -void Mpris1Player::VolumeUp(int change) { - VolumeSet(VolumeGet() + change); -} +void Mpris1Player::VolumeUp(int change) { VolumeSet(VolumeGet() + change); } -void Mpris1Player::VolumeDown(int change) { - VolumeSet(VolumeGet() - change); -} +void Mpris1Player::VolumeDown(int change) { VolumeSet(VolumeGet() - change); } -void Mpris1Player::Mute() { - app_->player()->Mute(); -} +void Mpris1Player::Mute() { app_->player()->Mute(); } -void Mpris1Player::ShowOSD() { - app_->player()->ShowOSD(); -} +void Mpris1Player::ShowOSD() { app_->player()->ShowOSD(); } int Mpris1TrackList::AddTrack(const QString& track, bool play) { - app_->playlist_manager()->active()->InsertUrls( - QList() << QUrl(track), -1, play); + app_->playlist_manager()->active()->InsertUrls(QList() << QUrl(track), + -1, play); return 0; } @@ -304,15 +287,15 @@ int Mpris1TrackList::GetLength() const { QVariantMap Mpris1TrackList::GetMetadata(int pos) const { PlaylistItemPtr item = app_->player()->GetItemAt(pos); - if (!item) - return QVariantMap(); + if (!item) return QVariantMap(); return Mpris1::GetMetadata(item->Metadata()); } void Mpris1TrackList::SetLoop(bool enable) { app_->playlist_manager()->active()->sequence()->SetRepeatMode( - enable ? PlaylistSequence::Repeat_Playlist : PlaylistSequence::Repeat_Off); + enable ? PlaylistSequence::Repeat_Playlist + : PlaylistSequence::Repeat_Off); } void Mpris1TrackList::SetRandom(bool enable) { @@ -351,24 +334,23 @@ QVariantMap Mpris1::GetMetadata(const Song& song) { return ret; } -} // namespace mpris +} // namespace mpris - -QDBusArgument& operator<< (QDBusArgument& arg, const Version& version) { +QDBusArgument& operator<<(QDBusArgument& arg, const Version& version) { arg.beginStructure(); arg << version.major << version.minor; arg.endStructure(); return arg; } -const QDBusArgument& operator>> (const QDBusArgument& arg, Version& version) { +const QDBusArgument& operator>>(const QDBusArgument& arg, Version& version) { arg.beginStructure(); arg >> version.major >> version.minor; arg.endStructure(); return arg; } -QDBusArgument& operator<< (QDBusArgument& arg, const DBusStatus& status) { +QDBusArgument& operator<<(QDBusArgument& arg, const DBusStatus& status) { arg.beginStructure(); arg << status.play; arg << status.random; @@ -378,7 +360,7 @@ QDBusArgument& operator<< (QDBusArgument& arg, const DBusStatus& status) { return arg; } -const QDBusArgument& operator>> (const QDBusArgument& arg, DBusStatus& status) { +const QDBusArgument& operator>>(const QDBusArgument& arg, DBusStatus& status) { arg.beginStructure(); arg >> status.play; arg >> status.random; diff --git a/src/core/mpris1.h b/src/core/mpris1.h index 9e344b69e..e43e1d560 100644 --- a/src/core/mpris1.h +++ b/src/core/mpris1.h @@ -27,18 +27,15 @@ class Application; class Playlist; -struct DBusStatus { // From Amarok. +struct DBusStatus { // From Amarok. DBusStatus() - : play(Mpris_Stopped), - random(0), - repeat(0), - repeat_playlist(0) - {} - - int play; // Playing = 0, Paused = 1, Stopped = 2 - int random; // Linearly = 0, Randomly = 1 - int repeat; // Go_To_Next = 0, Repeat_Current = 1 - int repeat_playlist; // Stop_When_Finished = 0, Never_Give_Up_Playing = 1, Never_Let_You_Down = 42 + : play(Mpris_Stopped), random(0), repeat(0), repeat_playlist(0) {} + + int play; // Playing = 0, Paused = 1, Stopped = 2 + int random; // Linearly = 0, Randomly = 1 + int repeat; // Go_To_Next = 0, Repeat_Current = 1 + int repeat_playlist; // Stop_When_Finished = 0, Never_Give_Up_Playing = 1, + // Never_Let_You_Down = 42 enum MprisPlayState { Mpris_Playing = 0, @@ -48,9 +45,8 @@ struct DBusStatus { // From Amarok. }; Q_DECLARE_METATYPE(DBusStatus); -QDBusArgument& operator <<(QDBusArgument& arg, const DBusStatus& status); -const QDBusArgument& operator >>(const QDBusArgument& arg, DBusStatus& status); - +QDBusArgument& operator<<(QDBusArgument& arg, const DBusStatus& status); +const QDBusArgument& operator>>(const QDBusArgument& arg, DBusStatus& status); struct Version { quint16 minor; @@ -58,32 +54,31 @@ struct Version { }; Q_DECLARE_METATYPE(Version); -QDBusArgument& operator <<(QDBusArgument& arg, const Version& version); -const QDBusArgument& operator >>(const QDBusArgument& arg, Version& version); +QDBusArgument& operator<<(QDBusArgument& arg, const Version& version); +const QDBusArgument& operator>>(const QDBusArgument& arg, Version& version); namespace mpris { enum DBusCaps { - NONE = 0, - CAN_GO_NEXT = 1 << 0, - CAN_GO_PREV = 1 << 1, - CAN_PAUSE = 1 << 2, - CAN_PLAY = 1 << 3, - CAN_SEEK = 1 << 4, + NONE = 0, + CAN_GO_NEXT = 1 << 0, + CAN_GO_PREV = 1 << 1, + CAN_PAUSE = 1 << 2, + CAN_PLAY = 1 << 3, + CAN_SEEK = 1 << 4, CAN_PROVIDE_METADATA = 1 << 5, - CAN_HAS_TRACKLIST = 1 << 6, + CAN_HAS_TRACKLIST = 1 << 6, }; class Mpris1Root; class Mpris1Player; class Mpris1TrackList; - class Mpris1 : public QObject { Q_OBJECT -public: - Mpris1(Application* app, QObject* parent = 0, + public: + Mpris1(Application* app, QObject* parent = nullptr, const QString& dbus_service_name = QString()); ~Mpris1(); @@ -93,7 +88,7 @@ public: Mpris1Player* player() const { return player_; } Mpris1TrackList* tracklist() const { return tracklist_; } -private: + private: static const char* kDefaultDbusServiceName; QString dbus_service_name_; @@ -103,27 +98,25 @@ private: Mpris1TrackList* tracklist_; }; - class Mpris1Root : public QObject { Q_OBJECT -public: - Mpris1Root(Application* app, QObject* parent = 0); + public: + Mpris1Root(Application* app, QObject* parent = nullptr); QString Identity(); void Quit(); Version MprisVersion(); -private: + private: Application* app_; }; - class Mpris1Player : public QObject { Q_OBJECT -public: - Mpris1Player(Application* app, QObject* parent = 0); + public: + Mpris1Player(Application* app, QObject* parent = nullptr); void Pause(); void Stop(); @@ -132,7 +125,8 @@ public: void Next(); void Repeat(bool); - // those methods will use engine's state obtained with player->GetState() method + // those methods will use engine's state obtained with player->GetState() + // method DBusStatus GetStatus() const; int GetCaps() const; // those methods will use engine's state provided as an argument @@ -151,34 +145,33 @@ public: void Mute(); void ShowOSD(); -public slots: - void CurrentSongChanged( - const Song& song, const QString& art_uri, const QImage&); + public slots: + void CurrentSongChanged(const Song& song, const QString& art_uri, + const QImage&); signals: void CapsChange(int); void TrackChange(const QVariantMap&); void StatusChange(DBusStatus); -private slots: + private slots: void PlaylistManagerInitialized(); void EngineStateChanged(Engine::State state); void ShuffleModeChanged(); void RepeatModeChanged(); -private: + private: Application* app_; QVariantMap last_metadata_; }; - class Mpris1TrackList : public QObject { Q_OBJECT -public: - Mpris1TrackList(Application* app, QObject* parent = 0); + public: + Mpris1TrackList(Application* app, QObject* parent = nullptr); int AddTrack(const QString&, bool); void DelTrack(int index); @@ -194,13 +187,13 @@ public: signals: void TrackListChange(int i); -private slots: + private slots: void PlaylistChanged(Playlist* playlist); -private: + private: Application* app_; }; -} // namespace mpris +} // namespace mpris -#endif // MPRIS1_H +#endif // MPRIS1_H diff --git a/src/core/mpris2.cpp b/src/core/mpris2.cpp index d433a6161..4b2145969 100644 --- a/src/core/mpris2.cpp +++ b/src/core/mpris2.cpp @@ -41,22 +41,22 @@ #include #include -QDBusArgument& operator<< (QDBusArgument& arg, const MprisPlaylist& playlist) { +QDBusArgument& operator<<(QDBusArgument& arg, const MprisPlaylist& playlist) { arg.beginStructure(); arg << playlist.id << playlist.name << playlist.icon; arg.endStructure(); return arg; } -const QDBusArgument& operator>> ( - const QDBusArgument& arg, MprisPlaylist& playlist) { +const QDBusArgument& operator>>(const QDBusArgument& arg, + MprisPlaylist& playlist) { arg.beginStructure(); arg >> playlist.id >> playlist.name >> playlist.icon; arg.endStructure(); return arg; } -QDBusArgument& operator<< (QDBusArgument& arg, const MaybePlaylist& playlist) { +QDBusArgument& operator<<(QDBusArgument& arg, const MaybePlaylist& playlist) { arg.beginStructure(); arg << playlist.valid; arg << playlist.playlist; @@ -64,8 +64,8 @@ QDBusArgument& operator<< (QDBusArgument& arg, const MaybePlaylist& playlist) { return arg; } -const QDBusArgument& operator>> ( - const QDBusArgument& arg, MaybePlaylist& playlist) { +const QDBusArgument& operator>>(const QDBusArgument& arg, + MaybePlaylist& playlist) { arg.beginStructure(); arg >> playlist.valid >> playlist.playlist; arg.endStructure(); @@ -79,121 +79,115 @@ const char* Mpris2::kServiceName = "org.mpris.MediaPlayer2.clementine"; const char* Mpris2::kFreedesktopPath = "org.freedesktop.DBus.Properties"; Mpris2::Mpris2(Application* app, Mpris1* mpris1, QObject* parent) - : QObject(parent), - app_(app), - mpris1_(mpris1) -{ + : QObject(parent), app_(app), mpris1_(mpris1) { new Mpris2Root(this); new Mpris2TrackList(this); new Mpris2Player(this); new Mpris2Playlists(this); if (!QDBusConnection::sessionBus().registerService(kServiceName)) { - qLog(Warning) << "Failed to register" << QString(kServiceName) << "on the session bus"; + qLog(Warning) << "Failed to register" << QString(kServiceName) + << "on the session bus"; return; } QDBusConnection::sessionBus().registerObject(kMprisObjectPath, this); - connect(app_->current_art_loader(), SIGNAL(ArtLoaded(Song,QString,QImage)), SLOT(ArtLoaded(Song,QString))); + connect(app_->current_art_loader(), SIGNAL(ArtLoaded(Song, QString, QImage)), + SLOT(ArtLoaded(Song, QString))); - connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), SLOT(EngineStateChanged(Engine::State))); + connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), + SLOT(EngineStateChanged(Engine::State))); connect(app_->player(), SIGNAL(VolumeChanged(int)), SLOT(VolumeChanged())); connect(app_->player(), SIGNAL(Seeked(qlonglong)), SIGNAL(Seeked(qlonglong))); - connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), SLOT(PlaylistManagerInitialized())); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(CurrentSongChanged(Song))); - connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), SLOT(PlaylistChanged(Playlist*))); - connect(app_->playlist_manager(), SIGNAL(CurrentChanged(Playlist*)), SLOT(PlaylistCollectionChanged(Playlist*))); + connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), + SLOT(PlaylistManagerInitialized())); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + SLOT(CurrentSongChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), + SLOT(PlaylistChanged(Playlist*))); + connect(app_->playlist_manager(), SIGNAL(CurrentChanged(Playlist*)), + SLOT(PlaylistCollectionChanged(Playlist*))); } // when PlaylistManager gets it ready, we connect PlaylistSequence with this void Mpris2::PlaylistManagerInitialized() { - connect(app_->playlist_manager()->sequence(), SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), + connect(app_->playlist_manager()->sequence(), + SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), SLOT(ShuffleModeChanged())); - connect(app_->playlist_manager()->sequence(), SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), + connect(app_->playlist_manager()->sequence(), + SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), SLOT(RepeatModeChanged())); } void Mpris2::EngineStateChanged(Engine::State newState) { - if(newState != Engine::Playing && newState != Engine::Paused) { - last_metadata_= QVariantMap(); + if (newState != Engine::Playing && newState != Engine::Paused) { + last_metadata_ = QVariantMap(); EmitNotification("Metadata"); } EmitNotification("PlaybackStatus", PlaybackStatus(newState)); } -void Mpris2::VolumeChanged() { - EmitNotification("Volume"); -} +void Mpris2::VolumeChanged() { EmitNotification("Volume"); } -void Mpris2::ShuffleModeChanged() { - EmitNotification("Shuffle"); -} +void Mpris2::ShuffleModeChanged() { EmitNotification("Shuffle"); } -void Mpris2::RepeatModeChanged() { - EmitNotification("LoopStatus"); -} +void Mpris2::RepeatModeChanged() { EmitNotification("LoopStatus"); } void Mpris2::EmitNotification(const QString& name, const QVariant& val) { EmitNotification(name, val, "org.mpris.MediaPlayer2.Player"); } -void Mpris2::EmitNotification(const QString& name, const QVariant& val, const QString& mprisEntity) { +void Mpris2::EmitNotification(const QString& name, const QVariant& val, + const QString& mprisEntity) { QDBusMessage msg = QDBusMessage::createSignal( - kMprisObjectPath, kFreedesktopPath, "PropertiesChanged"); + kMprisObjectPath, kFreedesktopPath, "PropertiesChanged"); QVariantMap map; map.insert(name, val); - QVariantList args = QVariantList() - << mprisEntity - << map - << QStringList(); + QVariantList args = QVariantList() << mprisEntity << map << QStringList(); msg.setArguments(args); QDBusConnection::sessionBus().send(msg); } void Mpris2::EmitNotification(const QString& name) { QVariant value; - if (name == "PlaybackStatus") value = PlaybackStatus(); - else if (name == "LoopStatus") value = LoopStatus(); - else if (name == "Shuffle") value = Shuffle(); - else if (name == "Metadata") value = Metadata(); - else if (name == "Volume") value = Volume(); - else if (name == "Position") value = Position(); + if (name == "PlaybackStatus") + value = PlaybackStatus(); + else if (name == "LoopStatus") + value = LoopStatus(); + else if (name == "Shuffle") + value = Shuffle(); + else if (name == "Metadata") + value = Metadata(); + else if (name == "Volume") + value = Volume(); + else if (name == "Position") + value = Position(); - if (value.isValid()) - EmitNotification(name, value); + if (value.isValid()) EmitNotification(name, value); } //------------------Root Interface--------------------------// -bool Mpris2::CanQuit() const { - return true; -} +bool Mpris2::CanQuit() const { return true; } -bool Mpris2::CanRaise() const { - return true; -} +bool Mpris2::CanRaise() const { return true; } -bool Mpris2::HasTrackList() const { - return true; -} +bool Mpris2::HasTrackList() const { return true; } -QString Mpris2::Identity() const { - return QCoreApplication::applicationName(); -} +QString Mpris2::Identity() const { return QCoreApplication::applicationName(); } QString Mpris2::DesktopEntryAbsolutePath() const { QStringList xdg_data_dirs = QString(getenv("XDG_DATA_DIRS")).split(":"); xdg_data_dirs.append("/usr/local/share/"); xdg_data_dirs.append("/usr/share/"); - foreach (const QString& directory, xdg_data_dirs) { - QString path = QString("%1/applications/%2.desktop"). - arg(directory, QApplication::applicationName().toLower()); - if (QFile::exists(path)) - return path; + for (const QString& directory : xdg_data_dirs) { + QString path = QString("%1/applications/%2.desktop").arg( + directory, QApplication::applicationName().toLower()); + if (QFile::exists(path)) return path; } return QString(); } @@ -203,52 +197,46 @@ QString Mpris2::DesktopEntry() const { } QStringList Mpris2::SupportedUriSchemes() const { - static QStringList res = QStringList() - << "file" - << "http" - << "cdda" - << "smb" - << "sftp"; + static QStringList res = QStringList() << "file" + << "http" + << "cdda" + << "smb" + << "sftp"; return res; } QStringList Mpris2::SupportedMimeTypes() const { - static QStringList res = QStringList() - << "application/ogg" - << "application/x-ogg" - << "application/x-ogm-audio" - << "audio/aac" - << "audio/mp4" - << "audio/mpeg" - << "audio/mpegurl" - << "audio/ogg" - << "audio/vnd.rn-realaudio" - << "audio/vorbis" - << "audio/x-flac" - << "audio/x-mp3" - << "audio/x-mpeg" - << "audio/x-mpegurl" - << "audio/x-ms-wma" - << "audio/x-musepack" - << "audio/x-oggflac" - << "audio/x-pn-realaudio" - << "audio/x-scpls" - << "audio/x-speex" - << "audio/x-vorbis" - << "audio/x-vorbis+ogg" - << "audio/x-wav" - << "video/x-ms-asf" - << "x-content/audio-player"; + static QStringList res = QStringList() << "application/ogg" + << "application/x-ogg" + << "application/x-ogm-audio" + << "audio/aac" + << "audio/mp4" + << "audio/mpeg" + << "audio/mpegurl" + << "audio/ogg" + << "audio/vnd.rn-realaudio" + << "audio/vorbis" + << "audio/x-flac" + << "audio/x-mp3" + << "audio/x-mpeg" + << "audio/x-mpegurl" + << "audio/x-ms-wma" + << "audio/x-musepack" + << "audio/x-oggflac" + << "audio/x-pn-realaudio" + << "audio/x-scpls" + << "audio/x-speex" + << "audio/x-vorbis" + << "audio/x-vorbis+ogg" + << "audio/x-wav" + << "video/x-ms-asf" + << "x-content/audio-player"; return res; } -void Mpris2::Raise() { - emit RaiseMainWindow(); -} +void Mpris2::Raise() { emit RaiseMainWindow(); } -void Mpris2::Quit() { - qApp->quit(); -} +void Mpris2::Quit() { qApp->quit(); } QString Mpris2::PlaybackStatus() const { return PlaybackStatus(app_->player()->GetState()); @@ -256,9 +244,12 @@ QString Mpris2::PlaybackStatus() const { QString Mpris2::PlaybackStatus(Engine::State state) const { switch (state) { - case Engine::Playing: return "Playing"; - case Engine::Paused: return "Paused"; - default: return "Stopped"; + case Engine::Playing: + return "Playing"; + case Engine::Paused: + return "Paused"; + default: + return "Stopped"; } } @@ -266,12 +257,15 @@ QString Mpris2::LoopStatus() const { if (!app_->playlist_manager()->sequence()) { return "None"; } - + switch (app_->playlist_manager()->sequence()->repeat_mode()) { case PlaylistSequence::Repeat_Album: - case PlaylistSequence::Repeat_Playlist: return "Playlist"; - case PlaylistSequence::Repeat_Track: return "Track"; - default: return "None"; + case PlaylistSequence::Repeat_Playlist: + return "Playlist"; + case PlaylistSequence::Repeat_Track: + return "Track"; + default: + return "None"; } } @@ -289,12 +283,10 @@ void Mpris2::SetLoopStatus(const QString& value) { app_->playlist_manager()->active()->sequence()->SetRepeatMode(mode); } -double Mpris2::Rate() const { - return 1.0; -} +double Mpris2::Rate() const { return 1.0; } void Mpris2::SetRate(double rate) { - if(rate == 0) { + if (rate == 0) { if (mpris1_->player()) { mpris1_->player()->Pause(); } @@ -315,24 +307,20 @@ void Mpris2::SetShuffle(bool value) { } } -QVariantMap Mpris2::Metadata() const { - return last_metadata_; -} +QVariantMap Mpris2::Metadata() const { return last_metadata_; } QString Mpris2::current_track_id() const { if (!mpris1_->tracklist()) { return QString(); } - return QString("/org/mpris/MediaPlayer2/Track/%1").arg( - QString::number(mpris1_->tracklist()->GetCurrentTrack())); + return QString("/org/mpris/MediaPlayer2/Track/%1") + .arg(QString::number(mpris1_->tracklist()->GetCurrentTrack())); } // We send Metadata change notification as soon as the process of // changing song starts... -void Mpris2::CurrentSongChanged(const Song& song) { - ArtLoaded(song, ""); -} +void Mpris2::CurrentSongChanged(const Song& song) { ArtLoaded(song, ""); } // ... and we add the cover information later, when it's available. void Mpris2::ArtLoaded(const Song& song, const QString& art_uri) { @@ -363,21 +351,15 @@ double Mpris2::Volume() const { } } -void Mpris2::SetVolume(double value) { - app_->player()->SetVolume(value * 100); -} +void Mpris2::SetVolume(double value) { app_->player()->SetVolume(value * 100); } qlonglong Mpris2::Position() const { return app_->player()->engine()->position_nanosec() / kNsecPerUsec; } -double Mpris2::MaximumRate() const { - return 1.0; -} +double Mpris2::MaximumRate() const { return 1.0; } -double Mpris2::MinimumRate() const { - return 1.0; -} +double Mpris2::MinimumRate() const { return 1.0; } bool Mpris2::CanGoNext() const { if (mpris1_->player()) { @@ -395,17 +377,14 @@ bool Mpris2::CanGoPrevious() const { } } -bool Mpris2::CanPlay() const { - return mpris1_->player()->GetCaps() & CAN_PLAY; -} +bool Mpris2::CanPlay() const { return mpris1_->player()->GetCaps() & CAN_PLAY; } // This one's a bit different than MPRIS 1 - we want this to be true even when // the song is already paused or stopped. bool Mpris2::CanPause() const { if (mpris1_->player()) { - return mpris1_->player()->GetCaps() & CAN_PAUSE - || PlaybackStatus() == "Paused" - || PlaybackStatus() == "Stopped"; + return mpris1_->player()->GetCaps() & CAN_PAUSE || + PlaybackStatus() == "Paused" || PlaybackStatus() == "Stopped"; } else { return true; } @@ -419,24 +398,22 @@ bool Mpris2::CanSeek() const { } } -bool Mpris2::CanControl() const { - return true; -} +bool Mpris2::CanControl() const { return true; } void Mpris2::Next() { - if(CanGoNext()) { + if (CanGoNext()) { app_->player()->Next(); } } void Mpris2::Previous() { - if(CanGoPrevious()) { + if (CanGoPrevious()) { app_->player()->Previous(); } } void Mpris2::Pause() { - if(CanPause() && app_->player()->GetState() != Engine::Paused) { + if (CanPause() && app_->player()->GetState() != Engine::Paused) { app_->player()->Pause(); } } @@ -447,20 +424,19 @@ void Mpris2::PlayPause() { } } -void Mpris2::Stop() { - app_->player()->Stop(); -} +void Mpris2::Stop() { app_->player()->Stop(); } void Mpris2::Play() { - if(CanPlay()) { + if (CanPlay()) { app_->player()->Play(); } } void Mpris2::Seek(qlonglong offset) { - if(CanSeek()) { - app_->player()->SeekTo(app_->player()->engine()->position_nanosec() / kNsecPerSec + - offset / kUsecPerSec); + if (CanSeek()) { + app_->player()->SeekTo(app_->player()->engine()->position_nanosec() / + kNsecPerSec + + offset / kUsecPerSec); } } @@ -468,7 +444,8 @@ void Mpris2::SetPosition(const QDBusObjectPath& trackId, qlonglong offset) { if (CanSeek() && trackId.path() == current_track_id() && offset >= 0) { offset *= kNsecPerUsec; - if(offset < app_->player()->GetCurrentItem()->Metadata().length_nanosec()) { + if (offset < + app_->player()->GetCurrentItem()->Metadata().length_nanosec()) { app_->player()->SeekTo(offset / kNsecPerSec); } } @@ -481,46 +458,42 @@ void Mpris2::OpenUri(const QString& uri) { } TrackIds Mpris2::Tracks() const { - //TODO + // TODO return TrackIds(); } -bool Mpris2::CanEditTracks() const { - return false; -} +bool Mpris2::CanEditTracks() const { return false; } -TrackMetadata Mpris2::GetTracksMetadata(const TrackIds &tracks) const { - //TODO +TrackMetadata Mpris2::GetTracksMetadata(const TrackIds& tracks) const { + // TODO return TrackMetadata(); } -void Mpris2::AddTrack(const QString &uri, const QDBusObjectPath &afterTrack, bool setAsCurrent) { - //TODO +void Mpris2::AddTrack(const QString& uri, const QDBusObjectPath& afterTrack, + bool setAsCurrent) { + // TODO } -void Mpris2::RemoveTrack(const QDBusObjectPath &trackId) { - //TODO +void Mpris2::RemoveTrack(const QDBusObjectPath& trackId) { + // TODO } -void Mpris2::GoTo(const QDBusObjectPath &trackId) { - //TODO +void Mpris2::GoTo(const QDBusObjectPath& trackId) { + // TODO } quint32 Mpris2::PlaylistCount() const { return app_->playlist_manager()->GetAllPlaylists().size(); } -QStringList Mpris2::Orderings() const { - return QStringList() << "User"; -} +QStringList Mpris2::Orderings() const { return QStringList() << "User"; } namespace { QDBusObjectPath MakePlaylistPath(int id) { - return QDBusObjectPath(QString( - "/org/mpris/MediaPlayer2/Playlists/%1").arg(id)); + return QDBusObjectPath( + QString("/org/mpris/MediaPlayer2/Playlists/%1").arg(id)); } - } MaybePlaylist Mpris2::ActivePlaylist() const { @@ -557,10 +530,11 @@ void Mpris2::ActivatePlaylist(const QDBusObjectPath& playlist_id) { } // TODO: Support sort orders. -MprisPlaylistList Mpris2::GetPlaylists( - quint32 index, quint32 max_count, const QString& order, bool reverse_order) { +MprisPlaylistList Mpris2::GetPlaylists(quint32 index, quint32 max_count, + const QString& order, + bool reverse_order) { MprisPlaylistList ret; - foreach (Playlist* p, app_->playlist_manager()->GetAllPlaylists()) { + for (Playlist* p : app_->playlist_manager()->GetAllPlaylists()) { MprisPlaylist mpris_playlist; mpris_playlist.id = MakePlaylistPath(p->id()); mpris_playlist.name = app_->playlist_manager()->GetPlaylistName(p->id()); @@ -577,7 +551,8 @@ MprisPlaylistList Mpris2::GetPlaylists( void Mpris2::PlaylistChanged(Playlist* playlist) { MprisPlaylist mpris_playlist; mpris_playlist.id = MakePlaylistPath(playlist->id()); - mpris_playlist.name = app_->playlist_manager()->GetPlaylistName(playlist->id()); + mpris_playlist.name = + app_->playlist_manager()->GetPlaylistName(playlist->id()); emit PlaylistChanged(mpris_playlist); } @@ -585,4 +560,4 @@ void Mpris2::PlaylistCollectionChanged(Playlist* playlist) { EmitNotification("PlaylistCount", "", "org.mpris.MediaPlayer2.Playlists"); } -} // namespace mpris +} // namespace mpris diff --git a/src/core/mpris2.h b/src/core/mpris2.h index 06402646e..4732fe575 100644 --- a/src/core/mpris2.h +++ b/src/core/mpris2.h @@ -24,8 +24,6 @@ #include #include -#include - class Application; class MainWindow; class Playlist; @@ -49,14 +47,13 @@ struct MaybePlaylist { }; Q_DECLARE_METATYPE(MaybePlaylist); -QDBusArgument& operator<< (QDBusArgument& arg, const MprisPlaylist& playlist); -const QDBusArgument& operator>> ( - const QDBusArgument& arg, MprisPlaylist& playlist); - -QDBusArgument& operator<< (QDBusArgument& arg, const MaybePlaylist& playlist); -const QDBusArgument& operator>> ( - const QDBusArgument& arg, MaybePlaylist& playlist); +QDBusArgument& operator<<(QDBusArgument& arg, const MprisPlaylist& playlist); +const QDBusArgument& operator>>(const QDBusArgument& arg, + MprisPlaylist& playlist); +QDBusArgument& operator<<(QDBusArgument& arg, const MaybePlaylist& playlist); +const QDBusArgument& operator>>(const QDBusArgument& arg, + MaybePlaylist& playlist); namespace mpris { @@ -66,46 +63,46 @@ class Mpris2 : public QObject { Q_OBJECT public: - //org.mpris.MediaPlayer2 MPRIS 2.0 Root interface - Q_PROPERTY( bool CanQuit READ CanQuit ) - Q_PROPERTY( bool CanRaise READ CanRaise ) - Q_PROPERTY( bool HasTrackList READ HasTrackList ) - Q_PROPERTY( QString Identity READ Identity ) - Q_PROPERTY( QString DesktopEntry READ DesktopEntry ) - Q_PROPERTY( QStringList SupportedUriSchemes READ SupportedUriSchemes ) - Q_PROPERTY( QStringList SupportedMimeTypes READ SupportedMimeTypes ) + // org.mpris.MediaPlayer2 MPRIS 2.0 Root interface + Q_PROPERTY(bool CanQuit READ CanQuit) + Q_PROPERTY(bool CanRaise READ CanRaise) + Q_PROPERTY(bool HasTrackList READ HasTrackList) + Q_PROPERTY(QString Identity READ Identity) + Q_PROPERTY(QString DesktopEntry READ DesktopEntry) + Q_PROPERTY(QStringList SupportedUriSchemes READ SupportedUriSchemes) + Q_PROPERTY(QStringList SupportedMimeTypes READ SupportedMimeTypes) - //org.mpris.MediaPlayer2 MPRIS 2.2 Root interface - Q_PROPERTY( bool CanSetFullscreen READ CanSetFullscreen ) - Q_PROPERTY( bool Fullscreen READ Fullscreen WRITE SetFullscreen ) + // org.mpris.MediaPlayer2 MPRIS 2.2 Root interface + Q_PROPERTY(bool CanSetFullscreen READ CanSetFullscreen) + Q_PROPERTY(bool Fullscreen READ Fullscreen WRITE SetFullscreen) - //org.mpris.MediaPlayer2.Player MPRIS 2.0 Player interface - Q_PROPERTY( QString PlaybackStatus READ PlaybackStatus ) - Q_PROPERTY( QString LoopStatus READ LoopStatus WRITE SetLoopStatus ) - Q_PROPERTY( double Rate READ Rate WRITE SetRate ) - Q_PROPERTY( bool Shuffle READ Shuffle WRITE SetShuffle ) - Q_PROPERTY( QVariantMap Metadata READ Metadata ) - Q_PROPERTY( double Volume READ Volume WRITE SetVolume ) - Q_PROPERTY( qlonglong Position READ Position ) - Q_PROPERTY( double MinimumRate READ MinimumRate ) - Q_PROPERTY( double MaximumRate READ MaximumRate ) - Q_PROPERTY( bool CanGoNext READ CanGoNext ) - Q_PROPERTY( bool CanGoPrevious READ CanGoPrevious ) - Q_PROPERTY( bool CanPlay READ CanPlay ) - Q_PROPERTY( bool CanPause READ CanPause ) - Q_PROPERTY( bool CanSeek READ CanSeek ) - Q_PROPERTY( bool CanControl READ CanControl ) + // org.mpris.MediaPlayer2.Player MPRIS 2.0 Player interface + Q_PROPERTY(QString PlaybackStatus READ PlaybackStatus) + Q_PROPERTY(QString LoopStatus READ LoopStatus WRITE SetLoopStatus) + Q_PROPERTY(double Rate READ Rate WRITE SetRate) + Q_PROPERTY(bool Shuffle READ Shuffle WRITE SetShuffle) + Q_PROPERTY(QVariantMap Metadata READ Metadata) + Q_PROPERTY(double Volume READ Volume WRITE SetVolume) + Q_PROPERTY(qlonglong Position READ Position) + Q_PROPERTY(double MinimumRate READ MinimumRate) + Q_PROPERTY(double MaximumRate READ MaximumRate) + Q_PROPERTY(bool CanGoNext READ CanGoNext) + Q_PROPERTY(bool CanGoPrevious READ CanGoPrevious) + Q_PROPERTY(bool CanPlay READ CanPlay) + Q_PROPERTY(bool CanPause READ CanPause) + Q_PROPERTY(bool CanSeek READ CanSeek) + Q_PROPERTY(bool CanControl READ CanControl) - //org.mpris.MediaPlayer2.TrackList MPRIS 2.0 Player interface - Q_PROPERTY( TrackIds Tracks READ Tracks ) - Q_PROPERTY( bool CanEditTracks READ CanEditTracks ) + // org.mpris.MediaPlayer2.TrackList MPRIS 2.0 Player interface + Q_PROPERTY(TrackIds Tracks READ Tracks) + Q_PROPERTY(bool CanEditTracks READ CanEditTracks) - //org.mpris.MediaPlayer2.Playlists MPRIS 2.1 Playlists interface - Q_PROPERTY( quint32 PlaylistCount READ PlaylistCount ) - Q_PROPERTY( QStringList Orderings READ Orderings ) - Q_PROPERTY( MaybePlaylist ActivePlaylist READ ActivePlaylist ) + // org.mpris.MediaPlayer2.Playlists MPRIS 2.1 Playlists interface + Q_PROPERTY(quint32 PlaylistCount READ PlaylistCount) + Q_PROPERTY(QStringList Orderings READ Orderings) + Q_PROPERTY(MaybePlaylist ActivePlaylist READ ActivePlaylist) - Mpris2(Application* app, Mpris1* mpris1, QObject* parent = 0); + Mpris2(Application* app, Mpris1* mpris1, QObject* parent = nullptr); // Root Properties bool CanQuit() const; @@ -163,7 +160,8 @@ class Mpris2 : public QObject { // Methods TrackMetadata GetTracksMetadata(const TrackIds& tracks) const; - void AddTrack(const QString& uri, const QDBusObjectPath& afterTrack, bool setAsCurrent); + void AddTrack(const QString& uri, const QDBusObjectPath& afterTrack, + bool setAsCurrent); void RemoveTrack(const QDBusObjectPath& trackId); void GoTo(const QDBusObjectPath& trackId); @@ -174,8 +172,8 @@ class Mpris2 : public QObject { // Methods void ActivatePlaylist(const QDBusObjectPath& playlist_id); - QList GetPlaylists( - quint32 index, quint32 max_count, const QString& order, bool reverse_order); + QList GetPlaylists(quint32 index, quint32 max_count, + const QString& order, bool reverse_order); signals: // Player @@ -185,14 +183,15 @@ signals: void TrackListReplaced(const TrackIds& Tracks, QDBusObjectPath CurrentTrack); void TrackAdded(const TrackMetadata& Metadata, QDBusObjectPath AfterTrack); void TrackRemoved(const QDBusObjectPath& trackId); - void TrackMetadataChanged(const QDBusObjectPath& trackId, const TrackMetadata& metadata); + void TrackMetadataChanged(const QDBusObjectPath& trackId, + const TrackMetadata& metadata); void RaiseMainWindow(); // Playlist void PlaylistChanged(const MprisPlaylist& playlist); -private slots: + private slots: void ArtLoaded(const Song& song, const QString& art_uri); void EngineStateChanged(Engine::State newState); void VolumeChanged(); @@ -204,10 +203,11 @@ private slots: void PlaylistChanged(Playlist* playlist); void PlaylistCollectionChanged(Playlist* playlist); -private: + private: void EmitNotification(const QString& name); void EmitNotification(const QString& name, const QVariant& val); - void EmitNotification(const QString& name, const QVariant& val, const QString& mprisEntity); + void EmitNotification(const QString& name, const QVariant& val, + const QString& mprisEntity); QString PlaybackStatus(Engine::State state) const; @@ -215,7 +215,7 @@ private: QString DesktopEntryAbsolutePath() const; -private: + private: static const char* kMprisObjectPath; static const char* kServiceName; static const char* kFreedesktopPath; @@ -226,6 +226,6 @@ private: Mpris1* mpris1_; }; -} // namespace mpris +} // namespace mpris #endif diff --git a/src/core/mpris_common.h b/src/core/mpris_common.h index b65dc7e4d..329010a0d 100644 --- a/src/core/mpris_common.h +++ b/src/core/mpris_common.h @@ -25,34 +25,37 @@ namespace mpris { -inline void AddMetadata(const QString& key, const QString& metadata, QVariantMap* map) { - if (!metadata.isEmpty()) (*map)[key] = metadata; +inline void AddMetadata(const QString& key, const QString& metadata, + QVariantMap* map) { + if (!metadata.isEmpty()) (*map)[key] = metadata; } -inline void AddMetadataAsList(const QString& key, const QString& metadata, QVariantMap* map) { - if (!metadata.isEmpty()) (*map)[key] = QStringList() << metadata; +inline void AddMetadataAsList(const QString& key, const QString& metadata, + QVariantMap* map) { + if (!metadata.isEmpty()) (*map)[key] = QStringList() << metadata; } inline void AddMetadata(const QString& key, int metadata, QVariantMap* map) { - if (metadata > 0) (*map)[key] = metadata; + if (metadata > 0) (*map)[key] = metadata; } inline void AddMetadata(const QString& key, qint64 metadata, QVariantMap* map) { - if (metadata > 0) (*map)[key] = metadata; + if (metadata > 0) (*map)[key] = metadata; } inline void AddMetadata(const QString& key, double metadata, QVariantMap* map) { - if (metadata != 0.0) (*map)[key] = metadata; + if (metadata != 0.0) (*map)[key] = metadata; } -inline void AddMetadata(const QString& key, const QDateTime& metadata, QVariantMap* map) { - if (metadata.isValid()) (*map)[key] = metadata; +inline void AddMetadata(const QString& key, const QDateTime& metadata, + QVariantMap* map) { + if (metadata.isValid()) (*map)[key] = metadata; } inline QString AsMPRISDateTimeType(uint time) { return time != -1 ? QDateTime::fromTime_t(time).toString(Qt::ISODate) : ""; } -} // namespace mpris +} // namespace mpris -#endif // MPRIS_COMMON_H +#endif // MPRIS_COMMON_H diff --git a/src/core/multisortfilterproxy.cpp b/src/core/multisortfilterproxy.cpp index 903e58072..b87ca12ab 100644 --- a/src/core/multisortfilterproxy.cpp +++ b/src/core/multisortfilterproxy.cpp @@ -6,9 +6,7 @@ #include MultiSortFilterProxy::MultiSortFilterProxy(QObject* parent) - : QSortFilterProxyModel(parent) -{ -} + : QSortFilterProxyModel(parent) {} void MultiSortFilterProxy::AddSortSpec(int role, Qt::SortOrder order) { sorting_ << SortSpec(role, order); @@ -16,7 +14,7 @@ void MultiSortFilterProxy::AddSortSpec(int role, Qt::SortOrder order) { bool MultiSortFilterProxy::lessThan(const QModelIndex& left, const QModelIndex& right) const { - foreach (const SortSpec& spec, sorting_) { + for (const SortSpec& spec : sorting_) { const int ret = Compare(left.data(spec.first), right.data(spec.first)); if (ret < 0) { @@ -31,29 +29,38 @@ bool MultiSortFilterProxy::lessThan(const QModelIndex& left, template static inline int DoCompare(T left, T right) { - if (left < right) - return -1; - if (left > right) - return 1; + if (left < right) return -1; + if (left > right) return 1; return 0; } -int MultiSortFilterProxy::Compare(const QVariant& left, const QVariant& right) const { +int MultiSortFilterProxy::Compare(const QVariant& left, + const QVariant& right) const { // Copied from the QSortFilterProxyModel::lessThan implementation, but returns // -1, 0 or 1 instead of true or false. switch (left.userType()) { case QVariant::Invalid: return (right.type() != QVariant::Invalid) ? -1 : 0; - case QVariant::Int: return DoCompare(left.toInt(), right.toInt()); - case QVariant::UInt: return DoCompare(left.toUInt(), right.toUInt()); - case QVariant::LongLong: return DoCompare(left.toLongLong(), right.toLongLong()); - case QVariant::ULongLong: return DoCompare(left.toULongLong(), right.toULongLong()); - case QMetaType::Float: return DoCompare(left.toFloat(), right.toFloat()); - case QVariant::Double: return DoCompare(left.toDouble(), right.toDouble()); - case QVariant::Char: return DoCompare(left.toChar(), right.toChar()); - case QVariant::Date: return DoCompare(left.toDate(), right.toDate()); - case QVariant::Time: return DoCompare(left.toTime(), right.toTime()); - case QVariant::DateTime: return DoCompare(left.toDateTime(), right.toDateTime()); + case QVariant::Int: + return DoCompare(left.toInt(), right.toInt()); + case QVariant::UInt: + return DoCompare(left.toUInt(), right.toUInt()); + case QVariant::LongLong: + return DoCompare(left.toLongLong(), right.toLongLong()); + case QVariant::ULongLong: + return DoCompare(left.toULongLong(), right.toULongLong()); + case QMetaType::Float: + return DoCompare(left.toFloat(), right.toFloat()); + case QVariant::Double: + return DoCompare(left.toDouble(), right.toDouble()); + case QVariant::Char: + return DoCompare(left.toChar(), right.toChar()); + case QVariant::Date: + return DoCompare(left.toDate(), right.toDate()); + case QVariant::Time: + return DoCompare(left.toTime(), right.toTime()); + case QVariant::DateTime: + return DoCompare(left.toDateTime(), right.toDateTime()); case QVariant::String: default: if (isSortLocaleAware()) diff --git a/src/core/multisortfilterproxy.h b/src/core/multisortfilterproxy.h index edc4dd3d3..b8c4fd314 100644 --- a/src/core/multisortfilterproxy.h +++ b/src/core/multisortfilterproxy.h @@ -4,19 +4,19 @@ #include class MultiSortFilterProxy : public QSortFilterProxyModel { -public: - MultiSortFilterProxy(QObject* parent = NULL); + public: + MultiSortFilterProxy(QObject* parent = nullptr); void AddSortSpec(int role, Qt::SortOrder order = Qt::AscendingOrder); -protected: + protected: bool lessThan(const QModelIndex& left, const QModelIndex& right) const; -private: + private: int Compare(const QVariant& left, const QVariant& right) const; typedef QPair SortSpec; QList sorting_; }; -#endif // MULTISORTFILTERPROXY_H +#endif // MULTISORTFILTERPROXY_H diff --git a/src/core/musicstorage.cpp b/src/core/musicstorage.cpp index e6a23906a..9c76bdfd4 100644 --- a/src/core/musicstorage.cpp +++ b/src/core/musicstorage.cpp @@ -17,6 +17,4 @@ #include "musicstorage.h" -MusicStorage::MusicStorage() -{ -} +MusicStorage::MusicStorage() {} diff --git a/src/core/musicstorage.h b/src/core/musicstorage.h index 4f7d0556f..dc6655aa5 100644 --- a/src/core/musicstorage.h +++ b/src/core/musicstorage.h @@ -20,13 +20,13 @@ #include "song.h" +#include +#include + #include -#include -#include - class MusicStorage { -public: + public: MusicStorage(); virtual ~MusicStorage() {} @@ -44,7 +44,7 @@ public: Transcode_Unsupported = 3, }; - typedef boost::function ProgressFunction; + typedef std::function ProgressFunction; struct CopyJob { QString source_; @@ -62,10 +62,16 @@ public: virtual QString LocalPath() const { return QString(); } virtual TranscodeMode GetTranscodeMode() const { return Transcode_Never; } - virtual Song::FileType GetTranscodeFormat() const { return Song::Type_Unknown; } - virtual bool GetSupportedFiletypes(QList* ret) { return true; } + virtual Song::FileType GetTranscodeFormat() const { + return Song::Type_Unknown; + } + virtual bool GetSupportedFiletypes(QList* ret) { + return true; + } - virtual bool StartCopy(QList* supported_types) { return true;} + virtual bool StartCopy(QList* supported_types) { + return true; + } virtual bool CopyToStorage(const CopyJob& job) = 0; virtual void FinishCopy(bool success) {} @@ -77,6 +83,6 @@ public: }; Q_DECLARE_METATYPE(MusicStorage*); -Q_DECLARE_METATYPE(boost::shared_ptr); +Q_DECLARE_METATYPE(std::shared_ptr); -#endif // MUSICSTORAGE_H +#endif // MUSICSTORAGE_H diff --git a/src/core/network.cpp b/src/core/network.cpp index a5c0f143d..bd315ba3d 100644 --- a/src/core/network.cpp +++ b/src/core/network.cpp @@ -27,14 +27,14 @@ #include "utilities.h" QMutex ThreadSafeNetworkDiskCache::sMutex; -QNetworkDiskCache* ThreadSafeNetworkDiskCache::sCache = NULL; - +QNetworkDiskCache* ThreadSafeNetworkDiskCache::sCache = nullptr; ThreadSafeNetworkDiskCache::ThreadSafeNetworkDiskCache(QObject* parent) { QMutexLocker l(&sMutex); if (!sCache) { sCache = new QNetworkDiskCache; - sCache->setCacheDirectory(Utilities::GetConfigPath(Utilities::Path_NetworkCache)); + sCache->setCacheDirectory( + Utilities::GetConfigPath(Utilities::Path_NetworkCache)); } } @@ -58,7 +58,8 @@ QNetworkCacheMetaData ThreadSafeNetworkDiskCache::metaData(const QUrl& url) { return sCache->metaData(url); } -QIODevice* ThreadSafeNetworkDiskCache::prepare(const QNetworkCacheMetaData& metaData) { +QIODevice* ThreadSafeNetworkDiskCache::prepare( + const QNetworkCacheMetaData& metaData) { QMutexLocker l(&sMutex); return sCache->prepare(metaData); } @@ -68,7 +69,8 @@ bool ThreadSafeNetworkDiskCache::remove(const QUrl& url) { return sCache->remove(url); } -void ThreadSafeNetworkDiskCache::updateMetaData(const QNetworkCacheMetaData& metaData) { +void ThreadSafeNetworkDiskCache::updateMetaData( + const QNetworkCacheMetaData& metaData) { QMutexLocker l(&sMutex); sCache->updateMetaData(metaData); } @@ -78,18 +80,17 @@ void ThreadSafeNetworkDiskCache::clear() { sCache->clear(); } - NetworkAccessManager::NetworkAccessManager(QObject* parent) - : QNetworkAccessManager(parent) -{ + : QNetworkAccessManager(parent) { setCache(new ThreadSafeNetworkDiskCache(this)); } QNetworkReply* NetworkAccessManager::createRequest( Operation op, const QNetworkRequest& request, QIODevice* outgoingData) { - QByteArray user_agent = QString("%1 %2").arg( - QCoreApplication::applicationName(), - QCoreApplication::applicationVersion()).toUtf8(); + QByteArray user_agent = QString("%1 %2") + .arg(QCoreApplication::applicationName(), + QCoreApplication::applicationVersion()) + .toUtf8(); if (request.hasRawHeader("User-Agent")) { // Append the existing user-agent set by a client library (such as @@ -107,8 +108,8 @@ QNetworkReply* NetworkAccessManager::createRequest( } // Prefer the cache unless the caller has changed the setting already - if (request.attribute(QNetworkRequest::CacheLoadControlAttribute).toInt() - == QNetworkRequest::PreferNetwork) { + if (request.attribute(QNetworkRequest::CacheLoadControlAttribute).toInt() == + QNetworkRequest::PreferNetwork) { new_request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache); } @@ -116,14 +117,11 @@ QNetworkReply* NetworkAccessManager::createRequest( return QNetworkAccessManager::createRequest(op, new_request, outgoingData); } - NetworkTimeouts::NetworkTimeouts(int timeout_msec, QObject* parent) - : timeout_msec_(timeout_msec) { -} + : timeout_msec_(timeout_msec) {} void NetworkTimeouts::AddReply(QNetworkReply* reply) { - if (timers_.contains(reply)) - return; + if (timers_.contains(reply)) return; connect(reply, SIGNAL(destroyed()), SLOT(ReplyFinished())); connect(reply, SIGNAL(finished()), SLOT(ReplyFinished())); @@ -167,25 +165,29 @@ void NetworkTimeouts::timerEvent(QTimerEvent* e) { } } - -RedirectFollower::RedirectFollower(QNetworkReply* first_reply, int max_redirects) - : QObject(NULL), - current_reply_(first_reply), - redirects_remaining_(max_redirects) { +RedirectFollower::RedirectFollower(QNetworkReply* first_reply, + int max_redirects) + : QObject(nullptr), + current_reply_(first_reply), + redirects_remaining_(max_redirects) { ConnectReply(first_reply); } void RedirectFollower::ConnectReply(QNetworkReply* reply) { connect(reply, SIGNAL(readyRead()), SLOT(ReadyRead())); - connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SIGNAL(error(QNetworkReply::NetworkError))); - connect(reply, SIGNAL(downloadProgress(qint64,qint64)), SIGNAL(downloadProgress(qint64,qint64))); - connect(reply, SIGNAL(uploadProgress(qint64,qint64)), SIGNAL(uploadProgress(qint64,qint64))); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), + SIGNAL(error(QNetworkReply::NetworkError))); + connect(reply, SIGNAL(downloadProgress(qint64, qint64)), + SIGNAL(downloadProgress(qint64, qint64))); + connect(reply, SIGNAL(uploadProgress(qint64, qint64)), + SIGNAL(uploadProgress(qint64, qint64))); connect(reply, SIGNAL(finished()), SLOT(ReplyFinished())); } void RedirectFollower::ReadyRead() { // Don't re-emit this signal for redirect replies. - if (current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute).isValid()) { + if (current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute) + .isValid()) { return; } @@ -195,14 +197,16 @@ void RedirectFollower::ReadyRead() { void RedirectFollower::ReplyFinished() { current_reply_->deleteLater(); - if (current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute).isValid()) { + if (current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute) + .isValid()) { if (redirects_remaining_-- == 0) { emit finished(); return; } const QUrl next_url = current_reply_->url().resolved( - current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); + current_reply_->attribute(QNetworkRequest::RedirectionTargetAttribute) + .toUrl()); QNetworkRequest req(current_reply_->request()); req.setUrl(next_url); diff --git a/src/core/network.h b/src/core/network.h index d5f7f4cd4..4e5ab20da 100644 --- a/src/core/network.h +++ b/src/core/network.h @@ -26,7 +26,7 @@ class QNetworkDiskCache; class ThreadSafeNetworkDiskCache : public QAbstractNetworkCache { -public: + public: ThreadSafeNetworkDiskCache(QObject* parent); qint64 cacheSize() const; @@ -39,28 +39,26 @@ public: void clear(); -private: + private: static QMutex sMutex; static QNetworkDiskCache* sCache; }; - class NetworkAccessManager : public QNetworkAccessManager { Q_OBJECT -public: - NetworkAccessManager(QObject* parent = 0); + public: + NetworkAccessManager(QObject* parent = nullptr); -protected: + protected: QNetworkReply* createRequest(Operation op, const QNetworkRequest& request, QIODevice* outgoingData); }; - class RedirectFollower : public QObject { Q_OBJECT -public: + public: RedirectFollower(QNetworkReply* first_reply, int max_redirects = 5); bool hit_redirect_limit() const { return redirects_remaining_ < 0; } @@ -69,8 +67,12 @@ public: // These are all forwarded to the current reply. QNetworkReply::NetworkError error() const { return current_reply_->error(); } QString errorString() const { return current_reply_->errorString(); } - QVariant attribute(QNetworkRequest::Attribute code) const { return current_reply_->attribute(code); } - QVariant header(QNetworkRequest::KnownHeaders header) const { return current_reply_->header(header); } + QVariant attribute(QNetworkRequest::Attribute code) const { + return current_reply_->attribute(code); + } + QVariant header(QNetworkRequest::KnownHeaders header) const { + return current_reply_->header(header); + } qint64 bytesAvailable() const { return current_reply_->bytesAvailable(); } QUrl url() const { return current_reply_->url(); } QByteArray readAll() { return current_reply_->readAll(); } @@ -86,41 +88,40 @@ signals: // This is NOT emitted when a request that has a redirect finishes. void finished(); -private slots: + private slots: void ReadyRead(); void ReplyFinished(); -private: + private: void ConnectReply(QNetworkReply* reply); -private: + private: QNetworkReply* current_reply_; int redirects_remaining_; }; - class NetworkTimeouts : public QObject { Q_OBJECT -public: - NetworkTimeouts(int timeout_msec, QObject* parent = 0); + public: + NetworkTimeouts(int timeout_msec, QObject* parent = nullptr); // TODO: Template this to avoid code duplication. void AddReply(QNetworkReply* reply); void AddReply(RedirectFollower* reply); void SetTimeout(int msec) { timeout_msec_ = msec; } -protected: + protected: void timerEvent(QTimerEvent* e); -private slots: + private slots: void ReplyFinished(); void RedirectFinished(RedirectFollower* redirect); -private: + private: int timeout_msec_; QMap timers_; QMap redirect_timers_; }; -#endif // NETWORK_H +#endif // NETWORK_H diff --git a/src/core/networkproxyfactory.cpp b/src/core/networkproxyfactory.cpp index ffe7a73e7..7ffde1c94 100644 --- a/src/core/networkproxyfactory.cpp +++ b/src/core/networkproxyfactory.cpp @@ -8,15 +8,14 @@ #include -NetworkProxyFactory* NetworkProxyFactory::sInstance = NULL; +NetworkProxyFactory* NetworkProxyFactory::sInstance = nullptr; const char* NetworkProxyFactory::kSettingsGroup = "Proxy"; NetworkProxyFactory::NetworkProxyFactory() - : mode_(Mode_System), - type_(QNetworkProxy::HttpProxy), - port_(8080), - use_authentication_(false) -{ + : mode_(Mode_System), + type_(QNetworkProxy::HttpProxy), + port_(8080), + use_authentication_(false) { #ifdef Q_OS_LINUX // Linux uses environment variables to pass proxy configuration information, // which systemProxyForQuery doesn't support for some reason. @@ -29,9 +28,8 @@ NetworkProxyFactory::NetworkProxyFactory() qLog(Debug) << "Detected system proxy URLs:" << urls; - foreach (const QString& url_str, urls) { - if (url_str.isEmpty()) - continue; + for (const QString& url_str : urls) { + if (url_str.isEmpty()) continue; env_url_ = QUrl(url_str); break; @@ -56,7 +54,8 @@ void NetworkProxyFactory::ReloadSettings() { s.beginGroup(kSettingsGroup); mode_ = Mode(s.value("mode", Mode_System).toInt()); - type_ = QNetworkProxy::ProxyType(s.value("type", QNetworkProxy::HttpProxy).toInt()); + type_ = QNetworkProxy::ProxyType( + s.value("type", QNetworkProxy::HttpProxy).toInt()); hostname_ = s.value("hostname").toString(); port_ = s.value("port", 8080).toInt(); use_authentication_ = s.value("use_authentication", false).toBool(); @@ -71,41 +70,41 @@ QList NetworkProxyFactory::queryProxy( QNetworkProxy ret; switch (mode_) { - case Mode_System: + case Mode_System: #ifdef Q_OS_LINUX - Q_UNUSED(query); + Q_UNUSED(query); - if (env_url_.isEmpty()) { - ret.setType(QNetworkProxy::NoProxy); - } else { - ret.setHostName(env_url_.host()); - ret.setPort(env_url_.port()); - ret.setUser(env_url_.userName()); - ret.setPassword(env_url_.password()); - if (env_url_.scheme().startsWith("http")) - ret.setType(QNetworkProxy::HttpProxy); - else - ret.setType(QNetworkProxy::Socks5Proxy); - qLog(Debug) << "Using proxy URL:" << env_url_; - } - break; + if (env_url_.isEmpty()) { + ret.setType(QNetworkProxy::NoProxy); + } else { + ret.setHostName(env_url_.host()); + ret.setPort(env_url_.port()); + ret.setUser(env_url_.userName()); + ret.setPassword(env_url_.password()); + if (env_url_.scheme().startsWith("http")) + ret.setType(QNetworkProxy::HttpProxy); + else + ret.setType(QNetworkProxy::Socks5Proxy); + qLog(Debug) << "Using proxy URL:" << env_url_; + } + break; #else - return systemProxyForQuery(query); + return systemProxyForQuery(query); #endif - case Mode_Direct: - ret.setType(QNetworkProxy::NoProxy); - break; + case Mode_Direct: + ret.setType(QNetworkProxy::NoProxy); + break; - case Mode_Manual: - ret.setType(type_); - ret.setHostName(hostname_); - ret.setPort(port_); - if (use_authentication_) { - ret.setUser(username_); - ret.setPassword(password_); - } - break; + case Mode_Manual: + ret.setType(type_); + ret.setHostName(hostname_); + ret.setPort(port_); + if (use_authentication_) { + ret.setUser(username_); + ret.setPassword(password_); + } + break; } return QList() << ret; diff --git a/src/core/networkproxyfactory.h b/src/core/networkproxyfactory.h index 78030e772..882f0554b 100644 --- a/src/core/networkproxyfactory.h +++ b/src/core/networkproxyfactory.h @@ -6,13 +6,9 @@ #include class NetworkProxyFactory : public QNetworkProxyFactory { -public: + public: // These values are persisted - enum Mode { - Mode_System = 0, - Mode_Direct = 1, - Mode_Manual = 2, - }; + enum Mode { Mode_System = 0, Mode_Direct = 1, Mode_Manual = 2, }; static NetworkProxyFactory* Instance(); static const char* kSettingsGroup; @@ -21,7 +17,7 @@ public: void ReloadSettings(); QList queryProxy(const QNetworkProxyQuery& query); -private: + private: NetworkProxyFactory(); static NetworkProxyFactory* sInstance; @@ -41,4 +37,4 @@ private: #endif }; -#endif // NETWORKPROXYFACTORY_H +#endif // NETWORKPROXYFACTORY_H diff --git a/src/core/organise.cpp b/src/core/organise.cpp index b9efc0dab..6f18417f6 100644 --- a/src/core/organise.cpp +++ b/src/core/organise.cpp @@ -15,12 +15,9 @@ along with Clementine. If not, see . */ -#include "musicstorage.h" #include "organise.h" -#include "taskmanager.h" -#include "core/logging.h" -#include "core/tagreaderclient.h" -#include "core/utilities.h" + +#include #include #include @@ -28,30 +25,35 @@ #include #include -#include +#include "musicstorage.h" +#include "taskmanager.h" +#include "core/logging.h" +#include "core/tagreaderclient.h" +#include "core/utilities.h" + +using std::placeholders::_1; const int Organise::kBatchSize = 10; const int Organise::kTranscodeProgressInterval = 500; Organise::Organise(TaskManager* task_manager, - boost::shared_ptr destination, - const OrganiseFormat &format, bool copy, bool overwrite, + std::shared_ptr destination, + const OrganiseFormat& format, bool copy, bool overwrite, const NewSongInfoList& songs_info, bool eject_after) - : thread_(NULL), - task_manager_(task_manager), - transcoder_(new Transcoder(this)), - destination_(destination), - format_(format), - copy_(copy), - overwrite_(overwrite), - eject_after_(eject_after), - task_count_(songs_info.count()), - transcode_suffix_(1), - tasks_complete_(0), - started_(false), - task_id_(0), - current_copy_progress_(0) -{ + : thread_(nullptr), + task_manager_(task_manager), + transcoder_(new Transcoder(this)), + destination_(destination), + format_(format), + copy_(copy), + overwrite_(overwrite), + eject_after_(eject_after), + task_count_(songs_info.count()), + transcode_suffix_(1), + tasks_complete_(0), + started_(false), + task_id_(0), + current_copy_progress_(0) { original_thread_ = thread(); for (const NewSongInfo& song_info : songs_info) { @@ -60,15 +62,15 @@ Organise::Organise(TaskManager* task_manager, } void Organise::Start() { - if (thread_) - return; + if (thread_) return; task_id_ = task_manager_->StartTask(tr("Organising files")); task_manager_->SetTaskBlocksLibraryScans(true); thread_ = new QThread; connect(thread_, SIGNAL(started()), SLOT(ProcessSomeFiles())); - connect(transcoder_, SIGNAL(JobComplete(QString, bool)), SLOT(FileTranscoded(QString, bool))); + connect(transcoder_, SIGNAL(JobComplete(QString, bool)), + SLOT(FileTranscoded(QString, bool))); moveToThread(thread_); thread_->start(); @@ -99,8 +101,7 @@ void Organise::ProcessSomeFiles() { UpdateProgress(); destination_->FinishCopy(files_with_errors_.isEmpty()); - if (eject_after_) - destination_->Eject(); + if (eject_after_) destination_->Eject(); task_manager_->SetTaskFinished(task_id_); @@ -120,16 +121,14 @@ void Organise::ProcessSomeFiles() { for (int i = 0; i < kBatchSize; ++i) { SetSongProgress(0); - if (tasks_pending_.isEmpty()) - break; + if (tasks_pending_.isEmpty()) break; Task task = tasks_pending_.takeFirst(); qLog(Info) << "Processing" << task.song_info_.song_.url().toLocalFile(); // Use a Song instead of a tag reader Song song = task.song_info_.song_; - if (!song.is_valid()) - continue; + if (!song.is_valid()) continue; // Maybe this file is one that's been transcoded already? if (!task.transcoded_filename_.isEmpty()) { @@ -139,10 +138,13 @@ void Organise::ProcessSomeFiles() { song.set_filetype(task.new_filetype_); // Fiddle the filename extension as well to match the new type - song.set_url(QUrl::fromLocalFile(Utilities::FiddleFileExtension(song.basefilename(), task.new_extension_))); - song.set_basefilename(Utilities::FiddleFileExtension(song.basefilename(), task.new_extension_)); + song.set_url(QUrl::fromLocalFile(Utilities::FiddleFileExtension( + song.basefilename(), task.new_extension_))); + song.set_basefilename(Utilities::FiddleFileExtension( + song.basefilename(), task.new_extension_)); - // Have to set this to the size of the new file or else funny stuff happens + // Have to set this to the size of the new file or else funny stuff + // happens song.set_filesize(QFileInfo(task.transcoded_filename_).size()); } else { // Figure out if we need to transcode it @@ -164,21 +166,23 @@ void Organise::ProcessSomeFiles() { // Start the transcoding - this will happen in the background and // FileTranscoded() will get called when it's done. At that point the // task will get re-added to the pending queue with the new filename. - transcoder_->AddJob(task.song_info_.song_.url().toLocalFile(), preset, task.transcoded_filename_); + transcoder_->AddJob(task.song_info_.song_.url().toLocalFile(), preset, + task.transcoded_filename_); transcoder_->Start(); continue; } } MusicStorage::CopyJob job; - job.source_ = task.transcoded_filename_.isEmpty() ? - task.song_info_.song_.url().toLocalFile() : task.transcoded_filename_; + job.source_ = task.transcoded_filename_.isEmpty() + ? task.song_info_.song_.url().toLocalFile() + : task.transcoded_filename_; job.destination_ = task.song_info_.new_filename_; job.metadata_ = song; job.overwrite_ = overwrite_; job.remove_original_ = !copy_; - job.progress_ = boost::bind(&Organise::SetSongProgress, - this, _1, !task.transcoded_filename_.isEmpty()); + job.progress_ = std::bind(&Organise::SetSongProgress, this, _1, + !task.transcoded_filename_.isEmpty()); if (!destination_->CopyToStorage(job)) { files_with_errors_ << task.song_info_.song_.basefilename(); @@ -196,8 +200,7 @@ void Organise::ProcessSomeFiles() { } Song::FileType Organise::CheckTranscode(Song::FileType original_type) const { - if (original_type == Song::Type_Stream) - return Song::Type_Unknown; + if (original_type == Song::Type_Stream) return Song::Type_Unknown; const MusicStorage::TranscodeMode mode = destination_->GetTranscodeMode(); const Song::FileType format = destination_->GetTranscodeFormat(); @@ -207,16 +210,15 @@ Song::FileType Organise::CheckTranscode(Song::FileType original_type) const { return Song::Type_Unknown; case MusicStorage::Transcode_Always: - if (original_type == format) - return Song::Type_Unknown; + if (original_type == format) return Song::Type_Unknown; return format; case MusicStorage::Transcode_Unsupported: - if (supported_filetypes_.isEmpty() || supported_filetypes_.contains(original_type)) + if (supported_filetypes_.isEmpty() || + supported_filetypes_.contains(original_type)) return Song::Type_Unknown; - if (format != Song::Type_Unknown) - return format; + if (format != Song::Type_Unknown) return format; // The user hasn't visited the device properties page yet to set a // preferred format for the device, so we have to pick the best @@ -229,7 +231,7 @@ Song::FileType Organise::CheckTranscode(Song::FileType original_type) const { void Organise::SetSongProgress(float progress, bool transcoded) { const int max = transcoded ? 50 : 100; current_copy_progress_ = (transcoded ? 50 : 0) + - qBound(0, static_cast(progress * max), max-1); + qBound(0, static_cast(progress * max), max - 1); UpdateProgress(); } @@ -239,9 +241,9 @@ void Organise::UpdateProgress() { // Update transcoding progress QMap transcode_progress = transcoder_->GetProgress(); for (const QString& filename : transcode_progress.keys()) { - if (!tasks_transcoding_.contains(filename)) - continue; - tasks_transcoding_[filename].transcode_progress_ = transcode_progress[filename]; + if (!tasks_transcoding_.contains(filename)) continue; + tasks_transcoding_[filename].transcode_progress_ = + transcode_progress[filename]; } // Count the progress of all tasks that are in the queue. Files that need diff --git a/src/core/organise.h b/src/core/organise.h index b40bf8cb9..9961c8be8 100644 --- a/src/core/organise.h +++ b/src/core/organise.h @@ -18,12 +18,12 @@ #ifndef ORGANISE_H #define ORGANISE_H +#include + #include #include #include -#include - #include "organiseformat.h" #include "transcoder/transcoder.h" @@ -33,18 +33,17 @@ class TaskManager; class Organise : public QObject { Q_OBJECT -public: - + public: struct NewSongInfo { - NewSongInfo(const Song& song = Song(), const QString& new_filename = QString()) - : song_(song), new_filename_(new_filename) {} + NewSongInfo(const Song& song = Song(), + const QString& new_filename = QString()) + : song_(song), new_filename_(new_filename) {} Song song_; QString new_filename_; }; typedef QList NewSongInfoList; - Organise(TaskManager* task_manager, - boost::shared_ptr destination, + Organise(TaskManager* task_manager, std::shared_ptr destination, const OrganiseFormat& format, bool copy, bool overwrite, const NewSongInfoList& songs, bool eject_after); @@ -56,22 +55,22 @@ public: signals: void Finished(const QStringList& files_with_errors); -protected: + protected: void timerEvent(QTimerEvent* e); -private slots: + private slots: void ProcessSomeFiles(); void FileTranscoded(const QString& filename, bool success); -private: + private: void SetSongProgress(float progress, bool transcoded = false); void UpdateProgress(); Song::FileType CheckTranscode(Song::FileType original_type) const; -private: + private: struct Task { explicit Task(const NewSongInfo& song_info = NewSongInfo()) - : song_info_(song_info), transcode_progress_(0.0) {} + : song_info_(song_info), transcode_progress_(0.0) {} NewSongInfo song_info_; @@ -85,7 +84,7 @@ private: QThread* original_thread_; TaskManager* task_manager_; Transcoder* transcoder_; - boost::shared_ptr destination_; + std::shared_ptr destination_; QList supported_filetypes_; const OrganiseFormat format_; @@ -110,4 +109,4 @@ private: QStringList files_with_errors_; }; -#endif // ORGANISE_H +#endif // ORGANISE_H diff --git a/src/core/organiseformat.cpp b/src/core/organiseformat.cpp index e8be2030a..06f9a4ecc 100644 --- a/src/core/organiseformat.cpp +++ b/src/core/organiseformat.cpp @@ -22,21 +22,39 @@ #include #include +#include "core/arraysize.h" #include "core/timeconstants.h" #include "core/utilities.h" const char* OrganiseFormat::kTagPattern = "\\%([a-zA-Z]*)"; const char* OrganiseFormat::kBlockPattern = "\\{([^{}]+)\\}"; -const QStringList OrganiseFormat::kKnownTags = QStringList() - << "title" << "album" << "artist" << "artistinitial" << "albumartist" - << "composer" << "track" << "disc" << "bpm" << "year" << "genre" - << "comment" << "length" << "bitrate" << "samplerate" << "extension" - << "performer" << "grouping"; +const QStringList OrganiseFormat::kKnownTags = QStringList() << "title" + << "album" + << "artist" + << "artistinitial" + << "albumartist" + << "composer" + << "track" + << "disc" + << "bpm" + << "year" + << "genre" + << "comment" + << "length" + << "bitrate" + << "samplerate" + << "extension" + << "performer" + << "grouping"; // From http://en.wikipedia.org/wiki/8.3_filename#Directory_table -const char* OrganiseFormat::kInvalidFatCharacters = "\"*/\\:<>?|"; +const char OrganiseFormat::kInvalidFatCharacters[] = "\"*/\\:<>?|"; const int OrganiseFormat::kInvalidFatCharactersCount = - strlen(OrganiseFormat::kInvalidFatCharacters); + arraysize(OrganiseFormat::kInvalidFatCharacters) - 1; + +const char OrganiseFormat::kInvalidPrefixCharacters[] = "."; +const int OrganiseFormat::kInvalidPrefixCharactersCount = + arraysize(OrganiseFormat::kInvalidPrefixCharacters) - 1; const QRgb OrganiseFormat::SyntaxHighlighter::kValidTagColorLight = qRgb(64, 64, 255); @@ -52,14 +70,13 @@ const QRgb OrganiseFormat::SyntaxHighlighter::kInvalidTagColorDark = const QRgb OrganiseFormat::SyntaxHighlighter::kBlockColorDark = qRgb(64, 64, 64); -OrganiseFormat::OrganiseFormat(const QString &format) - : format_(format), - replace_non_ascii_(false), - replace_spaces_(false), - replace_the_(false) { -} +OrganiseFormat::OrganiseFormat(const QString& format) + : format_(format), + replace_non_ascii_(false), + replace_spaces_(false), + replace_the_(false) {} -void OrganiseFormat::set_format(const QString &v) { +void OrganiseFormat::set_format(const QString& v) { format_ = v; format_.replace('\\', '/'); } @@ -72,23 +89,24 @@ bool OrganiseFormat::IsValid() const { return v.validate(format_copy, pos) == QValidator::Acceptable; } -QString OrganiseFormat::GetFilenameForSong(const Song &song) const { +QString OrganiseFormat::GetFilenameForSong(const Song& song) const { QString filename = ParseBlock(format_, song); if (QFileInfo(filename).completeBaseName().isEmpty()) { // Avoid having empty filenames, or filenames with extension only: in this // case, keep the original filename. - // We remove the extension from "filename" if it exists, as song.basefilename() + // We remove the extension from "filename" if it exists, as + // song.basefilename() // also contains the extension. - filename = Utilities::PathWithoutFilenameExtension(filename) + song.basefilename(); + filename = + Utilities::PathWithoutFilenameExtension(filename) + song.basefilename(); } - if (replace_spaces_) - filename.replace(QRegExp("\\s"), "_"); + if (replace_spaces_) filename.replace(QRegExp("\\s"), "_"); if (replace_non_ascii_) { QString stripped; - for (int i = 0 ; i < filename.length(); ++i) { + for (int i = 0; i < filename.length(); ++i) { const QCharRef c = filename[i]; if (c < 128) { stripped.append(c); @@ -103,7 +121,19 @@ QString OrganiseFormat::GetFilenameForSong(const Song &song) const { filename = stripped; } - return filename; + // Fix any parts of the path that start with dots. + QStringList parts = filename.split("/"); + for (int i = 0; i < parts.count(); ++i) { + QString* part = &parts[i]; + for (int j = 0; j < kInvalidPrefixCharactersCount; ++j) { + if (part->startsWith(kInvalidPrefixCharacters[j])) { + part->replace(0, 1, '_'); + break; + } + } + } + + return parts.join("/"); } QString OrganiseFormat::ParseBlock(QString block, const Song& song, @@ -117,8 +147,7 @@ QString OrganiseFormat::ParseBlock(QString block, const Song& song, // Recursively parse the block bool empty = false; QString value = ParseBlock(block_regexp.cap(1), song, &empty); - if (empty) - value = ""; + if (empty) value = ""; // Replace the block's value block.replace(pos, block_regexp.matchedLength(), value); @@ -130,89 +159,95 @@ QString OrganiseFormat::ParseBlock(QString block, const Song& song, pos = 0; while ((pos = tag_regexp.indexIn(block, pos)) != -1) { QString value = TagValue(tag_regexp.cap(1), song); - if (value.isEmpty()) - empty = true; + if (value.isEmpty()) empty = true; block.replace(pos, tag_regexp.matchedLength(), value); pos += value.length(); } - if (any_empty) - *any_empty = empty; + if (any_empty) *any_empty = empty; return block; } -QString OrganiseFormat::TagValue(const QString &tag, const Song &song) const { +QString OrganiseFormat::TagValue(const QString& tag, const Song& song) const { QString value; - if (tag == "title") value = song.title(); - else if (tag == "album") value = song.album(); - else if (tag == "artist") value = song.artist(); - else if (tag == "composer") value = song.composer(); - else if (tag == "performer") value = song.performer(); - else if (tag == "grouping") value = song.grouping(); - else if (tag == "genre") value = song.genre(); - else if (tag == "comment") value = song.comment(); - else if (tag == "year") value = QString::number(song.year()); - else if (tag == "track") value = QString::number(song.track()); - else if (tag == "disc") value = QString::number(song.disc()); - else if (tag == "bpm") value = QString::number(song.bpm()); - else if (tag == "length") value = - QString::number(song.length_nanosec() / kNsecPerSec); - else if (tag == "bitrate") value = QString::number(song.bitrate()); - else if (tag == "samplerate") value = QString::number(song.samplerate()); - else if (tag == "extension") value = QFileInfo(song.url().toLocalFile()).suffix(); + if (tag == "title") + value = song.title(); + else if (tag == "album") + value = song.album(); + else if (tag == "artist") + value = song.artist(); + else if (tag == "composer") + value = song.composer(); + else if (tag == "performer") + value = song.performer(); + else if (tag == "grouping") + value = song.grouping(); + else if (tag == "genre") + value = song.genre(); + else if (tag == "comment") + value = song.comment(); + else if (tag == "year") + value = QString::number(song.year()); + else if (tag == "track") + value = QString::number(song.track()); + else if (tag == "disc") + value = QString::number(song.disc()); + else if (tag == "bpm") + value = QString::number(song.bpm()); + else if (tag == "length") + value = QString::number(song.length_nanosec() / kNsecPerSec); + else if (tag == "bitrate") + value = QString::number(song.bitrate()); + else if (tag == "samplerate") + value = QString::number(song.samplerate()); + else if (tag == "extension") + value = QFileInfo(song.url().toLocalFile()).suffix(); else if (tag == "artistinitial") { value = song.effective_albumartist().trimmed(); if (replace_the_ && !value.isEmpty()) value.replace(QRegExp("^the\\s+", Qt::CaseInsensitive), ""); if (!value.isEmpty()) value = value[0].toUpper(); } else if (tag == "albumartist") { - value = song.is_compilation() - ? "Various Artists" - : song.effective_albumartist(); + value = song.is_compilation() ? "Various Artists" + : song.effective_albumartist(); } if (replace_the_ && (tag == "artist" || tag == "albumartist")) value.replace(QRegExp("^the\\s+", Qt::CaseInsensitive), ""); - if (value == "0" || value == "-1") - value = ""; + if (value == "0" || value == "-1") value = ""; // Prepend a 0 to single-digit track numbers - if (tag == "track" && value.length() == 1) - value.prepend('0'); + if (tag == "track" && value.length() == 1) value.prepend('0'); // Replace characters that really shouldn't be in paths - for (int i = 0 ; i < kInvalidFatCharactersCount; ++i) { + for (int i = 0; i < kInvalidFatCharactersCount; ++i) { value.replace(kInvalidFatCharacters[i], '_'); } return value; } +OrganiseFormat::Validator::Validator(QObject* parent) : QValidator(parent) {} -OrganiseFormat::Validator::Validator(QObject *parent) - : QValidator(parent) {} - -QValidator::State OrganiseFormat::Validator::validate( - QString& input, int&) const { +QValidator::State OrganiseFormat::Validator::validate(QString& input, + int&) const { QRegExp tag_regexp(kTagPattern); // Make sure all the blocks match up int block_level = 0; - for (int i = 0 ; i < input.length(); ++i) { + for (int i = 0; i < input.length(); ++i) { if (input[i] == '{') block_level++; else if (input[i] == '}') block_level--; - if (block_level < 0 || block_level > 1) - return QValidator::Invalid; + if (block_level < 0 || block_level > 1) return QValidator::Invalid; } - if (block_level != 0) - return QValidator::Invalid; + if (block_level != 0) return QValidator::Invalid; // Make sure the tags are valid int pos = 0; @@ -226,15 +261,14 @@ QValidator::State OrganiseFormat::Validator::validate( return QValidator::Acceptable; } - -OrganiseFormat::SyntaxHighlighter::SyntaxHighlighter(QObject *parent) - : QSyntaxHighlighter(parent) {} +OrganiseFormat::SyntaxHighlighter::SyntaxHighlighter(QObject* parent) + : QSyntaxHighlighter(parent) {} OrganiseFormat::SyntaxHighlighter::SyntaxHighlighter(QTextEdit* parent) - : QSyntaxHighlighter(parent) {} + : QSyntaxHighlighter(parent) {} OrganiseFormat::SyntaxHighlighter::SyntaxHighlighter(QTextDocument* parent) - : QSyntaxHighlighter(parent) {} + : QSyntaxHighlighter(parent) {} void OrganiseFormat::SyntaxHighlighter::highlightBlock(const QString& text) { const bool light = @@ -267,11 +301,10 @@ void OrganiseFormat::SyntaxHighlighter::highlightBlock(const QString& text) { QTextCharFormat f = format(pos); f.setForeground( QColor(OrganiseFormat::kKnownTags.contains(tag_regexp.cap(1)) - ? valid_tag_color - : invalid_tag_color)); + ? valid_tag_color + : invalid_tag_color)); setFormat(pos, tag_regexp.matchedLength(), f); pos += tag_regexp.matchedLength(); } } - diff --git a/src/core/organiseformat.h b/src/core/organiseformat.h index 65c60ebbc..e11a24006 100644 --- a/src/core/organiseformat.h +++ b/src/core/organiseformat.h @@ -30,8 +30,10 @@ class OrganiseFormat { static const char* kTagPattern; static const char* kBlockPattern; static const QStringList kKnownTags; - static const char* kInvalidFatCharacters; + static const char kInvalidFatCharacters[]; static const int kInvalidFatCharactersCount; + static const char kInvalidPrefixCharacters[]; + static const int kInvalidPrefixCharactersCount; QString format() const { return format_; } bool replace_non_ascii() const { return replace_non_ascii_; } @@ -46,10 +48,9 @@ class OrganiseFormat { bool IsValid() const; QString GetFilenameForSong(const Song& song) const; - class Validator : public QValidator { public: - explicit Validator(QObject* parent = 0); + explicit Validator(QObject* parent = nullptr); QValidator::State validate(QString& format, int& pos) const; }; @@ -62,15 +63,15 @@ class OrganiseFormat { static const QRgb kInvalidTagColorDark; static const QRgb kBlockColorDark; - explicit SyntaxHighlighter(QObject* parent = 0); + explicit SyntaxHighlighter(QObject* parent = nullptr); explicit SyntaxHighlighter(QTextEdit* parent); explicit SyntaxHighlighter(QTextDocument* parent); void highlightBlock(const QString& format); }; private: - QString ParseBlock( - QString block, const Song& song, bool* any_empty = NULL) const; + QString ParseBlock(QString block, const Song& song, + bool* any_empty = nullptr) const; QString TagValue(const QString& tag, const Song& song) const; QString format_; diff --git a/src/core/player.cpp b/src/core/player.cpp index b8695eb3b..a4981d347 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -15,8 +15,15 @@ along with Clementine. If not, see . */ -#include "config.h" #include "player.h" + +#include + +#include +#include +#include + +#include "config.h" #include "core/application.h" #include "core/logging.h" #include "core/urlhandler.h" @@ -28,126 +35,114 @@ #include "playlist/playlistmanager.h" #ifdef HAVE_LIBLASTFM -# include "internet/lastfmservice.h" +#include "internet/lastfmservice.h" #endif -#include -#include - -#include - -using boost::shared_ptr; - +using std::shared_ptr; Player::Player(Application* app, QObject* parent) - : PlayerInterface(parent), - app_(app), - lastfm_(NULL), - engine_(new GstEngine(app_->task_manager())), - stream_change_type_(Engine::First), - last_state_(Engine::Empty), - volume_before_mute_(50) -{ + : PlayerInterface(parent), + app_(app), + lastfm_(nullptr), + engine_(new GstEngine(app_->task_manager())), + stream_change_type_(Engine::First), + last_state_(Engine::Empty), + nb_errors_received_(0), + volume_before_mute_(50) { settings_.beginGroup("Player"); SetVolume(settings_.value("volume", 50).toInt()); connect(engine_.get(), SIGNAL(Error(QString)), SIGNAL(Error(QString))); - connect(engine_.get(), SIGNAL(ValidSongRequested(QUrl)), SLOT(ValidSongRequested(QUrl))); - connect(engine_.get(), SIGNAL(InvalidSongRequested(QUrl)), SLOT(InvalidSongRequested(QUrl))); + connect(engine_.get(), SIGNAL(ValidSongRequested(QUrl)), + SLOT(ValidSongRequested(QUrl))); + connect(engine_.get(), SIGNAL(InvalidSongRequested(QUrl)), + SLOT(InvalidSongRequested(QUrl))); } -Player::~Player() { -} +Player::~Player() {} void Player::Init() { - if (!engine_->Init()) - qFatal("Error initialising audio engine"); + if (!engine_->Init()) qFatal("Error initialising audio engine"); - connect(engine_.get(), SIGNAL(StateChanged(Engine::State)), SLOT(EngineStateChanged(Engine::State))); + connect(engine_.get(), SIGNAL(StateChanged(Engine::State)), + SLOT(EngineStateChanged(Engine::State))); connect(engine_.get(), SIGNAL(TrackAboutToEnd()), SLOT(TrackAboutToEnd())); connect(engine_.get(), SIGNAL(TrackEnded()), SLOT(TrackEnded())); connect(engine_.get(), SIGNAL(MetaData(Engine::SimpleMetaBundle)), - SLOT(EngineMetadataReceived(Engine::SimpleMetaBundle))); + SLOT(EngineMetadataReceived(Engine::SimpleMetaBundle))); engine_->SetVolume(settings_.value("volume", 50).toInt()); #ifdef HAVE_LIBLASTFM - lastfm_ = InternetModel::Service(); + lastfm_ = app_->scrobbler(); #endif } -void Player::ReloadSettings() { - engine_->ReloadSettings(); -} +void Player::ReloadSettings() { engine_->ReloadSettings(); } void Player::HandleLoadResult(const UrlHandler::LoadResult& result) { switch (result.type_) { - case UrlHandler::LoadResult::NoMoreTracks: - qLog(Debug) << "URL handler for" << result.original_url_ - << "said no more tracks"; + case UrlHandler::LoadResult::NoMoreTracks: + qLog(Debug) << "URL handler for" << result.original_url_ + << "said no more tracks"; - loading_async_ = QUrl(); - NextItem(stream_change_type_); - break; + loading_async_ = QUrl(); + NextItem(stream_change_type_); + break; - case UrlHandler::LoadResult::TrackAvailable: { - // Might've been an async load, so check we're still on the same item - int current_index = app_->playlist_manager()->active()->current_row(); - if (current_index == -1) - return; + case UrlHandler::LoadResult::TrackAvailable: { + // Might've been an async load, so check we're still on the same item + int current_index = app_->playlist_manager()->active()->current_row(); + if (current_index == -1) return; - shared_ptr item = app_->playlist_manager()->active()->item_at(current_index); - if (!item || item->Url() != result.original_url_) - return; + shared_ptr item = + app_->playlist_manager()->active()->item_at(current_index); + if (!item || item->Url() != result.original_url_) return; - qLog(Debug) << "URL handler for" << result.original_url_ - << "returned" << result.media_url_; + qLog(Debug) << "URL handler for" << result.original_url_ << "returned" + << result.media_url_; - // If there was no length info in song's metadata, use the one provided by - // URL handler, if there is one - if (item->Metadata().length_nanosec() <= 0 && result.length_nanosec_ != -1) { - Song song = item->Metadata(); - song.set_length_nanosec(result.length_nanosec_); - item->SetTemporaryMetadata(song); - app_->playlist_manager()->active()->InformOfCurrentSongChange(); + // If there was no length info in song's metadata, use the one provided by + // URL handler, if there is one + if (item->Metadata().length_nanosec() <= 0 && + result.length_nanosec_ != -1) { + Song song = item->Metadata(); + song.set_length_nanosec(result.length_nanosec_); + item->SetTemporaryMetadata(song); + app_->playlist_manager()->active()->InformOfCurrentSongChange(); + } + engine_->Play( + result.media_url_, stream_change_type_, item->Metadata().has_cue(), + item->Metadata().beginning_nanosec(), item->Metadata().end_nanosec()); + + current_item_ = item; + loading_async_ = QUrl(); + break; } - engine_->Play(result.media_url_, stream_change_type_, - item->Metadata().has_cue(), - item->Metadata().beginning_nanosec(), - item->Metadata().end_nanosec()); - current_item_ = item; - loading_async_ = QUrl(); - break; - } + case UrlHandler::LoadResult::WillLoadAsynchronously: + qLog(Debug) << "URL handler for" << result.original_url_ + << "is loading asynchronously"; - case UrlHandler::LoadResult::WillLoadAsynchronously: - qLog(Debug) << "URL handler for" << result.original_url_ - << "is loading asynchronously"; - - // We'll get called again later with either NoMoreTracks or TrackAvailable - loading_async_ = result.original_url_; - break; + // We'll get called again later with either NoMoreTracks or TrackAvailable + loading_async_ = result.original_url_; + break; } } -void Player::Next() { - NextInternal(Engine::Manual); -} +void Player::Next() { NextInternal(Engine::Manual); } void Player::NextInternal(Engine::TrackChangeFlags change) { - if (HandleStopAfter()) - return; + if (HandleStopAfter()) return; if (app_->playlist_manager()->active()->current_item()) { const QUrl url = app_->playlist_manager()->active()->current_item()->Url(); if (url_handlers_.contains(url.scheme())) { // The next track is already being loaded - if (url == loading_async_) - return; + if (url == loading_async_) return; stream_change_type_ = change; HandleLoadResult(url_handlers_[url.scheme()]->LoadNext(url)); @@ -159,10 +154,30 @@ void Player::NextInternal(Engine::TrackChangeFlags change) { } void Player::NextItem(Engine::TrackChangeFlags change) { + Playlist* active_playlist = app_->playlist_manager()->active(); + + // If we received too many errors in auto change, with repeat enabled, we stop + if (change == Engine::Auto) { + const PlaylistSequence::RepeatMode repeat_mode = + active_playlist->sequence()->repeat_mode(); + if (repeat_mode != PlaylistSequence::Repeat_Off) { + if ((repeat_mode == PlaylistSequence::Repeat_Track && + nb_errors_received_ >= 3) || + (nb_errors_received_ >= + app_->playlist_manager()->active()->proxy()->rowCount())) { + // We received too many "Error" state changes: probably looping over a + // playlist which contains only unavailable elements: stop now. + nb_errors_received_ = 0; + Stop(); + return; + } + } + } + // Manual track changes override "Repeat track" const bool ignore_repeat_track = change & Engine::Manual; - int i = app_->playlist_manager()->active()->next_row(ignore_repeat_track); + int i = active_playlist->next_row(ignore_repeat_track); if (i == -1) { app_->playlist_manager()->active()->set_current_row(i); emit PlaylistFinished(); @@ -175,29 +190,29 @@ void Player::NextItem(Engine::TrackChangeFlags change) { bool Player::HandleStopAfter() { if (app_->playlist_manager()->active()->stop_after_current()) { - app_->playlist_manager()->active()->StopAfter(-1); - // Find what the next track would've been, and mark that one as current // so it plays next time the user presses Play. const int next_row = app_->playlist_manager()->active()->next_row(); if (next_row != -1) { - app_->playlist_manager()->active()->set_current_row(next_row); + app_->playlist_manager()->active()->set_current_row(next_row, true); } - Stop(); + app_->playlist_manager()->active()->StopAfter(-1); + + Stop(true); return true; } return false; } void Player::TrackEnded() { - if (HandleStopAfter()) - return; + if (HandleStopAfter()) return; if (current_item_ && current_item_->IsLocalLibraryItem() && current_item_->Metadata().id() != -1 && !app_->playlist_manager()->active()->have_incremented_playcount() && - app_->playlist_manager()->active()->get_lastfm_status() != Playlist::LastFM_Seeked) { + app_->playlist_manager()->active()->get_lastfm_status() != + Playlist::LastFM_Seeked) { // The track finished before its scrobble point (30 seconds), so increment // the play count now. app_->playlist_manager()->library_backend()->IncrementPlayCountAsync( @@ -209,58 +224,58 @@ void Player::TrackEnded() { void Player::PlayPause() { switch (engine_->state()) { - case Engine::Paused: - engine_->Unpause(); - break; - - case Engine::Playing: { - // We really shouldn't pause last.fm streams - // Stopping seems like a reasonable thing to do (especially on mac where there - // is no media key for stop). - if (current_item_->options() & PlaylistItem::PauseDisabled) { - Stop(); - } else { - engine_->Pause(); - } - break; - } - - case Engine::Empty: - case Engine::Idle: { - app_->playlist_manager()->SetActivePlaylist(app_->playlist_manager()->current_id()); - if (app_->playlist_manager()->active()->rowCount() == 0) + case Engine::Paused: + engine_->Unpause(); break; - int i = app_->playlist_manager()->active()->current_row(); - if (i == -1) i = app_->playlist_manager()->active()->last_played_row(); - if (i == -1) i = 0; + case Engine::Playing: { + // We really shouldn't pause last.fm streams + // Stopping seems like a reasonable thing to do (especially on mac where + // there + // is no media key for stop). + if (current_item_->options() & PlaylistItem::PauseDisabled) { + Stop(); + } else { + engine_->Pause(); + } + break; + } - PlayAt(i, Engine::First, true); - break; - } + case Engine::Empty: + case Engine::Error: + case Engine::Idle: { + app_->playlist_manager()->SetActivePlaylist( + app_->playlist_manager()->current_id()); + if (app_->playlist_manager()->active()->rowCount() == 0) break; + + int i = app_->playlist_manager()->active()->current_row(); + if (i == -1) i = app_->playlist_manager()->active()->last_played_row(); + if (i == -1) i = 0; + + PlayAt(i, Engine::First, true); + break; + } } } void Player::RestartOrPrevious() { - if (engine_->position_nanosec() < 8*kNsecPerSec) - return Previous(); + if (engine_->position_nanosec() < 8 * kNsecPerSec) return Previous(); SeekTo(0); } -void Player::Stop() { - engine_->Stop(); +void Player::Stop(bool stop_after) { + engine_->Stop(stop_after); app_->playlist_manager()->active()->set_current_row(-1); current_item_.reset(); } void Player::StopAfterCurrent() { - app_->playlist_manager()->active()->StopAfter(app_->playlist_manager()->active()->current_row()); + app_->playlist_manager()->active()->StopAfter( + app_->playlist_manager()->active()->current_row()); } -void Player::Previous() { - PreviousItem(Engine::Manual); -} +void Player::Previous() { PreviousItem(Engine::Manual); } void Player::PreviousItem(Engine::TrackChangeFlags change) { const bool ignore_repeat_track = change & Engine::Manual; @@ -276,11 +291,24 @@ void Player::PreviousItem(Engine::TrackChangeFlags change) { } void Player::EngineStateChanged(Engine::State state) { + if (Engine::Error == state) { + nb_errors_received_++; + } else { + nb_errors_received_ = 0; + } + switch (state) { - case Engine::Paused: emit Paused(); break; - case Engine::Playing: emit Playing(); break; + case Engine::Paused: + emit Paused(); + break; + case Engine::Playing: + emit Playing(); + break; + case Engine::Error: case Engine::Empty: - case Engine::Idle: emit Stopped(); break; + case Engine::Idle: + emit Stopped(); + break; } last_state_ = state; } @@ -292,18 +320,17 @@ void Player::SetVolume(int value) { settings_.setValue("volume", volume); engine_->SetVolume(volume); - if (volume != old_volume){ + if (volume != old_volume) { emit VolumeChanged(volume); } - } -int Player::GetVolume() const { - return engine_->volume(); -} +int Player::GetVolume() const { return engine_->volume(); } -void Player::PlayAt(int index, Engine::TrackChangeFlags change, bool reshuffle) { - if (change == Engine::Manual && engine_->position_nanosec() != engine_->length_nanosec()) { +void Player::PlayAt(int index, Engine::TrackChangeFlags change, + bool reshuffle) { + if (change == Engine::Manual && + engine_->position_nanosec() != engine_->length_nanosec()) { emit TrackSkipped(current_item_); const QUrl& url = current_item_->Url(); if (url_handlers_.contains(url.scheme())) { @@ -311,15 +338,13 @@ void Player::PlayAt(int index, Engine::TrackChangeFlags change, bool reshuffle) } } - if (current_item_ && - app_->playlist_manager()->active()->has_item_at(index) && + if (current_item_ && app_->playlist_manager()->active()->has_item_at(index) && current_item_->Metadata().IsOnSameAlbum( - app_->playlist_manager()->active()->item_at(index)->Metadata())) { + app_->playlist_manager()->active()->item_at(index)->Metadata())) { change |= Engine::SameAlbum; } - if (reshuffle) - app_->playlist_manager()->active()->ReshuffleIndices(); + if (reshuffle) app_->playlist_manager()->active()->ReshuffleIndices(); app_->playlist_manager()->active()->set_current_row(index); if (app_->playlist_manager()->active()->current_row() == -1) { @@ -332,8 +357,7 @@ void Player::PlayAt(int index, Engine::TrackChangeFlags change, bool reshuffle) if (url_handlers_.contains(url.scheme())) { // It's already loading - if (url == loading_async_) - return; + if (url == loading_async_) return; stream_change_type_ = change; HandleLoadResult(url_handlers_[url.scheme()]->StartLoading(url)); @@ -363,21 +387,23 @@ void Player::CurrentMetadataChanged(const Song& metadata) { void Player::SeekTo(int seconds) { const qint64 length_nanosec = engine_->length_nanosec(); - + // If the length is 0 then either there is no song playing, or the song isn't // seekable. if (length_nanosec <= 0) { return; } - - const qint64 nanosec = qBound(0ll, qint64(seconds) * kNsecPerSec, - length_nanosec); + + const qint64 nanosec = + qBound(0ll, qint64(seconds) * kNsecPerSec, length_nanosec); engine_->Seek(nanosec); // If we seek the track we don't want to submit it to last.fm qLog(Info) << "Track seeked to" << nanosec << "ns - not scrobbling"; - if (app_->playlist_manager()->active()->get_lastfm_status() == Playlist::LastFM_New) { - app_->playlist_manager()->active()->set_lastfm_status(Playlist::LastFM_Seeked); + if (app_->playlist_manager()->active()->get_lastfm_status() == + Playlist::LastFM_New) { + app_->playlist_manager()->active()->set_lastfm_status( + Playlist::LastFM_Seeked); } emit Seeked(nanosec / 1000); @@ -393,8 +419,7 @@ void Player::SeekBackward() { void Player::EngineMetadataReceived(const Engine::SimpleMetaBundle& bundle) { PlaylistItemPtr item = app_->playlist_manager()->active()->current_item(); - if (!item) - return; + if (!item) return; Engine::SimpleMetaBundle bundle_copy = bundle; @@ -406,10 +431,10 @@ void Player::EngineMetadataReceived(const Engine::SimpleMetaBundle& bundle) { const int space_dash_pos = bundle_copy.title.indexOf(" - "); if (space_dash_pos != -1) { bundle_copy.artist = bundle_copy.title.left(space_dash_pos).trimmed(); - bundle_copy.title = bundle_copy.title.mid(space_dash_pos + 3).trimmed(); + bundle_copy.title = bundle_copy.title.mid(space_dash_pos + 3).trimmed(); } else { bundle_copy.artist = bundle_copy.title.left(dash_pos).trimmed(); - bundle_copy.title = bundle_copy.title.mid(dash_pos + 1).trimmed(); + bundle_copy.title = bundle_copy.title.mid(dash_pos + 1).trimmed(); } } @@ -417,8 +442,7 @@ void Player::EngineMetadataReceived(const Engine::SimpleMetaBundle& bundle) { song.MergeFromSimpleMetaBundle(bundle_copy); // Ignore useless metadata - if (song.title().isEmpty() && song.artist().isEmpty()) - return; + if (song.title().isEmpty() && song.artist().isEmpty()) return; app_->playlist_manager()->active()->SetStreamMetadata(item->Url(), song); } @@ -440,9 +464,7 @@ void Player::Mute() { } } -void Player::Pause() { - engine_->Pause(); -} +void Player::Pause() { engine_->Pause(); } void Player::Play() { switch (GetState()) { @@ -459,13 +481,11 @@ void Player::Play() { } void Player::ShowOSD() { - if (current_item_) - emit ForceShowOSD(current_item_->Metadata(), false); + if (current_item_) emit ForceShowOSD(current_item_->Metadata(), false); } void Player::TogglePrettyOSD() { - if (current_item_) - emit ForceShowOSD(current_item_->Metadata(), true); + if (current_item_) emit ForceShowOSD(current_item_->Metadata(), true); } void Player::TrackAboutToEnd() { @@ -481,11 +501,13 @@ void Player::TrackAboutToEnd() { } } - const bool has_next_row = app_->playlist_manager()->active()->next_row() != -1; + const bool has_next_row = + app_->playlist_manager()->active()->next_row() != -1; PlaylistItemPtr next_item; if (has_next_row) { - next_item = app_->playlist_manager()->active()->item_at(app_->playlist_manager()->active()->next_row()); + next_item = app_->playlist_manager()->active()->item_at( + app_->playlist_manager()->active()->next_row()); } if (engine_->is_autocrossfade_enabled()) { @@ -494,15 +516,12 @@ void Player::TrackAboutToEnd() { // But, if there's no next track and we don't want to fade out, then do // nothing and just let the track finish to completion. - if (!engine_->is_fadeout_enabled() && !has_next_row) - return; + if (!engine_->is_fadeout_enabled() && !has_next_row) return; // If the next track is on the same album (or same cue file), and the // user doesn't want to crossfade between tracks on the same album, then // don't do this automatic crossfading. - if (engine_->crossfade_same_album() || - !has_next_row || - !next_item || + if (engine_->crossfade_same_album() || !has_next_row || !next_item || !current_item_->Metadata().IsOnSameAlbum(next_item->Metadata())) { TrackEnded(); return; @@ -511,8 +530,7 @@ void Player::TrackAboutToEnd() { // Crossfade is off, so start preloading the next track so we don't get a // gap between songs. - if (!has_next_row || !next_item) - return; + if (!has_next_row || !next_item) return; QUrl url = next_item->Url(); @@ -520,16 +538,16 @@ void Player::TrackAboutToEnd() { if (url_handlers_.contains(url.scheme())) { UrlHandler::LoadResult result = url_handlers_[url.scheme()]->LoadNext(url); switch (result.type_) { - case UrlHandler::LoadResult::NoMoreTracks: - return; + case UrlHandler::LoadResult::NoMoreTracks: + return; - case UrlHandler::LoadResult::WillLoadAsynchronously: - loading_async_ = url; - return; + case UrlHandler::LoadResult::WillLoadAsynchronously: + loading_async_ = url; + return; - case UrlHandler::LoadResult::TrackAvailable: - url = result.media_url_; - break; + case UrlHandler::LoadResult::TrackAvailable: + url = result.media_url_; + break; } } engine_->StartPreloading(url, next_item->Metadata().has_cue(), @@ -560,7 +578,8 @@ void Player::RegisterUrlHandler(UrlHandler* handler) { qLog(Info) << "Registered URL handler for" << scheme; url_handlers_.insert(scheme, handler); - connect(handler, SIGNAL(destroyed(QObject*)), SLOT(UrlHandlerDestroyed(QObject*))); + connect(handler, SIGNAL(destroyed(QObject*)), + SLOT(UrlHandlerDestroyed(QObject*))); connect(handler, SIGNAL(AsyncLoadComplete(UrlHandler::LoadResult)), SLOT(HandleLoadResult(UrlHandler::LoadResult))); } @@ -568,22 +587,24 @@ void Player::RegisterUrlHandler(UrlHandler* handler) { void Player::UnregisterUrlHandler(UrlHandler* handler) { const QString scheme = url_handlers_.key(handler); if (scheme.isEmpty()) { - qLog(Warning) << "Tried to unregister a URL handler for" << handler->scheme() - << "that wasn't registered"; + qLog(Warning) << "Tried to unregister a URL handler for" + << handler->scheme() << "that wasn't registered"; return; } qLog(Info) << "Unregistered URL handler for" << scheme; url_handlers_.remove(scheme); - disconnect(handler, SIGNAL(destroyed(QObject*)), this, SLOT(UrlHandlerDestroyed(QObject*))); - disconnect(handler, SIGNAL(AsyncLoadComplete(UrlHandler::LoadResult)), - this, SLOT(HandleLoadResult(UrlHandler::LoadResult))); + disconnect(handler, SIGNAL(destroyed(QObject*)), this, + SLOT(UrlHandlerDestroyed(QObject*))); + disconnect(handler, SIGNAL(AsyncLoadComplete(UrlHandler::LoadResult)), this, + SLOT(HandleLoadResult(UrlHandler::LoadResult))); } const UrlHandler* Player::HandlerForUrl(const QUrl& url) const { - QMap::const_iterator it = url_handlers_.constFind(url.scheme()); + QMap::const_iterator it = + url_handlers_.constFind(url.scheme()); if (it == url_handlers_.constEnd()) { - return NULL; + return nullptr; } return *it; } diff --git a/src/core/player.h b/src/core/player.h index c8b7b7854..d300b5cb3 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -18,11 +18,11 @@ #ifndef PLAYER_H #define PLAYER_H +#include + #include #include -#include - #include "config.h" #include "core/song.h" #include "core/urlhandler.h" @@ -31,14 +31,13 @@ #include "playlist/playlistitem.h" class Application; -class LastFMService; - +class Scrobbler; class PlayerInterface : public QObject { Q_OBJECT -public: - PlayerInterface(QObject* parent = 0) : QObject(parent) {} + public: + PlayerInterface(QObject* parent = nullptr) : QObject(parent) {} virtual EngineBase* engine() const = 0; virtual Engine::State GetState() const = 0; @@ -50,11 +49,12 @@ public: virtual void RegisterUrlHandler(UrlHandler* handler) = 0; virtual void UnregisterUrlHandler(UrlHandler* handler) = 0; -public slots: + public slots: virtual void ReloadSettings() = 0; // Manual track change to the specified track - virtual void PlayAt(int i, Engine::TrackChangeFlags change, bool reshuffle) = 0; + virtual void PlayAt(int i, Engine::TrackChangeFlags change, + bool reshuffle) = 0; // If there's currently a song playing, pause it, otherwise play the track // that was playing last, or the first one on the playlist @@ -78,7 +78,7 @@ public slots: virtual void Mute() = 0; virtual void Pause() = 0; - virtual void Stop() = 0; + virtual void Stop(bool stop_after = false) = 0; virtual void Play() = 0; virtual void ShowOSD() = 0; @@ -93,19 +93,21 @@ signals: // Emitted when there's a manual change to the current's track position. void Seeked(qlonglong microseconds); - // Emitted when Player has processed a request to play another song. This contains + // Emitted when Player has processed a request to play another song. This + // contains // the URL of the song and a flag saying whether it was able to play the song. void SongChangeRequestProcessed(const QUrl& url, bool valid); - // The toggle parameter is true when user requests to toggle visibility for Pretty OSD + // The toggle parameter is true when user requests to toggle visibility for + // Pretty OSD void ForceShowOSD(Song, bool toogle); }; class Player : public PlayerInterface { Q_OBJECT -public: - Player(Application* app, QObject* parent = 0); + public: + Player(Application* app, QObject* parent = nullptr); ~Player(); void Init(); @@ -122,7 +124,7 @@ public: const UrlHandler* HandlerForUrl(const QUrl& url) const; -public slots: + public slots: void ReloadSettings(); void PlayAt(int i, Engine::TrackChangeFlags change, bool reshuffle); @@ -141,7 +143,7 @@ public slots: void Mute(); void Pause(); - void Stop(); + void Stop(bool stop_after = false); void StopAfterCurrent(); void Play(); void ShowOSD(); @@ -171,14 +173,15 @@ public slots: private: Application* app_; - LastFMService* lastfm_; + Scrobbler* lastfm_; QSettings settings_; PlaylistItemPtr current_item_; - boost::scoped_ptr engine_; + std::unique_ptr engine_; Engine::TrackChangeFlags stream_change_type_; Engine::State last_state_; + int nb_errors_received_; QMap url_handlers_; @@ -187,4 +190,4 @@ public slots: int volume_before_mute_; }; -#endif // PLAYER_H +#endif // PLAYER_H diff --git a/src/core/potranslator.h b/src/core/potranslator.h index dbb81cb87..de6dc9085 100644 --- a/src/core/potranslator.h +++ b/src/core/potranslator.h @@ -26,11 +26,12 @@ class PoTranslator : public QTranslator { public: - QString translate(const char* context, const char* source_text, const char* disambiguation = 0) const { + QString translate(const char* context, const char* source_text, + const char* disambiguation = 0) const { QString ret = QTranslator::translate(context, source_text, disambiguation); if (!ret.isEmpty()) return ret; - return QTranslator::translate(NULL, source_text, disambiguation); + return QTranslator::translate(nullptr, source_text, disambiguation); } }; -#endif // POTRANSLATOR_H +#endif // POTRANSLATOR_H diff --git a/src/core/qhash_qurl.h b/src/core/qhash_qurl.h index f7bdeada1..bc8a9c79d 100644 --- a/src/core/qhash_qurl.h +++ b/src/core/qhash_qurl.h @@ -21,9 +21,7 @@ #include #if QT_VERSION < 0x040700 -inline uint qHash(const QUrl& url) { - return qHash(url.toEncoded()); -} +inline uint qHash(const QUrl& url) { return qHash(url.toEncoded()); } #endif -#endif // QHASH_QURL_H +#endif // QHASH_QURL_H diff --git a/src/core/qtfslistener.cpp b/src/core/qtfslistener.cpp index 9a94a0c32..4c5802dda 100644 --- a/src/core/qtfslistener.cpp +++ b/src/core/qtfslistener.cpp @@ -20,15 +20,12 @@ #include QtFSListener::QtFSListener(QObject* parent) - : FileSystemWatcherInterface(parent), - watcher_(this) { + : FileSystemWatcherInterface(parent), watcher_(this) { connect(&watcher_, SIGNAL(directoryChanged(const QString&)), - SIGNAL(PathChanged(const QString&))); + SIGNAL(PathChanged(const QString&))); } -void QtFSListener::AddPath(const QString& path) { - watcher_.addPath(path); -} +void QtFSListener::AddPath(const QString& path) { watcher_.addPath(path); } void QtFSListener::RemovePath(const QString& path) { watcher_.removePath(path); diff --git a/src/core/qtfslistener.h b/src/core/qtfslistener.h index dd84ca5c6..8800e9bf6 100644 --- a/src/core/qtfslistener.h +++ b/src/core/qtfslistener.h @@ -32,7 +32,6 @@ class QtFSListener : public FileSystemWatcherInterface { private: QFileSystemWatcher watcher_; - }; #endif diff --git a/src/core/qxtglobalshortcutbackend.cpp b/src/core/qxtglobalshortcutbackend.cpp index 583bd6045..3f1013ea9 100644 --- a/src/core/qxtglobalshortcutbackend.cpp +++ b/src/core/qxtglobalshortcutbackend.cpp @@ -23,14 +23,13 @@ #include #include -QxtGlobalShortcutBackend::QxtGlobalShortcutBackend(GlobalShortcuts *parent) - : GlobalShortcutBackend(parent) -{ -} +QxtGlobalShortcutBackend::QxtGlobalShortcutBackend(GlobalShortcuts* parent) + : GlobalShortcutBackend(parent) {} bool QxtGlobalShortcutBackend::DoRegister() { qLog(Debug) << "registering"; - foreach (const GlobalShortcuts::Shortcut& shortcut, manager_->shortcuts().values()) { + for (const GlobalShortcuts::Shortcut& shortcut : + manager_->shortcuts().values()) { AddShortcut(shortcut.action); } @@ -38,8 +37,7 @@ bool QxtGlobalShortcutBackend::DoRegister() { } void QxtGlobalShortcutBackend::AddShortcut(QAction* action) { - if (action->shortcut().isEmpty()) - return; + if (action->shortcut().isEmpty()) return; QxtGlobalShortcut* shortcut = new QxtGlobalShortcut(action->shortcut(), this); connect(shortcut, SIGNAL(activated()), action, SLOT(trigger())); diff --git a/src/core/qxtglobalshortcutbackend.h b/src/core/qxtglobalshortcutbackend.h index 0a6447c8c..bbe65c5cd 100644 --- a/src/core/qxtglobalshortcutbackend.h +++ b/src/core/qxtglobalshortcutbackend.h @@ -23,16 +23,16 @@ class QxtGlobalShortcut; class QxtGlobalShortcutBackend : public GlobalShortcutBackend { -public: - QxtGlobalShortcutBackend(GlobalShortcuts* parent = 0); + public: + QxtGlobalShortcutBackend(GlobalShortcuts* parent = nullptr); -protected: + protected: bool DoRegister(); void DoUnregister(); -private: + private: void AddShortcut(QAction* action); QList shortcuts_; }; -#endif // QXTGLOBALSHORTCUTBACKEND_H +#endif // QXTGLOBALSHORTCUTBACKEND_H diff --git a/src/core/scoped_cftyperef.h b/src/core/scoped_cftyperef.h index b516de217..a526103c2 100644 --- a/src/core/scoped_cftyperef.h +++ b/src/core/scoped_cftyperef.h @@ -17,41 +17,29 @@ // caller must own the object it gives to ScopedCFTypeRef<>, and relinquishes // an ownership claim to that object. ScopedCFTypeRef<> does not call // CFRetain(). -template +template class ScopedCFTypeRef { public: typedef CFT element_type; - explicit ScopedCFTypeRef(CFT object = NULL) - : object_(object) { - } + explicit ScopedCFTypeRef(CFT object = nullptr) : object_(object) {} ~ScopedCFTypeRef() { - if (object_) - CFRelease(object_); + if (object_) CFRelease(object_); } - void reset(CFT object = NULL) { - if (object_) - CFRelease(object_); + void reset(CFT object = nullptr) { + if (object_) CFRelease(object_); object_ = object; } - bool operator==(CFT that) const { - return object_ == that; - } + bool operator==(CFT that) const { return object_ == that; } - bool operator!=(CFT that) const { - return object_ != that; - } + bool operator!=(CFT that) const { return object_ != that; } - operator CFT() const { - return object_; - } + operator CFT() const { return object_; } - CFT get() const { - return object_; - } + CFT get() const { return object_; } void swap(ScopedCFTypeRef& that) { CFT temp = that.object_; @@ -64,7 +52,7 @@ class ScopedCFTypeRef { // CFRelease(), use ScopedCFTypeRef<>::reset(). CFT release() __attribute__((warn_unused_result)) { CFT temp = object_; - object_ = NULL; + object_ = nullptr; return temp; } diff --git a/src/core/scoped_nsautorelease_pool.h b/src/core/scoped_nsautorelease_pool.h index fb8a79d56..82f1ff9a2 100644 --- a/src/core/scoped_nsautorelease_pool.h +++ b/src/core/scoped_nsautorelease_pool.h @@ -9,7 +9,7 @@ #if defined(__OBJC__) @class NSAutoreleasePool; -#else // __OBJC__ +#else // __OBJC__ class NSAutoreleasePool; #endif // __OBJC__ @@ -28,6 +28,7 @@ class ScopedNSAutoreleasePool { // Only use then when you're certain the items currently in the pool are // no longer needed. void Recycle(); + private: NSAutoreleasePool* autorelease_pool_; diff --git a/src/core/scoped_nsobject.h b/src/core/scoped_nsobject.h index cd8271399..0b6f07be9 100644 --- a/src/core/scoped_nsobject.h +++ b/src/core/scoped_nsobject.h @@ -23,16 +23,12 @@ // scoped_nsautorelease_pool.h instead. // We check for bad uses of scoped_nsobject and NSAutoreleasePool at compile // time with a template specialization (see below). -template +template class scoped_nsobject { public: - explicit scoped_nsobject(NST* object = nil) - : object_(object) { - } + explicit scoped_nsobject(NST* object = nil) : object_(object) {} - ~scoped_nsobject() { - [object_ release]; - } + ~scoped_nsobject() { [object_ release]; } void reset(NST* object = nil) { // We intentionally do not check that object != object_ as the caller must @@ -47,13 +43,9 @@ class scoped_nsobject { bool operator==(NST* that) const { return object_ == that; } bool operator!=(NST* that) const { return object_ != that; } - operator NST*() const { - return object_; - } + operator NST*() const { return object_; } - NST* get() const { - return object_; - } + NST* get() const { return object_; } void swap(scoped_nsobject& that) { NST* temp = that.object_; @@ -92,18 +84,13 @@ bool operator!=(C* p1, const scoped_nsobject& p2) { return p1 != p2.get(); } - // Specialization to make scoped_nsobject work. -template<> +template <> class scoped_nsobject { public: - explicit scoped_nsobject(id object = nil) - : object_(object) { - } + explicit scoped_nsobject(id object = nil) : object_(object) {} - ~scoped_nsobject() { - [object_ release]; - } + ~scoped_nsobject() { [object_ release]; } void reset(id object = nil) { // We intentionally do not check that object != object_ as the caller must @@ -118,13 +105,9 @@ class scoped_nsobject { bool operator==(id that) const { return object_ == that; } bool operator!=(id that) const { return object_ != that; } - operator id() const { - return object_; - } + operator id() const { return object_; } - id get() const { - return object_; - } + id get() const { return object_; } void swap(scoped_nsobject& that) { id temp = that.object_; @@ -150,7 +133,7 @@ class scoped_nsobject { // Do not use scoped_nsobject for NSAutoreleasePools, use // ScopedNSAutoreleasePool instead. This is a compile time check. See details // at top of header. -template<> +template <> class scoped_nsobject { private: explicit scoped_nsobject(NSAutoreleasePool* object = nil); diff --git a/src/core/scopedgobject.h b/src/core/scopedgobject.h index 260a8783c..c75178de4 100644 --- a/src/core/scopedgobject.h +++ b/src/core/scopedgobject.h @@ -22,49 +22,44 @@ #include - template class ScopedGObject { -public: - ScopedGObject() : object_(NULL) {} + public: + ScopedGObject() : object_(nullptr) {} - explicit ScopedGObject(const ScopedGObject& other) : object_(NULL) { + explicit ScopedGObject(const ScopedGObject& other) : object_(nullptr) { reset(other.object_); } - ~ScopedGObject() { - reset(); - } + ~ScopedGObject() { reset(); } - ScopedGObject& operator =(const ScopedGObject& other) { + ScopedGObject& operator=(const ScopedGObject& other) { reset(other.object_); return *this; } - void reset(T* new_object = NULL) { - if (new_object) - g_object_ref(new_object); + void reset(T* new_object = nullptr) { + if (new_object) g_object_ref(new_object); reset_without_add(new_object); } - void reset_without_add(T* new_object = NULL) { - if (object_) - g_object_unref(object_); + void reset_without_add(T* new_object = nullptr) { + if (object_) g_object_unref(object_); object_ = new_object; } T* get() const { return object_; } operator T*() const { return get(); } - T* operator *() const { return get(); } + T* operator*() const { return get(); } operator bool() const { return get(); } - bool operator ==(const ScopedGObject& other) const { + bool operator==(const ScopedGObject& other) const { return object_ == other.object_; } -private: + private: T* object_; }; -#endif // SCOPEDGOBJECT_H +#endif // SCOPEDGOBJECT_H diff --git a/src/core/scopedtransaction.cpp b/src/core/scopedtransaction.cpp index 5a2e8b11b..b6240b40b 100644 --- a/src/core/scopedtransaction.cpp +++ b/src/core/scopedtransaction.cpp @@ -22,9 +22,7 @@ #include ScopedTransaction::ScopedTransaction(QSqlDatabase* db) - : db_(db), - pending_(true) -{ + : db_(db), pending_(true) { db->transaction(); } diff --git a/src/core/scopedtransaction.h b/src/core/scopedtransaction.h index ded08d64f..b084411a4 100644 --- a/src/core/scopedtransaction.h +++ b/src/core/scopedtransaction.h @@ -37,4 +37,4 @@ class ScopedTransaction : boost::noncopyable { bool pending_; }; -#endif // SCOPEDTRANSACTION_H +#endif // SCOPEDTRANSACTION_H diff --git a/src/core/settingsprovider.cpp b/src/core/settingsprovider.cpp index e39d5c2ed..b4fc3b9f6 100644 --- a/src/core/settingsprovider.cpp +++ b/src/core/settingsprovider.cpp @@ -17,26 +17,23 @@ #include "settingsprovider.h" -SettingsProvider::SettingsProvider() { -} +SettingsProvider::SettingsProvider() {} -DefaultSettingsProvider::DefaultSettingsProvider() { -} +DefaultSettingsProvider::DefaultSettingsProvider() {} -void DefaultSettingsProvider::set_group(const char *group) { - while (!backend_.group().isEmpty()) - backend_.endGroup(); +void DefaultSettingsProvider::set_group(const char* group) { + while (!backend_.group().isEmpty()) backend_.endGroup(); backend_.beginGroup(group); } -QVariant DefaultSettingsProvider::value( - const QString &key, const QVariant &default_value) const { +QVariant DefaultSettingsProvider::value(const QString& key, + const QVariant& default_value) const { return backend_.value(key, default_value); } -void DefaultSettingsProvider::setValue( - const QString &key, const QVariant &value) { +void DefaultSettingsProvider::setValue(const QString& key, + const QVariant& value) { backend_.setValue(key, value); } @@ -52,6 +49,4 @@ void DefaultSettingsProvider::setArrayIndex(int i) { backend_.setArrayIndex(i); } -void DefaultSettingsProvider::endArray() { - backend_.endArray(); -} +void DefaultSettingsProvider::endArray() { backend_.endArray(); } diff --git a/src/core/settingsprovider.h b/src/core/settingsprovider.h index 475ca3fc1..ef6ef6585 100644 --- a/src/core/settingsprovider.h +++ b/src/core/settingsprovider.h @@ -55,4 +55,4 @@ class DefaultSettingsProvider : public SettingsProvider { QSettings backend_; }; -#endif // SETTINGSPROVIDER_H +#endif // SETTINGSPROVIDER_H diff --git a/src/core/signalchecker.cpp b/src/core/signalchecker.cpp index 8496c49f5..c2710ef1a 100644 --- a/src/core/signalchecker.cpp +++ b/src/core/signalchecker.cpp @@ -19,16 +19,13 @@ #include "core/logging.h" -bool CheckedGConnect( - gpointer source, - const char* signal, - GCallback callback, - gpointer data, - const int callback_param_count) { +bool CheckedGConnect(gpointer source, const char* signal, GCallback callback, + gpointer data, const int callback_param_count) { guint signal_id = 0; GQuark detail = 0; - if (!g_signal_parse_name(signal, G_OBJECT_TYPE(source), &signal_id, &detail, false)) { + if (!g_signal_parse_name(signal, G_OBJECT_TYPE(source), &signal_id, &detail, + false)) { qFatal("Connecting to invalid signal: %s", signal); return false; } diff --git a/src/core/signalchecker.h b/src/core/signalchecker.h index aacfde5f7..224513e33 100644 --- a/src/core/signalchecker.h +++ b/src/core/signalchecker.h @@ -24,16 +24,14 @@ #include // Do not call this directly, use CHECKED_GCONNECT instead. -bool CheckedGConnect( - gpointer source, - const char* signal, - GCallback callback, - gpointer data, - const int callback_param_count); +bool CheckedGConnect(gpointer source, const char* signal, GCallback callback, + gpointer data, const int callback_param_count); -#define FUNCTION_ARITY(callback) boost::function_types::function_arity::value +#define FUNCTION_ARITY(callback) \ + boost::function_types::function_arity::value -#define CHECKED_GCONNECT(source, signal, callback, data) \ - CheckedGConnect(source, signal, G_CALLBACK(callback), data, FUNCTION_ARITY(callback)); +#define CHECKED_GCONNECT(source, signal, callback, data) \ + CheckedGConnect(source, signal, G_CALLBACK(callback), data, \ + FUNCTION_ARITY(callback)); #endif // SIGNALCHECKER_H diff --git a/src/core/simpletreeitem.h b/src/core/simpletreeitem.h index b1efc1baa..02eceb4ab 100644 --- a/src/core/simpletreeitem.h +++ b/src/core/simpletreeitem.h @@ -26,9 +26,9 @@ template class SimpleTreeItem { public: - SimpleTreeItem(int _type, SimpleTreeModel* _model); // For the root item - SimpleTreeItem(int _type, const QString& _key, T* _parent = NULL); - SimpleTreeItem(int _type, T* _parent = NULL); + SimpleTreeItem(int _type, SimpleTreeModel* _model); // For the root item + SimpleTreeItem(int _type, const QString& _key, T* _parent = nullptr); + SimpleTreeItem(int _type, T* _parent = nullptr); virtual ~SimpleTreeItem(); void InsertNotify(T* _parent); @@ -39,7 +39,9 @@ class SimpleTreeItem { void Delete(int child_row); T* ChildByKey(const QString& key) const; - QString DisplayText() const { return display_text.isNull() ? key : display_text; } + QString DisplayText() const { + return display_text.isNull() ? key : display_text; + } QString SortText() const { return sort_text.isNull() ? key : sort_text; } int type; @@ -59,24 +61,21 @@ class SimpleTreeItem { template SimpleTreeItem::SimpleTreeItem(int _type, SimpleTreeModel* _model) - : type(_type), - row(0), - lazy_loaded(true), - parent(NULL), - child_model(NULL), - model(_model) -{ -} + : type(_type), + row(0), + lazy_loaded(true), + parent(nullptr), + child_model(nullptr), + model(_model) {} template SimpleTreeItem::SimpleTreeItem(int _type, const QString& _key, T* _parent) - : type(_type), - key(_key), - lazy_loaded(false), - parent(_parent), - child_model(NULL), - model(_parent ? _parent->model : NULL) -{ + : type(_type), + key(_key), + lazy_loaded(false), + parent(_parent), + child_model(nullptr), + model(_parent ? _parent->model : nullptr) { if (parent) { row = parent->children.count(); parent->children << static_cast(this); @@ -85,19 +84,17 @@ SimpleTreeItem::SimpleTreeItem(int _type, const QString& _key, T* _parent) template SimpleTreeItem::SimpleTreeItem(int _type, T* _parent) - : type(_type), - lazy_loaded(false), - parent(_parent), - child_model(NULL), - model(_parent ? _parent->model : NULL) -{ + : type(_type), + lazy_loaded(false), + parent(_parent), + child_model(nullptr), + model(_parent ? _parent->model : nullptr) { if (parent) { row = parent->children.count(); parent->children << static_cast(this); } } - template void SimpleTreeItem::InsertNotify(T* _parent) { parent = _parent; @@ -115,8 +112,7 @@ void SimpleTreeItem::DeleteNotify(int child_row) { delete children.takeAt(child_row); // Adjust row numbers of those below it :( - for (int i=child_row ; irow --; + for (int i = child_row; i < children.count(); ++i) children[i]->row--; model->EndDelete(); } @@ -147,17 +143,15 @@ void SimpleTreeItem::Delete(int child_row) { delete children.takeAt(child_row); // Adjust row numbers of those below it :( - for (int i=child_row ; irow --; + for (int i = child_row; i < children.count(); ++i) children[i]->row--; } template T* SimpleTreeItem::ChildByKey(const QString& key) const { - foreach (T* child, children) { - if (child->key == key) - return child; + for (T* child : children) { + if (child->key == key) return child; } - return NULL; + return nullptr; } -#endif // SIMPLETREEITEM_H +#endif // SIMPLETREEITEM_H diff --git a/src/core/simpletreemodel.h b/src/core/simpletreemodel.h index 6cc272293..247ee4916 100644 --- a/src/core/simpletreemodel.h +++ b/src/core/simpletreemodel.h @@ -25,12 +25,13 @@ class QModelIndex; template class SimpleTreeModel : public QAbstractItemModel { public: - SimpleTreeModel(T* root = 0, QObject* parent = 0); + SimpleTreeModel(T* root = 0, QObject* parent = nullptr); virtual ~SimpleTreeModel() {} // QAbstractItemModel int columnCount(const QModelIndex& parent) const; - QModelIndex index(int row, int, const QModelIndex& parent = QModelIndex()) const; + QModelIndex index(int row, int, + const QModelIndex& parent = QModelIndex()) const; QModelIndex parent(const QModelIndex& index) const; int rowCount(const QModelIndex& parent) const; bool hasChildren(const QModelIndex& parent) const; @@ -54,35 +55,30 @@ class SimpleTreeModel : public QAbstractItemModel { T* root_; }; - template SimpleTreeModel::SimpleTreeModel(T* root, QObject* parent) - : QAbstractItemModel(parent), - root_(root) -{ -} + : QAbstractItemModel(parent), root_(root) {} template T* SimpleTreeModel::IndexToItem(const QModelIndex& index) const { - if (!index.isValid()) - return root_; + if (!index.isValid()) return root_; return reinterpret_cast(index.internalPointer()); } template QModelIndex SimpleTreeModel::ItemToIndex(T* item) const { - if (!item || !item->parent) - return QModelIndex(); + if (!item || !item->parent) return QModelIndex(); return createIndex(item->row, 0, item); } template -int SimpleTreeModel::columnCount(const QModelIndex &) const { +int SimpleTreeModel::columnCount(const QModelIndex&) const { return 1; } template -QModelIndex SimpleTreeModel::index(int row, int, const QModelIndex& parent) const { +QModelIndex SimpleTreeModel::index(int row, int, + const QModelIndex& parent) const { T* parent_item = IndexToItem(parent); if (!parent_item || row < 0 || parent_item->children.count() <= row) return QModelIndex(); @@ -96,13 +92,13 @@ QModelIndex SimpleTreeModel::parent(const QModelIndex& index) const { } template -int SimpleTreeModel::rowCount(const QModelIndex & parent) const { +int SimpleTreeModel::rowCount(const QModelIndex& parent) const { T* item = IndexToItem(parent); return item->children.count(); } template -bool SimpleTreeModel::hasChildren(const QModelIndex &parent) const { +bool SimpleTreeModel::hasChildren(const QModelIndex& parent) const { T* item = IndexToItem(parent); if (item->lazy_loaded) return !item->children.isEmpty(); @@ -147,9 +143,9 @@ void SimpleTreeModel::EndDelete() { } template - void SimpleTreeModel::EmitDataChanged(T *item) { +void SimpleTreeModel::EmitDataChanged(T* item) { QModelIndex index(ItemToIndex(item)); emit dataChanged(index, index); } -#endif // SIMPLETREEMODEL_H +#endif // SIMPLETREEMODEL_H diff --git a/src/core/song.cpp b/src/core/song.cpp index 6bbf022ac..fba36f8c5 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -32,22 +32,22 @@ #include #ifdef HAVE_LIBLASTFM - #include "internet/fixlastfm.h" - #ifdef HAVE_LIBLASTFM1 - #include - #else - #include - #endif +#include "internet/fixlastfm.h" +#ifdef HAVE_LIBLASTFM1 +#include +#else +#include +#endif #endif #include #ifdef HAVE_LIBGPOD -# include +#include #endif #ifdef HAVE_LIBMTP -# include +#include #endif #include "core/application.h" @@ -62,35 +62,71 @@ #include "tagreadermessages.pb.h" #include "widgets/trackslider.h" - -const QStringList Song::kColumns = QStringList() - << "title" << "album" << "artist" << "albumartist" << "composer" << "track" - << "disc" << "bpm" << "year" << "genre" << "comment" << "compilation" - << "bitrate" << "samplerate" << "directory" << "filename" - << "mtime" << "ctime" << "filesize" << "sampler" << "art_automatic" - << "art_manual" << "filetype" << "playcount" << "lastplayed" << "rating" - << "forced_compilation_on" << "forced_compilation_off" - << "effective_compilation" << "skipcount" << "score" << "beginning" << "length" - << "cue_path" << "unavailable" << "effective_albumartist" << "etag" - << "performer" << "grouping"; +const QStringList Song::kColumns = QStringList() << "title" + << "album" + << "artist" + << "albumartist" + << "composer" + << "track" + << "disc" + << "bpm" + << "year" + << "genre" + << "comment" + << "compilation" + << "bitrate" + << "samplerate" + << "directory" + << "filename" + << "mtime" + << "ctime" + << "filesize" + << "sampler" + << "art_automatic" + << "art_manual" + << "filetype" + << "playcount" + << "lastplayed" + << "rating" + << "forced_compilation_on" + << "forced_compilation_off" + << "effective_compilation" + << "skipcount" + << "score" + << "beginning" + << "length" + << "cue_path" + << "unavailable" + << "effective_albumartist" + << "etag" + << "performer" + << "grouping"; const QString Song::kColumnSpec = Song::kColumns.join(", "); -const QString Song::kBindSpec = Utilities::Prepend(":", Song::kColumns).join(", "); -const QString Song::kUpdateSpec = Utilities::Updateify(Song::kColumns).join(", "); +const QString Song::kBindSpec = + Utilities::Prepend(":", Song::kColumns).join(", "); +const QString Song::kUpdateSpec = + Utilities::Updateify(Song::kColumns).join(", "); - -const QStringList Song::kFtsColumns = QStringList() - << "ftstitle" << "ftsalbum" << "ftsartist" << "ftsalbumartist" - << "ftscomposer" << "ftsperformer" << "ftsgrouping" << "ftsgenre" << "ftscomment"; +const QStringList Song::kFtsColumns = QStringList() << "ftstitle" + << "ftsalbum" + << "ftsartist" + << "ftsalbumartist" + << "ftscomposer" + << "ftsperformer" + << "ftsgrouping" + << "ftsgenre" + << "ftscomment"; const QString Song::kFtsColumnSpec = Song::kFtsColumns.join(", "); -const QString Song::kFtsBindSpec = Utilities::Prepend(":", Song::kFtsColumns).join(", "); -const QString Song::kFtsUpdateSpec = Utilities::Updateify(Song::kFtsColumns).join(", "); +const QString Song::kFtsBindSpec = + Utilities::Prepend(":", Song::kFtsColumns).join(", "); +const QString Song::kFtsUpdateSpec = + Utilities::Updateify(Song::kFtsColumns).join(", "); const QString Song::kManuallyUnsetCover = "(unset)"; const QString Song::kEmbeddedCover = "(embedded)"; - struct Song::Private : public QSharedData { Private(); @@ -110,12 +146,12 @@ struct Song::Private : public QSharedData { int year_; QString genre_; QString comment_; - bool compilation_; // From the file tag - bool sampler_; // From the library scanner - bool forced_compilation_on_; // Set by the user - bool forced_compilation_off_; // Set by the user + bool compilation_; // From the file tag + bool sampler_; // From the library scanner + bool forced_compilation_on_; // Set by the user + bool forced_compilation_off_; // Set by the user - // A unique album ID + // A unique album ID // Used to distinguish between albums from providers that have multiple // versions of a given album with the same title (e.g. Spotify). // This is never persisted, it is only stored temporarily for global search @@ -156,14 +192,15 @@ struct Song::Private : public QSharedData { QString cue_path_; // Filenames to album art for this song. - QString art_automatic_; // Guessed by LibraryWatcher - QString art_manual_; // Set by the user - should take priority + QString art_automatic_; // Guessed by LibraryWatcher + QString art_manual_; // Set by the user - should take priority QImage image_; // Whether this song was loaded from a file using taglib. bool init_from_file_; - // Whether our encoding guesser thinks these tags might be incorrectly encoded. + // Whether our encoding guesser thinks these tags might be incorrectly + // encoded. bool suspicious_tags_; // Whether the song does not exist on the file system anymore, but is still @@ -173,54 +210,43 @@ struct Song::Private : public QSharedData { QString etag_; }; - Song::Private::Private() - : valid_(false), - id_(-1), - track_(-1), - disc_(-1), - bpm_(-1), - year_(-1), - compilation_(false), - sampler_(false), - forced_compilation_on_(false), - forced_compilation_off_(false), - album_id_(-1), - rating_(-1.0), - playcount_(0), - skipcount_(0), - lastplayed_(-1), - score_(0), - beginning_(0), - end_(-1), - bitrate_(-1), - samplerate_(-1), - directory_id_(-1), - mtime_(-1), - ctime_(-1), - filesize_(-1), - filetype_(Type_Unknown), - init_from_file_(false), - suspicious_tags_(false), - unavailable_(false) -{ -} + : valid_(false), + id_(-1), + track_(-1), + disc_(-1), + bpm_(-1), + year_(-1), + compilation_(false), + sampler_(false), + forced_compilation_on_(false), + forced_compilation_off_(false), + album_id_(-1), + rating_(-1.0), + playcount_(0), + skipcount_(0), + lastplayed_(-1), + score_(0), + beginning_(0), + end_(-1), + bitrate_(-1), + samplerate_(-1), + directory_id_(-1), + mtime_(-1), + ctime_(-1), + filesize_(-1), + filetype_(Type_Unknown), + init_from_file_(false), + suspicious_tags_(false), + unavailable_(false) {} +Song::Song() : d(new Private) {} -Song::Song() - : d(new Private) -{ -} +Song::Song(const Song& other) : d(other.d) {} -Song::Song(const Song &other) - : d(other.d) -{ -} +Song::~Song() {} -Song::~Song() { -} - -Song& Song::operator =(const Song& other) { +Song& Song::operator=(const Song& other) { d = other.d; return *this; } @@ -232,8 +258,12 @@ const QString& Song::title() const { return d->title_; } const QString& Song::album() const { return d->album_; } const QString& Song::artist() const { return d->artist_; } const QString& Song::albumartist() const { return d->albumartist_; } -const QString& Song::effective_albumartist() const { return d->albumartist_.isEmpty() ? d->artist_ : d->albumartist_; } -const QString& Song::playlist_albumartist() const { return is_compilation() ? d->albumartist_ : effective_albumartist(); } +const QString& Song::effective_albumartist() const { + return d->albumartist_.isEmpty() ? d->artist_ : d->albumartist_; +} +const QString& Song::playlist_albumartist() const { + return is_compilation() ? d->albumartist_ : effective_albumartist(); +} const QString& Song::composer() const { return d->composer_; } const QString& Song::performer() const { return d->performer_; } const QString& Song::grouping() const { return d->grouping_; } @@ -244,8 +274,8 @@ int Song::year() const { return d->year_; } const QString& Song::genre() const { return d->genre_; } const QString& Song::comment() const { return d->comment_; } bool Song::is_compilation() const { - return (d->compilation_ || d->sampler_ || d->forced_compilation_on_) - && ! d->forced_compilation_off_; + return (d->compilation_ || d->sampler_ || d->forced_compilation_on_) && + !d->forced_compilation_off_; } float Song::rating() const { return d->rating_; } int Song::playcount() const { return d->playcount_; } @@ -272,9 +302,13 @@ bool Song::is_cdda() const { return d->filetype_ == Type_Cdda; } const QString& Song::art_automatic() const { return d->art_automatic_; } const QString& Song::art_manual() const { return d->art_manual_; } const QString& Song::etag() const { return d->etag_; } -bool Song::has_manually_unset_cover() const { return d->art_manual_ == kManuallyUnsetCover; } +bool Song::has_manually_unset_cover() const { + return d->art_manual_ == kManuallyUnsetCover; +} void Song::manually_unset_cover() { d->art_manual_ = kManuallyUnsetCover; } -bool Song::has_embedded_cover() const { return d->art_automatic_ == kEmbeddedCover; } +bool Song::has_embedded_cover() const { + return d->art_automatic_ == kEmbeddedCover; +} void Song::set_embedded_cover() { d->art_automatic_ = kEmbeddedCover; } const QImage& Song::image() const { return d->image_; } void Song::set_id(int id) { d->id_ = id; } @@ -308,7 +342,9 @@ void Song::set_art_automatic(const QString& v) { d->art_automatic_ = v; } void Song::set_art_manual(const QString& v) { d->art_manual_ = v; } void Song::set_image(const QImage& i) { d->image_ = i; } void Song::set_forced_compilation_on(bool v) { d->forced_compilation_on_ = v; } -void Song::set_forced_compilation_off(bool v) { d->forced_compilation_off_ = v; } +void Song::set_forced_compilation_off(bool v) { + d->forced_compilation_off_ = v; +} void Song::set_rating(float v) { d->rating_ = v; } void Song::set_playcount(int v) { d->playcount_ = v; } void Song::set_skipcount(int v) { d->skipcount_ = v; } @@ -320,7 +356,8 @@ void Song::set_etag(const QString& etag) { d->etag_ = etag; } void Song::set_url(const QUrl& v) { if (Application::kIsPortable) { - QUrl base = QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/"); + QUrl base = + QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/"); d->url_ = base.resolved(v); } else { d->url_ = v; @@ -336,21 +373,35 @@ QString Song::JoinSpec(const QString& table) { QString Song::TextForFiletype(FileType type) { switch (type) { - case Song::Type_Asf: return QObject::tr("Windows Media audio"); - case Song::Type_Flac: return QObject::tr("Flac"); - case Song::Type_Mp4: return QObject::tr("MP4 AAC"); - case Song::Type_Mpc: return QObject::tr("MPC"); - case Song::Type_Mpeg: return QObject::tr("MP3"); // Not technically correct - case Song::Type_OggFlac: return QObject::tr("Ogg Flac"); - case Song::Type_OggSpeex: return QObject::tr("Ogg Speex"); - case Song::Type_OggVorbis: return QObject::tr("Ogg Vorbis"); - case Song::Type_OggOpus: return QObject::tr("Ogg Opus"); - case Song::Type_Aiff: return QObject::tr("AIFF"); - case Song::Type_Wav: return QObject::tr("Wav"); - case Song::Type_TrueAudio: return QObject::tr("TrueAudio"); - case Song::Type_Cdda: return QObject::tr("CDDA"); + case Song::Type_Asf: + return QObject::tr("Windows Media audio"); + case Song::Type_Flac: + return QObject::tr("Flac"); + case Song::Type_Mp4: + return QObject::tr("MP4 AAC"); + case Song::Type_Mpc: + return QObject::tr("MPC"); + case Song::Type_Mpeg: + return QObject::tr("MP3"); // Not technically correct + case Song::Type_OggFlac: + return QObject::tr("Ogg Flac"); + case Song::Type_OggSpeex: + return QObject::tr("Ogg Speex"); + case Song::Type_OggVorbis: + return QObject::tr("Ogg Vorbis"); + case Song::Type_OggOpus: + return QObject::tr("Ogg Opus"); + case Song::Type_Aiff: + return QObject::tr("AIFF"); + case Song::Type_Wav: + return QObject::tr("Wav"); + case Song::Type_TrueAudio: + return QObject::tr("TrueAudio"); + case Song::Type_Cdda: + return QObject::tr("CDDA"); - case Song::Type_Stream: return QObject::tr("Stream"); + case Song::Type_Stream: + return QObject::tr("Stream"); case Song::Type_Unknown: default: @@ -359,7 +410,8 @@ QString Song::TextForFiletype(FileType type) { } int CompareSongsName(const Song& song1, const Song& song2) { - return song1.PrettyTitleWithArtist().localeAwareCompare(song2.PrettyTitleWithArtist()) < 0; + return song1.PrettyTitleWithArtist().localeAwareCompare( + song2.PrettyTitleWithArtist()) < 0; } void Song::SortSongsListAlphabetically(SongList* songs) { @@ -486,10 +538,10 @@ void Song::InitFromQuery(const SqlRow& q, bool reliable_metadata, int col) { d->valid_ = true; d->init_from_file_ = reliable_metadata; - #define tostr(n) (q.value(n).isNull() ? QString::null : q.value(n).toString()) - #define toint(n) (q.value(n).isNull() ? -1 : q.value(n).toInt()) - #define tolonglong(n) (q.value(n).isNull() ? -1 : q.value(n).toLongLong()) - #define tofloat(n) (q.value(n).isNull() ? -1 : q.value(n).toDouble()) +#define tostr(n) (q.value(n).isNull() ? QString::null : q.value(n).toString()) +#define toint(n) (q.value(n).isNull() ? -1 : q.value(n).toInt()) +#define tolonglong(n) (q.value(n).isNull() ? -1 : q.value(n).toLongLong()) +#define tofloat(n) (q.value(n).isNull() ? -1 : q.value(n).toDouble()) d->id_ = toint(col + 0); d->title_ = tostr(col + 1); @@ -535,7 +587,8 @@ void Song::InitFromQuery(const SqlRow& q, bool reliable_metadata, int col) { // do not move those statements - beginning must be initialized before // length is! - d->beginning_ = q.value(col + 32).isNull() ? 0 : q.value(col + 32).toLongLong(); + d->beginning_ = + q.value(col + 32).isNull() ? 0 : q.value(col + 32).toLongLong(); set_length_nanosec(tolonglong(col + 33)); d->cue_path_ = tostr(col + 34); @@ -549,10 +602,10 @@ void Song::InitFromQuery(const SqlRow& q, bool reliable_metadata, int col) { InitArtManual(); - #undef tostr - #undef toint - #undef tolonglong - #undef tofloat +#undef tostr +#undef toint +#undef tolonglong +#undef tofloat } void Song::InitFromFilePartial(const QString& filename) { @@ -564,9 +617,10 @@ void Song::InitFromFilePartial(const QString& filename) { QFileInfo info(filename); d->basefilename_ = info.fileName(); QString suffix = info.suffix().toLower(); - if (suffix == "mp3" || suffix == "ogg" || suffix == "flac" || suffix == "mpc" - || suffix == "m4a" || suffix == "aac" || suffix == "wma" || suffix == "mp4" - || suffix == "spx" || suffix == "wav" || suffix == "opus") { + if (suffix == "mp3" || suffix == "ogg" || suffix == "flac" || + suffix == "mpc" || suffix == "m4a" || suffix == "aac" || + suffix == "wma" || suffix == "mp4" || suffix == "spx" || + suffix == "wav" || suffix == "opus") { d->valid_ = true; } else { d->valid_ = false; @@ -576,7 +630,8 @@ void Song::InitFromFilePartial(const QString& filename) { void Song::InitArtManual() { // If we don't have an art, check if we have one in the cache if (d->art_manual_.isEmpty() && d->art_automatic_.isEmpty()) { - QString filename(Utilities::Sha1CoverHash(d->artist_, d->album_).toHex() + ".jpg"); + QString filename(Utilities::Sha1CoverHash(d->artist_, d->album_).toHex() + + ".jpg"); QString path(AlbumCoverLoader::ImageCacheDir() + "/" + filename); if (QFile::exists(path)) { d->art_manual_ = path; @@ -596,158 +651,192 @@ void Song::InitFromLastFM(const lastfm::Track& track) { set_length_nanosec(track.duration() * kNsecPerSec); } -#endif // HAVE_LIBLASTFM +#endif // HAVE_LIBLASTFM #ifdef HAVE_LIBGPOD - void Song::InitFromItdb(const Itdb_Track* track, const QString& prefix) { - d->valid_ = true; +void Song::InitFromItdb(const Itdb_Track* track, const QString& prefix) { + d->valid_ = true; - d->title_ = QString::fromUtf8(track->title); - d->album_ = QString::fromUtf8(track->album); - d->artist_ = QString::fromUtf8(track->artist); - d->albumartist_ = QString::fromUtf8(track->albumartist); - d->composer_ = QString::fromUtf8(track->composer); - d->grouping_ = QString::fromUtf8(track->grouping); - d->track_ = track->track_nr; - d->disc_ = track->cd_nr; - d->bpm_ = track->BPM; - d->year_ = track->year; - d->genre_ = QString::fromUtf8(track->genre); - d->comment_ = QString::fromUtf8(track->comment); - d->compilation_ = track->compilation; - set_length_nanosec(track->tracklen * kNsecPerMsec); - d->bitrate_ = track->bitrate; - d->samplerate_ = track->samplerate; - d->mtime_ = track->time_modified; - d->ctime_ = track->time_added; - d->filesize_ = track->size; - d->filetype_ = track->type2 ? Type_Mpeg : Type_Mp4; - d->rating_ = float(track->rating) / 100; // 100 = 20 * 5 stars - d->playcount_ = track->playcount; - d->skipcount_ = track->skipcount; - d->lastplayed_ = track->time_played; + d->title_ = QString::fromUtf8(track->title); + d->album_ = QString::fromUtf8(track->album); + d->artist_ = QString::fromUtf8(track->artist); + d->albumartist_ = QString::fromUtf8(track->albumartist); + d->composer_ = QString::fromUtf8(track->composer); + d->grouping_ = QString::fromUtf8(track->grouping); + d->track_ = track->track_nr; + d->disc_ = track->cd_nr; + d->bpm_ = track->BPM; + d->year_ = track->year; + d->genre_ = QString::fromUtf8(track->genre); + d->comment_ = QString::fromUtf8(track->comment); + d->compilation_ = track->compilation; + set_length_nanosec(track->tracklen * kNsecPerMsec); + d->bitrate_ = track->bitrate; + d->samplerate_ = track->samplerate; + d->mtime_ = track->time_modified; + d->ctime_ = track->time_added; + d->filesize_ = track->size; + d->filetype_ = track->type2 ? Type_Mpeg : Type_Mp4; + d->rating_ = float(track->rating) / 100; // 100 = 20 * 5 stars + d->playcount_ = track->playcount; + d->skipcount_ = track->skipcount; + d->lastplayed_ = track->time_played; - QString filename = QString::fromLocal8Bit(track->ipod_path); - filename.replace(':', '/'); + QString filename = QString::fromLocal8Bit(track->ipod_path); + filename.replace(':', '/'); - if (prefix.contains("://")) { - set_url(QUrl(prefix + filename)); - } else { - set_url(QUrl::fromLocalFile(prefix + filename)); - } - - d->basefilename_ = QFileInfo(filename).fileName(); + if (prefix.contains("://")) { + set_url(QUrl(prefix + filename)); + } else { + set_url(QUrl::fromLocalFile(prefix + filename)); } - void Song::ToItdb(Itdb_Track *track) const { - track->title = strdup(d->title_.toUtf8().constData()); - track->album = strdup(d->album_.toUtf8().constData()); - track->artist = strdup(d->artist_.toUtf8().constData()); - track->albumartist = strdup(d->albumartist_.toUtf8().constData()); - track->composer = strdup(d->composer_.toUtf8().constData()); - track->grouping = strdup(d->grouping_.toUtf8().constData()); - track->track_nr = d->track_; - track->cd_nr = d->disc_; - track->BPM = d->bpm_; - track->year = d->year_; - track->genre = strdup(d->genre_.toUtf8().constData()); - track->comment = strdup(d->comment_.toUtf8().constData()); - track->compilation = d->compilation_; - track->tracklen = length_nanosec() / kNsecPerMsec; - track->bitrate = d->bitrate_; - track->samplerate = d->samplerate_; - track->time_modified = d->mtime_; - track->time_added = d->ctime_; - track->size = d->filesize_; - track->type1 = 0; - track->type2 = d->filetype_ == Type_Mp4 ? 0 : 1; - track->mediatype = 1; // Audio - track->rating = d->rating_ * 100; // 100 = 20 * 5 stars - track->playcount = d->playcount_; - track->skipcount = d->skipcount_; - track->time_played = d->lastplayed_; - } + d->basefilename_ = QFileInfo(filename).fileName(); +} + +void Song::ToItdb(Itdb_Track* track) const { + track->title = strdup(d->title_.toUtf8().constData()); + track->album = strdup(d->album_.toUtf8().constData()); + track->artist = strdup(d->artist_.toUtf8().constData()); + track->albumartist = strdup(d->albumartist_.toUtf8().constData()); + track->composer = strdup(d->composer_.toUtf8().constData()); + track->grouping = strdup(d->grouping_.toUtf8().constData()); + track->track_nr = d->track_; + track->cd_nr = d->disc_; + track->BPM = d->bpm_; + track->year = d->year_; + track->genre = strdup(d->genre_.toUtf8().constData()); + track->comment = strdup(d->comment_.toUtf8().constData()); + track->compilation = d->compilation_; + track->tracklen = length_nanosec() / kNsecPerMsec; + track->bitrate = d->bitrate_; + track->samplerate = d->samplerate_; + track->time_modified = d->mtime_; + track->time_added = d->ctime_; + track->size = d->filesize_; + track->type1 = 0; + track->type2 = d->filetype_ == Type_Mp4 ? 0 : 1; + track->mediatype = 1; // Audio + track->rating = d->rating_ * 100; // 100 = 20 * 5 stars + track->playcount = d->playcount_; + track->skipcount = d->skipcount_; + track->time_played = d->lastplayed_; +} #endif #ifdef HAVE_LIBMTP - void Song::InitFromMTP(const LIBMTP_track_t* track, const QString& host) { - d->valid_ = true; +void Song::InitFromMTP(const LIBMTP_track_t* track, const QString& host) { + d->valid_ = true; - d->title_ = QString::fromUtf8(track->title); - d->artist_ = QString::fromUtf8(track->artist); - d->album_ = QString::fromUtf8(track->album); - d->composer_ = QString::fromUtf8(track->composer); - d->genre_ = QString::fromUtf8(track->genre); - d->url_ = QUrl(QString("mtp://%1/%2").arg(host, track->item_id)); - d->basefilename_ = QString::number(track->item_id); + d->title_ = QString::fromUtf8(track->title); + d->artist_ = QString::fromUtf8(track->artist); + d->album_ = QString::fromUtf8(track->album); + d->composer_ = QString::fromUtf8(track->composer); + d->genre_ = QString::fromUtf8(track->genre); + d->url_ = QUrl(QString("mtp://%1/%2").arg(host, track->item_id)); + d->basefilename_ = QString::number(track->item_id); - d->track_ = track->tracknumber; - set_length_nanosec(track->duration * kNsecPerMsec); - d->samplerate_ = track->samplerate; - d->bitrate_ = track->bitrate; - d->filesize_ = track->filesize; - d->mtime_ = track->modificationdate; - d->ctime_ = track->modificationdate; + d->track_ = track->tracknumber; + set_length_nanosec(track->duration * kNsecPerMsec); + d->samplerate_ = track->samplerate; + d->bitrate_ = track->bitrate; + d->filesize_ = track->filesize; + d->mtime_ = track->modificationdate; + d->ctime_ = track->modificationdate; - d->rating_ = float(track->rating) / 100; - d->playcount_ = track->usecount; + d->rating_ = float(track->rating) / 100; + d->playcount_ = track->usecount; - switch (track->filetype) { - case LIBMTP_FILETYPE_WAV: d->filetype_ = Type_Wav; break; - case LIBMTP_FILETYPE_MP3: d->filetype_ = Type_Mpeg; break; - case LIBMTP_FILETYPE_WMA: d->filetype_ = Type_Asf; break; - case LIBMTP_FILETYPE_OGG: d->filetype_ = Type_OggVorbis; break; - case LIBMTP_FILETYPE_MP4: d->filetype_ = Type_Mp4; break; - case LIBMTP_FILETYPE_AAC: d->filetype_ = Type_Mp4; break; - case LIBMTP_FILETYPE_FLAC: d->filetype_ = Type_OggFlac; break; - case LIBMTP_FILETYPE_MP2: d->filetype_ = Type_Mpeg; break; - case LIBMTP_FILETYPE_M4A: d->filetype_ = Type_Mp4; break; - default: d->filetype_ = Type_Unknown; break; - } + switch (track->filetype) { + case LIBMTP_FILETYPE_WAV: + d->filetype_ = Type_Wav; + break; + case LIBMTP_FILETYPE_MP3: + d->filetype_ = Type_Mpeg; + break; + case LIBMTP_FILETYPE_WMA: + d->filetype_ = Type_Asf; + break; + case LIBMTP_FILETYPE_OGG: + d->filetype_ = Type_OggVorbis; + break; + case LIBMTP_FILETYPE_MP4: + d->filetype_ = Type_Mp4; + break; + case LIBMTP_FILETYPE_AAC: + d->filetype_ = Type_Mp4; + break; + case LIBMTP_FILETYPE_FLAC: + d->filetype_ = Type_OggFlac; + break; + case LIBMTP_FILETYPE_MP2: + d->filetype_ = Type_Mpeg; + break; + case LIBMTP_FILETYPE_M4A: + d->filetype_ = Type_Mp4; + break; + default: + d->filetype_ = Type_Unknown; + break; } +} - void Song::ToMTP(LIBMTP_track_t* track) const { - track->item_id = 0; - track->parent_id = 0; - track->storage_id = 0; +void Song::ToMTP(LIBMTP_track_t* track) const { + track->item_id = 0; + track->parent_id = 0; + track->storage_id = 0; - track->title = strdup(d->title_.toUtf8().constData()); - track->artist = strdup(d->artist_.toUtf8().constData()); - track->album = strdup(d->album_.toUtf8().constData()); - track->composer = strdup(d->composer_.toUtf8().constData()); - track->genre = strdup(d->genre_.toUtf8().constData()); - track->title = strdup(d->title_.toUtf8().constData()); - track->date = NULL; + track->title = strdup(d->title_.toUtf8().constData()); + track->artist = strdup(d->artist_.toUtf8().constData()); + track->album = strdup(d->album_.toUtf8().constData()); + track->composer = strdup(d->composer_.toUtf8().constData()); + track->genre = strdup(d->genre_.toUtf8().constData()); + track->title = strdup(d->title_.toUtf8().constData()); + track->date = nullptr; - track->filename = strdup(d->basefilename_.toUtf8().constData()); + track->filename = strdup(d->basefilename_.toUtf8().constData()); - track->tracknumber = d->track_; - track->duration = length_nanosec() / kNsecPerMsec; - track->samplerate = d->samplerate_; - track->nochannels = 0; - track->wavecodec = 0; - track->bitrate = d->bitrate_; - track->bitratetype = 0; - track->rating = d->rating_ * 100; - track->usecount = d->playcount_; - track->filesize = d->filesize_; - track->modificationdate = d->mtime_; + track->tracknumber = d->track_; + track->duration = length_nanosec() / kNsecPerMsec; + track->samplerate = d->samplerate_; + track->nochannels = 0; + track->wavecodec = 0; + track->bitrate = d->bitrate_; + track->bitratetype = 0; + track->rating = d->rating_ * 100; + track->usecount = d->playcount_; + track->filesize = d->filesize_; + track->modificationdate = d->mtime_; - switch (d->filetype_) { - case Type_Asf: track->filetype = LIBMTP_FILETYPE_ASF; break; - case Type_Mp4: track->filetype = LIBMTP_FILETYPE_MP4; break; - case Type_Mpeg: track->filetype = LIBMTP_FILETYPE_MP3; break; - case Type_Flac: - case Type_OggFlac: track->filetype = LIBMTP_FILETYPE_FLAC; break; - case Type_OggSpeex: - case Type_OggVorbis: track->filetype = LIBMTP_FILETYPE_OGG; break; - case Type_Wav: track->filetype = LIBMTP_FILETYPE_WAV; break; - default: track->filetype = LIBMTP_FILETYPE_UNDEF_AUDIO; break; - } + switch (d->filetype_) { + case Type_Asf: + track->filetype = LIBMTP_FILETYPE_ASF; + break; + case Type_Mp4: + track->filetype = LIBMTP_FILETYPE_MP4; + break; + case Type_Mpeg: + track->filetype = LIBMTP_FILETYPE_MP3; + break; + case Type_Flac: + case Type_OggFlac: + track->filetype = LIBMTP_FILETYPE_FLAC; + break; + case Type_OggSpeex: + case Type_OggVorbis: + track->filetype = LIBMTP_FILETYPE_OGG; + break; + case Type_Wav: + track->filetype = LIBMTP_FILETYPE_WAV; + break; + default: + track->filetype = LIBMTP_FILETYPE_UNDEF_AUDIO; + break; } +} #endif -void Song::MergeFromSimpleMetaBundle(const Engine::SimpleMetaBundle &bundle) { +void Song::MergeFromSimpleMetaBundle(const Engine::SimpleMetaBundle& bundle) { if (d->init_from_file_ || d->url_.scheme() == "file") { // This Song was already loaded using taglib. Our tags are probably better // than the engine's. Note: init_from_file_ is used for non-file:// URLs @@ -768,10 +857,10 @@ void Song::MergeFromSimpleMetaBundle(const Engine::SimpleMetaBundle &bundle) { if (!bundle.tracknr.isEmpty()) d->track_ = bundle.tracknr.toInt(); } -void Song::BindToQuery(QSqlQuery *query) const { - #define strval(x) (x.isNull() ? "" : x) - #define intval(x) (x <= 0 ? -1 : x) - #define notnullintval(x) (x == -1 ? QVariant() : x) +void Song::BindToQuery(QSqlQuery* query) const { +#define strval(x) (x.isNull() ? "" : x) +#define intval(x) (x <= 0 ? -1 : x) +#define notnullintval(x) (x == -1 ? QVariant() : x) // Remember to bind these in the same order as kBindSpec @@ -793,9 +882,10 @@ void Song::BindToQuery(QSqlQuery *query) const { query->bindValue(":directory", notnullintval(d->directory_id_)); - if (Application::kIsPortable - && Utilities::UrlOnSameDriveAsClementine(d->url_)) { - query->bindValue(":filename", Utilities::GetRelativePathToClementineBin(d->url_)); + if (Application::kIsPortable && + Utilities::UrlOnSameDriveAsClementine(d->url_)) { + query->bindValue(":filename", + Utilities::GetRelativePathToClementineBin(d->url_).toEncoded()); } else { query->bindValue(":filename", d->url_.toEncoded()); } @@ -814,7 +904,8 @@ void Song::BindToQuery(QSqlQuery *query) const { query->bindValue(":rating", intval(d->rating_)); query->bindValue(":forced_compilation_on", d->forced_compilation_on_ ? 1 : 0); - query->bindValue(":forced_compilation_off", d->forced_compilation_off_ ? 1 : 0); + query->bindValue(":forced_compilation_off", + d->forced_compilation_off_ ? 1 : 0); query->bindValue(":effective_compilation", is_compilation() ? 1 : 0); @@ -833,12 +924,12 @@ void Song::BindToQuery(QSqlQuery *query) const { query->bindValue(":performer", strval(d->performer_)); query->bindValue(":grouping", strval(d->grouping_)); - #undef intval - #undef notnullintval - #undef strval +#undef intval +#undef notnullintval +#undef strval } -void Song::BindToFtsQuery(QSqlQuery *query) const { +void Song::BindToFtsQuery(QSqlQuery* query) const { query->bindValue(":ftstitle", d->title_); query->bindValue(":ftsalbum", d->album_); query->bindValue(":ftsartist", d->artist_); @@ -870,25 +961,21 @@ void Song::ToLastFM(lastfm::Track* track, bool prefer_album_artist) const { mtrack.setSource(lastfm::Track::Player); } } -#endif // HAVE_LIBLASTFM +#endif // HAVE_LIBLASTFM QString Song::PrettyRating() const { float rating = d->rating_; - if (rating == -1.0f) - return "0"; + if (rating == -1.0f) return "0"; return QString::number(static_cast(rating * 100)); } - QString Song::PrettyTitle() const { QString title(d->title_); - if (title.isEmpty()) - title = d->basefilename_; - if (title.isEmpty()) - title = d->url_.toString(); + if (title.isEmpty()) title = d->basefilename_; + if (title.isEmpty()) title = d->url_.toString(); return title; } @@ -896,25 +983,21 @@ QString Song::PrettyTitle() const { QString Song::PrettyTitleWithArtist() const { QString title(d->title_); - if (title.isEmpty()) - title = d->basefilename_; + if (title.isEmpty()) title = d->basefilename_; - if (!d->artist_.isEmpty()) - title = d->artist_ + " - " + title; + if (!d->artist_.isEmpty()) title = d->artist_ + " - " + title; return title; } QString Song::PrettyLength() const { - if (length_nanosec() == -1) - return QString::null; + if (length_nanosec() == -1) return QString::null; return Utilities::PrettyTimeNanosec(length_nanosec()); } QString Song::PrettyYear() const { - if (d->year_ == -1) - return QString::null; + if (d->year_ == -1) return QString::null; return QString::number(d->year_); } @@ -922,28 +1005,24 @@ QString Song::PrettyYear() const { QString Song::TitleWithCompilationArtist() const { QString title(d->title_); - if (title.isEmpty()) - title = d->basefilename_; + if (title.isEmpty()) title = d->basefilename_; - if (is_compilation() && !d->artist_.isEmpty() && !d->artist_.toLower().contains("various")) + if (is_compilation() && !d->artist_.isEmpty() && + !d->artist_.toLower().contains("various")) title = d->artist_ + " - " + title; return title; } bool Song::IsMetadataEqual(const Song& other) const { - return d->title_ == other.d->title_ && - d->album_ == other.d->album_ && + return d->title_ == other.d->title_ && d->album_ == other.d->album_ && d->artist_ == other.d->artist_ && d->albumartist_ == other.d->albumartist_ && d->composer_ == other.d->composer_ && d->performer_ == other.d->performer_ && - d->grouping_ == other.d->grouping_ && - d->track_ == other.d->track_ && - d->disc_ == other.d->disc_ && - qFuzzyCompare(d->bpm_, other.d->bpm_) && - d->year_ == other.d->year_ && - d->genre_ == other.d->genre_ && + d->grouping_ == other.d->grouping_ && d->track_ == other.d->track_ && + d->disc_ == other.d->disc_ && qFuzzyCompare(d->bpm_, other.d->bpm_) && + d->year_ == other.d->year_ && d->genre_ == other.d->genre_ && d->comment_ == other.d->comment_ && d->compilation_ == other.d->compilation_ && d->beginning_ == other.d->beginning_ && @@ -982,23 +1061,19 @@ uint HashSimilar(const Song& song) { } bool Song::IsOnSameAlbum(const Song& other) const { - if (is_compilation() != other.is_compilation()) - return false; + if (is_compilation() != other.is_compilation()) return false; if (has_cue() && other.has_cue() && cue_path() == other.cue_path()) return true; - if (is_compilation() && album() == other.album()) - return true; + if (is_compilation() && album() == other.album()) return true; return album() == other.album() && artist() == other.artist(); } QString Song::AlbumKey() const { - return QString("%1|%2|%3").arg( - is_compilation() ? "_compilation" : artist(), - has_cue() ? cue_path() : "", - album()); + return QString("%1|%2|%3").arg(is_compilation() ? "_compilation" : artist(), + has_cue() ? cue_path() : "", album()); } void Song::ToXesam(QVariantMap* map) const { diff --git a/src/core/song.h b/src/core/song.h index 49d64a4c6..46e50b04e 100644 --- a/src/core/song.h +++ b/src/core/song.h @@ -37,22 +37,21 @@ class QSqlQuery; class QUrl; #ifdef HAVE_LIBGPOD - struct _Itdb_Track; +struct _Itdb_Track; #endif #ifdef HAVE_LIBMTP - struct LIBMTP_track_struct; +struct LIBMTP_track_struct; #endif #ifdef HAVE_LIBLASTFM - namespace lastfm { - class Track; - } +namespace lastfm { +class Track; +} #endif class SqlRow; - class Song { public: Song(); @@ -91,7 +90,6 @@ class Song { Type_TrueAudio = 11, Type_Cdda = 12, Type_OggOpus = 13, - Type_Stream = 99, }; static QString TextForFiletype(FileType type); @@ -101,12 +99,16 @@ class Song { static void SortSongsListAlphabetically(QList* songs); // Constructors - void Init(const QString& title, const QString& artist, const QString& album, qint64 length_nanosec); - void Init(const QString& title, const QString& artist, const QString& album, qint64 beginning, qint64 end); + void Init(const QString& title, const QString& artist, const QString& album, + qint64 length_nanosec); + void Init(const QString& title, const QString& artist, const QString& album, + qint64 beginning, qint64 end); void InitFromProtobuf(const pb::tagreader::SongMetadata& pb); void InitFromQuery(const SqlRow& query, bool reliable_metadata, int col = 0); - void InitFromFilePartial(const QString& filename); // Just store the filename: incomplete but fast - void InitArtManual(); // Check if there is already a art in the cache and store the filename in art_manual + void InitFromFilePartial( + const QString& filename); // Just store the filename: incomplete but fast + void InitArtManual(); // Check if there is already a art in the cache and + // store the filename in art_manual #ifdef HAVE_LIBLASTFM void InitFromLastFM(const lastfm::Track& track); #endif @@ -128,7 +130,7 @@ class Song { // but you want to keep user stats. void MergeUserSetData(const Song& other); - static QString Decode(const QString& tag, const QTextCodec* codec = NULL); + static QString Decode(const QString& tag, const QTextCodec* codec = nullptr); // Save void BindToQuery(QSqlQuery* query) const; @@ -149,7 +151,8 @@ class Song { const QString& artist() const; const QString& albumartist() const; const QString& effective_albumartist() const; - // Playlist views are special because you don't want to fill in album artists automatically for + // Playlist views are special because you don't want to fill in album artists + // automatically for // compilations, but you do for normal albums: const QString& playlist_albumartist() const; const QString& composer() const; @@ -296,4 +299,4 @@ uint qHash(const Song& song); // Hash function using field checked in IsSimilar function uint HashSimilar(const Song& song); -#endif // SONG_H +#endif // SONG_H diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index 34a50b7f9..55bcaae74 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -17,7 +17,7 @@ #include "songloader.h" -#include +#include #include #include @@ -27,7 +27,7 @@ #include #ifdef HAVE_AUDIOCD -# include +#include #endif #include "config.h" @@ -49,29 +49,36 @@ #include "podcasts/podcastservice.h" #include "podcasts/podcasturlloader.h" +using std::placeholders::_1; QSet SongLoader::sRawUriSchemes; const int SongLoader::kDefaultTimeout = 5000; -SongLoader::SongLoader(LibraryBackendInterface* library, - const Player* player, - QObject *parent) - : QObject(parent), - timeout_timer_(new QTimer(this)), - playlist_parser_(new PlaylistParser(library, this)), - podcast_parser_(new PodcastParser), - cue_parser_(new CueParser(library, this)), - timeout_(kDefaultTimeout), - state_(WaitingForType), - success_(false), - parser_(NULL), - is_podcast_(false), - library_(library), - player_(player) -{ +SongLoader::SongLoader(LibraryBackendInterface* library, const Player* player, + QObject* parent) + : QObject(parent), + timeout_timer_(new QTimer(this)), + playlist_parser_(new PlaylistParser(library, this)), + podcast_parser_(new PodcastParser), + cue_parser_(new CueParser(library, this)), + timeout_(kDefaultTimeout), + state_(WaitingForType), + success_(false), + parser_(nullptr), + is_podcast_(false), + library_(library), + player_(player) { if (sRawUriSchemes.isEmpty()) { - sRawUriSchemes << "udp" << "mms" << "mmsh" << "mmst" << "mmsu" << "rtsp" - << "rtspu" << "rtspt" << "rtsph" << "spotify"; + sRawUriSchemes << "udp" + << "mms" + << "mmsh" + << "mmst" + << "mmsu" + << "rtsp" + << "rtspu" + << "rtspt" + << "rtsph" + << "spotify"; } timeout_timer_->setSingleShot(true); @@ -105,8 +112,14 @@ SongLoader::Result SongLoader::Load(const QUrl& url) { url_ = PodcastUrlLoader::FixPodcastUrl(url_); - timeout_timer_->start(timeout_); - return LoadRemote(); + preload_func_ = std::bind(&SongLoader::LoadRemote, this); + return BlockingLoadRequired; +} + +void SongLoader::LoadFilenamesBlocking() { + if (preload_func_) { + preload_func_(); + } } SongLoader::Result SongLoader::LoadLocalPartial(const QString& filename) { @@ -119,23 +132,24 @@ SongLoader::Result SongLoader::LoadLocalPartial(const QString& filename) { } Song song; song.InitFromFilePartial(filename); - if (song.is_valid()) - songs_ << song; + if (song.is_valid()) songs_ << song; return Success; } SongLoader::Result SongLoader::LoadAudioCD() { #ifdef HAVE_AUDIOCD // Create gstreamer cdda element - GstElement* cdda = gst_element_make_from_uri (GST_URI_SRC, "cdda://", NULL); - if (cdda == NULL) { + GstElement* cdda = gst_element_make_from_uri(GST_URI_SRC, "cdda://", nullptr); + if (cdda == nullptr) { qLog(Error) << "Error while creating CDDA GstElement"; return Error; } // Change the element's state to ready and paused, to be able to query it - if (gst_element_set_state(cdda, GST_STATE_READY) == GST_STATE_CHANGE_FAILURE || - gst_element_set_state(cdda, GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) { + if (gst_element_set_state(cdda, GST_STATE_READY) == + GST_STATE_CHANGE_FAILURE || + gst_element_set_state(cdda, GST_STATE_PAUSED) == + GST_STATE_CHANGE_FAILURE) { qLog(Error) << "Error while changing CDDA GstElement's state"; gst_element_set_state(cdda, GST_STATE_NULL); gst_object_unref(GST_OBJECT(cdda)); @@ -143,10 +157,11 @@ SongLoader::Result SongLoader::LoadAudioCD() { } // Get number of tracks - GstFormat fmt = gst_format_get_by_nick ("track"); + GstFormat fmt = gst_format_get_by_nick("track"); GstFormat out_fmt = fmt; gint64 num_tracks = 0; - if (!gst_element_query_duration (cdda, &out_fmt, &num_tracks) || out_fmt != fmt) { + if (!gst_element_query_duration(cdda, &out_fmt, &num_tracks) || + out_fmt != fmt) { qLog(Error) << "Error while querying cdda GstElement"; gst_object_unref(GST_OBJECT(cdda)); return Error; @@ -157,8 +172,9 @@ SongLoader::Result SongLoader::LoadAudioCD() { Song song; guint64 duration = 0; // quint64 == ulonglong and guint64 == ulong, therefore we must cast - if (gst_tag_list_get_uint64 (GST_CDDA_BASE_SRC(cdda)->tracks[track_number-1].tags, - GST_TAG_DURATION, &duration)) { + if (gst_tag_list_get_uint64( + GST_CDDA_BASE_SRC(cdda)->tracks[track_number - 1].tags, + GST_TAG_DURATION, &duration)) { song.set_length_nanosec((quint64)duration); } song.set_valid(true); @@ -171,48 +187,50 @@ SongLoader::Result SongLoader::LoadAudioCD() { // Generate MusicBrainz DiscId gst_tag_register_musicbrainz_tags(); - GstElement *pipe = gst_pipeline_new ("pipeline"); - gst_bin_add (GST_BIN (pipe), cdda); - gst_element_set_state (pipe, GST_STATE_READY); - gst_element_set_state (pipe, GST_STATE_PAUSED); - GstMessage *msg = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe), - GST_CLOCK_TIME_NONE, - GST_MESSAGE_TAG); - GstTagList *tags = NULL; - gst_message_parse_tag (msg, &tags); - char *string_mb = NULL; - if (gst_tag_list_get_string (tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, &string_mb)) { + GstElement* pipe = gst_pipeline_new("pipeline"); + gst_bin_add(GST_BIN(pipe), cdda); + gst_element_set_state(pipe, GST_STATE_READY); + gst_element_set_state(pipe, GST_STATE_PAUSED); + GstMessage* msg = gst_bus_timed_pop_filtered( + GST_ELEMENT_BUS(pipe), GST_CLOCK_TIME_NONE, GST_MESSAGE_TAG); + GstTagList* tags = nullptr; + gst_message_parse_tag(msg, &tags); + char* string_mb = nullptr; + if (gst_tag_list_get_string(tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, + &string_mb)) { QString musicbrainz_discid(string_mb); qLog(Info) << "MusicBrainz discid: " << musicbrainz_discid; - MusicBrainzClient *musicbrainz_client = new MusicBrainzClient(this); - connect(musicbrainz_client, - SIGNAL(Finished(const QString&, const QString&, MusicBrainzClient::ResultList)), - SLOT(AudioCDTagsLoaded(const QString&, const QString&, MusicBrainzClient::ResultList))); + MusicBrainzClient* musicbrainz_client = new MusicBrainzClient(this); + connect(musicbrainz_client, SIGNAL(Finished(const QString&, const QString&, + MusicBrainzClient::ResultList)), + SLOT(AudioCDTagsLoaded(const QString&, const QString&, + MusicBrainzClient::ResultList))); musicbrainz_client->StartDiscIdRequest(musicbrainz_discid); g_free(string_mb); } - + // Clean all the Gstreamer objects we have used: we don't need them anymore gst_object_unref(GST_OBJECT(cdda)); - gst_element_set_state (pipe, GST_STATE_NULL); + gst_element_set_state(pipe, GST_STATE_NULL); gst_object_unref(GST_OBJECT(pipe)); gst_object_unref(GST_OBJECT(msg)); gst_object_unref(GST_OBJECT(tags)); return Success; -#else // HAVE_AUDIOCD +#else // HAVE_AUDIOCD return Error; #endif } -void SongLoader::AudioCDTagsLoaded(const QString& artist, const QString& album, - const MusicBrainzClient::ResultList& results) { +void SongLoader::AudioCDTagsLoaded( + const QString& artist, const QString& album, + const MusicBrainzClient::ResultList& results) { // Remove previously added songs metadata, because there are not needed // and that we are going to fill it with new (more complete) ones songs_.clear(); int track_number = 1; - foreach (const MusicBrainzClient::Result& ret, results) { + for (const MusicBrainzClient::Result& ret : results) { Song song; song.set_artist(artist); song.set_album(album); @@ -220,115 +238,103 @@ void SongLoader::AudioCDTagsLoaded(const QString& artist, const QString& album, song.set_length_nanosec(ret.duration_msec_ * kNsecPerMsec); song.set_track(track_number); song.set_year(ret.year_); - // We need to set url: that's how playlist will find the correct item to update + // We need to set url: that's how playlist will find the correct item to + // update song.set_url(QUrl(QString("cdda://%1").arg(track_number++))); songs_ << song; } - emit LoadFinished(true); + emit LoadAudioCDFinished(true); } SongLoader::Result SongLoader::LoadLocal(const QString& filename) { qLog(Debug) << "Loading local file" << filename; - // First check to see if it's a directory - if so we can load all the songs - // inside right away. - if (QFileInfo(filename).isDir()) { - ConcurrentRun::Run(&thread_pool_, - boost::bind(&SongLoader::LoadLocalDirectoryAndEmit, this, filename)); - return WillLoadAsync; - } - - // It's a local file, so check if it looks like a playlist. - // Read the first few bytes. - QFile file(filename); - if (!file.open(QIODevice::ReadOnly)) - return Error; - QByteArray data(file.read(PlaylistParser::kMagicSize)); - - ParserBase* parser = playlist_parser_->ParserForMagic(data); - if (!parser) { - // Check the file extension as well, maybe the magic failed, or it was a - // basic M3U file which is just a plain list of filenames. - parser = playlist_parser_->ParserForExtension(QFileInfo(filename).suffix()); - } - - if (parser) { - qLog(Debug) << "Parsing using" << parser->name(); - - // It's a playlist! - ConcurrentRun::Run(&thread_pool_, - boost::bind(&SongLoader::LoadPlaylistAndEmit, this, parser, filename)); - return WillLoadAsync; - } - - // Not a playlist, so just assume it's a song + // Search in the database. QUrl url = QUrl::fromLocalFile(filename); LibraryQuery query; query.SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); query.AddWhere("filename", url.toEncoded()); - SongList song_list; - if (library_->ExecQuery(&query) && query.Next()) { // we may have many results when the file has many sections do { Song song; song.InitFromQuery(query, true); - song_list << song; - } while(query.Next()); - } else { - QString matching_cue = filename.section('.', 0, -2) + ".cue"; + if (song.is_valid()) { + songs_ << song; + } + } while (query.Next()); - if (QFile::exists(matching_cue)) { - // it's a cue - create virtual tracks - QFile cue(matching_cue); - cue.open(QIODevice::ReadOnly); - - song_list = cue_parser_->Load(&cue, matching_cue, QDir(filename.section('/', 0, -2))); - } else { - // it's a normal media file, load it asynchronously. - TagReaderReply* reply = TagReaderClient::Instance()->ReadFile(filename); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(LocalFileLoaded(TagReaderReply*)), - reply); - - return WillLoadAsync; - } + return Success; } - foreach (const Song& song, song_list) { - if (song.is_valid()) { - songs_ << song; - } - } - - return Success; + // It's not in the database, load it asynchronously. + preload_func_ = + std::bind(&SongLoader::LoadLocalAsync, this, filename); + return BlockingLoadRequired; } -void SongLoader::LocalFileLoaded(TagReaderReply* reply) { - reply->deleteLater(); +void SongLoader::LoadLocalAsync(const QString& filename) { + // First check to see if it's a directory - if so we will load all the songs + // inside right away. + if (QFileInfo(filename).isDir()) { + LoadLocalDirectory(filename); + return; + } + + // It's a local file, so check if it looks like a playlist. + // Read the first few bytes. + QFile file(filename); + if (!file.open(QIODevice::ReadOnly)) return; + QByteArray data(file.read(PlaylistParser::kMagicSize)); + + ParserBase* parser = playlist_parser_->ParserForMagic(data); + if (!parser) { + // Check the file extension as well, maybe the magic failed, or it was a + // basic M3U file which is just a plain list of filenames. + parser = playlist_parser_->ParserForExtension(QFileInfo(filename).suffix().toLower()); + } + + if (parser) { + qLog(Debug) << "Parsing using" << parser->name(); + + // It's a playlist! + LoadPlaylist(parser, filename); + return; + } + + // Check if it's a cue file + QString matching_cue = filename.section('.', 0, -2) + ".cue"; + if (QFile::exists(matching_cue)) { + // it's a cue - create virtual tracks + QFile cue(matching_cue); + cue.open(QIODevice::ReadOnly); + + SongList song_list = cue_parser_->Load(&cue, matching_cue, + QDir(filename.section('/', 0, -2))); + for (Song song: song_list){ + if (song.is_valid()) songs_ << song; + } + return; + } + + // Assume it's just a normal file Song song; - song.InitFromProtobuf(reply->message().read_file_response().metadata()); - - if (song.is_valid()) { - songs_ << song; - } - - emit LoadFinished(true); + song.InitFromFilePartial(filename); + if (song.is_valid()) songs_ << song; } -void SongLoader::EffectiveSongsLoad() { +void SongLoader::LoadMetadataBlocking() { for (int i = 0; i < songs_.size(); i++) { EffectiveSongLoad(&songs_[i]); } } void SongLoader::EffectiveSongLoad(Song* song) { - if (!song) - return; + if (!song) return; if (song->filetype() != Song::Type_Unknown) { // Maybe we loaded the metadata already, for example from a cuesheet. @@ -346,11 +352,6 @@ void SongLoader::EffectiveSongLoad(Song* song) { } } -void SongLoader::LoadPlaylistAndEmit(ParserBase* parser, const QString& filename) { - LoadPlaylist(parser, filename); - emit LoadFinished(true); -} - void SongLoader::LoadPlaylist(ParserBase* parser, const QString& filename) { QFile file(filename); file.open(QIODevice::ReadOnly); @@ -370,11 +371,6 @@ static bool CompareSongs(const Song& left, const Song& right) { return left.url() < right.url(); } -void SongLoader::LoadLocalDirectoryAndEmit(const QString& filename) { - LoadLocalDirectory(filename); - emit LoadFinished(true); -} - void SongLoader::LoadLocalDirectory(const QString& filename) { QDirIterator it(filename, QDir::Files | QDir::NoDotAndDotDot | QDir::Readable, QDirIterator::Subdirectories); @@ -389,8 +385,7 @@ void SongLoader::LoadLocalDirectory(const QString& filename) { // one in our list to be fully loaded, so if the user has the "Start playing // when adding to playlist" preference behaviour set, it can enjoy the first // song being played (seek it, have moodbar, etc.) - if (!songs_.isEmpty()) - EffectiveSongLoad(&(*songs_.begin())); + if (!songs_.isEmpty()) EffectiveSongLoad(&(*songs_.begin())); } void SongLoader::AddAsRawStream() { @@ -443,10 +438,10 @@ void SongLoader::StopTypefind() { AddAsRawStream(); } - emit LoadFinished(success_); + emit LoadRemoteFinished(); } -SongLoader::Result SongLoader::LoadRemote() { +void SongLoader::LoadRemote() { qLog(Debug) << "Loading remote file" << url_; // It's not a local file so we have to fetch it to see what it is. We use @@ -459,24 +454,28 @@ SongLoader::Result SongLoader::LoadRemote() { // If the magic succeeds then we know for sure it's a playlist - so read the // rest of the file, parse the playlist and return success. + timeout_timer_->start(timeout_); + // Create the pipeline - it gets unreffed if it goes out of scope - boost::shared_ptr pipeline( - gst_pipeline_new(NULL), boost::bind(&gst_object_unref, _1)); + std::shared_ptr pipeline(gst_pipeline_new(nullptr), + std::bind(&gst_object_unref, _1)); // Create the source element automatically based on the URL GstElement* source = gst_element_make_from_uri( - GST_URI_SRC, url_.toEncoded().constData(), NULL); + GST_URI_SRC, url_.toEncoded().constData(), nullptr); if (!source) { - qLog(Warning) << "Couldn't create gstreamer source element for" << url_.toString(); - return Error; + qLog(Warning) << "Couldn't create gstreamer source element for" + << url_.toString(); + return; } // Create the other elements and link them up - GstElement* typefind = gst_element_factory_make("typefind", NULL); - GstElement* fakesink = gst_element_factory_make("fakesink", NULL); + GstElement* typefind = gst_element_factory_make("typefind", nullptr); + GstElement* fakesink = gst_element_factory_make("fakesink", nullptr); - gst_bin_add_many(GST_BIN(pipeline.get()), source, typefind, fakesink, NULL); - gst_element_link_many(source, typefind, fakesink, NULL); + gst_bin_add_many(GST_BIN(pipeline.get()), source, typefind, fakesink, + nullptr); + gst_element_link_many(source, typefind, fakesink, nullptr); // Connect callbacks GstBus* bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline.get())); @@ -489,24 +488,30 @@ SongLoader::Result SongLoader::LoadRemote() { gst_pad_add_buffer_probe(pad, G_CALLBACK(DataReady), this); gst_object_unref(pad); + QEventLoop loop; + loop.connect(this, SIGNAL(LoadRemoteFinished()), SLOT(quit())); + // Start "playing" gst_element_set_state(pipeline.get(), GST_STATE_PLAYING); pipeline_ = pipeline; - return WillLoadAsync; + + // Wait until loading is finished + loop.exec(); } void SongLoader::TypeFound(GstElement*, uint, GstCaps* caps, void* self) { SongLoader* instance = static_cast(self); - if (instance->state_ != WaitingForType) - return; + if (instance->state_ != WaitingForType) return; // Check the mimetype - instance->mime_type_ = gst_structure_get_name(gst_caps_get_structure(caps, 0)); + instance->mime_type_ = + gst_structure_get_name(gst_caps_get_structure(caps, 0)); qLog(Debug) << "Mime type is" << instance->mime_type_; if (instance->mime_type_ == "text/plain" || instance->mime_type_ == "text/uri-list" || - instance->podcast_parser_->supported_mime_types().contains(instance->mime_type_)) { + instance->podcast_parser_->supported_mime_types().contains( + instance->mime_type_)) { // Yeah it might be a playlist, let's get some data and have a better look instance->state_ = WaitingForMagic; return; @@ -519,8 +524,7 @@ void SongLoader::TypeFound(GstElement*, uint, GstCaps* caps, void* self) { gboolean SongLoader::DataReady(GstPad*, GstBuffer* buf, void* self) { SongLoader* instance = static_cast(self); - if (instance->state_ == Finished) - return true; + if (instance->state_ == Finished) return true; // Append the data to the buffer instance->buffer_.append(reinterpret_cast(GST_BUFFER_DATA(buf)), @@ -552,7 +556,8 @@ gboolean SongLoader::BusCallback(GstBus*, GstMessage* msg, gpointer self) { return TRUE; } -GstBusSyncReply SongLoader::BusCallbackSync(GstBus*, GstMessage* msg, gpointer self) { +GstBusSyncReply SongLoader::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer self) { SongLoader* instance = reinterpret_cast(self); switch (GST_MESSAGE_TYPE(msg)) { @@ -571,8 +576,7 @@ GstBusSyncReply SongLoader::BusCallbackSync(GstBus*, GstMessage* msg, gpointer s } void SongLoader::ErrorMessageReceived(GstMessage* msg) { - if (state_ == Finished) - return; + if (state_ == Finished) return; GError* error; gchar* debugs; @@ -587,8 +591,8 @@ void SongLoader::ErrorMessageReceived(GstMessage* msg) { free(debugs); if (state_ == WaitingForType && - message_str == gst_error_get_message( - GST_STREAM_ERROR, GST_STREAM_ERROR_TYPE_NOT_FOUND)) { + message_str == gst_error_get_message(GST_STREAM_ERROR, + GST_STREAM_ERROR_TYPE_NOT_FOUND)) { // Don't give up - assume it's a playlist and see if one of our parsers can // read it. state_ = WaitingForMagic; @@ -601,25 +605,24 @@ void SongLoader::ErrorMessageReceived(GstMessage* msg) { void SongLoader::EndOfStreamReached() { qLog(Debug) << Q_FUNC_INFO << state_; switch (state_) { - case Finished: - break; - - case WaitingForMagic: - // Do the magic on the data we have already - MagicReady(); - if (state_ == Finished) + case Finished: break; + + case WaitingForMagic: + // Do the magic on the data we have already + MagicReady(); + if (state_ == Finished) break; // It looks like a playlist, so parse it // fallthrough - case WaitingForData: - // It's a playlist and we've got all the data - finish and parse it - StopTypefindAsync(true); - break; + case WaitingForData: + // It's a playlist and we've got all the data - finish and parse it + StopTypefindAsync(true); + break; - case WaitingForType: - StopTypefindAsync(false); - break; + case WaitingForType: + StopTypefindAsync(false); + break; } } @@ -634,7 +637,8 @@ void SongLoader::MagicReady() { is_podcast_ = true; qLog(Debug) << "Looks like a podcast"; } else { - qLog(Warning) << url_.toString() << "is text, but not a recognised playlist"; + qLog(Warning) << url_.toString() + << "is text, but not a recognised playlist"; // It doesn't look like a playlist, so just finish StopTypefindAsync(false); return; @@ -646,9 +650,10 @@ void SongLoader::MagicReady() { if (!is_podcast_) { qLog(Debug) << "Magic says" << parser_->name(); if (parser_->name() == "ASX/INI" && url_.scheme() == "http") { - // This is actually a weird MS-WMSP stream. Changing the protocol to MMS from + // This is actually a weird MS-WMSP stream. Changing the protocol to MMS + // from // HTTP makes it playable. - parser_ = NULL; + parser_ = nullptr; url_.setScheme("mms"); StopTypefindAsync(true); } @@ -664,7 +669,8 @@ void SongLoader::MagicReady() { bool SongLoader::IsPipelinePlaying() { GstState state = GST_STATE_NULL; GstState pending_state = GST_STATE_NULL; - GstStateChangeReturn ret = gst_element_get_state(pipeline_.get(), &state, &pending_state, GST_SECOND); + GstStateChangeReturn ret = gst_element_get_state(pipeline_.get(), &state, + &pending_state, GST_SECOND); if (ret == GST_STATE_CHANGE_ASYNC && pending_state == GST_STATE_PLAYING) { // We're still on the way to playing diff --git a/src/core/songloader.h b/src/core/songloader.h index 4f335eb31..22499699e 100644 --- a/src/core/songloader.h +++ b/src/core/songloader.h @@ -18,6 +18,11 @@ #ifndef SONGLOADER_H #define SONGLOADER_H +#include +#include + +#include + #include #include #include @@ -26,10 +31,6 @@ #include "core/tagreaderclient.h" #include "musicbrainz/musicbrainzclient.h" -#include - -#include - class CueParser; class LibraryBackendInterface; class ParserBase; @@ -39,15 +40,15 @@ class PodcastParser; class SongLoader : public QObject { Q_OBJECT -public: + public: SongLoader(LibraryBackendInterface* library, const Player* player, - QObject* parent = 0); + QObject* parent = nullptr); ~SongLoader(); enum Result { Success, Error, - WillLoadAsync, + BlockingLoadRequired, }; static const int kDefaultTimeout; @@ -58,50 +59,46 @@ public: int timeout() const { return timeout_; } void set_timeout(int msec) { timeout_ = msec; } + // If Success is returned the songs are fully loaded. If BlockingLoadRequired + // is returned LoadFilenamesBlocking() needs to be called next. Result Load(const QUrl& url); - // To effectively load the songs: - // when we call Load() on a directory, it will return WillLoadAsync, load the - // files with only filenames and emit LoadFinished(). When LoadFinished() is - // received by songloaderinserter, it will insert songs (incompletely loaded) - // in playlist, and call EffectiveSongsLoad() in a background thread to - // perform the real load of the songs. Next, UpdateItems() will be called on - // playlist and replace the partially-loaded items by the new ones, fully - // loaded. - void EffectiveSongsLoad(); - void EffectiveSongLoad(Song* song); + // Loads the files with only filenames. When finished, songs() contains a + // complete list of all Song objects, but without metadata. This method is + // blocking, do not call it from the UI thread. + void LoadFilenamesBlocking(); + // Completely load songs previously loaded with LoadFilenamesBlocking(). When + // finished, the Song objects in songs() contain metadata now. This method is + // blocking, do not call it from the UI thread. + void LoadMetadataBlocking(); Result LoadAudioCD(); signals: - void LoadFinished(bool success); + void LoadAudioCDFinished(bool success); + void LoadRemoteFinished(); -private slots: + private slots: void Timeout(); void StopTypefind(); void AudioCDTagsLoaded(const QString& artist, const QString& album, const MusicBrainzClient::ResultList& results); - void LocalFileLoaded(TagReaderReply* reply); -private: - enum State { - WaitingForType, - WaitingForMagic, - WaitingForData, - Finished, - }; + private: + enum State { WaitingForType, WaitingForMagic, WaitingForData, Finished, }; Result LoadLocal(const QString& filename); + void LoadLocalAsync(const QString& filename); + void EffectiveSongLoad(Song* song); Result LoadLocalPartial(const QString& filename); void LoadLocalDirectory(const QString& filename); void LoadPlaylist(ParserBase* parser, const QString& filename); - void LoadLocalDirectoryAndEmit(const QString& filename); - void LoadPlaylistAndEmit(ParserBase* parser, const QString& filename); void AddAsRawStream(); - Result LoadRemote(); + void LoadRemote(); // GStreamer callbacks - static void TypeFound(GstElement* typefind, uint probability, GstCaps* caps, void* self); + static void TypeFound(GstElement* typefind, uint probability, GstCaps* caps, + void* self); static gboolean DataReady(GstPad*, GstBuffer* buf, void* self); static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage*, gpointer); static gboolean BusCallback(GstBus*, GstMessage*, gpointer); @@ -112,7 +109,7 @@ private: void MagicReady(); bool IsPipelinePlaying(); -private: + private: static QSet sRawUriSchemes; QUrl url_; @@ -124,6 +121,7 @@ private: CueParser* cue_parser_; // For async loads + std::function preload_func_; int timeout_; State state_; bool success_; @@ -134,9 +132,9 @@ private: LibraryBackendInterface* library_; const Player* player_; - boost::shared_ptr pipeline_; + std::shared_ptr pipeline_; QThreadPool thread_pool_; }; -#endif // SONGLOADER_H +#endif // SONGLOADER_H diff --git a/src/core/stylesheetloader.cpp b/src/core/stylesheetloader.cpp index 415bf7ac3..353ddc1c5 100644 --- a/src/core/stylesheetloader.cpp +++ b/src/core/stylesheetloader.cpp @@ -21,18 +21,15 @@ #include #include -StyleSheetLoader::StyleSheetLoader(QObject* parent) - : QObject(parent) -{ -} +StyleSheetLoader::StyleSheetLoader(QObject* parent) : QObject(parent) {} -void StyleSheetLoader::SetStyleSheet(QWidget* widget, const QString &filename) { +void StyleSheetLoader::SetStyleSheet(QWidget* widget, const QString& filename) { filenames_[widget] = filename; widget->installEventFilter(this); UpdateStyleSheet(widget); } -void StyleSheetLoader::UpdateStyleSheet(QWidget *widget) { +void StyleSheetLoader::UpdateStyleSheet(QWidget* widget) { QString filename(filenames_[widget]); // Load the file @@ -43,14 +40,16 @@ void StyleSheetLoader::UpdateStyleSheet(QWidget *widget) { } QString contents(file.readAll()); - // Replace %palette-role with actual colours QPalette p(widget->palette()); QColor alt = p.color(QPalette::AlternateBase); alt.setAlpha(50); contents.replace("%palette-alternate-base", QString("rgba(%1,%2,%3,%4%)") - .arg(alt.red()).arg(alt.green()).arg(alt.blue()).arg(alt.alpha())); + .arg(alt.red()) + .arg(alt.green()) + .arg(alt.blue()) + .arg(alt.alpha())); ReplaceColor(&contents, "Window", p, QPalette::Window); ReplaceColor(&contents, "Background", p, QPalette::Background); @@ -88,17 +87,15 @@ void StyleSheetLoader::ReplaceColor(QString* css, const QString& name, palette.color(role).lighter().name(), Qt::CaseInsensitive); css->replace("%palette-" + name + "-darker", palette.color(role).darker().name(), Qt::CaseInsensitive); - css->replace("%palette-" + name, - palette.color(role).name(), Qt::CaseInsensitive); + css->replace("%palette-" + name, palette.color(role).name(), + Qt::CaseInsensitive); } bool StyleSheetLoader::eventFilter(QObject* obj, QEvent* event) { - if (event->type() != QEvent::PaletteChange) - return false; + if (event->type() != QEvent::PaletteChange) return false; QWidget* widget = qobject_cast(obj); - if (!widget || !filenames_.contains(widget)) - return false; + if (!widget || !filenames_.contains(widget)) return false; UpdateStyleSheet(widget); return false; diff --git a/src/core/stylesheetloader.h b/src/core/stylesheetloader.h index 1fd462058..ff889fa12 100644 --- a/src/core/stylesheetloader.h +++ b/src/core/stylesheetloader.h @@ -25,7 +25,7 @@ class StyleSheetLoader : public QObject { public: - StyleSheetLoader(QObject* parent = 0); + StyleSheetLoader(QObject* parent = nullptr); // Sets the given stylesheet on the given widget. // If the stylesheet contains strings like %palette-[role], these get replaced @@ -45,4 +45,4 @@ class StyleSheetLoader : public QObject { QMap filenames_; }; -#endif // STYLESHEETLOADER_H +#endif // STYLESHEETLOADER_H diff --git a/src/core/tagreaderclient.cpp b/src/core/tagreaderclient.cpp index f043287b9..cfeca3d80 100644 --- a/src/core/tagreaderclient.cpp +++ b/src/core/tagreaderclient.cpp @@ -24,24 +24,20 @@ #include #include - const char* TagReaderClient::kWorkerExecutableName = "clementine-tagreader"; -TagReaderClient* TagReaderClient::sInstance = NULL; +TagReaderClient* TagReaderClient::sInstance = nullptr; TagReaderClient::TagReaderClient(QObject* parent) - : QObject(parent), - worker_pool_(new WorkerPool(this)) -{ + : QObject(parent), worker_pool_(new WorkerPool(this)) { sInstance = this; worker_pool_->SetExecutableName(kWorkerExecutableName); worker_pool_->SetWorkerCount(QThread::idealThreadCount()); - connect(worker_pool_, SIGNAL(WorkerFailedToStart()), SLOT(WorkerFailedToStart())); + connect(worker_pool_, SIGNAL(WorkerFailedToStart()), + SLOT(WorkerFailedToStart())); } -void TagReaderClient::Start() { - worker_pool_->Start(); -} +void TagReaderClient::Start() { worker_pool_->Start(); } void TagReaderClient::WorkerFailedToStart() { qLog(Error) << "The" << kWorkerExecutableName << "executable was not found" @@ -58,7 +54,8 @@ TagReaderReply* TagReaderClient::ReadFile(const QString& filename) { return worker_pool_->SendMessageWithReply(&message); } -TagReaderReply* TagReaderClient::SaveFile(const QString& filename, const Song& metadata) { +TagReaderReply* TagReaderClient::SaveFile(const QString& filename, + const Song& metadata) { pb::tagreader::Message message; pb::tagreader::SaveFileRequest* req = message.mutable_save_file_request(); @@ -80,7 +77,7 @@ TagReaderReply* TagReaderClient::UpdateSongStatistics(const Song& metadata) { } void TagReaderClient::UpdateSongsStatistics(const SongList& songs) { - foreach (const Song& song, songs) { + for (const Song& song : songs) { TagReaderReply* reply = UpdateSongStatistics(song); connect(reply, SIGNAL(Finished(bool)), reply, SLOT(deleteLater())); } @@ -98,7 +95,7 @@ TagReaderReply* TagReaderClient::UpdateSongRating(const Song& metadata) { } void TagReaderClient::UpdateSongsRating(const SongList& songs) { - foreach (const Song& song, songs) { + for (const Song& song : songs) { TagReaderReply* reply = UpdateSongRating(song); connect(reply, SIGNAL(Finished(bool)), reply, SLOT(deleteLater())); } @@ -106,7 +103,8 @@ void TagReaderClient::UpdateSongsRating(const SongList& songs) { TagReaderReply* TagReaderClient::IsMediaFile(const QString& filename) { pb::tagreader::Message message; - pb::tagreader::IsMediaFileRequest* req = message.mutable_is_media_file_request(); + pb::tagreader::IsMediaFileRequest* req = + message.mutable_is_media_file_request(); req->set_filename(DataCommaSizeFromQString(filename)); @@ -115,18 +113,17 @@ TagReaderReply* TagReaderClient::IsMediaFile(const QString& filename) { TagReaderReply* TagReaderClient::LoadEmbeddedArt(const QString& filename) { pb::tagreader::Message message; - pb::tagreader::LoadEmbeddedArtRequest* req = message.mutable_load_embedded_art_request(); + pb::tagreader::LoadEmbeddedArtRequest* req = + message.mutable_load_embedded_art_request(); req->set_filename(DataCommaSizeFromQString(filename)); return worker_pool_->SendMessageWithReply(&message); } -TagReaderReply* TagReaderClient::ReadCloudFile(const QUrl& download_url, - const QString& title, - int size, - const QString& mime_type, - const QString& authorisation_header) { +TagReaderReply* TagReaderClient::ReadCloudFile( + const QUrl& download_url, const QString& title, int size, + const QString& mime_type, const QString& authorisation_header) { pb::tagreader::Message message; pb::tagreader::ReadCloudFileRequest* req = message.mutable_read_cloud_file_request(); @@ -151,7 +148,8 @@ void TagReaderClient::ReadFileBlocking(const QString& filename, Song* song) { reply->deleteLater(); } -bool TagReaderClient::SaveFileBlocking(const QString& filename, const Song& metadata) { +bool TagReaderClient::SaveFileBlocking(const QString& filename, + const Song& metadata) { Q_ASSERT(QThread::currentThread() != thread()); bool ret = false; diff --git a/src/core/tagreaderclient.h b/src/core/tagreaderclient.h index 20e99b44a..3fa14d975 100644 --- a/src/core/tagreaderclient.h +++ b/src/core/tagreaderclient.h @@ -31,8 +31,8 @@ class QProcess; class TagReaderClient : public QObject { Q_OBJECT -public: - TagReaderClient(QObject* parent = 0); + public: + TagReaderClient(QObject* parent = nullptr); typedef AbstractMessageHandler HandlerType; typedef HandlerType::ReplyType ReplyType; @@ -47,10 +47,8 @@ public: ReplyType* UpdateSongRating(const Song& metadata); ReplyType* IsMediaFile(const QString& filename); ReplyType* LoadEmbeddedArt(const QString& filename); - ReplyType* ReadCloudFile(const QUrl& download_url, - const QString& title, - int size, - const QString& mime_type, + ReplyType* ReadCloudFile(const QUrl& download_url, const QString& title, + int size, const QString& mime_type, const QString& authorisation_header); // Convenience functions that call the above functions and wait for a @@ -66,14 +64,14 @@ public: // TODO: Make this not a singleton static TagReaderClient* Instance() { return sInstance; } -public slots: + public slots: void UpdateSongsStatistics(const SongList& songs); void UpdateSongsRating(const SongList& songs); -private slots: + private slots: void WorkerFailedToStart(); -private: + private: static TagReaderClient* sInstance; WorkerPool* worker_pool_; @@ -82,4 +80,4 @@ private: typedef TagReaderClient::ReplyType TagReaderReply; -#endif // TAGREADERCLIENT_H +#endif // TAGREADERCLIENT_H diff --git a/src/core/taskmanager.cpp b/src/core/taskmanager.cpp index bfd853f34..e9b0a4d9c 100644 --- a/src/core/taskmanager.cpp +++ b/src/core/taskmanager.cpp @@ -17,11 +17,7 @@ #include "taskmanager.h" -TaskManager::TaskManager(QObject *parent) - : QObject(parent), - next_task_id_(1) -{ -} +TaskManager::TaskManager(QObject* parent) : QObject(parent), next_task_id_(1) {} int TaskManager::StartTask(const QString& name) { Task t; @@ -32,7 +28,7 @@ int TaskManager::StartTask(const QString& name) { { QMutexLocker l(&mutex_); - t.id = next_task_id_ ++; + t.id = next_task_id_++; tasks_[t.id] = t; } @@ -54,8 +50,7 @@ QList TaskManager::GetTasks() { void TaskManager::SetTaskBlocksLibraryScans(int id) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return; + if (!tasks_.contains(id)) return; Task& t = tasks_[id]; t.blocks_library_scans = true; @@ -68,13 +63,11 @@ void TaskManager::SetTaskBlocksLibraryScans(int id) { void TaskManager::SetTaskProgress(int id, int progress, int max) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return; + if (!tasks_.contains(id)) return; Task& t = tasks_[id]; t.progress = progress; - if (max) - t.progress_max = max; + if (max) t.progress_max = max; } emit TasksChanged(); @@ -83,13 +76,11 @@ void TaskManager::SetTaskProgress(int id, int progress, int max) { void TaskManager::IncreaseTaskProgress(int id, int progress, int max) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return; + if (!tasks_.contains(id)) return; Task& t = tasks_[id]; t.progress += progress; - if (max) - t.progress_max = max; + if (max) t.progress_max = max; } emit TasksChanged(); @@ -100,12 +91,11 @@ void TaskManager::SetTaskFinished(int id) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return; + if (!tasks_.contains(id)) return; if (tasks_[id].blocks_library_scans) { resume_library_watchers = true; - foreach (const Task& task, tasks_.values()) { + for (const Task& task : tasks_.values()) { if (task.id != id && task.blocks_library_scans) { resume_library_watchers = false; break; @@ -117,15 +107,13 @@ void TaskManager::SetTaskFinished(int id) { } emit TasksChanged(); - if (resume_library_watchers) - emit ResumeLibraryWatchers(); + if (resume_library_watchers) emit ResumeLibraryWatchers(); } int TaskManager::GetTaskProgress(int id) { { QMutexLocker l(&mutex_); - if (!tasks_.contains(id)) - return 0; + if (!tasks_.contains(id)) return 0; return tasks_[id].progress; } } diff --git a/src/core/taskmanager.h b/src/core/taskmanager.h index 4a240c1b5..36c34d677 100644 --- a/src/core/taskmanager.h +++ b/src/core/taskmanager.h @@ -25,8 +25,8 @@ class TaskManager : public QObject { Q_OBJECT -public: - TaskManager(QObject* parent = 0); + public: + TaskManager(QObject* parent = nullptr); struct Task { int id; @@ -39,13 +39,9 @@ public: class ScopedTask { public: ScopedTask(const int task_id, TaskManager* task_manager) - : task_id_(task_id), - task_manager_(task_manager) { - } + : task_id_(task_id), task_manager_(task_manager) {} - ~ScopedTask() { - task_manager_->SetTaskFinished(task_id_); - } + ~ScopedTask() { task_manager_->SetTaskFinished(task_id_); } private: const int task_id_; @@ -70,7 +66,7 @@ signals: void PauseLibraryWatchers(); void ResumeLibraryWatchers(); -private: + private: QMutex mutex_; QMap tasks_; int next_task_id_; @@ -78,4 +74,4 @@ private: Q_DISABLE_COPY(TaskManager); }; -#endif // TASKMANAGER_H +#endif // TASKMANAGER_H diff --git a/src/core/timeconstants.h b/src/core/timeconstants.h index 96242d659..8a79d5397 100644 --- a/src/core/timeconstants.h +++ b/src/core/timeconstants.h @@ -24,13 +24,13 @@ #include // Use these to convert between time units -const qint64 kMsecPerSec = 1000ll; +const qint64 kMsecPerSec = 1000ll; const qint64 kUsecPerMsec = 1000ll; -const qint64 kUsecPerSec = 1000000ll; +const qint64 kUsecPerSec = 1000000ll; const qint64 kNsecPerUsec = 1000ll; const qint64 kNsecPerMsec = 1000000ll; -const qint64 kNsecPerSec = 1000000000ll; +const qint64 kNsecPerSec = 1000000000ll; -const qint64 kSecsPerDay = 24 * 60 * 60; +const qint64 kSecsPerDay = 24 * 60 * 60; -#endif // TIMECONSTANTS_H +#endif // TIMECONSTANTS_H diff --git a/src/core/ubuntuunityhack.cpp b/src/core/ubuntuunityhack.cpp index d5c253622..f75647b2b 100644 --- a/src/core/ubuntuunityhack.cpp +++ b/src/core/ubuntuunityhack.cpp @@ -21,13 +21,11 @@ #include #include -const char* UbuntuUnityHack::kGSettingsFileName = "gsettings"; -const char* UbuntuUnityHack::kUnityPanel = "com.canonical.Unity.Panel"; +const char* UbuntuUnityHack::kGSettingsFileName = "gsettings"; +const char* UbuntuUnityHack::kUnityPanel = "com.canonical.Unity.Panel"; const char* UbuntuUnityHack::kUnitySystrayWhitelist = "systray-whitelist"; -UbuntuUnityHack::UbuntuUnityHack(QObject* parent) - : QObject(parent) -{ +UbuntuUnityHack::UbuntuUnityHack(QObject* parent) : QObject(parent) { // Check if we're on Ubuntu first. QFile lsb_release("/etc/lsb-release"); if (lsb_release.open(QIODevice::ReadOnly)) { @@ -43,8 +41,8 @@ UbuntuUnityHack::UbuntuUnityHack(QObject* parent) QProcess* get = new QProcess(this); connect(get, SIGNAL(finished(int)), SLOT(GetFinished(int))); connect(get, SIGNAL(error(QProcess::ProcessError)), SLOT(GetError())); - get->start(kGSettingsFileName, QStringList() - << "get" << kUnityPanel << kUnitySystrayWhitelist); + get->start(kGSettingsFileName, QStringList() << "get" << kUnityPanel + << kUnitySystrayWhitelist); } void UbuntuUnityHack::GetError() { @@ -85,10 +83,11 @@ void UbuntuUnityHack::GetFinished(int exit_code) { QProcess* set = new QProcess(this); connect(set, SIGNAL(finished(int)), set, SLOT(deleteLater())); - set->start(kGSettingsFileName, QStringList() - << "set" << kUnityPanel << kUnitySystrayWhitelist << whitelist); + set->start(kGSettingsFileName, QStringList() << "set" << kUnityPanel + << kUnitySystrayWhitelist + << whitelist); - qLog(Info) << "Clementine has added itself to the Unity system tray" << - "whitelist, but this won't take effect until the next time" << - "you log out and log back in."; + qLog(Info) << "Clementine has added itself to the Unity system tray" + << "whitelist, but this won't take effect until the next time" + << "you log out and log back in."; } diff --git a/src/core/ubuntuunityhack.h b/src/core/ubuntuunityhack.h index 5ce8077a1..c09e96304 100644 --- a/src/core/ubuntuunityhack.h +++ b/src/core/ubuntuunityhack.h @@ -24,17 +24,17 @@ class QProcess; class UbuntuUnityHack : public QObject { Q_OBJECT -public: - UbuntuUnityHack(QObject* parent = NULL); + public: + UbuntuUnityHack(QObject* parent = nullptr); -private slots: + private slots: void GetFinished(int exit_code); void GetError(); -private: + private: static const char* kGSettingsFileName; static const char* kUnityPanel; static const char* kUnitySystrayWhitelist; }; -#endif // UBUNTUUNITYHACK_H +#endif // UBUNTUUNITYHACK_H diff --git a/src/core/urlhandler.cpp b/src/core/urlhandler.cpp index c8e78a50e..e238c0fbb 100644 --- a/src/core/urlhandler.cpp +++ b/src/core/urlhandler.cpp @@ -17,17 +17,13 @@ #include "urlhandler.h" -UrlHandler::LoadResult::LoadResult( - const QUrl& original_url, Type type, const QUrl& media_url, qint64 length_nanosec) - : original_url_(original_url), type_(type), media_url_(media_url), length_nanosec_(length_nanosec) -{ -} +UrlHandler::LoadResult::LoadResult(const QUrl& original_url, Type type, + const QUrl& media_url, qint64 length_nanosec) + : original_url_(original_url), + type_(type), + media_url_(media_url), + length_nanosec_(length_nanosec) {} -UrlHandler::UrlHandler(QObject* parent) - : QObject(parent) -{ -} +UrlHandler::UrlHandler(QObject* parent) : QObject(parent) {} -QIcon UrlHandler::icon() const { - return QIcon(); -} +QIcon UrlHandler::icon() const { return QIcon(); } diff --git a/src/core/urlhandler.h b/src/core/urlhandler.h index 157e76ced..03e77fc04 100644 --- a/src/core/urlhandler.h +++ b/src/core/urlhandler.h @@ -25,8 +25,8 @@ class UrlHandler : public QObject { Q_OBJECT -public: - UrlHandler(QObject* parent = 0); + public: + UrlHandler(QObject* parent = nullptr); // The URL scheme that this handler handles. virtual QString scheme() const = 0; @@ -49,10 +49,8 @@ public: TrackAvailable, }; - LoadResult(const QUrl& original_url = QUrl(), - Type type = NoMoreTracks, - const QUrl& media_url = QUrl(), - qint64 length_nanosec_ = -1); + LoadResult(const QUrl& original_url = QUrl(), Type type = NoMoreTracks, + const QUrl& media_url = QUrl(), qint64 length_nanosec_ = -1); // The url that the playlist item has in Url(). // Might be something unplayable like lastfm://... @@ -75,12 +73,13 @@ public: // get another track to play. virtual LoadResult LoadNext(const QUrl& url) { return LoadResult(url); } - // Functions to be warned when something happen to a track handled by UrlHandler. - virtual void TrackAboutToEnd() { }; - virtual void TrackSkipped() { }; + // Functions to be warned when something happen to a track handled by + // UrlHandler. + virtual void TrackAboutToEnd() {}; + virtual void TrackSkipped() {}; signals: void AsyncLoadComplete(const UrlHandler::LoadResult& result); }; -#endif // URLHANDLER_H +#endif // URLHANDLER_H diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 6ebfe849b..1cf6abd68 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -19,7 +19,7 @@ #include -#include +#include #include #include @@ -45,27 +45,28 @@ #include "sha2.h" #if defined(Q_OS_UNIX) -# include +#include #elif defined(Q_OS_WIN32) -# include -# include +#include +#include #endif #ifdef Q_OS_LINUX -# include +#include +#include #endif #ifdef Q_OS_DARWIN -# include +#include #endif #ifdef Q_OS_DARWIN -# include "core/mac_startup.h" -# include "core/mac_utilities.h" -# include "core/scoped_cftyperef.h" -# include "CoreServices/CoreServices.h" -# include "IOKit/ps/IOPowerSources.h" -# include "IOKit/ps/IOPSKeys.h" -# include +#include "core/mac_startup.h" +#include "core/mac_utilities.h" +#include "core/scoped_cftyperef.h" +#include "CoreServices/CoreServices.h" +#include "IOKit/ps/IOPowerSources.h" +#include "IOKit/ps/IOPSKeys.h" +#include #endif namespace Utilities { @@ -83,7 +84,7 @@ QString PrettyTime(int seconds) { // negative times. seconds = qAbs(seconds); - int hours = seconds / (60*60); + int hours = seconds / (60 * 60); int minutes = (seconds / 60) % 60; seconds %= 60; @@ -101,14 +102,13 @@ QString PrettyTimeNanosec(qint64 nanoseconds) { } QString WordyTime(quint64 seconds) { - quint64 days = seconds / (60*60*24); + quint64 days = seconds / (60 * 60 * 24); // TODO: Make the plural rules translatable QStringList parts; - if (days) - parts << (days == 1 ? tr("1 day") : tr("%1 days").arg(days)); - parts << PrettyTime(seconds - days*60*60*24); + if (days) parts << (days == 1 ? tr("1 day") : tr("%1 days").arg(days)); + parts << PrettyTime(seconds - days * 60 * 60 * 24); return parts.join(" "); } @@ -121,14 +121,12 @@ QString Ago(int seconds_since_epoch, const QLocale& locale) { const QDateTime now = QDateTime::currentDateTime(); const QDateTime then = QDateTime::fromTime_t(seconds_since_epoch); const int days_ago = then.date().daysTo(now.date()); - const QString time = then.time().toString(locale.timeFormat(QLocale::ShortFormat)); + const QString time = + then.time().toString(locale.timeFormat(QLocale::ShortFormat)); - if (days_ago == 0) - return tr("Today") + " " + time; - if (days_ago == 1) - return tr("Yesterday") + " " + time; - if (days_ago <= 7) - return tr("%1 days ago").arg(days_ago); + if (days_ago == 0) return tr("Today") + " " + time; + if (days_ago == 1) return tr("Yesterday") + " " + time; + if (days_ago <= 7) return tr("%1 days ago").arg(days_ago); return then.date().toString(locale.dateFormat(QLocale::ShortFormat)); } @@ -137,16 +135,11 @@ QString PrettyFutureDate(const QDate& date) { const QDate now = QDate::currentDate(); const int delta_days = now.daysTo(date); - if (delta_days < 0) - return QString(); - if (delta_days == 0) - return tr("Today"); - if (delta_days == 1) - return tr("Tomorrow"); - if (delta_days <= 7) - return tr("In %1 days").arg(delta_days); - if (delta_days <= 14) - return tr("Next week"); + if (delta_days < 0) return QString(); + if (delta_days == 0) return tr("Today"); + if (delta_days == 1) return tr("Tomorrow"); + if (delta_days <= 7) return tr("In %1 days").arg(delta_days); + if (delta_days <= 14) return tr("Next week"); return tr("In %1 weeks").arg(delta_days / 7); } @@ -157,12 +150,12 @@ QString PrettySize(quint64 bytes) { if (bytes > 0) { if (bytes <= 1000) ret = QString::number(bytes) + " bytes"; - else if (bytes <= 1000*1000) + else if (bytes <= 1000 * 1000) ret.sprintf("%.1f KB", float(bytes) / 1000); - else if (bytes <= 1000*1000*1000) - ret.sprintf("%.1f MB", float(bytes) / (1000*1000)); + else if (bytes <= 1000 * 1000 * 1000) + ret.sprintf("%.1f MB", float(bytes) / (1000 * 1000)); else - ret.sprintf("%.1f GB", float(bytes) / (1000*1000*1000)); + ret.sprintf("%.1f GB", float(bytes) / (1000 * 1000 * 1000)); } return ret; } @@ -174,8 +167,9 @@ quint64 FileSystemCapacity(const QString& path) { return quint64(fs_info.f_blocks) * quint64(fs_info.f_bsize); #elif defined(Q_OS_WIN32) _ULARGE_INTEGER ret; - if (GetDiskFreeSpaceEx(QDir::toNativeSeparators(path).toLocal8Bit().constData(), - NULL, &ret, NULL) != 0) + if (GetDiskFreeSpaceEx( + QDir::toNativeSeparators(path).toLocal8Bit().constData(), nullptr, + &ret, nullptr) != 0) return ret.QuadPart; #endif @@ -189,8 +183,9 @@ quint64 FileSystemFreeSpace(const QString& path) { return quint64(fs_info.f_bavail) * quint64(fs_info.f_bsize); #elif defined(Q_OS_WIN32) _ULARGE_INTEGER ret; - if (GetDiskFreeSpaceEx(QDir::toNativeSeparators(path).toLocal8Bit().constData(), - &ret, NULL, NULL) != 0) + if (GetDiskFreeSpaceEx( + QDir::toNativeSeparators(path).toLocal8Bit().constData(), &ret, + nullptr, nullptr) != 0) return ret.QuadPart; #endif @@ -201,8 +196,7 @@ QString MakeTempDir(const QString template_name) { QString path; { QTemporaryFile tempfile; - if (!template_name.isEmpty()) - tempfile.setFileTemplate(template_name); + if (!template_name.isEmpty()) tempfile.setFileTemplate(template_name); tempfile.open(); path = tempfile.fileName(); @@ -225,15 +219,24 @@ QString GetTemporaryFileName() { return file; } -void RemoveRecursive(const QString& path) { +bool RemoveRecursive(const QString& path) { QDir dir(path); - foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Hidden)) - RemoveRecursive(path + "/" + child); + for (const QString& child : + dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Hidden)) { + if (!RemoveRecursive(path + "/" + child)) + return false; + } - foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden)) - QFile::remove(path + "/" + child); + for (const QString& child : + dir.entryList(QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden)) { + if (!QFile::remove(path + "/" + child)) + return false; + } - dir.rmdir(path); + if (!dir.rmdir(path)) + return false; + + return true; } bool CopyRecursive(const QString& source, const QString& destination) { @@ -243,16 +246,20 @@ bool CopyRecursive(const QString& source, const QString& destination) { QDir().mkpath(dest_path); QDir dir(source); - foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) { + for (const QString& child : + dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) { if (!CopyRecursive(source + "/" + child, dest_path)) { - qLog(Warning) << "Failed to copy dir" << source + "/" + child << "to" << dest_path; + qLog(Warning) << "Failed to copy dir" << source + "/" + child << "to" + << dest_path; return false; } } - foreach (const QString& child, dir.entryList(QDir::NoDotAndDotDot | QDir::Files)) { + for (const QString& child : + dir.entryList(QDir::NoDotAndDotDot | QDir::Files)) { if (!QFile::copy(source + "/" + child, dest_path + "/" + child)) { - qLog(Warning) << "Failed to copy file" << source + "/" + child << "to" << dest_path; + qLog(Warning) << "Failed to copy file" << source + "/" + child << "to" + << dest_path; return false; } } @@ -260,21 +267,18 @@ bool CopyRecursive(const QString& source, const QString& destination) { } bool Copy(QIODevice* source, QIODevice* destination) { - if (!source->open(QIODevice::ReadOnly)) - return false; + if (!source->open(QIODevice::ReadOnly)) return false; - if (!destination->open(QIODevice::WriteOnly)) - return false; + if (!destination->open(QIODevice::WriteOnly)) return false; const qint64 bytes = source->size(); - boost::scoped_array data(new char[bytes]); + std::unique_ptr data(new char[bytes]); qint64 pos = 0; qint64 bytes_read; do { bytes_read = source->read(data.get() + pos, bytes - pos); - if (bytes_read == -1) - return false; + if (bytes_read == -1) return false; pos += bytes_read; } while (bytes_read > 0 && pos != bytes); @@ -283,8 +287,7 @@ bool Copy(QIODevice* source, QIODevice* destination) { qint64 bytes_written; do { bytes_written = destination->write(data.get() + pos, bytes - pos); - if (bytes_written == -1) - return false; + if (bytes_written == -1) return false; pos += bytes_written; } while (bytes_written > 0 && pos != bytes); @@ -294,7 +297,10 @@ bool Copy(QIODevice* source, QIODevice* destination) { QString ColorToRgba(const QColor& c) { return QString("rgba(%1, %2, %3, %4)") - .arg(c.red()).arg(c.green()).arg(c.blue()).arg(c.alpha()); + .arg(c.red()) + .arg(c.green()) + .arg(c.blue()) + .arg(c.alpha()); } QString GetConfigPath(ConfigPath config) { @@ -303,30 +309,31 @@ QString GetConfigPath(ConfigPath config) { if (Application::kIsPortable) { return QString("%1/data").arg(QCoreApplication::applicationDirPath()); } - #ifdef Q_OS_DARWIN - return mac::GetApplicationSupportPath() + "/" + QCoreApplication::organizationName(); - #else - return QString("%1/.config/%2").arg(QDir::homePath(), QCoreApplication::organizationName()); - #endif - } - break; +#ifdef Q_OS_DARWIN + return mac::GetApplicationSupportPath() + "/" + + QCoreApplication::organizationName(); +#else + return QString("%1/.config/%2") + .arg(QDir::homePath(), QCoreApplication::organizationName()); +#endif + } break; case Path_CacheRoot: { if (Application::kIsPortable) { return GetConfigPath(Path_Root) + "/cache"; } - #if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) - char* xdg = getenv("XDG_CACHE_HOME"); - if (!xdg || !*xdg) { - return QString("%1/.cache/%2").arg(QDir::homePath(), QCoreApplication::organizationName()); - } else { - return QString("%1/%2").arg(xdg, QCoreApplication::organizationName()); - } - #else - return GetConfigPath(Path_Root); - #endif - } - break; +#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) + char* xdg = getenv("XDG_CACHE_HOME"); + if (!xdg || !*xdg) { + return QString("%1/.cache/%2") + .arg(QDir::homePath(), QCoreApplication::organizationName()); + } else { + return QString("%1/%2").arg(xdg, QCoreApplication::organizationName()); + } +#else + return GetConfigPath(Path_Root); +#endif + } break; case Path_AlbumCovers: return GetConfigPath(Path_Root) + "/albumcovers"; @@ -339,14 +346,15 @@ QString GetConfigPath(ConfigPath config) { case Path_GstreamerRegistry: return GetConfigPath(Path_Root) + - QString("/gst-registry-%1-bin").arg(QCoreApplication::applicationVersion()); + QString("/gst-registry-%1-bin") + .arg(QCoreApplication::applicationVersion()); case Path_DefaultMusicLibrary: - #ifdef Q_OS_DARWIN - return mac::GetMusicDirectory(); - #else - return QDir::homePath(); - #endif +#ifdef Q_OS_DARWIN + return mac::GetMusicDirectory(); +#else + return QDir::homePath(); +#endif case Path_LocalSpotifyBlob: return GetConfigPath(Path_Root) + "/spotifyblob"; @@ -372,26 +380,25 @@ void RevealFileInFinder(QString const& path) { #ifdef Q_OS_WIN void ShowFileInExplorer(QString const& path) { - QProcess::execute("explorer.exe", QStringList() << "/select," - << QDir::toNativeSeparators(path)); + QProcess::execute("explorer.exe", QStringList() + << "/select," + << QDir::toNativeSeparators(path)); } #endif void OpenInFileBrowser(const QList& urls) { QSet dirs; - foreach (const QUrl& url, urls) { + for (const QUrl& url : urls) { if (url.scheme() != "file") { continue; } QString path = url.toLocalFile(); - if (!QFile::exists(path)) - continue; + if (!QFile::exists(path)) continue; const QString directory = QFileInfo(path).dir().path(); - if (dirs.contains(directory)) - continue; + if (dirs.contains(directory)) continue; dirs.insert(directory); qLog(Debug) << path; #ifdef Q_OS_DARWIN @@ -406,28 +413,29 @@ void OpenInFileBrowser(const QList& urls) { } } -QByteArray Hmac(const QByteArray& key, const QByteArray& data, HashFunction method) { - const int kBlockSize = 64; // bytes +QByteArray Hmac(const QByteArray& key, const QByteArray& data, + HashFunction method) { + const int kBlockSize = 64; // bytes Q_ASSERT(key.length() <= kBlockSize); QByteArray inner_padding(kBlockSize, char(0x36)); QByteArray outer_padding(kBlockSize, char(0x5c)); - for (int i=0 ; i(ret.data()), &context); + clementine_sha2::SHA256_Final(reinterpret_cast(ret.data()), + &context); return ret; } // File must not be open and will be closed afterwards! -QByteArray Sha1File(QFile &file) { +QByteArray Sha1File(QFile& file) { file.open(QIODevice::ReadOnly); QCryptographicHash hash(QCryptographicHash::Sha1); QByteArray data; - while(!file.atEnd()) { - data = file.read(1000000); // 1 mib + while (!file.atEnd()) { + data = file.read(1000000); // 1 mib hash.addData(data.data(), data.length()); data.clear(); } @@ -484,8 +492,7 @@ QByteArray Sha1CoverHash(const QString& artist, const QString& album) { } QString PrettySize(const QSize& size) { - return QString::number(size.width()) + "x" + - QString::number(size.height()); + return QString::number(size.width()) + "x" + QString::number(size.height()); } void ForwardMouseEvent(const QMouseEvent* e, QWidget* target) { @@ -514,9 +521,14 @@ void ConsumeCurrentElement(QXmlStreamReader* reader) { int level = 1; while (level != 0 && !reader->atEnd()) { switch (reader->readNext()) { - case QXmlStreamReader::StartElement: ++level; break; - case QXmlStreamReader::EndElement: --level; break; - default: break; + case QXmlStreamReader::StartElement: + ++level; + break; + case QXmlStreamReader::EndElement: + --level; + break; + default: + break; } } } @@ -541,37 +553,36 @@ QDateTime ParseRFC822DateTime(const QString& text) { // This sucks but we need it because some podcasts don't quite follow the // spec properly - they might have 1-digit hour numbers for example. - QRegExp re("([a-zA-Z]{3}),? (\\d{1,2}) ([a-zA-Z]{3}) (\\d{4}) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})"); - if (re.indexIn(text) == -1) - return QDateTime(); + QRegExp re( + "([a-zA-Z]{3}),? (\\d{1,2}) ([a-zA-Z]{3}) (\\d{4}) " + "(\\d{1,2}):(\\d{1,2}):(\\d{1,2})"); + if (re.indexIn(text) == -1) return QDateTime(); return QDateTime( - QDate::fromString(QString("%1 %2 %3 %4").arg(re.cap(1), re.cap(3), re.cap(2), re.cap(4)), Qt::TextDate), - QTime(re.cap(5).toInt(), re.cap(6).toInt(), re.cap(7).toInt())); + QDate::fromString(QString("%1 %2 %3 %4") + .arg(re.cap(1), re.cap(3), re.cap(2), re.cap(4)), + Qt::TextDate), + QTime(re.cap(5).toInt(), re.cap(6).toInt(), re.cap(7).toInt())); } const char* EnumToString(const QMetaObject& meta, const char* name, int value) { int index = meta.indexOfEnumerator(name); - if (index == -1) - return "[UnknownEnum]"; + if (index == -1) return "[UnknownEnum]"; QMetaEnum metaenum = meta.enumerator(index); const char* result = metaenum.valueToKey(value); - if (result == 0) - return "[UnknownEnumValue]"; + if (result == 0) return "[UnknownEnumValue]"; return result; } QStringList Prepend(const QString& text, const QStringList& list) { QStringList ret(list); - for (int i=0 ; i power_sources(IOPSCopyPowerSourcesInfo()); ScopedCFTypeRef power_source_list( IOPSCopyPowerSourcesList(power_sources.get())); for (CFIndex i = 0; i < CFArrayGetCount(power_source_list.get()); ++i) { CFTypeRef ps = CFArrayGetValueAtIndex(power_source_list.get(), i); - CFDictionaryRef description = IOPSGetPowerSourceDescription( - power_sources.get(), ps); + CFDictionaryRef description = + IOPSGetPowerSourceDescription(power_sources.get(), ps); if (CFDictionaryContainsKey(description, CFSTR(kIOPSBatteryHealthKey))) { return true; @@ -636,8 +649,9 @@ bool IsLaptop() { QString SystemLanguageName() { #if QT_VERSION >= 0x040800 - QString system_language = QLocale::system().uiLanguages().empty() ? - QLocale::system().name() : QLocale::system().uiLanguages().first(); + QString system_language = QLocale::system().uiLanguages().empty() + ? QLocale::system().name() + : QLocale::system().uiLanguages().first(); // uiLanguages returns strings with "-" as separators for language/region; // however QTranslator needs "_" separators system_language.replace("-", "_"); @@ -648,9 +662,8 @@ QString SystemLanguageName() { return system_language; } -bool UrlOnSameDriveAsClementine(const QUrl &url) { - if (url.scheme() != "file") - return false; +bool UrlOnSameDriveAsClementine(const QUrl& url) { + if (url.scheme() != "file") return false; #ifdef Q_OS_WIN QUrl appUrl = QUrl::fromLocalFile(QCoreApplication::applicationDirPath()); @@ -675,17 +688,15 @@ QString PathWithoutFilenameExtension(const QString& filename) { return filename; } -QString FiddleFileExtension(const QString& filename, const QString& new_extension) { +QString FiddleFileExtension(const QString& filename, + const QString& new_extension) { return PathWithoutFilenameExtension(filename) + "." + new_extension; } } // namespace Utilities - ScopedWCharArray::ScopedWCharArray(const QString& str) - : chars_(str.length()), - data_(new wchar_t[chars_ + 1]) -{ + : chars_(str.length()), data_(new wchar_t[chars_ + 1]) { str.toWCharArray(data_.get()); data_[chars_] = '\0'; } diff --git a/src/core/utilities.h b/src/core/utilities.h index b71225bf0..9d32c8c1d 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -18,6 +18,8 @@ #ifndef UTILITIES_H #define UTILITIES_H +#include + #include #include #include @@ -26,137 +28,127 @@ #include #include -#include - class QIODevice; class QMouseEvent; class QXmlStreamReader; struct QMetaObject; namespace Utilities { - QString PrettyTime(int seconds); - QString PrettyTimeDelta(int seconds); - QString PrettyTimeNanosec(qint64 nanoseconds); - QString PrettySize(quint64 bytes); - QString PrettySize(const QSize& size); - QString WordyTime(quint64 seconds); - QString WordyTimeNanosec(qint64 nanoseconds); - QString Ago(int seconds_since_epoch, const QLocale& locale); - QString PrettyFutureDate(const QDate& date); +QString PrettyTime(int seconds); +QString PrettyTimeDelta(int seconds); +QString PrettyTimeNanosec(qint64 nanoseconds); +QString PrettySize(quint64 bytes); +QString PrettySize(const QSize& size); +QString WordyTime(quint64 seconds); +QString WordyTimeNanosec(qint64 nanoseconds); +QString Ago(int seconds_since_epoch, const QLocale& locale); +QString PrettyFutureDate(const QDate& date); - QString ColorToRgba(const QColor& color); +QString ColorToRgba(const QColor& color); - quint64 FileSystemCapacity(const QString& path); - quint64 FileSystemFreeSpace(const QString& path); +quint64 FileSystemCapacity(const QString& path); +quint64 FileSystemFreeSpace(const QString& path); - QString MakeTempDir(const QString template_name = QString()); - QString GetTemporaryFileName(); - void RemoveRecursive(const QString& path); - bool CopyRecursive(const QString& source, const QString& destination); - bool Copy(QIODevice* source, QIODevice* destination); +QString MakeTempDir(const QString template_name = QString()); +QString GetTemporaryFileName(); +bool RemoveRecursive(const QString& path); +bool CopyRecursive(const QString& source, const QString& destination); +bool Copy(QIODevice* source, QIODevice* destination); - void OpenInFileBrowser(const QList& filenames); +void OpenInFileBrowser(const QList& filenames); - enum HashFunction { - Md5_Algo, - Sha256_Algo, - Sha1_Algo, - }; - QByteArray Hmac(const QByteArray& key, const QByteArray& data, HashFunction algo); - QByteArray HmacMd5(const QByteArray& key, const QByteArray& data); - QByteArray HmacSha256(const QByteArray& key, const QByteArray& data); - QByteArray HmacSha1(const QByteArray& key, const QByteArray& data); - QByteArray Sha256(const QByteArray& data); - QByteArray Sha1File(QFile& file); - QByteArray Sha1CoverHash(const QString& artist, const QString& album); +enum HashFunction { Md5_Algo, Sha256_Algo, Sha1_Algo, }; +QByteArray Hmac(const QByteArray& key, const QByteArray& data, + HashFunction algo); +QByteArray HmacMd5(const QByteArray& key, const QByteArray& data); +QByteArray HmacSha256(const QByteArray& key, const QByteArray& data); +QByteArray HmacSha1(const QByteArray& key, const QByteArray& data); +QByteArray Sha256(const QByteArray& data); +QByteArray Sha1File(QFile& file); +QByteArray Sha1CoverHash(const QString& artist, const QString& album); +// Picks an unused ephemeral port number. Doesn't hold the port open so +// there's the obvious race condition +quint16 PickUnusedPort(); - // Picks an unused ephemeral port number. Doesn't hold the port open so - // there's the obvious race condition - quint16 PickUnusedPort(); +// Forwards a mouse event to a different widget, remapping the event's widget +// coordinates relative to those of the target widget. +void ForwardMouseEvent(const QMouseEvent* e, QWidget* target); +// Checks if the mouse event was inside the widget's rectangle. +bool IsMouseEventInWidget(const QMouseEvent* e, const QWidget* widget); - // Forwards a mouse event to a different widget, remapping the event's widget - // coordinates relative to those of the target widget. - void ForwardMouseEvent(const QMouseEvent* e, QWidget* target); +// Reads all children of the current element, and returns with the stream +// reader either on the EndElement for the current element, or the end of the +// file - whichever came first. +void ConsumeCurrentElement(QXmlStreamReader* reader); - // Checks if the mouse event was inside the widget's rectangle. - bool IsMouseEventInWidget(const QMouseEvent* e, const QWidget* widget); +// Advances the stream reader until it finds an element with the given name. +// Returns false if the end of the document was reached before finding a +// matching element. +bool ParseUntilElement(QXmlStreamReader* reader, const QString& name); - // Reads all children of the current element, and returns with the stream - // reader either on the EndElement for the current element, or the end of the - // file - whichever came first. - void ConsumeCurrentElement(QXmlStreamReader* reader); +// Parses a string containing an RFC822 time and date. +QDateTime ParseRFC822DateTime(const QString& text); - // Advances the stream reader until it finds an element with the given name. - // Returns false if the end of the document was reached before finding a - // matching element. - bool ParseUntilElement(QXmlStreamReader* reader, const QString& name); +// Replaces some HTML entities with their normal characters. +QString DecodeHtmlEntities(const QString& text); - // Parses a string containing an RFC822 time and date. - QDateTime ParseRFC822DateTime(const QString& text); +// Shortcut for getting a Qt-aware enum value as a string. +// Pass in the QMetaObject of the class that owns the enum, the string name of +// the enum and a valid value from that enum. +const char* EnumToString(const QMetaObject& meta, const char* name, int value); - // Replaces some HTML entities with their normal characters. - QString DecodeHtmlEntities(const QString& text); +QStringList Prepend(const QString& text, const QStringList& list); +QStringList Updateify(const QStringList& list); - // Shortcut for getting a Qt-aware enum value as a string. - // Pass in the QMetaObject of the class that owns the enum, the string name of - // the enum and a valid value from that enum. - const char* EnumToString(const QMetaObject& meta, const char* name, int value); +// Check if two urls are on the same drive (mainly for windows) +bool UrlOnSameDriveAsClementine(const QUrl& url); - QStringList Prepend(const QString& text, const QStringList& list); - QStringList Updateify(const QStringList& list); +// Get relative path to clementine binary +QUrl GetRelativePathToClementineBin(const QUrl& url); - // Check if two urls are on the same drive (mainly for windows) - bool UrlOnSameDriveAsClementine(const QUrl& url); +// Get the path without the filename extension +QString PathWithoutFilenameExtension(const QString& filename); +QString FiddleFileExtension(const QString& filename, + const QString& new_extension); - // Get relative path to clementine binary - QUrl GetRelativePathToClementineBin(const QUrl& url); +enum ConfigPath { + Path_Root, + Path_AlbumCovers, + Path_NetworkCache, + Path_GstreamerRegistry, + Path_DefaultMusicLibrary, + Path_LocalSpotifyBlob, + Path_MoodbarCache, + Path_CacheRoot, +}; +QString GetConfigPath(ConfigPath config); - // Get the path without the filename extension - QString PathWithoutFilenameExtension(const QString& filename); - QString FiddleFileExtension(const QString& filename, const QString& new_extension); +// Returns the minor version of OS X (ie. 6 for Snow Leopard, 7 for Lion). +qint32 GetMacVersion(); - enum ConfigPath { - Path_Root, - Path_AlbumCovers, - Path_NetworkCache, - Path_GstreamerRegistry, - Path_DefaultMusicLibrary, - Path_LocalSpotifyBlob, - Path_MoodbarCache, - Path_CacheRoot, - }; - QString GetConfigPath(ConfigPath config); +// Borrowed from schedutils +enum IoPriority { + IOPRIO_CLASS_NONE = 0, + IOPRIO_CLASS_RT, + IOPRIO_CLASS_BE, + IOPRIO_CLASS_IDLE, +}; +enum { IOPRIO_WHO_PROCESS = 1, IOPRIO_WHO_PGRP, IOPRIO_WHO_USER, }; +static const int IOPRIO_CLASS_SHIFT = 13; - // Returns the minor version of OS X (ie. 6 for Snow Leopard, 7 for Lion). - qint32 GetMacVersion(); +int SetThreadIOPriority(IoPriority priority); +int GetThreadId(); - // Borrowed from schedutils - enum IoPriority { - IOPRIO_CLASS_NONE = 0, - IOPRIO_CLASS_RT, - IOPRIO_CLASS_BE, - IOPRIO_CLASS_IDLE, - }; - enum { - IOPRIO_WHO_PROCESS = 1, - IOPRIO_WHO_PGRP, - IOPRIO_WHO_USER, - }; - static const int IOPRIO_CLASS_SHIFT = 13; +// Returns true if this machine has a battery. +bool IsLaptop(); - int SetThreadIOPriority(IoPriority priority); - int GetThreadId(); - - // Returns true if this machine has a battery. - bool IsLaptop(); - - QString SystemLanguageName(); +QString SystemLanguageName(); } class ScopedWCharArray { -public: + public: ScopedWCharArray(const QString& str); QString ToString() const { return QString::fromWCharArray(data_.get()); } @@ -167,11 +159,11 @@ public: int characters() const { return chars_; } int bytes() const { return (chars_ + 1) * sizeof(wchar_t); } -private: + private: Q_DISABLE_COPY(ScopedWCharArray); int chars_; - boost::scoped_array data_; + std::unique_ptr data_; }; -#endif // UTILITIES_H +#endif // UTILITIES_H diff --git a/src/covers/albumcoverexporter.cpp b/src/covers/albumcoverexporter.cpp index 1e5255f01..0e283c661 100644 --- a/src/covers/albumcoverexporter.cpp +++ b/src/covers/albumcoverexporter.cpp @@ -29,12 +29,12 @@ AlbumCoverExporter::AlbumCoverExporter(QObject* parent) thread_pool_(new QThreadPool(this)), exported_(0), skipped_(0), - all_(0) -{ + all_(0) { thread_pool_->setMaxThreadCount(kMaxConcurrentRequests); } -void AlbumCoverExporter::SetDialogResult(const AlbumCoverExport::DialogResult &dialog_result) { +void AlbumCoverExporter::SetDialogResult( + const AlbumCoverExport::DialogResult& dialog_result) { dialog_result_ = dialog_result; } @@ -43,9 +43,7 @@ void AlbumCoverExporter::AddExportRequest(Song song) { all_ = requests_.count(); } -void AlbumCoverExporter::Cancel() { - requests_.clear(); -} +void AlbumCoverExporter::Cancel() { requests_.clear(); } void AlbumCoverExporter::StartExporting() { exported_ = 0; @@ -54,8 +52,8 @@ void AlbumCoverExporter::StartExporting() { } void AlbumCoverExporter::AddJobsToPool() { - while (!requests_.isEmpty() - && thread_pool_->activeThreadCount() < thread_pool_->maxThreadCount()) { + while (!requests_.isEmpty() && + thread_pool_->activeThreadCount() < thread_pool_->maxThreadCount()) { CoverExportRunnable* runnable = requests_.dequeue(); connect(runnable, SIGNAL(CoverExported()), SLOT(CoverExported())); diff --git a/src/covers/albumcoverexporter.h b/src/covers/albumcoverexporter.h index 53593bf2e..7626fd934 100644 --- a/src/covers/albumcoverexporter.h +++ b/src/covers/albumcoverexporter.h @@ -32,7 +32,7 @@ class AlbumCoverExporter : public QObject { Q_OBJECT public: - AlbumCoverExporter(QObject* parent = 0); + AlbumCoverExporter(QObject* parent = nullptr); virtual ~AlbumCoverExporter() {} static const int kMaxConcurrentRequests; @@ -44,7 +44,7 @@ class AlbumCoverExporter : public QObject { int request_count() { return requests_.size(); } - signals: +signals: void AlbumCoversExportUpdate(int exported, int skipped, int all); private slots: diff --git a/src/covers/albumcoverfetcher.cpp b/src/covers/albumcoverfetcher.cpp index 7418d78fc..430946d7f 100644 --- a/src/covers/albumcoverfetcher.cpp +++ b/src/covers/albumcoverfetcher.cpp @@ -23,15 +23,14 @@ const int AlbumCoverFetcher::kMaxConcurrentRequests = 5; - AlbumCoverFetcher::AlbumCoverFetcher(CoverProviders* cover_providers, - QObject* parent, QNetworkAccessManager* network) + QObject* parent, + QNetworkAccessManager* network) : QObject(parent), cover_providers_(cover_providers), network_(network ? network : new NetworkAccessManager(this)), next_id_(0), - request_starter_(new QTimer(this)) -{ + request_starter_(new QTimer(this)) { request_starter_->setInterval(1000); connect(request_starter_, SIGNAL(timeout()), SLOT(StartRequests())); } @@ -42,7 +41,7 @@ quint64 AlbumCoverFetcher::FetchAlbumCover(const QString& artist, request.artist = artist; request.album = album; request.search = false; - request.id = next_id_ ++; + request.id = next_id_++; AddRequest(request); return request.id; @@ -54,7 +53,7 @@ quint64 AlbumCoverFetcher::SearchForCovers(const QString& artist, request.artist = artist; request.album = album; request.search = true; - request.id = next_id_ ++; + request.id = next_id_++; AddRequest(request); return request.id; @@ -63,17 +62,15 @@ quint64 AlbumCoverFetcher::SearchForCovers(const QString& artist, void AlbumCoverFetcher::AddRequest(const CoverSearchRequest& req) { queued_requests_.enqueue(req); - if (!request_starter_->isActive()) - request_starter_->start(); + if (!request_starter_->isActive()) request_starter_->start(); - if (active_requests_.size() < kMaxConcurrentRequests) - StartRequests(); + if (active_requests_.size() < kMaxConcurrentRequests) StartRequests(); } void AlbumCoverFetcher::Clear() { queued_requests_.clear(); - foreach (AlbumCoverFetcherSearch* search, active_requests_.values()) { + for (AlbumCoverFetcherSearch* search : active_requests_.values()) { search->Cancel(); search->deleteLater(); } @@ -91,34 +88,35 @@ void AlbumCoverFetcher::StartRequests() { CoverSearchRequest request = queued_requests_.dequeue(); - // search objects are this fetcher's children so worst case scenario - they get + // search objects are this fetcher's children so worst case scenario - they + // get // deleted with it - AlbumCoverFetcherSearch* search = new AlbumCoverFetcherSearch( - request, network_, this); + AlbumCoverFetcherSearch* search = + new AlbumCoverFetcherSearch(request, network_, this); active_requests_.insert(request.id, search); connect(search, SIGNAL(SearchFinished(quint64, CoverSearchResults)), - SLOT(SingleSearchFinished(quint64, CoverSearchResults))); + SLOT(SingleSearchFinished(quint64, CoverSearchResults))); connect(search, SIGNAL(AlbumCoverFetched(quint64, const QImage&)), - SLOT(SingleCoverFetched(quint64, const QImage&))); + SLOT(SingleCoverFetched(quint64, const QImage&))); search->Start(cover_providers_); } } -void AlbumCoverFetcher::SingleSearchFinished(quint64 request_id, CoverSearchResults results) { +void AlbumCoverFetcher::SingleSearchFinished(quint64 request_id, + CoverSearchResults results) { AlbumCoverFetcherSearch* search = active_requests_.take(request_id); - if (!search) - return; + if (!search) return; search->deleteLater(); emit SearchFinished(request_id, results, search->statistics()); } -void AlbumCoverFetcher::SingleCoverFetched(quint64 request_id, const QImage& image) { +void AlbumCoverFetcher::SingleCoverFetched(quint64 request_id, + const QImage& image) { AlbumCoverFetcherSearch* search = active_requests_.take(request_id); - if (!search) - return; + if (!search) return; search->deleteLater(); emit AlbumCoverFetched(request_id, image, search->statistics()); diff --git a/src/covers/albumcoverfetcher.h b/src/covers/albumcoverfetcher.h index a8a8dcc2f..217904bd8 100644 --- a/src/covers/albumcoverfetcher.h +++ b/src/covers/albumcoverfetcher.h @@ -29,8 +29,6 @@ #include #include -#include - class QNetworkReply; class QString; @@ -38,7 +36,7 @@ class AlbumCoverFetcherSearch; class CoverProviders; // This class represents a single search-for-cover request. It identifies -// and describes the request. +// and describes the request. struct CoverSearchRequest { // an unique (for one AlbumCoverFetcher) request identifier quint64 id; @@ -52,7 +50,8 @@ struct CoverSearchRequest { bool search; }; -// This structure represents a single result of some album's cover search request. +// This structure represents a single result of some album's cover search +// request. // It contains an URL that leads to a found cover plus its description (usually // the "artist - album" string). struct CoverSearchResult { @@ -68,21 +67,19 @@ struct CoverSearchResult { }; Q_DECLARE_METATYPE(CoverSearchResult); - // This is a complete result of a single search request (a list of results, each // describing one image, actually). typedef QList CoverSearchResults; Q_DECLARE_METATYPE(QList); - // This class searches for album covers for a given query or artist/album and // returns URLs. It's NOT thread-safe. class AlbumCoverFetcher : public QObject { Q_OBJECT public: - AlbumCoverFetcher(CoverProviders* cover_providers, - QObject* parent = 0, QNetworkAccessManager* network = 0); + AlbumCoverFetcher(CoverProviders* cover_providers, QObject* parent = nullptr, + QNetworkAccessManager* network = 0); virtual ~AlbumCoverFetcher() {} static const int kMaxConcurrentRequests; @@ -92,7 +89,7 @@ class AlbumCoverFetcher : public QObject { void Clear(); - signals: +signals: void AlbumCoverFetched(quint64, const QImage& cover, const CoverSearchStatistics& statistics); void SearchFinished(quint64, const CoverSearchResults& results, diff --git a/src/covers/albumcoverfetchersearch.cpp b/src/covers/albumcoverfetchersearch.cpp index 3ab54f1ab..b91003348 100644 --- a/src/covers/albumcoverfetchersearch.cpp +++ b/src/covers/albumcoverfetchersearch.cpp @@ -36,22 +36,22 @@ const int AlbumCoverFetcherSearch::kImageLoadTimeoutMs = 2500; const int AlbumCoverFetcherSearch::kTargetSize = 500; const float AlbumCoverFetcherSearch::kGoodScore = 1.85; -AlbumCoverFetcherSearch::AlbumCoverFetcherSearch(const CoverSearchRequest& request, - QNetworkAccessManager* network, - QObject* parent) - : QObject(parent), - request_(request), - image_load_timeout_(new NetworkTimeouts(kImageLoadTimeoutMs, this)), - network_(network), - cancel_requested_(false) -{ - // we will terminate the search after kSearchTimeoutMs miliseconds if we are not +AlbumCoverFetcherSearch::AlbumCoverFetcherSearch( + const CoverSearchRequest& request, QNetworkAccessManager* network, + QObject* parent) + : QObject(parent), + request_(request), + image_load_timeout_(new NetworkTimeouts(kImageLoadTimeoutMs, this)), + network_(network), + cancel_requested_(false) { + // we will terminate the search after kSearchTimeoutMs miliseconds if we are + // not // able to find all of the results before that point in time QTimer::singleShot(kSearchTimeoutMs, this, SLOT(TerminateSearch())); } void AlbumCoverFetcherSearch::TerminateSearch() { - foreach (int id, pending_requests_.keys()) { + for (int id : pending_requests_.keys()) { pending_requests_.take(id)->CancelSearch(id); } @@ -59,21 +59,21 @@ void AlbumCoverFetcherSearch::TerminateSearch() { } void AlbumCoverFetcherSearch::Start(CoverProviders* cover_providers) { - foreach(CoverProvider* provider, cover_providers->List()) { - connect(provider, SIGNAL(SearchFinished(int,QList)), - SLOT(ProviderSearchFinished(int,QList))); + for (CoverProvider* provider : cover_providers->List()) { + connect(provider, SIGNAL(SearchFinished(int, QList)), + SLOT(ProviderSearchFinished(int, QList))); const int id = cover_providers->NextId(); - const bool success = provider->StartSearch( - request_.artist, request_.album, id); + const bool success = + provider->StartSearch(request_.artist, request_.album, id); if (success) { pending_requests_[id] = provider; - statistics_.network_requests_made_ ++; + statistics_.network_requests_made_++; } } // end this search before it even began if there are no providers... - if(pending_requests_.isEmpty()) { + if (pending_requests_.isEmpty()) { TerminateSearch(); } } @@ -85,23 +85,22 @@ static bool CompareProviders(const CoverSearchResult& a, void AlbumCoverFetcherSearch::ProviderSearchFinished( int id, const QList& results) { - if (!pending_requests_.contains(id)) - return; + if (!pending_requests_.contains(id)) return; CoverProvider* provider = pending_requests_.take(id); CoverSearchResults results_copy(results); // Set categories on the results - for (int i=0 ; iname(); } // Add results from the current provider to our pool results_.append(results_copy); - statistics_.total_images_by_provider_[provider->name()] ++; + statistics_.total_images_by_provider_[provider->name()]++; // do we have more providers left? - if(!pending_requests_.isEmpty()) { + if (!pending_requests_.isEmpty()) { return; } @@ -121,7 +120,7 @@ void AlbumCoverFetcherSearch::AllProvidersFinished() { // no results? if (results_.isEmpty()) { - statistics_.missing_images_ ++; + statistics_.missing_images_++; emit AlbumCoverFetched(request_.id, QImage()); return; } @@ -138,7 +137,7 @@ void AlbumCoverFetcherSearch::AllProvidersFinished() { void AlbumCoverFetcherSearch::FetchMoreImages() { // Try the first one in each category. QString last_provider; - for (int i=0 ; iget(QNetworkRequest(result.image_url))); + RedirectFollower* image_reply = + new RedirectFollower(network_->get(QNetworkRequest(result.image_url))); NewClosure(image_reply, SIGNAL(finished()), this, - SLOT(ProviderCoverFetchFinished(RedirectFollower*)), image_reply); + SLOT(ProviderCoverFetchFinished(RedirectFollower*)), + image_reply); pending_image_loads_[image_reply] = result.provider; image_load_timeout_->AddReply(image_reply); - statistics_.network_requests_made_ ++; + statistics_.network_requests_made_++; } if (pending_image_loads_.isEmpty()) { @@ -164,7 +164,8 @@ void AlbumCoverFetcherSearch::FetchMoreImages() { } } -void AlbumCoverFetcherSearch::ProviderCoverFetchFinished(RedirectFollower* reply) { +void AlbumCoverFetcherSearch::ProviderCoverFetchFinished( + RedirectFollower* reply) { reply->deleteLater(); const QString provider = pending_image_loads_.take(reply); @@ -213,11 +214,12 @@ float AlbumCoverFetcherSearch::ScoreImage(const QImage& image) const { } // A 500x500px image scores 1.0, bigger scores higher - const float size_score = std::sqrt(float(image.width() * image.height())) / kTargetSize; + const float size_score = + std::sqrt(float(image.width() * image.height())) / kTargetSize; // A 1:1 image scores 1.0, anything else scores less const float aspect_score = 1.0 - float(image.height() - image.width()) / - std::max(image.height(), image.width()); + std::max(image.height(), image.width()); return size_score + aspect_score; } @@ -229,12 +231,12 @@ void AlbumCoverFetcherSearch::SendBestImage() { const CandidateImage best_image = candidate_images_.values().back(); image = best_image.second; - statistics_.chosen_images_by_provider_[best_image.first] ++; - statistics_.chosen_images_ ++; + statistics_.chosen_images_by_provider_[best_image.first]++; + statistics_.chosen_images_++; statistics_.chosen_width_ += image.width(); statistics_.chosen_height_ += image.height(); } else { - statistics_.missing_images_ ++; + statistics_.missing_images_++; } emit AlbumCoverFetched(request_.id, image); @@ -246,7 +248,7 @@ void AlbumCoverFetcherSearch::Cancel() { if (!pending_requests_.isEmpty()) { TerminateSearch(); } else if (!pending_image_loads_.isEmpty()) { - foreach (RedirectFollower* reply, pending_image_loads_.keys()) { + for (RedirectFollower* reply : pending_image_loads_.keys()) { reply->abort(); } pending_image_loads_.clear(); diff --git a/src/covers/albumcoverfetchersearch.h b/src/covers/albumcoverfetchersearch.h index 4e89502de..e8b88ca30 100644 --- a/src/covers/albumcoverfetchersearch.h +++ b/src/covers/albumcoverfetchersearch.h @@ -55,19 +55,19 @@ signals: // It's the end of search and we've fetched a cover. void AlbumCoverFetched(quint64, const QImage& cover); -private slots: + private slots: void ProviderSearchFinished(int id, const QList& results); void ProviderCoverFetchFinished(RedirectFollower* reply); void TerminateSearch(); -private: + private: void AllProvidersFinished(); void FetchMoreImages(); float ScoreImage(const QImage& image) const; void SendBestImage(); -private: + private: static const int kSearchTimeoutMs; static const int kImageLoadTimeoutMs; static const int kTargetSize; diff --git a/src/covers/albumcoverloader.cpp b/src/covers/albumcoverloader.cpp index a4c4241a4..03c3f5491 100644 --- a/src/covers/albumcoverloader.cpp +++ b/src/covers/albumcoverloader.cpp @@ -32,16 +32,12 @@ #include "internet/internetmodel.h" #include "internet/spotifyservice.h" - - AlbumCoverLoader::AlbumCoverLoader(QObject* parent) - : QObject(parent), - stop_requested_(false), - next_id_(1), - network_(new NetworkAccessManager(this)), - connected_spotify_(false) -{ -} + : QObject(parent), + stop_requested_(false), + next_id_(1), + network_(new NetworkAccessManager(this)), + connected_spotify_(false) {} QString AlbumCoverLoader::ImageCacheDir() { return Utilities::GetConfigPath(Utilities::Path_AlbumCovers); @@ -49,7 +45,7 @@ QString AlbumCoverLoader::ImageCacheDir() { void AlbumCoverLoader::CancelTask(quint64 id) { QMutexLocker l(&mutex_); - for (QQueue::iterator it = tasks_.begin() ; it != tasks_.end() ; ++it) { + for (QQueue::iterator it = tasks_.begin(); it != tasks_.end(); ++it) { if (it->id == id) { tasks_.erase(it); break; @@ -59,7 +55,7 @@ void AlbumCoverLoader::CancelTask(quint64 id) { void AlbumCoverLoader::CancelTasks(const QSet& ids) { QMutexLocker l(&mutex_); - for (QQueue::iterator it = tasks_.begin() ; it != tasks_.end() ; ) { + for (QQueue::iterator it = tasks_.begin(); it != tasks_.end();) { if (ids.contains(it->id)) { it = tasks_.erase(it); } else { @@ -83,7 +79,7 @@ quint64 AlbumCoverLoader::LoadImageAsync(const AlbumCoverLoaderOptions& options, { QMutexLocker l(&mutex_); - task.id = next_id_ ++; + task.id = next_id_++; tasks_.enqueue(task); } @@ -98,8 +94,7 @@ void AlbumCoverLoader::ProcessTasks() { Task task; { QMutexLocker l(&mutex_); - if (tasks_.isEmpty()) - return; + if (tasks_.isEmpty()) return; task = tasks_.dequeue(); } @@ -107,7 +102,7 @@ void AlbumCoverLoader::ProcessTasks() { } } -void AlbumCoverLoader::ProcessTask(Task *task) { +void AlbumCoverLoader::ProcessTask(Task* task) { TryLoadResult result = TryLoadImage(*task); if (result.started_async) { // The image is being loaded from a remote URL, we'll carry on later @@ -142,12 +137,17 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( const Task& task) { // An image embedded in the song itself takes priority if (!task.embedded_image.isNull()) - return TryLoadResult(false, true, ScaleAndPad(task.options, task.embedded_image)); + return TryLoadResult(false, true, + ScaleAndPad(task.options, task.embedded_image)); QString filename; switch (task.state) { - case State_TryingAuto: filename = task.art_automatic; break; - case State_TryingManual: filename = task.art_manual; break; + case State_TryingAuto: + filename = task.art_automatic; + break; + case State_TryingManual: + filename = task.art_manual; + break; } if (filename == Song::kManuallyUnsetCover) @@ -155,13 +155,16 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( if (filename == Song::kEmbeddedCover && !task.song_filename.isEmpty()) { const QImage taglib_image = - TagReaderClient::Instance()->LoadEmbeddedArtBlocking(task.song_filename); + TagReaderClient::Instance()->LoadEmbeddedArtBlocking( + task.song_filename); if (!taglib_image.isNull()) - return TryLoadResult(false, true, ScaleAndPad(task.options, taglib_image)); + return TryLoadResult(false, true, + ScaleAndPad(task.options, taglib_image)); } - if (filename.toLower().startsWith("http://")) { + if (filename.toLower().startsWith("http://") || + filename.toLower().startsWith("https://")) { QUrl url(filename); QNetworkReply* reply = network_->get(QNetworkRequest(url)); NewClosure(reply, SIGNAL(finished()), this, @@ -174,8 +177,8 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( SpotifyService* spotify = InternetModel::Service(); if (!connected_spotify_) { - connect(spotify, SIGNAL(ImageLoaded(QString,QImage)), - SLOT(SpotifyImageLoaded(QString,QImage))); + connect(spotify, SIGNAL(ImageLoaded(QString, QImage)), + SLOT(SpotifyImageLoaded(QString, QImage))); connected_spotify_ = true; } @@ -192,13 +195,14 @@ AlbumCoverLoader::TryLoadResult AlbumCoverLoader::TryLoadImage( } QImage image(filename); - return TryLoadResult(false, !image.isNull(), - image.isNull() ? task.options.default_output_image_: image); + return TryLoadResult( + false, !image.isNull(), + image.isNull() ? task.options.default_output_image_ : image); } -void AlbumCoverLoader::SpotifyImageLoaded(const QString& id, const QImage& image) { - if (!remote_spotify_tasks_.contains(id)) - return; +void AlbumCoverLoader::SpotifyImageLoaded(const QString& id, + const QImage& image) { + if (!remote_spotify_tasks_.contains(id)) return; Task task = remote_spotify_tasks_.take(id); QImage scaled = ScaleAndPad(task.options, image); @@ -212,7 +216,8 @@ void AlbumCoverLoader::RemoteFetchFinished(QNetworkReply* reply) { Task task = remote_tasks_.take(reply); // Handle redirects. - QVariant redirect = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + QVariant redirect = + reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (redirect.isValid()) { if (++task.redirects > kMaxRedirects) { return; // Give up. @@ -243,8 +248,7 @@ void AlbumCoverLoader::RemoteFetchFinished(QNetworkReply* reply) { QImage AlbumCoverLoader::ScaleAndPad(const AlbumCoverLoaderOptions& options, const QImage& image) { - if (image.isNull()) - return image; + if (image.isNull()) return image; // Scale the image down QImage copy; @@ -255,8 +259,7 @@ QImage AlbumCoverLoader::ScaleAndPad(const AlbumCoverLoaderOptions& options, copy = image; } - if (!options.pad_output_image_) - return copy; + if (!options.pad_output_image_) return copy; // Pad the image to height_ x height_ QImage padded_image(options.desired_height_, options.desired_height_, @@ -265,8 +268,7 @@ QImage AlbumCoverLoader::ScaleAndPad(const AlbumCoverLoaderOptions& options, QPainter p(&padded_image); p.drawImage((options.desired_height_ - copy.width()) / 2, - (options.desired_height_ - copy.height()) / 2, - copy); + (options.desired_height_ - copy.height()) / 2, copy); p.end(); return padded_image; @@ -276,14 +278,12 @@ QPixmap AlbumCoverLoader::TryLoadPixmap(const QString& automatic, const QString& manual, const QString& filename) { QPixmap ret; - if (manual == Song::kManuallyUnsetCover) - return ret; - if (!manual.isEmpty()) - ret.load(manual); + if (manual == Song::kManuallyUnsetCover) return ret; + if (!manual.isEmpty()) ret.load(manual); if (ret.isNull()) { if (automatic == Song::kEmbeddedCover && !filename.isNull()) ret = QPixmap::fromImage( - TagReaderClient::Instance()->LoadEmbeddedArtBlocking(filename)); + TagReaderClient::Instance()->LoadEmbeddedArtBlocking(filename)); else if (!automatic.isEmpty()) ret.load(automatic); } @@ -291,8 +291,7 @@ QPixmap AlbumCoverLoader::TryLoadPixmap(const QString& automatic, } quint64 AlbumCoverLoader::LoadImageAsync(const AlbumCoverLoaderOptions& options, - const Song &song) { - return LoadImageAsync(options, - song.art_automatic(), song.art_manual(), + const Song& song) { + return LoadImageAsync(options, song.art_automatic(), song.art_manual(), song.url().toLocalFile(), song.image()); } diff --git a/src/covers/albumcoverloader.h b/src/covers/albumcoverloader.h index 987be6676..c81c14d41 100644 --- a/src/covers/albumcoverloader.h +++ b/src/covers/albumcoverloader.h @@ -34,28 +34,29 @@ class AlbumCoverLoader : public QObject { Q_OBJECT public: - AlbumCoverLoader(QObject* parent = 0); + AlbumCoverLoader(QObject* parent = nullptr); void Stop() { stop_requested_ = true; } static QString ImageCacheDir(); - quint64 LoadImageAsync(const AlbumCoverLoaderOptions& options, const Song& song); - virtual quint64 LoadImageAsync( - const AlbumCoverLoaderOptions& options, - const QString& art_automatic, - const QString& art_manual, - const QString& song_filename = QString(), - const QImage& embedded_image = QImage()); + quint64 LoadImageAsync(const AlbumCoverLoaderOptions& options, + const Song& song); + virtual quint64 LoadImageAsync(const AlbumCoverLoaderOptions& options, + const QString& art_automatic, + const QString& art_manual, + const QString& song_filename = QString(), + const QImage& embedded_image = QImage()); void CancelTask(quint64 id); void CancelTasks(const QSet& ids); static QPixmap TryLoadPixmap(const QString& automatic, const QString& manual, const QString& filename = QString()); - static QImage ScaleAndPad(const AlbumCoverLoaderOptions& options, const QImage& image); + static QImage ScaleAndPad(const AlbumCoverLoaderOptions& options, + const QImage& image); - signals: +signals: void ImageLoaded(quint64 id, const QImage& image); void ImageLoaded(quint64 id, const QImage& scaled, const QImage& original); @@ -65,10 +66,7 @@ class AlbumCoverLoader : public QObject { void SpotifyImageLoaded(const QString& url, const QImage& image); protected: - enum State { - State_TryingManual, - State_TryingAuto, - }; + enum State { State_TryingManual, State_TryingAuto, }; struct Task { Task() : redirects(0) {} @@ -86,7 +84,7 @@ class AlbumCoverLoader : public QObject { struct TryLoadResult { TryLoadResult(bool async, bool success, const QImage& i) - : started_async(async), loaded_success(success), image(i) {} + : started_async(async), loaded_success(success), image(i) {} bool started_async; bool loaded_success; @@ -112,4 +110,4 @@ class AlbumCoverLoader : public QObject { static const int kMaxRedirects = 3; }; -#endif // ALBUMCOVERLOADER_H +#endif // ALBUMCOVERLOADER_H diff --git a/src/covers/albumcoverloaderoptions.cpp b/src/covers/albumcoverloaderoptions.cpp index e3a522f1d..f0d8b6b1d 100644 --- a/src/covers/albumcoverloaderoptions.cpp +++ b/src/covers/albumcoverloaderoptions.cpp @@ -1,19 +1,18 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ #include "albumcoverloaderoptions.h" - diff --git a/src/covers/albumcoverloaderoptions.h b/src/covers/albumcoverloaderoptions.h index 33faccc15..70d21a178 100644 --- a/src/covers/albumcoverloaderoptions.h +++ b/src/covers/albumcoverloaderoptions.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,10 +22,9 @@ struct AlbumCoverLoaderOptions { AlbumCoverLoaderOptions() - : desired_height_(120), - scale_output_image_(true), - pad_output_image_(true) - {} + : desired_height_(120), + scale_output_image_(true), + pad_output_image_(true) {} int desired_height_; bool scale_output_image_; @@ -33,4 +32,4 @@ struct AlbumCoverLoaderOptions { QImage default_output_image_; }; -#endif // ALBUMCOVERLOADEROPTIONS_H +#endif // ALBUMCOVERLOADEROPTIONS_H diff --git a/src/covers/amazoncoverprovider.cpp b/src/covers/amazoncoverprovider.cpp index 18b31235f..c861ebf9b 100644 --- a/src/covers/amazoncoverprovider.cpp +++ b/src/covers/amazoncoverprovider.cpp @@ -35,12 +35,11 @@ const char* AmazonCoverProvider::kUrl = "http://ecs.amazonaws.com/onca/xml"; const char* AmazonCoverProvider::kAssociateTag = "clemmusiplay-20"; AmazonCoverProvider::AmazonCoverProvider(QObject* parent) - : CoverProvider("Amazon", parent), - network_(new NetworkAccessManager(this)) -{ -} + : CoverProvider("Amazon", parent), + network_(new NetworkAccessManager(this)) {} -bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& album, int id) { +bool AmazonCoverProvider::StartSearch(const QString& artist, + const QString& album, int id) { typedef QPair Arg; typedef QList ArgList; @@ -48,22 +47,22 @@ bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& albu typedef QList EncodedArgList; // Must be sorted by parameter name - ArgList args = ArgList() - << Arg("AWSAccessKeyId", QByteArray::fromBase64(kAccessKeyB64)) - << Arg("AssociateTag", kAssociateTag) - << Arg("Keywords", artist + " " + album) - << Arg("Operation", "ItemSearch") - << Arg("ResponseGroup", "Images") - << Arg("SearchIndex", "All") - << Arg("Service", "AWSECommerceService") - << Arg("Timestamp", QDateTime::currentDateTime().toString("yyyy-MM-ddThh:mm:ss.zzzZ")) - << Arg("Version", "2009-11-01"); + ArgList args = + ArgList() << Arg("AWSAccessKeyId", QByteArray::fromBase64(kAccessKeyB64)) + << Arg("AssociateTag", kAssociateTag) + << Arg("Keywords", artist + " " + album) + << Arg("Operation", "ItemSearch") + << Arg("ResponseGroup", "Images") << Arg("SearchIndex", "All") + << Arg("Service", "AWSECommerceService") + << Arg("Timestamp", QDateTime::currentDateTime().toString( + "yyyy-MM-ddThh:mm:ss.zzzZ")) + << Arg("Version", "2009-11-01"); EncodedArgList encoded_args; QStringList query_items; // Encode the arguments - foreach (const Arg& arg, args) { + for (const Arg& arg : args) { EncodedArg encoded_arg(QUrl::toPercentEncoding(arg.first), QUrl::toPercentEncoding(arg.second)); encoded_args << encoded_arg; @@ -73,19 +72,21 @@ bool AmazonCoverProvider::StartSearch(const QString& artist, const QString& albu // Sign the request QUrl url(kUrl); - const QByteArray data_to_sign = QString("GET\n%1\n%2\n%3").arg( - url.host(), url.path(), query_items.join("&")).toAscii(); + const QByteArray data_to_sign = + QString("GET\n%1\n%2\n%3") + .arg(url.host(), url.path(), query_items.join("&")) + .toAscii(); const QByteArray signature(Utilities::HmacSha256( - QByteArray::fromBase64(kSecretAccessKeyB64), data_to_sign)); + QByteArray::fromBase64(kSecretAccessKeyB64), data_to_sign)); // Add the signature to the request - encoded_args << EncodedArg("Signature", QUrl::toPercentEncoding(signature.toBase64())); + encoded_args << EncodedArg("Signature", + QUrl::toPercentEncoding(signature.toBase64())); url.setEncodedQueryItems(encoded_args); QNetworkReply* reply = network_->get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(QueryFinished(QNetworkReply*, int)), - reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(QueryFinished(QNetworkReply*, int)), reply, id); return true; } @@ -107,44 +108,46 @@ void AmazonCoverProvider::QueryFinished(QNetworkReply* reply, int id) { emit SearchFinished(id, results); } -void AmazonCoverProvider::ReadItem(QXmlStreamReader* reader, CoverSearchResults* results) { +void AmazonCoverProvider::ReadItem(QXmlStreamReader* reader, + CoverSearchResults* results) { while (!reader->atEnd()) { switch (reader->readNext()) { - case QXmlStreamReader::StartElement: - if (reader->name() == "LargeImage") { - ReadLargeImage(reader, results); - } else { - reader->skipCurrentElement(); - } - break; + case QXmlStreamReader::StartElement: + if (reader->name() == "LargeImage") { + ReadLargeImage(reader, results); + } else { + reader->skipCurrentElement(); + } + break; - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } -void AmazonCoverProvider::ReadLargeImage(QXmlStreamReader* reader, CoverSearchResults* results) { +void AmazonCoverProvider::ReadLargeImage(QXmlStreamReader* reader, + CoverSearchResults* results) { while (!reader->atEnd()) { switch (reader->readNext()) { - case QXmlStreamReader::StartElement: - if (reader->name() == "URL") { - CoverSearchResult result; - result.image_url = QUrl(reader->readElementText()); - results->append(result); - } else { - reader->skipCurrentElement(); - } - break; + case QXmlStreamReader::StartElement: + if (reader->name() == "URL") { + CoverSearchResult result; + result.image_url = QUrl(reader->readElementText()); + results->append(result); + } else { + reader->skipCurrentElement(); + } + break; - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } diff --git a/src/covers/amazoncoverprovider.h b/src/covers/amazoncoverprovider.h index 766a6746d..fd77073ee 100644 --- a/src/covers/amazoncoverprovider.h +++ b/src/covers/amazoncoverprovider.h @@ -24,12 +24,11 @@ class QNetworkAccessManager; - class AmazonCoverProvider : public CoverProvider { Q_OBJECT -public: - AmazonCoverProvider(QObject* parent = NULL); + public: + AmazonCoverProvider(QObject* parent = nullptr); static const char* kAccessKeyB64; static const char* kSecretAccessKeyB64; @@ -38,15 +37,15 @@ public: bool StartSearch(const QString& artist, const QString& album, int id); -private slots: + private slots: void QueryFinished(QNetworkReply* reply, int id); -private: + private: void ReadItem(QXmlStreamReader* reader, CoverSearchResults* results); void ReadLargeImage(QXmlStreamReader* reader, CoverSearchResults* results); -private: + private: QNetworkAccessManager* network_; }; -#endif // AMAZONCOVERPROVIDER_H +#endif // AMAZONCOVERPROVIDER_H diff --git a/src/covers/coverexportrunnable.cpp b/src/covers/coverexportrunnable.cpp index 600e816fc..9b5d30d67 100644 --- a/src/covers/coverexportrunnable.cpp +++ b/src/covers/coverexportrunnable.cpp @@ -22,39 +22,36 @@ #include #include -CoverExportRunnable::CoverExportRunnable(const AlbumCoverExport::DialogResult& dialog_result, - const Song& song) - : dialog_result_(dialog_result), - song_(song) -{ -} +CoverExportRunnable::CoverExportRunnable( + const AlbumCoverExport::DialogResult& dialog_result, const Song& song) + : dialog_result_(dialog_result), song_(song) {} void CoverExportRunnable::run() { QString cover_path = GetCoverPath(); // manually unset? - if(cover_path.isEmpty()) { + if (cover_path.isEmpty()) { EmitCoverSkipped(); } else { - if(dialog_result_.RequiresCoverProcessing()) { + if (dialog_result_.RequiresCoverProcessing()) { ProcessAndExportCover(); } else { ExportCover(); } - } } QString CoverExportRunnable::GetCoverPath() { - if(song_.has_manually_unset_cover()) { + if (song_.has_manually_unset_cover()) { return QString(); - // Export downloaded covers? - } else if(!song_.art_manual().isEmpty() && dialog_result_.export_downloaded_) { + // Export downloaded covers? + } else if (!song_.art_manual().isEmpty() && + dialog_result_.export_downloaded_) { return song_.art_manual(); - // Export embedded covers? - } else if(!song_.art_automatic().isEmpty() - && song_.art_automatic() == Song::kEmbeddedCover - && dialog_result_.export_embedded_) { + // Export embedded covers? + } else if (!song_.art_automatic().isEmpty() && + song_.art_automatic() == Song::kEmbeddedCover && + dialog_result_.export_embedded_) { return song_.art_automatic(); } else { return QString(); @@ -78,10 +75,11 @@ void CoverExportRunnable::ProcessAndExportCover() { QImage disk_cover; // load embedded cover if any - if(song_.has_embedded_cover()) { - embedded_cover = TagReaderClient::Instance()->LoadEmbeddedArtBlocking(song_.url().toLocalFile()); + if (song_.has_embedded_cover()) { + embedded_cover = TagReaderClient::Instance()->LoadEmbeddedArtBlocking( + song_.url().toLocalFile()); - if(embedded_cover.isNull()) { + if (embedded_cover.isNull()) { EmitCoverSkipped(); return; } @@ -91,8 +89,8 @@ void CoverExportRunnable::ProcessAndExportCover() { // load a file cover which iss mandatory if there's no embedded cover disk_cover.load(cover_path); - if(embedded_cover.isNull()) { - if(disk_cover.isNull()) { + if (embedded_cover.isNull()) { + if (disk_cover.isNull()) { EmitCoverSkipped(); return; } @@ -100,49 +98,51 @@ void CoverExportRunnable::ProcessAndExportCover() { } // rescale if necessary - if(dialog_result_.IsSizeForced()) { - cover = cover.scaled(QSize(dialog_result_.width_, dialog_result_.height_), Qt::IgnoreAspectRatio); + if (dialog_result_.IsSizeForced()) { + cover = cover.scaled(QSize(dialog_result_.width_, dialog_result_.height_), + Qt::IgnoreAspectRatio); } QString dir = song_.url().toLocalFile().section('/', 0, -2); QString extension = cover_path.section('.', -1); QString new_file = dir + '/' + dialog_result_.fileName_ + '.' + - (cover_path == Song::kEmbeddedCover - ? "jpg" - : extension); + (cover_path == Song::kEmbeddedCover ? "jpg" : extension); // If the file exists, do not override! - if(dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_None && QFile::exists(new_file)) { + if (dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_None && + QFile::exists(new_file)) { EmitCoverSkipped(); return; } - // we're handling overwrite as remove + copy so we need to delete the old file first - if(QFile::exists(new_file) && dialog_result_.overwrite_ != AlbumCoverExport::OverwriteMode_None) { + // we're handling overwrite as remove + copy so we need to delete the old file + // first + if (QFile::exists(new_file) && + dialog_result_.overwrite_ != AlbumCoverExport::OverwriteMode_None) { // if the mode is "overwrite smaller" then skip the cover if a bigger one // is already available in the folder - if(dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_Smaller) { + if (dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_Smaller) { QImage existing; existing.load(new_file); - if(existing.isNull() || existing.size().height() >= cover.size().height() - || existing.size().width() >= cover.size().width()) { + if (existing.isNull() || + existing.size().height() >= cover.size().height() || + existing.size().width() >= cover.size().width()) { EmitCoverSkipped(); return; - } } - if(!QFile::remove(new_file)) { + if (!QFile::remove(new_file)) { EmitCoverSkipped(); return; } } - if(cover.save(new_file)) { + if (cover.save(new_file)) { EmitCoverExported(); } else { EmitCoverSkipped(); @@ -157,34 +157,36 @@ void CoverExportRunnable::ExportCover() { QString extension = cover_path.section('.', -1); QString new_file = dir + '/' + dialog_result_.fileName_ + '.' + - (cover_path == Song::kEmbeddedCover - ? "jpg" - : extension); + (cover_path == Song::kEmbeddedCover ? "jpg" : extension); // If the file exists, do not override! - if(dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_None && QFile::exists(new_file)) { + if (dialog_result_.overwrite_ == AlbumCoverExport::OverwriteMode_None && + QFile::exists(new_file)) { EmitCoverSkipped(); return; } - // we're handling overwrite as remove + copy so we need to delete the old file first - if(dialog_result_.overwrite_ != AlbumCoverExport::OverwriteMode_None && QFile::exists(new_file)) { - if(!QFile::remove(new_file)) { + // we're handling overwrite as remove + copy so we need to delete the old file + // first + if (dialog_result_.overwrite_ != AlbumCoverExport::OverwriteMode_None && + QFile::exists(new_file)) { + if (!QFile::remove(new_file)) { EmitCoverSkipped(); return; } } - if(cover_path == Song::kEmbeddedCover) { + if (cover_path == Song::kEmbeddedCover) { // an embedded cover - QImage embedded = TagReaderClient::Instance()->LoadEmbeddedArtBlocking(song_.url().toLocalFile()); - if(!embedded.save(new_file)) { + QImage embedded = TagReaderClient::Instance()->LoadEmbeddedArtBlocking( + song_.url().toLocalFile()); + if (!embedded.save(new_file)) { EmitCoverSkipped(); return; } } else { // automatic or manual cover, available in an image file - if(!QFile::copy(cover_path, new_file)) { + if (!QFile::copy(cover_path, new_file)) { EmitCoverSkipped(); return; } @@ -192,11 +194,6 @@ void CoverExportRunnable::ExportCover() { EmitCoverExported(); } -void CoverExportRunnable::EmitCoverExported() { - emit CoverExported(); -} +void CoverExportRunnable::EmitCoverExported() { emit CoverExported(); } - -void CoverExportRunnable::EmitCoverSkipped() { - emit CoverSkipped(); -} +void CoverExportRunnable::EmitCoverSkipped() { emit CoverSkipped(); } diff --git a/src/covers/coverexportrunnable.h b/src/covers/coverexportrunnable.h index 89e70e5f1..0b929e942 100644 --- a/src/covers/coverexportrunnable.h +++ b/src/covers/coverexportrunnable.h @@ -27,7 +27,7 @@ class AlbumCoverExporter; class CoverExportRunnable : public QObject, public QRunnable { - Q_OBJECT + Q_OBJECT public: CoverExportRunnable(const AlbumCoverExport::DialogResult& dialog_result, @@ -36,7 +36,7 @@ class CoverExportRunnable : public QObject, public QRunnable { void run(); - signals: +signals: void CoverExported(); void CoverSkipped(); diff --git a/src/covers/coverprovider.cpp b/src/covers/coverprovider.cpp index 10738baed..f87bcd9af 100644 --- a/src/covers/coverprovider.cpp +++ b/src/covers/coverprovider.cpp @@ -18,7 +18,4 @@ #include "coverprovider.h" CoverProvider::CoverProvider(const QString& name, QObject* parent) - : QObject(parent), - name_(name) -{ -} + : QObject(parent), name_(name) {} diff --git a/src/covers/coverprovider.h b/src/covers/coverprovider.h index c3d509b33..d3aec5545 100644 --- a/src/covers/coverprovider.h +++ b/src/covers/coverprovider.h @@ -31,7 +31,7 @@ class QNetworkReply; class CoverProvider : public QObject { Q_OBJECT -public: + public: CoverProvider(const QString& name, QObject* parent); // A name (very short description) of this provider, like "last.fm". @@ -40,15 +40,16 @@ public: // Starts searching for covers matching the given query text. Returns true // if the query has been started, or false if an error occurred. The provider // should remember the ID and emit it along with the result when it finishes. - virtual bool StartSearch(const QString& artist, const QString& album, int id) = 0; + virtual bool StartSearch(const QString& artist, const QString& album, + int id) = 0; virtual void CancelSearch(int id) {} signals: void SearchFinished(int id, const QList& results); -private: + private: QString name_; }; -#endif // COVERPROVIDER_H +#endif // COVERPROVIDER_H diff --git a/src/covers/coverproviders.cpp b/src/covers/coverproviders.cpp index b81d4f8dd..5475e0b3a 100644 --- a/src/covers/coverproviders.cpp +++ b/src/covers/coverproviders.cpp @@ -20,9 +20,7 @@ #include "coverproviders.h" #include "core/logging.h" -CoverProviders::CoverProviders(QObject* parent) - : QObject(parent) { -} +CoverProviders::CoverProviders(QObject* parent) : QObject(parent) {} void CoverProviders::AddProvider(CoverProvider* provider) { { @@ -35,8 +33,7 @@ void CoverProviders::AddProvider(CoverProvider* provider) { } void CoverProviders::RemoveProvider(CoverProvider* provider) { - if (!provider) - return; + if (!provider) return; // It's not safe to dereference provider at this pointbecause it might have // already been destroyed. @@ -60,6 +57,4 @@ void CoverProviders::ProviderDestroyed() { RemoveProvider(provider); } -int CoverProviders::NextId() { - return next_id_.fetchAndAddRelaxed(1); -} +int CoverProviders::NextId() { return next_id_.fetchAndAddRelaxed(1); } diff --git a/src/covers/coverproviders.h b/src/covers/coverproviders.h index 61ed702b4..308e28a83 100644 --- a/src/covers/coverproviders.h +++ b/src/covers/coverproviders.h @@ -31,8 +31,8 @@ class CoverProvider; class CoverProviders : public QObject { Q_OBJECT -public: - CoverProviders(QObject* parent = NULL); + public: + CoverProviders(QObject* parent = nullptr); // Lets a cover provider register itself in the repository. void AddProvider(CoverProvider* provider); @@ -46,10 +46,10 @@ public: int NextId(); -private slots: + private slots: void ProviderDestroyed(); -private: + private: Q_DISABLE_COPY(CoverProviders); QMap cover_providers_; @@ -58,4 +58,4 @@ private: QAtomicInt next_id_; }; -#endif // COVERPROVIDERS_H +#endif // COVERPROVIDERS_H diff --git a/src/covers/coversearchstatistics.cpp b/src/covers/coversearchstatistics.cpp index 5a3bae616..93dbf4534 100644 --- a/src/covers/coversearchstatistics.cpp +++ b/src/covers/coversearchstatistics.cpp @@ -18,23 +18,22 @@ #include "coversearchstatistics.h" CoverSearchStatistics::CoverSearchStatistics() - : network_requests_made_(0), - bytes_transferred_(0), - chosen_images_(0), - missing_images_(0), - chosen_width_(0), - chosen_height_(0) -{ -} + : network_requests_made_(0), + bytes_transferred_(0), + chosen_images_(0), + missing_images_(0), + chosen_width_(0), + chosen_height_(0) {} -CoverSearchStatistics& CoverSearchStatistics::operator +=(const CoverSearchStatistics& other) { +CoverSearchStatistics& CoverSearchStatistics::operator+=( + const CoverSearchStatistics& other) { network_requests_made_ += other.network_requests_made_; bytes_transferred_ += other.bytes_transferred_; - foreach (const QString& key, other.chosen_images_by_provider_.keys()) { + for (const QString& key : other.chosen_images_by_provider_.keys()) { chosen_images_by_provider_[key] += other.chosen_images_by_provider_[key]; } - foreach (const QString& key, other.total_images_by_provider_.keys()) { + for (const QString& key : other.total_images_by_provider_.keys()) { total_images_by_provider_[key] += other.total_images_by_provider_[key]; } diff --git a/src/covers/coversearchstatistics.h b/src/covers/coversearchstatistics.h index 90b4b67d8..5e4dd58c2 100644 --- a/src/covers/coversearchstatistics.h +++ b/src/covers/coversearchstatistics.h @@ -24,7 +24,7 @@ struct CoverSearchStatistics { CoverSearchStatistics(); - CoverSearchStatistics& operator +=(const CoverSearchStatistics& other); + CoverSearchStatistics& operator+=(const CoverSearchStatistics& other); quint64 network_requests_made_; quint64 bytes_transferred_; @@ -40,4 +40,4 @@ struct CoverSearchStatistics { QString AverageDimensions() const; }; -#endif // COVERSEARCHSTATISTICS_H +#endif // COVERSEARCHSTATISTICS_H diff --git a/src/covers/coversearchstatisticsdialog.cpp b/src/covers/coversearchstatisticsdialog.cpp index 449ad2f8a..c2d09fa26 100644 --- a/src/covers/coversearchstatisticsdialog.cpp +++ b/src/covers/coversearchstatisticsdialog.cpp @@ -19,44 +19,41 @@ #include "ui_coversearchstatisticsdialog.h" #include "core/utilities.h" -CoverSearchStatisticsDialog::CoverSearchStatisticsDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_CoverSearchStatisticsDialog) -{ +CoverSearchStatisticsDialog::CoverSearchStatisticsDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_CoverSearchStatisticsDialog) { ui_->setupUi(this); details_layout_ = new QVBoxLayout(ui_->details); details_layout_->setSpacing(0); setStyleSheet( - "#details {" - " background-color: palette(base);" - "}" - "#details QLabel[type=\"label\"] {" - " border: 2px solid transparent;" - " border-right: 2px solid palette(midlight);" - " margin-right: 10px;" - "}" - "#details QLabel[type=\"value\"] {" - " font-weight: bold;" - " max-width: 100px;" - "}" - ); + "#details {" + " background-color: palette(base);" + "}" + "#details QLabel[type=\"label\"] {" + " border: 2px solid transparent;" + " border-right: 2px solid palette(midlight);" + " margin-right: 10px;" + "}" + "#details QLabel[type=\"value\"] {" + " font-weight: bold;" + " max-width: 100px;" + "}"); } -CoverSearchStatisticsDialog::~CoverSearchStatisticsDialog() { - delete ui_; -} +CoverSearchStatisticsDialog::~CoverSearchStatisticsDialog() { delete ui_; } -void CoverSearchStatisticsDialog::Show(const CoverSearchStatistics& statistics) { +void CoverSearchStatisticsDialog::Show( + const CoverSearchStatistics& statistics) { QStringList providers(statistics.total_images_by_provider_.keys()); qSort(providers); - ui_->summary->setText(tr("Got %1 covers out of %2 (%3 failed)") - .arg(statistics.chosen_images_) - .arg(statistics.chosen_images_ + statistics.missing_images_) - .arg(statistics.missing_images_)); + ui_->summary->setText( + tr("Got %1 covers out of %2 (%3 failed)") + .arg(statistics.chosen_images_) + .arg(statistics.chosen_images_ + statistics.missing_images_) + .arg(statistics.missing_images_)); - foreach (const QString& provider, providers) { + for (const QString& provider : providers) { AddLine(tr("Covers from %1").arg(provider), QString::number(statistics.chosen_images_by_provider_[provider])); } @@ -70,15 +67,16 @@ void CoverSearchStatisticsDialog::Show(const CoverSearchStatistics& statistics) AddLine(tr("Average image size"), statistics.AverageDimensions()); AddLine(tr("Total bytes transferred"), statistics.bytes_transferred_ - ? Utilities::PrettySize(statistics.bytes_transferred_) - : "0 bytes"); + ? Utilities::PrettySize(statistics.bytes_transferred_) + : "0 bytes"); details_layout_->addStretch(); show(); } -void CoverSearchStatisticsDialog::AddLine(const QString& label, const QString& value) { +void CoverSearchStatisticsDialog::AddLine(const QString& label, + const QString& value) { QLabel* label1 = new QLabel(label); QLabel* label2 = new QLabel(value); diff --git a/src/covers/coversearchstatisticsdialog.h b/src/covers/coversearchstatisticsdialog.h index 6f53e0b18..43ec7ea16 100644 --- a/src/covers/coversearchstatisticsdialog.h +++ b/src/covers/coversearchstatisticsdialog.h @@ -29,19 +29,19 @@ class QVBoxLayout; class CoverSearchStatisticsDialog : public QDialog { Q_OBJECT -public: - CoverSearchStatisticsDialog(QWidget* parent = 0); + public: + CoverSearchStatisticsDialog(QWidget* parent = nullptr); ~CoverSearchStatisticsDialog(); void Show(const CoverSearchStatistics& statistics); -private: + private: void AddLine(const QString& label, const QString& value); void AddSpacer(); -private: + private: Ui_CoverSearchStatisticsDialog* ui_; QVBoxLayout* details_layout_; }; -#endif // COVERSEARCHSTATISTICSDIALOG_H +#endif // COVERSEARCHSTATISTICSDIALOG_H diff --git a/src/covers/currentartloader.cpp b/src/covers/currentartloader.cpp index d0dd47a9c..0567e6357 100644 --- a/src/covers/currentartloader.cpp +++ b/src/covers/currentartloader.cpp @@ -25,24 +25,22 @@ #include CurrentArtLoader::CurrentArtLoader(Application* app, QObject* parent) - : QObject(parent), - app_(app), - temp_file_pattern_(QDir::tempPath() + "/clementine-art-XXXXXX.jpg"), - id_(0) -{ + : QObject(parent), + app_(app), + temp_file_pattern_(QDir::tempPath() + "/clementine-art-XXXXXX.jpg"), + id_(0) { options_.scale_output_image_ = false; options_.pad_output_image_ = false; options_.default_output_image_ = QImage(":nocover.png"); - connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(TempArtLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(TempArtLoaded(quint64, QImage))); connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(LoadArt(Song))); } -CurrentArtLoader::~CurrentArtLoader() { -} +CurrentArtLoader::~CurrentArtLoader() {} void CurrentArtLoader::LoadArt(const Song& song) { last_song_ = song; @@ -50,8 +48,7 @@ void CurrentArtLoader::LoadArt(const Song& song) { } void CurrentArtLoader::TempArtLoaded(quint64 id, const QImage& image) { - if (id != id_) - return; + if (id != id_) return; id_ = 0; QString uri; diff --git a/src/covers/currentartloader.h b/src/covers/currentartloader.h index 05e1a7db7..3d4de4178 100644 --- a/src/covers/currentartloader.h +++ b/src/covers/currentartloader.h @@ -18,12 +18,12 @@ #ifndef CURRENTARTLOADER_H #define CURRENTARTLOADER_H -#include "core/song.h" -#include "covers/albumcoverloaderoptions.h" +#include #include -#include +#include "core/song.h" +#include "covers/albumcoverloaderoptions.h" class Application; @@ -33,34 +33,35 @@ class QTemporaryFile; class CurrentArtLoader : public QObject { Q_OBJECT -public: - CurrentArtLoader(Application* app, QObject* parent = 0); + public: + CurrentArtLoader(Application* app, QObject* parent = nullptr); ~CurrentArtLoader(); const AlbumCoverLoaderOptions& options() const { return options_; } const Song& last_song() const { return last_song_; } -public slots: + public slots: void LoadArt(const Song& song); signals: void ArtLoaded(const Song& song, const QString& uri, const QImage& image); - void ThumbnailLoaded(const Song& song, const QString& uri, const QImage& image); + void ThumbnailLoaded(const Song& song, const QString& uri, + const QImage& image); -private slots: + private slots: void TempArtLoaded(quint64 id, const QImage& image); -private: + private: Application* app_; AlbumCoverLoaderOptions options_; QString temp_file_pattern_; - boost::scoped_ptr temp_art_; - boost::scoped_ptr temp_art_thumbnail_; + std::unique_ptr temp_art_; + std::unique_ptr temp_art_thumbnail_; quint64 id_; Song last_song_; }; -#endif // CURRENTARTLOADER_H +#endif // CURRENTARTLOADER_H diff --git a/src/covers/discogscoverprovider.cpp b/src/covers/discogscoverprovider.cpp index c061e155d..0498de3ca 100644 --- a/src/covers/discogscoverprovider.cpp +++ b/src/covers/discogscoverprovider.cpp @@ -24,15 +24,15 @@ #include #include -const char* DiscogsCoverProvider::kSearchUrl = "http://api.discogs.com/database/search"; +const char* DiscogsCoverProvider::kSearchUrl = + "http://api.discogs.com/database/search"; DiscogsCoverProvider::DiscogsCoverProvider(QObject* parent) - : CoverProvider("Discogs", parent), - network_(new NetworkAccessManager(this)) -{ -} + : CoverProvider("Discogs", parent), + network_(new NetworkAccessManager(this)) {} -bool DiscogsCoverProvider::StartSearch(const QString& artist, const QString& album, int id) { +bool DiscogsCoverProvider::StartSearch(const QString& artist, + const QString& album, int id) { DiscogsCoverSearchContext* ctx = new DiscogsCoverSearchContext; ctx->id = id; ctx->artist = artist; @@ -61,17 +61,17 @@ void DiscogsCoverProvider::SendSearchRequest(DiscogsCoverSearchContext* ctx) { QString type; switch (ctx->state) { - case DiscogsCoverSearchContext::State_Init: - type = "master"; - ctx->state = DiscogsCoverSearchContext::State_MastersRequested; - break; - case DiscogsCoverSearchContext::State_MastersRequested: - type = "release"; - ctx->state = DiscogsCoverSearchContext::State_ReleasesRequested; - break; - default: - EndSearch(ctx); - return; + case DiscogsCoverSearchContext::State_Init: + type = "master"; + ctx->state = DiscogsCoverSearchContext::State_MastersRequested; + break; + case DiscogsCoverSearchContext::State_MastersRequested: + type = "release"; + ctx->state = DiscogsCoverSearchContext::State_ReleasesRequested; + break; + default: + EndSearch(ctx); + return; } ArgList args = ArgList(); @@ -85,7 +85,7 @@ void DiscogsCoverProvider::SendSearchRequest(DiscogsCoverSearchContext* ctx) { EncodedArgList encoded_args; - foreach (const Arg& arg, args) { + for (const Arg& arg : args) { EncodedArg encoded_arg(QUrl::toPercentEncoding(arg.first), QUrl::toPercentEncoding(arg.second)); encoded_args << encoded_arg; @@ -93,12 +93,12 @@ void DiscogsCoverProvider::SendSearchRequest(DiscogsCoverSearchContext* ctx) { url.setEncodedQueryItems(encoded_args); - qLog(Debug) << "Discogs: send search request for id:" << ctx->id << "url: " << url; + qLog(Debug) << "Discogs: send search request for id:" << ctx->id + << "url: " << url; QNetworkReply* reply = network_->get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(HandleSearchReply(QNetworkReply*, int)), - reply, ctx->id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(HandleSearchReply(QNetworkReply*, int)), reply, ctx->id); } // Parse the reply from a search @@ -126,7 +126,7 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply* reply, int id) { QVariantList results = reply_map["results"].toList(); - foreach (const QVariant& result, results) { + for (const QVariant& result : results) { QVariantMap result_map = result.toMap(); // In order to use less round-trips, we cheat here. Instead of // following the "resource_url", and then scan all images in the @@ -134,7 +134,8 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply* reply, int id) { // constructing the primary image's url from the thmub's url. if (result_map.contains("thumb")) { CoverSearchResult cover_result; - cover_result.image_url = QUrl(result_map["thumb"].toString().replace("R-90-", "R-")); + cover_result.image_url = + QUrl(result_map["thumb"].toString().replace("R-90-", "R-")); if (result_map.contains("title")) { cover_result.description = result_map["title"].toString(); } @@ -160,7 +161,7 @@ void DiscogsCoverProvider::HandleSearchReply(QNetworkReply* reply, int id) { } void DiscogsCoverProvider::EndSearch(DiscogsCoverSearchContext* ctx) { - (void) pending_requests_.remove(ctx->id); + (void)pending_requests_.remove(ctx->id); emit SearchFinished(ctx->id, ctx->results); delete ctx; } diff --git a/src/covers/discogscoverprovider.h b/src/covers/discogscoverprovider.h index 85dfd3889..98a53bbc9 100644 --- a/src/covers/discogscoverprovider.h +++ b/src/covers/discogscoverprovider.h @@ -24,14 +24,10 @@ class QNetworkAccessManager; // This struct represents a single search-for-cover request. It identifies -// and describes the request. +// and describes the request. struct DiscogsCoverSearchContext { - enum State { - State_Init, - State_MastersRequested, - State_ReleasesRequested - }; - + enum State { State_Init, State_MastersRequested, State_ReleasesRequested }; + // the unique request identifier int id; @@ -48,18 +44,18 @@ Q_DECLARE_METATYPE(DiscogsCoverSearchContext) class DiscogsCoverProvider : public CoverProvider { Q_OBJECT -public: - DiscogsCoverProvider(QObject* parent = NULL); + public: + DiscogsCoverProvider(QObject* parent = nullptr); static const char* kSearchUrl; bool StartSearch(const QString& artist, const QString& album, int id); void CancelSearch(int id); -private slots: + private slots: void HandleSearchReply(QNetworkReply* reply, int id); -private: + private: QNetworkAccessManager* network_; QHash pending_requests_; @@ -67,4 +63,4 @@ private: void EndSearch(DiscogsCoverSearchContext* ctx); }; -#endif // DISCOGSCOVERPROVIDER_H +#endif // DISCOGSCOVERPROVIDER_H diff --git a/src/covers/kittenloader.cpp b/src/covers/kittenloader.cpp index 3c9027968..c7f746dc7 100644 --- a/src/covers/kittenloader.cpp +++ b/src/covers/kittenloader.cpp @@ -19,19 +19,13 @@ const char* KittenLoader::kFlickrKittenUrl = const char* KittenLoader::kFlickrPhotoUrl = "https://farm%1.static.flickr.com/%2/%3_%4_m.jpg"; -KittenLoader::KittenLoader(QObject* parent) - : AlbumCoverLoader(parent) { -} +KittenLoader::KittenLoader(QObject* parent) : AlbumCoverLoader(parent) {} quint64 KittenLoader::LoadKitten(const AlbumCoverLoaderOptions& options) { if (!kitten_urls_.isEmpty()) { QUrl url = kitten_urls_.dequeue(); return AlbumCoverLoader::LoadImageAsync( - options, - QString::null, - url.toString(), - QString::null, - QImage()); + options, QString::null, url.toString(), QString::null, QImage()); } Task task; @@ -68,10 +62,10 @@ void KittenLoader::KittensRetrieved(QNetworkReply* reply) { QStringRef secret = attrs.value("secret"); QStringRef server = attrs.value("server"); QString photo_url = QString(kFlickrPhotoUrl) - .arg(farm_id.toString()) - .arg(server.toString()) - .arg(photo_id.toString()) - .arg(secret.toString()); + .arg(farm_id.toString()) + .arg(server.toString()) + .arg(photo_id.toString()) + .arg(secret.toString()); kitten_urls_ << QUrl(photo_url); } } diff --git a/src/covers/kittenloader.h b/src/covers/kittenloader.h index cae0e3274..94f2489d2 100644 --- a/src/covers/kittenloader.h +++ b/src/covers/kittenloader.h @@ -11,7 +11,7 @@ class QNetworkReply; class KittenLoader : public AlbumCoverLoader { Q_OBJECT public: - KittenLoader(QObject* parent = 0); + KittenLoader(QObject* parent = nullptr); virtual quint64 LoadKitten(const AlbumCoverLoaderOptions& options); diff --git a/src/covers/lastfmcoverprovider.cpp b/src/covers/lastfmcoverprovider.cpp index a84aea365..1eef40ad9 100644 --- a/src/covers/lastfmcoverprovider.cpp +++ b/src/covers/lastfmcoverprovider.cpp @@ -25,11 +25,10 @@ #include "internet/lastfmcompat.h" LastFmCoverProvider::LastFmCoverProvider(QObject* parent) - : CoverProvider("last.fm", parent) -{ -} + : CoverProvider("last.fm", parent) {} -bool LastFmCoverProvider::StartSearch(const QString& artist, const QString& album, int id) { +bool LastFmCoverProvider::StartSearch(const QString& artist, + const QString& album, int id) { QMap params; params["method"] = "album.search"; params["album"] = album + " " + artist; @@ -49,11 +48,13 @@ void LastFmCoverProvider::QueryFinished(QNetworkReply* reply, int id) { lastfm::XmlQuery query(lastfm::compat::EmptyXmlQuery()); if (lastfm::compat::ParseQuery(reply->readAll(), &query)) { // parse the list of search results - QList elements = query["results"]["albummatches"].children("album"); + QList elements = + query["results"]["albummatches"].children("album"); - foreach (const lastfm::XmlQuery& element, elements) { + for (const lastfm::XmlQuery& element : elements) { CoverSearchResult result; - result.description = element["artist"].text() + " - " + element["name"].text(); + result.description = + element["artist"].text() + " - " + element["name"].text(); result.image_url = QUrl(element["image size=extralarge"].text()); results << result; } diff --git a/src/covers/lastfmcoverprovider.h b/src/covers/lastfmcoverprovider.h index 2ba8405d5..fbf77fa59 100644 --- a/src/covers/lastfmcoverprovider.h +++ b/src/covers/lastfmcoverprovider.h @@ -30,16 +30,16 @@ class QNetworkReply; class LastFmCoverProvider : public CoverProvider { Q_OBJECT -public: + public: LastFmCoverProvider(QObject* parent); bool StartSearch(const QString& artist, const QString& album, int id); -private slots: + private slots: void QueryFinished(QNetworkReply* reply, int id); -private: + private: QMap pending_queries_; }; -#endif // LASTFMCOVERPROVIDER_H +#endif // LASTFMCOVERPROVIDER_H diff --git a/src/covers/musicbrainzcoverprovider.cpp b/src/covers/musicbrainzcoverprovider.cpp index 3e054b4c0..af5ac2dc1 100644 --- a/src/covers/musicbrainzcoverprovider.cpp +++ b/src/covers/musicbrainzcoverprovider.cpp @@ -29,44 +29,36 @@ using std::mem_fun; namespace { -static const char* kReleaseSearchUrl = - "https://musicbrainz.org/ws/2/release/"; +static const char* kReleaseSearchUrl = "https://musicbrainz.org/ws/2/release/"; static const char* kAlbumCoverUrl = "https://coverartarchive.org/release/%1/front"; } // namespace - MusicbrainzCoverProvider::MusicbrainzCoverProvider(QObject* parent) : CoverProvider("MusicBrainz", parent), - network_(new NetworkAccessManager(this)) { -} + network_(new NetworkAccessManager(this)) {} -bool MusicbrainzCoverProvider::StartSearch( - const QString& artist, const QString& album, int id) { +bool MusicbrainzCoverProvider::StartSearch(const QString& artist, + const QString& album, int id) { // Find release information. QUrl url(kReleaseSearchUrl); QString query = QString("release:\"%1\" AND artist:\"%2\"") - .arg(album.trimmed().replace('"', "\\\"")) - .arg(artist.trimmed().replace('"', "\\\"")); + .arg(album.trimmed().replace('"', "\\\"")) + .arg(artist.trimmed().replace('"', "\\\"")); url.addQueryItem("query", query); url.addQueryItem("limit", "5"); QNetworkRequest request(url); QNetworkReply* reply = network_->get(request); - NewClosure( - reply, - SIGNAL(finished()), - this, - SLOT(ReleaseSearchFinished(QNetworkReply*, int)), - reply, - id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(ReleaseSearchFinished(QNetworkReply*, int)), reply, id); cover_names_[id] = QString("%1 - %2").arg(artist, album); return true; } -void MusicbrainzCoverProvider::ReleaseSearchFinished( - QNetworkReply* reply, int id) { +void MusicbrainzCoverProvider::ReleaseSearchFinished(QNetworkReply* reply, + int id) { reply->deleteLater(); QList releases; @@ -74,8 +66,7 @@ void MusicbrainzCoverProvider::ReleaseSearchFinished( QXmlStreamReader reader(reply); while (!reader.atEnd()) { QXmlStreamReader::TokenType type = reader.readNext(); - if (type == QXmlStreamReader::StartElement && - reader.name() == "release") { + if (type == QXmlStreamReader::StartElement && reader.name() == "release") { QStringRef release_id = reader.attributes().value("id"); if (!release_id.isEmpty()) { releases.append(release_id.toString()); @@ -83,30 +74,26 @@ void MusicbrainzCoverProvider::ReleaseSearchFinished( } } - foreach (const QString& release_id, releases) { + for (const QString& release_id : releases) { QUrl url(QString(kAlbumCoverUrl).arg(release_id)); QNetworkReply* reply = network_->head(QNetworkRequest(url)); image_checks_.insert(id, reply); - NewClosure( - reply, - SIGNAL(finished()), - this, - SLOT(ImageCheckFinished(int)), - id); + NewClosure(reply, SIGNAL(finished()), this, SLOT(ImageCheckFinished(int)), + id); } } void MusicbrainzCoverProvider::ImageCheckFinished(int id) { QList replies = image_checks_.values(id); - int finished_count = std::count_if( - replies.constBegin(), replies.constEnd(), - mem_fun(&QNetworkReply::isFinished)); + int finished_count = std::count_if(replies.constBegin(), replies.constEnd(), + mem_fun(&QNetworkReply::isFinished)); if (finished_count == replies.size()) { QString cover_name = cover_names_.take(id); QList results; - foreach (QNetworkReply* reply, replies) { + for (QNetworkReply* reply : replies) { reply->deleteLater(); - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() < 400) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() < + 400) { CoverSearchResult result; result.description = cover_name; result.image_url = reply->url(); @@ -120,7 +107,7 @@ void MusicbrainzCoverProvider::ImageCheckFinished(int id) { void MusicbrainzCoverProvider::CancelSearch(int id) { QList replies = image_checks_.values(id); - foreach (QNetworkReply* reply, replies) { + for (QNetworkReply* reply : replies) { reply->abort(); reply->deleteLater(); } diff --git a/src/covers/musicbrainzcoverprovider.h b/src/covers/musicbrainzcoverprovider.h index 9a462bb3e..df706a533 100644 --- a/src/covers/musicbrainzcoverprovider.h +++ b/src/covers/musicbrainzcoverprovider.h @@ -28,7 +28,7 @@ class QNetworkReply; class MusicbrainzCoverProvider : public CoverProvider { Q_OBJECT public: - MusicbrainzCoverProvider(QObject* parent = 0); + MusicbrainzCoverProvider(QObject* parent = nullptr); // CoverProvider virtual bool StartSearch(const QString& artist, const QString& album, int id); diff --git a/src/devices/cddadevice.cpp b/src/devices/cddadevice.cpp index 7e4239919..c2cdb7382 100644 --- a/src/devices/cddadevice.cpp +++ b/src/devices/cddadevice.cpp @@ -25,39 +25,39 @@ #include "cddadevice.h" CddaDevice::CddaDevice(const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time) - : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - cdda_(NULL), - cdio_(NULL) -{ -} + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, bool first_time) + : ConnectedDevice(url, lister, unique_id, manager, app, database_id, + first_time), + cdda_(nullptr), + cdio_(nullptr) {} -CddaDevice::~CddaDevice(){ - if (cdio_) - cdio_destroy(cdio_); +CddaDevice::~CddaDevice() { + if (cdio_) cdio_destroy(cdio_); } void CddaDevice::Init() { QMutexLocker locker(&mutex_init_); - song_count_ = 0; // Reset song count, in case it was already set - cdio_ = cdio_open (url_.path().toLocal8Bit().constData(), DRIVER_DEVICE); - if (cdio_ == NULL) { + song_count_ = 0; // Reset song count, in case it was already set + cdio_ = cdio_open(url_.path().toLocal8Bit().constData(), DRIVER_DEVICE); + if (cdio_ == nullptr) { return; } // Create gstreamer cdda element - cdda_ = gst_element_make_from_uri (GST_URI_SRC, "cdda://", NULL); - if (cdda_ == NULL) { + cdda_ = gst_element_make_from_uri(GST_URI_SRC, "cdda://", nullptr); + if (cdda_ == nullptr) { model_->Reset(); return; } - GST_CDDA_BASE_SRC(cdda_)->device = g_strdup (url_.path().toLocal8Bit().constData()); + GST_CDDA_BASE_SRC(cdda_)->device = + g_strdup(url_.path().toLocal8Bit().constData()); // Change the element's state to ready and paused, to be able to query it - if (gst_element_set_state(cdda_, GST_STATE_READY) == GST_STATE_CHANGE_FAILURE || - gst_element_set_state(cdda_, GST_STATE_PAUSED) == GST_STATE_CHANGE_FAILURE) { + if (gst_element_set_state(cdda_, GST_STATE_READY) == + GST_STATE_CHANGE_FAILURE || + gst_element_set_state(cdda_, GST_STATE_PAUSED) == + GST_STATE_CHANGE_FAILURE) { model_->Reset(); gst_element_set_state(cdda_, GST_STATE_NULL); gst_object_unref(GST_OBJECT(cdda_)); @@ -65,10 +65,11 @@ void CddaDevice::Init() { } // Get number of tracks - GstFormat fmt = gst_format_get_by_nick ("track"); + GstFormat fmt = gst_format_get_by_nick("track"); GstFormat out_fmt = fmt; gint64 num_tracks = 0; - if (!gst_element_query_duration (cdda_, &out_fmt, &num_tracks) || out_fmt != fmt) { + if (!gst_element_query_duration(cdda_, &out_fmt, &num_tracks) || + out_fmt != fmt) { qLog(Error) << "Error while querying cdda GstElement"; model_->Reset(); gst_object_unref(GST_OBJECT(cdda_)); @@ -81,64 +82,69 @@ void CddaDevice::Init() { Song song; guint64 duration = 0; // quint64 == ulonglong and guint64 == ulong, therefore we must cast - if (gst_tag_list_get_uint64 (GST_CDDA_BASE_SRC(cdda_)->tracks[track_number-1].tags, - GST_TAG_DURATION, &duration)) { + if (gst_tag_list_get_uint64( + GST_CDDA_BASE_SRC(cdda_)->tracks[track_number - 1].tags, + GST_TAG_DURATION, &duration)) { song.set_length_nanosec((quint64)duration); } song.set_id(track_number); song.set_valid(true); song.set_filetype(Song::Type_Cdda); - song.set_url(QUrl(QString("cdda://%1/%2").arg(url_.path()).arg(track_number))); + song.set_url( + QUrl(QString("cdda://%1/%2").arg(url_.path()).arg(track_number))); song.set_title(QString("Track %1").arg(track_number)); song.set_track(track_number); songs << song; } song_count_ = num_tracks; - connect(this, SIGNAL(SongsDiscovered(const SongList&)), model_, SLOT(SongsDiscovered(const SongList&))); + connect(this, SIGNAL(SongsDiscovered(const SongList&)), model_, + SLOT(SongsDiscovered(const SongList&))); emit SongsDiscovered(songs); // Generate MusicBrainz DiscId gst_tag_register_musicbrainz_tags(); - GstElement *pipe = gst_pipeline_new ("pipeline"); - gst_bin_add (GST_BIN (pipe), cdda_); - gst_element_set_state (pipe, GST_STATE_READY); - gst_element_set_state (pipe, GST_STATE_PAUSED); - GstMessage *msg = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipe), - GST_CLOCK_TIME_NONE, - GST_MESSAGE_TAG); - GstTagList *tags = NULL; - gst_message_parse_tag (msg, &tags); - char *string_mb = NULL; - if (gst_tag_list_get_string (tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, &string_mb)) { + GstElement* pipe = gst_pipeline_new("pipeline"); + gst_bin_add(GST_BIN(pipe), cdda_); + gst_element_set_state(pipe, GST_STATE_READY); + gst_element_set_state(pipe, GST_STATE_PAUSED); + GstMessage* msg = gst_bus_timed_pop_filtered( + GST_ELEMENT_BUS(pipe), GST_CLOCK_TIME_NONE, GST_MESSAGE_TAG); + GstTagList* tags = nullptr; + gst_message_parse_tag(msg, &tags); + char* string_mb = nullptr; + if (gst_tag_list_get_string(tags, GST_TAG_CDDA_MUSICBRAINZ_DISCID, + &string_mb)) { QString musicbrainz_discid(string_mb); qLog(Info) << "MusicBrainz discid: " << musicbrainz_discid; - MusicBrainzClient *musicbrainz_client = new MusicBrainzClient(this); - connect(musicbrainz_client, - SIGNAL(Finished(const QString&, const QString&, MusicBrainzClient::ResultList)), - SLOT(AudioCDTagsLoaded(const QString&, const QString&, MusicBrainzClient::ResultList))); + MusicBrainzClient* musicbrainz_client = new MusicBrainzClient(this); + connect(musicbrainz_client, SIGNAL(Finished(const QString&, const QString&, + MusicBrainzClient::ResultList)), + SLOT(AudioCDTagsLoaded(const QString&, const QString&, + MusicBrainzClient::ResultList))); musicbrainz_client->StartDiscIdRequest(musicbrainz_discid); g_free(string_mb); } // Clean all the Gstreamer objects we have used: we don't need them anymore - gst_element_set_state (pipe, GST_STATE_NULL); + gst_element_set_state(pipe, GST_STATE_NULL); // This will also cause cdda_ to be unref'd. gst_object_unref(GST_OBJECT(pipe)); gst_object_unref(GST_OBJECT(msg)); gst_tag_list_free(tags); } -void CddaDevice::AudioCDTagsLoaded(const QString& artist, const QString& album, - const MusicBrainzClient::ResultList& results) { - MusicBrainzClient *musicbrainz_client = qobject_cast(sender()); +void CddaDevice::AudioCDTagsLoaded( + const QString& artist, const QString& album, + const MusicBrainzClient::ResultList& results) { + MusicBrainzClient* musicbrainz_client = + qobject_cast(sender()); musicbrainz_client->deleteLater(); SongList songs; int track_number = 1; - if (results.size() == 0) - return; + if (results.size() == 0) return; model_->Reset(); - foreach (const MusicBrainzClient::Result& ret, results) { + for (const MusicBrainzClient::Result& ret : results) { Song song; song.set_artist(artist); song.set_album(album); @@ -147,18 +153,22 @@ void CddaDevice::AudioCDTagsLoaded(const QString& artist, const QString& album, song.set_track(track_number); song.set_year(ret.year_); song.set_id(track_number); - // We need to set url: that's how playlist will find the correct item to update - song.set_url(QUrl(QString("cdda://%1/%2").arg(unique_id()).arg(track_number++))); + // We need to set url: that's how playlist will find the correct item to + // update + song.set_url( + QUrl(QString("cdda://%1/%2").arg(unique_id()).arg(track_number++))); songs << song; } - connect(this, SIGNAL(SongsDiscovered(const SongList&)), model_, SLOT(SongsDiscovered(const SongList&))); + connect(this, SIGNAL(SongsDiscovered(const SongList&)), model_, + SLOT(SongsDiscovered(const SongList&))); emit SongsDiscovered(songs); song_count_ = songs.size(); } void CddaDevice::Refresh() { - if ((cdio_ && cdda_) && /* already init... */ - cdio_get_media_changed(cdio_) != 1 /* ...and hasn't change since last time */) { + if ((cdio_ && cdda_) && /* already init... */ + cdio_get_media_changed(cdio_) != + 1 /* ...and hasn't change since last time */) { return; } // Check if mutex is already token (i.e. init is already taking place) diff --git a/src/devices/cddadevice.h b/src/devices/cddadevice.h index ceae9567d..4e5b11604 100644 --- a/src/devices/cddadevice.h +++ b/src/devices/cddadevice.h @@ -28,14 +28,13 @@ #include "core/song.h" #include "musicbrainz/musicbrainzclient.h" -class CddaDevice: public ConnectedDevice { +class CddaDevice : public ConnectedDevice { Q_OBJECT -public: + public: Q_INVOKABLE CddaDevice(const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, bool first_time); ~CddaDevice(); void Init(); @@ -48,15 +47,14 @@ public: signals: void SongsDiscovered(const SongList& songs); -private slots: + private slots: void AudioCDTagsLoaded(const QString& artist, const QString& album, const MusicBrainzClient::ResultList& results); -private: - GstElement *cdda_; - CdIo_t *cdio_; + private: + GstElement* cdda_; + CdIo_t* cdio_; QMutex mutex_init_; - }; #endif diff --git a/src/devices/cddalister.cpp b/src/devices/cddalister.cpp index e4aa68724..9d7bbe5b6 100644 --- a/src/devices/cddalister.cpp +++ b/src/devices/cddalister.cpp @@ -27,9 +27,7 @@ #include "core/logging.h" #include "core/song.h" -QStringList CddaLister::DeviceUniqueIDs() { - return devices_list_; -} +QStringList CddaLister::DeviceUniqueIDs() { return devices_list_; } QVariantList CddaLister::DeviceIcons(const QString&) { QVariantList icons; @@ -38,7 +36,7 @@ QVariantList CddaLister::DeviceIcons(const QString&) { } QString CddaLister::DeviceManufacturer(const QString& id) { - CdIo_t *cdio = cdio_open (id.toLocal8Bit().constData(), DRIVER_DEVICE); + CdIo_t* cdio = cdio_open(id.toLocal8Bit().constData(), DRIVER_DEVICE); cdio_hwinfo_t cd_info; if (cdio_get_hwinfo(cdio, &cd_info)) { cdio_destroy(cdio); @@ -49,7 +47,7 @@ QString CddaLister::DeviceManufacturer(const QString& id) { } QString CddaLister::DeviceModel(const QString& id) { - CdIo_t *cdio = cdio_open (id.toLocal8Bit().constData(), DRIVER_DEVICE); + CdIo_t* cdio = cdio_open(id.toLocal8Bit().constData(), DRIVER_DEVICE); cdio_hwinfo_t cd_info; if (cdio_get_hwinfo(cdio, &cd_info)) { cdio_destroy(cdio); @@ -59,20 +57,16 @@ QString CddaLister::DeviceModel(const QString& id) { return QString(); } -quint64 CddaLister::DeviceCapacity(const QString&) { - return 0; -} +quint64 CddaLister::DeviceCapacity(const QString&) { return 0; } -quint64 CddaLister::DeviceFreeSpace(const QString&) { - return 0; -} +quint64 CddaLister::DeviceFreeSpace(const QString&) { return 0; } QVariantMap CddaLister::DeviceHardwareInfo(const QString&) { return QVariantMap(); } QString CddaLister::MakeFriendlyName(const QString& id) { - CdIo_t *cdio = cdio_open (id.toLocal8Bit().constData(), DRIVER_DEVICE); + CdIo_t* cdio = cdio_open(id.toLocal8Bit().constData(), DRIVER_DEVICE); cdio_hwinfo_t cd_info; if (cdio_get_hwinfo(cdio, &cd_info)) { cdio_destroy(cdio); @@ -90,8 +84,7 @@ void CddaLister::UnmountDevice(const QString& id) { cdio_eject_media_drive(id.toLocal8Bit().constData()); } -void CddaLister::UpdateDeviceFreeSpace(const QString&) { -} +void CddaLister::UpdateDeviceFreeSpace(const QString&) {} void CddaLister::Init() { cdio_init(); @@ -100,19 +93,20 @@ void CddaLister::Init() { qLog(Error) << "libcdio was compiled without support for OS X!"; } #endif - char **devices = cdio_get_devices(DRIVER_DEVICE); + char** devices = cdio_get_devices(DRIVER_DEVICE); if (!devices) { qLog(Debug) << "No CD devices found"; return; } - for (; *devices != NULL; ++devices) { + for (; *devices != nullptr; ++devices) { QString device(*devices); QFileInfo device_info(device); if (device_info.isSymLink()) { device = device_info.symLinkTarget(); } #ifdef Q_OS_DARWIN - // Every track is detected as a separate device on Darwin. The raw disk looks + // Every track is detected as a separate device on Darwin. The raw disk + // looks // like /dev/rdisk1 if (!device.contains(QRegExp("^/dev/rdisk[0-9]$"))) { continue; @@ -124,4 +118,3 @@ void CddaLister::Init() { } } } - diff --git a/src/devices/cddalister.h b/src/devices/cddalister.h index dd6c728d9..47718826a 100644 --- a/src/devices/cddalister.h +++ b/src/devices/cddalister.h @@ -27,7 +27,7 @@ class CddaLister : public DeviceLister { Q_OBJECT -public: + public: CddaLister() {} QStringList DeviceUniqueIDs(); @@ -44,9 +44,7 @@ public: void UpdateDeviceFreeSpace(const QString&); void Init(); -private: + private: QStringList devices_list_; - }; -#endif // CDDALISTER_H - +#endif // CDDALISTER_H diff --git a/src/devices/connecteddevice.cpp b/src/devices/connecteddevice.cpp index 56bb714da..8d4031714 100644 --- a/src/devices/connecteddevice.cpp +++ b/src/devices/connecteddevice.cpp @@ -28,31 +28,30 @@ #include ConnectedDevice::ConnectedDevice(const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, + const QString& unique_id, + DeviceManager* manager, Application* app, int database_id, bool first_time) - : QObject(manager), - app_(app), - url_(url), - first_time_(first_time), - lister_(lister), - unique_id_(unique_id), - database_id_(database_id), - manager_(manager), - backend_(NULL), - model_(NULL), - song_count_(0) -{ + : QObject(manager), + app_(app), + url_(url), + first_time_(first_time), + lister_(lister), + unique_id_(unique_id), + database_id_(database_id), + manager_(manager), + backend_(nullptr), + model_(nullptr), + song_count_(0) { qLog(Info) << "connected" << url << unique_id << first_time; // Create the backend in the database thread. backend_ = new LibraryBackend(); backend_->moveToThread(app_->database()->thread()); - connect(backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(BackendTotalSongCountUpdated(int))); + connect(backend_, SIGNAL(TotalSongCountUpdated(int)), + SLOT(BackendTotalSongCountUpdated(int))); - backend_->Init(app_->database(), - QString("device_%1_songs").arg(database_id), + backend_->Init(app_->database(), QString("device_%1_songs").arg(database_id), QString("device_%1_directories").arg(database_id), QString("device_%1_subdirectories").arg(database_id), QString("device_%1_fts").arg(database_id)); @@ -61,12 +60,10 @@ ConnectedDevice::ConnectedDevice(const QUrl& url, DeviceLister* lister, model_ = new LibraryModel(backend_, app_, this); } -ConnectedDevice::~ConnectedDevice() { - backend_->deleteLater(); -} +ConnectedDevice::~ConnectedDevice() { backend_->deleteLater(); } -void ConnectedDevice::InitBackendDirectory( - const QString& mount_point, bool first_time, bool rewrite_path) { +void ConnectedDevice::InitBackendDirectory(const QString& mount_point, + bool first_time, bool rewrite_path) { if (first_time || backend_->GetAllDirectories().isEmpty()) { backend_->AddDirectory(mount_point); } else { diff --git a/src/devices/connecteddevice.h b/src/devices/connecteddevice.h index 3eb468a39..8a347fa9f 100644 --- a/src/devices/connecteddevice.h +++ b/src/devices/connecteddevice.h @@ -18,14 +18,14 @@ #ifndef CONNECTEDDEVICE_H #define CONNECTEDDEVICE_H -#include "core/musicstorage.h" -#include "core/song.h" +#include #include #include #include -#include +#include "core/musicstorage.h" +#include "core/song.h" class Application; class Database; @@ -34,21 +34,21 @@ class DeviceManager; class LibraryBackend; class LibraryModel; -class ConnectedDevice : public QObject, public virtual MusicStorage, - public boost::enable_shared_from_this { +class ConnectedDevice : public QObject, + public virtual MusicStorage, + public std::enable_shared_from_this { Q_OBJECT -public: + public: ConnectedDevice(const QUrl& url, DeviceLister* lister, const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + Application* app, int database_id, bool first_time); ~ConnectedDevice(); virtual void Init() = 0; // For some devices (e.g. CD devices) we don't have callbacks to be notified // when something change: we can call this method to refresh device's state - virtual void Refresh() { } + virtual void Refresh() {} virtual TranscodeMode GetTranscodeMode() const; virtual Song::FileType GetTranscodeFormat() const; @@ -68,10 +68,11 @@ signals: void TaskStarted(int id); void SongCountUpdated(int count); -protected: - void InitBackendDirectory(const QString& mount_point, bool first_time, bool rewrite_path = true); + protected: + void InitBackendDirectory(const QString& mount_point, bool first_time, + bool rewrite_path = true); -protected: + protected: Application* app_; QUrl url_; @@ -86,8 +87,8 @@ protected: int song_count_; -private slots: + private slots: void BackendTotalSongCountUpdated(int count); }; -#endif // CONNECTEDDEVICE_H +#endif // CONNECTEDDEVICE_H diff --git a/src/devices/devicedatabasebackend.cpp b/src/devices/devicedatabasebackend.cpp index 7c83978e8..14f28ed66 100644 --- a/src/devices/devicedatabasebackend.cpp +++ b/src/devices/devicedatabasebackend.cpp @@ -25,14 +25,10 @@ const int DeviceDatabaseBackend::kDeviceSchemaVersion = 0; -DeviceDatabaseBackend::DeviceDatabaseBackend(QObject *parent) - : QObject(parent) -{ -} +DeviceDatabaseBackend::DeviceDatabaseBackend(QObject* parent) + : QObject(parent) {} -void DeviceDatabaseBackend::Init(Database* db) { - db_ = db; -} +void DeviceDatabaseBackend::Init(Database* db) { db_ = db; } DeviceDatabaseBackend::DeviceList DeviceDatabaseBackend::GetAllDevices() { QMutexLocker l(db_->Mutex()); @@ -40,9 +36,11 @@ DeviceDatabaseBackend::DeviceList DeviceDatabaseBackend::GetAllDevices() { DeviceList ret; - QSqlQuery q("SELECT ROWID, unique_id, friendly_name, size, icon," - " transcode_mode, transcode_format" - " FROM devices", db); + QSqlQuery q( + "SELECT ROWID, unique_id, friendly_name, size, icon," + " transcode_mode, transcode_format" + " FROM devices", + db); q.exec(); if (db_->CheckErrors(q)) return ret; @@ -67,11 +65,13 @@ int DeviceDatabaseBackend::AddDevice(const Device& device) { ScopedTransaction t(&db); // Insert the device into the devices table - QSqlQuery q("INSERT INTO devices (" - " unique_id, friendly_name, size, icon," - " transcode_mode, transcode_format)" - " VALUES (:unique_id, :friendly_name, :size, :icon," - " :transcode_mode, :transcode_format)", db); + QSqlQuery q( + "INSERT INTO devices (" + " unique_id, friendly_name, size, icon," + " transcode_mode, transcode_format)" + " VALUES (:unique_id, :friendly_name, :size, :icon," + " :transcode_mode, :transcode_format)", + db); q.bindValue(":unique_id", device.unique_id_); q.bindValue(":friendly_name", device.friendly_name_); q.bindValue(":size", device.size_); @@ -118,17 +118,21 @@ void DeviceDatabaseBackend::RemoveDevice(int id) { } void DeviceDatabaseBackend::SetDeviceOptions(int id, - const QString &friendly_name, const QString &icon_name, - MusicStorage::TranscodeMode mode, Song::FileType format) { + const QString& friendly_name, + const QString& icon_name, + MusicStorage::TranscodeMode mode, + Song::FileType format) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q("UPDATE devices" - " SET friendly_name=:friendly_name," - " icon=:icon_name," - " transcode_mode=:transcode_mode," - " transcode_format=:transcode_format" - " WHERE ROWID=:id", db); + QSqlQuery q( + "UPDATE devices" + " SET friendly_name=:friendly_name," + " icon=:icon_name," + " transcode_mode=:transcode_mode," + " transcode_format=:transcode_format" + " WHERE ROWID=:id", + db); q.bindValue(":friendly_name", friendly_name); q.bindValue(":icon_name", icon_name); q.bindValue(":transcode_mode", mode); diff --git a/src/devices/devicedatabasebackend.h b/src/devices/devicedatabasebackend.h index 1e008c896..f4d5848d4 100644 --- a/src/devices/devicedatabasebackend.h +++ b/src/devices/devicedatabasebackend.h @@ -28,8 +28,8 @@ class Database; class DeviceDatabaseBackend : public QObject { Q_OBJECT -public: - Q_INVOKABLE DeviceDatabaseBackend(QObject* parent = 0); + public: + Q_INVOKABLE DeviceDatabaseBackend(QObject* parent = nullptr); struct Device { Device() : id_(-1) {} @@ -54,13 +54,13 @@ public: int AddDevice(const Device& device); void RemoveDevice(int id); - void SetDeviceOptions(int id, - const QString& friendly_name, const QString& icon_name, - MusicStorage::TranscodeMode mode, Song::FileType format); + void SetDeviceOptions(int id, const QString& friendly_name, + const QString& icon_name, + MusicStorage::TranscodeMode mode, + Song::FileType format); -private: + private: Database* db_; - }; -#endif // DEVICEDATABASEBACKEND_H +#endif // DEVICEDATABASEBACKEND_H diff --git a/src/devices/devicekitlister.cpp b/src/devices/devicekitlister.cpp index c77246d21..c8e1d9c66 100644 --- a/src/devices/devicekitlister.cpp +++ b/src/devices/devicekitlister.cpp @@ -24,23 +24,21 @@ #include "dbus/udisksdevice.h" #ifdef HAVE_LIBGPOD -# include "gpoddevice.h" +#include "gpoddevice.h" #endif #include #include -DeviceKitLister::DeviceKitLister() -{ -} +DeviceKitLister::DeviceKitLister() {} -DeviceKitLister::~DeviceKitLister() { - qLog(Debug) << __PRETTY_FUNCTION__; -} +DeviceKitLister::~DeviceKitLister() { qLog(Debug) << __PRETTY_FUNCTION__; } QString DeviceKitLister::DeviceData::unique_id() const { - return QString("DeviceKit/%1/%2/%3/%4").arg(drive_serial, drive_vendor, drive_model).arg(device_size); + return QString("DeviceKit/%1/%2/%3/%4") + .arg(drive_serial, drive_vendor, drive_model) + .arg(device_size); } void DeviceKitLister::Init() { @@ -49,26 +47,30 @@ void DeviceKitLister::Init() { "/org/freedesktop/UDisks", QDBusConnection::systemBus())); // Get all the devices currently attached - QDBusPendingReply > reply = interface_->EnumerateDevices(); + QDBusPendingReply > reply = + interface_->EnumerateDevices(); reply.waitForFinished(); if (!reply.isValid()) { - qLog(Warning) << "Error enumerating DeviceKit-disks devices:" << reply.error().name() << reply.error().message(); + qLog(Warning) << "Error enumerating DeviceKit-disks devices:" + << reply.error().name() << reply.error().message(); interface_.reset(); return; } // Listen for changes - connect(interface_.get(), SIGNAL(DeviceAdded(QDBusObjectPath)), SLOT(DBusDeviceAdded(QDBusObjectPath))); - connect(interface_.get(), SIGNAL(DeviceRemoved(QDBusObjectPath)), SLOT(DBusDeviceRemoved(QDBusObjectPath))); - connect(interface_.get(), SIGNAL(DeviceChanged(QDBusObjectPath)), SLOT(DBusDeviceChanged(QDBusObjectPath))); + connect(interface_.get(), SIGNAL(DeviceAdded(QDBusObjectPath)), + SLOT(DBusDeviceAdded(QDBusObjectPath))); + connect(interface_.get(), SIGNAL(DeviceRemoved(QDBusObjectPath)), + SLOT(DBusDeviceRemoved(QDBusObjectPath))); + connect(interface_.get(), SIGNAL(DeviceChanged(QDBusObjectPath)), + SLOT(DBusDeviceChanged(QDBusObjectPath))); // Get information about each one QMap device_data; - foreach (const QDBusObjectPath& path, reply.value()) { + for (const QDBusObjectPath& path : reply.value()) { DeviceData data = ReadDeviceData(path); - if (data.suitable) - device_data[data.unique_id()] = data; + if (data.suitable) device_data[data.unique_id()] = data; } // Update the internal cache @@ -78,7 +80,7 @@ void DeviceKitLister::Init() { } // Notify about the changes - foreach (const QString& id, device_data.keys()) { + for (const QString& id : device_data.keys()) { emit DeviceAdded(id); } } @@ -88,36 +90,36 @@ QStringList DeviceKitLister::DeviceUniqueIDs() { return device_data_.keys(); } -QVariantList DeviceKitLister::DeviceIcons(const QString &id) { +QVariantList DeviceKitLister::DeviceIcons(const QString& id) { QString path = LockAndGetDeviceInfo(id, &DeviceData::device_mount_paths)[0]; - return QVariantList() - << GuessIconForPath(path) - << GuessIconForModel(DeviceManufacturer(id), DeviceModel(id)) - << LockAndGetDeviceInfo(id, &DeviceData::device_presentation_icon_name); + return QVariantList() << GuessIconForPath(path) + << GuessIconForModel(DeviceManufacturer(id), + DeviceModel(id)) + << LockAndGetDeviceInfo( + id, &DeviceData::device_presentation_icon_name); } -QString DeviceKitLister::DeviceManufacturer(const QString &id) { +QString DeviceKitLister::DeviceManufacturer(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceData::drive_vendor); } -QString DeviceKitLister::DeviceModel(const QString &id) { +QString DeviceKitLister::DeviceModel(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceData::drive_model); } -quint64 DeviceKitLister::DeviceCapacity(const QString &id) { +quint64 DeviceKitLister::DeviceCapacity(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceData::device_size); } -quint64 DeviceKitLister::DeviceFreeSpace(const QString &id) { +quint64 DeviceKitLister::DeviceFreeSpace(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceData::free_space); } -QVariantMap DeviceKitLister::DeviceHardwareInfo(const QString &id) { +QVariantMap DeviceKitLister::DeviceHardwareInfo(const QString& id) { QVariantMap ret; QMutexLocker l(&mutex_); - if (!device_data_.contains(id)) - return ret; + if (!device_data_.contains(id)) return ret; const DeviceData& data = device_data_[id]; ret[QT_TR_NOOP("DBus path")] = data.dbus_path; @@ -127,38 +129,35 @@ QVariantMap DeviceKitLister::DeviceHardwareInfo(const QString &id) { return ret; } -QString DeviceKitLister::MakeFriendlyName(const QString &id) { +QString DeviceKitLister::MakeFriendlyName(const QString& id) { QMutexLocker l(&mutex_); - if (!device_data_.contains(id)) - return QString(); + if (!device_data_.contains(id)) return QString(); const DeviceData& data = device_data_[id]; if (!data.device_presentation_name.isEmpty()) return data.device_presentation_name; if (!data.drive_model.isEmpty() && !data.drive_vendor.isEmpty()) return data.drive_vendor + " " + data.drive_model; - if (!data.drive_model.isEmpty()) - return data.drive_model; + if (!data.drive_model.isEmpty()) return data.drive_model; return data.drive_serial; } DeviceKitLister::DeviceData DeviceKitLister::ReadDeviceData( - const QDBusObjectPath &path) const { + const QDBusObjectPath& path) const { DeviceData ret; OrgFreedesktopUDisksDeviceInterface device( - OrgFreedesktopUDisksInterface::staticInterfaceName(), - path.path(), QDBusConnection::systemBus()); + OrgFreedesktopUDisksInterface::staticInterfaceName(), path.path(), + QDBusConnection::systemBus()); if (!device.isValid()) { - qLog(Warning) << "Error connecting to the device interface on" << path.path(); + qLog(Warning) << "Error connecting to the device interface on" + << path.path(); return ret; } // Don't do anything with internal drives, hidden drives, or partition tables - if (device.deviceIsSystemInternal() || - device.devicePresentationHide() || - device.deviceMountPaths().isEmpty() || - device.deviceIsPartitionTable()) { + if (device.deviceIsSystemInternal() || device.devicePresentationHide() || + device.deviceMountPaths().isEmpty() || device.deviceIsPartitionTable()) { return ret; } @@ -180,10 +179,9 @@ DeviceKitLister::DeviceData DeviceKitLister::ReadDeviceData( return ret; } -void DeviceKitLister::DBusDeviceAdded(const QDBusObjectPath &path) { +void DeviceKitLister::DBusDeviceAdded(const QDBusObjectPath& path) { DeviceData data = ReadDeviceData(path); - if (!data.suitable) - return; + if (!data.suitable) return; { QMutexLocker l(&mutex_); @@ -193,13 +191,12 @@ void DeviceKitLister::DBusDeviceAdded(const QDBusObjectPath &path) { emit DeviceAdded(data.unique_id()); } -void DeviceKitLister::DBusDeviceRemoved(const QDBusObjectPath &path) { +void DeviceKitLister::DBusDeviceRemoved(const QDBusObjectPath& path) { QString id; { QMutexLocker l(&mutex_); id = FindUniqueIdByPath(path); - if (id.isNull()) - return; + if (id.isNull()) return; device_data_.remove(id); } @@ -207,7 +204,7 @@ void DeviceKitLister::DBusDeviceRemoved(const QDBusObjectPath &path) { emit DeviceRemoved(id); } -void DeviceKitLister::DBusDeviceChanged(const QDBusObjectPath &path) { +void DeviceKitLister::DBusDeviceChanged(const QDBusObjectPath& path) { bool already_known = false; { QMutexLocker l(&mutex_); @@ -229,17 +226,16 @@ void DeviceKitLister::DBusDeviceChanged(const QDBusObjectPath &path) { } } -QString DeviceKitLister::FindUniqueIdByPath(const QDBusObjectPath &path) const { - foreach (const DeviceData& data, device_data_) { - if (data.dbus_path == path.path()) - return data.unique_id(); +QString DeviceKitLister::FindUniqueIdByPath(const QDBusObjectPath& path) const { + for (const DeviceData& data : device_data_) { + if (data.dbus_path == path.path()) return data.unique_id(); } return QString(); } QList DeviceKitLister::MakeDeviceUrls(const QString& id) { - QString mount_point = LockAndGetDeviceInfo( - id, &DeviceData::device_mount_paths)[0]; + QString mount_point = + LockAndGetDeviceInfo(id, &DeviceData::device_mount_paths)[0]; return QList() << MakeUrlFromLocalPath(mount_point); } @@ -248,8 +244,8 @@ void DeviceKitLister::UnmountDevice(const QString& id) { QString path = LockAndGetDeviceInfo(id, &DeviceData::dbus_path); OrgFreedesktopUDisksDeviceInterface device( - OrgFreedesktopUDisksInterface::staticInterfaceName(), - path, QDBusConnection::systemBus()); + OrgFreedesktopUDisksInterface::staticInterfaceName(), path, + QDBusConnection::systemBus()); if (!device.isValid()) { qLog(Warning) << "Error connecting to the device interface on" << path; return; @@ -258,8 +254,8 @@ void DeviceKitLister::UnmountDevice(const QString& id) { // Get the device's parent drive QString drive_path = device.partitionSlave().path(); OrgFreedesktopUDisksDeviceInterface drive( - OrgFreedesktopUDisksInterface::staticInterfaceName(), - drive_path, QDBusConnection::systemBus()); + OrgFreedesktopUDisksInterface::staticInterfaceName(), drive_path, + QDBusConnection::systemBus()); if (!drive.isValid()) { qLog(Warning) << "Error connecting to the drive interface on" << drive_path; return; @@ -277,12 +273,12 @@ void DeviceKitLister::UnmountDevice(const QString& id) { void DeviceKitLister::UpdateDeviceFreeSpace(const QString& id) { { QMutexLocker l(&mutex_); - if (!device_data_.contains(id)) - return; + if (!device_data_.contains(id)) return; DeviceData& data = device_data_[id]; if (!data.device_mount_paths.isEmpty()) - data.free_space = Utilities::FileSystemFreeSpace(data.device_mount_paths[0]); + data.free_space = + Utilities::FileSystemFreeSpace(data.device_mount_paths[0]); } emit DeviceChanged(id); diff --git a/src/devices/devicekitlister.h b/src/devices/devicekitlister.h index c91bdb437..0fcbcbcd5 100644 --- a/src/devices/devicekitlister.h +++ b/src/devices/devicekitlister.h @@ -18,12 +18,12 @@ #ifndef DEVICEKITLISTER_H #define DEVICEKITLISTER_H -#include "devicelister.h" +#include #include #include -#include +#include "devicelister.h" class OrgFreedesktopUDisksInterface; @@ -32,7 +32,7 @@ class QDBusObjectPath; class DeviceKitLister : public DeviceLister { Q_OBJECT -public: + public: DeviceKitLister(); ~DeviceKitLister(); @@ -44,23 +44,23 @@ public: quint64 DeviceFreeSpace(const QString& id); QVariantMap DeviceHardwareInfo(const QString& id); - QString MakeFriendlyName(const QString &id); - QList MakeDeviceUrls(const QString &id); + QString MakeFriendlyName(const QString& id); + QList MakeDeviceUrls(const QString& id); - void UnmountDevice(const QString &id); + void UnmountDevice(const QString& id); -public slots: + public slots: void UpdateDeviceFreeSpace(const QString& id); -protected: + protected: void Init(); -private slots: + private slots: void DBusDeviceAdded(const QDBusObjectPath& path); void DBusDeviceRemoved(const QDBusObjectPath& path); void DBusDeviceChanged(const QDBusObjectPath& path); -private: + private: struct DeviceData { DeviceData() : suitable(false), device_size(0), free_space(0) {} @@ -87,20 +87,20 @@ private: template T LockAndGetDeviceInfo(const QString& id, T DeviceData::*field); -private: - boost::scoped_ptr interface_; + private: + std::unique_ptr interface_; QMutex mutex_; QMap device_data_; }; template -T DeviceKitLister::LockAndGetDeviceInfo(const QString& id, T DeviceData::*field) { +T DeviceKitLister::LockAndGetDeviceInfo(const QString& id, + T DeviceData::*field) { QMutexLocker l(&mutex_); - if (!device_data_.contains(id)) - return T(); + if (!device_data_.contains(id)) return T(); return device_data_[id].*field; } -#endif // DEVICEKITLISTER_H +#endif // DEVICEKITLISTER_H diff --git a/src/devices/devicelister.cpp b/src/devices/devicelister.cpp index 054d69510..79fefd437 100644 --- a/src/devices/devicelister.cpp +++ b/src/devices/devicelister.cpp @@ -28,10 +28,7 @@ #include #endif -DeviceLister::DeviceLister() - : thread_(NULL) -{ -} +DeviceLister::DeviceLister() : thread_(nullptr) {} DeviceLister::~DeviceLister() { if (thread_) { @@ -48,9 +45,7 @@ void DeviceLister::Start() { thread_->start(); } -void DeviceLister::ThreadStarted() { - Init(); -} +void DeviceLister::ThreadStarted() { Init(); } namespace { @@ -155,7 +150,6 @@ QString GetIpodModel(Itdb_IpodModel model) { } #endif - } QUrl DeviceLister::MakeUrlFromLocalPath(const QString& path) const { @@ -204,7 +198,8 @@ QStringList DeviceLister::GuessIconForPath(const QString& path) { return ret; } -QStringList DeviceLister::GuessIconForModel(const QString& vendor, const QString& model) { +QStringList DeviceLister::GuessIconForModel(const QString& vendor, + const QString& model) { QStringList ret; if (vendor.startsWith("Google") && model.contains("Nexus")) { ret << "phone-google-nexus-one"; @@ -213,7 +208,7 @@ QStringList DeviceLister::GuessIconForModel(const QString& vendor, const QString } int DeviceLister::MountDevice(const QString& id) { - const int ret = next_mount_request_id_ ++; + const int ret = next_mount_request_id_++; emit DeviceMounted(id, ret, true); return ret; } diff --git a/src/devices/devicelister.h b/src/devices/devicelister.h index 4003fb8fc..ee0f7a3d3 100644 --- a/src/devices/devicelister.h +++ b/src/devices/devicelister.h @@ -21,15 +21,13 @@ #include #include -#include - class ConnectedDevice; class DeviceManager; class DeviceLister : public QObject { Q_OBJECT -public: + public: DeviceLister(); virtual ~DeviceLister(); @@ -41,7 +39,8 @@ public: // taken from the one with the highest priority. virtual int priority() const { return 100; } - // Query information about the devices that are available. Must be thread-safe. + // Query information about the devices that are available. Must be + // thread-safe. virtual QStringList DeviceUniqueIDs() = 0; virtual QVariantList DeviceIcons(const QString& id) = 0; virtual QString DeviceManufacturer(const QString& id) = 0; @@ -65,7 +64,7 @@ public: // Do whatever needs to be done to safely remove the device. virtual void UnmountDevice(const QString& id) = 0; -public slots: + public slots: virtual void UpdateDeviceFreeSpace(const QString& id) = 0; virtual void ShutDown() {} @@ -75,7 +74,7 @@ signals: void DeviceChanged(const QString& id); void DeviceMounted(const QString& id, int request_id, bool success); -protected: + protected: virtual void Init() = 0; QUrl MakeUrlFromLocalPath(const QString& path) const; bool IsIpod(const QString& path) const; @@ -83,12 +82,12 @@ protected: QStringList GuessIconForPath(const QString& path); QStringList GuessIconForModel(const QString& vendor, const QString& model); -protected: + protected: QThread* thread_; int next_mount_request_id_; -private slots: + private slots: void ThreadStarted(); }; -#endif // DEVICELISTER_H +#endif // DEVICELISTER_H diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp index eb2a1d351..52a532ac9 100644 --- a/src/devices/devicemanager.cpp +++ b/src/devices/devicemanager.cpp @@ -17,7 +17,7 @@ #include "devicemanager.h" -#include +#include #include #include @@ -43,36 +43,33 @@ #include "ui/iconloader.h" #ifdef HAVE_AUDIOCD -# include "cddalister.h" -# include "cddadevice.h" +#include "cddalister.h" +#include "cddadevice.h" #endif #ifdef Q_OS_DARWIN -# include "macdevicelister.h" +#include "macdevicelister.h" #endif #ifdef HAVE_LIBGPOD -# include "gpoddevice.h" +#include "gpoddevice.h" #endif #ifdef HAVE_GIO -# include "giolister.h" +#include "giolister.h" #endif #ifdef HAVE_LIBMTP -# include "mtpdevice.h" +#include "mtpdevice.h" #endif -using boost::bind; +using std::bind; const int DeviceManager::kDeviceIconSize = 32; const int DeviceManager::kDeviceIconOverlaySize = 16; - DeviceManager::DeviceInfo::DeviceInfo() - : database_id_(-1), - transcode_mode_(MusicStorage::Transcode_Unsupported), - transcode_format_(Song::Type_Unknown), - task_percentage_(-1) -{ -} + : database_id_(-1), + transcode_mode_(MusicStorage::Transcode_Unsupported), + transcode_format_(Song::Type_Unknown), + task_percentage_(-1) {} DeviceDatabaseBackend::Device DeviceManager::DeviceInfo::SaveToDb() const { DeviceDatabaseBackend::Device ret; @@ -84,7 +81,7 @@ DeviceDatabaseBackend::Device DeviceManager::DeviceInfo::SaveToDb() const { ret.transcode_format_ = transcode_format_; QStringList unique_ids; - foreach (const Backend& backend, backends_) { + for (const Backend& backend : backends_) { unique_ids << backend.unique_id_; } ret.unique_id_ = unique_ids.join(","); @@ -92,7 +89,8 @@ DeviceDatabaseBackend::Device DeviceManager::DeviceInfo::SaveToDb() const { return ret; } -void DeviceManager::DeviceInfo::InitFromDb(const DeviceDatabaseBackend::Device& dev) { +void DeviceManager::DeviceInfo::InitFromDb( + const DeviceDatabaseBackend::Device& dev) { database_id_ = dev.id_; friendly_name_ = dev.friendly_name_; size_ = dev.size_; @@ -101,19 +99,20 @@ void DeviceManager::DeviceInfo::InitFromDb(const DeviceDatabaseBackend::Device& QStringList icon_names = dev.icon_name_.split(','); QVariantList icons; - foreach (const QString& icon_name, icon_names) { + for (const QString& icon_name : icon_names) { icons << icon_name; } LoadIcon(icons, friendly_name_); QStringList unique_ids = dev.unique_id_.split(','); - foreach (const QString& id, unique_ids) { - backends_ << Backend(NULL, id); + for (const QString& id : unique_ids) { + backends_ << Backend(nullptr, id); } } -void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, const QString& name_hint) { +void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, + const QString& name_hint) { if (icons.isEmpty()) { icon_name_ = "drive-removable-media-usb-pendrive"; icon_ = IconLoader::Load(icon_name_); @@ -121,7 +120,7 @@ void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, const QStrin } // Try to load the icon with that exact name first - foreach (const QVariant& icon, icons) { + for (const QVariant& icon : icons) { if (!icon.value().isNull()) { icon_ = QIcon(icon.value()); return; @@ -147,28 +146,27 @@ void DeviceManager::DeviceInfo::LoadIcon(const QVariantList& icons, const QStrin icon_ = IconLoader::Load(icon_name_); } -const DeviceManager::DeviceInfo::Backend* DeviceManager::DeviceInfo::BestBackend() const { +const DeviceManager::DeviceInfo::Backend* +DeviceManager::DeviceInfo::BestBackend() const { int best_priority = -1; - const Backend* ret = NULL; + const Backend* ret = nullptr; - for (int i=0 ; ipriority() > best_priority) { + for (int i = 0; i < backends_.count(); ++i) { + if (backends_[i].lister_ && + backends_[i].lister_->priority() > best_priority) { best_priority = backends_[i].lister_->priority(); ret = &(backends_[i]); } } - if (!ret && !backends_.isEmpty()) - return &(backends_[0]); + if (!ret && !backends_.isEmpty()) return &(backends_[0]); return ret; } - -DeviceManager::DeviceManager(Application* app, QObject *parent) - : QAbstractListModel(parent), - app_(app), - not_connected_overlay_(IconLoader::Load("edit-delete")) -{ +DeviceManager::DeviceManager(Application* app, QObject* parent) + : QAbstractListModel(parent), + app_(app), + not_connected_overlay_(IconLoader::Load("edit-delete")) { thread_pool_.setMaxThreadCount(1); connect(app_->task_manager(), SIGNAL(TasksChanged()), SLOT(TasksChanged())); @@ -179,13 +177,14 @@ DeviceManager::DeviceManager(Application* app, QObject *parent) // This reads from the database and contends on the database mutex, which can // be very slow on startup. - ConcurrentRun::Run(&thread_pool_, bind(&DeviceManager::LoadAllDevices, this)); + ConcurrentRun::Run(&thread_pool_, + bind(&DeviceManager::LoadAllDevices, this)); // This proxy model only shows connected devices connected_devices_model_ = new DeviceStateFilterModel(this); connected_devices_model_->setSourceModel(this); - // CD devices are detected via the DiskArbitration framework instead on Darwin. +// CD devices are detected via the DiskArbitration framework instead on Darwin. #if defined(HAVE_AUDIOCD) && !defined(Q_OS_DARWIN) AddLister(new CddaLister); #endif @@ -215,7 +214,7 @@ DeviceManager::DeviceManager(Application* app, QObject *parent) } DeviceManager::~DeviceManager() { - foreach (DeviceLister* lister, listers_) { + for (DeviceLister* lister : listers_) { lister->ShutDown(); delete lister; } @@ -226,7 +225,7 @@ DeviceManager::~DeviceManager() { void DeviceManager::LoadAllDevices() { Q_ASSERT(QThread::currentThread() != qApp->thread()); DeviceDatabaseBackend::DeviceList devices = backend_->GetAllDevices(); - foreach (const DeviceDatabaseBackend::Device& device, devices) { + for (const DeviceDatabaseBackend::Device& device : devices) { DeviceInfo info; info.InitFromDb(device); devices_ << info; @@ -238,8 +237,7 @@ int DeviceManager::rowCount(const QModelIndex&) const { } QVariant DeviceManager::data(const QModelIndex& index, int role) const { - if (!index.isValid() || index.column() != 0) - return QVariant(); + if (!index.isValid() || index.column() != 0) return QVariant(); const DeviceInfo& info = devices_[index.row()]; @@ -253,8 +251,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { if (info.size_) text = text + QString(" (%1)").arg(Utilities::PrettySize(info.size_)); - if (info.device_.get()) - info.device_->Refresh(); + if (info.device_.get()) info.device_->Refresh(); return text; } @@ -287,66 +284,65 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { case Role_FreeSpace: case MusicStorage::Role_FreeSpace: - return info.BestBackend()->lister_ ? - info.BestBackend()->lister_->DeviceFreeSpace(info.BestBackend()->unique_id_) : - QVariant(); + return info.BestBackend()->lister_ + ? info.BestBackend()->lister_->DeviceFreeSpace( + info.BestBackend()->unique_id_) + : QVariant(); case Role_State: - if (info.device_) - return State_Connected; + if (info.device_) return State_Connected; if (info.BestBackend()->lister_) { - if (info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) + if (info.BestBackend()->lister_->DeviceNeedsMount( + info.BestBackend()->unique_id_)) return State_NotMounted; return State_NotConnected; } return State_Remembered; case Role_UpdatingPercentage: - if (info.task_percentage_ == -1) - return QVariant(); + if (info.task_percentage_ == -1) return QVariant(); return info.task_percentage_; case MusicStorage::Role_Storage: if (!info.device_ && info.database_id_ != -1) const_cast(this)->Connect(index.row()); - if (!info.device_) - return QVariant(); - return QVariant::fromValue >(info.device_); + if (!info.device_) return QVariant(); + return QVariant::fromValue>(info.device_); case MusicStorage::Role_StorageForceConnect: if (!info.device_) { if (info.database_id_ == -1 && - !info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) { + !info.BestBackend()->lister_->DeviceNeedsMount( + info.BestBackend()->unique_id_)) { - if (info.BestBackend()->lister_->AskForScan(info.BestBackend()->unique_id_)) { - boost::scoped_ptr dialog(new QMessageBox( + if (info.BestBackend()->lister_->AskForScan( + info.BestBackend()->unique_id_)) { + std::unique_ptr dialog(new QMessageBox( QMessageBox::Information, tr("Connect device"), - tr("This is the first time you have connected this device. Clementine will now scan the device to find music files - this may take some time."), + tr("This is the first time you have connected this device. " + "Clementine will now scan the device to find music files - " + "this may take some time."), QMessageBox::Cancel)); - QPushButton* connect = - dialog->addButton(tr("Connect device"), QMessageBox::AcceptRole); + QPushButton* connect = dialog->addButton(tr("Connect device"), + QMessageBox::AcceptRole); dialog->exec(); - if (dialog->clickedButton() != connect) - return QVariant(); + if (dialog->clickedButton() != connect) return QVariant(); } } const_cast(this)->Connect(index.row()); } - if (!info.device_) - return QVariant(); - return QVariant::fromValue >(info.device_); + if (!info.device_) return QVariant(); + return QVariant::fromValue>(info.device_); case Role_MountPath: { - if (!info.device_) - return QVariant(); + if (!info.device_) return QVariant(); QString ret = info.device_->url().path(); -# ifdef Q_OS_WIN32 - if (ret.startsWith('/')) - ret.remove(0, 1); -# endif +#ifdef Q_OS_WIN32 + if (ret.startsWith('/')) ret.remove(0, 1); +#endif return QDir::toNativeSeparators(ret); } @@ -357,8 +353,7 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { return info.transcode_format_; case Role_SongCount: - if (!info.device_) - return QVariant(); + if (!info.device_) return QVariant(); return info.device_->song_count(); default: @@ -366,45 +361,45 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const { } } -void DeviceManager::AddLister(DeviceLister *lister) { +void DeviceManager::AddLister(DeviceLister* lister) { listers_ << lister; - connect(lister, SIGNAL(DeviceAdded(QString)), SLOT(PhysicalDeviceAdded(QString))); - connect(lister, SIGNAL(DeviceRemoved(QString)), SLOT(PhysicalDeviceRemoved(QString))); - connect(lister, SIGNAL(DeviceChanged(QString)), SLOT(PhysicalDeviceChanged(QString))); + connect(lister, SIGNAL(DeviceAdded(QString)), + SLOT(PhysicalDeviceAdded(QString))); + connect(lister, SIGNAL(DeviceRemoved(QString)), + SLOT(PhysicalDeviceRemoved(QString))); + connect(lister, SIGNAL(DeviceChanged(QString)), + SLOT(PhysicalDeviceChanged(QString))); lister->Start(); } -int DeviceManager::FindDeviceById(const QString &id) const { - for (int i=0 ; i& urls) const { - if (urls.isEmpty()) - return -1; + if (urls.isEmpty()) return -1; - for (int i=0 ; i device_urls = backend.lister_->MakeDeviceUrls(backend.unique_id_); - foreach (const QUrl& url, device_urls) { - if (urls.contains(url)) - return i; + QList device_urls = + backend.lister_->MakeDeviceUrls(backend.unique_id_); + for (const QUrl& url : device_urls) { + if (urls.contains(url)) return i; } } } return -1; } -void DeviceManager::PhysicalDeviceAdded(const QString &id) { +void DeviceManager::PhysicalDeviceAdded(const QString& id) { DeviceLister* lister = qobject_cast(sender()); qLog(Info) << "Device added:" << id; @@ -413,7 +408,8 @@ void DeviceManager::PhysicalDeviceAdded(const QString &id) { int i = FindDeviceById(id); if (i != -1) { DeviceInfo& info = devices_[i]; - for (int backend_index = 0 ; backend_index < info.backends_.count() ; ++backend_index) { + for (int backend_index = 0; backend_index < info.backends_.count(); + ++backend_index) { if (info.backends_[backend_index].unique_id_ == id) { info.backends_[backend_index].lister_ = lister; break; @@ -453,7 +449,7 @@ void DeviceManager::PhysicalDeviceAdded(const QString &id) { } } -void DeviceManager::PhysicalDeviceRemoved(const QString &id) { +void DeviceManager::PhysicalDeviceRemoved(const QString& id) { DeviceLister* lister = qobject_cast(sender()); qLog(Info) << "Device removed:" << id; @@ -468,23 +464,23 @@ void DeviceManager::PhysicalDeviceRemoved(const QString &id) { if (info.database_id_ != -1) { // Keep the structure around, but just "disconnect" it - for (int backend_index = 0 ; backend_index < info.backends_.count() ; ++backend_index) { + for (int backend_index = 0; backend_index < info.backends_.count(); + ++backend_index) { if (info.backends_[backend_index].unique_id_ == id) { - info.backends_[backend_index].lister_ = NULL; + info.backends_[backend_index].lister_ = nullptr; break; } } - if (info.device_ && info.device_->lister() == lister) - info.device_.reset(); + if (info.device_ && info.device_->lister() == lister) info.device_.reset(); - if (!info.device_) - emit DeviceDisconnected(i); + if (!info.device_) emit DeviceDisconnected(i); emit dataChanged(index(i, 0), index(i, 0)); } else { // If this was the last lister for the device then remove it from the model - for (int backend_index = 0 ; backend_index < info.backends_.count() ; ++backend_index) { + for (int backend_index = 0; backend_index < info.backends_.count(); + ++backend_index) { if (info.backends_[backend_index].unique_id_ == id) { info.backends_.removeAt(backend_index); break; @@ -495,11 +491,11 @@ void DeviceManager::PhysicalDeviceRemoved(const QString &id) { beginRemoveRows(QModelIndex(), i, i); devices_.removeAt(i); - foreach (const QModelIndex& idx, persistentIndexList()) { + for (const QModelIndex& idx : persistentIndexList()) { if (idx.row() == i) changePersistentIndex(idx, QModelIndex()); else if (idx.row() > i) - changePersistentIndex(idx, index(idx.row()-1, idx.column())); + changePersistentIndex(idx, index(idx.row() - 1, idx.column())); } endRemoveRows(); @@ -507,7 +503,7 @@ void DeviceManager::PhysicalDeviceRemoved(const QString &id) { } } -void DeviceManager::PhysicalDeviceChanged(const QString &id) { +void DeviceManager::PhysicalDeviceChanged(const QString& id) { DeviceLister* lister = qobject_cast(sender()); Q_UNUSED(lister); @@ -520,17 +516,18 @@ void DeviceManager::PhysicalDeviceChanged(const QString &id) { // TODO } -boost::shared_ptr DeviceManager::Connect(int row) { +std::shared_ptr DeviceManager::Connect(int row) { DeviceInfo& info = devices_[row]; - if (info.device_) // Already connected + if (info.device_) // Already connected return info.device_; - boost::shared_ptr ret; + std::shared_ptr ret; - if (!info.BestBackend()->lister_) // Not physically connected + if (!info.BestBackend()->lister_) // Not physically connected return ret; - if (info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) { + if (info.BestBackend()->lister_->DeviceNeedsMount( + info.BestBackend()->unique_id_)) { // Mount the device info.BestBackend()->lister_->MountDevice(info.BestBackend()->unique_id_); return ret; @@ -545,12 +542,11 @@ boost::shared_ptr DeviceManager::Connect(int row) { // Get the device URLs QList urls = info.BestBackend()->lister_->MakeDeviceUrls( info.BestBackend()->unique_id_); - if (urls.isEmpty()) - return ret; + if (urls.isEmpty()) return ret; // Take the first URL that we have a handler for QUrl device_url; - foreach (const QUrl& url, urls) { + for (const QUrl& url : urls) { qLog(Info) << "Connecting" << url; // Find a device class for this URL's scheme @@ -563,18 +559,24 @@ boost::shared_ptr DeviceManager::Connect(int row) { // was "ipod" or "mtp" then the user compiled out support and the device // won't work properly. if (url.scheme() == "mtp" || url.scheme() == "gphoto2") { - if (QMessageBox::critical(NULL, tr("This device will not work properly"), - tr("This is an MTP device, but you compiled Clementine without libmtp support.") + " " + - tr("If you continue, this device will work slowly and songs copied to it may not work."), - QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) + if (QMessageBox::critical( + nullptr, tr("This device will not work properly"), + tr("This is an MTP device, but you compiled Clementine without " + "libmtp support.") + + " " + tr("If you continue, this device will work slowly and " + "songs copied to it may not work."), + QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) return ret; } if (url.scheme() == "ipod") { - if (QMessageBox::critical(NULL, tr("This device will not work properly"), - tr("This is an iPod, but you compiled Clementine without libgpod support.") + " " + - tr("If you continue, this device will work slowly and songs copied to it may not work."), - QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) + if (QMessageBox::critical( + nullptr, tr("This device will not work properly"), + tr("This is an iPod, but you compiled Clementine without libgpod " + "support.") + + " " + tr("If you continue, this device will work slowly and " + "songs copied to it may not work."), + QMessageBox::Abort, QMessageBox::Ignore) == QMessageBox::Abort) return ret; } } @@ -582,17 +584,21 @@ boost::shared_ptr DeviceManager::Connect(int row) { if (device_url.isEmpty()) { // Munge the URL list into a string list QStringList url_strings; - foreach (const QUrl& url, urls) { url_strings << url.toString(); } + for (const QUrl& url : urls) { + url_strings << url.toString(); + } - app_->AddError(tr("This type of device is not supported: %1").arg(url_strings.join(", "))); + app_->AddError(tr("This type of device is not supported: %1") + .arg(url_strings.join(", "))); return ret; } QMetaObject meta_object = device_classes_.value(device_url.scheme()); QObject* instance = meta_object.newInstance( - Q_ARG(QUrl, device_url), Q_ARG(DeviceLister*, info.BestBackend()->lister_), - Q_ARG(QString, info.BestBackend()->unique_id_), Q_ARG(DeviceManager*, this), - Q_ARG(Application*, app_), + Q_ARG(QUrl, device_url), + Q_ARG(DeviceLister*, info.BestBackend()->lister_), + Q_ARG(QString, info.BestBackend()->unique_id_), + Q_ARG(DeviceManager*, this), Q_ARG(Application*, app_), Q_ARG(int, info.database_id_), Q_ARG(bool, first_time)); ret.reset(static_cast(instance)); @@ -603,8 +609,10 @@ boost::shared_ptr DeviceManager::Connect(int row) { info.device_ = ret; emit dataChanged(index(row), index(row)); - connect(info.device_.get(), SIGNAL(TaskStarted(int)), SLOT(DeviceTaskStarted(int))); - connect(info.device_.get(), SIGNAL(SongCountUpdated(int)), SLOT(DeviceSongCountUpdated(int))); + connect(info.device_.get(), SIGNAL(TaskStarted(int)), + SLOT(DeviceTaskStarted(int))); + connect(info.device_.get(), SIGNAL(SongCountUpdated(int)), + SLOT(DeviceSongCountUpdated(int))); } emit DeviceConnected(row); @@ -612,7 +620,8 @@ boost::shared_ptr DeviceManager::Connect(int row) { return ret; } -boost::shared_ptr DeviceManager::GetConnectedDevice(int row) const { +std::shared_ptr DeviceManager::GetConnectedDevice(int row) + const { return devices_[row].device_; } @@ -626,7 +635,7 @@ DeviceLister* DeviceManager::GetLister(int row) const { void DeviceManager::Disconnect(int row) { DeviceInfo& info = devices_[row]; - if (!info.device_) // Already disconnected + if (!info.device_) // Already disconnected return; info.device_.reset(); @@ -636,11 +645,9 @@ void DeviceManager::Disconnect(int row) { void DeviceManager::Forget(int row) { DeviceInfo& info = devices_[row]; - if (info.database_id_ == -1) - return; + if (info.database_id_ == -1) return; - if (info.device_) - Disconnect(row); + if (info.device_) Disconnect(row); backend_->RemoveDevice(info.database_id_); info.database_id_ = -1; @@ -650,11 +657,11 @@ void DeviceManager::Forget(int row) { beginRemoveRows(QModelIndex(), row, row); devices_.removeAt(row); - foreach (const QModelIndex& idx, persistentIndexList()) { + for (const QModelIndex& idx : persistentIndexList()) { if (idx.row() == row) changePersistentIndex(idx, QModelIndex()); else if (idx.row() > row) - changePersistentIndex(idx, index(idx.row()-1, idx.column())); + changePersistentIndex(idx, index(idx.row() - 1, idx.column())); } endRemoveRows(); @@ -664,15 +671,17 @@ void DeviceManager::Forget(int row) { const QString id = info.BestBackend()->unique_id_; info.friendly_name_ = info.BestBackend()->lister_->MakeFriendlyName(id); - info.LoadIcon(info.BestBackend()->lister_->DeviceIcons(id), info.friendly_name_); + info.LoadIcon(info.BestBackend()->lister_->DeviceIcons(id), + info.friendly_name_); dataChanged(index(row, 0), index(row, 0)); } } -void DeviceManager::SetDeviceOptions(int row, - const QString& friendly_name, const QString& icon_name, - MusicStorage::TranscodeMode mode, Song::FileType format) { +void DeviceManager::SetDeviceOptions(int row, const QString& friendly_name, + const QString& icon_name, + MusicStorage::TranscodeMode mode, + Song::FileType format) { DeviceInfo& info = devices_[row]; info.friendly_name_ = friendly_name; info.LoadIcon(QVariantList() << icon_name, friendly_name); @@ -688,10 +697,9 @@ void DeviceManager::SetDeviceOptions(int row, void DeviceManager::DeviceTaskStarted(int id) { ConnectedDevice* device = qobject_cast(sender()); - if (!device) - return; + if (!device) return; - for (int i=0 ; i tasks = app_->task_manager()->GetTasks(); QList finished_tasks = active_tasks_.values(); - foreach (const TaskManager::Task& task, tasks) { - if (!active_tasks_.contains(task.id)) - continue; + for (const TaskManager::Task& task : tasks) { + if (!active_tasks_.contains(task.id)) continue; QPersistentModelIndex index = active_tasks_[task.id]; - if (!index.isValid()) - continue; + if (!index.isValid()) continue; DeviceInfo& info = devices_[index.row()]; if (task.progress_max) @@ -723,9 +729,8 @@ void DeviceManager::TasksChanged() { finished_tasks.removeAll(index); } - foreach (const QPersistentModelIndex& index, finished_tasks) { - if (!index.isValid()) - continue; + for (const QPersistentModelIndex& index : finished_tasks) { + if (!index.isValid()) continue; DeviceInfo& info = devices_[index.row()]; info.task_percentage_ = -1; @@ -741,11 +746,9 @@ void DeviceManager::UnmountAsync(int row) { void DeviceManager::Unmount(int row) { DeviceInfo& info = devices_[row]; - if (info.database_id_ != -1 && !info.device_) - return; + if (info.database_id_ != -1 && !info.device_) return; - if (info.device_) - Disconnect(row); + if (info.device_) Disconnect(row); if (info.BestBackend()->lister_) info.BestBackend()->lister_->UnmountDevice(info.BestBackend()->unique_id_); @@ -753,12 +756,10 @@ void DeviceManager::Unmount(int row) { void DeviceManager::DeviceSongCountUpdated(int count) { ConnectedDevice* device = qobject_cast(sender()); - if (!device) - return; + if (!device) return; int row = FindDeviceById(device->unique_id()); - if (row == -1) - return; + if (row == -1) return; emit dataChanged(index(row), index(row)); } diff --git a/src/devices/devicemanager.h b/src/devices/devicemanager.h index d165d17db..439031333 100644 --- a/src/devices/devicemanager.h +++ b/src/devices/devicemanager.h @@ -19,13 +19,14 @@ #define DEVICEMANAGER_H #include "devicedatabasebackend.h" -#include "library/librarymodel.h" + +#include #include #include #include -#include +#include "library/librarymodel.h" class Application; class ConnectedDevice; @@ -37,8 +38,8 @@ class TaskManager; class DeviceManager : public QAbstractListModel { Q_OBJECT -public: - DeviceManager(Application* app, QObject* parent = 0); + public: + DeviceManager(Application* app, QObject* parent = nullptr); ~DeviceManager(); enum Role { @@ -53,7 +54,6 @@ public: Role_TranscodeMode, Role_TranscodeFormat, Role_SongCount, - LastRole, }; @@ -67,38 +67,41 @@ public: static const int kDeviceIconSize; static const int kDeviceIconOverlaySize; - DeviceStateFilterModel* connected_devices_model() const { return connected_devices_model_; } + DeviceStateFilterModel* connected_devices_model() const { + return connected_devices_model_; + } // Get info about devices int GetDatabaseId(int row) const; DeviceLister* GetLister(int row) const; - boost::shared_ptr GetConnectedDevice(int row) const; + std::shared_ptr GetConnectedDevice(int row) const; int FindDeviceById(const QString& id) const; int FindDeviceByUrl(const QList& url) const; // Actions on devices - boost::shared_ptr Connect(int row); + std::shared_ptr Connect(int row); void Disconnect(int row); void Forget(int row); void UnmountAsync(int row); - void SetDeviceOptions(int row, - const QString& friendly_name, const QString& icon_name, - MusicStorage::TranscodeMode mode, Song::FileType format); + void SetDeviceOptions(int row, const QString& friendly_name, + const QString& icon_name, + MusicStorage::TranscodeMode mode, + Song::FileType format); // QAbstractListModel - int rowCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role) const; + int rowCount(const QModelIndex& parent) const; + QVariant data(const QModelIndex& index, int role) const; -public slots: + public slots: void Unmount(int row); signals: void DeviceConnected(int row); void DeviceDisconnected(int row); -private slots: + private slots: void PhysicalDeviceAdded(const QString& id); void PhysicalDeviceRemoved(const QString& id); void PhysicalDeviceChanged(const QString& id); @@ -107,7 +110,7 @@ private slots: void DeviceSongCountUpdated(int count); void LoadAllDevices(); -private: + private: // Devices can be in three different states: // 1) Remembered in the database but not physically connected at the moment. // database_id valid, lister null, device null @@ -124,10 +127,10 @@ private: // Sometimes the same device is discovered more than once. In this case // the device will have multiple "backends". struct Backend { - Backend(DeviceLister* lister = NULL, const QString& id = QString()) - : lister_(lister), unique_id_(id) {} + Backend(DeviceLister* lister = nullptr, const QString& id = QString()) + : lister_(lister), unique_id_(id) {} - DeviceLister* lister_; // NULL if not physically connected + DeviceLister* lister_; // nullptr if not physically connected QString unique_id_; }; @@ -141,9 +144,9 @@ private: // Gets the best backend available (the one with the highest priority) const Backend* BestBackend() const; - - int database_id_; // -1 if not remembered in the database - boost::shared_ptr device_; // NULL if not connected to clementine + int database_id_; // -1 if not remembered in the database + std::shared_ptr + device_; // nullptr if not connected to clementine QList backends_; QString friendly_name_; @@ -159,11 +162,13 @@ private: }; void AddLister(DeviceLister* lister); - template void AddDeviceClass(); + template + void AddDeviceClass(); - DeviceDatabaseBackend::Device InfoToDatabaseDevice(const DeviceInfo& info) const; + DeviceDatabaseBackend::Device InfoToDatabaseDevice(const DeviceInfo& info) + const; -private: + private: Application* app_; DeviceDatabaseBackend* backend_; @@ -182,16 +187,14 @@ private: QThreadPool thread_pool_; }; - - template void DeviceManager::AddDeviceClass() { QStringList schemes = T::url_schemes(); QMetaObject obj = T::staticMetaObject; - foreach (const QString& scheme, schemes) { + for (const QString& scheme : schemes) { device_classes_.insert(scheme, obj); } } -#endif // DEVICEMANAGER_H +#endif // DEVICEMANAGER_H diff --git a/src/devices/deviceproperties.cpp b/src/devices/deviceproperties.cpp index 0f59f3c85..cc8f85067 100644 --- a/src/devices/deviceproperties.cpp +++ b/src/devices/deviceproperties.cpp @@ -15,81 +15,84 @@ along with Clementine. If not, see . */ -#include "connecteddevice.h" -#include "devicelister.h" -#include "devicemanager.h" #include "deviceproperties.h" -#include "ui_deviceproperties.h" -#include "core/utilities.h" -#include "transcoder/transcoder.h" -#include "ui/iconloader.h" + +#include +#include #include #include #include -#include +#include "connecteddevice.h" +#include "devicelister.h" +#include "devicemanager.h" +#include "ui_deviceproperties.h" +#include "core/utilities.h" +#include "transcoder/transcoder.h" +#include "ui/iconloader.h" -DeviceProperties::DeviceProperties(QWidget *parent) - : QDialog(parent), - ui_(new Ui_DeviceProperties), - manager_(NULL), - updating_formats_(false) -{ +DeviceProperties::DeviceProperties(QWidget* parent) + : QDialog(parent), + ui_(new Ui_DeviceProperties), + manager_(nullptr), + updating_formats_(false) { ui_->setupUi(this); connect(ui_->open_device, SIGNAL(clicked()), SLOT(OpenDevice())); // Maximum height of the icon widget - ui_->icon->setMaximumHeight(ui_->icon->iconSize().height() + - ui_->icon->horizontalScrollBar()->sizeHint().height() + - ui_->icon->spacing() * 2 + 5); + ui_->icon->setMaximumHeight( + ui_->icon->iconSize().height() + + ui_->icon->horizontalScrollBar()->sizeHint().height() + + ui_->icon->spacing() * 2 + 5); } -DeviceProperties::~DeviceProperties() { - delete ui_; -} +DeviceProperties::~DeviceProperties() { delete ui_; } -void DeviceProperties::SetDeviceManager(DeviceManager *manager) { +void DeviceProperties::SetDeviceManager(DeviceManager* manager) { manager_ = manager; - connect(manager_, SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(ModelChanged())); - connect(manager_, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(ModelChanged())); - connect(manager_, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(ModelChanged())); + connect(manager_, SIGNAL(dataChanged(QModelIndex, QModelIndex)), + SLOT(ModelChanged())); + connect(manager_, SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(ModelChanged())); + connect(manager_, SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(ModelChanged())); } void DeviceProperties::ShowDevice(int row) { if (ui_->icon->count() == 0) { // Only load the icons the first time the dialog is shown QStringList icon_names = QStringList() - << "drive-removable-media-usb-pendrive" - << "multimedia-player-ipod-mini-blue" - << "multimedia-player-ipod-mini-gold" - << "multimedia-player-ipod-mini-green" - << "multimedia-player-ipod-mini-pink" - << "multimedia-player-ipod-mini-silver" - << "multimedia-player-ipod-nano-black" - << "multimedia-player-ipod-nano-white" - << "multimedia-player-ipod-nano-green" - << "multimedia-player-ipod-shuffle" - << "multimedia-player-ipod-standard-color" - << "multimedia-player-ipod-standard-monochrome" - << "multimedia-player-ipod-U2-color" - << "multimedia-player-ipod-U2-monochrome" - << "ipodtouchicon" - << "phone" - << "phone-google-nexus-one" - << "phone-htc-g1-white" - << "phone-nokia-n900" - << "phone-palm-pre"; + << "drive-removable-media-usb-pendrive" + << "multimedia-player-ipod-mini-blue" + << "multimedia-player-ipod-mini-gold" + << "multimedia-player-ipod-mini-green" + << "multimedia-player-ipod-mini-pink" + << "multimedia-player-ipod-mini-silver" + << "multimedia-player-ipod-nano-black" + << "multimedia-player-ipod-nano-white" + << "multimedia-player-ipod-nano-green" + << "multimedia-player-ipod-shuffle" + << "multimedia-player-ipod-standard-color" + << "multimedia-player-ipod-standard-monochrome" + << "multimedia-player-ipod-U2-color" + << "multimedia-player-ipod-U2-monochrome" + << "ipodtouchicon" + << "phone" + << "phone-google-nexus-one" + << "phone-htc-g1-white" + << "phone-nokia-n900" + << "phone-palm-pre"; - foreach (const QString& icon_name, icon_names) { - QListWidgetItem* item = new QListWidgetItem( - IconLoader::Load(icon_name), QString(), ui_->icon); + for (const QString& icon_name : icon_names) { + QListWidgetItem* item = new QListWidgetItem(IconLoader::Load(icon_name), + QString(), ui_->icon); item->setData(Qt::UserRole, icon_name); } // Load the transcode formats the first time the dialog is shown - foreach (const TranscoderPreset& preset, Transcoder::GetAllPresets()) { + for (const TranscoderPreset& preset : Transcoder::GetAllPresets()) { ui_->transcode_format->addItem(preset.name_, preset.type_); } ui_->transcode_format->model()->sort(0); @@ -102,7 +105,7 @@ void DeviceProperties::ShowDevice(int row) { // Find the right icon QString icon_name = index_.data(DeviceManager::Role_IconName).toString(); - for (int i=0 ; iicon->count() ; ++i) { + for (int i = 0; i < ui_->icon->count(); ++i) { if (ui_->icon->item(i)->data(Qt::UserRole).toString() == icon_name) { ui_->icon->setCurrentRow(i); break; @@ -115,17 +118,17 @@ void DeviceProperties::ShowDevice(int row) { show(); } -void DeviceProperties::AddHardwareInfo(int row, const QString &key, const QString &value) { +void DeviceProperties::AddHardwareInfo(int row, const QString& key, + const QString& value) { ui_->hardware_info->setItem(row, 0, new QTableWidgetItem(key)); ui_->hardware_info->setItem(row, 1, new QTableWidgetItem(value)); } void DeviceProperties::ModelChanged() { - if (!isVisible()) - return; + if (!isVisible()) return; if (!index_.isValid()) - reject(); // Device went away + reject(); // Device went away else { UpdateHardwareInfo(); UpdateFormats(); @@ -139,7 +142,7 @@ void DeviceProperties::UpdateHardwareInfo() { QVariantMap info = lister->DeviceHardwareInfo(id); // Remove empty items - foreach (const QString& key, info.keys()) { + for (const QString& key : info.keys()) { if (info[key].isNull() || info[key].toString().isEmpty()) info.remove(key); } @@ -151,13 +154,14 @@ void DeviceProperties::UpdateHardwareInfo() { int row = 0; AddHardwareInfo(row++, tr("Model"), lister->DeviceModel(id)); AddHardwareInfo(row++, tr("Manufacturer"), lister->DeviceManufacturer(id)); - foreach (const QString& key, info.keys()) { + for (const QString& key : info.keys()) { AddHardwareInfo(row++, tr(key.toAscii()), info[key].toString()); } ui_->hardware_info->sortItems(0); } else { - ui_->hardware_info_stack->setCurrentWidget(ui_->hardware_info_not_connected_page); + ui_->hardware_info_stack->setCurrentWidget( + ui_->hardware_info_not_connected_page); } // Size @@ -178,7 +182,7 @@ void DeviceProperties::UpdateHardwareInfo() { void DeviceProperties::UpdateFormats() { QString id = index_.data(DeviceManager::Role_UniqueId).toString(); DeviceLister* lister = manager_->GetLister(index_.row()); - boost::shared_ptr device = + std::shared_ptr device = manager_->GetConnectedDevice(index_.row()); // Transcode mode @@ -219,7 +223,7 @@ void DeviceProperties::UpdateFormats() { // blocks, so do it in the background. supported_formats_.clear(); - QFuture future = QtConcurrent::run(boost::bind( + QFuture future = QtConcurrent::run(std::bind( &ConnectedDevice::GetSupportedFiletypes, device, &supported_formats_)); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); @@ -244,17 +248,16 @@ void DeviceProperties::accept() { mode = MusicStorage::Transcode_Unsupported; // Transcode format - Song::FileType format = Song::FileType(ui_->transcode_format->itemData( - ui_->transcode_format->currentIndex()).toInt()); + Song::FileType format = Song::FileType( + ui_->transcode_format->itemData(ui_->transcode_format->currentIndex()) + .toInt()); - manager_->SetDeviceOptions(index_.row(), - ui_->name->text(), ui_->icon->currentItem()->data(Qt::UserRole).toString(), - mode, format); + manager_->SetDeviceOptions( + index_.row(), ui_->name->text(), + ui_->icon->currentItem()->data(Qt::UserRole).toString(), mode, format); } -void DeviceProperties::OpenDevice() { - manager_->Connect(index_.row()); -} +void DeviceProperties::OpenDevice() { manager_->Connect(index_.row()); } void DeviceProperties::UpdateFormatsFinished() { QFutureWatcher* watcher = static_cast*>(sender()); @@ -275,21 +278,23 @@ void DeviceProperties::UpdateFormatsFinished() { // Populate supported types list ui_->supported_formats->clear(); - foreach (Song::FileType type, supported_formats_) { + for (Song::FileType type : supported_formats_) { QListWidgetItem* item = new QListWidgetItem(Song::TextForFiletype(type)); ui_->supported_formats->addItem(item); } ui_->supported_formats->sortItems(); // Set the format combobox item - TranscoderPreset preset = Transcoder::PresetForFileType(Song::FileType( - index_.data(DeviceManager::Role_TranscodeFormat).toInt())); + TranscoderPreset preset = Transcoder::PresetForFileType( + Song::FileType(index_.data(DeviceManager::Role_TranscodeFormat).toInt())); if (preset.type_ == Song::Type_Unknown) { // The user hasn't chosen a format for this device yet, so work our way down // a list of some preferred formats, picking the first one that is supported - preset = Transcoder::PresetForFileType(Transcoder::PickBestFormat(supported_formats_)); + preset = Transcoder::PresetForFileType( + Transcoder::PickBestFormat(supported_formats_)); } - ui_->transcode_format->setCurrentIndex(ui_->transcode_format->findText(preset.name_)); + ui_->transcode_format->setCurrentIndex( + ui_->transcode_format->findText(preset.name_)); ui_->formats_stack->setCurrentWidget(ui_->formats_page); } diff --git a/src/devices/deviceproperties.h b/src/devices/deviceproperties.h index eac5b0333..4e3534041 100644 --- a/src/devices/deviceproperties.h +++ b/src/devices/deviceproperties.h @@ -29,27 +29,27 @@ class Ui_DeviceProperties; class DeviceProperties : public QDialog { Q_OBJECT -public: - DeviceProperties(QWidget* parent = 0); + public: + DeviceProperties(QWidget* parent = nullptr); ~DeviceProperties(); void SetDeviceManager(DeviceManager* manager); void ShowDevice(int row); -public slots: + public slots: void accept(); -private: + private: void UpdateHardwareInfo(); void AddHardwareInfo(int row, const QString& key, const QString& value); void UpdateFormats(); -private slots: + private slots: void ModelChanged(); void OpenDevice(); void UpdateFormatsFinished(); -private: + private: Ui_DeviceProperties* ui_; DeviceManager* manager_; @@ -59,4 +59,4 @@ private: QList supported_formats_; }; -#endif // DEVICEPROPERTIES_H +#endif // DEVICEPROPERTIES_H diff --git a/src/devices/devicestatefiltermodel.cpp b/src/devices/devicestatefiltermodel.cpp index c0aa057db..bf132c3fa 100644 --- a/src/devices/devicestatefiltermodel.cpp +++ b/src/devices/devicestatefiltermodel.cpp @@ -17,19 +17,20 @@ #include "devicestatefiltermodel.h" -DeviceStateFilterModel::DeviceStateFilterModel(QObject *parent, +DeviceStateFilterModel::DeviceStateFilterModel(QObject* parent, DeviceManager::State state) - : QSortFilterProxyModel(parent), - state_(state) -{ - connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(ProxyRowCountChanged())); - connect(this, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(ProxyRowCountChanged())); + : QSortFilterProxyModel(parent), state_(state) { + connect(this, SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(ProxyRowCountChanged())); + connect(this, SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(ProxyRowCountChanged())); connect(this, SIGNAL(modelReset()), SLOT(ProxyRowCountChanged())); } -bool DeviceStateFilterModel::filterAcceptsRow(int row, const QModelIndex&) const { - return sourceModel()->index(row, 0).data(DeviceManager::Role_State).toInt() - != state_; +bool DeviceStateFilterModel::filterAcceptsRow(int row, + const QModelIndex&) const { + return sourceModel()->index(row, 0).data(DeviceManager::Role_State).toInt() != + state_; } void DeviceStateFilterModel::ProxyRowCountChanged() { diff --git a/src/devices/devicestatefiltermodel.h b/src/devices/devicestatefiltermodel.h index be3ea8b74..33a3ab2f9 100644 --- a/src/devices/devicestatefiltermodel.h +++ b/src/devices/devicestatefiltermodel.h @@ -25,23 +25,23 @@ class DeviceStateFilterModel : public QSortFilterProxyModel { Q_OBJECT -public: - DeviceStateFilterModel(QObject* parent, - DeviceManager::State state = DeviceManager::State_Remembered); + public: + DeviceStateFilterModel(QObject* parent, DeviceManager::State state = + DeviceManager::State_Remembered); void setSourceModel(QAbstractItemModel* sourceModel); signals: void IsEmptyChanged(bool is_empty); -protected: + protected: bool filterAcceptsRow(int row, const QModelIndex& parent) const; -private slots: + private slots: void ProxyRowCountChanged(); -private: + private: DeviceManager::State state_; }; -#endif // DEVICESTATEFILTERMODEL_H +#endif // DEVICESTATEFILTERMODEL_H diff --git a/src/devices/deviceview.cpp b/src/devices/deviceview.cpp index 2d561bb41..36592a7df 100644 --- a/src/devices/deviceview.cpp +++ b/src/devices/deviceview.cpp @@ -15,11 +15,22 @@ along with Clementine. If not, see . */ +#include "deviceview.h" + +#include + +#include +#include +#include +#include +#include +#include +#include + #include "connecteddevice.h" #include "devicelister.h" #include "devicemanager.h" #include "deviceproperties.h" -#include "deviceview.h" #include "core/application.h" #include "core/deletefiles.h" #include "core/mergedproxymodel.h" @@ -31,24 +42,13 @@ #include "ui/organisedialog.h" #include "ui/organiseerrordialog.h" -#include -#include -#include -#include -#include -#include -#include - -#include - const int DeviceItemDelegate::kIconPadding = 6; -DeviceItemDelegate::DeviceItemDelegate(QObject *parent) - : LibraryItemDelegate(parent) -{ -} +DeviceItemDelegate::DeviceItemDelegate(QObject* parent) + : LibraryItemDelegate(parent) {} -void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, const QModelIndex& index) const { +void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, + const QModelIndex& index) const { // Is it a device or a library item? if (index.data(DeviceManager::Role_State).isNull()) { LibraryItemDelegate::paint(p, opt, index); @@ -56,7 +56,8 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con } // Draw the background - const QStyleOptionViewItemV3* vopt = qstyleoption_cast(&opt); + const QStyleOptionViewItemV3* vopt = + qstyleoption_cast(&opt); const QWidget* widget = vopt->widget; QStyle* style = widget->style() ? widget->style() : QApplication::style(); style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, p, widget); @@ -72,8 +73,8 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con status_font.setPointSize(status_font.pointSize() - 2); #endif - const int text_height = QFontMetrics(opt.font).height() + - QFontMetrics(status_font).height(); + const int text_height = + QFontMetrics(opt.font).height() + QFontMetrics(status_font).height(); QRect line1(opt.rect); QRect line2(opt.rect); @@ -88,14 +89,15 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con } // Draw the icon - p->drawPixmap(opt.rect.topLeft(), index.data(Qt::DecorationRole).value()); + p->drawPixmap(opt.rect.topLeft(), + index.data(Qt::DecorationRole).value()); // Draw the first line (device name) p->drawText(line1, Qt::AlignLeft | Qt::AlignTop, index.data().toString()); // Draw the second line (status) - DeviceManager::State state = - static_cast(index.data(DeviceManager::Role_State).toInt()); + DeviceManager::State state = static_cast( + index.data(DeviceManager::Role_State).toInt()); QVariant progress = index.data(DeviceManager::Role_UpdatingPercentage); QString status_text; @@ -119,7 +121,7 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con QVariant song_count = index.data(DeviceManager::Role_SongCount); if (song_count.isValid()) { int count = song_count.toInt(); - if (count == 1) // TODO: Fix this properly + if (count == 1) // TODO: Fix this properly status_text = tr("%1 song").arg(count); else status_text = tr("%1 songs").arg(count); @@ -141,17 +143,14 @@ void DeviceItemDelegate::paint(QPainter* p, const QStyleOptionViewItem& opt, con p->restore(); } - - DeviceView::DeviceView(QWidget* parent) - : AutoExpandingTreeView(parent), - app_(NULL), - merged_model_(NULL), - sort_model_(NULL), - properties_dialog_(new DeviceProperties), - device_menu_(NULL), - library_menu_(NULL) -{ + : AutoExpandingTreeView(parent), + app_(nullptr), + merged_model_(nullptr), + sort_model_(nullptr), + properties_dialog_(new DeviceProperties), + device_menu_(nullptr), + library_menu_(nullptr) { setItemDelegate(new DeviceItemDelegate(this)); SetExpandOnReset(false); setAttribute(Qt::WA_MacShowFocusRect, false); @@ -162,15 +161,16 @@ DeviceView::DeviceView(QWidget* parent) setSelectionMode(QAbstractItemView::ExtendedSelection); } -DeviceView::~DeviceView() { -} +DeviceView::~DeviceView() {} void DeviceView::SetApplication(Application* app) { - Q_ASSERT(app_ == NULL); + Q_ASSERT(app_ == nullptr); app_ = app; - connect(app_->device_manager(), SIGNAL(DeviceConnected(int)), SLOT(DeviceConnected(int))); - connect(app_->device_manager(), SIGNAL(DeviceDisconnected(int)), SLOT(DeviceDisconnected(int))); + connect(app_->device_manager(), SIGNAL(DeviceConnected(int)), + SLOT(DeviceConnected(int))); + connect(app_->device_manager(), SIGNAL(DeviceDisconnected(int)), + SLOT(DeviceDisconnected(int))); sort_model_ = new QSortFilterProxyModel(this); sort_model_->setSourceModel(app_->device_manager()); @@ -182,14 +182,15 @@ void DeviceView::SetApplication(Application* app) { merged_model_->setSourceModel(sort_model_); connect(merged_model_, - SIGNAL(SubModelReset(QModelIndex,QAbstractItemModel*)), + SIGNAL(SubModelReset(QModelIndex, QAbstractItemModel*)), SLOT(RecursivelyExpand(QModelIndex))); setModel(merged_model_); properties_dialog_->SetDeviceManager(app_->device_manager()); organise_dialog_.reset(new OrganiseDialog(app_->task_manager())); - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); } void DeviceView::contextMenuEvent(QContextMenuEvent* e) { @@ -198,26 +199,34 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { library_menu_ = new QMenu(this); // Device menu - eject_action_ = device_menu_->addAction( - IconLoader::Load("media-eject"), tr("Safely remove device"), this, SLOT(Unmount())); - forget_action_ = device_menu_->addAction( - IconLoader::Load("list-remove"), tr("Forget device"), this, SLOT(Forget())); + eject_action_ = device_menu_->addAction(IconLoader::Load("media-eject"), + tr("Safely remove device"), this, + SLOT(Unmount())); + forget_action_ = + device_menu_->addAction(IconLoader::Load("list-remove"), + tr("Forget device"), this, SLOT(Forget())); device_menu_->addSeparator(); - properties_action_ = device_menu_->addAction( - IconLoader::Load("configure"), tr("Device properties..."), this, SLOT(Properties())); + properties_action_ = device_menu_->addAction(IconLoader::Load("configure"), + tr("Device properties..."), + this, SLOT(Properties())); // Library menu - add_to_playlist_action_ = library_menu_->addAction(IconLoader::Load("media-playback-start"), + add_to_playlist_action_ = library_menu_->addAction( + IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); - load_action_ = library_menu_->addAction(IconLoader::Load("media-playback-start"), + load_action_ = library_menu_->addAction( + IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(Load())); - open_in_new_playlist_ = library_menu_->addAction(IconLoader::Load("document-new"), - tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); + open_in_new_playlist_ = library_menu_->addAction( + IconLoader::Load("document-new"), tr("Open in new playlist"), this, + SLOT(OpenInNewPlaylist())); library_menu_->addSeparator(); organise_action_ = library_menu_->addAction(IconLoader::Load("edit-copy"), - tr("Copy to library..."), this, SLOT(Organise())); + tr("Copy to library..."), this, + SLOT(Organise())); delete_action_ = library_menu_->addAction(IconLoader::Load("edit-delete"), - tr("Delete from device..."), this, SLOT(Delete())); + tr("Delete from device..."), this, + SLOT(Delete())); } menu_index_ = currentIndex(); @@ -226,8 +235,10 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { const QModelIndex library_index = MapToLibrary(menu_index_); if (device_index.isValid()) { - const bool is_plugged_in = app_->device_manager()->GetLister(device_index.row()); - const bool is_remembered = app_->device_manager()->GetDatabaseId(device_index.row()) != -1; + const bool is_plugged_in = + app_->device_manager()->GetLister(device_index.row()); + const bool is_remembered = + app_->device_manager()->GetDatabaseId(device_index.row()) != -1; forget_action_->setEnabled(is_remembered); eject_action_->setEnabled(is_plugged_in); @@ -238,9 +249,9 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { bool is_filesystem_device = false; if (parent_device_index.isValid()) { - boost::shared_ptr device = app_->device_manager()->GetConnectedDevice(parent_device_index.row()); - if (device && !device->LocalPath().isEmpty()) - is_filesystem_device = true; + std::shared_ptr device = + app_->device_manager()->GetConnectedDevice(parent_device_index.row()); + if (device && !device->LocalPath().isEmpty()) is_filesystem_device = true; } organise_action_->setEnabled(is_filesystem_device); @@ -249,26 +260,28 @@ void DeviceView::contextMenuEvent(QContextMenuEvent* e) { } } -QModelIndex DeviceView::MapToDevice(const QModelIndex& merged_model_index) const { +QModelIndex DeviceView::MapToDevice(const QModelIndex& merged_model_index) + const { QModelIndex sort_model_index = merged_model_->mapToSource(merged_model_index); - if (sort_model_index.model() != sort_model_) - return QModelIndex(); + if (sort_model_index.model() != sort_model_) return QModelIndex(); return sort_model_->mapToSource(sort_model_index); } -QModelIndex DeviceView::FindParentDevice(const QModelIndex& merged_model_index) const { +QModelIndex DeviceView::FindParentDevice(const QModelIndex& merged_model_index) + const { QModelIndex index = merged_model_->FindSourceParent(merged_model_index); - if (index.model() != sort_model_) - return QModelIndex(); + if (index.model() != sort_model_) return QModelIndex(); return sort_model_->mapToSource(index); } -QModelIndex DeviceView::MapToLibrary(const QModelIndex& merged_model_index) const { +QModelIndex DeviceView::MapToLibrary(const QModelIndex& merged_model_index) + const { QModelIndex sort_model_index = merged_model_->mapToSource(merged_model_index); if (const QSortFilterProxyModel* sort_model = - qobject_cast(sort_model_index.model())) { + qobject_cast( + sort_model_index.model())) { return sort_model->mapToSource(sort_model_index); } @@ -277,17 +290,20 @@ QModelIndex DeviceView::MapToLibrary(const QModelIndex& merged_model_index) cons void DeviceView::Connect() { QModelIndex device_idx = MapToDevice(menu_index_); - app_->device_manager()->data(device_idx, MusicStorage::Role_StorageForceConnect); + app_->device_manager()->data(device_idx, + MusicStorage::Role_StorageForceConnect); } void DeviceView::DeviceConnected(int row) { - boost::shared_ptr device = app_->device_manager()->GetConnectedDevice(row); - if (!device) - return; + std::shared_ptr device = + app_->device_manager()->GetConnectedDevice(row); + if (!device) return; - QModelIndex sort_idx = sort_model_->mapFromSource(app_->device_manager()->index(row)); + QModelIndex sort_idx = + sort_model_->mapFromSource(app_->device_manager()->index(row)); - QSortFilterProxyModel* sort_model = new QSortFilterProxyModel(device->model()); + QSortFilterProxyModel* sort_model = + new QSortFilterProxyModel(device->model()); sort_model->setSourceModel(device->model()); sort_model->setSortRole(LibraryModel::Role_SortText); sort_model->setDynamicSortFilter(true); @@ -298,24 +314,28 @@ void DeviceView::DeviceConnected(int row) { } void DeviceView::DeviceDisconnected(int row) { - merged_model_->RemoveSubModel(sort_model_->mapFromSource(app_->device_manager()->index(row))); + merged_model_->RemoveSubModel( + sort_model_->mapFromSource(app_->device_manager()->index(row))); } void DeviceView::Forget() { QModelIndex device_idx = MapToDevice(menu_index_); - QString unique_id = app_->device_manager()->data(device_idx, DeviceManager::Role_UniqueId).toString(); + QString unique_id = app_->device_manager() + ->data(device_idx, DeviceManager::Role_UniqueId) + .toString(); if (app_->device_manager()->GetLister(device_idx.row()) && - app_->device_manager()->GetLister(device_idx.row())->AskForScan(unique_id)) { - boost::scoped_ptr dialog(new QMessageBox( + app_->device_manager()->GetLister(device_idx.row())->AskForScan( + unique_id)) { + std::unique_ptr dialog(new QMessageBox( QMessageBox::Question, tr("Forget device"), - tr("Forgetting a device will remove it from this list and Clementine will have to rescan all the songs again next time you connect it."), + tr("Forgetting a device will remove it from this list and Clementine " + "will have to rescan all the songs again next time you connect it."), QMessageBox::Cancel, this)); QPushButton* forget = dialog->addButton(tr("Forget device"), QMessageBox::DestructiveRole); dialog->exec(); - if (dialog->clickedButton() != forget) - return; + if (dialog->clickedButton() != forget) return; } app_->device_manager()->Forget(device_idx.row()); @@ -325,7 +345,7 @@ void DeviceView::Properties() { properties_dialog_->ShowDevice(MapToDevice(menu_index_).row()); } -void DeviceView::mouseDoubleClickEvent(QMouseEvent *event) { +void DeviceView::mouseDoubleClickEvent(QMouseEvent* event) { AutoExpandingTreeView::mouseDoubleClickEvent(event); QModelIndex merged_index = indexAt(event->pos()); @@ -341,15 +361,13 @@ void DeviceView::mouseDoubleClickEvent(QMouseEvent *event) { SongList DeviceView::GetSelectedSongs() const { QModelIndexList selected_merged_indexes = selectionModel()->selectedRows(); SongList songs; - foreach (const QModelIndex& merged_index, selected_merged_indexes) { + for (const QModelIndex& merged_index : selected_merged_indexes) { QModelIndex library_index = MapToLibrary(merged_index); - if (!library_index.isValid()) - continue; + if (!library_index.isValid()) continue; - const LibraryModel* library = qobject_cast( - library_index.model()); - if (!library) - continue; + const LibraryModel* library = + qobject_cast(library_index.model()); + if (!library) continue; songs << library->GetChildSongs(library_index); } @@ -377,31 +395,33 @@ void DeviceView::OpenInNewPlaylist() { } void DeviceView::Delete() { - if (selectedIndexes().isEmpty()) - return; + if (selectedIndexes().isEmpty()) return; // Take the device of the first selected item QModelIndex device_index = FindParentDevice(selectedIndexes()[0]); - if (!device_index.isValid()) - return; + if (!device_index.isValid()) return; if (QMessageBox::question(this, tr("Delete files"), - tr("These files will be deleted from the device, are you sure you want to continue?"), - QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) + tr("These files will be deleted from the device, " + "are you sure you want to continue?"), + QMessageBox::Yes, + QMessageBox::Cancel) != QMessageBox::Yes) return; - boost::shared_ptr storage = - device_index.data(MusicStorage::Role_Storage).value >(); + std::shared_ptr storage = + device_index.data(MusicStorage::Role_Storage) + .value>(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); - connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); + connect(delete_files, SIGNAL(Finished(SongList)), + SLOT(DeleteFinished(SongList))); delete_files->Start(GetSelectedSongs()); } void DeviceView::Organise() { SongList songs = GetSelectedSongs(); QStringList filenames; - foreach (const Song& song, songs) { + for (const Song& song : songs) { filenames << song.url().toLocalFile(); } @@ -416,8 +436,7 @@ void DeviceView::Unmount() { } void DeviceView::DeleteFinished(const SongList& songs_with_errors) { - if (songs_with_errors.isEmpty()) - return; + if (songs_with_errors.isEmpty()) return; OrganiseErrorDialog* dialog = new OrganiseErrorDialog(this); dialog->Show(OrganiseErrorDialog::Type_Delete, songs_with_errors); diff --git a/src/devices/deviceview.h b/src/devices/deviceview.h index 6bb81c440..92858c787 100644 --- a/src/devices/deviceview.h +++ b/src/devices/deviceview.h @@ -18,6 +18,8 @@ #ifndef DEVICEVIEW_H #define DEVICEVIEW_H +#include + #include "core/song.h" #include "library/libraryview.h" #include "widgets/autoexpandingtreeview.h" @@ -33,29 +35,29 @@ class LibraryModel; class MergedProxyModel; class DeviceItemDelegate : public LibraryItemDelegate { -public: + public: DeviceItemDelegate(QObject* parent); static const int kIconPadding; - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; }; - class DeviceView : public AutoExpandingTreeView { Q_OBJECT -public: - DeviceView(QWidget* parent = 0); + public: + DeviceView(QWidget* parent = nullptr); ~DeviceView(); void SetApplication(Application* app); -protected: - void contextMenuEvent(QContextMenuEvent *); - void mouseDoubleClickEvent(QMouseEvent *event); + protected: + void contextMenuEvent(QContextMenuEvent*); + void mouseDoubleClickEvent(QMouseEvent* event); -private slots: + private slots: // Device menu actions void Connect(); void Unmount(); @@ -77,19 +79,19 @@ private slots: // AutoExpandingTreeView bool CanRecursivelyExpand(const QModelIndex& index) const; -private: + private: QModelIndex MapToDevice(const QModelIndex& merged_model_index) const; QModelIndex MapToLibrary(const QModelIndex& merged_model_index) const; QModelIndex FindParentDevice(const QModelIndex& merged_model_index) const; SongList GetSelectedSongs() const; -private: + private: Application* app_; MergedProxyModel* merged_model_; QSortFilterProxyModel* sort_model_; - boost::scoped_ptr properties_dialog_; - boost::scoped_ptr organise_dialog_; + std::unique_ptr properties_dialog_; + std::unique_ptr organise_dialog_; QMenu* device_menu_; QAction* eject_action_; @@ -106,4 +108,4 @@ private: QModelIndex menu_index_; }; -#endif // DEVICEVIEW_H +#endif // DEVICEVIEW_H diff --git a/src/devices/deviceviewcontainer.cpp b/src/devices/deviceviewcontainer.cpp index eb2de1926..4acd77367 100644 --- a/src/devices/deviceviewcontainer.cpp +++ b/src/devices/deviceviewcontainer.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -19,10 +19,8 @@ #include "ui_deviceviewcontainer.h" #include "ui/iconloader.h" -DeviceViewContainer::DeviceViewContainer(QWidget *parent) - : QWidget(parent), - ui_(new Ui::DeviceViewContainer), - loaded_icons_(false) { +DeviceViewContainer::DeviceViewContainer(QWidget* parent) + : QWidget(parent), ui_(new Ui::DeviceViewContainer), loaded_icons_(false) { ui_->setupUi(this); QPalette palette(ui_->windows_is_broken_frame->palette()); @@ -36,9 +34,7 @@ DeviceViewContainer::DeviceViewContainer(QWidget *parent) #endif } -DeviceViewContainer::~DeviceViewContainer() { - delete ui_; -} +DeviceViewContainer::~DeviceViewContainer() { delete ui_; } void DeviceViewContainer::showEvent(QShowEvent* e) { if (!loaded_icons_) { @@ -51,6 +47,4 @@ void DeviceViewContainer::showEvent(QShowEvent* e) { QWidget::showEvent(e); } -DeviceView* DeviceViewContainer::view() const { - return ui_->view; -} +DeviceView* DeviceViewContainer::view() const { return ui_->view; } diff --git a/src/devices/deviceviewcontainer.h b/src/devices/deviceviewcontainer.h index ae28b8ecc..97d377b28 100644 --- a/src/devices/deviceviewcontainer.h +++ b/src/devices/deviceviewcontainer.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -21,26 +21,26 @@ #include namespace Ui { - class DeviceViewContainer; +class DeviceViewContainer; } class DeviceView; class DeviceViewContainer : public QWidget { Q_OBJECT - + public: - explicit DeviceViewContainer(QWidget* parent = 0); + explicit DeviceViewContainer(QWidget* parent = nullptr); ~DeviceViewContainer(); DeviceView* view() const; protected: void showEvent(QShowEvent*); - + private: Ui::DeviceViewContainer* ui_; bool loaded_icons_; }; -#endif // DEVICEVIEWCONTAINER_H +#endif // DEVICEVIEWCONTAINER_H diff --git a/src/devices/filesystemdevice.cpp b/src/devices/filesystemdevice.cpp index 8575e5fef..4805cab86 100644 --- a/src/devices/filesystemdevice.cpp +++ b/src/devices/filesystemdevice.cpp @@ -26,40 +26,40 @@ #include #include -FilesystemDevice::FilesystemDevice( - const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time) - : FilesystemMusicStorage(url.toLocalFile()), - ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - watcher_(new LibraryWatcher), - watcher_thread_(new QThread(this)) -{ +FilesystemDevice::FilesystemDevice(const QUrl& url, DeviceLister* lister, + const QString& unique_id, + DeviceManager* manager, Application* app, + int database_id, bool first_time) + : FilesystemMusicStorage(url.toLocalFile()), + ConnectedDevice(url, lister, unique_id, manager, app, database_id, + first_time), + watcher_(new LibraryWatcher), + watcher_thread_(new QThread(this)) { watcher_->moveToThread(watcher_thread_); watcher_thread_->start(QThread::IdlePriority); - watcher_->set_device_name(manager->data(manager->index( - manager->FindDeviceById(unique_id)), DeviceManager::Role_FriendlyName).toString()); + watcher_->set_device_name( + manager->data(manager->index(manager->FindDeviceById(unique_id)), + DeviceManager::Role_FriendlyName).toString()); watcher_->set_backend(backend_); watcher_->set_task_manager(app_->task_manager()); - connect(backend_, SIGNAL(DirectoryDiscovered(Directory,SubdirectoryList)), - watcher_, SLOT(AddDirectory(Directory,SubdirectoryList))); - connect(backend_, SIGNAL(DirectoryDeleted(Directory)), - watcher_, SLOT(RemoveDirectory(Directory))); - connect(watcher_, SIGNAL(NewOrUpdatedSongs(SongList)), - backend_, SLOT(AddOrUpdateSongs(SongList))); - connect(watcher_, SIGNAL(SongsMTimeUpdated(SongList)), - backend_, SLOT(UpdateMTimesOnly(SongList))); - connect(watcher_, SIGNAL(SongsDeleted(SongList)), - backend_, SLOT(DeleteSongs(SongList))); - connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), - backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); - connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), - backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); - connect(watcher_, SIGNAL(CompilationsNeedUpdating()), - backend_, SLOT(UpdateCompilations())); + connect(backend_, SIGNAL(DirectoryDiscovered(Directory, SubdirectoryList)), + watcher_, SLOT(AddDirectory(Directory, SubdirectoryList))); + connect(backend_, SIGNAL(DirectoryDeleted(Directory)), watcher_, + SLOT(RemoveDirectory(Directory))); + connect(watcher_, SIGNAL(NewOrUpdatedSongs(SongList)), backend_, + SLOT(AddOrUpdateSongs(SongList))); + connect(watcher_, SIGNAL(SongsMTimeUpdated(SongList)), backend_, + SLOT(UpdateMTimesOnly(SongList))); + connect(watcher_, SIGNAL(SongsDeleted(SongList)), backend_, + SLOT(DeleteSongs(SongList))); + connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), backend_, + SLOT(AddOrUpdateSubdirs(SubdirectoryList))); + connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), backend_, + SLOT(AddOrUpdateSubdirs(SubdirectoryList))); + connect(watcher_, SIGNAL(CompilationsNeedUpdating()), backend_, + SLOT(UpdateCompilations())); connect(watcher_, SIGNAL(ScanStarted(int)), SIGNAL(TaskStarted(int))); } diff --git a/src/devices/filesystemdevice.h b/src/devices/filesystemdevice.h index f56d32e81..2f855c9ef 100644 --- a/src/devices/filesystemdevice.h +++ b/src/devices/filesystemdevice.h @@ -24,24 +24,24 @@ class DeviceManager; class LibraryWatcher; -class FilesystemDevice : public ConnectedDevice, public virtual FilesystemMusicStorage { +class FilesystemDevice : public ConnectedDevice, + public virtual FilesystemMusicStorage { Q_OBJECT -public: - Q_INVOKABLE FilesystemDevice( - const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + public: + Q_INVOKABLE FilesystemDevice(const QUrl& url, DeviceLister* lister, + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, + bool first_time); ~FilesystemDevice(); void Init(); static QStringList url_schemes() { return QStringList() << "file"; } -private: + private: LibraryWatcher* watcher_; QThread* watcher_thread_; }; -#endif // FILESYSTEMDEVICE_H +#endif // FILESYSTEMDEVICE_H diff --git a/src/devices/giolister.cpp b/src/devices/giolister.cpp index 625f05d66..1979f189c 100644 --- a/src/devices/giolister.cpp +++ b/src/devices/giolister.cpp @@ -17,44 +17,44 @@ #include "config.h" +#include + #include #include #include -#include - #include "giolister.h" #include "core/logging.h" #include "core/signalchecker.h" +using std::placeholders::_1; +using std::placeholders::_2; +using std::placeholders::_3; + QString GioLister::DeviceInfo::unique_id() const { if (mount) - return QString("Gio/%1/%2/%3").arg(mount_uuid, filesystem_type).arg(filesystem_size); + return QString("Gio/%1/%2/%3").arg(mount_uuid, filesystem_type).arg( + filesystem_size); return QString("Gio/unmounted/%1").arg((qulonglong)volume.get()); } bool GioLister::DeviceInfo::is_suitable() const { - if (!volume) - return false; // This excludes smb or ssh mounts + if (!volume) return false; // This excludes smb or ssh mounts - if (drive && !drive_removable) - return false; // This excludes internal drives + if (drive && !drive_removable) return false; // This excludes internal drives - if (filesystem_type.isEmpty()) - return true; + if (filesystem_type.isEmpty()) return true; - return filesystem_type != "udf" && - filesystem_type != "smb" && - filesystem_type != "cifs" && - filesystem_type != "ssh" && + return filesystem_type != "udf" && filesystem_type != "smb" && + filesystem_type != "cifs" && filesystem_type != "ssh" && filesystem_type != "isofs"; } template -void OperationFinished(F f, GObject *object, GAsyncResult *result) { +void OperationFinished(F f, GObject* object, GAsyncResult* result) { T* obj = reinterpret_cast(object); - GError* error = NULL; + GError* error = nullptr; f(obj, result, &error); @@ -64,9 +64,10 @@ void OperationFinished(F f, GObject *object, GAsyncResult *result) { } } -void GioLister::VolumeMountFinished(GObject* object, GAsyncResult* result, gpointer) { - OperationFinished(boost::bind( - g_volume_mount_finish, _1, _2, _3), object, result); +void GioLister::VolumeMountFinished(GObject* object, GAsyncResult* result, + gpointer) { + OperationFinished(std::bind(g_volume_mount_finish, _1, _2, _3), + object, result); } void GioLister::Init() { @@ -74,7 +75,7 @@ void GioLister::Init() { // Get existing volumes GList* const volumes = g_volume_monitor_get_volumes(monitor_); - for (GList* p=volumes; p; p=p->next) { + for (GList* p = volumes; p; p = p->next) { GVolume* volume = static_cast(p->data); VolumeAdded(volume); @@ -84,7 +85,7 @@ void GioLister::Init() { // Get existing mounts GList* const mounts = g_volume_monitor_get_mounts(monitor_); - for (GList* p=mounts; p; p=p->next) { + for (GList* p = mounts; p; p = p->next) { GMount* mount = static_cast(p->data); MountAdded(mount); @@ -105,11 +106,10 @@ QStringList GioLister::DeviceUniqueIDs() { return devices_.keys(); } -QVariantList GioLister::DeviceIcons(const QString &id) { +QVariantList GioLister::DeviceIcons(const QString& id) { QVariantList ret; QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return ret; + if (!devices_.contains(id)) return ret; const DeviceInfo& info = devices_[id]; @@ -123,37 +123,33 @@ QVariantList GioLister::DeviceIcons(const QString &id) { return ret; } -QString GioLister::DeviceManufacturer(const QString &id) { - return QString(); -} +QString GioLister::DeviceManufacturer(const QString& id) { return QString(); } -QString GioLister::DeviceModel(const QString &id) { +QString GioLister::DeviceModel(const QString& id) { QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return QString(); + if (!devices_.contains(id)) return QString(); const DeviceInfo& info = devices_[id]; return info.drive_name.isEmpty() ? info.volume_name : info.drive_name; } -quint64 GioLister::DeviceCapacity(const QString &id) { +quint64 GioLister::DeviceCapacity(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceInfo::filesystem_size); } -quint64 GioLister::DeviceFreeSpace(const QString &id) { +quint64 GioLister::DeviceFreeSpace(const QString& id) { return LockAndGetDeviceInfo(id, &DeviceInfo::filesystem_free); } -QString GioLister::MakeFriendlyName(const QString &id) { +QString GioLister::MakeFriendlyName(const QString& id) { return DeviceModel(id); } -QVariantMap GioLister::DeviceHardwareInfo(const QString &id) { +QVariantMap GioLister::DeviceHardwareInfo(const QString& id) { QVariantMap ret; QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return ret; + if (!devices_.contains(id)) return ret; const DeviceInfo& info = devices_[id]; ret[QT_TR_NOOP("Mount point")] = info.mount_path; @@ -222,8 +218,7 @@ void GioLister::VolumeAdded(GVolume* volume) { #endif info.ReadDriveInfo(g_volume_get_drive(volume)); info.ReadMountInfo(g_volume_get_mount(volume)); - if (!info.is_suitable()) - return; + if (!info.is_suitable()) return; { QMutexLocker l(&mutex_); @@ -238,8 +233,7 @@ void GioLister::VolumeRemoved(GVolume* volume) { { QMutexLocker l(&mutex_); id = FindUniqueIdByVolume(volume); - if (id.isNull()) - return; + if (id.isNull()) return; devices_.remove(id); } @@ -259,15 +253,14 @@ void GioLister::MountAdded(GMount* mount) { #endif info.ReadMountInfo(mount); info.ReadDriveInfo(g_mount_get_drive(mount)); - if (!info.is_suitable()) - return; + if (!info.is_suitable()) return; QString old_id; { QMutexLocker l(&mutex_); // The volume might already exist - either mounted or unmounted. - foreach (const QString& id, devices_.keys()) { + for (const QString& id : devices_.keys()) { if (devices_[id].volume == info.volume) { old_id = id; break; @@ -297,8 +290,7 @@ void GioLister::MountChanged(GMount* mount) { { QMutexLocker l(&mutex_); id = FindUniqueIdByMount(mount); - if (id.isNull()) - return; + if (id.isNull()) return; g_object_ref(mount); @@ -310,7 +302,8 @@ void GioLister::MountChanged(GMount* mount) { // Ignore the change if the new info is useless if (new_info.invalid_enclosing_mount || (devices_[id].filesystem_size != 0 && new_info.filesystem_size == 0) || - (!devices_[id].filesystem_type.isEmpty() && new_info.filesystem_type.isEmpty())) + (!devices_[id].filesystem_type.isEmpty() && + new_info.filesystem_type.isEmpty())) return; devices_[id] = new_info; @@ -319,13 +312,12 @@ void GioLister::MountChanged(GMount* mount) { emit DeviceChanged(id); } -void GioLister::MountRemoved(GMount *mount) { +void GioLister::MountRemoved(GMount* mount) { QString id; { QMutexLocker l(&mutex_); id = FindUniqueIdByMount(mount); - if (id.isNull()) - return; + if (id.isNull()) return; devices_.remove(id); } @@ -333,7 +325,7 @@ void GioLister::MountRemoved(GMount *mount) { emit DeviceRemoved(id); } -QString GioLister::DeviceInfo::ConvertAndFree(char *str) { +QString GioLister::DeviceInfo::ConvertAndFree(char* str) { QString ret = QString::fromUtf8(str); g_free(str); return ret; @@ -342,8 +334,7 @@ QString GioLister::DeviceInfo::ConvertAndFree(char *str) { void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { // Get basic information this->mount.reset_without_add(mount); - if (!mount) - return; + if (!mount) return; mount_name = ConvertAndFree(g_mount_get_name(mount)); @@ -351,8 +342,8 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { mount_icon_names.clear(); GIcon* icon = g_mount_get_icon(mount); if (G_IS_THEMED_ICON(icon)) { - const char* const * icons = g_themed_icon_get_names(G_THEMED_ICON(icon)); - for (const char* const * p = icons ; *p ; ++p) { + const char* const* icons = g_themed_icon_get_names(G_THEMED_ICON(icon)); + for (const char* const* p = icons; *p; ++p) { mount_icon_names << QString::fromUtf8(*p); } } @@ -367,8 +358,8 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { // Do a sanity check to make sure the root is actually this mount - when a // device is unmounted GIO sends a changed signal before the removed signal, // and we end up reading information about the / filesystem by mistake. - GError* error = NULL; - GMount* actual_mount = g_file_find_enclosing_mount(root, NULL, &error); + GError* error = nullptr; + GMount* actual_mount = g_file_find_enclosing_mount(root, nullptr, &error); if (error || !actual_mount) { g_error_free(error); invalid_enclosing_mount = true; @@ -377,10 +368,11 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { } // Query the filesystem info for size, free space, and type - error = NULL; - GFileInfo* info = g_file_query_filesystem_info(root, - G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "," G_FILE_ATTRIBUTE_FILESYSTEM_FREE "," - G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, NULL, &error); + error = nullptr; + GFileInfo* info = g_file_query_filesystem_info( + root, G_FILE_ATTRIBUTE_FILESYSTEM_SIZE + "," G_FILE_ATTRIBUTE_FILESYSTEM_FREE "," G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, + nullptr, &error); if (error) { qLog(Warning) << error->message; g_error_free(error); @@ -397,9 +389,9 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { // Query the file's info for a filesystem ID // Only afc devices (that I know of) give reliably unique IDs if (filesystem_type == "afc") { - error = NULL; + error = nullptr; info = g_file_query_info(root, G_FILE_ATTRIBUTE_ID_FILESYSTEM, - G_FILE_QUERY_INFO_NONE, NULL, &error); + G_FILE_QUERY_INFO_NONE, nullptr, &error); if (error) { qLog(Warning) << error->message; g_error_free(error); @@ -415,13 +407,12 @@ void GioLister::DeviceInfo::ReadMountInfo(GMount* mount) { void GioLister::DeviceInfo::ReadVolumeInfo(GVolume* volume) { this->volume.reset_without_add(volume); - if (!volume) - return; + if (!volume) return; volume_name = ConvertAndFree(g_volume_get_name(volume)); volume_uuid = ConvertAndFree(g_volume_get_uuid(volume)); - volume_unix_device = ConvertAndFree(g_volume_get_identifier( - volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE)); + volume_unix_device = ConvertAndFree( + g_volume_get_identifier(volume, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE)); GFile* root = g_volume_get_activation_root(volume); if (root) { @@ -432,63 +423,60 @@ void GioLister::DeviceInfo::ReadVolumeInfo(GVolume* volume) { void GioLister::DeviceInfo::ReadDriveInfo(GDrive* drive) { this->drive.reset_without_add(drive); - if (!drive) - return; + if (!drive) return; drive_name = ConvertAndFree(g_drive_get_name(drive)); drive_removable = g_drive_is_media_removable(drive); } -QString GioLister::FindUniqueIdByMount(GMount *mount) const { - foreach (const DeviceInfo& info, devices_) { - if (info.mount == mount) - return info.unique_id(); +QString GioLister::FindUniqueIdByMount(GMount* mount) const { + for (const DeviceInfo& info : devices_) { + if (info.mount == mount) return info.unique_id(); } return QString(); } QString GioLister::FindUniqueIdByVolume(GVolume* volume) const { - foreach (const DeviceInfo& info, devices_) { - if (info.volume == volume) - return info.unique_id(); + for (const DeviceInfo& info : devices_) { + if (info.volume == volume) return info.unique_id(); } return QString(); } -void GioLister::VolumeEjectFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( - g_volume_eject_with_operation_finish, _1, _2, _3), object, result); +void GioLister::VolumeEjectFinished(GObject* object, GAsyncResult* result, + gpointer) { + OperationFinished( + std::bind(g_volume_eject_with_operation_finish, _1, _2, _3), object, + result); } -void GioLister::MountEjectFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( - g_mount_eject_with_operation_finish, _1, _2, _3), object, result); +void GioLister::MountEjectFinished(GObject* object, GAsyncResult* result, + gpointer) { + OperationFinished( + std::bind(g_mount_eject_with_operation_finish, _1, _2, _3), object, + result); } -void GioLister::MountUnmountFinished(GObject *object, GAsyncResult *result, gpointer) { - OperationFinished(boost::bind( - g_mount_unmount_with_operation_finish, _1, _2, _3), object, result); +void GioLister::MountUnmountFinished(GObject* object, GAsyncResult* result, + gpointer) { + OperationFinished( + std::bind(g_mount_unmount_with_operation_finish, _1, _2, _3), object, + result); } -void GioLister::UnmountDevice(const QString &id) { +void GioLister::UnmountDevice(const QString& id) { QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return; + if (!devices_.contains(id)) return; const DeviceInfo& info = devices_[id]; - if (!info.mount) - return; + if (!info.mount) return; if (info.volume) { if (g_volume_can_eject(info.volume)) { g_volume_eject_with_operation( - info.volume, - G_MOUNT_UNMOUNT_NONE, - NULL, - NULL, - (GAsyncReadyCallback) VolumeEjectFinished, - NULL); + info.volume, G_MOUNT_UNMOUNT_NONE, nullptr, nullptr, + (GAsyncReadyCallback)VolumeEjectFinished, nullptr); g_object_unref(info.volume); return; } @@ -496,36 +484,27 @@ void GioLister::UnmountDevice(const QString &id) { if (g_mount_can_eject(info.mount)) { g_mount_eject_with_operation( - info.mount, - G_MOUNT_UNMOUNT_NONE, - NULL, - NULL, - (GAsyncReadyCallback) MountEjectFinished, - NULL); + info.mount, G_MOUNT_UNMOUNT_NONE, nullptr, nullptr, + (GAsyncReadyCallback)MountEjectFinished, nullptr); } else if (g_mount_can_unmount(info.mount)) { g_mount_unmount_with_operation( - info.mount, - G_MOUNT_UNMOUNT_NONE, - NULL, - NULL, - (GAsyncReadyCallback) MountUnmountFinished, - NULL); + info.mount, G_MOUNT_UNMOUNT_NONE, nullptr, nullptr, + (GAsyncReadyCallback)MountUnmountFinished, nullptr); } } void GioLister::UpdateDeviceFreeSpace(const QString& id) { { QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return; + if (!devices_.contains(id)) return; DeviceInfo& device_info = devices_[id]; GFile* root = g_mount_get_root(device_info.mount); - GError* error = NULL; + GError* error = nullptr; GFileInfo* info = g_file_query_filesystem_info( - root, G_FILE_ATTRIBUTE_FILESYSTEM_FREE, NULL, &error); + root, G_FILE_ATTRIBUTE_FILESYSTEM_FREE, nullptr, &error); if (error) { qLog(Warning) << error->message; g_error_free(error); @@ -547,7 +526,7 @@ bool GioLister::DeviceNeedsMount(const QString& id) { } int GioLister::MountDevice(const QString& id) { - const int request_id = next_mount_request_id_ ++; + const int request_id = next_mount_request_id_++; metaObject()->invokeMethod(this, "DoMountDevice", Qt::QueuedConnection, Q_ARG(QString, id), Q_ARG(int, request_id)); return request_id; @@ -567,7 +546,7 @@ void GioLister::DoMountDevice(const QString& id, int request_id) { return; } - g_volume_mount(info.volume, G_MOUNT_MOUNT_NONE, NULL, NULL, - VolumeMountFinished, NULL); + g_volume_mount(info.volume, G_MOUNT_MOUNT_NONE, nullptr, nullptr, + VolumeMountFinished, nullptr); emit DeviceMounted(id, request_id, true); } diff --git a/src/devices/giolister.h b/src/devices/giolister.h index 14b8e0855..eafa69dc6 100644 --- a/src/devices/giolister.h +++ b/src/devices/giolister.h @@ -23,7 +23,7 @@ // Work around compile issue with glib >= 2.25 #ifdef signals -# undef signals +#undef signals #endif #include @@ -34,7 +34,7 @@ class GioLister : public DeviceLister { Q_OBJECT -public: + public: GioLister() {} int priority() const { return 50; } @@ -48,22 +48,25 @@ public: QVariantMap DeviceHardwareInfo(const QString& id); bool DeviceNeedsMount(const QString& id); - QString MakeFriendlyName(const QString &id); - QList MakeDeviceUrls(const QString &id); + QString MakeFriendlyName(const QString& id); + QList MakeDeviceUrls(const QString& id); int MountDevice(const QString& id); - void UnmountDevice(const QString &id); + void UnmountDevice(const QString& id); -public slots: + public slots: void UpdateDeviceFreeSpace(const QString& id); -protected: + protected: void Init(); -private: + private: struct DeviceInfo { - DeviceInfo() : drive_removable(false), filesystem_size(0), - filesystem_free(0), invalid_enclosing_mount(false) {} + DeviceInfo() + : drive_removable(false), + filesystem_size(0), + filesystem_free(0), + invalid_enclosing_mount(false) {} QString unique_id() const; bool is_suitable() const; @@ -113,10 +116,14 @@ private: static void MountChangedCallback(GVolumeMonitor*, GMount*, gpointer); static void MountRemovedCallback(GVolumeMonitor*, GMount*, gpointer); - static void VolumeMountFinished(GObject* object, GAsyncResult* result, gpointer); - static void VolumeEjectFinished(GObject* object, GAsyncResult* result, gpointer); - static void MountEjectFinished(GObject* object, GAsyncResult* result, gpointer); - static void MountUnmountFinished(GObject* object, GAsyncResult* result, gpointer); + static void VolumeMountFinished(GObject* object, GAsyncResult* result, + gpointer); + static void VolumeEjectFinished(GObject* object, GAsyncResult* result, + gpointer); + static void MountEjectFinished(GObject* object, GAsyncResult* result, + gpointer); + static void MountUnmountFinished(GObject* object, GAsyncResult* result, + gpointer); // You MUST hold the mutex while calling this function QString FindUniqueIdByMount(GMount* mount) const; @@ -125,10 +132,10 @@ private: template T LockAndGetDeviceInfo(const QString& id, T DeviceInfo::*field); -private slots: + private slots: void DoMountDevice(const QString& id, int request_id); -private: + private: ScopedGObject monitor_; QMutex mutex_; @@ -138,10 +145,9 @@ private: template T GioLister::LockAndGetDeviceInfo(const QString& id, T DeviceInfo::*field) { QMutexLocker l(&mutex_); - if (!devices_.contains(id)) - return T(); + if (!devices_.contains(id)) return T(); return devices_[id].*field; } -#endif // GIOLISTER_H +#endif // GIOLISTER_H diff --git a/src/devices/gpoddevice.cpp b/src/devices/gpoddevice.cpp index cc3aa6598..2a0429243 100644 --- a/src/devices/gpoddevice.cpp +++ b/src/devices/gpoddevice.cpp @@ -30,17 +30,14 @@ #include -GPodDevice::GPodDevice( - const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time) - : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - loader_thread_(new QThread(this)), - loader_(NULL), - db_(NULL) -{ -} +GPodDevice::GPodDevice(const QUrl& url, DeviceLister* lister, + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, bool first_time) + : ConnectedDevice(url, lister, unique_id, manager, app, database_id, + first_time), + loader_thread_(new QThread(this)), + loader_(nullptr), + db_(nullptr) {} void GPodDevice::Init() { InitBackendDirectory(url_.path(), first_time_); @@ -52,13 +49,13 @@ void GPodDevice::Init() { connect(loader_, SIGNAL(Error(QString)), SIGNAL(Error(QString))); connect(loader_, SIGNAL(TaskStarted(int)), SIGNAL(TaskStarted(int))); - connect(loader_, SIGNAL(LoadFinished(Itdb_iTunesDB*)), SLOT(LoadFinished(Itdb_iTunesDB*))); + connect(loader_, SIGNAL(LoadFinished(Itdb_iTunesDB*)), + SLOT(LoadFinished(Itdb_iTunesDB*))); connect(loader_thread_, SIGNAL(started()), loader_, SLOT(LoadDatabase())); loader_thread_->start(); } -GPodDevice::~GPodDevice() { -} +GPodDevice::~GPodDevice() {} void GPodDevice::LoadFinished(Itdb_iTunesDB* db) { QMutexLocker l(&db_mutex_); @@ -66,22 +63,20 @@ void GPodDevice::LoadFinished(Itdb_iTunesDB* db) { db_wait_cond_.wakeAll(); loader_->deleteLater(); - loader_ = NULL; + loader_ = nullptr; } bool GPodDevice::StartCopy(QList* supported_filetypes) { { // Wait for the database to be loaded QMutexLocker l(&db_mutex_); - if (!db_) - db_wait_cond_.wait(&db_mutex_); + if (!db_) db_wait_cond_.wait(&db_mutex_); } // Ensure only one "organise files" can be active at any one time db_busy_.lock(); - if (supported_filetypes) - GetSupportedFiletypes(supported_filetypes); + if (supported_filetypes) GetSupportedFiletypes(supported_filetypes); return true; } @@ -113,9 +108,10 @@ bool GPodDevice::CopyToStorage(const CopyJob& job) { Itdb_Track* track = AddTrackToITunesDb(job.metadata_); // Copy the file - GError* error = NULL; - itdb_cp_track_to_ipod(track, QDir::toNativeSeparators(job.source_) - .toLocal8Bit().constData(), &error); + GError* error = nullptr; + itdb_cp_track_to_ipod( + track, QDir::toNativeSeparators(job.source_).toLocal8Bit().constData(), + &error); if (error) { qLog(Error) << "copying failed:" << error->message; app_->AddError(QString::fromUtf8(error->message)); @@ -139,7 +135,7 @@ bool GPodDevice::CopyToStorage(const CopyJob& job) { void GPodDevice::WriteDatabase(bool success) { if (success) { // Write the itunes database - GError* error = NULL; + GError* error = nullptr; itdb_write(db_, &error); if (error) { qLog(Error) << "writing database failed:" << error->message; @@ -149,10 +145,8 @@ void GPodDevice::WriteDatabase(bool success) { FinaliseDatabase(); // Update the library model - if (!songs_to_add_.isEmpty()) - backend_->AddOrUpdateSongs(songs_to_add_); - if (!songs_to_remove_.isEmpty()) - backend_->DeleteSongs(songs_to_remove_); + if (!songs_to_add_.isEmpty()) backend_->AddOrUpdateSongs(songs_to_add_); + if (!songs_to_remove_.isEmpty()) backend_->DeleteSongs(songs_to_remove_); } } @@ -166,20 +160,20 @@ void GPodDevice::FinishCopy(bool success) { ConnectedDevice::FinishCopy(success); } -void GPodDevice::StartDelete() { - StartCopy(NULL); -} +void GPodDevice::StartDelete() { StartCopy(nullptr); } -bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, const QString& relative_to) { +bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, + const QString& relative_to) { QString ipod_filename = path; if (!relative_to.isEmpty() && path.startsWith(relative_to)) - ipod_filename.remove(0, relative_to.length() + (relative_to.endsWith('/') ? -1 : 0)); + ipod_filename.remove( + 0, relative_to.length() + (relative_to.endsWith('/') ? -1 : 0)); ipod_filename.replace('/', ':'); // Find the track in the itdb, identify it by its filename - Itdb_Track* track = NULL; - for (GList* tracks = db_->tracks ; tracks != NULL ; tracks = tracks->next) { + Itdb_Track* track = nullptr; + for (GList* tracks = db_->tracks; tracks != nullptr; tracks = tracks->next) { Itdb_Track* t = static_cast(tracks->data); if (t->ipod_path == ipod_filename) { @@ -188,13 +182,14 @@ bool GPodDevice::RemoveTrackFromITunesDb(const QString& path, const QString& rel } } - if (track == NULL) { + if (track == nullptr) { qLog(Warning) << "Couldn't find song" << path << "in iTunesDB"; return false; } // Remove the track from all playlists - for (GList* playlists = db_->playlists ; playlists != NULL ; playlists = playlists->next) { + for (GList* playlists = db_->playlists; playlists != nullptr; + playlists = playlists->next) { Itdb_Playlist* playlist = static_cast(playlists->data); if (itdb_playlist_contains_track(playlist, track)) { @@ -215,8 +210,7 @@ bool GPodDevice::DeleteFromStorage(const DeleteJob& job) { return false; // Remove the file - if (!QFile::remove(job.metadata_.url().toLocalFile())) - return false; + if (!QFile::remove(job.metadata_.url().toLocalFile())) return false; // Remove it from our library model songs_to_remove_ << job.metadata_; diff --git a/src/devices/gpoddevice.h b/src/devices/gpoddevice.h index e163e0574..b40333053 100644 --- a/src/devices/gpoddevice.h +++ b/src/devices/gpoddevice.h @@ -31,12 +31,10 @@ class GPodLoader; class GPodDevice : public ConnectedDevice, public virtual MusicStorage { Q_OBJECT -public: - Q_INVOKABLE GPodDevice( - const QUrl& url, DeviceLister* lister, - const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + public: + Q_INVOKABLE GPodDevice(const QUrl& url, DeviceLister* lister, + const QString& unique_id, DeviceManager* manager, + Application* app, int database_id, bool first_time); ~GPodDevice(); void Init(); @@ -53,20 +51,20 @@ public: bool DeleteFromStorage(const DeleteJob& job); void FinishDelete(bool success); -protected slots: + protected slots: void LoadFinished(Itdb_iTunesDB* db); -protected: + protected: Itdb_Track* AddTrackToITunesDb(const Song& metadata); void AddTrackToModel(Itdb_Track* track, const QString& prefix); bool RemoveTrackFromITunesDb(const QString& path, const QString& relative_to = QString()); virtual void FinaliseDatabase() {} -private: + private: void WriteDatabase(bool success); -protected: + protected: QThread* loader_thread_; GPodLoader* loader_; @@ -79,4 +77,4 @@ protected: SongList songs_to_remove_; }; -#endif // GPODDEVICE_H +#endif // GPODDEVICE_H diff --git a/src/devices/gpodloader.cpp b/src/devices/gpodloader.cpp index 730cff5b8..b57596fc0 100644 --- a/src/devices/gpodloader.cpp +++ b/src/devices/gpodloader.cpp @@ -28,28 +28,27 @@ #include GPodLoader::GPodLoader(const QString& mount_point, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device) - : QObject(NULL), - device_(device), - mount_point_(mount_point), - type_(Song::Type_Unknown), - task_manager_(task_manager), - backend_(backend) -{ + LibraryBackend* backend, + std::shared_ptr device) + : QObject(nullptr), + device_(device), + mount_point_(mount_point), + type_(Song::Type_Unknown), + task_manager_(task_manager), + backend_(backend) { original_thread_ = thread(); } -GPodLoader::~GPodLoader() { -} +GPodLoader::~GPodLoader() {} void GPodLoader::LoadDatabase() { int task_id = task_manager_->StartTask(tr("Loading iPod database")); emit TaskStarted(task_id); // Load the iTunes database - GError* error = NULL; - Itdb_iTunesDB* db = itdb_parse( - QDir::toNativeSeparators(mount_point_).toLocal8Bit(), &error); + GError* error = nullptr; + Itdb_iTunesDB* db = + itdb_parse(QDir::toNativeSeparators(mount_point_).toLocal8Bit(), &error); // Check for errors if (!db) { @@ -67,18 +66,18 @@ void GPodLoader::LoadDatabase() { // Convert all the tracks from libgpod structs into Song classes const QString prefix = path_prefix_.isEmpty() - ? QDir::fromNativeSeparators(mount_point_) : path_prefix_; + ? QDir::fromNativeSeparators(mount_point_) + : path_prefix_; SongList songs; - for (GList* tracks = db->tracks ; tracks != NULL ; tracks = tracks->next) { + for (GList* tracks = db->tracks; tracks != nullptr; tracks = tracks->next) { Itdb_Track* track = static_cast(tracks->data); Song song; song.InitFromItdb(track, prefix); song.set_directory_id(1); - if (type_ != Song::Type_Unknown) - song.set_filetype(type_); + if (type_ != Song::Type_Unknown) song.set_filetype(type_); songs << song; } diff --git a/src/devices/gpodloader.h b/src/devices/gpodloader.h index c24fd8a7a..3b8b273ba 100644 --- a/src/devices/gpodloader.h +++ b/src/devices/gpodloader.h @@ -18,9 +18,10 @@ #ifndef GPODLOADER_H #define GPODLOADER_H +#include + #include -#include #include #include "core/song.h" @@ -32,15 +33,15 @@ class TaskManager; class GPodLoader : public QObject { Q_OBJECT -public: + public: GPodLoader(const QString& mount_point, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device); + LibraryBackend* backend, std::shared_ptr device); ~GPodLoader(); void set_music_path_prefix(const QString& prefix) { path_prefix_ = prefix; } void set_song_type(Song::FileType type) { type_ = type; } -public slots: + public slots: void LoadDatabase(); signals: @@ -48,8 +49,8 @@ signals: void TaskStarted(int task_id); void LoadFinished(Itdb_iTunesDB* db); -private: - boost::shared_ptr device_; + private: + std::shared_ptr device_; QThread* original_thread_; QString mount_point_; @@ -59,4 +60,4 @@ private: LibraryBackend* backend_; }; -#endif // GPODLOADER_H +#endif // GPODLOADER_H diff --git a/src/devices/macdevicelister.h b/src/devices/macdevicelister.h index daf70af7c..8fdb7411e 100644 --- a/src/devices/macdevicelister.h +++ b/src/devices/macdevicelister.h @@ -28,7 +28,7 @@ class MacDeviceLister : public DeviceLister { virtual QString MakeFriendlyName(const QString& id); virtual QList MakeDeviceUrls(const QString& id); - virtual void UnmountDevice(const QString &id); + virtual void UnmountDevice(const QString& id); virtual void UpdateDeviceFreeSpace(const QString& id); struct MTPDevice { @@ -57,8 +57,8 @@ class MacDeviceLister : public DeviceLister { static void USBDeviceAddedCallback(void* refcon, io_iterator_t it); static void USBDeviceRemovedCallback(void* refcon, io_iterator_t it); - static void DiskUnmountCallback( - DADiskRef disk, DADissenterRef dissenter, void* context); + static void DiskUnmountCallback(DADiskRef disk, DADissenterRef dissenter, + void* context); void FoundMTPDevice(const MTPDevice& device, const QString& serial); void RemovedMTPDevice(const QString& serial); @@ -81,9 +81,9 @@ class MacDeviceLister : public DeviceLister { }; uint qHash(const MacDeviceLister::MTPDevice& device); -inline bool operator==(const MacDeviceLister::MTPDevice& a, const MacDeviceLister::MTPDevice& b) { - return (a.vendor_id == b.vendor_id) && - (a.product_id == b.product_id); +inline bool operator==(const MacDeviceLister::MTPDevice& a, + const MacDeviceLister::MTPDevice& b) { + return (a.vendor_id == b.vendor_id) && (a.product_id == b.product_id); } #endif diff --git a/src/devices/macdevicelister.mm b/src/devices/macdevicelister.mm index d99c092d5..e4d8934a8 100644 --- a/src/devices/macdevicelister.mm +++ b/src/devices/macdevicelister.mm @@ -110,7 +110,7 @@ void MacDeviceLister::Init() { // Populate MTP Device list. if (sMTPDeviceList.empty()) { - LIBMTP_device_entry_t* devices = NULL; + LIBMTP_device_entry_t* devices = nullptr; int num = 0; if (LIBMTP_Get_Supported_Devices_List(&devices, &num) != 0) { qLog(Warning) << "Failed to get MTP device list"; @@ -144,7 +144,7 @@ void MacDeviceLister::Init() { DARegisterDiskAppearedCallback( loop_session_, kDADiskDescriptionMatchVolumeMountable, &DiskAddedCallback, reinterpret_cast(this)); - DARegisterDiskDisappearedCallback(loop_session_, NULL, &DiskRemovedCallback, + DARegisterDiskDisappearedCallback(loop_session_, nullptr, &DiskRemovedCallback, reinterpret_cast(this)); DASessionScheduleWithRunLoop(loop_session_, run_loop_, kCFRunLoopDefaultMode); @@ -213,7 +213,7 @@ CFTypeRef GetUSBRegistryEntry(io_object_t device, CFStringRef key) { } IOObjectRelease(it); - return NULL; + return nullptr; } QString GetUSBRegistryEntryString(io_object_t device, CFStringRef key) { @@ -520,7 +520,7 @@ void MacDeviceLister::USBDeviceAddedCallback(void* refcon, io_iterator_t it) { continue; } - IOCFPlugInInterface** plugin_interface = NULL; + IOCFPlugInInterface** plugin_interface = nullptr; SInt32 score; kern_return_t err = IOCreatePlugInInterfaceForService( object, kIOUSBDeviceUserClientTypeID, kIOCFPlugInInterfaceID, @@ -529,7 +529,7 @@ void MacDeviceLister::USBDeviceAddedCallback(void* refcon, io_iterator_t it) { continue; } - IOUSBDeviceInterface** dev = NULL; + IOUSBDeviceInterface** dev = nullptr; HRESULT result = (*plugin_interface)->QueryInterface( plugin_interface, CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID), (LPVOID*)&dev); diff --git a/src/devices/mtpconnection.cpp b/src/devices/mtpconnection.cpp index 4a34386ed..009aad5eb 100644 --- a/src/devices/mtpconnection.cpp +++ b/src/devices/mtpconnection.cpp @@ -21,9 +21,7 @@ #include #include -MtpConnection::MtpConnection(const QUrl& url) - : device_(NULL) -{ +MtpConnection::MtpConnection(const QUrl& url) : device_(nullptr) { QString hostname = url.host(); // Parse the URL QRegExp host_re("^usb-(\\d+)-(\\d+)$"); @@ -37,12 +35,18 @@ MtpConnection::MtpConnection(const QUrl& url) const unsigned int device_num = host_re.cap(2).toInt(); if (url.hasQueryItem("vendor")) { - LIBMTP_raw_device_t* raw_device = (LIBMTP_raw_device_t*)malloc(sizeof(LIBMTP_raw_device_t)); - raw_device->device_entry.vendor = url.queryItemValue("vendor").toAscii().data(); - raw_device->device_entry.product = url.queryItemValue("product").toAscii().data(); - raw_device->device_entry.vendor_id = url.queryItemValue("vendor_id").toUShort(); - raw_device->device_entry.product_id = url.queryItemValue("product_id").toUShort(); - raw_device->device_entry.device_flags = url.queryItemValue("quirks").toUInt(); + LIBMTP_raw_device_t* raw_device = + (LIBMTP_raw_device_t*)malloc(sizeof(LIBMTP_raw_device_t)); + raw_device->device_entry.vendor = + url.queryItemValue("vendor").toAscii().data(); + raw_device->device_entry.product = + url.queryItemValue("product").toAscii().data(); + raw_device->device_entry.vendor_id = + url.queryItemValue("vendor_id").toUShort(); + raw_device->device_entry.product_id = + url.queryItemValue("product_id").toUShort(); + raw_device->device_entry.device_flags = + url.queryItemValue("quirks").toUInt(); raw_device->bus_location = bus_location; raw_device->devnum = device_num; @@ -53,15 +57,15 @@ MtpConnection::MtpConnection(const QUrl& url) // Get a list of devices from libmtp and figure out which one is ours int count = 0; - LIBMTP_raw_device_t* raw_devices = NULL; + LIBMTP_raw_device_t* raw_devices = nullptr; LIBMTP_error_number_t err = LIBMTP_Detect_Raw_Devices(&raw_devices, &count); if (err != LIBMTP_ERROR_NONE) { qLog(Warning) << "MTP error:" << err; return; } - LIBMTP_raw_device_t* raw_device = NULL; - for (int i=0 ; i class MtpConnection { -public: + public: MtpConnection(const QUrl& url); ~MtpConnection(); bool is_valid() const { return device_; } LIBMTP_mtpdevice_t* device() const { return device_; } -private: + private: Q_DISABLE_COPY(MtpConnection); LIBMTP_mtpdevice_t* device_; }; -#endif // MTPCONNECTION_H +#endif // MTPCONNECTION_H diff --git a/src/devices/mtpdevice.cpp b/src/devices/mtpdevice.cpp index d55259aa6..252289fa9 100644 --- a/src/devices/mtpdevice.cpp +++ b/src/devices/mtpdevice.cpp @@ -33,27 +33,25 @@ bool MtpDevice::sInitialisedLibMTP = false; MtpDevice::MtpDevice(const QUrl& url, DeviceLister* lister, const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time) - : ConnectedDevice(url, lister, unique_id, manager, app, database_id, first_time), - loader_thread_(new QThread(this)), - loader_(NULL) -{ + Application* app, int database_id, bool first_time) + : ConnectedDevice(url, lister, unique_id, manager, app, database_id, + first_time), + loader_thread_(new QThread(this)), + loader_(nullptr) { if (!sInitialisedLibMTP) { LIBMTP_Init(); sInitialisedLibMTP = true; } } -MtpDevice::~MtpDevice() { -} +MtpDevice::~MtpDevice() {} void MtpDevice::Init() { InitBackendDirectory("/", first_time_, false); model_->Init(); - loader_ = new MtpLoader(url_, app_->task_manager(), backend_, - shared_from_this()); + loader_ = + new MtpLoader(url_, app_->task_manager(), backend_, shared_from_this()); loader_->moveToThread(loader_thread_); connect(loader_, SIGNAL(Error(QString)), SIGNAL(Error(QString))); @@ -67,7 +65,7 @@ void MtpDevice::Init() { void MtpDevice::LoadFinished() { loader_->deleteLater(); - loader_ = NULL; + loader_ = nullptr; db_busy_.unlock(); } @@ -90,7 +88,7 @@ bool MtpDevice::StartCopy(QList* supported_types) { } static int ProgressCallback(uint64_t const sent, uint64_t const total, - void const* const data) { + void const* const data) { const MusicStorage::CopyJob* job = reinterpret_cast(data); job->progress_(float(sent) / total); @@ -99,19 +97,17 @@ static int ProgressCallback(uint64_t const sent, uint64_t const total, } bool MtpDevice::CopyToStorage(const CopyJob& job) { - if (!connection_->is_valid()) - return false; + if (!connection_->is_valid()) return false; // Convert metadata LIBMTP_track_t track; job.metadata_.ToMTP(&track); // Send the file - int ret = LIBMTP_Send_Track_From_File( - connection_->device(), job.source_.toUtf8().constData(), &track, - ProgressCallback, &job); - if (ret != 0) - return false; + int ret = LIBMTP_Send_Track_From_File(connection_->device(), + job.source_.toUtf8().constData(), + &track, ProgressCallback, &job); + if (ret != 0) return false; // Add it to our LibraryModel Song metadata_on_device; @@ -121,8 +117,7 @@ bool MtpDevice::CopyToStorage(const CopyJob& job) { // Remove the original if requested if (job.remove_original_) { - if (!QFile::remove(job.source_)) - return false; + if (!QFile::remove(job.source_)) return false; } return true; @@ -130,10 +125,8 @@ bool MtpDevice::CopyToStorage(const CopyJob& job) { void MtpDevice::FinishCopy(bool success) { if (success) { - if (!songs_to_add_.isEmpty()) - backend_->AddOrUpdateSongs(songs_to_add_); - if (!songs_to_remove_.isEmpty()) - backend_->DeleteSongs(songs_to_remove_); + if (!songs_to_add_.isEmpty()) backend_->AddOrUpdateSongs(songs_to_add_); + if (!songs_to_remove_.isEmpty()) backend_->DeleteSongs(songs_to_remove_); } songs_to_add_.clear(); @@ -146,9 +139,7 @@ void MtpDevice::FinishCopy(bool success) { ConnectedDevice::FinishCopy(success); } -void MtpDevice::StartDelete() { - StartCopy(NULL); -} +void MtpDevice::StartDelete() { StartCopy(nullptr); } bool MtpDevice::DeleteFromStorage(const DeleteJob& job) { // Extract the ID from the song's URL @@ -157,13 +148,11 @@ bool MtpDevice::DeleteFromStorage(const DeleteJob& job) { bool ok = false; uint32_t id = filename.toUInt(&ok); - if (!ok) - return false; + if (!ok) return false; // Remove the file int ret = LIBMTP_Delete_Object(connection_->device(), id); - if (ret != 0) - return false; + if (ret != 0) return false; // Remove it from our library model songs_to_remove_ << job.metadata_; @@ -171,38 +160,46 @@ bool MtpDevice::DeleteFromStorage(const DeleteJob& job) { return true; } -void MtpDevice::FinishDelete(bool success) { - FinishCopy(success); -} +void MtpDevice::FinishDelete(bool success) { FinishCopy(success); } bool MtpDevice::GetSupportedFiletypes(QList* ret) { QMutexLocker l(&db_busy_); MtpConnection connection(url_); if (!connection.is_valid()) { - qLog(Warning) << "Error connecting to MTP device, couldn't get list of supported filetypes"; + qLog(Warning) << "Error connecting to MTP device, couldn't get list of " + "supported filetypes"; return false; } return GetSupportedFiletypes(ret, connection.device()); } -bool MtpDevice::GetSupportedFiletypes(QList* ret, LIBMTP_mtpdevice_t* device) { - uint16_t* list = NULL; +bool MtpDevice::GetSupportedFiletypes(QList* ret, + LIBMTP_mtpdevice_t* device) { + uint16_t* list = nullptr; uint16_t length = 0; - if (LIBMTP_Get_Supported_Filetypes(device, &list, &length) - || !list || !length) + if (LIBMTP_Get_Supported_Filetypes(device, &list, &length) || !list || + !length) return false; - for (int i=0 ; i* ret, LIBMTP_mtpdevi *ret << Song::Type_OggFlac; break; default: - qLog(Error) << "Unknown MTP file format" << - LIBMTP_Get_Filetype_Description(LIBMTP_filetype_t(list[i])); + qLog(Error) << "Unknown MTP file format" + << LIBMTP_Get_Filetype_Description( + LIBMTP_filetype_t(list[i])); break; } } diff --git a/src/devices/mtpdevice.h b/src/devices/mtpdevice.h index 6bc45f5ba..c3577cfc4 100644 --- a/src/devices/mtpdevice.h +++ b/src/devices/mtpdevice.h @@ -18,12 +18,12 @@ #ifndef MTPDEVICE_H #define MTPDEVICE_H -#include "connecteddevice.h" +#include #include #include -#include +#include "connecteddevice.h" struct LIBMTP_mtpdevice_struct; @@ -33,14 +33,16 @@ class MtpLoader; class MtpDevice : public ConnectedDevice { Q_OBJECT -public: + public: Q_INVOKABLE MtpDevice(const QUrl& url, DeviceLister* lister, const QString& unique_id, DeviceManager* manager, - Application* app, - int database_id, bool first_time); + Application* app, int database_id, bool first_time); ~MtpDevice(); - static QStringList url_schemes() { return QStringList() << "mtp" << "gphoto2"; } + static QStringList url_schemes() { + return QStringList() << "mtp" + << "gphoto2"; + } void Init(); @@ -56,15 +58,16 @@ public: bool DeleteFromStorage(const DeleteJob& job); void FinishDelete(bool success); -private slots: + private slots: void LoadFinished(); -private: - bool GetSupportedFiletypes(QList* ret, LIBMTP_mtpdevice_struct* device); + private: + bool GetSupportedFiletypes(QList* ret, + LIBMTP_mtpdevice_struct* device); int GetFreeSpace(LIBMTP_mtpdevice_struct* device); int GetCapacity(LIBMTP_mtpdevice_struct* device); -private: + private: static bool sInitialisedLibMTP; QThread* loader_thread_; @@ -74,7 +77,7 @@ private: SongList songs_to_add_; SongList songs_to_remove_; - boost::scoped_ptr connection_; + std::unique_ptr connection_; }; -#endif // MTPDEVICE_H +#endif // MTPDEVICE_H diff --git a/src/devices/mtploader.cpp b/src/devices/mtploader.cpp index 17015f18a..61247b0fe 100644 --- a/src/devices/mtploader.cpp +++ b/src/devices/mtploader.cpp @@ -15,28 +15,28 @@ along with Clementine. If not, see . */ +#include "mtploader.h" + +#include + #include "connecteddevice.h" #include "mtpconnection.h" -#include "mtploader.h" #include "core/song.h" #include "core/taskmanager.h" #include "library/librarybackend.h" -#include - MtpLoader::MtpLoader(const QUrl& url, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device) - : QObject(NULL), - device_(device), - url_(url), - task_manager_(task_manager), - backend_(backend) -{ + LibraryBackend* backend, + std::shared_ptr device) + : QObject(nullptr), + device_(device), + url_(url), + task_manager_(task_manager), + backend_(backend) { original_thread_ = thread(); } -MtpLoader::~MtpLoader() { -} +MtpLoader::~MtpLoader() {} void MtpLoader::LoadDatabase() { int task_id = task_manager_->StartTask(tr("Loading MTP device")); @@ -59,7 +59,8 @@ bool MtpLoader::TryLoad() { // Load the list of songs on the device SongList songs; - LIBMTP_track_t* tracks = LIBMTP_Get_Tracklisting_With_Callback(dev.device(), NULL, NULL); + LIBMTP_track_t* tracks = + LIBMTP_Get_Tracklisting_With_Callback(dev.device(), nullptr, nullptr); while (tracks) { LIBMTP_track_t* track = tracks; diff --git a/src/devices/mtploader.h b/src/devices/mtploader.h index c38401f89..a723aee0f 100644 --- a/src/devices/mtploader.h +++ b/src/devices/mtploader.h @@ -18,11 +18,11 @@ #ifndef MTPLOADER_H #define MTPLOADER_H +#include + #include #include -#include - class ConnectedDevice; class LibraryBackend; class TaskManager; @@ -30,12 +30,12 @@ class TaskManager; class MtpLoader : public QObject { Q_OBJECT -public: - MtpLoader(const QUrl& url, TaskManager* task_manager, - LibraryBackend* backend, boost::shared_ptr device); + public: + MtpLoader(const QUrl& url, TaskManager* task_manager, LibraryBackend* backend, + std::shared_ptr device); ~MtpLoader(); -public slots: + public slots: void LoadDatabase(); signals: @@ -43,11 +43,11 @@ signals: void TaskStarted(int task_id); void LoadFinished(); -private: + private: bool TryLoad(); -private: - boost::shared_ptr device_; + private: + std::shared_ptr device_; QThread* original_thread_; QUrl url_; @@ -55,4 +55,4 @@ private: LibraryBackend* backend_; }; -#endif // MTPLOADER_H +#endif // MTPLOADER_H diff --git a/src/engines/bufferconsumer.h b/src/engines/bufferconsumer.h index c005b4414..349b98821 100644 --- a/src/engines/bufferconsumer.h +++ b/src/engines/bufferconsumer.h @@ -23,7 +23,7 @@ class GstEnginePipeline; class BufferConsumer { -public: + public: virtual ~BufferConsumer() {} // This is called in some unspecified GStreamer thread. @@ -32,4 +32,4 @@ public: virtual void ConsumeBuffer(GstBuffer* buffer, int pipeline_id) = 0; }; -#endif // BUFFERCONSUMER_H +#endif // BUFFERCONSUMER_H diff --git a/src/globalsearch/lastfmsearchprovider.h b/src/engines/devicefinder.cpp similarity index 55% rename from src/globalsearch/lastfmsearchprovider.h rename to src/engines/devicefinder.cpp index 849bb1a0f..4dda6abea 100644 --- a/src/globalsearch/lastfmsearchprovider.h +++ b/src/engines/devicefinder.cpp @@ -1,42 +1,35 @@ /* This file is part of Clementine. - Copyright 2010, David Sansome - + Copyright 2014, David Sansome + 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 . */ -#ifndef LASTFMSEARCHPROVIDER_H -#define LASTFMSEARCHPROVIDER_H +#include "devicefinder.h" -#include "simplesearchprovider.h" +DeviceFinder::DeviceFinder(const QString& gstreamer_sink) + : gstreamer_sink_(gstreamer_sink) { +} -class LastFMService; +QString DeviceFinder::GuessIconName(const QString& description) { + QString description_lower = description.toLower(); + if (description_lower.contains("headset")) { + return "audio-headset"; + } -class LastFMSearchProvider : public SimpleSearchProvider { -public: - LastFMSearchProvider(LastFMService* service, Application* app, QObject* parent); + if (description_lower.contains("headphone")) { + return "audio-headphones"; + } - void LoadArtAsync(int id, const Result& result); - - bool IsLoggedIn(); - void ShowConfig(); - -protected: - void RecreateItems(); - -private: - LastFMService* service_; - QImage icon_; -}; - -#endif // LASTFMSEARCHPROVIDER_H + return "audio-card"; +} diff --git a/src/engines/devicefinder.h b/src/engines/devicefinder.h new file mode 100644 index 000000000..fe2ff671f --- /dev/null +++ b/src/engines/devicefinder.h @@ -0,0 +1,60 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#ifndef DEVICEFINDER_H +#define DEVICEFINDER_H + +#include +#include + +// Finds audio output devices that can be used with a given gstreamer sink. +class DeviceFinder { + public: + struct Device { + // The value to set as the "device" gstreamer property. + QVariant device_property_value; + + // A human readable description of the device. + QString description; + + // An icon to use in the UI. + QString icon_name; + }; + + virtual ~DeviceFinder() {} + + // The name of the gstreamer sink element that devices found by this class + // can be used with. + QString gstreamer_sink() const { return gstreamer_sink_; } + + // Does any necessary setup, returning false if this DeviceFinder cannot + // be used. + virtual bool Initialise() = 0; + + // Returns a list of available devices. + virtual QList ListDevices() = 0; + + protected: + explicit DeviceFinder(const QString& gstreamer_sink); + + static QString GuessIconName(const QString& description); + + private: + QString gstreamer_sink_; +}; + +#endif // DEVICEFINDER_H diff --git a/src/engines/directsounddevicefinder.cpp b/src/engines/directsounddevicefinder.cpp new file mode 100644 index 000000000..9a1d62e25 --- /dev/null +++ b/src/engines/directsounddevicefinder.cpp @@ -0,0 +1,53 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#ifdef INTERFACE +#undef INTERFACE +#endif + +#include + +#include + +#include "directsounddevicefinder.h" + +DirectSoundDeviceFinder::DirectSoundDeviceFinder() + : DeviceFinder("directsoundsink") { +} + +QList DirectSoundDeviceFinder::ListDevices() { + State state; + DirectSoundEnumerateA(&DirectSoundDeviceFinder::EnumerateCallback, &state); + return state.devices; +} + +BOOL DirectSoundDeviceFinder::EnumerateCallback(LPGUID guid, + LPCSTR description, + LPCSTR module, + LPVOID state_voidptr) { + State* state = reinterpret_cast(state_voidptr); + + if (guid) { + Device dev; + dev.description = QString::fromUtf8(description); + dev.device_property_value = QUuid(*guid).toByteArray(); + dev.icon_name = GuessIconName(dev.description); + state->devices.append(dev); + } + + return 1; +} diff --git a/src/engines/directsounddevicefinder.h b/src/engines/directsounddevicefinder.h new file mode 100644 index 000000000..1f46c414a --- /dev/null +++ b/src/engines/directsounddevicefinder.h @@ -0,0 +1,43 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#ifndef DIRECTSOUNDDEVICEFINDER_H +#define DIRECTSOUNDDEVICEFINDER_H + +#include + +#include "engines/devicefinder.h" + +class DirectSoundDeviceFinder : public DeviceFinder { + public: + DirectSoundDeviceFinder(); + + virtual bool Initialise() { return true; } + virtual QList ListDevices(); + + private: + struct State { + QList devices; + }; + + static BOOL EnumerateCallback(LPGUID guid, + LPCSTR description, + LPCSTR module, + LPVOID state_voidptr) __attribute__((stdcall)); +}; + +#endif // DIRECTSOUNDDEVICEFINDER_H diff --git a/src/engines/engine_fwd.h b/src/engines/engine_fwd.h index 2f318d364..31377e618 100644 --- a/src/engines/engine_fwd.h +++ b/src/engines/engine_fwd.h @@ -3,34 +3,35 @@ #include -/// Used by eg engineobserver.h, and thus we reduce header dependencies on enginebase.h +/// Used by eg engineobserver.h, and thus we reduce header dependencies on +/// enginebase.h -namespace Engine -{ - struct SimpleMetaBundle; - class Base; +namespace Engine { +struct SimpleMetaBundle; +class Base; - /** - * You should return: - * Playing when playing, - * Paused when paused - * Idle when you still have a URL loaded (ie you have not been told to stop()) - * Empty when you have been told to stop(), or an error occurred and you stopped yourself - * - * It is vital to be Idle just after the track has ended! - */ - enum State { Empty, Idle, Playing, Paused }; +/** + * You should return: + * Playing when playing, + * Paused when paused + * Idle when you still have a URL loaded (ie you have not been told to stop()) + * Empty when you have been told to stop(), + * Error when an error occurred and you stopped yourself + * + * It is vital to be Idle just after the track has ended! + */ +enum State { Empty, Idle, Playing, Paused, Error }; - enum TrackChangeType { - // One of: - First = 0x01, - Manual = 0x02, - Auto = 0x04, +enum TrackChangeType { + // One of: + First = 0x01, + Manual = 0x02, + Auto = 0x04, - // Any of: - SameAlbum = 0x10, - }; - Q_DECLARE_FLAGS(TrackChangeFlags, TrackChangeType); + // Any of: + SameAlbum = 0x10, +}; +Q_DECLARE_FLAGS(TrackChangeFlags, TrackChangeType); } typedef Engine::Base EngineBase; diff --git a/src/engines/enginebase.cpp b/src/engines/enginebase.cpp index 8f3b74ab5..a6b6da15c 100644 --- a/src/engines/enginebase.cpp +++ b/src/engines/enginebase.cpp @@ -15,9 +15,9 @@ along with Clementine. If not, see . */ -//Copyright: (C) 2003 Mark Kretschmann +// Copyright: (C) 2003 Mark Kretschmann // (C) 2004,2005 Max Howell, -//License: See COPYING +// License: See COPYING #include "enginebase.h" #include "core/timeconstants.h" @@ -29,26 +29,23 @@ const char* Engine::Base::kSettingsGroup = "Player"; Engine::Base::Base() - : volume_(50), - beginning_nanosec_(0), - end_nanosec_(0), - scope_(kScopeSize), - fadeout_enabled_(true), - fadeout_duration_nanosec_(2 * kNsecPerSec), // 2s - crossfade_enabled_(true), - autocrossfade_enabled_(false), - crossfade_same_album_(false), - next_background_stream_id_(0), - about_to_end_emitted_(false) -{ -} + : volume_(50), + beginning_nanosec_(0), + end_nanosec_(0), + scope_(kScopeSize), + fadeout_enabled_(true), + fadeout_duration_nanosec_(2 * kNsecPerSec), // 2s + crossfade_enabled_(true), + autocrossfade_enabled_(false), + crossfade_same_album_(false), + next_background_stream_id_(0), + about_to_end_emitted_(false) {} -Engine::Base::~Base() { -} +Engine::Base::~Base() {} bool Engine::Base::Load(const QUrl& url, TrackChangeFlags, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec) { + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec) { Q_UNUSED(force_stop_at_end); url_ = url; @@ -67,7 +64,8 @@ void Engine::Base::SetVolume(uint value) { uint Engine::Base::MakeVolumeLogarithmic(uint volume) { // We're using a logarithmic function to make the volume ramp more natural. - return static_cast( 100 - 100.0 * std::log10( ( 100 - volume ) * 0.09 + 1.0 ) ); + return static_cast(100 - + 100.0 * std::log10((100 - volume) * 0.09 + 1.0)); } void Engine::Base::ReloadSettings() { @@ -75,29 +73,28 @@ void Engine::Base::ReloadSettings() { s.beginGroup(kSettingsGroup); fadeout_enabled_ = s.value("FadeoutEnabled", true).toBool(); - fadeout_duration_nanosec_ = s.value("FadeoutDuration", 2000).toLongLong() * kNsecPerMsec; + fadeout_duration_nanosec_ = + s.value("FadeoutDuration", 2000).toLongLong() * kNsecPerMsec; crossfade_enabled_ = s.value("CrossfadeEnabled", true).toBool(); autocrossfade_enabled_ = s.value("AutoCrossfadeEnabled", false).toBool(); crossfade_same_album_ = !s.value("NoCrossfadeSameAlbum", true).toBool(); fadeout_pause_enabled_ = s.value("FadeoutPauseEnabled", false).toBool(); - fadeout_pause_duration_nanosec_ = s.value("FadeoutPauseDuration", 250).toLongLong() * kNsecPerMsec; + fadeout_pause_duration_nanosec_ = + s.value("FadeoutPauseDuration", 250).toLongLong() * kNsecPerMsec; } void Engine::Base::EmitAboutToEnd() { - if (about_to_end_emitted_) - return; + if (about_to_end_emitted_) return; about_to_end_emitted_ = true; emit TrackAboutToEnd(); } -int Engine::Base::AddBackgroundStream(const QUrl& url) { - return -1; -} +int Engine::Base::AddBackgroundStream(const QUrl& url) { return -1; } bool Engine::Base::Play(const QUrl& u, TrackChangeFlags c, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec) { + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec) { if (!Load(u, c, force_stop_at_end, beginning_nanosec, end_nanosec)) return false; diff --git a/src/engines/enginebase.h b/src/engines/enginebase.h old mode 100644 new mode 100755 index c3e75b0d5..e6c30d2c3 --- a/src/engines/enginebase.h +++ b/src/engines/enginebase.h @@ -15,9 +15,9 @@ along with Clementine. If not, see . */ -//Copyright: (C) 2003 Mark Kretschmann +// Copyright: (C) 2003 Mark Kretschmann // (C) 2004 Max Howell, -//License: See COPYING +// License: See COPYING #ifndef AMAROK_ENGINEBASE_H #define AMAROK_ENGINEBASE_H @@ -27,8 +27,6 @@ #include -#include - #include #include #include @@ -39,7 +37,7 @@ namespace Engine { typedef std::vector Scope; -class Base : public QObject, boost::noncopyable { +class Base : public QObject { Q_OBJECT public: @@ -49,7 +47,7 @@ class Base : public QObject, boost::noncopyable { virtual void StartPreloading(const QUrl&, bool, qint64, qint64) {} virtual bool Play(quint64 offset_nanosec) = 0; - virtual void Stop() = 0; + virtual void Stop(bool stop_after = false) = 0; virtual void Pause() = 0; virtual void Unpause() = 0; virtual void Seek(quint64 offset_nanosec) = 0; @@ -65,8 +63,8 @@ class Base : public QObject, boost::noncopyable { // Subclasses should respect given markers (beginning and end) which are // in miliseconds. virtual bool Load(const QUrl& url, TrackChangeFlags change, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec); + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec); // Sets new values for the beginning and end markers of the currently playing // song. // This doesn't change the state of engine or the stream's current position. @@ -75,19 +73,19 @@ class Base : public QObject, boost::noncopyable { end_nanosec_ = end_nanosec; } - // Plays a media stream represented with the URL 'u' from the given 'beginning' + // Plays a media stream represented with the URL 'u' from the given + // 'beginning' // to the given 'end' (usually from 0 to a song's length). Both markers // should be passed in nanoseconds. 'end' can be negative, indicating that the // real length of 'u' stream is unknown. - bool Play(const QUrl& u, TrackChangeFlags c, - bool force_stop_at_end, + bool Play(const QUrl& u, TrackChangeFlags c, bool force_stop_at_end, quint64 beginning_nanosec, qint64 end_nanosec); void SetVolume(uint value); // Simple accessors inline uint volume() const { return volume_; } - virtual const Scope &scope() { return scope_; } + virtual const Scope& scope(int chunk_length) { return scope_; } bool is_fadeout_enabled() const { return fadeout_enabled_; } bool is_crossfade_enabled() const { return crossfade_enabled_; } bool is_autocrossfade_enabled() const { return autocrossfade_enabled_; } @@ -100,10 +98,11 @@ class Base : public QObject, boost::noncopyable { virtual void ReloadSettings(); virtual void SetEqualizerEnabled(bool) {} - virtual void SetEqualizerParameters(int preamp, const QList& bandGains) {} + virtual void SetEqualizerParameters(int preamp, const QList& bandGains) { + } virtual void SetStereoBalance(float value) {} - signals: +signals: // Emitted when crossfading is enabled and the track is crossfade_duration_ // away from finishing void TrackAboutToEnd(); @@ -117,13 +116,14 @@ class Base : public QObject, boost::noncopyable { // Emitted when Engine was unable to play a song with the given QUrl. void InvalidSongRequested(const QUrl&); - // Emitted when Engine successfully started playing a song with the + // Emitted when Engine successfully started playing a song with the // given QUrl. void ValidSongRequested(const QUrl&); void MetaData(const Engine::SimpleMetaBundle&); - // Signals that the engine's state has changed (a stream was stopped for example). + // Signals that the engine's state has changed (a stream was stopped for + // example). // Always use the state from event, because it's not guaranteed that immediate // subsequent call to state() won't return a stale value. void StateChanged(Engine::State); @@ -131,8 +131,8 @@ class Base : public QObject, boost::noncopyable { protected: Base(); - virtual void SetVolumeSW( uint percent ) = 0; - static uint MakeVolumeLogarithmic( uint volume ); + virtual void SetVolumeSW(uint percent) = 0; + static uint MakeVolumeLogarithmic(uint volume); void EmitAboutToEnd(); protected: @@ -153,9 +153,9 @@ class Base : public QObject, boost::noncopyable { private: bool about_to_end_emitted_; + Q_DISABLE_COPY(Base); }; - struct SimpleMetaBundle { QString title; QString artist; @@ -169,6 +169,6 @@ struct SimpleMetaBundle { QString tracknr; }; -} // namespace +} // namespace #endif diff --git a/src/engines/gstelementdeleter.cpp b/src/engines/gstelementdeleter.cpp index 6598931da..84dd516db 100644 --- a/src/engines/gstelementdeleter.cpp +++ b/src/engines/gstelementdeleter.cpp @@ -19,10 +19,7 @@ #include -GstElementDeleter::GstElementDeleter(QObject* parent) - : QObject(parent) -{ -} +GstElementDeleter::GstElementDeleter(QObject* parent) : QObject(parent) {} void GstElementDeleter::DeleteElementLater(GstElement* element) { metaObject()->invokeMethod(this, "DeleteElement", Qt::QueuedConnection, diff --git a/src/engines/gstelementdeleter.h b/src/engines/gstelementdeleter.h index 28e313db1..00b548c49 100644 --- a/src/engines/gstelementdeleter.h +++ b/src/engines/gstelementdeleter.h @@ -25,8 +25,8 @@ class GstElementDeleter : public QObject { Q_OBJECT -public: - GstElementDeleter(QObject* parent = 0); + public: + GstElementDeleter(QObject* parent = nullptr); // If you call this function with any gstreamer element, the element will get // deleted in the main thread. This is useful if you need to delete an @@ -36,8 +36,8 @@ public: // deleted later regardless. void DeleteElementLater(GstElement* element); -private slots: + private slots: void DeleteElement(GstElement* element); }; -#endif // GSTBINDELETER_H +#endif // GSTBINDELETER_H diff --git a/src/engines/gstengine.cpp b/src/engines/gstengine.cpp old mode 100644 new mode 100755 index 7131c8ce9..20e1682f4 --- a/src/engines/gstengine.cpp +++ b/src/engines/gstengine.cpp @@ -19,29 +19,20 @@ * 51 Franklin Steet, Fifth Floor, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "config.h" #include "gstengine.h" -#include "gstenginepipeline.h" -#include "core/logging.h" -#include "core/taskmanager.h" -#include "core/utilities.h" - -#ifdef HAVE_MOODBAR -# include "gst/moodbar/spectrum.h" -#endif #include +#include #include -#include -#include -#include +#include +#include +#include #include #include #include #include -#include #include #include #include @@ -49,42 +40,67 @@ #include +#include "config.h" +#include "devicefinder.h" +#include "gstenginepipeline.h" +#include "core/logging.h" +#include "core/taskmanager.h" +#include "core/timeconstants.h" +#include "core/utilities.h" +#ifdef HAVE_MOODBAR +#include "gst/moodbar/spectrum.h" +#endif + +#ifdef HAVE_LIBPULSE +#include "engines/pulsedevicefinder.h" +#endif + +#ifdef Q_OS_DARWIN +#include "engines/osxdevicefinder.h" +#endif + +#ifdef Q_OS_WIN32 +#include "engines/directsounddevicefinder.h" +#endif + +using std::shared_ptr; using std::vector; -using boost::shared_ptr; const char* GstEngine::kSettingsGroup = "GstEngine"; const char* GstEngine::kAutoSink = "autoaudiosink"; const char* GstEngine::kHypnotoadPipeline = - "audiotestsrc wave=6 ! " - "audioecho intensity=1 delay=50000000 ! " - "audioecho intensity=1 delay=25000000 ! " - "equalizer-10bands " - "band0=-24 band1=-3 band2=7.5 band3=12 band4=8 " - "band5=6 band6=5 band7=6 band8=0 band9=-24"; + "audiotestsrc wave=6 ! " + "audioecho intensity=1 delay=50000000 ! " + "audioecho intensity=1 delay=25000000 ! " + "equalizer-10bands " + "band0=-24 band1=-3 band2=7.5 band3=12 band4=8 " + "band5=6 band6=5 band7=6 band8=0 band9=-24"; const char* GstEngine::kEnterprisePipeline = - "audiotestsrc wave=5 ! " - "audiocheblimit mode=0 cutoff=120"; + "audiotestsrc wave=5 ! " + "audiocheblimit mode=0 cutoff=120"; GstEngine::GstEngine(TaskManager* task_manager) - : Engine::Base(), - task_manager_(task_manager), - buffering_task_id_(-1), - latest_buffer_(NULL), - equalizer_enabled_(false), - stereo_balance_(0.0f), - rg_enabled_(false), - rg_mode_(0), - rg_preamp_(0.0), - rg_compression_(true), - buffer_duration_nanosec_(1 * kNsecPerSec), // 1s - mono_playback_(false), - seek_timer_(new QTimer(this)), - timer_id_(-1), - next_element_id_(0), - is_fading_out_to_pause_(false), - has_faded_out_(false) -{ + : Engine::Base(), + task_manager_(task_manager), + buffering_task_id_(-1), + latest_buffer_(nullptr), + equalizer_enabled_(false), + stereo_balance_(0.0f), + rg_enabled_(false), + rg_mode_(0), + rg_preamp_(0.0), + rg_compression_(true), + buffer_duration_nanosec_(1 * kNsecPerSec), // 1s + buffer_min_fill_(33), + mono_playback_(false), + seek_timer_(new QTimer(this)), + timer_id_(-1), + next_element_id_(0), + is_fading_out_to_pause_(false), + has_faded_out_(false), + scope_chunk_(0), + have_new_buffer_(false) { seek_timer_->setSingleShot(true); seek_timer_->setInterval(kSeekDelayNanosec / kNsecPerMsec); connect(seek_timer_, SIGNAL(timeout()), SLOT(SeekNow())); @@ -99,19 +115,54 @@ GstEngine::~GstEngine() { // Save configuration gst_deinit(); + + qDeleteAll(device_finders_); } bool GstEngine::Init() { - initialising_ = QtConcurrent::run(&GstEngine::InitialiseGstreamer); + initialising_ = QtConcurrent::run(this, &GstEngine::InitialiseGstreamer); return true; } void GstEngine::InitialiseGstreamer() { - gst_init(NULL, NULL); + gst_init(nullptr, nullptr); #ifdef HAVE_MOODBAR gstmoodbar_register_static(); #endif + + QSet plugin_names; + for (const PluginDetails& plugin : GetPluginList("Sink/Audio")) { + plugin_names.insert(plugin.name); + } + + QList device_finders; +#ifdef HAVE_LIBPULSE + device_finders.append(new PulseDeviceFinder); +#endif +#ifdef Q_OS_DARWIN + device_finders.append(new OsxDeviceFinder); +#endif +#ifdef Q_OS_WIN32 + device_finders.append(new DirectSoundDeviceFinder); +#endif + + for (DeviceFinder* finder : device_finders) { + if (!plugin_names.contains(finder->gstreamer_sink())) { + qLog(Info) << "Skipping DeviceFinder for" << finder->gstreamer_sink() + << "known plugins:" << plugin_names; + delete finder; + continue; + } + if (!finder->Initialise()) { + qLog(Warning) << "Failed to initialise DeviceFinder for" + << finder->gstreamer_sink(); + delete finder; + continue; + } + + device_finders_.append(finder); + } } void GstEngine::ReloadSettings() { @@ -121,48 +172,51 @@ void GstEngine::ReloadSettings() { s.beginGroup(kSettingsGroup); sink_ = s.value("sink", kAutoSink).toString(); - device_ = s.value("device").toString(); + device_ = s.value("device"); - if (sink_.isEmpty()) - sink_ = kAutoSink; + if (sink_.isEmpty()) sink_ = kAutoSink; rg_enabled_ = s.value("rgenabled", false).toBool(); rg_mode_ = s.value("rgmode", 0).toInt(); rg_preamp_ = s.value("rgpreamp", 0.0).toDouble(); rg_compression_ = s.value("rgcompression", true).toBool(); - buffer_duration_nanosec_ = s.value("bufferduration", 4000).toLongLong() * kNsecPerMsec; + buffer_duration_nanosec_ = + s.value("bufferduration", 4000).toLongLong() * kNsecPerMsec; + + buffer_min_fill_ = s.value("bufferminfill", 33).toInt(); mono_playback_ = s.value("monoplayback", false).toBool(); } - qint64 GstEngine::position_nanosec() const { - if (!current_pipeline_) - return 0; + if (!current_pipeline_) return 0; qint64 result = current_pipeline_->position() - beginning_nanosec_; return qint64(qMax(0ll, result)); } qint64 GstEngine::length_nanosec() const { - if (!current_pipeline_) - return 0; + if (!current_pipeline_) return 0; qint64 result = end_nanosec_ - beginning_nanosec_; return qint64(qMax(0ll, result)); } Engine::State GstEngine::state() const { - if (!current_pipeline_) - return url_.isEmpty() ? Engine::Empty : Engine::Idle; + if (!current_pipeline_) return url_.isEmpty() ? Engine::Empty : Engine::Idle; switch (current_pipeline_->state()) { - case GST_STATE_NULL: return Engine::Empty; - case GST_STATE_READY: return Engine::Idle; - case GST_STATE_PLAYING: return Engine::Playing; - case GST_STATE_PAUSED: return Engine::Paused; - default: return Engine::Empty; + case GST_STATE_NULL: + return Engine::Empty; + case GST_STATE_READY: + return Engine::Idle; + case GST_STATE_PLAYING: + return Engine::Playing; + case GST_STATE_PAUSED: + return Engine::Paused; + default: + return Engine::Empty; } } @@ -182,44 +236,80 @@ void GstEngine::AddBufferToScope(GstBuffer* buf, int pipeline_id) { return; } - if (latest_buffer_ != NULL) { + if (latest_buffer_ != nullptr) { gst_buffer_unref(latest_buffer_); } + latest_buffer_ = buf; + have_new_buffer_ = true; } -const Engine::Scope& GstEngine::scope() { - if (latest_buffer_ != NULL) { - UpdateScope(); +const Engine::Scope& GstEngine::scope(int chunk_length) { + // the new buffer could have a different size + if (have_new_buffer_) { + if (latest_buffer_ != nullptr) { + scope_chunks_ = ceil(((double)GST_BUFFER_DURATION(latest_buffer_) / + (double)(chunk_length * kNsecPerMsec))); + } + + // if the buffer is shorter than the chunk length + if (scope_chunks_ <= 0) { + scope_chunks_ = 1; + } + + scope_chunk_ = 0; + have_new_buffer_ = false; } + UpdateScope(chunk_length); return scope_; } -void GstEngine::UpdateScope() { +void GstEngine::UpdateScope(int chunk_length) { typedef Engine::Scope::value_type sample_type; + // determine where to split the buffer + int chunk_density = GST_BUFFER_SIZE(latest_buffer_) / + (GST_BUFFER_DURATION(latest_buffer_) / kNsecPerMsec); + int chunk_size = chunk_length * chunk_density; + // determine the number of channels - GstStructure* structure = gst_caps_get_structure( - GST_BUFFER_CAPS(latest_buffer_), 0); + GstStructure* structure = + gst_caps_get_structure(GST_BUFFER_CAPS(latest_buffer_), 0); int channels = 2; gst_structure_get_int(structure, "channels", &channels); // scope does not support >2 channels - if (channels > 2) - return; + if (channels > 2) return; - const sample_type* source = reinterpret_cast( - GST_BUFFER_DATA(latest_buffer_)); + // in case a buffer doesn't arrive in time + if (scope_chunk_ >= scope_chunks_) { + scope_chunk_ = 0; + return; + } + + // set the starting point in the buffer to take data from + const sample_type* source = + reinterpret_cast(GST_BUFFER_DATA(latest_buffer_)); + source += (chunk_size / sizeof(sample_type)) * scope_chunk_; sample_type* dest = scope_.data(); - const int bytes = qMin( - static_cast(GST_BUFFER_SIZE(latest_buffer_)), - scope_.size() * sizeof(sample_type)); + + int bytes = 0; + + // make sure we don't go beyond the end of the buffer + if (scope_chunk_ == scope_chunks_ - 1) { + bytes = + qMin(static_cast( + GST_BUFFER_SIZE(latest_buffer_) - (chunk_size * scope_chunk_)), + scope_.size() * sizeof(sample_type)); + } else { + bytes = qMin(static_cast(chunk_size), + scope_.size() * sizeof(sample_type)); + } + + scope_chunk_++; memcpy(dest, source, bytes); - - gst_buffer_unref(latest_buffer_); - latest_buffer_ = NULL; } void GstEngine::StartPreloading(const QUrl& url, bool force_stop_at_end, @@ -232,7 +322,7 @@ void GstEngine::StartPreloading(const QUrl& url, bool force_stop_at_end, // pipeline and get gapless playback (hopefully) if (current_pipeline_) current_pipeline_->SetNextUrl(gst_url, beginning_nanosec, - force_stop_at_end ? end_nanosec : 0); + force_stop_at_end ? end_nanosec : 0); } QUrl GstEngine::FixupUrl(const QUrl& url) { @@ -250,19 +340,21 @@ QUrl GstEngine::FixupUrl(const QUrl& url) { } bool GstEngine::Load(const QUrl& url, Engine::TrackChangeFlags change, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec) { + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec) { EnsureInitialised(); - Engine::Base::Load(url, change, force_stop_at_end, beginning_nanosec, end_nanosec); + Engine::Base::Load(url, change, force_stop_at_end, beginning_nanosec, + end_nanosec); QUrl gst_url = FixupUrl(url); - bool crossfade = current_pipeline_ && - ((crossfade_enabled_ && change & Engine::Manual) || - (autocrossfade_enabled_ && change & Engine::Auto)); + bool crossfade = + current_pipeline_ && ((crossfade_enabled_ && change & Engine::Manual) || + (autocrossfade_enabled_ && change & Engine::Auto)); - if (change & Engine::Auto && change & Engine::SameAlbum && !crossfade_same_album_) + if (change & Engine::Auto && change & Engine::SameAlbum && + !crossfade_same_album_) crossfade = false; if (!crossfade && current_pipeline_ && current_pipeline_->url() == gst_url && @@ -272,13 +364,11 @@ bool GstEngine::Load(const QUrl& url, Engine::TrackChangeFlags change, return true; } - shared_ptr pipeline = CreatePipeline(gst_url, - force_stop_at_end ? end_nanosec : 0); - if (!pipeline) - return false; + shared_ptr pipeline = + CreatePipeline(gst_url, force_stop_at_end ? end_nanosec : 0); + if (!pipeline) return false; - if (crossfade) - StartFadeout(); + if (crossfade) StartFadeout(); BufferingFinished(); current_pipeline_ = pipeline; @@ -290,21 +380,22 @@ bool GstEngine::Load(const QUrl& url, Engine::TrackChangeFlags change, // Maybe fade in this track if (crossfade) - current_pipeline_->StartFader(fadeout_duration_nanosec_, QTimeLine::Forward); + current_pipeline_->StartFader(fadeout_duration_nanosec_, + QTimeLine::Forward); return true; } void GstEngine::StartFadeout() { - if (is_fading_out_to_pause_) - return; + if (is_fading_out_to_pause_) return; fadeout_pipeline_ = current_pipeline_; disconnect(fadeout_pipeline_.get(), 0, 0, 0); fadeout_pipeline_->RemoveAllBufferConsumers(); fadeout_pipeline_->StartFader(fadeout_duration_nanosec_, QTimeLine::Backward); - connect(fadeout_pipeline_.get(), SIGNAL(FaderFinished()), SLOT(FadeoutFinished())); + connect(fadeout_pipeline_.get(), SIGNAL(FaderFinished()), + SLOT(FadeoutFinished())); } void GstEngine::StartFadeoutPause() { @@ -313,27 +404,26 @@ void GstEngine::StartFadeoutPause() { fadeout_pause_pipeline_->StartFader(fadeout_pause_duration_nanosec_, QTimeLine::Backward, - QTimeLine::EaseInOutCurve, - false); + QTimeLine::EaseInOutCurve, false); if (fadeout_pipeline_ && fadeout_pipeline_->state() == GST_STATE_PLAYING) { fadeout_pipeline_->StartFader(fadeout_pause_duration_nanosec_, - QTimeLine::Backward, - QTimeLine::LinearCurve, + QTimeLine::Backward, QTimeLine::LinearCurve, false); } - connect(fadeout_pause_pipeline_.get(), SIGNAL(FaderFinished()), SLOT(FadeoutPauseFinished())); + connect(fadeout_pause_pipeline_.get(), SIGNAL(FaderFinished()), + SLOT(FadeoutPauseFinished())); is_fading_out_to_pause_ = true; } bool GstEngine::Play(quint64 offset_nanosec) { EnsureInitialised(); - if (!current_pipeline_ || current_pipeline_->is_buffering()) - return false; + if (!current_pipeline_ || current_pipeline_->is_buffering()) return false; - QFuture future = current_pipeline_->SetState(GST_STATE_PLAYING); + QFuture future = + current_pipeline_->SetState(GST_STATE_PLAYING); PlayFutureWatcher* watcher = new PlayFutureWatcher( - PlayFutureWatcherArg(offset_nanosec, current_pipeline_->id()), this); + PlayFutureWatcherArg(offset_nanosec, current_pipeline_->id()), this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(PlayDone())); @@ -375,7 +465,7 @@ void GstEngine::PlayDone() { StartTimers(); // initial offset - if(offset_nanosec != 0 || beginning_nanosec_ != 0) { + if (offset_nanosec != 0 || beginning_nanosec_ != 0) { Seek(offset_nanosec); } @@ -384,15 +474,13 @@ void GstEngine::PlayDone() { emit ValidSongRequested(url_); } - -void GstEngine::Stop() { +void GstEngine::Stop(bool stop_after) { StopTimers(); - url_ = QUrl(); // To ensure we return Empty from state() + url_ = QUrl(); // To ensure we return Empty from state() beginning_nanosec_ = end_nanosec_ = 0; - if (fadeout_enabled_ && current_pipeline_) - StartFadeout(); + if (fadeout_enabled_ && current_pipeline_ && !stop_after) StartFadeout(); current_pipeline_.reset(); BufferingFinished(); @@ -419,16 +507,14 @@ void GstEngine::FadeoutPauseFinished() { } void GstEngine::Pause() { - if (!current_pipeline_ || current_pipeline_->is_buffering()) - return; + if (!current_pipeline_ || current_pipeline_->is_buffering()) return; // Check if we started a fade out. If it isn't finished yet and the user // pressed play, we inverse the fader and resume the playback. if (is_fading_out_to_pause_) { disconnect(current_pipeline_.get(), SIGNAL(FaderFinished()), 0, 0); current_pipeline_->StartFader(fadeout_pause_duration_nanosec_, - QTimeLine::Forward, - QTimeLine::EaseInOutCurve, + QTimeLine::Forward, QTimeLine::EaseInOutCurve, false); is_fading_out_to_pause_ = false; has_faded_out_ = false; @@ -436,7 +522,7 @@ void GstEngine::Pause() { return; } - if ( current_pipeline_->state() == GST_STATE_PLAYING ) { + if (current_pipeline_->state() == GST_STATE_PLAYING) { if (fadeout_pause_enabled_) { StartFadeoutPause(); } else { @@ -448,10 +534,9 @@ void GstEngine::Pause() { } void GstEngine::Unpause() { - if (!current_pipeline_ || current_pipeline_->is_buffering()) - return; + if (!current_pipeline_ || current_pipeline_->is_buffering()) return; - if ( current_pipeline_->state() == GST_STATE_PAUSED ) { + if (current_pipeline_->state() == GST_STATE_PAUSED) { current_pipeline_->SetState(GST_STATE_PLAYING); // Check if we faded out last time. If yes, fade in no matter what the @@ -460,9 +545,8 @@ void GstEngine::Unpause() { if (has_faded_out_) { disconnect(current_pipeline_.get(), SIGNAL(FaderFinished()), 0, 0); current_pipeline_->StartFader(fadeout_pause_duration_nanosec_, - QTimeLine::Forward, - QTimeLine::EaseInOutCurve, - false); + QTimeLine::Forward, + QTimeLine::EaseInOutCurve, false); has_faded_out_ = false; } @@ -473,15 +557,14 @@ void GstEngine::Unpause() { } void GstEngine::Seek(quint64 offset_nanosec) { - if (!current_pipeline_) - return; + if (!current_pipeline_) return; seek_pos_ = beginning_nanosec_ + offset_nanosec; waiting_to_seek_ = true; if (!seek_timer_->isActive()) { SeekNow(); - seek_timer_->start(); // Stop us from seeking again for a little while + seek_timer_->start(); // Stop us from seeking again for a little while } } @@ -489,8 +572,7 @@ void GstEngine::SeekNow() { if (!waiting_to_seek_) return; waiting_to_seek_ = false; - if (!current_pipeline_) - return; + if (!current_pipeline_) return; if (!current_pipeline_->Seek(seek_pos_)) { qLog(Warning) << "Seek failed"; @@ -498,14 +580,13 @@ void GstEngine::SeekNow() { } void GstEngine::SetEqualizerEnabled(bool enabled) { - equalizer_enabled_= enabled; + equalizer_enabled_ = enabled; - if (current_pipeline_) - current_pipeline_->SetEqualizerEnabled(enabled); + if (current_pipeline_) current_pipeline_->SetEqualizerEnabled(enabled); } - -void GstEngine::SetEqualizerParameters(int preamp, const QList& band_gains) { +void GstEngine::SetEqualizerParameters(int preamp, + const QList& band_gains) { equalizer_preamp_ = preamp; equalizer_gains_ = band_gains; @@ -516,13 +597,11 @@ void GstEngine::SetEqualizerParameters(int preamp, const QList& band_gains) void GstEngine::SetStereoBalance(float value) { stereo_balance_ = value; - if (current_pipeline_) - current_pipeline_->SetStereoBalance(value); + if (current_pipeline_) current_pipeline_->SetStereoBalance(value); } -void GstEngine::SetVolumeSW( uint percent ) { - if (current_pipeline_) - current_pipeline_->SetVolume(percent); +void GstEngine::SetVolumeSW(uint percent) { + if (current_pipeline_) current_pipeline_->SetVolume(percent); } void GstEngine::StartTimers() { @@ -539,8 +618,7 @@ void GstEngine::StopTimers() { } void GstEngine::timerEvent(QTimerEvent* e) { - if (e->timerId() != timer_id_) - return; + if (e->timerId() != timer_id_) return; if (current_pipeline_) { const qint64 current_position = position_nanosec(); @@ -548,14 +626,14 @@ void GstEngine::timerEvent(QTimerEvent* e) { const qint64 remaining = current_length - current_position; - const qint64 fudge = kTimerIntervalNanosec + 100 * kNsecPerMsec; // Mmm fudge - const qint64 gap = buffer_duration_nanosec_ + ( - autocrossfade_enabled_ ? - fadeout_duration_nanosec_ : - kPreloadGapNanosec); + const qint64 fudge = + kTimerIntervalNanosec + 100 * kNsecPerMsec; // Mmm fudge + const qint64 gap = buffer_duration_nanosec_ + + (autocrossfade_enabled_ ? fadeout_duration_nanosec_ + : kPreloadGapNanosec); // only if we know the length of the current stream... - if(current_length > 0) { + if (current_length > 0) { // emit TrackAboutToEnd when we're a few seconds away from finishing if (remaining < gap + fudge) { EmitAboutToEnd(); @@ -574,19 +652,22 @@ void GstEngine::HandlePipelineError(int pipeline_id, const QString& message, current_pipeline_.reset(); BufferingFinished(); - emit StateChanged(Engine::Empty); + emit StateChanged(Engine::Error); // unable to play media stream with this url emit InvalidSongRequested(url_); - // TODO: the types of errors listed below won't be shown to user - they will - // get logged and the current song will be skipped; instead of maintaining + // TODO: the types of errors listed below won't be shown to user - they will + // get logged and the current song will be skipped; instead of maintaining // the list we should probably: // - don't report any engine's errors to user (always just log and skip) // - come up with a less intrusive error box (not a dialog but a notification // popup of some kind) and then report all errors - if(!(domain == GST_RESOURCE_ERROR && error_code == GST_RESOURCE_ERROR_NOT_FOUND) && - !(domain == GST_STREAM_ERROR && error_code == GST_STREAM_ERROR_TYPE_NOT_FOUND) && - !(domain == GST_RESOURCE_ERROR && error_code == GST_RESOURCE_ERROR_OPEN_READ)) { + if (!(domain == GST_RESOURCE_ERROR && + error_code == GST_RESOURCE_ERROR_NOT_FOUND) && + !(domain == GST_STREAM_ERROR && + error_code == GST_STREAM_ERROR_TYPE_NOT_FOUND) && + !(domain == GST_RESOURCE_ERROR && + error_code == GST_RESOURCE_ERROR_OPEN_READ)) { emit Error(message); } } @@ -602,38 +683,38 @@ void GstEngine::EndOfStreamReached(int pipeline_id, bool has_next_track) { emit TrackEnded(); } -void GstEngine::NewMetaData(int pipeline_id, const Engine::SimpleMetaBundle& bundle) { +void GstEngine::NewMetaData(int pipeline_id, + const Engine::SimpleMetaBundle& bundle) { if (!current_pipeline_.get() || current_pipeline_->id() != pipeline_id) return; emit MetaData(bundle); } -GstElement* GstEngine::CreateElement(const QString& factoryName, GstElement* bin) { +GstElement* GstEngine::CreateElement(const QString& factoryName, + GstElement* bin) { // Make a unique name - QString name = factoryName + "-" + QString::number(next_element_id_ ++); + QString name = factoryName + "-" + QString::number(next_element_id_++); GstElement* element = gst_element_factory_make( factoryName.toAscii().constData(), name.toAscii().constData()); if (!element) { - emit Error(QString("GStreamer could not create the element: %1. " - "Please make sure that you have installed all necessary GStreamer plugins (e.g. OGG and MP3)").arg( factoryName ) ); + emit Error(QString( + "GStreamer could not create the element: %1. " + "Please make sure that you have installed all necessary " + "GStreamer plugins (e.g. OGG and MP3)").arg(factoryName)); gst_object_unref(GST_OBJECT(bin)); - return NULL; + return nullptr; } - if (bin) - gst_bin_add(GST_BIN(bin), element); + if (bin) gst_bin_add(GST_BIN(bin), element); return element; } - -GstEngine::PluginDetailsList - GstEngine::GetPluginList(const QString& classname) const { - const_cast(this)->EnsureInitialised(); - +GstEngine::PluginDetailsList GstEngine::GetPluginList( + const QString& classname) const { PluginDetailsList ret; GstRegistry* registry = gst_registry_get_default(); @@ -646,9 +727,7 @@ GstEngine::PluginDetailsList if (QString(factory->details.klass).contains(classname)) { PluginDetails details; details.name = QString::fromUtf8(GST_PLUGIN_FEATURE_NAME(p->data)); - details.long_name = QString::fromUtf8(factory->details.longname); - details.description = QString::fromUtf8(factory->details.description); - details.author = QString::fromUtf8(factory->details.author); + details.description = QString::fromUtf8(factory->details.longname); ret << details; } p = g_list_next(p); @@ -665,19 +744,23 @@ shared_ptr GstEngine::CreatePipeline() { ret->set_output_device(sink_, device_); ret->set_replaygain(rg_enabled_, rg_mode_, rg_preamp_, rg_compression_); ret->set_buffer_duration_nanosec(buffer_duration_nanosec_); + ret->set_buffer_min_fill(buffer_min_fill_); ret->set_mono_playback(mono_playback_); ret->AddBufferConsumer(this); - foreach (BufferConsumer* consumer, buffer_consumers_) { + for (BufferConsumer* consumer : buffer_consumers_) { ret->AddBufferConsumer(consumer); } - connect(ret.get(), SIGNAL(EndOfStreamReached(int, bool)), SLOT(EndOfStreamReached(int, bool))); - connect(ret.get(), SIGNAL(Error(int, QString,int,int)), SLOT(HandlePipelineError(int, QString,int,int))); + connect(ret.get(), SIGNAL(EndOfStreamReached(int, bool)), + SLOT(EndOfStreamReached(int, bool))); + connect(ret.get(), SIGNAL(Error(int, QString, int, int)), + SLOT(HandlePipelineError(int, QString, int, int))); connect(ret.get(), SIGNAL(MetadataFound(int, Engine::SimpleMetaBundle)), SLOT(NewMetaData(int, Engine::SimpleMetaBundle))); connect(ret.get(), SIGNAL(BufferingStarted()), SLOT(BufferingStarted())); - connect(ret.get(), SIGNAL(BufferingProgress(int)), SLOT(BufferingProgress(int))); + connect(ret.get(), SIGNAL(BufferingProgress(int)), + SLOT(BufferingProgress(int))); connect(ret.get(), SIGNAL(BufferingFinished()), SLOT(BufferingFinished())); return ret; @@ -697,33 +780,28 @@ shared_ptr GstEngine::CreatePipeline(const QUrl& url, return ret; } - if (!ret->InitFromUrl(url, end_nanosec)) - ret.reset(); + if (!ret->InitFromUrl(url, end_nanosec)) ret.reset(); return ret; } -bool GstEngine::DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(const QString &name) { - return (name == "alsasink" || name == "osssink" || name == "pulsesink"); -} - -void GstEngine::AddBufferConsumer(BufferConsumer *consumer) { +void GstEngine::AddBufferConsumer(BufferConsumer* consumer) { buffer_consumers_ << consumer; - if (current_pipeline_) - current_pipeline_->AddBufferConsumer(consumer); + if (current_pipeline_) current_pipeline_->AddBufferConsumer(consumer); } -void GstEngine::RemoveBufferConsumer(BufferConsumer *consumer) { +void GstEngine::RemoveBufferConsumer(BufferConsumer* consumer) { buffer_consumers_.removeAll(consumer); - if (current_pipeline_) - current_pipeline_->RemoveBufferConsumer(consumer); + if (current_pipeline_) current_pipeline_->RemoveBufferConsumer(consumer); } int GstEngine::AddBackgroundStream(shared_ptr pipeline) { // We don't want to get metadata messages or end notifications. - disconnect(pipeline.get(), SIGNAL(MetadataFound(int,Engine::SimpleMetaBundle)), this, 0); - disconnect(pipeline.get(), SIGNAL(EndOfStreamReached(int,bool)), this, 0); - connect(pipeline.get(), SIGNAL(EndOfStreamReached(int,bool)), SLOT(BackgroundStreamFinished())); + disconnect(pipeline.get(), + SIGNAL(MetadataFound(int, Engine::SimpleMetaBundle)), this, 0); + disconnect(pipeline.get(), SIGNAL(EndOfStreamReached(int, bool)), this, 0); + connect(pipeline.get(), SIGNAL(EndOfStreamReached(int, bool)), + SLOT(BackgroundStreamFinished())); const int stream_id = next_background_stream_id_++; background_streams_[stream_id] = pipeline; @@ -795,3 +873,43 @@ void GstEngine::BufferingFinished() { buffering_task_id_ = -1; } } + +GstEngine::OutputDetailsList GstEngine::GetOutputsList() const { + const_cast(this)->EnsureInitialised(); + + OutputDetailsList ret; + + OutputDetails default_output; + default_output.description = tr("Choose automatically"); + default_output.gstreamer_plugin_name = kAutoSink; + ret.append(default_output); + + for (DeviceFinder* finder : device_finders_) { + for (const DeviceFinder::Device& device : finder->ListDevices()) { + OutputDetails output; + output.description = device.description; + output.icon_name = device.icon_name; + output.gstreamer_plugin_name = finder->gstreamer_sink(); + output.device_property_value = device.device_property_value; + ret.append(output); + } + } + + PluginDetailsList plugins = GetPluginList("Sink/Audio"); + // If there are only 2 plugins (autoaudiosink and the OS' default), don't add + // any, since the OS' default would be redundant. + if (plugins.count() > 2) { + for (const PluginDetails& plugin : plugins) { + if (plugin.name == kAutoSink) { + continue; + } + + OutputDetails output; + output.description = tr("Default device on %1").arg(plugin.description); + output.gstreamer_plugin_name = plugin.name; + ret.append(output); + } + } + + return ret; +} diff --git a/src/engines/gstengine.h b/src/engines/gstengine.h old mode 100644 new mode 100755 index 94c3a93bc..053f8f128 --- a/src/engines/gstengine.h +++ b/src/engines/gstengine.h @@ -22,6 +22,8 @@ #ifndef AMAROK_GSTENGINE_H #define AMAROK_GSTENGINE_H +#include + #include "bufferconsumer.h" #include "enginebase.h" #include "core/boundfuturewatcher.h" @@ -35,11 +37,11 @@ #include #include -#include class QTimer; class QTimerEvent; +class DeviceFinder; class GstEnginePipeline; class TaskManager; @@ -55,20 +57,21 @@ class GstEngine : public Engine::Base, public BufferConsumer { GstEngine(TaskManager* task_manager); ~GstEngine(); - struct PluginDetails { - QString name; - QString long_name; - QString author; + struct OutputDetails { QString description; + QString icon_name; + + QString gstreamer_plugin_name; + QVariant device_property_value; }; - typedef QList PluginDetailsList; + typedef QList OutputDetailsList; static const char* kSettingsGroup; static const char* kAutoSink; bool Init(); void EnsureInitialised() { initialising_.waitForFinished(); } - static void InitialiseGstreamer(); + void InitialiseGstreamer(); int AddBackgroundStream(const QUrl& url); void StopBackgroundStream(int id); @@ -77,24 +80,23 @@ class GstEngine : public Engine::Base, public BufferConsumer { qint64 position_nanosec() const; qint64 length_nanosec() const; Engine::State state() const; - const Engine::Scope& scope(); + const Engine::Scope& scope(int chunk_length); - PluginDetailsList GetOutputsList() const { return GetPluginList( "Sink/Audio" ); } - static bool DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(const QString& name); + OutputDetailsList GetOutputsList() const; GstElement* CreateElement(const QString& factoryName, GstElement* bin = 0); // BufferConsumer - void ConsumeBuffer(GstBuffer *buffer, int pipeline_id); + void ConsumeBuffer(GstBuffer* buffer, int pipeline_id); public slots: void StartPreloading(const QUrl& url, bool force_stop_at_end, qint64 beginning_nanosec, qint64 end_nanosec); bool Load(const QUrl&, Engine::TrackChangeFlags change, - bool force_stop_at_end, - quint64 beginning_nanosec, qint64 end_nanosec); + bool force_stop_at_end, quint64 beginning_nanosec, + qint64 end_nanosec); bool Play(quint64 offset_nanosec); - void Stop(); + void Stop(bool stop_after = false); void Pause(); void Unpause(); void Seek(quint64 offset_nanosec); @@ -119,7 +121,8 @@ class GstEngine : public Engine::Base, public BufferConsumer { private slots: void EndOfStreamReached(int pipeline_id, bool has_next_track); - void HandlePipelineError(int pipeline_id, const QString& message, int domain, int error_code); + void HandlePipelineError(int pipeline_id, const QString& message, int domain, + int error_code); void NewMetaData(int pipeline_id, const Engine::SimpleMetaBundle& bundle); void AddBufferToScope(GstBuffer* buf, int pipeline_id); void FadeoutFinished(); @@ -135,7 +138,15 @@ class GstEngine : public Engine::Base, public BufferConsumer { private: typedef QPair PlayFutureWatcherArg; - typedef BoundFutureWatcher PlayFutureWatcher; + typedef BoundFutureWatcher + PlayFutureWatcher; + + struct PluginDetails { + QString name; + QString description; + }; + + typedef QList PluginDetailsList; static void SetEnv(const char* key, const QString& value); PluginDetailsList GetPluginList(const QString& classname) const; @@ -146,19 +157,20 @@ class GstEngine : public Engine::Base, public BufferConsumer { void StartTimers(); void StopTimers(); - boost::shared_ptr CreatePipeline(); - boost::shared_ptr CreatePipeline(const QUrl& url, qint64 end_nanosec); + std::shared_ptr CreatePipeline(); + std::shared_ptr CreatePipeline(const QUrl& url, + qint64 end_nanosec); - void UpdateScope(); + void UpdateScope(int chunk_length); - int AddBackgroundStream(boost::shared_ptr pipeline); + int AddBackgroundStream(std::shared_ptr pipeline); static QUrl FixupUrl(const QUrl& url); private: - static const qint64 kTimerIntervalNanosec = 1000 * kNsecPerMsec; // 1s - static const qint64 kPreloadGapNanosec = 2000 * kNsecPerMsec; // 2s - static const qint64 kSeekDelayNanosec = 100 * kNsecPerMsec; // 100msec + static const qint64 kTimerIntervalNanosec = 1000 * kNsecPerMsec; // 1s + static const qint64 kPreloadGapNanosec = 2000 * kNsecPerMsec; // 2s + static const qint64 kSeekDelayNanosec = 100 * kNsecPerMsec; // 100msec static const char* kHypnotoadPipeline; static const char* kEnterprisePipeline; @@ -169,11 +181,11 @@ class GstEngine : public Engine::Base, public BufferConsumer { QFuture initialising_; QString sink_; - QString device_; + QVariant device_; - boost::shared_ptr current_pipeline_; - boost::shared_ptr fadeout_pipeline_; - boost::shared_ptr fadeout_pause_pipeline_; + std::shared_ptr current_pipeline_; + std::shared_ptr fadeout_pipeline_; + std::shared_ptr fadeout_pause_pipeline_; QUrl preloaded_url_; QList buffer_consumers_; @@ -192,6 +204,8 @@ class GstEngine : public Engine::Base, public BufferConsumer { qint64 buffer_duration_nanosec_; + int buffer_min_fill_; + bool mono_playback_; mutable bool can_decode_success_; @@ -205,11 +219,18 @@ class GstEngine : public Engine::Base, public BufferConsumer { int timer_id_; int next_element_id_; - QHash > background_streams_; + QHash> background_streams_; bool is_fading_out_to_pause_; bool has_faded_out_; + + int scope_chunk_; + bool have_new_buffer_; + int scope_chunks_; + + QList device_finders_; }; +Q_DECLARE_METATYPE(GstEngine::OutputDetails) #endif /*AMAROK_GSTENGINE_H*/ diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 94f77a357..0b80e9894 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -18,6 +18,7 @@ #include #include +#include #include "bufferconsumer.h" #include "config.h" @@ -32,73 +33,70 @@ #include "internet/spotifyserver.h" #include "internet/spotifyservice.h" - const int GstEnginePipeline::kGstStateTimeoutNanosecs = 10000000; const int GstEnginePipeline::kFaderFudgeMsec = 2000; const int GstEnginePipeline::kEqBandCount = 10; const int GstEnginePipeline::kEqBandFrequencies[] = { - 60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000}; + 60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000}; int GstEnginePipeline::sId = 1; -GstElementDeleter* GstEnginePipeline::sElementDeleter = NULL; - +GstElementDeleter* GstEnginePipeline::sElementDeleter = nullptr; GstEnginePipeline::GstEnginePipeline(GstEngine* engine) - : QObject(NULL), - engine_(engine), - id_(sId++), - valid_(false), - sink_(GstEngine::kAutoSink), - segment_start_(0), - segment_start_received_(false), - emit_track_ended_on_segment_start_(false), - emit_track_ended_on_time_discontinuity_(false), - last_buffer_offset_(0), - eq_enabled_(false), - eq_preamp_(0), - stereo_balance_(0.0f), - rg_enabled_(false), - rg_mode_(0), - rg_preamp_(0.0), - rg_compression_(true), - buffer_duration_nanosec_(1 * kNsecPerSec), - buffering_(false), - mono_playback_(false), - end_offset_nanosec_(-1), - next_beginning_offset_nanosec_(-1), - next_end_offset_nanosec_(-1), - ignore_next_seek_(false), - ignore_tags_(false), - pipeline_is_initialised_(false), - pipeline_is_connected_(false), - pending_seek_nanosec_(-1), - volume_percent_(100), - volume_modifier_(1.0), - fader_(NULL), - pipeline_(NULL), - uridecodebin_(NULL), - audiobin_(NULL), - queue_(NULL), - audioconvert_(NULL), - rgvolume_(NULL), - rglimiter_(NULL), - audioconvert2_(NULL), - equalizer_(NULL), - stereo_panorama_(NULL), - volume_(NULL), - audioscale_(NULL), - audiosink_(NULL) -{ + : QObject(nullptr), + engine_(engine), + id_(sId++), + valid_(false), + sink_(GstEngine::kAutoSink), + segment_start_(0), + segment_start_received_(false), + emit_track_ended_on_segment_start_(false), + emit_track_ended_on_time_discontinuity_(false), + last_buffer_offset_(0), + eq_enabled_(false), + eq_preamp_(0), + stereo_balance_(0.0f), + rg_enabled_(false), + rg_mode_(0), + rg_preamp_(0.0), + rg_compression_(true), + buffer_duration_nanosec_(1 * kNsecPerSec), + buffer_min_fill_(33), + buffering_(false), + mono_playback_(false), + end_offset_nanosec_(-1), + next_beginning_offset_nanosec_(-1), + next_end_offset_nanosec_(-1), + ignore_next_seek_(false), + ignore_tags_(false), + pipeline_is_initialised_(false), + pipeline_is_connected_(false), + pending_seek_nanosec_(-1), + volume_percent_(100), + volume_modifier_(1.0), + pipeline_(nullptr), + uridecodebin_(nullptr), + audiobin_(nullptr), + queue_(nullptr), + audioconvert_(nullptr), + rgvolume_(nullptr), + rglimiter_(nullptr), + audioconvert2_(nullptr), + equalizer_(nullptr), + stereo_panorama_(nullptr), + volume_(nullptr), + audioscale_(nullptr), + audiosink_(nullptr) { if (!sElementDeleter) { sElementDeleter = new GstElementDeleter; } - for (int i=0 ; iCreateElement("tcpserversrc", new_bin); GstElement* gdp = engine_->CreateElement("gdpdepay", new_bin); - if (!src || !gdp) - return false; + if (!src || !gdp) return false; // Pick a port number const int port = Utilities::PickUnusedPort(); - g_object_set(G_OBJECT(src), "host", "127.0.0.1", NULL); - g_object_set(G_OBJECT(src), "port", port, NULL); + g_object_set(G_OBJECT(src), "host", "127.0.0.1", nullptr); + g_object_set(G_OBJECT(src), "port", port, nullptr); // Link the elements gst_element_link(src, gdp); @@ -164,20 +166,24 @@ bool GstEnginePipeline::ReplaceDecodeBin(const QUrl& url) { gst_object_unref(GST_OBJECT(pad)); // Tell spotify to start sending data to us. - InternetModel::Service()->server()->StartPlaybackLater(url.toString(), port); + InternetModel::Service()->server()->StartPlaybackLater( + url.toString(), port); } else { new_bin = engine_->CreateElement("uridecodebin"); - g_object_set(G_OBJECT(new_bin), "uri", url.toEncoded().constData(), NULL); - CHECKED_GCONNECT(G_OBJECT(new_bin), "drained", &SourceDrainedCallback, this); + g_object_set(G_OBJECT(new_bin), "uri", url.toEncoded().constData(), + nullptr); + CHECKED_GCONNECT(G_OBJECT(new_bin), "drained", &SourceDrainedCallback, + this); CHECKED_GCONNECT(G_OBJECT(new_bin), "pad-added", &NewPadCallback, this); - CHECKED_GCONNECT(G_OBJECT(new_bin), "notify::source", &SourceSetupCallback, this); + CHECKED_GCONNECT(G_OBJECT(new_bin), "notify::source", &SourceSetupCallback, + this); } return ReplaceDecodeBin(new_bin); } GstElement* GstEnginePipeline::CreateDecodeBinFromString(const char* pipeline) { - GError* error = NULL; + GError* error = nullptr; GstElement* bin = gst_parse_bin_from_description(pipeline, TRUE, &error); if (error) { @@ -189,7 +195,7 @@ GstElement* GstEnginePipeline::CreateDecodeBinFromString(const char* pipeline) { qLog(Warning) << message; emit Error(id(), message, domain, code); - return NULL; + return nullptr; } else { return bin; } @@ -219,31 +225,57 @@ bool GstEnginePipeline::Init() { gst_bin_add(GST_BIN(pipeline_), audiobin_); // Create the sink - if (!(audiosink_ = engine_->CreateElement(sink_, audiobin_))) - return false; + if (!(audiosink_ = engine_->CreateElement(sink_, audiobin_))) return false; - if (GstEngine::DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(sink_) && !device_.isEmpty()) - g_object_set(G_OBJECT(audiosink_), "device", device_.toUtf8().constData(), NULL); + if (g_object_class_find_property(G_OBJECT_GET_CLASS(audiosink_), "device") && + !device_.toString().isEmpty()) { + switch (device_.type()) { + case QVariant::Int: + g_object_set(G_OBJECT(audiosink_), + "device", device_.toInt(), + nullptr); + break; + case QVariant::String: + g_object_set(G_OBJECT(audiosink_), + "device", device_.toString().toUtf8().constData(), + nullptr); + break; + + #ifdef Q_OS_WIN32 + case QVariant::ByteArray: { + GUID guid = QUuid(device_.toByteArray()); + g_object_set(G_OBJECT(audiosink_), + "device", &guid, + nullptr); + break; + } + #endif // Q_OS_WIN32 + + default: + qLog(Warning) << "Unknown device type" << device_; + break; + } + } // Create all the other elements - GstElement *tee, *probe_queue, *probe_converter, *probe_sink, *audio_queue, - *convert; + GstElement* tee, *probe_queue, *probe_converter, *probe_sink, *audio_queue, + *convert; - queue_ = engine_->CreateElement("queue2", audiobin_); - audioconvert_ = engine_->CreateElement("audioconvert", audiobin_); - tee = engine_->CreateElement("tee", audiobin_); + queue_ = engine_->CreateElement("queue2", audiobin_); + audioconvert_ = engine_->CreateElement("audioconvert", audiobin_); + tee = engine_->CreateElement("tee", audiobin_); - probe_queue = engine_->CreateElement("queue", audiobin_); - probe_converter = engine_->CreateElement("audioconvert", audiobin_); - probe_sink = engine_->CreateElement("fakesink", audiobin_); + probe_queue = engine_->CreateElement("queue", audiobin_); + probe_converter = engine_->CreateElement("audioconvert", audiobin_); + probe_sink = engine_->CreateElement("fakesink", audiobin_); - audio_queue = engine_->CreateElement("queue", audiobin_); - equalizer_preamp_ = engine_->CreateElement("volume", audiobin_); - equalizer_ = engine_->CreateElement("equalizer-nbands", audiobin_); - stereo_panorama_ = engine_->CreateElement("audiopanorama", audiobin_); - volume_ = engine_->CreateElement("volume", audiobin_); - audioscale_ = engine_->CreateElement("audioresample", audiobin_); - convert = engine_->CreateElement("audioconvert", audiobin_); + audio_queue = engine_->CreateElement("queue", audiobin_); + equalizer_preamp_ = engine_->CreateElement("volume", audiobin_); + equalizer_ = engine_->CreateElement("equalizer-nbands", audiobin_); + stereo_panorama_ = engine_->CreateElement("audiopanorama", audiobin_); + volume_ = engine_->CreateElement("volume", audiobin_); + audioscale_ = engine_->CreateElement("audioresample", audiobin_); + convert = engine_->CreateElement("audioconvert", audiobin_); if (!queue_ || !audioconvert_ || !tee || !probe_queue || !probe_converter || !probe_sink || !audio_queue || !equalizer_preamp_ || !equalizer_ || @@ -259,8 +291,8 @@ bool GstEnginePipeline::Init() { GstElement* convert_sink = tee; if (rg_enabled_) { - rgvolume_ = engine_->CreateElement("rgvolume", audiobin_); - rglimiter_ = engine_->CreateElement("rglimiter", audiobin_); + rgvolume_ = engine_->CreateElement("rgvolume", audiobin_); + rglimiter_ = engine_->CreateElement("rglimiter", audiobin_); audioconvert2_ = engine_->CreateElement("audioconvert", audiobin_); event_probe = audioconvert2_; convert_sink = rgvolume_; @@ -270,9 +302,10 @@ bool GstEnginePipeline::Init() { } // Set replaygain settings - g_object_set(G_OBJECT(rgvolume_), "album-mode", rg_mode_, NULL); - g_object_set(G_OBJECT(rgvolume_), "pre-amp", double(rg_preamp_), NULL); - g_object_set(G_OBJECT(rglimiter_), "enabled", int(rg_compression_), NULL); + g_object_set(G_OBJECT(rgvolume_), "album-mode", rg_mode_, nullptr); + g_object_set(G_OBJECT(rgvolume_), "pre-amp", double(rg_preamp_), nullptr); + g_object_set(G_OBJECT(rglimiter_), "enabled", int(rg_compression_), + nullptr); } // Create a pad on the outside of the audiobin and connect it to the pad of @@ -289,55 +322,55 @@ bool GstEnginePipeline::Init() { gst_object_unref(pad); // Configure the fakesink properly - g_object_set(G_OBJECT(probe_sink), "sync", TRUE, NULL); + g_object_set(G_OBJECT(probe_sink), "sync", TRUE, nullptr); // Set the equalizer bands - g_object_set(G_OBJECT(equalizer_), "num-bands", 10, NULL); + g_object_set(G_OBJECT(equalizer_), "num-bands", 10, nullptr); int last_band_frequency = 0; - for (int i=0 ; i 0) { - g_object_set(G_OBJECT(queue_), "use-buffering", true, NULL); + g_object_set(G_OBJECT(queue_), "use-buffering", true, nullptr); } gst_element_link(queue_, audioconvert_); // Create the caps to put in each path in the tee. The scope path gets 16-bit // ints and the audiosink path gets float32. - GstCaps* caps16 = gst_caps_new_simple ("audio/x-raw-int", - "width", G_TYPE_INT, 16, - "signed", G_TYPE_BOOLEAN, true, - NULL); - GstCaps* caps32 = gst_caps_new_simple ("audio/x-raw-float", - "width", G_TYPE_INT, 32, - NULL); + GstCaps* caps16 = + gst_caps_new_simple("audio/x-raw-int", "width", G_TYPE_INT, 16, "signed", + G_TYPE_BOOLEAN, true, nullptr); + GstCaps* caps32 = gst_caps_new_simple("audio/x-raw-float", "width", + G_TYPE_INT, 32, nullptr); if (mono_playback_) { - gst_caps_set_simple(caps32, "channels", G_TYPE_INT, 1, NULL); + gst_caps_set_simple(caps32, "channels", G_TYPE_INT, 1, nullptr); } // Link the elements with special caps @@ -347,23 +380,29 @@ bool GstEnginePipeline::Init() { gst_caps_unref(caps32); // Link the outputs of tee to the queues on each path. - gst_pad_link(gst_element_get_request_pad(tee, "src%d"), gst_element_get_static_pad(probe_queue, "sink")); - gst_pad_link(gst_element_get_request_pad(tee, "src%d"), gst_element_get_static_pad(audio_queue, "sink")); + gst_pad_link(gst_element_get_request_pad(tee, "src%d"), + gst_element_get_static_pad(probe_queue, "sink")); + gst_pad_link(gst_element_get_request_pad(tee, "src%d"), + gst_element_get_static_pad(audio_queue, "sink")); // Link replaygain elements if enabled. if (rg_enabled_) { - gst_element_link_many(rgvolume_, rglimiter_, audioconvert2_, tee, NULL); + gst_element_link_many(rgvolume_, rglimiter_, audioconvert2_, tee, nullptr); } // Link everything else. gst_element_link(probe_queue, probe_converter); - gst_element_link_many(audio_queue, equalizer_preamp_, equalizer_, stereo_panorama_, - volume_, audioscale_, convert, audiosink_, NULL); + gst_element_link_many(audio_queue, equalizer_preamp_, equalizer_, + stereo_panorama_, volume_, audioscale_, convert, + audiosink_, nullptr); // Add probes and handlers. - gst_pad_add_buffer_probe(gst_element_get_static_pad(probe_converter, "src"), G_CALLBACK(HandoffCallback), this); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallbackSync, this); - bus_cb_id_ = gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallback, this); + gst_pad_add_buffer_probe(gst_element_get_static_pad(probe_converter, "src"), + G_CALLBACK(HandoffCallback), this); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + BusCallbackSync, this); + bus_cb_id_ = gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + BusCallback, this); MaybeLinkDecodeToAudio(); @@ -371,12 +410,10 @@ bool GstEnginePipeline::Init() { } void GstEnginePipeline::MaybeLinkDecodeToAudio() { - if (!uridecodebin_ || !audiobin_) - return; + if (!uridecodebin_ || !audiobin_) return; GstPad* pad = gst_element_get_static_pad(uridecodebin_, "src"); - if (!pad) - return; + if (!pad) return; gst_object_unref(pad); gst_element_link(uridecodebin_, audiobin_); @@ -385,7 +422,8 @@ void GstEnginePipeline::MaybeLinkDecodeToAudio() { bool GstEnginePipeline::InitFromString(const QString& pipeline) { pipeline_ = gst_pipeline_new("pipeline"); - GstElement* new_bin = CreateDecodeBinFromString(pipeline.toAscii().constData()); + GstElement* new_bin = + CreateDecodeBinFromString(pipeline.toAscii().constData()); if (!new_bin) { return false; } @@ -396,9 +434,9 @@ bool GstEnginePipeline::InitFromString(const QString& pipeline) { return gst_element_link(new_bin, audiobin_); } -bool GstEnginePipeline::InitFromUrl(const QUrl &url, qint64 end_nanosec) { +bool GstEnginePipeline::InitFromUrl(const QUrl& url, qint64 end_nanosec) { pipeline_ = gst_pipeline_new("pipeline"); - + if (url.scheme() == "cdda" && !url.path().isEmpty()) { // Currently, Gstreamer can't handle input CD devices inside cdda URL. So // we handle them ourselve: we extract the track number and re-create an @@ -421,16 +459,16 @@ bool GstEnginePipeline::InitFromUrl(const QUrl &url, qint64 end_nanosec) { GstEnginePipeline::~GstEnginePipeline() { if (pipeline_) { - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), NULL, NULL); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + nullptr, nullptr); g_source_remove(bus_cb_id_); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(GST_OBJECT(pipeline_)); } } - - -gboolean GstEnginePipeline::BusCallback(GstBus*, GstMessage* msg, gpointer self) { +gboolean GstEnginePipeline::BusCallback(GstBus*, GstMessage* msg, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); qLog(Debug) << instance->id() << "bus message" << GST_MESSAGE_TYPE_NAME(msg); @@ -455,10 +493,12 @@ gboolean GstEnginePipeline::BusCallback(GstBus*, GstMessage* msg, gpointer self) return FALSE; } -GstBusSyncReply GstEnginePipeline::BusCallbackSync(GstBus*, GstMessage* msg, gpointer self) { +GstBusSyncReply GstEnginePipeline::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); - qLog(Debug) << instance->id() << "sync bus message" << GST_MESSAGE_TYPE_NAME(msg); + qLog(Debug) << instance->id() << "sync bus message" + << GST_MESSAGE_TYPE_NAME(msg); switch (GST_MESSAGE_TYPE(msg)) { case GST_MESSAGE_EOS: @@ -510,13 +550,13 @@ void GstEnginePipeline::StreamStatusMessageReceived(GstMessage* msg) { memset(&callbacks, 0, sizeof(callbacks)); callbacks.enter_thread = TaskEnterCallback; - gst_task_set_thread_callbacks(task, &callbacks, this, NULL); + gst_task_set_thread_callbacks(task, &callbacks, this, nullptr); } } } void GstEnginePipeline::TaskEnterCallback(GstTask*, GThread*, gpointer) { - // Bump the priority of the thread only on OS X +// Bump the priority of the thread only on OS X #ifdef Q_OS_DARWIN sched_param param; @@ -552,8 +592,10 @@ void GstEnginePipeline::ErrorMessageReceived(GstMessage* msg) { g_error_free(error); free(debugs); - if (!redirect_url_.isEmpty() && debugstr.contains( - "A redirect message was posted on the bus and should have been handled by the application.")) { + if (!redirect_url_.isEmpty() && + debugstr.contains( + "A redirect message was posted on the bus and should have been " + "handled by the application.")) { // mmssrc posts a message on the bus *and* makes an error message when it // wants to do a redirect. We handle the message, but now we have to // ignore the error too. @@ -566,7 +608,7 @@ void GstEnginePipeline::ErrorMessageReceived(GstMessage* msg) { } void GstEnginePipeline::TagMessageReceived(GstMessage* msg) { - GstTagList* taglist = NULL; + GstTagList* taglist = nullptr; gst_message_parse_tag(msg, &taglist); Engine::SimpleMetaBundle bundle; @@ -577,8 +619,7 @@ void GstEnginePipeline::TagMessageReceived(GstMessage* msg) { gst_tag_list_free(taglist); - if (ignore_tags_) - return; + if (ignore_tags_) return; if (!bundle.title.isEmpty() || !bundle.artist.isEmpty() || !bundle.comment.isEmpty() || !bundle.album.isEmpty()) @@ -586,7 +627,7 @@ void GstEnginePipeline::TagMessageReceived(GstMessage* msg) { } QString GstEnginePipeline::ParseTag(GstTagList* list, const char* tag) const { - gchar* data = NULL; + gchar* data = nullptr; bool success = gst_tag_list_get_string(list, tag, &data); QString ret; @@ -606,7 +647,8 @@ void GstEnginePipeline::StateChangedMessageReceived(GstMessage* msg) { GstState old_state, new_state, pending; gst_message_parse_state_changed(msg, &old_state, &new_state, &pending); - if (!pipeline_is_initialised_ && (new_state == GST_STATE_PAUSED || new_state == GST_STATE_PLAYING)) { + if (!pipeline_is_initialised_ && + (new_state == GST_STATE_PAUSED || new_state == GST_STATE_PLAYING)) { pipeline_is_initialised_ = true; if (pending_seek_nanosec_ != -1 && pipeline_is_connected_) { QMetaObject::invokeMethod(this, "Seek", Qt::QueuedConnection, @@ -614,7 +656,8 @@ void GstEnginePipeline::StateChangedMessageReceived(GstMessage* msg) { } } - if (pipeline_is_initialised_ && new_state != GST_STATE_PAUSED && new_state != GST_STATE_PLAYING) { + if (pipeline_is_initialised_ && new_state != GST_STATE_PAUSED && + new_state != GST_STATE_PLAYING) { pipeline_is_initialised_ = false; } } @@ -646,12 +689,15 @@ void GstEnginePipeline::BufferingMessageReceived(GstMessage* msg) { } } -void GstEnginePipeline::NewPadCallback(GstElement*, GstPad* pad, gpointer self) { +void GstEnginePipeline::NewPadCallback(GstElement*, GstPad* pad, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); - GstPad* const audiopad = gst_element_get_static_pad(instance->audiobin_, "sink"); + GstPad* const audiopad = + gst_element_get_static_pad(instance->audiobin_, "sink"); if (GST_PAD_IS_LINKED(audiopad)) { - qLog(Warning) << instance->id() << "audiopad is already linked, unlinking old pad"; + qLog(Warning) << instance->id() + << "audiopad is already linked, unlinking old pad"; gst_pad_unlink(audiopad, GST_PAD_PEER(audiopad)); } @@ -660,13 +706,15 @@ void GstEnginePipeline::NewPadCallback(GstElement*, GstPad* pad, gpointer self) gst_object_unref(audiopad); instance->pipeline_is_connected_ = true; - if (instance->pending_seek_nanosec_ != -1 && instance->pipeline_is_initialised_) { + if (instance->pending_seek_nanosec_ != -1 && + instance->pipeline_is_initialised_) { QMetaObject::invokeMethod(instance, "Seek", Qt::QueuedConnection, Q_ARG(qint64, instance->pending_seek_nanosec_)); } } -bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, gpointer self) { +bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); QList consumers; @@ -675,7 +723,7 @@ bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, gpointer self) consumers = instance->buffer_consumers_; } - foreach (BufferConsumer* consumer, consumers) { + for (BufferConsumer* consumer : consumers) { gst_buffer_ref(buf); consumer->ConsumeBuffer(buf, instance->id()); } @@ -690,7 +738,8 @@ bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, gpointer self) if (end_time > instance->end_offset_nanosec_) { if (instance->has_next_valid_url()) { if (instance->next_url_ == instance->url_ && - instance->next_beginning_offset_nanosec_ == instance->end_offset_nanosec_) { + instance->next_beginning_offset_nanosec_ == + instance->end_offset_nanosec_) { // The "next" song is actually the next segment of this file - so // cheat and keep on playing, but just tell the Engine we've moved on. instance->end_offset_nanosec_ = instance->next_end_offset_nanosec_; @@ -727,16 +776,19 @@ bool GstEnginePipeline::HandoffCallback(GstPad*, GstBuffer* buf, gpointer self) return true; } -bool GstEnginePipeline::EventHandoffCallback(GstPad*, GstEvent* e, gpointer self) { +bool GstEnginePipeline::EventHandoffCallback(GstPad*, GstEvent* e, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); qLog(Debug) << instance->id() << "event" << GST_EVENT_TYPE_NAME(e); - if (GST_EVENT_TYPE(e) == GST_EVENT_NEWSEGMENT && !instance->segment_start_received_) { + if (GST_EVENT_TYPE(e) == GST_EVENT_NEWSEGMENT && + !instance->segment_start_received_) { // The segment start time is used to calculate the proper offset of data // buffers from the start of the stream gint64 start = 0; - gst_event_parse_new_segment(e, NULL, NULL, NULL, &start, NULL, NULL); + gst_event_parse_new_segment(e, nullptr, nullptr, nullptr, &start, nullptr, + nullptr); instance->segment_start_ = start; instance->segment_start_received_ = true; @@ -751,7 +803,8 @@ bool GstEnginePipeline::EventHandoffCallback(GstPad*, GstEvent* e, gpointer self return true; } -void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin, gpointer self) { +void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin, + gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); if (instance->has_next_valid_url()) { @@ -759,10 +812,11 @@ void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin, gpointer sel } } -void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *pspec, gpointer self) { +void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, + GParamSpec* pspec, gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); GstElement* element; - g_object_get(bin, "source", &element, NULL); + g_object_get(bin, "source", &element, nullptr); if (!element) { return; } @@ -773,38 +827,40 @@ void GstEnginePipeline::SourceSetupCallback(GstURIDecodeBin* bin, GParamSpec *ps // documentation, this might be added in the future). Despite that, for now // we include device inside URL: we decompose it during Init and set device // here, when this callback is called. - g_object_set(element, "device", instance->source_device().toLocal8Bit().constData(), NULL); + g_object_set(element, "device", + instance->source_device().toLocal8Bit().constData(), nullptr); } - if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), "extra-headers") && + if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), + "extra-headers") && instance->url().host().contains("grooveshark")) { // Grooveshark streaming servers will answer with a 400 error 'Bad request' // if we don't specify 'Range' field in HTTP header. // Maybe it could be usefull in some other cases, but for now, I prefer to // keep this grooveshark specific. GstStructure* headers; - headers = gst_structure_new("extra-headers", "Range", G_TYPE_STRING, "bytes=0-", NULL); - g_object_set(element, "extra-headers", headers, NULL); + headers = gst_structure_new("extra-headers", "Range", G_TYPE_STRING, + "bytes=0-", nullptr); + g_object_set(element, "extra-headers", headers, nullptr); gst_structure_free(headers); } - if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), "extra-headers") && + if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), + "extra-headers") && instance->url().host().contains("files.one.ubuntu.com")) { GstStructure* headers; - headers = gst_structure_new( - "extra-headers", - "Authorization", - G_TYPE_STRING, - instance->url().fragment().toAscii().data(), - NULL); - g_object_set(element, "extra-headers", headers, NULL); + headers = + gst_structure_new("extra-headers", "Authorization", G_TYPE_STRING, + instance->url().fragment().toAscii().data(), nullptr); + g_object_set(element, "extra-headers", headers, nullptr); gst_structure_free(headers); } if (g_object_class_find_property(G_OBJECT_GET_CLASS(element), "user-agent")) { - QString user_agent = QString("%1 %2").arg( - QCoreApplication::applicationName(), - QCoreApplication::applicationVersion()); - g_object_set(element, "user-agent", user_agent.toUtf8().constData(), NULL); + QString user_agent = + QString("%1 %2").arg(QCoreApplication::applicationName(), + QCoreApplication::applicationVersion()); + g_object_set(element, "user-agent", user_agent.toUtf8().constData(), + nullptr); } } @@ -846,7 +902,7 @@ qint64 GstEnginePipeline::position() const { qint64 GstEnginePipeline::length() const { GstFormat fmt = GST_FORMAT_TIME; gint64 value = 0; - gst_element_query_duration(pipeline_, &fmt, &value); + gst_element_query_duration(pipeline_, &fmt, &value); return value; } @@ -886,7 +942,8 @@ void GstEnginePipeline::SetEqualizerEnabled(bool enabled) { UpdateEqualizer(); } -void GstEnginePipeline::SetEqualizerParams(int preamp, const QList& band_gains) { +void GstEnginePipeline::SetEqualizerParams(int preamp, + const QList& band_gains) { eq_preamp_ = preamp; eq_band_gains_ = band_gains; UpdateEqualizer(); @@ -899,15 +956,16 @@ void GstEnginePipeline::SetStereoBalance(float value) { void GstEnginePipeline::UpdateEqualizer() { // Update band gains - for (int i=0 ; icurrentTime()) / qreal(fader_->duration())); + qreal time = qreal(duration_msec) * + (qreal(fader_->currentTime()) / qreal(fader_->duration())); start_time = qRound(time); } } fader_.reset(new QTimeLine(duration_msec, this)); - connect(fader_.get(), SIGNAL(valueChanged(qreal)), SLOT(SetVolumeModifier(qreal))); + connect(fader_.get(), SIGNAL(valueChanged(qreal)), + SLOT(SetVolumeModifier(qreal))); connect(fader_.get(), SIGNAL(finished()), SLOT(FaderTimelineFinished())); fader_->setDirection(direction); fader_->setCurveShape(shape); @@ -1001,12 +1062,12 @@ void GstEnginePipeline::timerEvent(QTimerEvent* e) { QObject::timerEvent(e); } -void GstEnginePipeline::AddBufferConsumer(BufferConsumer *consumer) { +void GstEnginePipeline::AddBufferConsumer(BufferConsumer* consumer) { QMutexLocker l(&buffer_consumers_mutex_); buffer_consumers_ << consumer; } -void GstEnginePipeline::RemoveBufferConsumer(BufferConsumer *consumer) { +void GstEnginePipeline::RemoveBufferConsumer(BufferConsumer* consumer) { QMutexLocker l(&buffer_consumers_mutex_); buffer_consumers_.removeAll(consumer); } @@ -1016,8 +1077,7 @@ void GstEnginePipeline::RemoveAllBufferConsumers() { buffer_consumers_.clear(); } -void GstEnginePipeline::SetNextUrl(const QUrl& url, - qint64 beginning_nanosec, +void GstEnginePipeline::SetNextUrl(const QUrl& url, qint64 beginning_nanosec, qint64 end_nanosec) { next_url_ = url; next_beginning_offset_nanosec_ = beginning_nanosec; diff --git a/src/engines/gstenginepipeline.h b/src/engines/gstenginepipeline.h index a1b8c9efb..57e878409 100644 --- a/src/engines/gstenginepipeline.h +++ b/src/engines/gstenginepipeline.h @@ -18,6 +18,8 @@ #ifndef GSTENGINEPIPELINE_H #define GSTENGINEPIPELINE_H +#include + #include #include #include @@ -27,7 +29,6 @@ #include #include -#include #include "engine_fwd.h" @@ -49,9 +50,10 @@ class GstEnginePipeline : public QObject { int id() const { return id_; } // Call these setters before Init - void set_output_device(const QString& sink, const QString& device); + void set_output_device(const QString& sink, const QVariant& device); void set_replaygain(bool enabled, int mode, float preamp, bool compression); void set_buffer_duration_nanosec(qint64 duration_nanosec); + void set_buffer_min_fill(int percent); void set_mono_playback(bool enabled); // Creates the pipeline, returns false on error @@ -77,7 +79,8 @@ class GstEnginePipeline : public QObject { // If this is set then it will be loaded automatically when playback finishes // for gapless playback - void SetNextUrl(const QUrl& url, qint64 beginning_nanosec, qint64 end_nanosec); + void SetNextUrl(const QUrl& url, qint64 beginning_nanosec, + qint64 end_nanosec); bool has_next_valid_url() const { return next_url_.isValid(); } // Get information about the music playback @@ -105,12 +108,13 @@ class GstEnginePipeline : public QObject { public slots: void SetVolumeModifier(qreal mod); - signals: +signals: void EndOfStreamReached(int pipeline_id, bool has_next_track); void MetadataFound(int pipeline_id, const Engine::SimpleMetaBundle& bundle); // This indicates an error, delegated from GStreamer, in the pipeline. // The message, domain and error_code are related to GStreamer's GError. - void Error(int pipeline_id, const QString& message, int domain, int error_code); + void Error(int pipeline_id, const QString& message, int domain, + int error_code); void FaderFinished(); void BufferingStarted(); @@ -118,7 +122,7 @@ class GstEnginePipeline : public QObject { void BufferingFinished(); protected: - void timerEvent(QTimerEvent *); + void timerEvent(QTimerEvent*); private: // Static callbacks. The GstEnginePipeline instance is passed in the last @@ -129,7 +133,8 @@ class GstEnginePipeline : public QObject { static bool HandoffCallback(GstPad*, GstBuffer*, gpointer); static bool EventHandoffCallback(GstPad*, GstEvent*, gpointer); static void SourceDrainedCallback(GstURIDecodeBin*, gpointer); - static void SourceSetupCallback(GstURIDecodeBin*, GParamSpec *pspec, gpointer); + static void SourceSetupCallback(GstURIDecodeBin*, GParamSpec* pspec, + gpointer); static void TaskEnterCallback(GstTask*, GThread*, gpointer); void TagMessageReceived(GstMessage*); @@ -180,7 +185,7 @@ class GstEnginePipeline : public QObject { // General settings for the pipeline bool valid_; QString sink_; - QString device_; + QVariant device_; // These get called when there is a new audio buffer available QList buffer_consumers_; @@ -209,6 +214,7 @@ class GstEnginePipeline : public QObject { // Buffering quint64 buffer_duration_nanosec_; + int buffer_min_fill_; bool buffering_; bool mono_playback_; @@ -253,7 +259,7 @@ class GstEnginePipeline : public QObject { int volume_percent_; qreal volume_modifier_; - boost::scoped_ptr fader_; + std::unique_ptr fader_; QBasicTimer fader_fudge_timer_; bool use_fudge_timer_; @@ -282,4 +288,4 @@ class GstEnginePipeline : public QObject { QThreadPool set_state_threadpool_; }; -#endif // GSTENGINEPIPELINE_H +#endif // GSTENGINEPIPELINE_H diff --git a/src/engines/osxdevicefinder.cpp b/src/engines/osxdevicefinder.cpp new file mode 100644 index 000000000..035000013 --- /dev/null +++ b/src/engines/osxdevicefinder.cpp @@ -0,0 +1,115 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#include + +#include + +#include "osxdevicefinder.h" +#include "core/logging.h" +#include "core/scoped_cftyperef.h" + +namespace { + +template +std::unique_ptr GetProperty(const AudioDeviceID& device_id, + const AudioObjectPropertyAddress& address, + UInt32* size_bytes_out = nullptr) { + UInt32 size_bytes = 0; + OSStatus status = AudioObjectGetPropertyDataSize( + device_id, &address, 0, NULL, &size_bytes); + if (status != kAudioHardwareNoError) { + qLog(Warning) << "AudioObjectGetPropertyDataSize failed:" << status; + return std::unique_ptr(); + } + + std::unique_ptr ret(reinterpret_cast(malloc(size_bytes))); + + status = AudioObjectGetPropertyData(device_id, + &address, + 0, + NULL, + &size_bytes, + ret.get()); + if (status != kAudioHardwareNoError) { + qLog(Warning) << "AudioObjectGetPropertyData failed:" << status; + return std::unique_ptr(); + } + + if (size_bytes_out) { + *size_bytes_out = size_bytes; + } + + return ret; +} + +} // namespace + + +OsxDeviceFinder::OsxDeviceFinder() + : DeviceFinder("osxaudiosink") { +} + +QList OsxDeviceFinder::ListDevices() { + QList ret; + + AudioObjectPropertyAddress address = { + kAudioHardwarePropertyDevices, + kAudioObjectPropertyScopeGlobal, + kAudioObjectPropertyElementMaster + }; + + UInt32 device_size_bytes = 0; + std::unique_ptr devices = + GetProperty( + kAudioObjectSystemObject, address, &device_size_bytes); + if (!devices.get()) { + return ret; + } + const int device_count = device_size_bytes / sizeof(AudioDeviceID); + + address.mScope = kAudioDevicePropertyScopeOutput; + for (UInt32 i = 0; i < device_count; ++i) { + const AudioDeviceID id = devices.get()[i]; + + // Query device name + address.mSelector = kAudioDevicePropertyDeviceNameCFString; + std::unique_ptr device_name = + GetProperty(id, address); + ScopedCFTypeRef scoped_device_name(*device_name.get()); + if (!device_name.get()) { + continue; + } + + // Determine if the device is an output device (it is an output device if + // it has output channels) + address.mSelector = kAudioDevicePropertyStreamConfiguration; + std::unique_ptr buffer_list = + GetProperty(id, address); + if (!buffer_list.get() || buffer_list->mNumberBuffers == 0) { + continue; + } + + Device dev; + dev.description = QString::fromUtf8( + CFStringGetCStringPtr(*device_name, CFStringGetSystemEncoding())); + dev.device_property_value = id; + dev.icon_name = GuessIconName(dev.description); + ret.append(dev); + } + return ret; +} diff --git a/src/internet/lastfmstationdialog.h b/src/engines/osxdevicefinder.h similarity index 59% rename from src/internet/lastfmstationdialog.h rename to src/engines/osxdevicefinder.h index 67d6cf9b2..92a8a0eb7 100644 --- a/src/internet/lastfmstationdialog.h +++ b/src/engines/osxdevicefinder.h @@ -1,45 +1,31 @@ /* This file is part of Clementine. - Copyright 2010, David Sansome - + Copyright 2014, David Sansome + 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 . */ -#ifndef LASTFMSTATIONDIALOG_H -#define LASTFMSTATIONDIALOG_H +#ifndef OSXDEVICEFINDER_H +#define OSXDEVICEFINDER_H -#include - -class Ui_LastFMStationDialog; - -class LastFMStationDialog : public QDialog { - Q_OBJECT +#include "engines/devicefinder.h" +class OsxDeviceFinder : public DeviceFinder { public: - LastFMStationDialog(QWidget* parent = 0); - ~LastFMStationDialog(); + OsxDeviceFinder(); - enum Type { - Artist, - Tag, - Custom, - }; - - void SetType(Type type); - QString content() const; - - private: - Ui_LastFMStationDialog* ui_; + virtual bool Initialise() { return true; } + virtual QList ListDevices(); }; -#endif // LASTFMSTATIONDIALOG_H +#endif // OSXDEVICEFINDER_H diff --git a/src/engines/pulsedevicefinder.cpp b/src/engines/pulsedevicefinder.cpp new file mode 100644 index 000000000..2079ec3c6 --- /dev/null +++ b/src/engines/pulsedevicefinder.cpp @@ -0,0 +1,134 @@ +/* This file is part of Clementine. + Copyright 2012, David Sansome + + 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 . +*/ + +#include "core/logging.h" +#include "engines/pulsedevicefinder.h" + +PulseDeviceFinder::PulseDeviceFinder() + : DeviceFinder("pulseaudiosink"), + mainloop_(nullptr), + context_(nullptr) { +} + +bool PulseDeviceFinder::Initialise() { + mainloop_ = pa_mainloop_new(); + if (!mainloop_) { + qLog(Warning) << "Failed to create pulseaudio mainloop"; + return false; + } + + return Reconnect(); +} + +bool PulseDeviceFinder::Reconnect() { + if (context_) { + pa_context_disconnect(context_); + pa_context_unref(context_); + } + + context_ = pa_context_new(pa_mainloop_get_api(mainloop_), + "Clementine device finder"); + if (!context_) { + qLog(Warning) << "Failed to create pulseaudio context"; + return false; + } + + if (pa_context_connect(context_, nullptr, PA_CONTEXT_NOFLAGS, nullptr) < 0) { + qLog(Warning) << "Failed to connect pulseaudio context"; + return false; + } + + // Wait for the context to be connected. + forever { + const pa_context_state state = pa_context_get_state(context_); + if (state == PA_CONTEXT_FAILED || state == PA_CONTEXT_TERMINATED) { + qLog(Warning) << "Connection to pulseaudio failed"; + return false; + } + + if (state == PA_CONTEXT_READY) { + return true; + } + + pa_mainloop_iterate(mainloop_, true, nullptr); + } +} + +QList PulseDeviceFinder::ListDevices() { + if (!context_ || pa_context_get_state(context_) != PA_CONTEXT_READY) { + return QList(); + } + +retry: + ListDevicesState state; + pa_context_get_sink_info_list( + context_, &PulseDeviceFinder::GetSinkInfoCallback, &state); + + forever { + if (state.finished) { + return state.devices; + } + + switch (pa_context_get_state(context_)) { + case PA_CONTEXT_READY: + break; + case PA_CONTEXT_FAILED: + case PA_CONTEXT_TERMINATED: + // Maybe pulseaudio died. Try reconnecting. + if (Reconnect()) { + goto retry; + } + return state.devices; + default: + return state.devices; + } + + pa_mainloop_iterate(mainloop_, true, nullptr); + } +} + +void PulseDeviceFinder::GetSinkInfoCallback(pa_context* c, + const pa_sink_info* info, + int eol, + void* state_voidptr) { + ListDevicesState* state = reinterpret_cast(state_voidptr); + + if (info) { + Device dev; + dev.device_property_value = QString::fromUtf8(info->name); + dev.description = QString::fromUtf8(info->description); + dev.icon_name = QString::fromUtf8( + pa_proplist_gets(info->proplist, "device.icon_name")); + + state->devices.append(dev); + } + + if (eol) { + state->finished = true; + } +} + +PulseDeviceFinder::~PulseDeviceFinder() { + if (context_) { + pa_context_disconnect(context_); + pa_context_unref(context_); + } + + if (mainloop_) { + pa_mainloop_free(mainloop_); + } +} diff --git a/src/engines/pulsedevicefinder.h b/src/engines/pulsedevicefinder.h new file mode 100644 index 000000000..31c0560df --- /dev/null +++ b/src/engines/pulsedevicefinder.h @@ -0,0 +1,56 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#ifndef PULSEDEVICEFINDER_H +#define PULSEDEVICEFINDER_H + +#include +#include +#include + +#include + +#include "engines/devicefinder.h" + +class PulseDeviceFinder : public DeviceFinder { + public: + PulseDeviceFinder(); + ~PulseDeviceFinder(); + + virtual bool Initialise(); + virtual QList ListDevices(); + + private: + struct ListDevicesState { + ListDevicesState() : finished(false) {} + + bool finished; + QList devices; + }; + + bool Reconnect(); + + static void GetSinkInfoCallback(pa_context* c, + const pa_sink_info* info, + int eol, + void* state_voidptr); + + pa_mainloop* mainloop_; + pa_context* context_; +}; + +#endif // PULSEDEVICEFINDER_H diff --git a/src/globalsearch/digitallyimportedsearchprovider.cpp b/src/globalsearch/digitallyimportedsearchprovider.cpp index 06437a1a6..e777ef1c7 100644 --- a/src/globalsearch/digitallyimportedsearchprovider.cpp +++ b/src/globalsearch/digitallyimportedsearchprovider.cpp @@ -20,14 +20,15 @@ #include "internet/digitallyimportedservicebase.h" DigitallyImportedSearchProvider::DigitallyImportedSearchProvider( - DigitallyImportedServiceBase* service, Application* app, QObject* parent) - : SimpleSearchProvider(app, parent), - service_(service) -{ + DigitallyImportedServiceBase* service, Application* app, QObject* parent) + : SimpleSearchProvider(app, parent), service_(service) { Init(service_->name(), service->api_service_name(), service_->icon(), ArtIsInSongMetadata | CanGiveSuggestions | CanShowConfig); - set_safe_words(QStringList() << "sky.fm" << "skyfm" << "di.fm" << "difm" + set_safe_words(QStringList() << "sky.fm" + << "skyfm" + << "di.fm" + << "difm" << "digitallyimported"); set_max_suggestion_count(5); @@ -35,8 +36,7 @@ DigitallyImportedSearchProvider::DigitallyImportedSearchProvider( // Load the channel list on startup only if it doesn't involve going to update // info from the server. - if (!service_->IsChannelListStale()) - RecreateItems(); + if (!service_->IsChannelListStale()) RecreateItems(); } void DigitallyImportedSearchProvider::RecreateItems() { @@ -44,7 +44,7 @@ void DigitallyImportedSearchProvider::RecreateItems() { DigitallyImportedClient::ChannelList channels = service_->Channels(); - foreach (const DigitallyImportedClient::Channel& channel, channels) { + for (const DigitallyImportedClient::Channel& channel : channels) { Song song; service_->SongFromChannel(channel, &song); items << Item(song); diff --git a/src/globalsearch/digitallyimportedsearchprovider.h b/src/globalsearch/digitallyimportedsearchprovider.h index a2aeebd6d..4630da96e 100644 --- a/src/globalsearch/digitallyimportedsearchprovider.h +++ b/src/globalsearch/digitallyimportedsearchprovider.h @@ -23,17 +23,17 @@ class DigitallyImportedServiceBase; class DigitallyImportedSearchProvider : public SimpleSearchProvider { -public: + public: DigitallyImportedSearchProvider(DigitallyImportedServiceBase* service, Application* app, QObject* parent); void ShowConfig(); -protected: + protected: void RecreateItems(); -private: + private: DigitallyImportedServiceBase* service_; }; -#endif // DIGITALLYIMPORTEDSEARCHPROVIDER_H +#endif // DIGITALLYIMPORTEDSEARCHPROVIDER_H diff --git a/src/globalsearch/globalsearch.cpp b/src/globalsearch/globalsearch.cpp index 4131b1570..59a4743ea 100644 --- a/src/globalsearch/globalsearch.cpp +++ b/src/globalsearch/globalsearch.cpp @@ -33,31 +33,27 @@ const int GlobalSearch::kDelayedSearchTimeoutMs = 200; const char* GlobalSearch::kSettingsGroup = "GlobalSearch"; const int GlobalSearch::kMaxResultsPerEmission = 500; - GlobalSearch::GlobalSearch(Application* app, QObject* parent) - : QObject(parent), - app_(app), - next_id_(1), - url_provider_(new UrlSearchProvider(app, this)) -{ + : QObject(parent), + app_(app), + next_id_(1), + url_provider_(new UrlSearchProvider(app, this)) { cover_loader_options_.desired_height_ = SearchProvider::kArtHeight; cover_loader_options_.pad_output_image_ = true; cover_loader_options_.scale_output_image_ = true; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(AlbumArtLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(AlbumArtLoaded(quint64, QImage))); ConnectProvider(url_provider_); } void GlobalSearch::ConnectProvider(SearchProvider* provider) { - connect(provider, SIGNAL(ResultsAvailable(int,SearchProvider::ResultList)), - SLOT(ResultsAvailableSlot(int,SearchProvider::ResultList))); - connect(provider, SIGNAL(SearchFinished(int)), - SLOT(SearchFinishedSlot(int))); - connect(provider, SIGNAL(ArtLoaded(int,QImage)), - SLOT(ArtLoadedSlot(int,QImage))); + connect(provider, SIGNAL(ResultsAvailable(int, SearchProvider::ResultList)), + SLOT(ResultsAvailableSlot(int, SearchProvider::ResultList))); + connect(provider, SIGNAL(SearchFinished(int)), SLOT(SearchFinishedSlot(int))); + connect(provider, SIGNAL(ArtLoaded(int, QImage)), + SLOT(ArtLoadedSlot(int, QImage))); connect(provider, SIGNAL(destroyed(QObject*)), SLOT(ProviderDestroyedSlot(QObject*))); } @@ -85,7 +81,7 @@ void GlobalSearch::AddProvider(SearchProvider* provider) { } int GlobalSearch::SearchAsync(const QString& query) { - const int id = next_id_ ++; + const int id = next_id_++; pending_search_providers_[id] = 0; int timer_id = -1; @@ -93,11 +89,10 @@ int GlobalSearch::SearchAsync(const QString& query) { if (url_provider_->LooksLikeUrl(query)) { url_provider_->SearchAsync(id, query); } else { - foreach (SearchProvider* provider, providers_.keys()) { - if (!is_provider_usable(provider)) - continue; + for (SearchProvider* provider : providers_.keys()) { + if (!is_provider_usable(provider)) continue; - pending_search_providers_[id] ++; + pending_search_providers_[id]++; if (provider->wants_delayed_queries()) { if (timer_id == -1) { @@ -117,7 +112,7 @@ int GlobalSearch::SearchAsync(const QString& query) { void GlobalSearch::CancelSearch(int id) { QMap::iterator it; - for (it = delayed_searches_.begin() ; it != delayed_searches_.end() ; ++it) { + for (it = delayed_searches_.begin(); it != delayed_searches_.end(); ++it) { if (it.value().id_ == id) { killTimer(it.key()); delayed_searches_.erase(it); @@ -129,7 +124,7 @@ void GlobalSearch::CancelSearch(int id) { void GlobalSearch::timerEvent(QTimerEvent* e) { QMap::iterator it = delayed_searches_.find(e->timerId()); if (it != delayed_searches_.end()) { - foreach (SearchProvider* provider, it.value().providers_) { + for (SearchProvider* provider : it.value().providers_) { provider->SearchAsync(it.value().id_, it.value().query_); } delayed_searches_.erase(it); @@ -139,15 +134,15 @@ void GlobalSearch::timerEvent(QTimerEvent* e) { QObject::timerEvent(e); } -QString GlobalSearch::PixmapCacheKey(const SearchProvider::Result& result) const { - return "globalsearch:" - % QString::number(qulonglong(result.provider_)) - % "," % result.metadata_.url().toString(); +QString GlobalSearch::PixmapCacheKey(const SearchProvider::Result& result) + const { + return "globalsearch:" % QString::number(qulonglong(result.provider_)) % "," % + result.metadata_.url().toString(); } -void GlobalSearch::ResultsAvailableSlot(int id, SearchProvider::ResultList results) { - if (results.isEmpty()) - return; +void GlobalSearch::ResultsAvailableSlot(int id, + SearchProvider::ResultList results) { + if (results.isEmpty()) return; // Limit the number of results that are used from each emission. // Just a sanity check to stop some providers (Jamendo) returning thousands @@ -159,7 +154,8 @@ void GlobalSearch::ResultsAvailableSlot(int id, SearchProvider::ResultList resul } // Load cached pixmaps into the results - for (SearchProvider::ResultList::iterator it = results.begin() ; it != results.end() ; ++it) { + for (SearchProvider::ResultList::iterator it = results.begin(); + it != results.end(); ++it) { it->pixmap_cache_key_ = PixmapCacheKey(*it); } @@ -167,8 +163,7 @@ void GlobalSearch::ResultsAvailableSlot(int id, SearchProvider::ResultList resul } void GlobalSearch::SearchFinishedSlot(int id) { - if (!pending_search_providers_.contains(id)) - return; + if (!pending_search_providers_.contains(id)) return; SearchProvider* provider = static_cast(sender()); const int remaining = --pending_search_providers_[id]; @@ -182,15 +177,14 @@ void GlobalSearch::SearchFinishedSlot(int id) { void GlobalSearch::ProviderDestroyedSlot(QObject* object) { SearchProvider* provider = static_cast(object); - if (!providers_.contains(provider)) - return; + if (!providers_.contains(provider)) return; providers_.remove(provider); emit ProviderRemoved(provider); // We have to abort any pending searches since we can't tell whether they // were on this provider. - foreach (int id, pending_search_providers_.keys()) { + for (int id : pending_search_providers_.keys()) { emit SearchFinished(id); } pending_search_providers_.clear(); @@ -201,7 +195,7 @@ QList GlobalSearch::providers() const { } int GlobalSearch::LoadArtAsync(const SearchProvider::Result& result) { - const int id = next_id_ ++; + const int id = next_id_++; pending_art_searches_[id] = result.pixmap_cache_key_; @@ -213,7 +207,7 @@ int GlobalSearch::LoadArtAsync(const SearchProvider::Result& result) { if (result.provider_->art_is_in_song_metadata()) { quint64 loader_id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, result.metadata_); + cover_loader_options_, result.metadata_); cover_loader_tasks_[loader_id] = id; } else if (providers_.contains(result.provider_) && result.provider_->wants_serialised_art()) { @@ -240,7 +234,7 @@ void GlobalSearch::TakeNextQueuedArt(SearchProvider* provider) { providers_[provider].queued_art_.isEmpty()) return; - const QueuedArt& data = providers_[provider].queued_art_.first(); + const QueuedArt& data = providers_[provider].queued_art_.first(); provider->LoadArtAsync(data.id_, data.result_); } @@ -250,14 +244,14 @@ void GlobalSearch::ArtLoadedSlot(int id, const QImage& image) { } void GlobalSearch::AlbumArtLoaded(quint64 id, const QImage& image) { - if (!cover_loader_tasks_.contains(id)) - return; + if (!cover_loader_tasks_.contains(id)) return; int orig_id = cover_loader_tasks_.take(id); - HandleLoadedArt(orig_id, image, NULL); + HandleLoadedArt(orig_id, image, nullptr); } -void GlobalSearch::HandleLoadedArt(int id, const QImage& image, SearchProvider* provider) { +void GlobalSearch::HandleLoadedArt(int id, const QImage& image, + SearchProvider* provider) { const QString key = pending_art_searches_.take(id); QPixmap pixmap = QPixmap::fromImage(image); @@ -265,10 +259,9 @@ void GlobalSearch::HandleLoadedArt(int id, const QImage& image, SearchProvider* emit ArtLoaded(id, pixmap); - if (provider && - providers_.contains(provider) && + if (provider && providers_.contains(provider) && !providers_[provider].queued_art_.isEmpty()) { - providers_[provider].queued_art_.removeFirst(); + providers_[provider].queued_art_.removeFirst(); TakeNextQueuedArt(provider); } } @@ -283,12 +276,12 @@ MimeData* GlobalSearch::LoadTracks(const SearchProvider::ResultList& results) { // possible to combine different providers. Just take the results from a // single provider. if (results.isEmpty()) { - return NULL; + return nullptr; } SearchProvider* first_provider = results[0].provider_; SearchProvider::ResultList results_copy; - foreach (const SearchProvider::Result& result, results) { + for (const SearchProvider::Result& result : results) { if (result.provider_ == first_provider) { results_copy << result; } @@ -300,8 +293,7 @@ MimeData* GlobalSearch::LoadTracks(const SearchProvider::ResultList& results) { bool GlobalSearch::SetProviderEnabled(const SearchProvider* const_provider, bool enabled) { SearchProvider* provider = const_cast(const_provider); - if (!providers_.contains(provider)) - return true; + if (!providers_.contains(provider)) return true; if (providers_[provider].enabled_ != enabled) { // If we try to enable this provider but it is not logged in, don't change @@ -319,11 +311,11 @@ bool GlobalSearch::SetProviderEnabled(const SearchProvider* const_provider, return true; } -bool GlobalSearch::is_provider_enabled(const SearchProvider* const_provider) const { +bool GlobalSearch::is_provider_enabled(const SearchProvider* const_provider) + const { SearchProvider* provider = const_cast(const_provider); - if (!providers_.contains(provider)) - return false; + if (!providers_.contains(provider)) return false; return providers_[provider].enabled_; } @@ -335,10 +327,9 @@ void GlobalSearch::ReloadSettings() { QSettings s; s.beginGroup(kSettingsGroup); - foreach (SearchProvider* provider, providers_.keys()) { + for (SearchProvider* provider : providers_.keys()) { QVariant value = s.value("enabled_" + provider->id()); - if (!value.isValid()) - continue; + if (!value.isValid()) continue; const bool enabled = value.toBool(); if (enabled != providers_[provider].enabled_) { @@ -351,7 +342,7 @@ void GlobalSearch::ReloadSettings() { void GlobalSearch::SaveProvidersSettings() { QSettings s; s.beginGroup(kSettingsGroup); - foreach (SearchProvider* provider, providers_.keys()) { + for (SearchProvider* provider : providers_.keys()) { s.setValue("enabled_" + provider->id(), providers_[provider].enabled_); } } @@ -360,9 +351,9 @@ QStringList GlobalSearch::GetSuggestions(int count) { QStringList ret; // Get count suggestions from each provider - foreach (SearchProvider* provider, providers_.keys()) { + for (SearchProvider* provider : providers_.keys()) { if (is_provider_enabled(provider) && provider->can_give_suggestions()) { - foreach (QString suggestion, provider->GetSuggestions(count)) { + for (QString suggestion : provider->GetSuggestions(count)) { suggestion = suggestion.trimmed().toLower(); if (!suggestion.isEmpty()) { diff --git a/src/globalsearch/globalsearch.h b/src/globalsearch/globalsearch.h index d6ec36d48..3004569b8 100644 --- a/src/globalsearch/globalsearch.h +++ b/src/globalsearch/globalsearch.h @@ -31,8 +31,8 @@ class UrlSearchProvider; class GlobalSearch : public QObject { Q_OBJECT -public: - GlobalSearch(Application* app, QObject* parent = 0); + public: + GlobalSearch(Application* app, QObject* parent = nullptr); static const int kDelayedSearchTimeoutMs; static const char* kSettingsGroup; @@ -53,14 +53,15 @@ public: void CancelSearch(int id); void CancelArt(int id); - bool FindCachedPixmap(const SearchProvider::Result& result, QPixmap* pixmap) const; + bool FindCachedPixmap(const SearchProvider::Result& result, + QPixmap* pixmap) const; // "enabled" is the user preference. "usable" is enabled AND logged in. QList providers() const; bool is_provider_enabled(const SearchProvider* provider) const; bool is_provider_usable(SearchProvider* provider) const; -public slots: + public slots: void ReloadSettings(); signals: @@ -74,10 +75,10 @@ signals: void ProviderRemoved(const SearchProvider* provider); void ProviderToggled(const SearchProvider* provider, bool enabled); -protected: + protected: void timerEvent(QTimerEvent* e); -private slots: + private slots: void ResultsAvailableSlot(int id, SearchProvider::ResultList results); void SearchFinishedSlot(int id); @@ -86,7 +87,7 @@ private slots: void ProviderDestroyedSlot(QObject* object); -private: + private: void ConnectProvider(SearchProvider* provider); void HandleLoadedArt(int id, const QImage& image, SearchProvider* provider); void TakeNextQueuedArt(SearchProvider* provider); @@ -94,7 +95,7 @@ private: void SaveProvidersSettings(); -private: + private: struct DelayedSearch { int id_; QString query_; @@ -131,4 +132,4 @@ private: UrlSearchProvider* url_provider_; }; -#endif // GLOBALSEARCH_H +#endif // GLOBALSEARCH_H diff --git a/src/globalsearch/globalsearchitemdelegate.cpp b/src/globalsearch/globalsearchitemdelegate.cpp index bd5f8d763..b8a6f02fa 100644 --- a/src/globalsearch/globalsearchitemdelegate.cpp +++ b/src/globalsearch/globalsearchitemdelegate.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -19,14 +19,11 @@ #include "globalsearchview.h" GlobalSearchItemDelegate::GlobalSearchItemDelegate(GlobalSearchView* view) - : LibraryItemDelegate(view), - view_(view) -{ -} + : LibraryItemDelegate(view), view_(view) {} -void GlobalSearchItemDelegate::paint( - QPainter* painter, const QStyleOptionViewItem& option, - const QModelIndex& index) const { +void GlobalSearchItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { // Tell the view we painted this item so it can lazy load some art. const_cast(view_)->LazyLoadArt(index); diff --git a/src/globalsearch/globalsearchitemdelegate.h b/src/globalsearch/globalsearchitemdelegate.h index 72536a57d..f5c7d398a 100644 --- a/src/globalsearch/globalsearchitemdelegate.h +++ b/src/globalsearch/globalsearchitemdelegate.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -23,14 +23,14 @@ class GlobalSearchView; class GlobalSearchItemDelegate : public LibraryItemDelegate { -public: + public: GlobalSearchItemDelegate(GlobalSearchView* view); void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; -private: + private: GlobalSearchView* view_; }; -#endif // GLOBALSEARCHITEMDELEGATE_H +#endif // GLOBALSEARCHITEMDELEGATE_H diff --git a/src/globalsearch/globalsearchmodel.cpp b/src/globalsearch/globalsearchmodel.cpp index 4408fa4c3..0ff0b4655 100644 --- a/src/globalsearch/globalsearchmodel.cpp +++ b/src/globalsearch/globalsearchmodel.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,20 +22,19 @@ #include GlobalSearchModel::GlobalSearchModel(GlobalSearch* engine, QObject* parent) - : QStandardItemModel(parent), - engine_(engine), - proxy_(NULL), - use_pretty_covers_(true), - artist_icon_(":/icons/22x22/x-clementine-artist.png"), - album_icon_(":/icons/22x22/x-clementine-album.png") -{ + : QStandardItemModel(parent), + engine_(engine), + proxy_(nullptr), + use_pretty_covers_(true), + artist_icon_(":/icons/22x22/x-clementine-artist.png"), + album_icon_(":/icons/22x22/x-clementine-album.png") { group_by_[0] = LibraryModel::GroupBy_Artist; group_by_[1] = LibraryModel::GroupBy_Album; group_by_[2] = LibraryModel::GroupBy_None; no_cover_icon_ = QPixmap(":nocover.png").scaled( - LibraryModel::kPrettyCoverSize, LibraryModel::kPrettyCoverSize, - Qt::KeepAspectRatio, Qt::SmoothTransformation); + LibraryModel::kPrettyCoverSize, LibraryModel::kPrettyCoverSize, + Qt::KeepAspectRatio, Qt::SmoothTransformation); } void GlobalSearchModel::AddResults(const SearchProvider::ResultList& results) { @@ -50,10 +49,11 @@ void GlobalSearchModel::AddResults(const SearchProvider::ResultList& results) { if (configured_index != -1) { sort_index = configured_index; } else { - sort_index = next_provider_sort_index_ ++; + sort_index = next_provider_sort_index_++; } - QStandardItem* divider = new QStandardItem(provider->icon(), provider->name()); + QStandardItem* divider = + new QStandardItem(provider->icon(), provider->name()); divider->setData(true, LibraryModel::Role_IsDivider); divider->setData(sort_index, Role_ProviderIndex); divider->setFlags(Qt::ItemIsEnabled); @@ -64,7 +64,7 @@ void GlobalSearchModel::AddResults(const SearchProvider::ResultList& results) { sort_index = provider_sort_indices_[provider]; } - foreach (const SearchProvider::Result& result, results) { + for (const SearchProvider::Result& result : results) { QStandardItem* parent = invisibleRootItem(); // Find (or create) the container nodes for this result if we can. @@ -85,8 +85,10 @@ void GlobalSearchModel::AddResults(const SearchProvider::ResultList& results) { } } -QStandardItem* GlobalSearchModel::BuildContainers( - const Song& s, QStandardItem* parent, ContainerKey* key, int level) { +QStandardItem* GlobalSearchModel::BuildContainers(const Song& s, + QStandardItem* parent, + ContainerKey* key, + int level) { if (level >= 3) { return parent; } @@ -99,60 +101,64 @@ QStandardItem* GlobalSearchModel::BuildContainers( int year = 0; switch (group_by_[level]) { - case LibraryModel::GroupBy_Artist: - if (s.is_compilation()) { - display_text = tr("Various artists"); - sort_text = "aaaaaa"; - } else { - display_text = LibraryModel::TextOrUnknown(s.artist()); - sort_text = LibraryModel::SortTextForArtist(s.artist()); - } - has_artist_icon = true; - break; + case LibraryModel::GroupBy_Artist: + if (s.is_compilation()) { + display_text = tr("Various artists"); + sort_text = "aaaaaa"; + } else { + display_text = LibraryModel::TextOrUnknown(s.artist()); + sort_text = LibraryModel::SortTextForArtist(s.artist()); + } + has_artist_icon = true; + break; - case LibraryModel::GroupBy_YearAlbum: - year = qMax(0, s.year()); - display_text = LibraryModel::PrettyYearAlbum(year, s.album()); - sort_text = LibraryModel::SortTextForYear(year) + s.album(); - unique_tag = s.album_id(); - has_album_icon = true; - break; + case LibraryModel::GroupBy_YearAlbum: + year = qMax(0, s.year()); + display_text = LibraryModel::PrettyYearAlbum(year, s.album()); + sort_text = LibraryModel::SortTextForYear(year) + s.album(); + unique_tag = s.album_id(); + has_album_icon = true; + break; - case LibraryModel::GroupBy_Year: - year = qMax(0, s.year()); - display_text = QString::number(year); - sort_text = LibraryModel::SortTextForYear(year) + " "; - break; + case LibraryModel::GroupBy_Year: + year = qMax(0, s.year()); + display_text = QString::number(year); + sort_text = LibraryModel::SortTextForYear(year) + " "; + break; - case LibraryModel::GroupBy_Composer: display_text = s.composer(); - case LibraryModel::GroupBy_Performer: display_text = s.performer(); - case LibraryModel::GroupBy_Grouping: display_text = s.grouping(); - case LibraryModel::GroupBy_Genre: if (display_text.isNull()) display_text = s.genre(); - case LibraryModel::GroupBy_Album: - unique_tag = s.album_id(); - if (display_text.isNull()) { - display_text = s.album(); - } + case LibraryModel::GroupBy_Composer: + display_text = s.composer(); + case LibraryModel::GroupBy_Performer: + display_text = s.performer(); + case LibraryModel::GroupBy_Grouping: + display_text = s.grouping(); + case LibraryModel::GroupBy_Genre: + if (display_text.isNull()) display_text = s.genre(); + case LibraryModel::GroupBy_Album: + unique_tag = s.album_id(); + if (display_text.isNull()) { + display_text = s.album(); + } // fallthrough - case LibraryModel::GroupBy_AlbumArtist: if (display_text.isNull()) display_text = s.effective_albumartist(); - display_text = LibraryModel::TextOrUnknown(display_text); - sort_text = LibraryModel::SortTextForArtist(display_text); - has_album_icon = true; - break; + case LibraryModel::GroupBy_AlbumArtist: + if (display_text.isNull()) display_text = s.effective_albumartist(); + display_text = LibraryModel::TextOrUnknown(display_text); + sort_text = LibraryModel::SortTextForArtist(display_text); + has_album_icon = true; + break; - case LibraryModel::GroupBy_FileType: - display_text = s.TextForFiletype(); - sort_text = display_text; - break; + case LibraryModel::GroupBy_FileType: + display_text = s.TextForFiletype(); + sort_text = display_text; + break; - case LibraryModel::GroupBy_Bitrate: - display_text = QString(s.bitrate(), 1); - sort_text = display_text; - break; - - case LibraryModel::GroupBy_None: - return parent; + case LibraryModel::GroupBy_Bitrate: + display_text = QString(s.bitrate(), 1); + sort_text = display_text; + break; + case LibraryModel::GroupBy_None: + return parent; } // Find a container for this level @@ -192,7 +198,7 @@ void GlobalSearchModel::Clear() { SearchProvider::ResultList GlobalSearchModel::GetChildResults( const QModelIndexList& indexes) const { QList items; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { items << itemFromIndex(index); } return GetChildResults(items); @@ -203,16 +209,16 @@ SearchProvider::ResultList GlobalSearchModel::GetChildResults( SearchProvider::ResultList results; QSet visited; - foreach (QStandardItem* item, items) { + for (QStandardItem* item : items) { GetChildResults(item, &results, &visited); } return results; } -void GlobalSearchModel::GetChildResults(const QStandardItem* item, - SearchProvider::ResultList* results, - QSet* visited) const { +void GlobalSearchModel::GetChildResults( + const QStandardItem* item, SearchProvider::ResultList* results, + QSet* visited) const { if (visited->contains(item)) { return; } @@ -224,7 +230,7 @@ void GlobalSearchModel::GetChildResults(const QStandardItem* item, // Yes - visit all the children, but do so through the proxy so we get them // in the right order. - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < item->rowCount(); ++i) { const QModelIndex proxy_index = parent_proxy_index.child(i, 0); const QModelIndex index = proxy_->mapToSource(proxy_index); GetChildResults(itemFromIndex(index), results, visited); @@ -244,11 +250,12 @@ void GatherResults(const QStandardItem* parent, QMap* results) { QVariant result_variant = parent->data(GlobalSearchModel::Role_Result); if (result_variant.isValid()) { - SearchProvider::Result result = result_variant.value(); + SearchProvider::Result result = + result_variant.value(); (*results)[result.provider_].append(result); } - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < parent->rowCount(); ++i) { GatherResults(parent->child(i), results); } } @@ -267,7 +274,7 @@ void GlobalSearchModel::SetGroupBy(const LibraryModel::Grouping& grouping, // Reset the model and re-add all the results using the new grouping. Clear(); - foreach (const SearchProvider::ResultList& result_list, results) { + for (const SearchProvider::ResultList& result_list : results) { AddResults(result_list); } } diff --git a/src/globalsearch/globalsearchmodel.h b/src/globalsearch/globalsearchmodel.h index 05c13ca10..d0765f70d 100644 --- a/src/globalsearch/globalsearchmodel.h +++ b/src/globalsearch/globalsearchmodel.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -30,14 +30,13 @@ class QSortFilterProxyModel; class GlobalSearchModel : public QStandardItemModel { Q_OBJECT -public: - GlobalSearchModel(GlobalSearch* engine, QObject* parent = 0); + public: + GlobalSearchModel(GlobalSearch* engine, QObject* parent = nullptr); enum Role { Role_Result = LibraryModel::LastRole, Role_LazyLoadingArt, Role_ProviderIndex, - LastRole }; @@ -48,28 +47,32 @@ public: void set_proxy(QSortFilterProxyModel* proxy) { proxy_ = proxy; } void set_use_pretty_covers(bool pretty) { use_pretty_covers_ = pretty; } - void set_provider_order(const QStringList& provider_order) { provider_order_ = provider_order; } + void set_provider_order(const QStringList& provider_order) { + provider_order_ = provider_order; + } void SetGroupBy(const LibraryModel::Grouping& grouping, bool regroup_now); void Clear(); - SearchProvider::ResultList GetChildResults(const QModelIndexList& indexes) const; - SearchProvider::ResultList GetChildResults(const QList& items) const; + SearchProvider::ResultList GetChildResults(const QModelIndexList& indexes) + const; + SearchProvider::ResultList GetChildResults(const QList& items) + const; // QAbstractItemModel QMimeData* mimeData(const QModelIndexList& indexes) const; -public slots: + public slots: void AddResults(const SearchProvider::ResultList& results); -private: + private: QStandardItem* BuildContainers(const Song& metadata, QStandardItem* parent, ContainerKey* key, int level = 0); void GetChildResults(const QStandardItem* item, SearchProvider::ResultList* results, QSet* visited) const; - -private: + + private: GlobalSearch* engine_; QSortFilterProxyModel* proxy_; @@ -87,17 +90,15 @@ private: }; inline uint qHash(const GlobalSearchModel::ContainerKey& key) { - return qHash(key.provider_index_) - ^ qHash(key.group_[0]) - ^ qHash(key.group_[1]) - ^ qHash(key.group_[2]); + return qHash(key.provider_index_) ^ qHash(key.group_[0]) ^ + qHash(key.group_[1]) ^ qHash(key.group_[2]); } -inline bool operator <(const GlobalSearchModel::ContainerKey& left, - const GlobalSearchModel::ContainerKey& right) { - #define CMP(field) \ - if (left.field < right.field) return true; \ - if (left.field > right.field) return false +inline bool operator<(const GlobalSearchModel::ContainerKey& left, + const GlobalSearchModel::ContainerKey& right) { +#define CMP(field) \ + if (left.field < right.field) return true; \ + if (left.field > right.field) return false CMP(provider_index_); CMP(group_[0]); @@ -105,7 +106,7 @@ inline bool operator <(const GlobalSearchModel::ContainerKey& left, CMP(group_[2]); return false; - #undef CMP +#undef CMP } -#endif // GLOBALSEARCHMODEL_H +#endif // GLOBALSEARCHMODEL_H diff --git a/src/globalsearch/globalsearchsettingspage.cpp b/src/globalsearch/globalsearchsettingspage.cpp index ef137767b..460d63a81 100644 --- a/src/globalsearch/globalsearchsettingspage.cpp +++ b/src/globalsearch/globalsearchsettingspage.cpp @@ -25,9 +25,7 @@ #include GlobalSearchSettingsPage::GlobalSearchSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui::GlobalSearchSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui::GlobalSearchSettingsPage) { ui_->setupUi(this); ui_->sources->header()->setResizeMode(0, QHeaderView::Stretch); @@ -38,12 +36,12 @@ GlobalSearchSettingsPage::GlobalSearchSettingsPage(SettingsDialog* dialog) connect(ui_->up, SIGNAL(clicked()), SLOT(MoveUp())); connect(ui_->down, SIGNAL(clicked()), SLOT(MoveDown())); connect(ui_->configure, SIGNAL(clicked()), SLOT(ConfigureProvider())); - connect(ui_->sources, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), + connect(ui_->sources, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(CurrentProviderChanged(QTreeWidgetItem*))); } -GlobalSearchSettingsPage::~GlobalSearchSettingsPage() { -} +GlobalSearchSettingsPage::~GlobalSearchSettingsPage() {} static bool CompareProviderId(SearchProvider* left, SearchProvider* right) { return left->id() < right->id(); @@ -62,10 +60,11 @@ void GlobalSearchSettingsPage::Load() { // Add the ones in the configured list first ui_->sources->clear(); - foreach (const QString& id, s.value("provider_order", QStringList() << "library").toStringList()) { + for (const QString& id : + s.value("provider_order", QStringList() << "library").toStringList()) { // Find a matching provider for this id for (QList::iterator it = providers.begin(); - it != providers.end() ; ++it) { + it != providers.end(); ++it) { if ((*it)->id() == id) { AddProviderItem(engine, *it); providers.erase(it); @@ -75,7 +74,7 @@ void GlobalSearchSettingsPage::Load() { } // Now add any others that are remaining - foreach (SearchProvider* provider, providers) { + for (SearchProvider* provider : providers) { AddProviderItem(engine, provider); } @@ -98,18 +97,18 @@ void GlobalSearchSettingsPage::AddProviderItem(GlobalSearch* engine, void GlobalSearchSettingsPage::UpdateLoggedInState(GlobalSearch* engine, QTreeWidgetItem* item, bool set_checked_state) { - SearchProvider* provider = item->data(0, Qt::UserRole).value(); + SearchProvider* provider = + item->data(0, Qt::UserRole).value(); const bool enabled = engine->is_provider_enabled(provider); const bool logged_in = provider->IsLoggedIn(); - Qt::CheckState check_state = logged_in && enabled ? Qt::Checked : Qt::Unchecked; + Qt::CheckState check_state = + logged_in && enabled ? Qt::Checked : Qt::Unchecked; Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable; - if (logged_in) - flags |= Qt::ItemIsUserCheckable; + if (logged_in) flags |= Qt::ItemIsUserCheckable; - if (set_checked_state) - item->setData(0, Qt::CheckStateRole, check_state); + if (set_checked_state) item->setData(0, Qt::CheckStateRole, check_state); item->setFlags(flags); if (logged_in) { @@ -127,16 +126,17 @@ void GlobalSearchSettingsPage::Save() { QStringList provider_order; - for (int i=0 ; isources->invisibleRootItem()->childCount() ; ++i) { + for (int i = 0; i < ui_->sources->invisibleRootItem()->childCount(); ++i) { const QTreeWidgetItem* item = ui_->sources->invisibleRootItem()->child(i); - const SearchProvider* provider = item->data(0, Qt::UserRole).value(); + const SearchProvider* provider = + item->data(0, Qt::UserRole).value(); provider_order << provider->id(); // Only save the enabled state for this provider if it's logged in. if (item->flags() & Qt::ItemIsUserCheckable) { s.setValue("enabled_" + provider->id(), - item->data(0, Qt::CheckStateRole).toInt() == Qt::Checked); + item->data(0, Qt::CheckStateRole).toInt() == Qt::Checked); } } @@ -145,26 +145,20 @@ void GlobalSearchSettingsPage::Save() { s.setValue("show_suggestions", ui_->show_suggestions->isChecked()); } -void GlobalSearchSettingsPage::MoveUp() { - MoveCurrentItem(-1); -} +void GlobalSearchSettingsPage::MoveUp() { MoveCurrentItem(-1); } -void GlobalSearchSettingsPage::MoveDown() { - MoveCurrentItem(+1); -} +void GlobalSearchSettingsPage::MoveDown() { MoveCurrentItem(+1); } void GlobalSearchSettingsPage::MoveCurrentItem(int d) { QTreeWidgetItem* item = ui_->sources->currentItem(); - if (!item) - return; + if (!item) return; QTreeWidgetItem* root = ui_->sources->invisibleRootItem(); const int row = root->indexOfChild(item); const int new_row = qBound(0, row + d, root->childCount()); - if (row == new_row) - return; + if (row == new_row) return; root->removeChild(item); root->insertChild(new_row, item); @@ -174,19 +168,19 @@ void GlobalSearchSettingsPage::MoveCurrentItem(int d) { void GlobalSearchSettingsPage::ConfigureProvider() { QTreeWidgetItem* item = ui_->sources->currentItem(); - if (!item) - return; + if (!item) return; - SearchProvider* provider = item->data(0, Qt::UserRole).value(); + SearchProvider* provider = + item->data(0, Qt::UserRole).value(); provider->ShowConfig(); } void GlobalSearchSettingsPage::CurrentProviderChanged(QTreeWidgetItem* item) { - if (!item) - return; + if (!item) return; QTreeWidgetItem* root = ui_->sources->invisibleRootItem(); - SearchProvider* provider = item->data(0, Qt::UserRole).value(); + SearchProvider* provider = + item->data(0, Qt::UserRole).value(); const int row = root->indexOfChild(item); ui_->up->setEnabled(row != 0); @@ -199,9 +193,8 @@ void GlobalSearchSettingsPage::showEvent(QShowEvent* e) { // Update the logged-in state of each item when we come back to this page in // the dialog. - for (int i = 0 ; i < ui_->sources->invisibleRootItem()->childCount() ; ++i) { + for (int i = 0; i < ui_->sources->invisibleRootItem()->childCount(); ++i) { UpdateLoggedInState(dialog()->global_search(), - ui_->sources->invisibleRootItem()->child(i), - false); + ui_->sources->invisibleRootItem()->child(i), false); } } diff --git a/src/globalsearch/globalsearchsettingspage.h b/src/globalsearch/globalsearchsettingspage.h index 0ef0c08aa..d656a9646 100644 --- a/src/globalsearch/globalsearchsettingspage.h +++ b/src/globalsearch/globalsearchsettingspage.h @@ -32,33 +32,33 @@ class QTreeWidgetItem; class GlobalSearchSettingsPage : public SettingsPage { Q_OBJECT -public: + public: GlobalSearchSettingsPage(SettingsDialog* dialog); ~GlobalSearchSettingsPage(); void Load(); void Save(); -protected: + protected: void showEvent(QShowEvent* e); -private slots: + private slots: void MoveUp(); void MoveDown(); void ConfigureProvider(); void CurrentProviderChanged(QTreeWidgetItem* item); -private: + private: void AddProviderItem(GlobalSearch* engine, SearchProvider* provider); void UpdateLoggedInState(GlobalSearch* engine, QTreeWidgetItem* item, bool set_checked_state); void MoveCurrentItem(int d); -private: + private: QScopedPointer ui_; QIcon warning_icon_; }; -#endif // GLOBALSEARCHSETTINGSPAGE_H +#endif // GLOBALSEARCHSETTINGSPAGE_H diff --git a/src/globalsearch/globalsearchsettingspage.ui b/src/globalsearch/globalsearchsettingspage.ui index 3642ac955..528964fde 100644 --- a/src/globalsearch/globalsearchsettingspage.ui +++ b/src/globalsearch/globalsearchsettingspage.ui @@ -11,7 +11,7 @@ - Search + Search diff --git a/src/globalsearch/globalsearchsortmodel.cpp b/src/globalsearch/globalsearchsortmodel.cpp index 9e2758cdc..9a19899f4 100644 --- a/src/globalsearch/globalsearchsortmodel.cpp +++ b/src/globalsearch/globalsearchsortmodel.cpp @@ -21,49 +21,53 @@ #include "core/logging.h" GlobalSearchSortModel::GlobalSearchSortModel(QObject* parent) - : QSortFilterProxyModel(parent) -{ -} + : QSortFilterProxyModel(parent) {} -bool GlobalSearchSortModel::lessThan(const QModelIndex& left, const QModelIndex& right) const { +bool GlobalSearchSortModel::lessThan(const QModelIndex& left, + const QModelIndex& right) const { // Compare the provider sort index first. - const int index_left = left.data(GlobalSearchModel::Role_ProviderIndex).toInt(); - const int index_right = right.data(GlobalSearchModel::Role_ProviderIndex).toInt(); + const int index_left = + left.data(GlobalSearchModel::Role_ProviderIndex).toInt(); + const int index_right = + right.data(GlobalSearchModel::Role_ProviderIndex).toInt(); if (index_left < index_right) return true; if (index_left > index_right) return false; // Dividers always go first - if (left.data(LibraryModel::Role_IsDivider).toBool()) return true; + if (left.data(LibraryModel::Role_IsDivider).toBool()) return true; if (right.data(LibraryModel::Role_IsDivider).toBool()) return false; // Containers go before songs if they're at the same level - const bool left_is_container = left.data(LibraryModel::Role_ContainerType).isValid(); - const bool right_is_container = right.data(LibraryModel::Role_ContainerType).isValid(); + const bool left_is_container = + left.data(LibraryModel::Role_ContainerType).isValid(); + const bool right_is_container = + right.data(LibraryModel::Role_ContainerType).isValid(); if (left_is_container && !right_is_container) return true; if (right_is_container && !left_is_container) return false; // Containers get sorted on their sort text. if (left_is_container) { return QString::localeAwareCompare( - left.data(LibraryModel::Role_SortText).toString(), - right.data(LibraryModel::Role_SortText).toString()) < 0; + left.data(LibraryModel::Role_SortText).toString(), + right.data(LibraryModel::Role_SortText).toString()) < 0; } // Otherwise we're comparing songs. Sort by disc, track, then title. - const SearchProvider::Result r1 = left.data(GlobalSearchModel::Role_Result) - .value(); + const SearchProvider::Result r1 = + left.data(GlobalSearchModel::Role_Result).value(); const SearchProvider::Result r2 = right.data(GlobalSearchModel::Role_Result) - .value(); + .value(); -#define CompareInt(field) \ +#define CompareInt(field) \ if (r1.metadata_.field() < r2.metadata_.field()) return true; \ if (r1.metadata_.field() > r2.metadata_.field()) return false int ret = 0; -#define CompareString(field) \ - ret = QString::localeAwareCompare(r1.metadata_.field(), r2.metadata_.field()); \ - if (ret < 0) return true; \ +#define CompareString(field) \ + ret = \ + QString::localeAwareCompare(r1.metadata_.field(), r2.metadata_.field()); \ + if (ret < 0) return true; \ if (ret > 0) return false CompareInt(disc); diff --git a/src/globalsearch/globalsearchsortmodel.h b/src/globalsearch/globalsearchsortmodel.h index b66de2f4e..20f99c5b5 100644 --- a/src/globalsearch/globalsearchsortmodel.h +++ b/src/globalsearch/globalsearchsortmodel.h @@ -21,11 +21,11 @@ #include class GlobalSearchSortModel : public QSortFilterProxyModel { -public: - GlobalSearchSortModel(QObject* parent = 0); + public: + GlobalSearchSortModel(QObject* parent = nullptr); -protected: + protected: bool lessThan(const QModelIndex& left, const QModelIndex& right) const; }; -#endif // GLOBALSEARCHSORTMODEL_H +#endif // GLOBALSEARCHSORTMODEL_H diff --git a/src/globalsearch/globalsearchview.cpp b/src/globalsearch/globalsearchview.cpp index 67cc90bb2..6cc99ca04 100644 --- a/src/globalsearch/globalsearchview.cpp +++ b/src/globalsearch/globalsearchview.cpp @@ -1,25 +1,33 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ +#include "globalsearchview.h" + +#include +#include +#include +#include + +#include + #include "globalsearch.h" #include "globalsearchitemdelegate.h" #include "globalsearchmodel.h" #include "globalsearchsortmodel.h" -#include "globalsearchview.h" #include "searchprovider.h" #include "searchproviderstatuswidget.h" #include "suggestionwidget.h" @@ -32,37 +40,32 @@ #include "library/librarymodel.h" #include "library/groupbydialog.h" -#include - -#include -#include -#include -#include +using std::placeholders::_1; +using std::placeholders::_2; const int GlobalSearchView::kSwapModelsTimeoutMsec = 250; const int GlobalSearchView::kMaxSuggestions = 10; const int GlobalSearchView::kUpdateSuggestionsTimeoutMsec = 60 * kMsecPerSec; GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) - : QWidget(parent), - app_(app), - engine_(app_->global_search()), - ui_(new Ui_GlobalSearchView), - context_menu_(NULL), - last_search_id_(0), - front_model_(new GlobalSearchModel(engine_, this)), - back_model_(new GlobalSearchModel(engine_, this)), - current_model_(front_model_), - front_proxy_(new GlobalSearchSortModel(this)), - back_proxy_(new GlobalSearchSortModel(this)), - current_proxy_(front_proxy_), - swap_models_timer_(new QTimer(this)), - update_suggestions_timer_(new QTimer(this)), - search_icon_(IconLoader::Load("search")), - warning_icon_(IconLoader::Load("dialog-warning")), - show_providers_(true), - show_suggestions_(true) -{ + : QWidget(parent), + app_(app), + engine_(app_->global_search()), + ui_(new Ui_GlobalSearchView), + context_menu_(nullptr), + last_search_id_(0), + front_model_(new GlobalSearchModel(engine_, this)), + back_model_(new GlobalSearchModel(engine_, this)), + current_model_(front_model_), + front_proxy_(new GlobalSearchSortModel(this)), + back_proxy_(new GlobalSearchSortModel(this)), + current_proxy_(front_proxy_), + swap_models_timer_(new QTimer(this)), + update_suggestions_timer_(new QTimer(this)), + search_icon_(IconLoader::Load("search")), + warning_icon_(IconLoader::Load("dialog-warning")), + show_providers_(true), + show_suggestions_(true) { ui_->setupUi(this); front_model_->set_proxy(front_proxy_); @@ -74,11 +77,14 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) ui_->settings->setIcon(IconLoader::Load("configure")); // Must be a queued connection to ensure the GlobalSearch handles it first. - connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings()), Qt::QueuedConnection); + connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings()), + Qt::QueuedConnection); connect(ui_->search, SIGNAL(textChanged(QString)), SLOT(TextEdited(QString))); - connect(ui_->results, SIGNAL(AddToPlaylistSignal(QMimeData*)), SIGNAL(AddToPlaylist(QMimeData*))); - connect(ui_->results, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), SLOT(FocusOnFilter(QKeyEvent*))); + connect(ui_->results, SIGNAL(AddToPlaylistSignal(QMimeData*)), + SIGNAL(AddToPlaylist(QMimeData*))); + connect(ui_->results, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), + SLOT(FocusOnFilter(QKeyEvent*))); // Set the appearance of the results list ui_->results->setItemDelegate(new GlobalSearchItemDelegate(this)); @@ -97,15 +103,17 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) // Set the colour of the help text to the disabled text colour QPalette help_palette = ui_->help_text->palette(); - const QColor help_color = help_palette.color(QPalette::Disabled, QPalette::Text); + const QColor help_color = + help_palette.color(QPalette::Disabled, QPalette::Text); help_palette.setColor(QPalette::Normal, QPalette::Text, help_color); help_palette.setColor(QPalette::Inactive, QPalette::Text, help_color); ui_->help_text->setPalette(help_palette); // Create suggestion widgets - for (int i=0 ; iaddWidget(widget); suggestion_widgets_ << widget; } @@ -129,7 +137,8 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) connect(swap_models_timer_, SIGNAL(timeout()), SLOT(SwapModels())); update_suggestions_timer_->setInterval(kUpdateSuggestionsTimeoutMsec); - connect(update_suggestions_timer_, SIGNAL(timeout()), SLOT(UpdateSuggestions())); + connect(update_suggestions_timer_, SIGNAL(timeout()), + SLOT(UpdateSuggestions())); // Add actions to the settings menu group_by_actions_ = LibraryFilterWidget::CreateGroupByActions(this); @@ -137,53 +146,55 @@ GlobalSearchView::GlobalSearchView(Application* app, QWidget* parent) settings_menu->addActions(group_by_actions_->actions()); settings_menu->addSeparator(); settings_menu->addAction(IconLoader::Load("configure"), - tr("Configure global search..."), this, SLOT(OpenSettingsDialog())); + tr("Configure global search..."), this, + SLOT(OpenSettingsDialog())); ui_->settings->setMenu(settings_menu); - connect(group_by_actions_, SIGNAL(triggered(QAction*)), SLOT(GroupByClicked(QAction*))); + connect(group_by_actions_, SIGNAL(triggered(QAction*)), + SLOT(GroupByClicked(QAction*))); // These have to be queued connections because they may get emitted before // our call to Search() (or whatever) returns and we add the ID to the map. - connect(engine_, SIGNAL(ResultsAvailable(int,SearchProvider::ResultList)), - SLOT(AddResults(int,SearchProvider::ResultList)), - Qt::QueuedConnection); - connect(engine_, SIGNAL(ArtLoaded(int,QPixmap)), SLOT(ArtLoaded(int,QPixmap)), + connect(engine_, SIGNAL(ResultsAvailable(int, SearchProvider::ResultList)), + SLOT(AddResults(int, SearchProvider::ResultList)), Qt::QueuedConnection); + connect(engine_, SIGNAL(ArtLoaded(int, QPixmap)), + SLOT(ArtLoaded(int, QPixmap)), Qt::QueuedConnection); } -GlobalSearchView::~GlobalSearchView() { - delete ui_; -} +GlobalSearchView::~GlobalSearchView() { delete ui_; } namespace { - bool CompareProvider(const QStringList& provider_order, - SearchProvider* left, SearchProvider* right) { - const int left_index = provider_order.indexOf(left->id()); - const int right_index = provider_order.indexOf(right->id()); - if (left_index == -1 && right_index == -1) { - // None are in our provider list: compare name instead - return left->name() < right->name(); - } else if (left_index == -1) { - // Left provider not in provider list - return false; - } else if (right_index == -1) { - // Right provider not in provider list - return true; - } - return left_index < right_index; +bool CompareProvider(const QStringList& provider_order, SearchProvider* left, + SearchProvider* right) { + const int left_index = provider_order.indexOf(left->id()); + const int right_index = provider_order.indexOf(right->id()); + if (left_index == -1 && right_index == -1) { + // None are in our provider list: compare name instead + return left->name() < right->name(); + } else if (left_index == -1) { + // Left provider not in provider list + return false; + } else if (right_index == -1) { + // Right provider not in provider list + return true; } + return left_index < right_index; +} } void GlobalSearchView::ReloadSettings() { + const bool old_show_suggestions = show_suggestions_; + QSettings s; - + // Library settings s.beginGroup(LibraryView::kSettingsGroup); const bool pretty = s.value("pretty_covers", true).toBool(); front_model_->set_use_pretty_covers(pretty); back_model_->set_use_pretty_covers(pretty); s.endGroup(); - + // Global search settings s.beginGroup(GlobalSearch::kSettingsGroup); const QStringList provider_order = @@ -193,15 +204,18 @@ void GlobalSearchView::ReloadSettings() { show_providers_ = s.value("show_providers", true).toBool(); show_suggestions_ = s.value("show_suggestions", true).toBool(); SetGroupBy(LibraryModel::Grouping( - LibraryModel::GroupBy(s.value("group_by1", int(LibraryModel::GroupBy_Artist)).toInt()), - LibraryModel::GroupBy(s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), - LibraryModel::GroupBy(s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); + LibraryModel::GroupBy( + s.value("group_by1", int(LibraryModel::GroupBy_Artist)).toInt()), + LibraryModel::GroupBy( + s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), + LibraryModel::GroupBy( + s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); s.endGroup(); - + // Delete any old status widgets qDeleteAll(provider_status_widgets_); provider_status_widgets_.clear(); - + // Toggle visibility of the providers group ui_->providers_group->setVisible(show_providers_); @@ -209,42 +223,46 @@ void GlobalSearchView::ReloadSettings() { // Sort the list of providers QList providers = engine_->providers(); qSort(providers.begin(), providers.end(), - boost::bind(&CompareProvider, boost::cref(provider_order), _1, _2)); - + std::bind(&CompareProvider, std::cref(provider_order), _1, _2)); + bool any_disabled = false; - - foreach (SearchProvider* provider, providers) { + + for (SearchProvider* provider : providers) { QWidget* parent = ui_->enabled_list; if (!engine_->is_provider_usable(provider)) { parent = ui_->disabled_list; any_disabled = true; } - + SearchProviderStatusWidget* widget = new SearchProviderStatusWidget(warning_icon_, engine_, provider); - + parent->layout()->addWidget(widget); provider_status_widgets_ << widget; } - + ui_->disabled_label->setVisible(any_disabled); } - + ui_->suggestions_group->setVisible(show_suggestions_); if (!show_suggestions_) { update_suggestions_timer_->stop(); } + + if (!old_show_suggestions && show_suggestions_) { + UpdateSuggestions(); + } } void GlobalSearchView::UpdateSuggestions() { const QStringList suggestions = engine_->GetSuggestions(kMaxSuggestions); - for (int i=0 ; iSetText(suggestions[i]); suggestion_widgets_[i]->show(); } - for (int i=suggestions.count() ; ihide(); } } @@ -277,9 +295,9 @@ void GlobalSearchView::TextEdited(const QString& text) { } } -void GlobalSearchView::AddResults(int id, const SearchProvider::ResultList& results) { - if (id != last_search_id_ || results.isEmpty()) - return; +void GlobalSearchView::AddResults(int id, + const SearchProvider::ResultList& results) { + if (id != last_search_id_ || results.isEmpty()) return; current_model_->AddResults(results); } @@ -316,7 +334,7 @@ void GlobalSearchView::LazyLoadArt(const QModelIndex& proxy_index) { // Is this an album? const LibraryModel::GroupBy container_type = LibraryModel::GroupBy( - proxy_index.data(LibraryModel::Role_ContainerType).toInt()); + proxy_index.data(LibraryModel::Role_ContainerType).toInt()); if (container_type != LibraryModel::GroupBy_Album && container_type != LibraryModel::GroupBy_AlbumArtist && container_type != LibraryModel::GroupBy_YearAlbum) { @@ -335,7 +353,8 @@ void GlobalSearchView::LazyLoadArt(const QModelIndex& proxy_index) { // Get the track's Result const SearchProvider::Result result = - item->data(GlobalSearchModel::Role_Result).value(); + item->data(GlobalSearchModel::Role_Result) + .value(); // Load the art. int id = engine_->LoadArtAsync(result); @@ -343,8 +362,7 @@ void GlobalSearchView::LazyLoadArt(const QModelIndex& proxy_index) { } void GlobalSearchView::ArtLoaded(int id, const QPixmap& pixmap) { - if (!art_requests_.contains(id)) - return; + if (!art_requests_.contains(id)) return; QModelIndex index = art_requests_.take(id); if (!pixmap.isNull()) { @@ -353,15 +371,14 @@ void GlobalSearchView::ArtLoaded(int id, const QPixmap& pixmap) { } MimeData* GlobalSearchView::SelectedMimeData() { - if (!ui_->results->selectionModel()) - return NULL; + if (!ui_->results->selectionModel()) return nullptr; // Get all selected model indexes QModelIndexList indexes = ui_->results->selectionModel()->selectedRows(); if (indexes.isEmpty()) { // There's nothing selected - take the first thing in the model that isn't // a divider. - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < front_proxy_->rowCount(); ++i) { QModelIndex index = front_proxy_->index(i, 0); if (!index.data(LibraryModel::Role_IsDivider).toBool()) { indexes << index; @@ -373,12 +390,12 @@ MimeData* GlobalSearchView::SelectedMimeData() { // Still got nothing? Give up. if (indexes.isEmpty()) { - return NULL; + return nullptr; } // Get items for these indexes QList items; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { items << (front_model_->itemFromIndex(front_proxy_->mapToSource(index))); } @@ -391,7 +408,8 @@ bool GlobalSearchView::eventFilter(QObject* object, QEvent* event) { if (SearchKeyEvent(static_cast(event))) { return true; } - } else if (object == ui_->results_stack && event->type() == QEvent::ContextMenu) { + } else if (object == ui_->results_stack && + event->type() == QEvent::ContextMenu) { if (ResultsContextMenuEvent(static_cast(event))) { return true; } @@ -402,24 +420,24 @@ bool GlobalSearchView::eventFilter(QObject* object, QEvent* event) { bool GlobalSearchView::SearchKeyEvent(QKeyEvent* event) { switch (event->key()) { - case Qt::Key_Up: - ui_->results->UpAndFocus(); - break; + case Qt::Key_Up: + ui_->results->UpAndFocus(); + break; - case Qt::Key_Down: - ui_->results->DownAndFocus(); - break; + case Qt::Key_Down: + ui_->results->DownAndFocus(); + break; - case Qt::Key_Escape: - ui_->search->clear(); - break; + case Qt::Key_Escape: + ui_->search->clear(); + break; - case Qt::Key_Return: - AddSelectedToPlaylist(); - break; + case Qt::Key_Return: + AddSelectedToPlaylist(); + break; - default: - return false; + default: + return false; } event->accept(); @@ -429,28 +447,37 @@ bool GlobalSearchView::SearchKeyEvent(QKeyEvent* event) { bool GlobalSearchView::ResultsContextMenuEvent(QContextMenuEvent* event) { if (!context_menu_) { context_menu_ = new QMenu(this); - context_actions_ << context_menu_->addAction(IconLoader::Load("media-playback-start"), - tr("Append to current playlist"), this, SLOT(AddSelectedToPlaylist())); - context_actions_ << context_menu_->addAction(IconLoader::Load("media-playback-start"), - tr("Replace current playlist"), this, SLOT(LoadSelected())); - context_actions_ << context_menu_->addAction(IconLoader::Load("document-new"), - tr("Open in new playlist"), this, SLOT(OpenSelectedInNewPlaylist())); + context_actions_ << context_menu_->addAction( + IconLoader::Load("media-playback-start"), + tr("Append to current playlist"), this, + SLOT(AddSelectedToPlaylist())); + context_actions_ << context_menu_->addAction( + IconLoader::Load("media-playback-start"), + tr("Replace current playlist"), this, + SLOT(LoadSelected())); + context_actions_ << context_menu_->addAction( + IconLoader::Load("document-new"), + tr("Open in new playlist"), this, + SLOT(OpenSelectedInNewPlaylist())); context_menu_->addSeparator(); - context_actions_ << context_menu_->addAction(IconLoader::Load("go-next"), - tr("Queue track"), this, SLOT(AddSelectedToPlaylistEnqueue())); + context_actions_ << context_menu_->addAction( + IconLoader::Load("go-next"), tr("Queue track"), + this, SLOT(AddSelectedToPlaylistEnqueue())); context_menu_->addSeparator(); - context_menu_->addMenu(tr("Group by"))->addActions(group_by_actions_->actions()); + context_menu_->addMenu(tr("Group by")) + ->addActions(group_by_actions_->actions()); context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure global search..."), this, SLOT(OpenSettingsDialog())); + tr("Configure global search..."), this, + SLOT(OpenSettingsDialog())); } const bool enable_context_actions = ui_->results->selectionModel() && ui_->results->selectionModel()->hasSelection(); - foreach (QAction* action, context_actions_) { + for (QAction* action : context_actions_) { action->setEnabled(enable_context_actions); } @@ -465,8 +492,7 @@ void GlobalSearchView::AddSelectedToPlaylist() { void GlobalSearchView::LoadSelected() { MimeData* data = SelectedMimeData(); - if (!data) - return; + if (!data) return; data->clear_first_ = true; emit AddToPlaylist(data); @@ -474,8 +500,7 @@ void GlobalSearchView::LoadSelected() { void GlobalSearchView::AddSelectedToPlaylistEnqueue() { MimeData* data = SelectedMimeData(); - if (!data) - return; + if (!data) return; data->enqueue_now_ = true; emit AddToPlaylist(data); @@ -483,8 +508,7 @@ void GlobalSearchView::AddSelectedToPlaylistEnqueue() { void GlobalSearchView::OpenSelectedInNewPlaylist() { MimeData* data = SelectedMimeData(); - if (!data) - return; + if (!data) return; data->open_in_new_playlist_ = true; emit AddToPlaylist(data); @@ -547,9 +571,8 @@ void GlobalSearchView::SetGroupBy(const LibraryModel::Grouping& g) { s.setValue("group_by3", int(g.third)); // Make sure the correct action is checked. - foreach (QAction* action, group_by_actions_->actions()) { - if (action->property("group_by").isNull()) - continue; + for (QAction* action : group_by_actions_->actions()) { + if (action->property("group_by").isNull()) continue; if (g == action->property("group_by").value()) { action->setChecked(true); diff --git a/src/globalsearch/globalsearchview.h b/src/globalsearch/globalsearchview.h index 6a0e963c8..4c376bdc5 100644 --- a/src/globalsearch/globalsearchview.h +++ b/src/globalsearch/globalsearchview.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -39,9 +39,9 @@ class QStandardItemModel; class GlobalSearchView : public QWidget { Q_OBJECT - -public: - GlobalSearchView(Application* app, QWidget* parent = 0); + + public: + GlobalSearchView(Application* app, QWidget* parent = nullptr); ~GlobalSearchView(); static const int kSwapModelsTimeoutMsec; @@ -58,7 +58,7 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: void ReloadSettings(); void StartSearch(const QString& query); void FocusSearchField(); @@ -67,7 +67,7 @@ public slots: signals: void AddToPlaylist(QMimeData* data); -private slots: + private slots: void UpdateSuggestions(); void SwapModels(); @@ -85,13 +85,13 @@ private slots: void GroupByClicked(QAction* action); void SetGroupBy(const LibraryModel::Grouping& grouping); -private: + private: MimeData* SelectedMimeData(); bool SearchKeyEvent(QKeyEvent* event); bool ResultsContextMenuEvent(QContextMenuEvent* event); - -private: + + private: Application* app_; GlobalSearch* engine_; Ui_GlobalSearchView* ui_; @@ -125,9 +125,9 @@ private: QIcon search_icon_; QIcon warning_icon_; - + bool show_providers_; bool show_suggestions_; }; -#endif // GLOBALSEARCHVIEW_H +#endif // GLOBALSEARCHVIEW_H diff --git a/src/globalsearch/groovesharksearchprovider.cpp b/src/globalsearch/groovesharksearchprovider.cpp index 0661ac207..522e7db33 100644 --- a/src/globalsearch/groovesharksearchprovider.cpp +++ b/src/globalsearch/groovesharksearchprovider.cpp @@ -24,17 +24,15 @@ #include "covers/albumcoverloader.h" #include "internet/groovesharkservice.h" -GroovesharkSearchProvider::GroovesharkSearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent), - service_(NULL) -{ -} +GroovesharkSearchProvider::GroovesharkSearchProvider(Application* app, + QObject* parent) + : SearchProvider(app, parent), service_(nullptr) {} void GroovesharkSearchProvider::Init(GroovesharkService* service) { service_ = service; - SearchProvider::Init("Grooveshark", "grooveshark", - QIcon(":providers/grooveshark.png"), - WantsDelayedQueries | ArtIsProbablyRemote | CanShowConfig); + SearchProvider::Init( + "Grooveshark", "grooveshark", QIcon(":providers/grooveshark.png"), + WantsDelayedQueries | ArtIsProbablyRemote | CanShowConfig); connect(service_, SIGNAL(SimpleSearchResults(int, SongList)), SLOT(SearchDone(int, SongList))); @@ -47,14 +45,14 @@ void GroovesharkSearchProvider::Init(GroovesharkService* service) { cover_loader_options_.pad_output_image_ = true; cover_loader_options_.scale_output_image_ = true; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64, QImage)), + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), SLOT(AlbumArtLoaded(quint64, QImage))); } void GroovesharkSearchProvider::SearchAsync(int id, const QString& query) { const int service_id = service_->SimpleSearch(query); - pending_searches_[service_id] = PendingState(id, TokenizeQuery(query));; + pending_searches_[service_id] = PendingState(id, TokenizeQuery(query)); + ; const int album_id = service_->SearchAlbums(query); pending_searches_[album_id] = PendingState(id, TokenizeQuery(query)); @@ -66,7 +64,7 @@ void GroovesharkSearchProvider::SearchDone(int id, const SongList& songs) { const int global_search_id = state.orig_id_; ResultList ret; - foreach (const Song& song, songs) { + for (const Song& song : songs) { Result result(this); result.metadata_ = song; @@ -77,7 +75,8 @@ void GroovesharkSearchProvider::SearchDone(int id, const SongList& songs) { MaybeSearchFinished(global_search_id); } -void GroovesharkSearchProvider::AlbumSearchResult(int id, const QList& albums_ids) { +void GroovesharkSearchProvider::AlbumSearchResult( + int id, const QList& albums_ids) { // Map back to the original id. const PendingState state = pending_searches_.take(id); const int global_search_id = state.orig_id_; @@ -85,10 +84,9 @@ void GroovesharkSearchProvider::AlbumSearchResult(int id, const QList& MaybeSearchFinished(global_search_id); return; } - foreach (const quint64 album_id, albums_ids) { + for (const quint64 album_id : albums_ids) { pending_searches_[album_id] = PendingState(global_search_id, QStringList()); } - } void GroovesharkSearchProvider::MaybeSearchFinished(int id) { @@ -97,14 +95,14 @@ void GroovesharkSearchProvider::MaybeSearchFinished(int id) { } } - void GroovesharkSearchProvider::LoadArtAsync(int id, const Result& result) { quint64 loader_id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, result.metadata_); + cover_loader_options_, result.metadata_); cover_loader_tasks_[loader_id] = id; } -void GroovesharkSearchProvider::AlbumArtLoaded(quint64 id, const QImage& image) { +void GroovesharkSearchProvider::AlbumArtLoaded(quint64 id, + const QImage& image) { if (!cover_loader_tasks_.contains(id)) { return; } @@ -116,15 +114,14 @@ bool GroovesharkSearchProvider::IsLoggedIn() { return (service_ && service_->IsLoggedIn()); } -void GroovesharkSearchProvider::ShowConfig() { - service_->ShowConfig(); -} +void GroovesharkSearchProvider::ShowConfig() { service_->ShowConfig(); } -void GroovesharkSearchProvider::AlbumSongsLoaded(quint64 id, const SongList& songs) { +void GroovesharkSearchProvider::AlbumSongsLoaded(quint64 id, + const SongList& songs) { const PendingState state = pending_searches_.take(id); const int global_search_id = state.orig_id_; ResultList ret; - foreach (const Song& s, songs) { + for (const Song& s : songs) { Result result(this); result.metadata_ = s; ret << result; diff --git a/src/globalsearch/groovesharksearchprovider.h b/src/globalsearch/groovesharksearchprovider.h index 892c3e04b..4fe3bc0d3 100644 --- a/src/globalsearch/groovesharksearchprovider.h +++ b/src/globalsearch/groovesharksearchprovider.h @@ -28,7 +28,7 @@ class GroovesharkSearchProvider : public SearchProvider { Q_OBJECT public: - explicit GroovesharkSearchProvider(Application* app, QObject* parent = 0); + explicit GroovesharkSearchProvider(Application* app, QObject* parent = nullptr); void Init(GroovesharkService* service); // SearchProvider diff --git a/src/globalsearch/icecastsearchprovider.cpp b/src/globalsearch/icecastsearchprovider.cpp index ace22a63e..ab78db194 100644 --- a/src/globalsearch/icecastsearchprovider.cpp +++ b/src/globalsearch/icecastsearchprovider.cpp @@ -20,19 +20,18 @@ IcecastSearchProvider::IcecastSearchProvider(IcecastBackend* backend, Application* app, QObject* parent) - : BlockingSearchProvider(app, parent), - backend_(backend) -{ - Init("Icecast", "icecast", QIcon(":last.fm/icon_radio.png"), DisabledByDefault); + : BlockingSearchProvider(app, parent), backend_(backend) { + Init("Icecast", "icecast", QIcon(":last.fm/icon_radio.png"), + DisabledByDefault); } -SearchProvider::ResultList IcecastSearchProvider::Search(int id, const QString& query) { +SearchProvider::ResultList IcecastSearchProvider::Search(int id, + const QString& query) { IcecastBackend::StationList stations = backend_->GetStations(query); ResultList ret; - foreach (const IcecastBackend::Station& station, stations) { - if (ret.count() > 3) - break; + for (const IcecastBackend::Station& station : stations) { + if (ret.count() > 3) break; Result result(this); result.group_automatically_ = false; diff --git a/src/globalsearch/icecastsearchprovider.h b/src/globalsearch/icecastsearchprovider.h index c9b3a775e..f8350dbcb 100644 --- a/src/globalsearch/icecastsearchprovider.h +++ b/src/globalsearch/icecastsearchprovider.h @@ -22,15 +22,15 @@ class IcecastBackend; - class IcecastSearchProvider : public BlockingSearchProvider { -public: - IcecastSearchProvider(IcecastBackend* backend, Application* app, QObject* parent); + public: + IcecastSearchProvider(IcecastBackend* backend, Application* app, + QObject* parent); ResultList Search(int id, const QString& query); -private: + private: IcecastBackend* backend_; }; -#endif // ICECASTSEARCHPROVIDER_H +#endif // ICECASTSEARCHPROVIDER_H diff --git a/src/globalsearch/lastfmsearchprovider.cpp b/src/globalsearch/lastfmsearchprovider.cpp deleted file mode 100644 index 200814710..000000000 --- a/src/globalsearch/lastfmsearchprovider.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* This file is part of Clementine. - Copyright 2010, David Sansome - - 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 . -*/ - -#include "lastfmsearchprovider.h" -#include "core/logging.h" -#include "internet/lastfmservice.h" - - -LastFMSearchProvider::LastFMSearchProvider(LastFMService* service, - Application* app, QObject* parent) - : SimpleSearchProvider(app, parent), - service_(service) { - Init("Last.fm", "lastfm", QIcon(":last.fm/as.png"), - CanShowConfig | CanGiveSuggestions); - icon_ = ScaleAndPad(QImage(":last.fm/as.png")); - - set_safe_words(QStringList() << "lastfm" << "last.fm"); - set_max_suggestion_count(3); - - connect(service, SIGNAL(SavedItemsChanged()), SLOT(MaybeRecreateItems())); - - // Load the friends list on startup only if it doesn't involve going to update - // info from the server. - if (!service_->IsFriendsListStale()) - RecreateItems(); -} - -void LastFMSearchProvider::LoadArtAsync(int id, const Result& result) { - // TODO: Maybe we should try to get user pictures for friends? - - emit ArtLoaded(id, icon_); -} - -void LastFMSearchProvider::RecreateItems() { - QList items; - - items << Item(tr("My Last.fm Recommended Radio"), - QUrl("lastfm://user/USERNAME/recommended"), "recommended"); - items << Item(tr("My Last.fm Library"), - QUrl("lastfm://user/USERNAME/library"), "radio"); - items << Item(tr("My Last.fm Mix Radio"), - QUrl("lastfm://user/USERNAME/mix"), "mix"); - items << Item(tr("My Last.fm Neighborhood"), - QUrl("lastfm://user/USERNAME/neighbours"), "neighborhood"); - - const QStringList artists = service_->SavedArtistRadioNames(); - const QStringList tags = service_->SavedTagRadioNames(); - const QStringList friends = service_->FriendNames(); - - foreach (const QString& name, artists) { - items << Item(tr(LastFMService::kTitleArtist).arg(name), - QUrl(QString(LastFMService::kUrlArtist).arg(name)), name); - } - - foreach (const QString& name, tags) { - items << Item(tr(LastFMService::kTitleTag).arg(name), - QUrl(QString(LastFMService::kUrlTag).arg(name)), name); - } - - foreach (const QString& name, friends) { - items << Item(tr("Last.fm Radio Station - %1").arg(name), - QUrl("lastfm://user/" + name + "/library"), name); - items << Item(tr("Last.fm Mix Radio - %1").arg(name), - QUrl("lastfm://user/" + name + "/mix"), name); - items << Item(tr("Last.fm Neighbor Radio - %1").arg(name), - QUrl("lastfm://user/" + name + "/neighbours"), name); - } - - SetItems(items); -} - -bool LastFMSearchProvider::IsLoggedIn() { - return service_->IsAuthenticated(); -} - -void LastFMSearchProvider::ShowConfig() { - service_->ShowConfig(); -} diff --git a/src/globalsearch/librarysearchprovider.cpp b/src/globalsearch/librarysearchprovider.cpp index de4a376d6..d1b3e787c 100644 --- a/src/globalsearch/librarysearchprovider.cpp +++ b/src/globalsearch/librarysearchprovider.cpp @@ -25,19 +25,15 @@ #include - LibrarySearchProvider::LibrarySearchProvider(LibraryBackendInterface* backend, const QString& name, const QString& id, const QIcon& icon, bool enabled_by_default, - Application* app, - QObject* parent) - : BlockingSearchProvider(app, parent), - backend_(backend) -{ - Hints hints = WantsSerialisedArtQueries | ArtIsInSongMetadata | - CanGiveSuggestions; + Application* app, QObject* parent) + : BlockingSearchProvider(app, parent), backend_(backend) { + Hints hints = + WantsSerialisedArtQueries | ArtIsInSongMetadata | CanGiveSuggestions; if (!enabled_by_default) { hints |= DisabledByDefault; @@ -46,7 +42,8 @@ LibrarySearchProvider::LibrarySearchProvider(LibraryBackendInterface* backend, Init(name, id, icon, hints); } -SearchProvider::ResultList LibrarySearchProvider::Search(int id, const QString& query) { +SearchProvider::ResultList LibrarySearchProvider::Search(int id, + const QString& query) { QueryOptions options; options.set_filter(query); @@ -94,7 +91,7 @@ QStringList LibrarySearchProvider::GetSuggestions(int count) { const int largest_rowid = q.Value(0).toInt(); - for (int attempt=0 ; attempt= count) { break; } @@ -110,7 +107,7 @@ QStringList LibrarySearchProvider::GetSuggestions(int count) { } const QString artist = q.Value(0).toString(); - const QString album = q.Value(1).toString(); + const QString album = q.Value(1).toString(); if (!artist.isEmpty() && !album.isEmpty()) ret << ((qrand() % 2 == 0) ? artist : album); diff --git a/src/globalsearch/librarysearchprovider.h b/src/globalsearch/librarysearchprovider.h index 2eb07f8a4..2b7ceb11f 100644 --- a/src/globalsearch/librarysearchprovider.h +++ b/src/globalsearch/librarysearchprovider.h @@ -22,20 +22,19 @@ class LibraryBackendInterface; - class LibrarySearchProvider : public BlockingSearchProvider { -public: + public: LibrarySearchProvider(LibraryBackendInterface* backend, const QString& name, const QString& id, const QIcon& icon, - bool enabled_by_default, - Application* app, QObject* parent = 0); + bool enabled_by_default, Application* app, + QObject* parent = nullptr); ResultList Search(int id, const QString& query); MimeData* LoadTracks(const ResultList& results); QStringList GetSuggestions(int count); -private: + private: LibraryBackendInterface* backend_; }; -#endif // LIBRARYSEARCHPROVIDER_H +#endif // LIBRARYSEARCHPROVIDER_H diff --git a/src/globalsearch/savedradiosearchprovider.cpp b/src/globalsearch/savedradiosearchprovider.cpp index 5dd052dc2..8ceffeae8 100644 --- a/src/globalsearch/savedradiosearchprovider.cpp +++ b/src/globalsearch/savedradiosearchprovider.cpp @@ -21,12 +21,11 @@ #include "ui/iconloader.h" SavedRadioSearchProvider::SavedRadioSearchProvider(SavedRadio* service, - Application* app, QObject* parent) - : SimpleSearchProvider(app, parent), - service_(service) -{ - Init(tr("Your radio streams"), "savedradio", IconLoader::Load("document-open-remote"), - MimeDataContainsUrlsOnly); + Application* app, + QObject* parent) + : SimpleSearchProvider(app, parent), service_(service) { + Init(tr("Your radio streams"), "savedradio", + IconLoader::Load("document-open-remote"), MimeDataContainsUrlsOnly); set_max_suggestion_count(3); @@ -38,7 +37,7 @@ SavedRadioSearchProvider::SavedRadioSearchProvider(SavedRadio* service, void SavedRadioSearchProvider::RecreateItems() { QList items; - foreach (const SavedRadio::Stream& stream, service_->Streams()) { + for (const SavedRadio::Stream& stream : service_->Streams()) { Item item; item.metadata_.set_title(stream.name_); item.metadata_.set_url(stream.url_); diff --git a/src/globalsearch/savedradiosearchprovider.h b/src/globalsearch/savedradiosearchprovider.h index d6bb793c6..a4e43c87a 100644 --- a/src/globalsearch/savedradiosearchprovider.h +++ b/src/globalsearch/savedradiosearchprovider.h @@ -23,14 +23,15 @@ class SavedRadio; class SavedRadioSearchProvider : public SimpleSearchProvider { -public: - SavedRadioSearchProvider(SavedRadio* service, Application* app, QObject* parent); + public: + SavedRadioSearchProvider(SavedRadio* service, Application* app, + QObject* parent); -protected: + protected: void RecreateItems(); -private: + private: SavedRadio* service_; }; -#endif // SAVEDRADIOSEARCHPROVIDER_H +#endif // SAVEDRADIOSEARCHPROVIDER_H diff --git a/src/globalsearch/searchprovider.cpp b/src/globalsearch/searchprovider.cpp index 51d55413a..fe67c552d 100644 --- a/src/globalsearch/searchprovider.cpp +++ b/src/globalsearch/searchprovider.cpp @@ -26,13 +26,8 @@ const int SearchProvider::kArtHeight = 32; - SearchProvider::SearchProvider(Application* app, QObject* parent) - : QObject(parent), - app_(app), - hints_(0) -{ -} + : QObject(parent), app_(app), hints_(0) {} void SearchProvider::Init(const QString& name, const QString& id, const QIcon& icon, Hints hints) { @@ -42,10 +37,18 @@ void SearchProvider::Init(const QString& name, const QString& id, hints_ = hints; } +void SearchProvider::SetHint(Hint hint, bool set) { + if (set) { + hints_ |= hint; + } else { + hints_ &= ~hint; + } +} + QStringList SearchProvider::TokenizeQuery(const QString& query) { QStringList tokens(query.split(QRegExp("\\s+"))); - for (QStringList::iterator it = tokens.begin() ; it != tokens.end() ; ++it) { + for (QStringList::iterator it = tokens.begin(); it != tokens.end(); ++it) { (*it).remove('('); (*it).remove(')'); (*it).remove('"'); @@ -60,7 +63,7 @@ QStringList SearchProvider::TokenizeQuery(const QString& query) { } bool SearchProvider::Matches(const QStringList& tokens, const QString& string) { - foreach (const QString& token, tokens) { + for (const QString& token : tokens) { if (!string.contains(token, Qt::CaseInsensitive)) { return false; } @@ -69,13 +72,13 @@ bool SearchProvider::Matches(const QStringList& tokens, const QString& string) { return true; } -BlockingSearchProvider::BlockingSearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent) { -} +BlockingSearchProvider::BlockingSearchProvider(Application* app, + QObject* parent) + : SearchProvider(app, parent) {} void BlockingSearchProvider::SearchAsync(int id, const QString& query) { - QFuture future = QtConcurrent::run( - this, &BlockingSearchProvider::Search, id, query); + QFuture future = + QtConcurrent::run(this, &BlockingSearchProvider::Search, id, query); BoundFutureWatcher* watcher = new BoundFutureWatcher(id); @@ -94,21 +97,19 @@ void BlockingSearchProvider::BlockingSearchFinished() { } QImage SearchProvider::ScaleAndPad(const QImage& image) { - if (image.isNull()) - return QImage(); + if (image.isNull()) return QImage(); const QSize target_size = QSize(kArtHeight, kArtHeight); - if (image.size() == target_size) - return image; + if (image.size() == target_size) return image; // Scale the image down QImage copy; - copy = image.scaled(target_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); + copy = + image.scaled(target_size, Qt::KeepAspectRatio, Qt::SmoothTransformation); // Pad the image to kHeight x kHeight - if (copy.size() == target_size) - return copy; + if (copy.size() == target_size) return copy; QImage padded_image(kArtHeight, kArtHeight, QImage::Format_ARGB32); padded_image.fill(0); @@ -126,18 +127,19 @@ void SearchProvider::LoadArtAsync(int id, const Result& result) { } MimeData* SearchProvider::LoadTracks(const ResultList& results) { - MimeData* mime_data = NULL; + MimeData* mime_data = nullptr; if (mime_data_contains_urls_only()) { mime_data = new MimeData; } else { SongList songs; - foreach (const Result& result, results) { + for (const Result& result : results) { songs << result.metadata_; } if (internet_service()) { - InternetSongMimeData* internet_song_mime_data = new InternetSongMimeData(internet_service()); + InternetSongMimeData* internet_song_mime_data = + new InternetSongMimeData(internet_service()); internet_song_mime_data->songs = songs; mime_data = internet_song_mime_data; } else { @@ -148,7 +150,7 @@ MimeData* SearchProvider::LoadTracks(const ResultList& results) { } QList urls; - foreach (const Result& result, results) { + for (const Result& result : results) { urls << result.metadata_.url(); } mime_data->setUrls(urls); diff --git a/src/globalsearch/searchprovider.h b/src/globalsearch/searchprovider.h index dd22186a7..5e6fc99bc 100644 --- a/src/globalsearch/searchprovider.h +++ b/src/globalsearch/searchprovider.h @@ -28,18 +28,17 @@ class Application; class InternetService; class MimeData; - class SearchProvider : public QObject { Q_OBJECT -public: - SearchProvider(Application* app, QObject* parent = 0); + public: + SearchProvider(Application* app, QObject* parent = nullptr); static const int kArtHeight; struct Result { Result(SearchProvider* provider = 0) - : provider_(provider), group_automatically_(true) {} + : provider_(provider), group_automatically_(true) {} // This must be set by the provider using the constructor. SearchProvider* provider_; @@ -108,14 +107,18 @@ public: Hints hints() const { return hints_; } bool wants_delayed_queries() const { return hints() & WantsDelayedQueries; } - bool wants_serialised_art() const { return hints() & WantsSerialisedArtQueries; } + bool wants_serialised_art() const { + return hints() & WantsSerialisedArtQueries; + } bool art_is_probably_remote() const { return hints() & ArtIsProbablyRemote; } bool art_is_in_song_metadata() const { return hints() & ArtIsInSongMetadata; } bool can_show_config() const { return hints() & CanShowConfig; } bool can_give_suggestions() const { return hints() & CanGiveSuggestions; } bool is_disabled_by_default() const { return hints() & DisabledByDefault; } bool is_enabled_by_default() const { return !is_disabled_by_default(); } - bool mime_data_contains_urls_only() const { return hints() & MimeDataContainsUrlsOnly; } + bool mime_data_contains_urls_only() const { + return hints() & MimeDataContainsUrlsOnly; + } // Starts a search. Must emit ResultsAvailable zero or more times and then // SearchFinished exactly once, using this ID. @@ -138,10 +141,10 @@ public: // If provider needs user login to search and play songs, this method should // be reimplemented virtual bool IsLoggedIn() { return true; } - virtual void ShowConfig() { } // Remember to set the CanShowConfig hint - // Returns the Internet service in charge of this provider, or NULL if there + virtual void ShowConfig() {} // Remember to set the CanShowConfig hint + // Returns the Internet service in charge of this provider, or nullptr if there // is none - virtual InternetService* internet_service() { return NULL; } + virtual InternetService* internet_service() { return nullptr; } static QImage ScaleAndPad(const QImage& image); @@ -151,7 +154,7 @@ signals: void ArtLoaded(int id, const QImage& image); -protected: + protected: // These functions treat queries in the same way as LibraryQuery. They're // useful for figuring out whether you got a result because it matched in // the song title or the artist/album name. @@ -161,13 +164,12 @@ protected: // Subclasses must call this from their constructors. void Init(const QString& name, const QString& id, const QIcon& icon, Hints hints = NoHints); + void SetHint(Hint hint, bool set = true); struct PendingState { PendingState() : orig_id_(-1) {} PendingState(int orig_id, QStringList tokens) - : orig_id_(orig_id), - tokens_(tokens) { - } + : orig_id_(orig_id), tokens_(tokens) {} int orig_id_; QStringList tokens_; @@ -180,10 +182,10 @@ protected: } }; -protected: + protected: Application* app_; -private: + private: QString name_; QString id_; QIcon icon_; @@ -194,20 +196,19 @@ Q_DECLARE_METATYPE(SearchProvider::Result) Q_DECLARE_METATYPE(SearchProvider::ResultList) Q_DECLARE_OPERATORS_FOR_FLAGS(SearchProvider::Hints) - class BlockingSearchProvider : public SearchProvider { Q_OBJECT -public: - BlockingSearchProvider(Application* app, QObject* parent = 0); + public: + BlockingSearchProvider(Application* app, QObject* parent = nullptr); void SearchAsync(int id, const QString& query); virtual ResultList Search(int id, const QString& query) = 0; -private slots: + private slots: void BlockingSearchFinished(); }; Q_DECLARE_METATYPE(SearchProvider*) -#endif // SEARCHPROVIDER_H +#endif // SEARCHPROVIDER_H diff --git a/src/globalsearch/searchproviderstatuswidget.cpp b/src/globalsearch/searchproviderstatuswidget.cpp index d4f2d069c..8bb25738d 100644 --- a/src/globalsearch/searchproviderstatuswidget.cpp +++ b/src/globalsearch/searchproviderstatuswidget.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,14 +25,12 @@ #include SearchProviderStatusWidget::SearchProviderStatusWidget( - const QIcon& warning_icon, - GlobalSearch* engine, SearchProvider* provider, + const QIcon& warning_icon, GlobalSearch* engine, SearchProvider* provider, QWidget* parent) - : QWidget(parent), - ui_(new Ui_SearchProviderStatusWidget), - engine_(engine), - provider_(provider) -{ + : QWidget(parent), + ui_(new Ui_SearchProviderStatusWidget), + engine_(engine), + provider_(provider) { ui_->setupUi(this); ui_->icon->setPixmap(provider->icon().pixmap(16)); @@ -44,23 +42,23 @@ SearchProviderStatusWidget::SearchProviderStatusWidget( if (enabled && logged_in) { ui_->disabled_group->hide(); } else { - const QString disabled_text = tr("Disabled", "Refers to search provider's status."); + const QString disabled_text = + tr("Disabled", "Refers to search provider's status."); const QString not_logged_in_text = tr("Not logged in"); - const int disabled_width = fontMetrics().width(" ") + qMax( - fontMetrics().width(disabled_text), - fontMetrics().width(not_logged_in_text)); + const int disabled_width = fontMetrics().width(" ") + + qMax(fontMetrics().width(disabled_text), + fontMetrics().width(not_logged_in_text)); ui_->disabled_reason->setMinimumWidth(disabled_width); - ui_->disabled_reason->setText(logged_in ? disabled_text : not_logged_in_text); + ui_->disabled_reason->setText(logged_in ? disabled_text + : not_logged_in_text); ui_->disabled_icon->setPixmap(warning_icon.pixmap(16)); ui_->disabled_reason->installEventFilter(this); } } -SearchProviderStatusWidget::~SearchProviderStatusWidget() { - delete ui_; -} +SearchProviderStatusWidget::~SearchProviderStatusWidget() { delete ui_; } bool SearchProviderStatusWidget::eventFilter(QObject* object, QEvent* event) { if (object != ui_->disabled_reason) { @@ -70,30 +68,31 @@ bool SearchProviderStatusWidget::eventFilter(QObject* object, QEvent* event) { QFont font(ui_->disabled_reason->font()); switch (event->type()) { - case QEvent::Enter: - font.setUnderline(true); - ui_->disabled_reason->setFont(font); - break; + case QEvent::Enter: + font.setUnderline(true); + ui_->disabled_reason->setFont(font); + break; - case QEvent::Leave: - font.setUnderline(false); - ui_->disabled_reason->setFont(font); - break; + case QEvent::Leave: + font.setUnderline(false); + ui_->disabled_reason->setFont(font); + break; - case QEvent::MouseButtonRelease: { - QMouseEvent* e = static_cast(event); - if (e->button() == Qt::LeftButton) { - if (!provider_->IsLoggedIn()) { - provider_->ShowConfig(); - } else { - engine_->application()->OpenSettingsDialogAtPage(SettingsDialog::Page_GlobalSearch); + case QEvent::MouseButtonRelease: { + QMouseEvent* e = static_cast(event); + if (e->button() == Qt::LeftButton) { + if (!provider_->IsLoggedIn()) { + provider_->ShowConfig(); + } else { + engine_->application()->OpenSettingsDialogAtPage( + SettingsDialog::Page_GlobalSearch); + } } + break; } - break; - } - default: - return false; + default: + return false; } return true; diff --git a/src/globalsearch/searchproviderstatuswidget.h b/src/globalsearch/searchproviderstatuswidget.h index a16cbd1ce..16946715a 100644 --- a/src/globalsearch/searchproviderstatuswidget.h +++ b/src/globalsearch/searchproviderstatuswidget.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,19 +25,18 @@ class SearchProvider; class Ui_SearchProviderStatusWidget; class SearchProviderStatusWidget : public QWidget { -public: - SearchProviderStatusWidget(const QIcon& warning_icon, - GlobalSearch* engine, SearchProvider* provider, - QWidget* parent = 0); + public: + SearchProviderStatusWidget(const QIcon& warning_icon, GlobalSearch* engine, + SearchProvider* provider, QWidget* parent = nullptr); ~SearchProviderStatusWidget(); bool eventFilter(QObject* object, QEvent* event); - -private: + + private: Ui_SearchProviderStatusWidget* ui_; GlobalSearch* engine_; SearchProvider* provider_; }; -#endif // SEARCHPROVIDERSTATUSWIDGET_H +#endif // SEARCHPROVIDERSTATUSWIDGET_H diff --git a/src/globalsearch/simplesearchprovider.cpp b/src/globalsearch/simplesearchprovider.cpp index 84e715368..ff7784848 100644 --- a/src/globalsearch/simplesearchprovider.cpp +++ b/src/globalsearch/simplesearchprovider.cpp @@ -19,31 +19,24 @@ #include "core/logging.h" #include "playlist/songmimedata.h" - const int SimpleSearchProvider::kDefaultResultLimit = 6; -SimpleSearchProvider::Item::Item(const QString& title, const QUrl& url, const QString& keyword) - : keyword_(keyword) -{ +SimpleSearchProvider::Item::Item(const QString& title, const QUrl& url, + const QString& keyword) + : keyword_(keyword) { metadata_.set_title(title); metadata_.set_url(url); } SimpleSearchProvider::Item::Item(const Song& song, const QString& keyword) - : keyword_(keyword), - metadata_(song) -{ -} - + : keyword_(keyword), metadata_(song) {} SimpleSearchProvider::SimpleSearchProvider(Application* app, QObject* parent) - : BlockingSearchProvider(app, parent), - result_limit_(kDefaultResultLimit), - max_suggestion_count_(-1), - items_dirty_(true), - has_searched_before_(false) -{ -} + : BlockingSearchProvider(app, parent), + result_limit_(kDefaultResultLimit), + max_suggestion_count_(-1), + items_dirty_(true), + has_searched_before_(false) {} void SimpleSearchProvider::MaybeRecreateItems() { if (has_searched_before_) { @@ -53,7 +46,8 @@ void SimpleSearchProvider::MaybeRecreateItems() { } } -SearchProvider::ResultList SimpleSearchProvider::Search(int id, const QString& query) { +SearchProvider::ResultList SimpleSearchProvider::Search(int id, + const QString& query) { Q_UNUSED(id) if (items_dirty_) { @@ -67,9 +61,9 @@ SearchProvider::ResultList SimpleSearchProvider::Search(int id, const QString& q const QStringList tokens = TokenizeQuery(query); QMutexLocker l(&items_mutex_); - foreach (const Item& item, items_) { + for (const Item& item : items_) { bool matched = true; - foreach (const QString& token, tokens) { + for (const QString& token : tokens) { if (!item.keyword_.contains(token, Qt::CaseInsensitive) && !item.metadata_.title().contains(token, Qt::CaseInsensitive) && !safe_words_.contains(token, Qt::CaseInsensitive)) { @@ -85,8 +79,7 @@ SearchProvider::ResultList SimpleSearchProvider::Search(int id, const QString& q ret << result; } - if (ret.count() >= result_limit_) - break; + if (ret.count() >= result_limit_) break; } return ret; @@ -95,7 +88,7 @@ SearchProvider::ResultList SimpleSearchProvider::Search(int id, const QString& q void SimpleSearchProvider::SetItems(const ItemList& items) { QMutexLocker l(&items_mutex_); items_ = items; - for (ItemList::iterator it = items_.begin() ; it != items_.end() ; ++it) { + for (ItemList::iterator it = items_.begin(); it != items_.end(); ++it) { it->metadata_.set_filetype(Song::Type_Stream); } } @@ -108,19 +101,16 @@ QStringList SimpleSearchProvider::GetSuggestions(int count) { QStringList ret; QMutexLocker l(&items_mutex_); - if (items_.isEmpty()) - return ret; + if (items_.isEmpty()) return ret; - for (int attempt=0 ; attempt= count) { break; } const Item& item = items_[qrand() % items_.count()]; - if (!item.keyword_.isEmpty()) - ret << item.keyword_; - if (!item.metadata_.title().isEmpty()) - ret << item.metadata_.title(); + if (!item.keyword_.isEmpty()) ret << item.keyword_; + if (!item.metadata_.title().isEmpty()) ret << item.metadata_.title(); } return ret; diff --git a/src/globalsearch/simplesearchprovider.h b/src/globalsearch/simplesearchprovider.h index 10d24260f..26bc743a4 100644 --- a/src/globalsearch/simplesearchprovider.h +++ b/src/globalsearch/simplesearchprovider.h @@ -23,7 +23,7 @@ class SimpleSearchProvider : public BlockingSearchProvider { Q_OBJECT -public: + public: SimpleSearchProvider(Application* app, QObject* parent); static const int kDefaultResultLimit; @@ -34,13 +34,13 @@ public: // SearchProvider QStringList GetSuggestions(int count); -protected slots: + protected slots: // Calls RecreateItems now if the user has done a global search with this // provider at least once before. Otherwise will schedule RecreateItems the // next time the user does a search. void MaybeRecreateItems(); -protected: + protected: struct Item { Item() {} Item(const QString& title, const QUrl& url, @@ -56,7 +56,9 @@ protected: void set_result_limit(int result_limit) { result_limit_ = result_limit; } void set_max_suggestion_count(int count) { max_suggestion_count_ = count; } QStringList safe_words() const { return safe_words_; } - void set_safe_words(const QStringList& safe_words) { safe_words_ = safe_words; } + void set_safe_words(const QStringList& safe_words) { + safe_words_ = safe_words; + } void SetItems(const ItemList& items); @@ -64,7 +66,7 @@ protected: // call SetItems with the new list. virtual void RecreateItems() = 0; -private: + private: int result_limit_; QStringList safe_words_; int max_suggestion_count_; @@ -76,4 +78,4 @@ private: bool has_searched_before_; }; -#endif // SIMPLESEARCHPROVIDER_H +#endif // SIMPLESEARCHPROVIDER_H diff --git a/src/globalsearch/somafmsearchprovider.cpp b/src/globalsearch/somafmsearchprovider.cpp index 207e26b4b..80833d8dd 100644 --- a/src/globalsearch/somafmsearchprovider.cpp +++ b/src/globalsearch/somafmsearchprovider.cpp @@ -18,12 +18,11 @@ #include "somafmsearchprovider.h" #include "internet/somafmservice.h" -SomaFMSearchProvider::SomaFMSearchProvider( - SomaFMServiceBase* service, Application* app, QObject* parent) - : SimpleSearchProvider(app, parent), - service_(service) -{ - Init(service->name(), service->url_scheme(), service->icon(), CanGiveSuggestions); +SomaFMSearchProvider::SomaFMSearchProvider(SomaFMServiceBase* service, + Application* app, QObject* parent) + : SimpleSearchProvider(app, parent), service_(service) { + Init(service->name(), service->url_scheme(), service->icon(), + CanGiveSuggestions); set_result_limit(3); set_max_suggestion_count(3); icon_ = ScaleAndPad( @@ -33,8 +32,7 @@ SomaFMSearchProvider::SomaFMSearchProvider( // Load the stream list on startup only if it doesn't involve going to update // info from the server. - if (!service_->IsStreamListStale()) - RecreateItems(); + if (!service_->IsStreamListStale()) RecreateItems(); } void SomaFMSearchProvider::LoadArtAsync(int id, const Result& result) { @@ -44,7 +42,7 @@ void SomaFMSearchProvider::LoadArtAsync(int id, const Result& result) { void SomaFMSearchProvider::RecreateItems() { QList items; - foreach (const SomaFMService::Stream& stream, service_->Streams()) { + for (const SomaFMService::Stream& stream : service_->Streams()) { Item item; item.metadata_ = stream.ToSong(service_->name()); item.keyword_ = stream.title_; diff --git a/src/globalsearch/somafmsearchprovider.h b/src/globalsearch/somafmsearchprovider.h index 5bd2f1971..40df8bf19 100644 --- a/src/globalsearch/somafmsearchprovider.h +++ b/src/globalsearch/somafmsearchprovider.h @@ -23,17 +23,18 @@ class SomaFMServiceBase; class SomaFMSearchProvider : public SimpleSearchProvider { -public: - SomaFMSearchProvider(SomaFMServiceBase* service, Application* app, QObject* parent); + public: + SomaFMSearchProvider(SomaFMServiceBase* service, Application* app, + QObject* parent); void LoadArtAsync(int id, const Result& result); -protected: + protected: void RecreateItems(); -private: + private: SomaFMServiceBase* service_; QImage icon_; }; -#endif // SOMAFMSEARCHPROVIDER_H +#endif // SOMAFMSEARCHPROVIDER_H diff --git a/src/globalsearch/soundcloudsearchprovider.cpp b/src/globalsearch/soundcloudsearchprovider.cpp index d79525814..296c0c4d3 100644 --- a/src/globalsearch/soundcloudsearchprovider.cpp +++ b/src/globalsearch/soundcloudsearchprovider.cpp @@ -24,17 +24,15 @@ #include "covers/albumcoverloader.h" #include "internet/soundcloudservice.h" -SoundCloudSearchProvider::SoundCloudSearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent), - service_(NULL) -{ -} +SoundCloudSearchProvider::SoundCloudSearchProvider(Application* app, + QObject* parent) + : SearchProvider(app, parent), service_(nullptr) {} void SoundCloudSearchProvider::Init(SoundCloudService* service) { service_ = service; - SearchProvider::Init("SoundCloud", "soundcloud", - QIcon(":providers/soundcloud.png"), - WantsDelayedQueries | ArtIsProbablyRemote | CanShowConfig); + SearchProvider::Init( + "SoundCloud", "soundcloud", QIcon(":providers/soundcloud.png"), + WantsDelayedQueries | ArtIsProbablyRemote | CanShowConfig); connect(service_, SIGNAL(SimpleSearchResults(int, SongList)), SLOT(SearchDone(int, SongList))); @@ -43,14 +41,14 @@ void SoundCloudSearchProvider::Init(SoundCloudService* service) { cover_loader_options_.pad_output_image_ = true; cover_loader_options_.scale_output_image_ = true; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64, QImage)), + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), SLOT(AlbumArtLoaded(quint64, QImage))); } void SoundCloudSearchProvider::SearchAsync(int id, const QString& query) { const int service_id = service_->SimpleSearch(query); - pending_searches_[service_id] = PendingState(id, TokenizeQuery(query));; + pending_searches_[service_id] = PendingState(id, TokenizeQuery(query)); + ; } void SoundCloudSearchProvider::SearchDone(int id, const SongList& songs) { @@ -59,7 +57,7 @@ void SoundCloudSearchProvider::SearchDone(int id, const SongList& songs) { const int global_search_id = state.orig_id_; ResultList ret; - foreach (const Song& song, songs) { + for (const Song& song : songs) { Result result(this); result.metadata_ = song; @@ -78,7 +76,7 @@ void SoundCloudSearchProvider::MaybeSearchFinished(int id) { void SoundCloudSearchProvider::LoadArtAsync(int id, const Result& result) { quint64 loader_id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, result.metadata_); + cover_loader_options_, result.metadata_); cover_loader_tasks_[loader_id] = id; } diff --git a/src/globalsearch/soundcloudsearchprovider.h b/src/globalsearch/soundcloudsearchprovider.h index 7ef38a334..062b69c55 100644 --- a/src/globalsearch/soundcloudsearchprovider.h +++ b/src/globalsearch/soundcloudsearchprovider.h @@ -28,7 +28,7 @@ class SoundCloudSearchProvider : public SearchProvider { Q_OBJECT public: - explicit SoundCloudSearchProvider(Application* app, QObject* parent = 0); + explicit SoundCloudSearchProvider(Application* app, QObject* parent = nullptr); void Init(SoundCloudService* service); // SearchProvider diff --git a/src/globalsearch/spotifysearchprovider.cpp b/src/globalsearch/spotifysearchprovider.cpp index 0dfc6bdd4..c1b2e25aa 100644 --- a/src/globalsearch/spotifysearchprovider.cpp +++ b/src/globalsearch/spotifysearchprovider.cpp @@ -18,9 +18,7 @@ #include "spotifysearchprovider.h" #include - -#include -#include +#include #include "core/logging.h" #include "internet/internetmodel.h" @@ -34,42 +32,36 @@ const int kSearchAlbumLimit = 20; } SpotifySearchProvider::SpotifySearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent), - server_(NULL), - service_(NULL) -{ + : SearchProvider(app, parent), server_(nullptr), service_(nullptr) { Init("Spotify", "spotify", QIcon(":icons/32x32/spotify.png"), WantsDelayedQueries | WantsSerialisedArtQueries | ArtIsProbablyRemote | - CanShowConfig | CanGiveSuggestions); + CanShowConfig | CanGiveSuggestions); } SpotifyServer* SpotifySearchProvider::server() { - if (server_) - return server_; + if (server_) return server_; - if (!service_) - service_ = InternetModel::Service(); + if (!service_) service_ = InternetModel::Service(); if (service_->login_state() != SpotifyService::LoginState_LoggedIn) - return NULL; + return nullptr; server_ = service_->server(); connect(server_, SIGNAL(SearchResults(pb::spotify::SearchResponse)), SLOT(SearchFinishedSlot(pb::spotify::SearchResponse))); - connect(server_, SIGNAL(ImageLoaded(QString,QImage)), - SLOT(ArtLoadedSlot(QString,QImage))); + connect(server_, SIGNAL(ImageLoaded(QString, QImage)), + SLOT(ArtLoadedSlot(QString, QImage))); connect(server_, SIGNAL(destroyed()), SLOT(ServerDestroyed())); connect(server_, SIGNAL(StarredLoaded(pb::spotify::LoadPlaylistResponse)), SLOT(SuggestionsLoaded(pb::spotify::LoadPlaylistResponse))); - connect(server_, SIGNAL(ToplistBrowseResults(pb::spotify::BrowseToplistResponse)), + connect(server_, + SIGNAL(ToplistBrowseResults(pb::spotify::BrowseToplistResponse)), SLOT(SuggestionsLoaded(pb::spotify::BrowseToplistResponse))); return server_; } -void SpotifySearchProvider::ServerDestroyed() { - server_ = NULL; -} +void SpotifySearchProvider::ServerDestroyed() { server_ = nullptr; } void SpotifySearchProvider::SearchAsync(int id, const QString& query) { SpotifyServer* s = server(); @@ -87,17 +79,17 @@ void SpotifySearchProvider::SearchAsync(int id, const QString& query) { queries_[query_string] = state; } -void SpotifySearchProvider::SearchFinishedSlot(const pb::spotify::SearchResponse& response) { +void SpotifySearchProvider::SearchFinishedSlot( + const pb::spotify::SearchResponse& response) { QString query_string = QString::fromUtf8(response.request().query().c_str()); QMap::iterator it = queries_.find(query_string); - if (it == queries_.end()) - return; + if (it == queries_.end()) return; PendingState state = it.value(); queries_.erase(it); ResultList ret; - for (int i=0; i < response.result_size() ; ++i) { + for (int i = 0; i < response.result_size(); ++i) { const pb::spotify::Track& track = response.result(i); Result result(this); @@ -106,10 +98,10 @@ void SpotifySearchProvider::SearchFinishedSlot(const pb::spotify::SearchResponse ret << result; } - for (int i=0 ; iLoadImage(image_id); } -void SpotifySearchProvider::ArtLoadedSlot(const QString& id, const QImage& image) { +void SpotifySearchProvider::ArtLoadedSlot(const QString& id, + const QImage& image) { QMap::iterator it = pending_art_.find(id); - if (it == pending_art_.end()) - return; + if (it == pending_art_.end()) return; const int orig_id = it.value(); pending_art_.erase(it); @@ -219,8 +210,8 @@ QStringList SpotifySearchProvider::GetSuggestions(int count) { QStringList all_suggestions = suggestions_.toList(); - boost::mt19937 gen(std::time(0)); - boost::uniform_int<> random(0, all_suggestions.size() - 1); + std::mt19937 gen(std::time(0)); + std::uniform_int_distribution<> random(0, all_suggestions.size() - 1); QSet candidates; diff --git a/src/globalsearch/spotifysearchprovider.h b/src/globalsearch/spotifysearchprovider.h index b8f5fdba0..66dd5b4a8 100644 --- a/src/globalsearch/spotifysearchprovider.h +++ b/src/globalsearch/spotifysearchprovider.h @@ -24,12 +24,11 @@ class SpotifyServer; class SpotifyService; - class SpotifySearchProvider : public SearchProvider { Q_OBJECT -public: - SpotifySearchProvider(Application* app, QObject* parent = 0); + public: + SpotifySearchProvider(Application* app, QObject* parent = nullptr); void SearchAsync(int id, const QString& query); void LoadArtAsync(int id, const Result& result); @@ -38,21 +37,21 @@ public: bool IsLoggedIn(); void ShowConfig(); -private slots: + private slots: void ServerDestroyed(); void SearchFinishedSlot(const pb::spotify::SearchResponse& response); void ArtLoadedSlot(const QString& id, const QImage& image); void SuggestionsLoaded(const pb::spotify::LoadPlaylistResponse& response); void SuggestionsLoaded(const pb::spotify::BrowseToplistResponse& response); -private: + private: SpotifyServer* server(); void LoadSuggestions(); void AddSuggestionFromTrack(const pb::spotify::Track& track); void AddSuggestionFromAlbum(const pb::spotify::Album& album); -private: + private: SpotifyServer* server_; SpotifyService* service_; @@ -63,4 +62,4 @@ private: QSet suggestions_; }; -#endif // SPOTIFYSEARCHPROVIDER_H +#endif // SPOTIFYSEARCHPROVIDER_H diff --git a/src/globalsearch/suggestionwidget.cpp b/src/globalsearch/suggestionwidget.cpp index d22848ee5..cfcc232fa 100644 --- a/src/globalsearch/suggestionwidget.cpp +++ b/src/globalsearch/suggestionwidget.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,18 +22,14 @@ #include SuggestionWidget::SuggestionWidget(const QIcon& search_icon, QWidget* parent) - : QWidget(parent), - ui_(new Ui_SuggestionWidget) -{ + : QWidget(parent), ui_(new Ui_SuggestionWidget) { ui_->setupUi(this); ui_->icon->setPixmap(search_icon.pixmap(16)); ui_->name->installEventFilter(this); } -SuggestionWidget::~SuggestionWidget() { - delete ui_; -} +SuggestionWidget::~SuggestionWidget() { delete ui_; } void SuggestionWidget::SetText(const QString& text) { ui_->name->setText(text); @@ -47,29 +43,29 @@ bool SuggestionWidget::eventFilter(QObject* object, QEvent* event) { QFont font(ui_->name->font()); switch (event->type()) { - case QEvent::Enter: - font.setUnderline(true); - ui_->name->setFont(font); - break; + case QEvent::Enter: + font.setUnderline(true); + ui_->name->setFont(font); + break; - case QEvent::Leave: - font.setUnderline(false); - ui_->name->setFont(font); - break; + case QEvent::Leave: + font.setUnderline(false); + ui_->name->setFont(font); + break; - case QEvent::MouseButtonRelease: { - QMouseEvent* e = static_cast(event); - if (e->button() == Qt::LeftButton) { - QString text = ui_->name->text(); - text.replace(QRegExp("\\W"), " "); + case QEvent::MouseButtonRelease: { + QMouseEvent* e = static_cast(event); + if (e->button() == Qt::LeftButton) { + QString text = ui_->name->text(); + text.replace(QRegExp("\\W"), " "); - emit SuggestionClicked(text.simplified()); + emit SuggestionClicked(text.simplified()); + } + break; } - break; - } - default: - return false; + default: + return false; } return true; diff --git a/src/globalsearch/suggestionwidget.h b/src/globalsearch/suggestionwidget.h index 850dfced5..0b8e329e7 100644 --- a/src/globalsearch/suggestionwidget.h +++ b/src/globalsearch/suggestionwidget.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,20 +25,20 @@ class Ui_SuggestionWidget; class SuggestionWidget : public QWidget { Q_OBJECT -public: - SuggestionWidget(const QIcon& search_icon, QWidget* parent = 0); + public: + SuggestionWidget(const QIcon& search_icon, QWidget* parent = nullptr); ~SuggestionWidget(); bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: void SetText(const QString& text); signals: void SuggestionClicked(const QString& query); - -private: + + private: Ui_SuggestionWidget* ui_; }; -#endif // SUGGESTIONWIDGET_H +#endif // SUGGESTIONWIDGET_H diff --git a/src/globalsearch/urlsearchprovider.cpp b/src/globalsearch/urlsearchprovider.cpp index c14c150ad..82f8f20a3 100644 --- a/src/globalsearch/urlsearchprovider.cpp +++ b/src/globalsearch/urlsearchprovider.cpp @@ -25,9 +25,7 @@ const char* UrlSearchProvider::kUrlRegex = "^[a-zA-Z][a-zA-Z0-9+-.]*://"; UrlSearchProvider::UrlSearchProvider(Application* app, QObject* parent) - : SearchProvider(app, parent), - url_regex_(kUrlRegex) -{ + : SearchProvider(app, parent), url_regex_(kUrlRegex) { QIcon icon = IconLoader::Load("applications-internet"); image_ = ScaleAndPad(icon.pixmap(kArtHeight, kArtHeight).toImage()); diff --git a/src/globalsearch/urlsearchprovider.h b/src/globalsearch/urlsearchprovider.h index 1ce91cc61..0f982dcc0 100644 --- a/src/globalsearch/urlsearchprovider.h +++ b/src/globalsearch/urlsearchprovider.h @@ -23,7 +23,7 @@ #include class UrlSearchProvider : public SearchProvider { -public: + public: UrlSearchProvider(Application* app, QObject* parent); bool LooksLikeUrl(const QString& query) const; @@ -31,11 +31,11 @@ public: void SearchAsync(int id, const QString& query); void LoadArtAsync(int id, const Result& result); -private: + private: static const char* kUrlRegex; QRegExp url_regex_; QImage image_; }; -#endif // URLSEARCHPROVIDER_H +#endif // URLSEARCHPROVIDER_H diff --git a/src/globalsearch/vksearchprovider.cpp b/src/globalsearch/vksearchprovider.cpp new file mode 100644 index 000000000..b12a65551 --- /dev/null +++ b/src/globalsearch/vksearchprovider.cpp @@ -0,0 +1,121 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#include "vksearchprovider.h" + +#include + +#include "core/logging.h" +#include "core/song.h" + +VkSearchProvider::VkSearchProvider(Application* app, QObject* parent) + : SearchProvider(app, parent), service_(NULL) {} + +void VkSearchProvider::Init(VkService* service) { + service_ = service; + SearchProvider::Init("Vk.com", "vk.com", QIcon(":providers/vk.png"), + WantsDelayedQueries | CanShowConfig); + + connect(service_, SIGNAL(SongSearchResult(SearchID, SongList)), this, + SLOT(SongSearchResult(SearchID, SongList))); + connect(service_, SIGNAL(GroupSearchResult(SearchID, MusicOwnerList)), this, + SLOT(GroupSearchResult(SearchID, MusicOwnerList))); +} + +void VkSearchProvider::SearchAsync(int id, const QString& query) { + int count = service_->maxGlobalSearch(); + + SearchID rid(SearchID::GlobalSearch); + songs_recived = false; + groups_recived = false; + pending_searches_[rid.id()] = PendingState(id, TokenizeQuery(query)); + service_->SongSearch(rid, query, count, 0); + if (service_->isGroupsInGlobalSearch()) { + service_->GroupSearch(rid, query); + } +} + +bool VkSearchProvider::IsLoggedIn() { + return (service_ && service_->HasAccount()); +} + +void VkSearchProvider::ShowConfig() { service_->ShowConfig(); } + +void VkSearchProvider::SongSearchResult(const SearchID& id, SongList songs) { + if (id.type() == SearchID::GlobalSearch) { + ClearSimilarSongs(songs); + ResultList ret; + for (const Song& song : songs) { + Result result(this); + result.metadata_ = song; + ret << result; + } + qLog(Info) << "Found" << songs.count() << "songs."; + songs_recived = true; + const PendingState state = pending_searches_[id.id()]; + emit ResultsAvailable(state.orig_id_, ret); + MaybeSearchFinished(id.id()); + } +} + +void VkSearchProvider::GroupSearchResult(const SearchID& rid, + const MusicOwnerList& groups) { + if (rid.type() == SearchID::GlobalSearch) { + ResultList ret; + for (const MusicOwner& group : groups) { + Result result(this); + result.metadata_ = group.toOwnerRadio(); + ret << result; + } + qLog(Info) << "Found" << groups.count() << "groups."; + groups_recived = true; + const PendingState state = pending_searches_[rid.id()]; + emit ResultsAvailable(state.orig_id_, ret); + MaybeSearchFinished(rid.id()); + } +} + +void VkSearchProvider::MaybeSearchFinished(int id) { + if (pending_searches_.keys(PendingState(id, QStringList())).isEmpty() && + songs_recived && groups_recived) { + const PendingState state = pending_searches_.take(id); + emit SearchFinished(state.orig_id_); + } +} + +void VkSearchProvider::ClearSimilarSongs(SongList& list) { + // Search result sorted by relevance, and better quality songs usualy come + // first. + // Stable sort don't mix similar song, so std::unique will remove bad quality + // copies. + qStableSort(list.begin(), list.end(), [](const Song& a, const Song& b) { + return (a.artist().localeAwareCompare(b.artist()) > 0) || + (a.title().localeAwareCompare(b.title()) > 0); + }); + + int old = list.count(); + + auto end = + std::unique(list.begin(), list.end(), [](const Song& a, const Song& b) { + return (a.artist().localeAwareCompare(b.artist()) == 0) && + (a.title().localeAwareCompare(b.title()) == 0); + }); + + list.erase(end, list.end()); + + qDebug() << "Cleared" << old - list.count() << "items"; +} diff --git a/src/globalsearch/vksearchprovider.h b/src/globalsearch/vksearchprovider.h new file mode 100644 index 000000000..4a4e91067 --- /dev/null +++ b/src/globalsearch/vksearchprovider.h @@ -0,0 +1,50 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + + +#ifndef VKSEARCHPROVIDER_H +#define VKSEARCHPROVIDER_H + +#include "internet/vkservice.h" + +#include "searchprovider.h" + +class VkSearchProvider : public SearchProvider { + Q_OBJECT + +public: + VkSearchProvider(Application* app, QObject* parent = 0); + void Init(VkService* service); + void SearchAsync(int id, const QString& query); + bool IsLoggedIn(); + void ShowConfig(); + InternetService* internet_service() { return service_; } + +public slots: + void SongSearchResult(const SearchID& id, SongList songs); + void GroupSearchResult(const SearchID& rid, const MusicOwnerList& groups); + +private: + bool songs_recived; + bool groups_recived; + void MaybeSearchFinished(int id); + void ClearSimilarSongs(SongList& list); + VkService* service_; + QMap pending_searches_; +}; + +#endif // VKSEARCHPROVIDER_H diff --git a/src/internet/boxservice.cpp b/src/internet/boxservice.cpp index 066e7b213..56b19ef46 100644 --- a/src/internet/boxservice.cpp +++ b/src/internet/boxservice.cpp @@ -17,37 +17,25 @@ namespace { static const char* kClientId = "gbswb9wp7gjyldc3qrw68h2rk68jaf4h"; static const char* kClientSecret = "pZ6cUCQz5X0xaWoPVbCDg6GpmfTtz73s"; -static const char* kOAuthEndpoint = - "https://api.box.com/oauth2/authorize"; -static const char* kOAuthTokenEndpoint = - "https://api.box.com/oauth2/token"; +static const char* kOAuthEndpoint = "https://api.box.com/oauth2/authorize"; +static const char* kOAuthTokenEndpoint = "https://api.box.com/oauth2/token"; -static const char* kUserInfo = - "https://api.box.com/2.0/users/me"; -static const char* kFolderItems = - "https://api.box.com/2.0/folders/%1/items"; +static const char* kUserInfo = "https://api.box.com/2.0/users/me"; +static const char* kFolderItems = "https://api.box.com/2.0/folders/%1/items"; static const int kRootFolderId = 0; -static const char* kFileContent = - "https://api.box.com/2.0/files/%1/content"; - -static const char* kEvents = - "https://api.box.com/2.0/events"; +static const char* kFileContent = "https://api.box.com/2.0/files/%1/content"; +static const char* kEvents = "https://api.box.com/2.0/events"; } BoxService::BoxService(Application* app, InternetModel* parent) - : CloudFileService( - app, parent, - kServiceName, kSettingsGroup, - QIcon(":/providers/box.png"), - SettingsDialog::Page_Box) { + : CloudFileService(app, parent, kServiceName, kSettingsGroup, + QIcon(":/providers/box.png"), SettingsDialog::Page_Box) { app->player()->RegisterUrlHandler(new BoxUrlHandler(this, this)); } -bool BoxService::has_credentials() const { - return !refresh_token().isEmpty(); -} +bool BoxService::has_credentials() const { return !refresh_token().isEmpty(); } QString BoxService::refresh_token() const { QSettings s; @@ -58,7 +46,7 @@ QString BoxService::refresh_token() const { bool BoxService::is_authenticated() const { return !access_token_.isEmpty() && - QDateTime::currentDateTime().secsTo(expiry_time_) > 0; + QDateTime::currentDateTime().secsTo(expiry_time_) > 0; } void BoxService::EnsureConnected() { @@ -74,17 +62,14 @@ void BoxService::Connect() { OAuthenticator* oauth = new OAuthenticator( kClientId, kClientSecret, OAuthenticator::RedirectStyle::REMOTE, this); if (!refresh_token().isEmpty()) { - oauth->RefreshAuthorisation( - kOAuthTokenEndpoint, refresh_token()); + oauth->RefreshAuthorisation(kOAuthTokenEndpoint, refresh_token()); } else { - oauth->StartAuthorisation( - kOAuthEndpoint, - kOAuthTokenEndpoint, - QString::null); + oauth->StartAuthorisation(kOAuthEndpoint, kOAuthTokenEndpoint, + QString::null); } - NewClosure(oauth, SIGNAL(Finished()), - this, SLOT(ConnectFinished(OAuthenticator*)), oauth); + NewClosure(oauth, SIGNAL(Finished()), this, + SLOT(ConnectFinished(OAuthenticator*)), oauth); } void BoxService::ConnectFinished(OAuthenticator* oauth) { @@ -103,8 +88,8 @@ void BoxService::ConnectFinished(OAuthenticator* oauth) { AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); } else { emit Connected(); } @@ -112,8 +97,8 @@ void BoxService::ConnectFinished(OAuthenticator* oauth) { } void BoxService::AddAuthorizationHeader(QNetworkRequest* request) const { - request->setRawHeader( - "Authorization", QString("Bearer %1").arg(access_token_).toUtf8()); + request->setRawHeader("Authorization", + QString("Bearer %1").arg(access_token_).toUtf8()); } void BoxService::FetchUserInfoFinished(QNetworkReply* reply) { @@ -161,8 +146,8 @@ void BoxService::InitialiseEventsCursor() { QNetworkRequest request(url); AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(InitialiseEventsFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(InitialiseEventsFinished(QNetworkReply*)), reply); } void BoxService::InitialiseEventsFinished(QNetworkReply* reply) { @@ -176,7 +161,8 @@ void BoxService::InitialiseEventsFinished(QNetworkReply* reply) { } } -void BoxService::FetchRecursiveFolderItems(const int folder_id, const int offset) { +void BoxService::FetchRecursiveFolderItems(const int folder_id, + const int offset) { QUrl url(QString(kFolderItems).arg(folder_id)); QStringList fields; fields << "etag" @@ -191,13 +177,13 @@ void BoxService::FetchRecursiveFolderItems(const int folder_id, const int offset QNetworkRequest request(url); AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchFolderItemsFinished(QNetworkReply*, int)), - reply, folder_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchFolderItemsFinished(QNetworkReply*, int)), reply, + folder_id); } -void BoxService::FetchFolderItemsFinished( - QNetworkReply* reply, const int folder_id) { +void BoxService::FetchFolderItemsFinished(QNetworkReply* reply, + const int folder_id) { reply->deleteLater(); QByteArray data = reply->readAll(); @@ -213,7 +199,7 @@ void BoxService::FetchFolderItemsFinished( FetchRecursiveFolderItems(folder_id, offset + entries.size()); } - foreach (const QVariant& e, entries) { + for (const QVariant& e : entries) { QVariantMap entry = e.toMap(); if (entry["type"].toString() == "folder") { FetchRecursiveFolderItems(entry["id"].toInt()); @@ -238,9 +224,9 @@ void BoxService::MaybeAddFileEntry(const QVariantMap& entry) { // This is actually a redirect. Follow it now. QNetworkReply* reply = FetchContentUrlForFile(entry["id"].toString()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RedirectFollowed(QNetworkReply*, Song, QString)), - reply, song, mime_type); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RedirectFollowed(QNetworkReply*, Song, QString)), reply, song, + mime_type); } QNetworkReply* BoxService::FetchContentUrlForFile(const QString& file_id) { @@ -251,20 +237,18 @@ QNetworkReply* BoxService::FetchContentUrlForFile(const QString& file_id) { return reply; } -void BoxService::RedirectFollowed( - QNetworkReply* reply, const Song& song, const QString& mime_type) { +void BoxService::RedirectFollowed(QNetworkReply* reply, const Song& song, + const QString& mime_type) { reply->deleteLater(); - QVariant redirect = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + QVariant redirect = + reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (!redirect.isValid()) { return; } QUrl real_url = redirect.toUrl(); - MaybeAddFileToDatabase( - song, - mime_type, - real_url, - QString("Bearer %1").arg(access_token_)); + MaybeAddFileToDatabase(song, mime_type, real_url, + QString("Bearer %1").arg(access_token_)); } void BoxService::UpdateFilesFromCursor(const QString& cursor) { @@ -274,8 +258,8 @@ void BoxService::UpdateFilesFromCursor(const QString& cursor) { QNetworkRequest request(url); AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchEventsFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchEventsFinished(QNetworkReply*)), reply); } void BoxService::FetchEventsFinished(QNetworkReply* reply) { @@ -289,7 +273,7 @@ void BoxService::FetchEventsFinished(QNetworkReply* reply) { s.setValue("cursor", response["next_stream_position"]); QVariantList entries = response["entries"].toList(); - foreach (const QVariant& e, entries) { + for (const QVariant& e : entries) { QVariantMap event = e.toMap(); QString type = event["event_type"].toString(); QVariantMap source = event["source"].toMap(); diff --git a/src/internet/boxservice.h b/src/internet/boxservice.h index 084aa8875..97a822b24 100644 --- a/src/internet/boxservice.h +++ b/src/internet/boxservice.h @@ -24,15 +24,15 @@ class BoxService : public CloudFileService { void Connect(); void ForgetCredentials(); - signals: +signals: void Connected(); private slots: void ConnectFinished(OAuthenticator* oauth); void FetchUserInfoFinished(QNetworkReply* reply); void FetchFolderItemsFinished(QNetworkReply* reply, const int folder_id); - void RedirectFollowed( - QNetworkReply* reply, const Song& song, const QString& mime_type); + void RedirectFollowed(QNetworkReply* reply, const Song& song, + const QString& mime_type); void InitialiseEventsFinished(QNetworkReply* reply); void FetchEventsFinished(QNetworkReply* reply); diff --git a/src/internet/boxsettingspage.cpp b/src/internet/boxsettingspage.cpp index 3874829a5..f8889469a 100644 --- a/src/internet/boxsettingspage.cpp +++ b/src/internet/boxsettingspage.cpp @@ -26,10 +26,9 @@ #include "ui/settingsdialog.h" BoxSettingsPage::BoxSettingsPage(SettingsDialog* parent) - : SettingsPage(parent), - ui_(new Ui::BoxSettingsPage), - service_(dialog()->app()->internet_model()->Service()) -{ + : SettingsPage(parent), + ui_(new Ui::BoxSettingsPage), + service_(dialog()->app()->internet_model()->Service()) { ui_->setupUi(this); ui_->login_state->AddCredentialGroup(ui_->login_container); @@ -40,9 +39,7 @@ BoxSettingsPage::BoxSettingsPage(SettingsDialog* parent) dialog()->installEventFilter(this); } -BoxSettingsPage::~BoxSettingsPage() { - delete ui_; -} +BoxSettingsPage::~BoxSettingsPage() { delete ui_; } void BoxSettingsPage::Load() { QSettings s; diff --git a/src/internet/boxsettingspage.h b/src/internet/boxsettingspage.h index 13b46c34f..d0f6c6130 100644 --- a/src/internet/boxsettingspage.h +++ b/src/internet/boxsettingspage.h @@ -29,8 +29,8 @@ class Ui_BoxSettingsPage; class BoxSettingsPage : public SettingsPage { Q_OBJECT -public: - BoxSettingsPage(SettingsDialog* parent = 0); + public: + BoxSettingsPage(SettingsDialog* parent = nullptr); ~BoxSettingsPage(); void Load(); @@ -39,15 +39,15 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -private slots: + private slots: void LoginClicked(); void LogoutClicked(); void Connected(); -private: + private: Ui_BoxSettingsPage* ui_; BoxService* service_; }; -#endif // BOXSETTINGSPAGE_H +#endif // BOXSETTINGSPAGE_H diff --git a/src/internet/boxurlhandler.cpp b/src/internet/boxurlhandler.cpp index d296e6ba6..08d404ad3 100644 --- a/src/internet/boxurlhandler.cpp +++ b/src/internet/boxurlhandler.cpp @@ -3,9 +3,7 @@ #include "boxservice.h" BoxUrlHandler::BoxUrlHandler(BoxService* service, QObject* parent) - : UrlHandler(parent), - service_(service) { -} + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult BoxUrlHandler::StartLoading(const QUrl& url) { QString file_id = url.path(); diff --git a/src/internet/boxurlhandler.h b/src/internet/boxurlhandler.h index c004bbbca..563942bcd 100644 --- a/src/internet/boxurlhandler.h +++ b/src/internet/boxurlhandler.h @@ -8,7 +8,7 @@ class BoxService; class BoxUrlHandler : public UrlHandler { Q_OBJECT public: - BoxUrlHandler(BoxService* service, QObject* parent = 0); + BoxUrlHandler(BoxService* service, QObject* parent = nullptr); QString scheme() const { return "box"; } QIcon icon() const { return QIcon(":/providers/box.png"); } diff --git a/src/internet/cloudfilesearchprovider.cpp b/src/internet/cloudfilesearchprovider.cpp new file mode 100644 index 000000000..f3185b8f1 --- /dev/null +++ b/src/internet/cloudfilesearchprovider.cpp @@ -0,0 +1,48 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#include "internet/cloudfilesearchprovider.h" +#include "internet/cloudfileservice.h" +#include "internet/internetmodel.h" + +CloudFileSearchProvider::CloudFileSearchProvider( + LibraryBackendInterface* backend, + const QString& id, + const QIcon& icon, + CloudFileService* service) + : LibrarySearchProvider(backend, + service->name(), + id, + icon, + true, + service->model()->app(), + service), + service_(service) { + SetHint(CanShowConfig); +} + +bool CloudFileSearchProvider::IsLoggedIn() { + return service_->has_credentials(); +} + +void CloudFileSearchProvider::ShowConfig() { + service_->ShowSettingsDialog(); +} + +InternetService* CloudFileSearchProvider::internet_service() { + return service_; +} diff --git a/src/internet/cloudfilesearchprovider.h b/src/internet/cloudfilesearchprovider.h new file mode 100644 index 000000000..3e41298d0 --- /dev/null +++ b/src/internet/cloudfilesearchprovider.h @@ -0,0 +1,40 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#ifndef CLOUDFILESEARCHPROVIDER_H +#define CLOUDFILESEARCHPROVIDER_H + +#include "globalsearch/librarysearchprovider.h" + +class CloudFileService; + +class CloudFileSearchProvider : public LibrarySearchProvider { + public: + CloudFileSearchProvider(LibraryBackendInterface* backend, + const QString& id, + const QIcon& icon, + CloudFileService* service); + + virtual bool IsLoggedIn(); + virtual void ShowConfig(); + virtual InternetService* internet_service(); + + private: + CloudFileService* service_; +}; + +#endif // CLOUDFILESEARCHPROVIDER_H diff --git a/src/internet/cloudfileservice.cpp b/src/internet/cloudfileservice.cpp index 4b7c7232c..96699520c 100644 --- a/src/internet/cloudfileservice.cpp +++ b/src/internet/cloudfileservice.cpp @@ -10,36 +10,36 @@ #include "core/player.h" #include "core/taskmanager.h" #include "globalsearch/globalsearch.h" -#include "globalsearch/librarysearchprovider.h" +#include "internet/cloudfilesearchprovider.h" #include "internet/internetmodel.h" #include "library/librarybackend.h" #include "library/librarymodel.h" #include "playlist/playlist.h" #include "ui/iconloader.h" -CloudFileService::CloudFileService( - Application* app, - InternetModel* parent, - const QString& service_name, - const QString& service_id, - const QIcon& icon, - SettingsDialog::Page settings_page) - : InternetService(service_name, app, parent, parent), - root_(NULL), - network_(new NetworkAccessManager(this)), - library_sort_model_(new QSortFilterProxyModel(this)), - playlist_manager_(app->playlist_manager()), - task_manager_(app->task_manager()), - icon_(icon), - settings_page_(settings_page) { +CloudFileService::CloudFileService(Application* app, InternetModel* parent, + const QString& service_name, + const QString& service_id, const QIcon& icon, + SettingsDialog::Page settings_page) + : InternetService(service_name, app, parent, parent), + root_(nullptr), + network_(new NetworkAccessManager(this)), + library_sort_model_(new QSortFilterProxyModel(this)), + playlist_manager_(app->playlist_manager()), + task_manager_(app->task_manager()), + icon_(icon), + settings_page_(settings_page), + indexing_task_id_(-1), + indexing_task_progress_(0), + indexing_task_max_(0) { library_backend_ = new LibraryBackend; library_backend_->moveToThread(app_->database()->thread()); QString songs_table = service_id + "_songs"; QString songs_fts_table = service_id + "_songs_fts"; - library_backend_->Init( - app->database(), songs_table, QString::null, QString::null, songs_fts_table); + library_backend_->Init(app->database(), songs_table, QString::null, + QString::null, songs_fts_table); library_model_ = new LibraryModel(library_backend_, app_, this); library_sort_model_->setSourceModel(library_model_); @@ -48,12 +48,8 @@ CloudFileService::CloudFileService( library_sort_model_->setSortLocaleAware(true); library_sort_model_->sort(0); - app->global_search()->AddProvider(new LibrarySearchProvider( - library_backend_, - service_name, - service_id, - icon_, - true, app_, this)); + app->global_search()->AddProvider(new CloudFileSearchProvider( + library_backend_, service_id, icon_, this)); } QStandardItem* CloudFileService::CreateRootItem() { @@ -83,11 +79,11 @@ void CloudFileService::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); - context_menu_->addAction( - IconLoader::Load("download"), - tr("Cover Manager"), - this, - SLOT(ShowCoverManager())); + context_menu_->addAction(IconLoader::Load("download"), tr("Cover Manager"), + this, SLOT(ShowCoverManager())); + context_menu_->addSeparator(); + context_menu_->addAction(IconLoader::Load("configure"), tr("Configure..."), + this, SLOT(ShowSettingsDialog())); } context_menu_->popup(global_pos); } @@ -103,15 +99,16 @@ void CloudFileService::ShowCoverManager() { } void CloudFileService::AddToPlaylist(QMimeData* mime) { - playlist_manager_->current()->dropMimeData( - mime, Qt::CopyAction, -1, 0, QModelIndex()); + playlist_manager_->current()->dropMimeData(mime, Qt::CopyAction, -1, 0, + QModelIndex()); } void CloudFileService::ShowSettingsDialog() { app_->OpenSettingsDialogAtPage(settings_page_); } -bool CloudFileService::ShouldIndexFile(const QUrl& url, const QString& mime_type) const { +bool CloudFileService::ShouldIndexFile(const QUrl& url, + const QString& mime_type) const { if (!IsSupportedMimeType(mime_type)) { return false; } @@ -123,35 +120,45 @@ bool CloudFileService::ShouldIndexFile(const QUrl& url, const QString& mime_type return true; } -void CloudFileService::MaybeAddFileToDatabase( - const Song& metadata, - const QString& mime_type, - const QUrl& download_url, - const QString& authorisation) { +void CloudFileService::MaybeAddFileToDatabase(const Song& metadata, + const QString& mime_type, + const QUrl& download_url, + const QString& authorisation) { if (!ShouldIndexFile(metadata.url(), mime_type)) { return; } - const int task_id = task_manager_->StartTask( - tr("Indexing %1").arg(metadata.title())); + if (indexing_task_id_ == -1) { + indexing_task_id_ = + task_manager_->StartTask(tr("Indexing %1").arg(name())); + indexing_task_progress_ = 0; + indexing_task_max_ = 0; + } + indexing_task_max_ ++; + task_manager_->SetTaskProgress( + indexing_task_id_, indexing_task_progress_, indexing_task_max_); TagReaderClient::ReplyType* reply = app_->tag_reader_client()->ReadCloudFile( - download_url, - metadata.title(), - metadata.filesize(), - mime_type, + download_url, metadata.title(), metadata.filesize(), mime_type, authorisation); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(ReadTagsFinished(TagReaderClient::ReplyType*,Song,int)), - reply, metadata, task_id); + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(ReadTagsFinished(TagReaderClient::ReplyType*, Song)), + reply, metadata); } -void CloudFileService::ReadTagsFinished( - TagReaderClient::ReplyType* reply, - const Song& metadata, - const int task_id) { +void CloudFileService::ReadTagsFinished(TagReaderClient::ReplyType* reply, + const Song& metadata) { reply->deleteLater(); - TaskManager::ScopedTask(task_id, task_manager_); + + indexing_task_progress_ ++; + if (indexing_task_progress_ == indexing_task_max_) { + task_manager_->SetTaskFinished(indexing_task_id_); + indexing_task_id_ = -1; + emit AllIndexingTasksFinished(); + } else { + task_manager_->SetTaskProgress( + indexing_task_id_, indexing_task_progress_, indexing_task_max_); + } const pb::tagreader::ReadCloudFileResponse& message = reply->message().read_cloud_file_response(); @@ -173,14 +180,10 @@ void CloudFileService::ReadTagsFinished( } bool CloudFileService::IsSupportedMimeType(const QString& mime_type) const { - return mime_type == "audio/ogg" || - mime_type == "audio/mpeg" || - mime_type == "audio/mp4" || - mime_type == "audio/flac" || - mime_type == "audio/x-flac" || - mime_type == "application/ogg" || - mime_type == "application/x-flac" || - mime_type == "audio/x-ms-wma"; + return mime_type == "audio/ogg" || mime_type == "audio/mpeg" || + mime_type == "audio/mp4" || mime_type == "audio/flac" || + mime_type == "audio/x-flac" || mime_type == "application/ogg" || + mime_type == "application/x-flac" || mime_type == "audio/x-ms-wma"; } QString CloudFileService::GuessMimeTypeForFile(const QString& filename) const { diff --git a/src/internet/cloudfileservice.h b/src/internet/cloudfileservice.h index d31a54ccc..44e7cc5dc 100644 --- a/src/internet/cloudfileservice.h +++ b/src/internet/cloudfileservice.h @@ -20,40 +20,39 @@ class PlaylistManager; class CloudFileService : public InternetService { Q_OBJECT public: - CloudFileService( - Application* app, - InternetModel* parent, - const QString& service_name, - const QString& service_id, - const QIcon& icon, - SettingsDialog::Page settings_page); + CloudFileService(Application* app, InternetModel* parent, + const QString& service_name, const QString& service_id, + const QIcon& icon, SettingsDialog::Page settings_page); // InternetService virtual QStandardItem* CreateRootItem(); virtual void LazyPopulate(QStandardItem* item); virtual void ShowContextMenu(const QPoint& point); - protected: virtual bool has_credentials() const = 0; + bool is_indexing() const { return indexing_task_id_ != -1; } + + signals: + void AllIndexingTasksFinished(); + + public slots: + void ShowSettingsDialog(); + + protected: virtual void Connect() = 0; virtual bool ShouldIndexFile(const QUrl& url, const QString& mime_type) const; - virtual void MaybeAddFileToDatabase( - const Song& metadata, - const QString& mime_type, - const QUrl& download_url, - const QString& authorisation); + virtual void MaybeAddFileToDatabase(const Song& metadata, + const QString& mime_type, + const QUrl& download_url, + const QString& authorisation); virtual bool IsSupportedMimeType(const QString& mime_type) const; QString GuessMimeTypeForFile(const QString& filename) const; - protected slots: void ShowCoverManager(); void AddToPlaylist(QMimeData* mime); - void ShowSettingsDialog(); - void ReadTagsFinished( - TagReaderClient::ReplyType* reply, - const Song& metadata, - const int task_id); + void ReadTagsFinished(TagReaderClient::ReplyType* reply, + const Song& metadata); protected: QStandardItem* root_; @@ -71,6 +70,10 @@ class CloudFileService : public InternetService { private: QIcon icon_; SettingsDialog::Page settings_page_; + + int indexing_task_id_; + int indexing_task_progress_; + int indexing_task_max_; }; #endif // CLOUDFILESERVICE_H diff --git a/src/internet/digitallyimportedclient.cpp b/src/internet/digitallyimportedclient.cpp index 9f7bde819..1a9d256b3 100644 --- a/src/internet/digitallyimportedclient.cpp +++ b/src/internet/digitallyimportedclient.cpp @@ -35,20 +35,22 @@ const char* DigitallyImportedClient::kAuthUrl = "http://api.audioaddict.com/v1/%1/members/authenticate"; const char* DigitallyImportedClient::kChannelListUrl = - "http://api.v2.audioaddict.com/v1/%1/mobile/batch_update?asset_group_key=mobile_icons&stream_set_key="; + "http://api.v2.audioaddict.com/v1/%1/mobile/" + "batch_update?asset_group_key=mobile_icons&stream_set_key="; +DigitallyImportedClient::DigitallyImportedClient(const QString& service_name, + QObject* parent) + : QObject(parent), + network_(new NetworkAccessManager(this)), + service_name_(service_name) {} -DigitallyImportedClient::DigitallyImportedClient(const QString& service_name, QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - service_name_(service_name) -{ -} - -void DigitallyImportedClient::SetAuthorisationHeader(QNetworkRequest* req) const { +void DigitallyImportedClient::SetAuthorisationHeader(QNetworkRequest* req) + const { req->setRawHeader("Authorization", - "Basic " + QString("%1:%2").arg(kApiUsername, kApiPassword) - .toAscii().toBase64()); + "Basic " + QString("%1:%2") + .arg(kApiUsername, kApiPassword) + .toAscii() + .toBase64()); } QNetworkReply* DigitallyImportedClient::Auth(const QString& username, @@ -57,18 +59,19 @@ QNetworkReply* DigitallyImportedClient::Auth(const QString& username, SetAuthorisationHeader(&req); QByteArray postdata = "username=" + QUrl::toPercentEncoding(username) + - "&password=" + QUrl::toPercentEncoding(password); + "&password=" + QUrl::toPercentEncoding(password); return network_->post(req, postdata); } -DigitallyImportedClient::AuthReply -DigitallyImportedClient::ParseAuthReply(QNetworkReply* reply) const { +DigitallyImportedClient::AuthReply DigitallyImportedClient::ParseAuthReply( + QNetworkReply* reply) const { AuthReply ret; ret.success_ = false; ret.error_reason_ = tr("Unknown error"); - const int http_status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + const int http_status = + reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (http_status == 403) { ret.error_reason_ = reply->readAll(); return ret; @@ -83,15 +86,15 @@ DigitallyImportedClient::ParseAuthReply(QNetworkReply* reply) const { return ret; } - QVariantList subscriptions = data.value("subscriptions", QVariantList()).toList(); + QVariantList subscriptions = + data.value("subscriptions", QVariantList()).toList(); if (subscriptions.isEmpty() || subscriptions[0].toMap().value("status").toString() != "active") { ret.error_reason_ = tr("You do not have an active subscription"); return ret; } - if (!data.contains("first_name") || - !data.contains("last_name") || + if (!data.contains("first_name") || !data.contains("last_name") || !subscriptions[0].toMap().contains("expires_on") || !data.contains("listen_key")) return ret; @@ -99,40 +102,40 @@ DigitallyImportedClient::ParseAuthReply(QNetworkReply* reply) const { ret.success_ = true; ret.first_name_ = data["first_name"].toString(); ret.last_name_ = data["last_name"].toString(); - ret.expires_ = QDateTime::fromString(subscriptions[0].toMap()["expires_on"].toString(), Qt::ISODate); + ret.expires_ = QDateTime::fromString( + subscriptions[0].toMap()["expires_on"].toString(), Qt::ISODate); ret.listen_hash_ = data["listen_key"].toString(); return ret; } QNetworkReply* DigitallyImportedClient::GetChannelList() { - //QNetworkRequest req(QUrl(QString(kChannelListUrl))); + // QNetworkRequest req(QUrl(QString(kChannelListUrl))); QNetworkRequest req(QUrl(QString(kChannelListUrl).arg(service_name_))); SetAuthorisationHeader(&req); return network_->get(req); } -DigitallyImportedClient::ChannelList -DigitallyImportedClient::ParseChannelList(QNetworkReply* reply) const { +DigitallyImportedClient::ChannelList DigitallyImportedClient::ParseChannelList( + QNetworkReply* reply) const { ChannelList ret; QJson::Parser parser; QVariantMap data = parser.parse(reply).toMap(); - if (!data.contains("channel_filters")) - return ret; + if (!data.contains("channel_filters")) return ret; QVariantList filters = data["channel_filters"].toList(); - foreach (const QVariant& filter, filters) { + for (const QVariant& filter : filters) { // Find the filter called "All" QVariantMap filter_map = filter.toMap(); - if (filter_map.value("name", QString()).toString() != "All") - continue; + if (filter_map.value("name", QString()).toString() != "All") continue; // Add all its stations to the result - QVariantList channels = filter_map.value("channels", QVariantList()).toList(); - foreach (const QVariant& channel_var, channels) { + QVariantList channels = + filter_map.value("channels", QVariantList()).toList(); + for (const QVariant& channel_var : channels) { QVariantMap channel_map = channel_var.toMap(); Channel channel; @@ -150,20 +153,16 @@ DigitallyImportedClient::ParseChannelList(QNetworkReply* reply) const { return ret; } -QDataStream& operator<<(QDataStream& out, const DigitallyImportedClient::Channel& channel) { - out << channel.art_url_ - << channel.director_ - << channel.description_ - << channel.name_ - << channel.key_; +QDataStream& operator<<(QDataStream& out, + const DigitallyImportedClient::Channel& channel) { + out << channel.art_url_ << channel.director_ << channel.description_ + << channel.name_ << channel.key_; return out; } -QDataStream& operator>>(QDataStream& in, DigitallyImportedClient::Channel& channel) { - in >> channel.art_url_ - >> channel.director_ - >> channel.description_ - >> channel.name_ - >> channel.key_; +QDataStream& operator>>(QDataStream& in, + DigitallyImportedClient::Channel& channel) { + in >> channel.art_url_ >> channel.director_ >> channel.description_ >> + channel.name_ >> channel.key_; return in; } diff --git a/src/internet/digitallyimportedclient.h b/src/internet/digitallyimportedclient.h index e42508f16..0a8364280 100644 --- a/src/internet/digitallyimportedclient.h +++ b/src/internet/digitallyimportedclient.h @@ -30,8 +30,8 @@ class QNetworkRequest; class DigitallyImportedClient : public QObject { Q_OBJECT -public: - DigitallyImportedClient(const QString& service_name, QObject* parent = 0); + public: + DigitallyImportedClient(const QString& service_name, QObject* parent = nullptr); static const char* kApiUsername; static const char* kApiPassword; @@ -59,7 +59,7 @@ public: QString name_; QString key_; - bool operator <(const Channel& other) const { return name_ < other.name_; } + bool operator<(const Channel& other) const { return name_ < other.name_; } }; typedef QList ChannelList; @@ -69,17 +69,19 @@ public: QNetworkReply* GetChannelList(); ChannelList ParseChannelList(QNetworkReply* reply) const; -private: + private: void SetAuthorisationHeader(QNetworkRequest* req) const; -private: + private: QNetworkAccessManager* network_; QString service_name_; }; -QDataStream& operator<<(QDataStream& out, const DigitallyImportedClient::Channel& channel); -QDataStream& operator>>(QDataStream& in, DigitallyImportedClient::Channel& channel); +QDataStream& operator<<(QDataStream& out, + const DigitallyImportedClient::Channel& channel); +QDataStream& operator>>(QDataStream& in, + DigitallyImportedClient::Channel& channel); Q_DECLARE_METATYPE(DigitallyImportedClient::Channel) -#endif // DIGITALLYIMPORTEDCLIENT_H +#endif // DIGITALLYIMPORTEDCLIENT_H diff --git a/src/internet/digitallyimportedservicebase.cpp b/src/internet/digitallyimportedservicebase.cpp index 4ef5086bc..a5a918b3f 100644 --- a/src/internet/digitallyimportedservicebase.cpp +++ b/src/internet/digitallyimportedservicebase.cpp @@ -37,50 +37,43 @@ const char* DigitallyImportedServiceBase::kSettingsGroup = "digitally_imported"; const int DigitallyImportedServiceBase::kStreamsCacheDurationSecs = - 60 * 60 * 24 * 14; // 2 weeks - + 60 * 60 * 24 * 14; // 2 weeks DigitallyImportedServiceBase::DigitallyImportedServiceBase( - const QString& name, - const QString& description, - const QUrl& homepage_url, - const QIcon& icon, - const QString& api_service_name, - Application* app, InternetModel* model, QObject* parent) - : InternetService(name, app, model, parent), - homepage_url_(homepage_url), - icon_(icon), - service_description_(description), - api_service_name_(api_service_name), - network_(new NetworkAccessManager(this)), - url_handler_(new DigitallyImportedUrlHandler(app, this)), - basic_audio_type_(1), - premium_audio_type_(2), - root_(NULL), - saved_channels_(kSettingsGroup, api_service_name, kStreamsCacheDurationSecs), - api_client_(new DigitallyImportedClient(api_service_name, this)) -{ + const QString& name, const QString& description, const QUrl& homepage_url, + const QIcon& icon, const QString& api_service_name, Application* app, + InternetModel* model, QObject* parent) + : InternetService(name, app, model, parent), + homepage_url_(homepage_url), + icon_(icon), + service_description_(description), + api_service_name_(api_service_name), + network_(new NetworkAccessManager(this)), + url_handler_(new DigitallyImportedUrlHandler(app, this)), + basic_audio_type_(1), + premium_audio_type_(2), + root_(nullptr), + saved_channels_(kSettingsGroup, api_service_name, + kStreamsCacheDurationSecs), + api_client_(new DigitallyImportedClient(api_service_name, this)) { ReloadSettings(); model->app()->player()->RegisterUrlHandler(url_handler_); model->app()->global_search()->AddProvider( - new DigitallyImportedSearchProvider(this, app_, this)); + new DigitallyImportedSearchProvider(this, app_, this)); - basic_playlists_ - << "http://%1/public3/%2.pls" - << "http://%1/public1/%2.pls" - << "http://%1/public5/%2.asx"; + basic_playlists_ << "http://%1/public3/%2.pls" + << "http://%1/public1/%2.pls" + << "http://%1/public5/%2.asx"; - premium_playlists_ - << "http://%1/premium_high/%2.pls?hash=%3" - << "http://%1/premium_medium/%2.pls?hash=%3" - << "http://%1/premium/%2.pls?hash=%3" - << "http://%1/premium_wma_low/%2.asx?hash=%3" - << "http://%1/premium_wma/%2.asx?hash=%3"; + premium_playlists_ << "http://%1/premium_high/%2.pls?hash=%3" + << "http://%1/premium_medium/%2.pls?hash=%3" + << "http://%1/premium/%2.pls?hash=%3" + << "http://%1/premium_wma_low/%2.asx?hash=%3" + << "http://%1/premium_wma/%2.asx?hash=%3"; } -DigitallyImportedServiceBase::~DigitallyImportedServiceBase() { -} +DigitallyImportedServiceBase::~DigitallyImportedServiceBase() {} QStandardItem* DigitallyImportedServiceBase::CreateRootItem() { root_ = new QStandardItem(icon_, service_description_); @@ -108,41 +101,41 @@ void DigitallyImportedServiceBase::ForceRefreshStreams() { int task_id = app_->task_manager()->StartTask(tr("Getting streams")); QNetworkReply* reply = api_client_->GetChannelList(); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RefreshStreamsFinished(QNetworkReply*,int)), - reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RefreshStreamsFinished(QNetworkReply*, int)), reply, task_id); } -void DigitallyImportedServiceBase::RefreshStreamsFinished(QNetworkReply* reply, int task_id) { +void DigitallyImportedServiceBase::RefreshStreamsFinished(QNetworkReply* reply, + int task_id) { app_->task_manager()->SetTaskFinished(task_id); reply->deleteLater(); // Parse the list and sort by name - DigitallyImportedClient::ChannelList channels = api_client_->ParseChannelList(reply); + DigitallyImportedClient::ChannelList channels = + api_client_->ParseChannelList(reply); qSort(channels); saved_channels_.Update(channels); // Only update the item's children if it's already been populated - if (!root_->data(InternetModel::Role_CanLazyLoad).toBool()) - PopulateStreams(); + if (!root_->data(InternetModel::Role_CanLazyLoad).toBool()) PopulateStreams(); emit StreamsChanged(); } void DigitallyImportedServiceBase::PopulateStreams() { - if (root_->hasChildren()) - root_->removeRows(0, root_->rowCount()); + if (root_->hasChildren()) root_->removeRows(0, root_->rowCount()); // Add each stream to the model - foreach (const DigitallyImportedClient::Channel& channel, saved_channels_) { + for (const DigitallyImportedClient::Channel& channel : saved_channels_) { Song song; SongFromChannel(channel, &song); - QStandardItem* item = new QStandardItem(QIcon(":/last.fm/icon_radio.png"), - song.title()); + QStandardItem* item = + new QStandardItem(QIcon(":/last.fm/icon_radio.png"), song.title()); item->setData(channel.description_, Qt::ToolTipRole); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); root_->appendRow(item); } @@ -179,11 +172,10 @@ void DigitallyImportedServiceBase::ShowContextMenu(const QPoint& global_pos) { tr("Open %1 in browser").arg(homepage_url_.host()), this, SLOT(Homepage())); context_menu_->addAction(IconLoader::Load("view-refresh"), - tr("Refresh streams"), - this, SLOT(ForceRefreshStreams())); + tr("Refresh streams"), this, + SLOT(ForceRefreshStreams())); context_menu_->addSeparator(); - context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure..."), + context_menu_->addAction(IconLoader::Load("configure"), tr("Configure..."), this, SLOT(ShowSettingsDialog())); } @@ -197,7 +189,8 @@ bool DigitallyImportedServiceBase::is_premium_account() const { void DigitallyImportedServiceBase::LoadPlaylistFinished(QNetworkReply* reply) { reply->deleteLater(); - if (reply->header(QNetworkRequest::ContentTypeHeader).toString() == "text/html") { + if (reply->header(QNetworkRequest::ContentTypeHeader).toString() == + "text/html") { url_handler_->CancelTask(); emit StreamError(tr("Error loading di.fm playlist")); @@ -212,7 +205,8 @@ void DigitallyImportedServiceBase::ShowSettingsDialog() { DigitallyImportedClient::ChannelList DigitallyImportedServiceBase::Channels() { if (IsChannelListStale()) { - metaObject()->invokeMethod(this, "ForceRefreshStreams", Qt::QueuedConnection); + metaObject()->invokeMethod(this, "ForceRefreshStreams", + Qt::QueuedConnection); } return saved_channels_; @@ -225,11 +219,10 @@ void DigitallyImportedServiceBase::LoadStation(const QString& key) { const QString host = "listen." + homepage_url_.host().remove("www."); if (is_premium_account()) { - playlist_url = QUrl(premium_playlists_[premium_audio_type_].arg( - host, key, listen_hash_)); + playlist_url = QUrl( + premium_playlists_[premium_audio_type_].arg(host, key, listen_hash_)); } else { - playlist_url = QUrl(basic_playlists_[basic_audio_type_].arg( - host, key)); + playlist_url = QUrl(basic_playlists_[basic_audio_type_].arg(host, key)); } qLog(Debug) << "Getting playlist URL" << playlist_url; @@ -239,47 +232,30 @@ void DigitallyImportedServiceBase::LoadStation(const QString& key) { SLOT(LoadPlaylistFinished(QNetworkReply*)), reply); } +DigitallyImportedService::DigitallyImportedService(Application* app, + InternetModel* model, + QObject* parent) + : DigitallyImportedServiceBase("DigitallyImported", "Digitally Imported", + QUrl("http://www.di.fm"), + QIcon(":/providers/digitallyimported.png"), + "di", app, model, parent) {} -DigitallyImportedService::DigitallyImportedService( - Application* app, InternetModel* model, QObject* parent) - : DigitallyImportedServiceBase("DigitallyImported", - "Digitally Imported", - QUrl("http://www.di.fm"), - QIcon(":/providers/digitallyimported.png"), - "di", - app, model, parent) -{ +SkyFmService::SkyFmService(Application* app, InternetModel* model, + QObject* parent) + : DigitallyImportedServiceBase( + "SKY.fm", "SKY.fm", QUrl("http://www.sky.fm"), + QIcon(":/providers/skyfm.png"), "sky", app, model, parent) {} + +JazzRadioService::JazzRadioService(Application* app, InternetModel* model, + QObject* parent) + : DigitallyImportedServiceBase( + "JazzRadio", "JAZZRADIO.com", QUrl("http://www.jazzradio.com"), + QIcon(":/providers/jazzradio.png"), "jazzradio", app, model, parent) { } -SkyFmService::SkyFmService( - Application* app, InternetModel* model, QObject* parent) - : DigitallyImportedServiceBase("SKY.fm", - "SKY.fm", - QUrl("http://www.sky.fm"), - QIcon(":/providers/skyfm.png"), - "sky", - app, model, parent) -{ -} - -JazzRadioService::JazzRadioService( - Application* app, InternetModel* model, QObject* parent) - : DigitallyImportedServiceBase("JazzRadio", - "JAZZRADIO.com", - QUrl("http://www.jazzradio.com"), - QIcon(":/providers/jazzradio.png"), - "jazzradio", - app, model, parent) -{ -} - -RockRadioService::RockRadioService( - Application* app, InternetModel* model, QObject* parent) - : DigitallyImportedServiceBase("RockRadio", - "ROCKRADIO.com", - QUrl("http://www.rockradio.com"), - QIcon(":/providers/rockradio.png"), - "rockradio", - app, model, parent) -{ +RockRadioService::RockRadioService(Application* app, InternetModel* model, + QObject* parent) + : DigitallyImportedServiceBase( + "RockRadio", "ROCKRADIO.com", QUrl("http://www.rockradio.com"), + QIcon(":/providers/rockradio.png"), "rockradio", app, model, parent) { } diff --git a/src/internet/digitallyimportedservicebase.h b/src/internet/digitallyimportedservicebase.h index 6380cb9a3..31a8faace 100644 --- a/src/internet/digitallyimportedservicebase.h +++ b/src/internet/digitallyimportedservicebase.h @@ -18,7 +18,7 @@ #ifndef DIGITALLYIMPORTEDSERVICEBASE_H #define DIGITALLYIMPORTEDSERVICEBASE_H -#include +#include #include "digitallyimportedclient.h" #include "internetservice.h" @@ -29,20 +29,16 @@ class DigitallyImportedUrlHandler; class QNetworkAccessManager; - class DigitallyImportedServiceBase : public InternetService { Q_OBJECT friend class DigitallyImportedUrlHandler; -public: - DigitallyImportedServiceBase(const QString& name, - const QString& description, - const QUrl& homepage_url, - const QIcon& icon, + public: + DigitallyImportedServiceBase(const QString& name, const QString& description, + const QUrl& homepage_url, const QIcon& icon, const QString& api_service_name, - Application* app, - InternetModel* model, - QObject* parent = NULL); + Application* app, InternetModel* model, + QObject* parent = nullptr); ~DigitallyImportedServiceBase(); static const char* kSettingsGroup; @@ -66,25 +62,25 @@ public: void SongFromChannel(const DigitallyImportedClient::Channel& channel, Song* song) const; -public slots: + public slots: void ShowSettingsDialog(); signals: void StreamsChanged(); -private slots: + private slots: void LoadPlaylistFinished(QNetworkReply* reply); void Homepage(); void ForceRefreshStreams(); void RefreshStreams(); void RefreshStreamsFinished(QNetworkReply* reply, int task_id); -private: + private: void PopulateStreams(); void LoadStation(const QString& key); -private: + private: // Set by subclasses through the constructor QUrl homepage_url_; QIcon icon_; @@ -104,7 +100,7 @@ private: QStandardItem* root_; - boost::scoped_ptr context_menu_; + std::unique_ptr context_menu_; QStandardItem* context_item_; CachedList saved_channels_; @@ -113,23 +109,26 @@ private: }; class DigitallyImportedService : public DigitallyImportedServiceBase { -public: - DigitallyImportedService(Application* app, InternetModel* model, QObject* parent = NULL); + public: + DigitallyImportedService(Application* app, InternetModel* model, + QObject* parent = nullptr); }; class SkyFmService : public DigitallyImportedServiceBase { -public: - SkyFmService(Application* app, InternetModel* model, QObject* parent = NULL); + public: + SkyFmService(Application* app, InternetModel* model, QObject* parent = nullptr); }; class JazzRadioService : public DigitallyImportedServiceBase { -public: - JazzRadioService(Application* app, InternetModel* model, QObject* parent = NULL); + public: + JazzRadioService(Application* app, InternetModel* model, + QObject* parent = nullptr); }; class RockRadioService : public DigitallyImportedServiceBase { -public: - RockRadioService(Application* app, InternetModel* model, QObject* parent = NULL); + public: + RockRadioService(Application* app, InternetModel* model, + QObject* parent = nullptr); }; -#endif // DIGITALLYIMPORTEDSERVICEBASE_H +#endif // DIGITALLYIMPORTEDSERVICEBASE_H diff --git a/src/internet/digitallyimportedsettingspage.cpp b/src/internet/digitallyimportedsettingspage.cpp index 7a4470f57..f06a2db53 100644 --- a/src/internet/digitallyimportedsettingspage.cpp +++ b/src/internet/digitallyimportedsettingspage.cpp @@ -25,12 +25,11 @@ #include #include - -DigitallyImportedSettingsPage::DigitallyImportedSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_DigitallyImportedSettingsPage), - client_(new DigitallyImportedClient("di", this)) -{ +DigitallyImportedSettingsPage::DigitallyImportedSettingsPage( + SettingsDialog* dialog) + : SettingsPage(dialog), + ui_(new Ui_DigitallyImportedSettingsPage), + client_(new DigitallyImportedClient("di", this)) { ui_->setupUi(this); setWindowIcon(QIcon(":/providers/digitallyimported-32.png")); @@ -42,22 +41,21 @@ DigitallyImportedSettingsPage::DigitallyImportedSettingsPage(SettingsDialog* dia ui_->login_state->AddCredentialField(ui_->password); ui_->login_state->AddCredentialGroup(ui_->credential_group); - ui_->login_state->SetAccountTypeText(tr( - "You can listen for free without an account, but Premium members can " - "listen to higher quality streams without advertisements.")); + ui_->login_state->SetAccountTypeText( + tr("You can listen for free without an account, but Premium members can " + "listen to higher quality streams without advertisements.")); ui_->login_state->SetAccountTypeVisible(true); } -DigitallyImportedSettingsPage::~DigitallyImportedSettingsPage() { - delete ui_; -} +DigitallyImportedSettingsPage::~DigitallyImportedSettingsPage() { delete ui_; } void DigitallyImportedSettingsPage::Login() { ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); - QNetworkReply* reply = client_->Auth(ui_->username->text(), ui_->password->text()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(LoginFinished(QNetworkReply*)), reply); + QNetworkReply* reply = + client_->Auth(ui_->username->text(), ui_->password->text()); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(LoginFinished(QNetworkReply*)), reply); } void DigitallyImportedSettingsPage::LoginFinished(QNetworkReply* reply) { @@ -84,8 +82,9 @@ void DigitallyImportedSettingsPage::LoginFinished(QNetworkReply* reply) { } } -void DigitallyImportedSettingsPage::UpdateLoginState( - const QString& listen_hash, const QString& name, const QDateTime& expires) { +void DigitallyImportedSettingsPage::UpdateLoginState(const QString& listen_hash, + const QString& name, + const QDateTime& expires) { if (listen_hash.isEmpty()) { ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut); ui_->login_state->SetExpires(QDate()); @@ -114,8 +113,10 @@ void DigitallyImportedSettingsPage::Load() { QSettings s; s.beginGroup(DigitallyImportedServiceBase::kSettingsGroup); - ui_->basic_audio_type->setCurrentIndex(s.value("basic_audio_type", 1).toInt()); - ui_->premium_audio_type->setCurrentIndex(s.value("premium_audio_type", 2).toInt()); + ui_->basic_audio_type->setCurrentIndex( + s.value("basic_audio_type", 1).toInt()); + ui_->premium_audio_type->setCurrentIndex( + s.value("premium_audio_type", 2).toInt()); ui_->username->setText(s.value("username").toString()); UpdateLoginState(s.value("listen_hash").toString(), @@ -131,5 +132,3 @@ void DigitallyImportedSettingsPage::Save() { s.setValue("premium_audio_type", ui_->premium_audio_type->currentIndex()); s.setValue("username", ui_->username->text()); } - - diff --git a/src/internet/digitallyimportedsettingspage.h b/src/internet/digitallyimportedsettingspage.h index eaf31ef45..f22947925 100644 --- a/src/internet/digitallyimportedsettingspage.h +++ b/src/internet/digitallyimportedsettingspage.h @@ -28,27 +28,27 @@ class QNetworkReply; class DigitallyImportedSettingsPage : public SettingsPage { Q_OBJECT -public: + public: DigitallyImportedSettingsPage(SettingsDialog* dialog); ~DigitallyImportedSettingsPage(); void Load(); void Save(); -private slots: + private slots: void Login(); void Logout(); void LoginFinished(QNetworkReply* reply); -private: + private: void UpdateLoginState(const QString& listen_hash, const QString& name, const QDateTime& expires); -private: + private: Ui_DigitallyImportedSettingsPage* ui_; DigitallyImportedClient* client_; }; -#endif // DIGITALLYIMPORTEDSETTINGSPAGE_H +#endif // DIGITALLYIMPORTEDSETTINGSPAGE_H diff --git a/src/internet/digitallyimportedurlhandler.cpp b/src/internet/digitallyimportedurlhandler.cpp index 24b05665f..c57cdf371 100644 --- a/src/internet/digitallyimportedurlhandler.cpp +++ b/src/internet/digitallyimportedurlhandler.cpp @@ -25,12 +25,7 @@ DigitallyImportedUrlHandler::DigitallyImportedUrlHandler( Application* app, DigitallyImportedServiceBase* service) - : UrlHandler(service), - app_(app), - service_(service), - task_id_(-1) -{ -} + : UrlHandler(service), app_(app), service_(service), task_id_(-1) {} QString DigitallyImportedUrlHandler::scheme() const { return service_->api_service_name(); @@ -49,7 +44,8 @@ QIcon DigitallyImportedUrlHandler::icon() const { return QIcon(); } -UrlHandler::LoadResult DigitallyImportedUrlHandler::StartLoading(const QUrl& url) { +UrlHandler::LoadResult DigitallyImportedUrlHandler::StartLoading( + const QUrl& url) { LoadResult ret(url); if (task_id_ != -1) { return ret; @@ -79,7 +75,7 @@ void DigitallyImportedUrlHandler::LoadPlaylistFinished(QIODevice* device) { CancelTask(); // Try to parse the playlist - PlaylistParser parser(NULL); + PlaylistParser parser(nullptr); QList songs = parser.LoadFromDevice(device); qLog(Info) << "Loading station finished, got" << songs.count() << "songs"; @@ -91,7 +87,7 @@ void DigitallyImportedUrlHandler::LoadPlaylistFinished(QIODevice* device) { } emit AsyncLoadComplete(LoadResult( - last_original_url_, LoadResult::TrackAvailable, songs[0].url())); + last_original_url_, LoadResult::TrackAvailable, songs[0].url())); } void DigitallyImportedUrlHandler::CancelTask() { diff --git a/src/internet/digitallyimportedurlhandler.h b/src/internet/digitallyimportedurlhandler.h index 9cd398c5f..3386a6257 100644 --- a/src/internet/digitallyimportedurlhandler.h +++ b/src/internet/digitallyimportedurlhandler.h @@ -23,10 +23,10 @@ class Application; class DigitallyImportedServiceBase; - class DigitallyImportedUrlHandler : public UrlHandler { -public: - DigitallyImportedUrlHandler(Application* app, DigitallyImportedServiceBase* service); + public: + DigitallyImportedUrlHandler(Application* app, + DigitallyImportedServiceBase* service); QString scheme() const; QIcon icon() const; @@ -35,7 +35,7 @@ public: void CancelTask(); void LoadPlaylistFinished(QIODevice* device); -private: + private: Application* app_; DigitallyImportedServiceBase* service_; int task_id_; @@ -43,4 +43,4 @@ private: QUrl last_original_url_; }; -#endif // DIGITALLYIMPORTEDURLHANDLER_H +#endif // DIGITALLYIMPORTEDURLHANDLER_H diff --git a/src/internet/dropboxauthenticator.cpp b/src/internet/dropboxauthenticator.cpp index 2cbda3d81..b4378ad30 100644 --- a/src/internet/dropboxauthenticator.cpp +++ b/src/internet/dropboxauthenticator.cpp @@ -32,20 +32,18 @@ static const char* kAccountInfoEndpoint = } // namespace DropboxAuthenticator::DropboxAuthenticator(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)) { -} + : QObject(parent), network_(new NetworkAccessManager(this)) {} void DropboxAuthenticator::StartAuthorisation() { QUrl url(kRequestTokenEndpoint); - QByteArray authorisation_header = GenerateAuthorisationHeader( - QString::null, QString::null); + QByteArray authorisation_header = + GenerateAuthorisationHeader(QString::null, QString::null); QNetworkRequest request(url); request.setRawHeader("Authorization", authorisation_header); QNetworkReply* reply = network_->post(request, QByteArray()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RequestTokenFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestTokenFinished(QNetworkReply*)), reply); } namespace { @@ -54,7 +52,7 @@ namespace { QMap ParseParamList(const QString& params) { QMap ret; QStringList components = params.split("&"); - foreach (const QString& component, components) { + for (const QString& component : components) { QStringList pairs = component.split("="); if (pairs.size() != 2) { continue; @@ -63,7 +61,6 @@ QMap ParseParamList(const QString& params) { } return ret; } - } void DropboxAuthenticator::RequestTokenFinished(QNetworkReply* reply) { @@ -79,8 +76,8 @@ void DropboxAuthenticator::Authorise() { LocalRedirectServer* server = new LocalRedirectServer(this); server->Listen(); - NewClosure(server, SIGNAL(Finished()), - this, SLOT(RedirectArrived(LocalRedirectServer*)), server); + NewClosure(server, SIGNAL(Finished()), this, + SLOT(RedirectArrived(LocalRedirectServer*)), server); QUrl url(kAuthoriseEndpoint); url.addQueryItem("oauth_token", token_); @@ -100,13 +97,13 @@ void DropboxAuthenticator::RedirectArrived(LocalRedirectServer* server) { void DropboxAuthenticator::RequestAccessToken() { QUrl url(kAccessTokenEndpoint); QNetworkRequest request(url); - QByteArray authorisation_header = GenerateAuthorisationHeader( - token_, secret_); + QByteArray authorisation_header = + GenerateAuthorisationHeader(token_, secret_); request.setRawHeader("Authorization", authorisation_header); QNetworkReply* reply = network_->post(request, QByteArray()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RequestAccessTokenFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestAccessTokenFinished(QNetworkReply*)), reply); } void DropboxAuthenticator::RequestAccessTokenFinished(QNetworkReply* reply) { @@ -125,22 +122,21 @@ QByteArray DropboxAuthenticator::GenerateAuthorisationHeader() { } QByteArray DropboxAuthenticator::GenerateAuthorisationHeader( - const QString& token, - const QString& token_secret) { + const QString& token, const QString& token_secret) { typedef QPair Param; - QByteArray signature = QUrl::toPercentEncoding( - QString("%1&%2").arg(kAppSecret, token_secret)); + QByteArray signature = + QUrl::toPercentEncoding(QString("%1&%2").arg(kAppSecret, token_secret)); QList params; params << Param("oauth_consumer_key", kAppKey) << Param("oauth_signature_method", "PLAINTEXT") - << Param("oauth_timestamp", QString::number(time(NULL))) + << Param("oauth_timestamp", QString::number(time(nullptr))) << Param("oauth_nonce", QString::number(qrand())) << Param("oauth_signature", signature); if (!token.isNull()) { params << Param("oauth_token", token); } QStringList encoded_params; - foreach (const Param& p, params) { + for (const Param& p : params) { encoded_params << QString("%1=\"%2\"").arg(p.first, p.second); } QString authorisation_header = QString("OAuth ") + encoded_params.join(", "); @@ -153,11 +149,12 @@ void DropboxAuthenticator::RequestAccountInformation() { request.setRawHeader("Authorization", GenerateAuthorisationHeader()); qLog(Debug) << Q_FUNC_INFO << url << request.rawHeader("Authorization"); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RequestAccountInformationFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestAccountInformationFinished(QNetworkReply*)), reply); } -void DropboxAuthenticator::RequestAccountInformationFinished(QNetworkReply* reply) { +void DropboxAuthenticator::RequestAccountInformationFinished( + QNetworkReply* reply) { reply->deleteLater(); QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); diff --git a/src/internet/dropboxauthenticator.h b/src/internet/dropboxauthenticator.h index 7a7e0875f..bd3a71809 100644 --- a/src/internet/dropboxauthenticator.h +++ b/src/internet/dropboxauthenticator.h @@ -11,7 +11,7 @@ class QNetworkReply; class DropboxAuthenticator : public QObject { Q_OBJECT public: - explicit DropboxAuthenticator(QObject* parent = 0); + explicit DropboxAuthenticator(QObject* parent = nullptr); void StartAuthorisation(); const QString& access_token() const { return access_token_; } @@ -19,10 +19,10 @@ class DropboxAuthenticator : public QObject { const QString& uid() const { return uid_; } const QString& name() const { return name_; } - static QByteArray GenerateAuthorisationHeader( - const QString& token, const QString& secret); + static QByteArray GenerateAuthorisationHeader(const QString& token, + const QString& secret); - signals: +signals: void Finished(); private slots: @@ -45,7 +45,6 @@ class DropboxAuthenticator : public QObject { QString token_; QString secret_; - // Permanent OAuth access tokens. QString access_token_; QString access_token_secret_; diff --git a/src/internet/dropboxservice.cpp b/src/internet/dropboxservice.cpp index 75637616e..f96b58cc6 100644 --- a/src/internet/dropboxservice.cpp +++ b/src/internet/dropboxservice.cpp @@ -24,21 +24,17 @@ namespace { static const char* kServiceId = "dropbox"; -static const char* kMediaEndpoint = - "https://api.dropbox.com/1/media/dropbox/"; -static const char* kDeltaEndpoint = - "https://api.dropbox.com/1/delta"; +static const char* kMediaEndpoint = "https://api.dropbox.com/1/media/dropbox/"; +static const char* kDeltaEndpoint = "https://api.dropbox.com/1/delta"; static const char* kLongPollEndpoint = "https://api-notify.dropbox.com/1/longpoll_delta"; } // namespace DropboxService::DropboxService(Application* app, InternetModel* parent) - : CloudFileService( - app, parent, - kServiceName, kServiceId, - QIcon(":/providers/dropbox.png"), - SettingsDialog::Page_Dropbox), + : CloudFileService(app, parent, kServiceName, kServiceId, + QIcon(":/providers/dropbox.png"), + SettingsDialog::Page_Dropbox), network_(new NetworkAccessManager(this)) { QSettings settings; settings.beginGroup(kSettingsGroup); @@ -59,7 +55,8 @@ void DropboxService::Connect() { } } -void DropboxService::AuthenticationFinished(DropboxAuthenticator* authenticator) { +void DropboxService::AuthenticationFinished( + DropboxAuthenticator* authenticator) { authenticator->deleteLater(); access_token_ = authenticator->access_token(); @@ -79,8 +76,7 @@ void DropboxService::AuthenticationFinished(DropboxAuthenticator* authenticator) QByteArray DropboxService::GenerateAuthorisationHeader() { return DropboxAuthenticator::GenerateAuthorisationHeader( - access_token_, - access_token_secret_); + access_token_, access_token_secret_); } void DropboxService::RequestFileList() { @@ -95,8 +91,8 @@ void DropboxService::RequestFileList() { request.setRawHeader("Authorization", GenerateAuthorisationHeader()); QNetworkReply* reply = network_->post(request, QByteArray()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RequestFileListFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestFileListFinished(QNetworkReply*)), reply); } void DropboxService::RequestFileListFinished(QNetworkReply* reply) { @@ -104,8 +100,7 @@ void DropboxService::RequestFileListFinished(QNetworkReply* reply) { QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); - if (response.contains("reset") && - response["reset"].toBool()) { + if (response.contains("reset") && response["reset"].toBool()) { qLog(Debug) << "Resetting Dropbox DB"; library_backend_->DeleteAll(); } @@ -116,7 +111,7 @@ void DropboxService::RequestFileListFinished(QNetworkReply* reply) { QVariantList contents = response["entries"].toList(); qLog(Debug) << "Delta found:" << contents.size(); - foreach (const QVariant& c, contents) { + for (const QVariant& c : contents) { QVariantList item = c.toList(); QString path = item[0].toString(); @@ -139,16 +134,17 @@ void DropboxService::RequestFileListFinished(QNetworkReply* reply) { continue; } - // Workaround: Since Dropbox doesn't recognize Opus files and thus treats them + // Workaround: Since Dropbox doesn't recognize Opus files and thus treats + // them // as application/octet-stream, we overwrite the mime type here - if (metadata["mime_type"].toString() == "application/octet-stream" && + if (metadata["mime_type"].toString() == "application/octet-stream" && url.toString().endsWith(".opus")) metadata["mime_type"] = GuessMimeTypeForFile(url.toString()); if (ShouldIndexFile(url, metadata["mime_type"].toString())) { QNetworkReply* reply = FetchContentUrl(url); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchContentUrlFinished(QNetworkReply*, QVariantMap)), + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchContentUrlFinished(QNetworkReply*, QVariantMap)), reply, metadata); } } @@ -172,8 +168,8 @@ void DropboxService::LongPollDelta() { QNetworkRequest request(request_url); request.setRawHeader("Authorization", GenerateAuthorisationHeader()); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(LongPollFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(LongPollFinished(QNetworkReply*)), reply); } void DropboxService::LongPollFinished(QNetworkReply* reply) { @@ -201,8 +197,8 @@ QNetworkReply* DropboxService::FetchContentUrl(const QUrl& url) { return network_->post(request, QByteArray()); } -void DropboxService::FetchContentUrlFinished( - QNetworkReply* reply, const QVariantMap& data) { +void DropboxService::FetchContentUrlFinished(QNetworkReply* reply, + const QVariantMap& data) { reply->deleteLater(); QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); @@ -220,11 +216,9 @@ void DropboxService::FetchContentUrlFinished( song.set_filesize(data["bytes"].toInt()); song.set_ctime(0); - MaybeAddFileToDatabase( - song, - data["mime_type"].toString(), - QUrl::fromEncoded(response["url"].toByteArray()), - QString::null); + MaybeAddFileToDatabase(song, data["mime_type"].toString(), + QUrl::fromEncoded(response["url"].toByteArray()), + QString::null); } QUrl DropboxService::GetStreamingUrlFromSongId(const QUrl& url) { diff --git a/src/internet/dropboxservice.h b/src/internet/dropboxservice.h index 2e026ab10..9434fa5da 100644 --- a/src/internet/dropboxservice.h +++ b/src/internet/dropboxservice.h @@ -21,7 +21,7 @@ class DropboxService : public CloudFileService { QUrl GetStreamingUrlFromSongId(const QUrl& url); - signals: +signals: void Connected(); public slots: diff --git a/src/internet/dropboxsettingspage.cpp b/src/internet/dropboxsettingspage.cpp index a6ad9dee6..22418d9d5 100644 --- a/src/internet/dropboxsettingspage.cpp +++ b/src/internet/dropboxsettingspage.cpp @@ -25,10 +25,9 @@ #include "ui/settingsdialog.h" DropboxSettingsPage::DropboxSettingsPage(SettingsDialog* parent) - : SettingsPage(parent), - ui_(new Ui::DropboxSettingsPage), - service_(dialog()->app()->internet_model()->Service()) -{ + : SettingsPage(parent), + ui_(new Ui::DropboxSettingsPage), + service_(dialog()->app()->internet_model()->Service()) { ui_->setupUi(this); ui_->login_state->AddCredentialGroup(ui_->login_container); @@ -38,9 +37,7 @@ DropboxSettingsPage::DropboxSettingsPage(SettingsDialog* parent) dialog()->installEventFilter(this); } -DropboxSettingsPage::~DropboxSettingsPage() { - delete ui_; -} +DropboxSettingsPage::~DropboxSettingsPage() { delete ui_; } void DropboxSettingsPage::Load() { QSettings s; @@ -60,11 +57,10 @@ void DropboxSettingsPage::Save() { void DropboxSettingsPage::LoginClicked() { DropboxAuthenticator* authenticator = new DropboxAuthenticator; - NewClosure(authenticator, SIGNAL(Finished()), - this, SLOT(Connected(DropboxAuthenticator*)), - authenticator); - NewClosure(authenticator, SIGNAL(Finished()), - service_, SLOT(AuthenticationFinished(DropboxAuthenticator*)), + NewClosure(authenticator, SIGNAL(Finished()), this, + SLOT(Connected(DropboxAuthenticator*)), authenticator); + NewClosure(authenticator, SIGNAL(Finished()), service_, + SLOT(AuthenticationFinished(DropboxAuthenticator*)), authenticator); authenticator->StartAuthorisation(); @@ -85,6 +81,6 @@ void DropboxSettingsPage::LogoutClicked() { } void DropboxSettingsPage::Connected(DropboxAuthenticator* authenticator) { - ui_->login_state->SetLoggedIn( - LoginStateWidget::LoggedIn, authenticator->name()); + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, + authenticator->name()); } diff --git a/src/internet/dropboxsettingspage.h b/src/internet/dropboxsettingspage.h index ea646a4bd..f03f97e0a 100644 --- a/src/internet/dropboxsettingspage.h +++ b/src/internet/dropboxsettingspage.h @@ -30,8 +30,8 @@ class Ui_DropboxSettingsPage; class DropboxSettingsPage : public SettingsPage { Q_OBJECT -public: - DropboxSettingsPage(SettingsDialog* parent = 0); + public: + DropboxSettingsPage(SettingsDialog* parent = nullptr); ~DropboxSettingsPage(); void Load(); @@ -40,15 +40,15 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -private slots: + private slots: void LoginClicked(); void LogoutClicked(); void Connected(DropboxAuthenticator* authenticator); -private: + private: Ui_DropboxSettingsPage* ui_; DropboxService* service_; }; -#endif // DROPBOXSETTINGSPAGE_H +#endif // DROPBOXSETTINGSPAGE_H diff --git a/src/internet/dropboxurlhandler.cpp b/src/internet/dropboxurlhandler.cpp index b5d381fdc..1a2068e2c 100644 --- a/src/internet/dropboxurlhandler.cpp +++ b/src/internet/dropboxurlhandler.cpp @@ -2,12 +2,8 @@ #include "internet/dropboxservice.h" -DropboxUrlHandler::DropboxUrlHandler( - DropboxService* service, - QObject* parent) - : UrlHandler(parent), - service_(service) { -} +DropboxUrlHandler::DropboxUrlHandler(DropboxService* service, QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult DropboxUrlHandler::StartLoading(const QUrl& url) { return LoadResult(url, LoadResult::TrackAvailable, diff --git a/src/internet/dropboxurlhandler.h b/src/internet/dropboxurlhandler.h index c234251ca..f86734f64 100644 --- a/src/internet/dropboxurlhandler.h +++ b/src/internet/dropboxurlhandler.h @@ -8,7 +8,7 @@ class DropboxService; class DropboxUrlHandler : public UrlHandler { Q_OBJECT public: - DropboxUrlHandler(DropboxService* service, QObject* parent = 0); + DropboxUrlHandler(DropboxService* service, QObject* parent = nullptr); QString scheme() const { return "dropbox"; } QIcon icon() const { return QIcon(":providers/dropbox.png"); } diff --git a/src/internet/fixlastfm.cpp b/src/internet/fixlastfm.cpp index 5bc36fad7..607f5c162 100644 --- a/src/internet/fixlastfm.cpp +++ b/src/internet/fixlastfm.cpp @@ -18,8 +18,5 @@ #include "fixlastfm.h" #ifdef QT_NO_DEBUG_OUTPUT - QDebug& operator<<(QDebug& d, const QUrl&) { - return d; - } +QDebug& operator<<(QDebug& d, const QUrl&) { return d; } #endif - diff --git a/src/internet/fixlastfm.h b/src/internet/fixlastfm.h index 139de00ec..f23e2702e 100644 --- a/src/internet/fixlastfm.h +++ b/src/internet/fixlastfm.h @@ -21,10 +21,10 @@ // Include this before to fix a compile error in release mode #ifdef QT_NO_DEBUG_OUTPUT -# include -# include - // Stub this out so lastfm/Track still compiles - QDebug& operator<<(QDebug&, const QUrl&); +#include +#include +// Stub this out so lastfm/Track still compiles +QDebug& operator<<(QDebug&, const QUrl&); #endif #endif diff --git a/src/internet/geolocator.cpp b/src/internet/geolocator.cpp index a2a2b4cc2..2c773b995 100644 --- a/src/internet/geolocator.cpp +++ b/src/internet/geolocator.cpp @@ -32,18 +32,14 @@ const char* Geolocator::kUrl = "http://data.clementine-player.org/geolocate"; using std::numeric_limits; Geolocator::LatLng::LatLng() - : lat_e6_(numeric_limits::min()), - lng_e6_(numeric_limits::min()) { -} + : lat_e6_(numeric_limits::min()), + lng_e6_(numeric_limits::min()) {} Geolocator::LatLng::LatLng(int lat_e6, int lng_e6) - : lat_e6_(lat_e6), - lng_e6_(lng_e6) { -} + : lat_e6_(lat_e6), lng_e6_(lng_e6) {} Geolocator::LatLng::LatLng(const QString& latlng) - : lat_e6_(numeric_limits::min()), - lng_e6_(numeric_limits::min()) { + : lat_e6_(numeric_limits::min()), lng_e6_(numeric_limits::min()) { QStringList split = latlng.split(","); if (split.length() != 2) { return; @@ -83,14 +79,13 @@ bool Geolocator::LatLng::IsValid() const { lng_e6_ != numeric_limits::min(); } -Geolocator::Geolocator(QObject* parent) - : QObject(parent) { -} +Geolocator::Geolocator(QObject* parent) : QObject(parent) {} void Geolocator::Geolocate() { QNetworkRequest req = QNetworkRequest(QUrl(kUrl)); QNetworkReply* reply = network_.get(req); - NewClosure(reply, SIGNAL(finished()), this, SLOT(RequestFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RequestFinished(QNetworkReply*)), reply); } void Geolocator::RequestFinished(QNetworkReply* reply) { diff --git a/src/internet/geolocator.h b/src/internet/geolocator.h index fabe4ccac..d0690aecc 100644 --- a/src/internet/geolocator.h +++ b/src/internet/geolocator.h @@ -25,7 +25,7 @@ class Geolocator : public QObject { Q_OBJECT public: - explicit Geolocator(QObject* parent = 0); + explicit Geolocator(QObject* parent = nullptr); void Geolocate(); @@ -47,7 +47,7 @@ class Geolocator : public QObject { int lng_e6_; }; - signals: +signals: void Finished(Geolocator::LatLng latlng); private slots: diff --git a/src/internet/googledriveclient.cpp b/src/internet/googledriveclient.cpp index fed872450..1beeecb51 100644 --- a/src/internet/googledriveclient.cpp +++ b/src/internet/googledriveclient.cpp @@ -42,16 +42,14 @@ static const char* kOAuthTokenEndpoint = static const char* kOAuthScope = "https://www.googleapis.com/auth/drive.readonly " "https://www.googleapis.com/auth/userinfo.email"; -static const char* kClientId = - "679260893280.apps.googleusercontent.com"; -static const char* kClientSecret = - "l3cWb8efUZsrBI4wmY3uKl6i"; +static const char* kClientId = "679260893280.apps.googleusercontent.com"; +static const char* kClientSecret = "l3cWb8efUZsrBI4wmY3uKl6i"; } QStringList File::parent_ids() const { QStringList ret; - foreach (const QVariant& var, data_["parents"].toList()) { + for (const QVariant& var : data_["parents"].toList()) { QVariantMap map(var.toMap()); if (map["isRoot"].toBool()) { @@ -64,28 +62,16 @@ QStringList File::parent_ids() const { return ret; } -ConnectResponse::ConnectResponse(QObject* parent) - : QObject(parent) -{ -} +ConnectResponse::ConnectResponse(QObject* parent) : QObject(parent) {} GetFileResponse::GetFileResponse(const QString& file_id, QObject* parent) - : QObject(parent), - file_id_(file_id) -{ -} + : QObject(parent), file_id_(file_id) {} ListChangesResponse::ListChangesResponse(const QString& cursor, QObject* parent) - : QObject(parent), - cursor_(cursor) -{ -} + : QObject(parent), cursor_(cursor) {} Client::Client(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)) -{ -} + : QObject(parent), network_(new NetworkAccessManager(this)) {} ConnectResponse* Client::Connect(const QString& refresh_token) { ConnectResponse* ret = new ConnectResponse(this); @@ -93,17 +79,14 @@ ConnectResponse* Client::Connect(const QString& refresh_token) { kClientId, kClientSecret, OAuthenticator::RedirectStyle::LOCALHOST, this); if (refresh_token.isEmpty()) { - oauth->StartAuthorisation( - kOAuthEndpoint, - kOAuthTokenEndpoint, - kOAuthScope); + oauth->StartAuthorisation(kOAuthEndpoint, kOAuthTokenEndpoint, kOAuthScope); } else { oauth->RefreshAuthorisation(kOAuthTokenEndpoint, refresh_token); } - NewClosure(oauth, SIGNAL(Finished()), - this, SLOT(ConnectFinished(ConnectResponse*,OAuthenticator*)), - ret, oauth); + NewClosure(oauth, SIGNAL(Finished()), this, + SLOT(ConnectFinished(ConnectResponse*, OAuthenticator*)), ret, + oauth); return ret; } @@ -118,13 +101,13 @@ void Client::ConnectFinished(ConnectResponse* response, OAuthenticator* oauth) { QNetworkRequest request(url); AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchUserInfoFinished(ConnectResponse*, QNetworkReply*)), - response, reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchUserInfoFinished(ConnectResponse*, QNetworkReply*)), + response, reply); } -void Client::FetchUserInfoFinished( - ConnectResponse* response, QNetworkReply* reply) { +void Client::FetchUserInfoFinished(ConnectResponse* response, + QNetworkReply* reply) { reply->deleteLater(); if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) != 200) { qLog(Warning) << "Failed to get user info" << reply->readAll(); @@ -146,8 +129,8 @@ void Client::FetchUserInfoFinished( } void Client::AddAuthorizationHeader(QNetworkRequest* request) const { - request->setRawHeader( - "Authorization", QString("Bearer %1").arg(access_token_).toUtf8()); + request->setRawHeader("Authorization", + QString("Bearer %1").arg(access_token_).toUtf8()); } GetFileResponse* Client::GetFile(const QString& file_id) { @@ -158,13 +141,13 @@ GetFileResponse* Client::GetFile(const QString& file_id) { QNetworkRequest request = QNetworkRequest(url); AddAuthorizationHeader(&request); // Never cache these requests as we will get out of date download URLs. - request.setAttribute( - QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); + request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, + QNetworkRequest::AlwaysNetwork); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(GetFileFinished(GetFileResponse*,QNetworkReply*)), - ret, reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(GetFileFinished(GetFileResponse*, QNetworkReply*)), ret, + reply); return ret; } @@ -191,7 +174,8 @@ ListChangesResponse* Client::ListChanges(const QString& cursor) { return ret; } -void Client::MakeListChangesRequest(ListChangesResponse* response, const QString& page_token) { +void Client::MakeListChangesRequest(ListChangesResponse* response, + const QString& page_token) { QUrl url(kGoogleDriveChanges); if (!response->cursor().isEmpty()) { url.addQueryItem("startChangeId", response->cursor()); @@ -206,12 +190,13 @@ void Client::MakeListChangesRequest(ListChangesResponse* response, const QString AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(ListChangesFinished(ListChangesResponse*,QNetworkReply*)), + NewClosure(reply, SIGNAL(finished()), this, + SLOT(ListChangesFinished(ListChangesResponse*, QNetworkReply*)), response, reply); } -void Client::ListChangesFinished(ListChangesResponse* response, QNetworkReply* reply) { +void Client::ListChangesFinished(ListChangesResponse* response, + QNetworkReply* reply) { reply->deleteLater(); QJson::Parser parser; @@ -231,7 +216,7 @@ void Client::ListChangesFinished(ListChangesResponse* response, QNetworkReply* r // Emit the FilesFound signal for the files in the response. FileList files; QList files_deleted; - foreach (const QVariant& v, result["items"].toList()) { + for (const QVariant& v : result["items"].toList()) { QVariantMap change = v.toMap(); if (!change["deleted"].toBool()) { files << File(change["file"].toMap()); @@ -256,7 +241,7 @@ void Client::ListChangesFinished(ListChangesResponse* response, QNetworkReply* r bool Client::is_authenticated() const { return !access_token_.isEmpty() && - QDateTime::currentDateTime().secsTo(expiry_time_) > 0; + QDateTime::currentDateTime().secsTo(expiry_time_) > 0; } void Client::ForgetCredentials() { diff --git a/src/internet/googledriveclient.h b/src/internet/googledriveclient.h index cecb2a1e9..3708f55e6 100644 --- a/src/internet/googledriveclient.h +++ b/src/internet/googledriveclient.h @@ -30,14 +30,13 @@ class QNetworkAccessManager; class QNetworkReply; class QNetworkRequest; - namespace google_drive { class Client; // Holds the metadata for a file on Google Drive. class File { -public: + public: File(const QVariantMap& data = QVariantMap()) : data_(data) {} static const char* kFolderMimeType; @@ -72,57 +71,55 @@ public: bool is_restricted() const { return has_label("restricted"); } bool is_viewed() const { return has_label("viewed"); } -private: + private: QVariantMap data_; }; typedef QList FileList; - class ConnectResponse : public QObject { Q_OBJECT friend class Client; -public: + public: const QString& refresh_token() const { return refresh_token_; } const QString& user_email() const { return user_email_; } signals: void Finished(); -private: + private: ConnectResponse(QObject* parent); QString refresh_token_; QString user_email_; }; - class GetFileResponse : public QObject { Q_OBJECT friend class Client; -public: + public: const QString& file_id() const { return file_id_; } const File& file() const { return file_; } signals: void Finished(); -private: + private: GetFileResponse(const QString& file_id, QObject* parent); QString file_id_; File file_; }; - class ListChangesResponse : public QObject { Q_OBJECT friend class Client; + public: const QString& cursor() const { return cursor_; } const QString& next_cursor() const { return next_cursor_; } - signals: +signals: void FilesFound(const QList& files); void FilesDeleted(const QList& files); void Finished(); @@ -133,12 +130,11 @@ class ListChangesResponse : public QObject { QString next_cursor_; }; - class Client : public QObject { Q_OBJECT -public: - Client(QObject* parent = 0); + public: + Client(QObject* parent = nullptr); bool is_authenticated() const; const QString& access_token() const { return access_token_; } @@ -149,28 +145,27 @@ public: GetFileResponse* GetFile(const QString& file_id); ListChangesResponse* ListChanges(const QString& cursor); - signals: void Authenticated(); -private slots: + private slots: void ConnectFinished(ConnectResponse* response, OAuthenticator* oauth); void FetchUserInfoFinished(ConnectResponse* response, QNetworkReply* reply); void GetFileFinished(GetFileResponse* response, QNetworkReply* reply); void ListChangesFinished(ListChangesResponse* response, QNetworkReply* reply); -private: + private: void AddAuthorizationHeader(QNetworkRequest* request) const; void MakeListChangesRequest(ListChangesResponse* response, const QString& page_token = QString()); -private: + private: QNetworkAccessManager* network_; QString access_token_; QDateTime expiry_time_; }; -} // namespace +} // namespace -#endif // GOOGLEDRIVECLIENT_H +#endif // GOOGLEDRIVECLIENT_H diff --git a/src/internet/googledriveservice.cpp b/src/internet/googledriveservice.cpp index 15fc3cc09..02436a34f 100644 --- a/src/internet/googledriveservice.cpp +++ b/src/internet/googledriveservice.cpp @@ -30,16 +30,12 @@ namespace { static const char* kDriveEditFileUrl = "https://docs.google.com/file/d/%1/edit"; static const char* kServiceId = "google_drive"; - } - GoogleDriveService::GoogleDriveService(Application* app, InternetModel* parent) - : CloudFileService( - app, parent, - kServiceName, kServiceId, - QIcon(":/providers/googledrive.png"), - SettingsDialog::Page_GoogleDrive), + : CloudFileService(app, parent, kServiceName, kServiceId, + QIcon(":/providers/googledrive.png"), + SettingsDialog::Page_GoogleDrive), client_(new google_drive::Client(this)) { app->player()->RegisterUrlHandler(new GoogleDriveUrlHandler(this, this)); } @@ -57,9 +53,8 @@ QString GoogleDriveService::refresh_token() const { void GoogleDriveService::Connect() { google_drive::ConnectResponse* response = client_->Connect(refresh_token()); - NewClosure(response, SIGNAL(Finished()), - this, SLOT(ConnectFinished(google_drive::ConnectResponse*)), - response); + NewClosure(response, SIGNAL(Finished()), this, + SLOT(ConnectFinished(google_drive::ConnectResponse*)), response); } void GoogleDriveService::ForgetCredentials() { @@ -73,24 +68,41 @@ void GoogleDriveService::ForgetCredentials() { } void GoogleDriveService::ListChanges(const QString& cursor) { - google_drive::ListChangesResponse* changes_response = client_->ListChanges(cursor); + google_drive::ListChangesResponse* changes_response = + client_->ListChanges(cursor); connect(changes_response, SIGNAL(FilesFound(QList)), SLOT(FilesFound(QList))); connect(changes_response, SIGNAL(FilesDeleted(QList)), SLOT(FilesDeleted(QList))); - NewClosure(changes_response, SIGNAL(Finished()), - this, SLOT(ListChangesFinished(google_drive::ListChangesResponse*)), + NewClosure(changes_response, SIGNAL(Finished()), this, + SLOT(ListChangesFinished(google_drive::ListChangesResponse*)), changes_response); } -void GoogleDriveService::ListChangesFinished(google_drive::ListChangesResponse* changes_response) { +void GoogleDriveService::ListChangesFinished( + google_drive::ListChangesResponse* changes_response) { changes_response->deleteLater(); - QSettings s; - s.beginGroup(kSettingsGroup); - s.setValue("cursor", changes_response->next_cursor()); + + const QString cursor = changes_response->next_cursor(); + if (is_indexing()) { + // Only save the cursor after all the songs have been indexed - that way if + // Clementine is closed it'll resume next time. + NewClosure(this, SIGNAL(AllIndexingTasksFinished()), + this, SLOT(SaveCursor(QString)), + cursor); + } else { + SaveCursor(cursor); + } } -void GoogleDriveService::ConnectFinished(google_drive::ConnectResponse* response) { +void GoogleDriveService::SaveCursor(const QString& cursor) { + QSettings s; + s.beginGroup(kSettingsGroup); + s.setValue("cursor", cursor); +} + +void GoogleDriveService::ConnectFinished( + google_drive::ConnectResponse* response) { response->deleteLater(); // Save the refresh token @@ -121,7 +133,7 @@ void GoogleDriveService::EnsureConnected() { } void GoogleDriveService::FilesFound(const QList& files) { - foreach (const google_drive::File& file, files) { + for (const google_drive::File& file : files) { if (!IsSupportedMimeType(file.mime_type())) { continue; } @@ -145,16 +157,13 @@ void GoogleDriveService::FilesFound(const QList& files) { song.set_title(file.title()); } - MaybeAddFileToDatabase( - song, - file.mime_type(), - file.download_url(), - QString("Bearer %1").arg(client_->access_token())); + MaybeAddFileToDatabase(song, file.mime_type(), file.download_url(), + QString("Bearer %1").arg(client_->access_token())); } } void GoogleDriveService::FilesDeleted(const QList& files) { - foreach (const QUrl& url, files) { + for (const QUrl& url : files) { Song song = library_backend_->GetSongByUrl(url); qLog(Debug) << "Deleting:" << url << song.title(); if (song.is_valid()) { @@ -181,25 +190,20 @@ void GoogleDriveService::ShowContextMenu(const QPoint& global_pos) { context_menu_.reset(new QMenu); context_menu_->addActions(GetPlaylistActions()); open_in_drive_action_ = context_menu_->addAction( - QIcon(":/providers/googledrive.png"), tr("Open in Google Drive"), - this, SLOT(OpenWithDrive())); + QIcon(":/providers/googledrive.png"), tr("Open in Google Drive"), this, + SLOT(OpenWithDrive())); context_menu_->addSeparator(); - context_menu_->addAction( - IconLoader::Load("download"), - tr("Cover Manager"), - this, - SLOT(ShowCoverManager())); - context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure..."), + context_menu_->addAction(IconLoader::Load("download"), tr("Cover Manager"), + this, SLOT(ShowCoverManager())); + context_menu_->addAction(IconLoader::Load("configure"), tr("Configure..."), this, SLOT(ShowSettingsDialog())); } // Only show some actions if there are real songs selected bool songs_selected = false; - foreach (const QModelIndex& index, model()->selected_indexes()) { + for (const QModelIndex& index : model()->selected_indexes()) { const int type = index.data(LibraryModel::Role_Type).toInt(); - if (type == LibraryItem::Type_Song || - type == LibraryItem::Type_Container) { + if (type == LibraryItem::Type_Song || type == LibraryItem::Type_Container) { songs_selected = true; break; } @@ -213,15 +217,15 @@ void GoogleDriveService::ShowContextMenu(const QPoint& global_pos) { void GoogleDriveService::OpenWithDrive() { // Map indexes to the actual library model. QModelIndexList library_indexes; - foreach (const QModelIndex& index, model()->selected_indexes()) { + for (const QModelIndex& index : model()->selected_indexes()) { if (index.model() == library_sort_model_) { library_indexes << library_sort_model_->mapToSource(index); } } // Ask the library for the songs for these indexes. - foreach (const Song& song, library_model_->GetChildSongs(library_indexes)) { + for (const Song& song : library_model_->GetChildSongs(library_indexes)) { QDesktopServices::openUrl( - QUrl(QString(kDriveEditFileUrl).arg(song.url().path()))); + QUrl(QString(kDriveEditFileUrl).arg(song.url().path()))); } } diff --git a/src/internet/googledriveservice.h b/src/internet/googledriveservice.h index a5760902b..2e3696fa4 100644 --- a/src/internet/googledriveservice.h +++ b/src/internet/googledriveservice.h @@ -4,11 +4,11 @@ #include "cloudfileservice.h" namespace google_drive { - class Client; - class ConnectResponse; - class File; - class ListFilesResponse; - class ListChangesResponse; +class Client; +class ConnectResponse; +class File; +class ListFilesResponse; +class ListChangesResponse; } class GoogleDriveService : public CloudFileService { @@ -31,7 +31,7 @@ class GoogleDriveService : public CloudFileService { void Connect(); void ForgetCredentials(); - signals: +signals: void Connected(); private slots: @@ -39,6 +39,7 @@ class GoogleDriveService : public CloudFileService { void FilesFound(const QList& files); void FilesDeleted(const QList& files); void ListChangesFinished(google_drive::ListChangesResponse* response); + void SaveCursor(const QString& cursor); void OpenWithDrive(); diff --git a/src/internet/googledrivesettingspage.cpp b/src/internet/googledrivesettingspage.cpp index c19f6f344..5a4ff2622 100644 --- a/src/internet/googledrivesettingspage.cpp +++ b/src/internet/googledrivesettingspage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -26,10 +26,10 @@ #include GoogleDriveSettingsPage::GoogleDriveSettingsPage(SettingsDialog* parent) - : SettingsPage(parent), - ui_(new Ui::GoogleDriveSettingsPage), - service_(dialog()->app()->internet_model()->Service()) -{ + : SettingsPage(parent), + ui_(new Ui::GoogleDriveSettingsPage), + service_( + dialog()->app()->internet_model()->Service()) { ui_->setupUi(this); ui_->login_state->AddCredentialGroup(ui_->login_container); @@ -40,9 +40,7 @@ GoogleDriveSettingsPage::GoogleDriveSettingsPage(SettingsDialog* parent) dialog()->installEventFilter(this); } -GoogleDriveSettingsPage::~GoogleDriveSettingsPage() { - delete ui_; -} +GoogleDriveSettingsPage::~GoogleDriveSettingsPage() { delete ui_; } void GoogleDriveSettingsPage::Load() { QSettings s; diff --git a/src/internet/googledrivesettingspage.h b/src/internet/googledrivesettingspage.h index cbf39a417..37da9cb46 100644 --- a/src/internet/googledrivesettingspage.h +++ b/src/internet/googledrivesettingspage.h @@ -29,8 +29,8 @@ class Ui_GoogleDriveSettingsPage; class GoogleDriveSettingsPage : public SettingsPage { Q_OBJECT -public: - GoogleDriveSettingsPage(SettingsDialog* parent = 0); + public: + GoogleDriveSettingsPage(SettingsDialog* parent = nullptr); ~GoogleDriveSettingsPage(); void Load(); @@ -39,15 +39,15 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -private slots: + private slots: void LoginClicked(); void LogoutClicked(); void Connected(); -private: + private: Ui_GoogleDriveSettingsPage* ui_; GoogleDriveService* service_; }; -#endif // GOOGLEDRIVESETTINGSPAGE_H +#endif // GOOGLEDRIVESETTINGSPAGE_H diff --git a/src/internet/googledriveurlhandler.cpp b/src/internet/googledriveurlhandler.cpp index 3c74e72dc..2a35297cb 100644 --- a/src/internet/googledriveurlhandler.cpp +++ b/src/internet/googledriveurlhandler.cpp @@ -2,12 +2,9 @@ #include "googledriveservice.h" -GoogleDriveUrlHandler::GoogleDriveUrlHandler( - GoogleDriveService* service, - QObject* parent) - : UrlHandler(parent), - service_(service) { -} +GoogleDriveUrlHandler::GoogleDriveUrlHandler(GoogleDriveService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult GoogleDriveUrlHandler::StartLoading(const QUrl& url) { QString file_id = url.path(); diff --git a/src/internet/googledriveurlhandler.h b/src/internet/googledriveurlhandler.h index 46b1bebea..a4f9a4bf7 100644 --- a/src/internet/googledriveurlhandler.h +++ b/src/internet/googledriveurlhandler.h @@ -8,7 +8,7 @@ class GoogleDriveService; class GoogleDriveUrlHandler : public UrlHandler { Q_OBJECT public: - GoogleDriveUrlHandler(GoogleDriveService* service, QObject* parent = 0); + GoogleDriveUrlHandler(GoogleDriveService* service, QObject* parent = nullptr); QString scheme() const { return "googledrive"; } QIcon icon() const { return QIcon(":providers/googledrive.png"); } diff --git a/src/internet/groovesharkradio.cpp b/src/internet/groovesharkradio.cpp index 80cec51ba..64e127908 100644 --- a/src/internet/groovesharkradio.cpp +++ b/src/internet/groovesharkradio.cpp @@ -22,25 +22,14 @@ #include "internet/internetplaylistitem.h" GroovesharkRadio::GroovesharkRadio(GroovesharkService* service) - : service_(service), - tag_id_(0), - use_tag_(false), - first_time_(true) { -} + : service_(service), tag_id_(0), use_tag_(false), first_time_(true) {} GroovesharkRadio::GroovesharkRadio(GroovesharkService* service, int tag_id) - : service_(service), - tag_id_(tag_id), - use_tag_(true), - first_time_(true) { -} + : service_(service), tag_id_(tag_id), use_tag_(true), first_time_(true) {} -void GroovesharkRadio::Load(const QByteArray& data) { -} +void GroovesharkRadio::Load(const QByteArray& data) {} -QByteArray GroovesharkRadio::Save() const { - return QByteArray(); -} +QByteArray GroovesharkRadio::Save() const { return QByteArray(); } PlaylistItemList GroovesharkRadio::Generate() { PlaylistItemList items; @@ -55,7 +44,8 @@ PlaylistItemList GroovesharkRadio::Generate() { if (!song.is_valid()) { return items; } - PlaylistItemPtr playlist_item = PlaylistItemPtr(new InternetPlaylistItem(service_, song)); + PlaylistItemPtr playlist_item = + PlaylistItemPtr(new InternetPlaylistItem(service_, song)); items << playlist_item; first_time_ = false; } @@ -63,7 +53,8 @@ PlaylistItemList GroovesharkRadio::Generate() { if (!song.is_valid()) { return items; } - PlaylistItemPtr playlist_item = PlaylistItemPtr(new InternetPlaylistItem(service_, song)); + PlaylistItemPtr playlist_item = + PlaylistItemPtr(new InternetPlaylistItem(service_, song)); items << playlist_item; return items; } diff --git a/src/internet/groovesharkradio.h b/src/internet/groovesharkradio.h index f1ccaf0d2..56df3d619 100644 --- a/src/internet/groovesharkradio.h +++ b/src/internet/groovesharkradio.h @@ -24,7 +24,7 @@ class GroovesharkService; class GroovesharkRadio : public smart_playlists::Generator { -public: + public: // Start Grooveshark radio for a particular type of music GroovesharkRadio(GroovesharkService* service, int tag_id); // Start Grooveshark radio based on last artists and songs you listen to @@ -37,7 +37,7 @@ public: PlaylistItemList GenerateMore(int count) { return Generate(); } bool is_dynamic() const { return true; } -private: + private: GroovesharkService* service_; int tag_id_; // Boolean to specify if we should use tag. If not, we will used autoplay @@ -47,5 +47,5 @@ private: bool first_time_; QVariantMap autoplay_state_; }; - -#endif // GROOVESHARKRADIO_H + +#endif // GROOVESHARKRADIO_H diff --git a/src/internet/groovesharkservice.cpp b/src/internet/groovesharkservice.cpp index af19640c4..7a9ed39e3 100644 --- a/src/internet/groovesharkservice.cpp +++ b/src/internet/groovesharkservice.cpp @@ -17,7 +17,7 @@ #include "groovesharkservice.h" -#include +#include #include #include @@ -67,12 +67,14 @@ using smart_playlists::GeneratorPtr; // accessible to third parties. Therefore this application key is obfuscated to // prevent third parties from viewing it. const char* GroovesharkService::kApiKey = "clementineplayer"; -const char* GroovesharkService::kApiSecret = "OzLDTB5XqmhkkhxMUK0/Mp5PQgD5O27DTEJa/jtkwEw="; +const char* GroovesharkService::kApiSecret = + "OzLDTB5XqmhkkhxMUK0/Mp5PQgD5O27DTEJa/jtkwEw="; const char* GroovesharkService::kServiceName = "Grooveshark"; const char* GroovesharkService::kSettingsGroup = "Grooveshark"; const char* GroovesharkService::kUrl = "http://api.grooveshark.com/ws/3.0/"; -const char* GroovesharkService::kUrlCover = "http://beta.grooveshark.com/static/amazonart/l"; +const char* GroovesharkService::kUrlCover = + "http://beta.grooveshark.com/static/amazonart/l"; const char* GroovesharkService::kHomepage = "http://grooveshark.com/"; const int GroovesharkService::kSongSearchLimit = 100; @@ -83,38 +85,39 @@ const int GroovesharkService::kSearchDelayMsec = 400; typedef QPair Param; -GroovesharkService::GroovesharkService(Application* app, InternetModel *parent) - : InternetService(kServiceName, app, parent, parent), - url_handler_(new GroovesharkUrlHandler(this, this)), - next_pending_search_id_(0), - root_(NULL), - search_(NULL), - popular_month_(NULL), - popular_today_(NULL), - stations_(NULL), - grooveshark_radio_(NULL), - favorites_(NULL), - library_(NULL), - playlists_parent_(NULL), - subscribed_playlists_parent_(NULL), - network_(new NetworkAccessManager(this)), - context_menu_(NULL), - create_playlist_(NULL), - delete_playlist_(NULL), - rename_playlist_(NULL), - remove_from_playlist_(NULL), - remove_from_favorites_(NULL), - remove_from_library_(NULL), - get_url_to_share_song_(NULL), - get_url_to_share_playlist_(NULL), - search_box_(new SearchBoxWidget(this)), - search_delay_(new QTimer(this)), - last_search_reply_(NULL), - api_key_(QByteArray::fromBase64(kApiSecret)), - login_state_(LoginState_OtherError), - task_popular_id_(0), - task_playlists_id_(0), - task_search_id_(0) { +GroovesharkService::GroovesharkService(Application* app, InternetModel* parent) + : InternetService(kServiceName, app, parent, parent), + url_handler_(new GroovesharkUrlHandler(this, this)), + next_pending_search_id_(0), + next_pending_playlist_retrieve_id_(0), + root_(nullptr), + search_(nullptr), + popular_month_(nullptr), + popular_today_(nullptr), + stations_(nullptr), + grooveshark_radio_(nullptr), + favorites_(nullptr), + library_(nullptr), + playlists_parent_(nullptr), + subscribed_playlists_parent_(nullptr), + network_(new NetworkAccessManager(this)), + context_menu_(nullptr), + create_playlist_(nullptr), + delete_playlist_(nullptr), + rename_playlist_(nullptr), + remove_from_playlist_(nullptr), + remove_from_favorites_(nullptr), + remove_from_library_(nullptr), + get_url_to_share_song_(nullptr), + get_url_to_share_playlist_(nullptr), + search_box_(new SearchBoxWidget(this)), + search_delay_(new QTimer(this)), + last_search_reply_(nullptr), + api_key_(QByteArray::fromBase64(kApiSecret)), + login_state_(LoginState_OtherError), + task_popular_id_(0), + task_playlists_id_(0), + task_search_id_(0) { app_->player()->RegisterUrlHandler(url_handler_); @@ -128,27 +131,28 @@ GroovesharkService::GroovesharkService(Application* app, InternetModel *parent) session_id_ = s.value("sessionid").toString(); username_ = s.value("username").toString(); - GroovesharkSearchProvider* search_provider = new GroovesharkSearchProvider(app_, this); + GroovesharkSearchProvider* search_provider = + new GroovesharkSearchProvider(app_, this); search_provider->Init(this); app_->global_search()->AddProvider(search_provider); - // Init secret: this code is ugly, but that's good as nobody is supposed to wonder what it does - QByteArray ba = QByteArray::fromBase64(QCoreApplication::applicationName().toLatin1()); + // Init secret: this code is ugly, but that's good as nobody is supposed to + // wonder what it does + QByteArray ba = + QByteArray::fromBase64(QCoreApplication::applicationName().toLatin1()); int n = api_key_.length(), n2 = ba.length(); - for (int i=0; isetData(true, InternetModel::Role_CanLazyLoad); root_->setData(InternetModel::PlayBehaviour_DoubleClickAction, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); return root_; } @@ -168,9 +172,8 @@ void GroovesharkService::ShowConfig() { } QWidget* GroovesharkService::HeaderWidget() const { - if (IsLoggedIn()) - return search_box_; - return NULL; + if (IsLoggedIn()) return search_box_; + return nullptr; } void GroovesharkService::Search(const QString& text, bool now) { @@ -194,8 +197,7 @@ void GroovesharkService::Search(const QString& text, bool now) { int GroovesharkService::SimpleSearch(const QString& query) { QList parameters; - parameters << Param("query", query) - << Param("country", "") + parameters << Param("query", query) << Param("country", "") << Param("limit", QString::number(kSongSimpleSearchLimit)) << Param("offset", ""); @@ -216,17 +218,15 @@ void GroovesharkService::SimpleSearchFinished(QNetworkReply* reply, int id) { int GroovesharkService::SearchAlbums(const QString& query) { QList parameters; - parameters << Param("query", query) - << Param("country", "") + parameters << Param("query", query) << Param("country", "") << Param("limit", QString::number(kAlbumSearchLimit)); QNetworkReply* reply = CreateRequest("getAlbumSearchResults", parameters); const int id = next_pending_search_id_++; - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SearchAlbumsFinished(QNetworkReply*,int)), - reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SearchAlbumsFinished(QNetworkReply*, int)), reply, id); return id; } @@ -238,7 +238,7 @@ void GroovesharkService::SearchAlbumsFinished(QNetworkReply* reply, int id) { QVariantList albums = result["albums"].toList(); QList ret; - foreach (const QVariant& v, albums) { + for (const QVariant& v : albums) { quint64 album_id = v.toMap()["AlbumID"].toULongLong(); GetAlbumSongs(album_id); ret << album_id; @@ -249,15 +249,15 @@ void GroovesharkService::SearchAlbumsFinished(QNetworkReply* reply, int id) { void GroovesharkService::GetAlbumSongs(quint64 album_id) { QList parameters; - parameters << Param("albumID", album_id) - << Param("country", ""); + parameters << Param("albumID", album_id) << Param("country", ""); QNetworkReply* reply = CreateRequest("getAlbumSongs", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(GetAlbumSongsFinished(QNetworkReply*,quint64)), - reply, album_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(GetAlbumSongsFinished(QNetworkReply*, quint64)), reply, + album_id); } -void GroovesharkService::GetAlbumSongsFinished(QNetworkReply* reply, quint64 album_id) { +void GroovesharkService::GetAlbumSongsFinished(QNetworkReply* reply, + quint64 album_id) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); SongList songs = ExtractSongs(result); @@ -267,16 +267,16 @@ void GroovesharkService::GetAlbumSongsFinished(QNetworkReply* reply, quint64 alb void GroovesharkService::DoSearch() { if (!task_search_id_) { - task_search_id_ = app_->task_manager()->StartTask(tr("Searching on Grooveshark")); + task_search_id_ = + app_->task_manager()->StartTask(tr("Searching on Grooveshark")); } ClearSearchResults(); QList parameters; - parameters << Param("query", pending_search_) - << Param("country", "") - << Param("limit", QString::number(kSongSearchLimit)) - << Param("offset", ""); + parameters << Param("query", pending_search_) << Param("country", "") + << Param("limit", QString::number(kSongSearchLimit)) + << Param("offset", ""); last_search_reply_ = CreateRequest("getSongSearchResults", parameters); NewClosure(last_search_reply_, SIGNAL(finished()), this, SLOT(SearchSongsFinished(QNetworkReply*)), last_search_reply_); @@ -285,8 +285,7 @@ void GroovesharkService::DoSearch() { void GroovesharkService::SearchSongsFinished(QNetworkReply* reply) { reply->deleteLater(); - if (reply != last_search_reply_) - return; + if (reply != last_search_reply_) return; QVariantMap result = ExtractResult(reply); SongList songs = ExtractSongs(result); @@ -294,7 +293,7 @@ void GroovesharkService::SearchSongsFinished(QNetworkReply* reply) { task_search_id_ = 0; // Fill results list - foreach (const Song& song, songs) { + for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); search_->appendRow(child); } @@ -304,30 +303,30 @@ void GroovesharkService::SearchSongsFinished(QNetworkReply* reply) { } void GroovesharkService::InitCountry() { - if (!country_.isEmpty()) - return; + if (!country_.isEmpty()) return; // Get country info - QNetworkReply *reply_country = CreateRequest("getCountry", QList()); + QNetworkReply* reply_country = CreateRequest("getCountry", QList()); if (WaitForReply(reply_country)) { country_ = ExtractResult(reply_country); } reply_country->deleteLater(); } -QUrl GroovesharkService::GetStreamingUrlFromSongId(const QString& song_id, const QString& artist_id, - QString* server_id, QString* stream_key, qint64* length_nanosec) { +QUrl GroovesharkService::GetStreamingUrlFromSongId(const QString& song_id, + const QString& artist_id, + QString* server_id, + QString* stream_key, + qint64* length_nanosec) { QList parameters; InitCountry(); - parameters << Param("songID", song_id) - << Param("country", country_); + parameters << Param("songID", song_id) << Param("country", country_); QNetworkReply* reply = CreateRequest("getSubscriberStreamKey", parameters); // Wait for the reply bool reply_has_timeouted = !WaitForReply(reply); reply->deleteLater(); - if (reply_has_timeouted) - return QUrl(); + if (reply_has_timeouted) return QUrl(); QVariantMap result = ExtractResult(reply); server_id->clear(); @@ -339,23 +338,23 @@ QUrl GroovesharkService::GetStreamingUrlFromSongId(const QString& song_id, const last_songs_ids_.append(song_id.toInt()); last_artists_ids_.append(artist_id.toInt()); // If we have enough ids, remove the old ones - if (last_songs_ids_.size() > 100) - last_songs_ids_.removeFirst(); - if (last_artists_ids_.size() > 100) - last_artists_ids_.removeFirst(); + if (last_songs_ids_.size() > 100) last_songs_ids_.removeFirst(); + if (last_artists_ids_.size() > 100) last_artists_ids_.removeFirst(); return QUrl(result["url"].toString()); } -void GroovesharkService::Login(const QString& username, const QString& password) { +void GroovesharkService::Login(const QString& username, + const QString& password) { // To login, we first need to create a session. Next, we will authenticate // this session using the user's username and password (for now, we just keep // them in mind) username_ = username; - password_ = QCryptographicHash::hash(password.toLocal8Bit(), QCryptographicHash::Md5).toHex(); + password_ = QCryptographicHash::hash(password.toLocal8Bit(), + QCryptographicHash::Md5).toHex(); QList parameters; - QNetworkReply *reply = CreateRequest("startSession", parameters, true); + QNetworkReply* reply = CreateRequest("startSession", parameters, true); NewClosure(reply, SIGNAL(finished()), this, SLOT(SessionCreated(QNetworkReply*)), reply); @@ -364,7 +363,8 @@ void GroovesharkService::Login(const QString& username, const QString& password) void GroovesharkService::SessionCreated(QNetworkReply* reply) { reply->deleteLater(); - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != + 200) { emit StreamError("Failed to create Grooveshark session: " + reply->errorString()); emit LoginFinished(false); @@ -383,10 +383,9 @@ void GroovesharkService::SessionCreated(QNetworkReply* reply) { void GroovesharkService::AuthenticateSession() { QList parameters; - parameters << Param("login", username_) - << Param("password", password_); + parameters << Param("login", username_) << Param("password", password_); - QNetworkReply *reply = CreateRequest("authenticate", parameters, true); + QNetworkReply* reply = CreateRequest("authenticate", parameters, true); NewClosure(reply, SIGNAL(finished()), this, SLOT(Authenticated(QNetworkReply*)), reply); } @@ -400,12 +399,14 @@ void GroovesharkService::Authenticated(QNetworkReply* reply) { if (!result["success"].toBool() || result["UserID"].toInt() == 0) { error = tr("Invalid username and/or password"); login_state_ = LoginState_AuthFailed; - } else if(!result["IsAnywhere"].toBool() || !result["IsPremium"].toBool()) { - error = tr("User %1 doesn't have a Grooveshark Anywhere account").arg(username_); + } else if (!result["IsAnywhere"].toBool() || !result["IsPremium"].toBool()) { + error = tr("User %1 doesn't have a Grooveshark Anywhere account") + .arg(username_); login_state_ = LoginState_NoPremium; } if (!error.isEmpty()) { - QMessageBox::warning(NULL, tr("Grooveshark login error"), error, QMessageBox::Close); + QMessageBox::warning(nullptr, tr("Grooveshark login error"), error, + QMessageBox::Close); ResetSessionId(); emit LoginFinished(false); return; @@ -417,8 +418,7 @@ void GroovesharkService::Authenticated(QNetworkReply* reply) { } void GroovesharkService::ClearSearchResults() { - if (search_) - search_->removeRows(0, search_->rowCount()); + if (search_) search_->removeRows(0, search_->rowCount()); } void GroovesharkService::Logout() { @@ -430,19 +430,24 @@ void GroovesharkService::RemoveItems() { root_->removeRows(0, root_->rowCount()); // 'search', 'favorites', 'popular', ... items were root's children, and have // been deleted: we should update these now invalid pointers - search_ = NULL; - popular_month_ = NULL; - popular_today_ = NULL; - library_ = NULL; - favorites_ = NULL; - subscribed_playlists_parent_ = NULL; - stations_ = NULL; - grooveshark_radio_ = NULL; - playlists_parent_ = NULL; + search_ = nullptr; + popular_month_ = nullptr; + popular_today_ = nullptr; + library_ = nullptr; + favorites_ = nullptr; + subscribed_playlists_parent_ = nullptr; + stations_ = nullptr; + grooveshark_radio_ = nullptr; + playlists_parent_ = nullptr; playlists_.clear(); - subscribed_playlists_parent_ = NULL; + subscribed_playlists_parent_ = nullptr; subscribed_playlists_.clear(); + // Cancel any pending requests and mark tasks as finished, in case they weren't + // finished yet. pending_retrieve_playlists_.clear(); + app_->task_manager()->SetTaskFinished(task_playlists_id_); + app_->task_manager()->SetTaskFinished(task_popular_id_); + app_->task_manager()->SetTaskFinished(task_search_id_); } void GroovesharkService::ResetSessionId() { @@ -457,16 +462,16 @@ void GroovesharkService::ShowContextMenu(const QPoint& global_pos) { EnsureMenuCreated(); // Check if we should display actions - bool display_delete_playlist_action = false, - display_remove_from_playlist_action = false, - display_remove_from_favorites_action = false, - display_remove_from_library_action = false, - display_share_song_url = false, - display_share_playlist_url = false; + bool display_delete_playlist_action = false, + display_remove_from_playlist_action = false, + display_remove_from_favorites_action = false, + display_remove_from_library_action = false, + display_share_song_url = false, display_share_playlist_url = false; QModelIndex index(model()->current_index()); - if (index.data(InternetModel::Role_Type).toInt() == InternetModel::Type_UserPlaylist && + if (index.data(InternetModel::Role_Type).toInt() == + InternetModel::Type_UserPlaylist && index.data(Role_PlaylistType).toInt() == UserPlaylist) { display_delete_playlist_action = true; } @@ -491,19 +496,22 @@ void GroovesharkService::ShowContextMenu(const QPoint& global_pos) { // Check if we can display actions to get URL for sharing songs/playlists: // - share song - if (index.data(InternetModel::Role_Type).toInt() == InternetModel::Type_Track) { + if (index.data(InternetModel::Role_Type).toInt() == + InternetModel::Type_Track) { display_share_song_url = true; - current_song_id_ = ExtractSongId(index.data(InternetModel::Role_Url).toUrl()); + current_song_id_ = + ExtractSongId(index.data(InternetModel::Role_Url).toUrl()); } get_url_to_share_song_->setVisible(display_share_song_url); // - share playlist - if (index.data(InternetModel::Role_Type).toInt() == InternetModel::Type_UserPlaylist - && index.data(Role_UserPlaylistId).isValid()) { + if (index.data(InternetModel::Role_Type).toInt() == + InternetModel::Type_UserPlaylist && + index.data(Role_UserPlaylistId).isValid()) { display_share_playlist_url = true; current_playlist_id_ = index.data(Role_UserPlaylistId).toInt(); - } else if (parent_type == InternetModel::Type_UserPlaylist - && index.parent().data(Role_UserPlaylistId).isValid()) { + } else if (parent_type == InternetModel::Type_UserPlaylist && + index.parent().data(Role_UserPlaylistId).isValid()) { display_share_playlist_url = true; current_playlist_id_ = index.parent().data(Role_UserPlaylistId).toInt(); } @@ -513,7 +521,7 @@ void GroovesharkService::ShowContextMenu(const QPoint& global_pos) { } void GroovesharkService::EnsureMenuCreated() { - if(!context_menu_) { + if (!context_menu_) { context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); create_playlist_ = context_menu_->addAction( @@ -527,30 +535,30 @@ void GroovesharkService::EnsureMenuCreated() { this, SLOT(RenameCurrentPlaylist())); context_menu_->addSeparator(); remove_from_playlist_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Remove from playlist"), - this, SLOT(RemoveCurrentFromPlaylist())); + IconLoader::Load("list-remove"), tr("Remove from playlist"), this, + SLOT(RemoveCurrentFromPlaylist())); remove_from_favorites_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Remove from favorites"), - this, SLOT(RemoveCurrentFromFavorites())); + IconLoader::Load("list-remove"), tr("Remove from favorites"), this, + SLOT(RemoveCurrentFromFavorites())); remove_from_library_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Remove from My Music"), - this, SLOT(RemoveCurrentFromLibrary())); - get_url_to_share_song_ = context_menu_->addAction( - tr("Get a URL to share this Grooveshark song"), - this, SLOT(GetCurrentSongUrlToShare())); + IconLoader::Load("list-remove"), tr("Remove from My Music"), this, + SLOT(RemoveCurrentFromLibrary())); + get_url_to_share_song_ = + context_menu_->addAction(tr("Get a URL to share this Grooveshark song"), + this, SLOT(GetCurrentSongUrlToShare())); get_url_to_share_playlist_ = context_menu_->addAction( - tr("Get a URL to share this Grooveshark playlist"), - this, SLOT(GetCurrentPlaylistUrlToShare())); + tr("Get a URL to share this Grooveshark playlist"), this, + SLOT(GetCurrentPlaylistUrlToShare())); context_menu_->addSeparator(); context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg("grooveshark.com"), this, SLOT(Homepage())); - context_menu_->addAction(IconLoader::Load("view-refresh"), - tr("Refresh"), this, SLOT(RefreshItems())); + context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh"), + this, SLOT(RefreshItems())); context_menu_->addSeparator(); context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure Grooveshark..."), - this, SLOT(ShowConfig())); + tr("Configure Grooveshark..."), this, + SLOT(ShowConfig())); } } @@ -565,48 +573,61 @@ void GroovesharkService::RefreshItems() { void GroovesharkService::EnsureItemsCreated() { if (IsLoggedIn() && !search_) { - search_ = new QStandardItem(IconLoader::Load("edit-find"), - tr("Search results")); - search_->setToolTip(tr("Start typing something on the search box above to " - "fill this search results list")); + search_ = + new QStandardItem(IconLoader::Load("edit-find"), tr("Search results")); + search_->setToolTip( + tr("Start typing something on the search box above to " + "fill this search results list")); search_->setData(InternetModel::PlayBehaviour_MultipleItems, InternetModel::Role_PlayBehaviour); root_->appendRow(search_); - QStandardItem* popular = new QStandardItem(QIcon(":/star-on.png"), - tr("Popular songs")); + QStandardItem* popular = + new QStandardItem(QIcon(":/star-on.png"), tr("Popular songs")); root_->appendRow(popular); - popular_month_ = new QStandardItem(QIcon(":/star-on.png"), tr("Popular songs of the Month")); - popular_month_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + popular_month_ = new QStandardItem(QIcon(":/star-on.png"), + tr("Popular songs of the Month")); + popular_month_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); popular_month_->setData(true, InternetModel::Role_CanLazyLoad); popular_month_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); popular->appendRow(popular_month_); - popular_today_ = new QStandardItem(QIcon(":/star-on.png"), tr("Popular songs today")); - popular_today_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + popular_today_ = + new QStandardItem(QIcon(":/star-on.png"), tr("Popular songs today")); + popular_today_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); popular_today_->setData(true, InternetModel::Role_CanLazyLoad); popular_today_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); popular->appendRow(popular_today_); - QStandardItem* radios_divider = new QStandardItem(QIcon(":last.fm/icon_radio.png"), - tr("Radios")); + QStandardItem* radios_divider = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Radios")); root_->appendRow(radios_divider); - stations_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Stations")); - stations_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + stations_ = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Stations")); + stations_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); stations_->setData(true, InternetModel::Role_CanLazyLoad); radios_divider->appendRow(stations_); - grooveshark_radio_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Grooveshark radio")); - grooveshark_radio_->setToolTip(tr("Listen to Grooveshark songs based on what you've listened to previously")); - grooveshark_radio_->setData(InternetModel::Type_SmartPlaylist, InternetModel::Role_Type); + grooveshark_radio_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), + tr("Grooveshark radio")); + grooveshark_radio_->setToolTip( + tr("Listen to Grooveshark songs based on what you've listened to " + "previously")); + grooveshark_radio_->setData(InternetModel::Type_SmartPlaylist, + InternetModel::Role_Type); radios_divider->appendRow(grooveshark_radio_); - library_ = new QStandardItem(IconLoader::Load("folder-sound"), tr("My Music")); - library_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + library_ = + new QStandardItem(IconLoader::Load("folder-sound"), tr("My Music")); + library_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); library_->setData(UserLibrary, Role_PlaylistType); library_->setData(true, InternetModel::Role_CanLazyLoad); library_->setData(true, InternetModel::Role_CanBeModified); @@ -614,8 +635,10 @@ void GroovesharkService::EnsureItemsCreated() { InternetModel::Role_PlayBehaviour); root_->appendRow(library_); - favorites_ = new QStandardItem(QIcon(":/last.fm/love.png"), tr("Favorites")); - favorites_->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); + favorites_ = + new QStandardItem(QIcon(":/last.fm/love.png"), tr("Favorites")); + favorites_->setData(InternetModel::Type_UserPlaylist, + InternetModel::Role_Type); favorites_->setData(UserFavorites, Role_PlaylistType); favorites_->setData(true, InternetModel::Role_CanLazyLoad); favorites_->setData(true, InternetModel::Role_CanBeModified); @@ -626,7 +649,8 @@ void GroovesharkService::EnsureItemsCreated() { playlists_parent_ = new QStandardItem(tr("Playlists")); root_->appendRow(playlists_parent_); - subscribed_playlists_parent_ = new QStandardItem(tr("Subscribed playlists")); + subscribed_playlists_parent_ = + new QStandardItem(tr("Subscribed playlists")); root_->appendRow(subscribed_playlists_parent_); RetrieveUserFavorites(); @@ -646,21 +670,22 @@ void GroovesharkService::EnsureConnected() { } } -QStandardItem* GroovesharkService::CreatePlaylistItem(const QString& playlist_name, - int playlist_id) { +QStandardItem* GroovesharkService::CreatePlaylistItem( + const QString& playlist_name, int playlist_id) { QStandardItem* item = new QStandardItem(playlist_name); item->setData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); item->setData(UserPlaylist, Role_PlaylistType); item->setData(true, InternetModel::Role_CanLazyLoad); item->setData(true, InternetModel::Role_CanBeModified); - item->setData(InternetModel::PlayBehaviour_MultipleItems, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); item->setData(playlist_id, Role_UserPlaylistId); return item; } void GroovesharkService::RetrieveUserPlaylists() { task_playlists_id_ = - app_->task_manager()->StartTask(tr("Retrieving Grooveshark playlists")); + app_->task_manager()->StartTask(tr("Retrieving Grooveshark playlists")); QNetworkReply* reply = CreateRequest("getUserPlaylists", QList()); NewClosure(reply, SIGNAL(finished()), this, @@ -673,7 +698,7 @@ void GroovesharkService::UserPlaylistsRetrieved(QNetworkReply* reply) { QVariantMap result = ExtractResult(reply); QList playlists = ExtractPlaylistInfo(result); - foreach(const PlaylistInfo& playlist_info, playlists) { + for (const PlaylistInfo& playlist_info : playlists) { int playlist_id = playlist_info.id_; const QString& playlist_name = playlist_info.name_; QStandardItem* playlist_item = @@ -693,19 +718,24 @@ void GroovesharkService::UserPlaylistsRetrieved(QNetworkReply* reply) { } } -void GroovesharkService::PlaylistSongsRetrieved( - QNetworkReply* reply, int playlist_id) { +void GroovesharkService::PlaylistSongsRetrieved(QNetworkReply* reply, + int playlist_id, int request_id) { reply->deleteLater(); - pending_retrieve_playlists_.remove(playlist_id); - PlaylistInfo* playlist_info = subscribed_playlists_.contains(playlist_id) ? - &subscribed_playlists_[playlist_id] : &playlists_[playlist_id]; + + if (!pending_retrieve_playlists_.remove(request_id)) { + // This request has been canceled. Stop here + return; + } + PlaylistInfo* playlist_info = subscribed_playlists_.contains(playlist_id) + ? &subscribed_playlists_[playlist_id] + : &playlists_[playlist_id]; playlist_info->item_->removeRows(0, playlist_info->item_->rowCount()); QVariantMap result = ExtractResult(reply); SongList songs = ExtractSongs(result); - Song::SortSongsListAlphabetically(&songs); + SortSongsAlphabeticallyIfNeeded(&songs); - foreach (const Song& song, songs) { + for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); child->setData(playlist_info->id_, Role_UserPlaylistId); child->setData(true, InternetModel::Role_CanBeModified); @@ -722,15 +752,16 @@ void GroovesharkService::PlaylistSongsRetrieved( } void GroovesharkService::RetrieveUserFavorites() { - int task_id = - app_->task_manager()->StartTask(tr("Retrieving Grooveshark favorites songs")); + int task_id = app_->task_manager()->StartTask( + tr("Retrieving Grooveshark favorites songs")); QNetworkReply* reply = CreateRequest("getUserFavoriteSongs", QList()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(UserFavoritesRetrieved(QNetworkReply*, int)), reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserFavoritesRetrieved(QNetworkReply*, int)), reply, task_id); } -void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, int task_id) { +void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -743,9 +774,9 @@ void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, int task_i QVariantMap result = ExtractResult(reply); SongList songs = ExtractSongs(result); - Song::SortSongsListAlphabetically(&songs); + SortSongsAlphabeticallyIfNeeded(&songs); - foreach (const Song& song, songs) { + for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); child->setData(true, InternetModel::Role_CanBeModified); @@ -754,15 +785,17 @@ void GroovesharkService::UserFavoritesRetrieved(QNetworkReply* reply, int task_i } void GroovesharkService::RetrieveUserLibrarySongs() { - int task_id = - app_->task_manager()->StartTask(tr("Retrieving Grooveshark My Music songs")); + int task_id = app_->task_manager()->StartTask( + tr("Retrieving Grooveshark My Music songs")); QNetworkReply* reply = CreateRequest("getUserLibrarySongs", QList()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(UserLibrarySongsRetrieved(QNetworkReply*, int)), reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserLibrarySongsRetrieved(QNetworkReply*, int)), reply, + task_id); } -void GroovesharkService::UserLibrarySongsRetrieved(QNetworkReply* reply, int task_id) { +void GroovesharkService::UserLibrarySongsRetrieved(QNetworkReply* reply, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -775,9 +808,9 @@ void GroovesharkService::UserLibrarySongsRetrieved(QNetworkReply* reply, int tas QVariantMap result = ExtractResult(reply); SongList songs = ExtractSongs(result); - Song::SortSongsListAlphabetically(&songs); + SortSongsAlphabeticallyIfNeeded(&songs); - foreach (const Song& song, songs) { + for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); child->setData(true, InternetModel::Role_CanBeModified); @@ -787,17 +820,17 @@ void GroovesharkService::UserLibrarySongsRetrieved(QNetworkReply* reply, int tas void GroovesharkService::RetrievePopularSongs() { task_popular_id_ = - app_->task_manager()->StartTask(tr("Getting Grooveshark popular songs")); + app_->task_manager()->StartTask(tr("Getting Grooveshark popular songs")); RetrievePopularSongsMonth(); RetrievePopularSongsToday(); } void GroovesharkService::RetrievePopularSongsMonth() { QList parameters; - parameters << Param("limit", QString::number(kSongSearchLimit)); + parameters << Param("limit", QString::number(kSongSearchLimit)); QNetworkReply* reply = CreateRequest("getPopularSongsMonth", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PopularSongsMonthRetrieved(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PopularSongsMonthRetrieved(QNetworkReply*)), reply); } void GroovesharkService::PopularSongsMonthRetrieved(QNetworkReply* reply) { @@ -810,10 +843,9 @@ void GroovesharkService::PopularSongsMonthRetrieved(QNetworkReply* reply) { app_->task_manager()->SetTaskFinished(task_popular_id_); } - if (!popular_month_) - return; + if (!popular_month_) return; - foreach (const Song& song, songs) { + for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); popular_month_->appendRow(child); } @@ -821,10 +853,10 @@ void GroovesharkService::PopularSongsMonthRetrieved(QNetworkReply* reply) { void GroovesharkService::RetrievePopularSongsToday() { QList parameters; - parameters << Param("limit", QString::number(kSongSearchLimit)); + parameters << Param("limit", QString::number(kSongSearchLimit)); QNetworkReply* reply = CreateRequest("getPopularSongsToday", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PopularSongsTodayRetrieved(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PopularSongsTodayRetrieved(QNetworkReply*)), reply); } void GroovesharkService::PopularSongsTodayRetrieved(QNetworkReply* reply) { @@ -837,19 +869,19 @@ void GroovesharkService::PopularSongsTodayRetrieved(QNetworkReply* reply) { app_->task_manager()->SetTaskFinished(task_popular_id_); } - if (!popular_today_) - return; + if (!popular_today_) return; - foreach (const Song& song, songs) { + for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); popular_today_->appendRow(child); } } void GroovesharkService::RetrieveSubscribedPlaylists() { - QNetworkReply* reply = CreateRequest("getUserPlaylistsSubscribed", QList()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SubscribedPlaylistsRetrieved(QNetworkReply*)), reply); + QNetworkReply* reply = + CreateRequest("getUserPlaylistsSubscribed", QList()); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SubscribedPlaylistsRetrieved(QNetworkReply*)), reply); } void GroovesharkService::SubscribedPlaylistsRetrieved(QNetworkReply* reply) { @@ -858,18 +890,19 @@ void GroovesharkService::SubscribedPlaylistsRetrieved(QNetworkReply* reply) { QVariantMap result = ExtractResult(reply); QList playlists = ExtractPlaylistInfo(result); - foreach(const PlaylistInfo& playlist_info, playlists) { + for (const PlaylistInfo& playlist_info : playlists) { int playlist_id = playlist_info.id_; const QString& playlist_name = playlist_info.name_; - QStandardItem* playlist_item = CreatePlaylistItem(playlist_name, playlist_id); + QStandardItem* playlist_item = + CreatePlaylistItem(playlist_name, playlist_id); // Refine some playlist properties that should be different for subscribed // playlists playlist_item->setData(SubscribedPlaylist, Role_PlaylistType); playlist_item->setData(false, InternetModel::Role_CanBeModified); - - subscribed_playlists_.insert(playlist_id, - PlaylistInfo(playlist_id, playlist_name, playlist_item)); + + subscribed_playlists_.insert( + playlist_id, PlaylistInfo(playlist_id, playlist_name, playlist_item)); subscribed_playlists_parent_->appendRow(playlist_item); // Request playlist's songs @@ -879,16 +912,15 @@ void GroovesharkService::SubscribedPlaylistsRetrieved(QNetworkReply* reply) { void GroovesharkService::RetrieveAutoplayTags() { QNetworkReply* reply = CreateRequest("getAutoplayTags", QList()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(AutoplayTagsRetrieved(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(AutoplayTagsRetrieved(QNetworkReply*)), reply); } void GroovesharkService::AutoplayTagsRetrieved(QNetworkReply* reply) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); QVariantMap::const_iterator it; - if (!stations_) - return; + if (!stations_) return; for (it = result.constBegin(); it != result.constEnd(); ++it) { int id = it.key().toInt(); QString name = it.value().toString().toLower(); @@ -896,24 +928,26 @@ void GroovesharkService::AutoplayTagsRetrieved(QNetworkReply* reply) { name.replace("_", " "); name[0] = name[0].toUpper(); - QStandardItem* item = new QStandardItem(QIcon(":last.fm/icon_radio.png"), name); + QStandardItem* item = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), name); item->setData(InternetModel::Type_SmartPlaylist, InternetModel::Role_Type); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); item->setData(id, Role_UserPlaylistId); stations_->appendRow(item); } } -Song GroovesharkService::StartAutoplayTag(int tag_id, QVariantMap& autoplay_state) { +Song GroovesharkService::StartAutoplayTag(int tag_id, + QVariantMap& autoplay_state) { QList parameters; parameters << Param("tagID", tag_id); QNetworkReply* reply = CreateRequest("startAutoplayTag", parameters); bool reply_has_timeouted = !WaitForReply(reply); reply->deleteLater(); - if (reply_has_timeouted) - return Song(); + if (reply_has_timeouted) return Song(); QVariantMap result = ExtractResult(reply); autoplay_state = result["autoplayState"].toMap(); @@ -923,21 +957,20 @@ Song GroovesharkService::StartAutoplayTag(int tag_id, QVariantMap& autoplay_stat Song GroovesharkService::StartAutoplay(QVariantMap& autoplay_state) { QList parameters; QVariantList artists_ids_qvariant; - foreach (int artist_id, last_artists_ids_) { + for (int artist_id : last_artists_ids_) { artists_ids_qvariant << QVariant(artist_id); } QVariantList songs_ids_qvariant; - foreach (int song_id, last_songs_ids_) { + for (int song_id : last_songs_ids_) { songs_ids_qvariant << QVariant(song_id); } - parameters << Param("artistIDs", artists_ids_qvariant) - << Param("songIDs", songs_ids_qvariant); + parameters << Param("artistIDs", artists_ids_qvariant) + << Param("songIDs", songs_ids_qvariant); QNetworkReply* reply = CreateRequest("startAutoplay", parameters); bool reply_has_timeouted = !WaitForReply(reply); reply->deleteLater(); - if (reply_has_timeouted) - return Song(); + if (reply_has_timeouted) return Song(); QVariantMap result = ExtractResult(reply); autoplay_state = result["autoplayState"].toMap(); @@ -951,8 +984,7 @@ Song GroovesharkService::GetAutoplaySong(QVariantMap& autoplay_state) { bool reply_has_timeouted = !WaitForReply(reply); reply->deleteLater(); - if (reply_has_timeouted) - return Song(); + if (reply_has_timeouted) return Song(); QVariantMap result = ExtractResult(reply); autoplay_state = result["autoplayState"].toMap(); @@ -962,8 +994,8 @@ Song GroovesharkService::GetAutoplaySong(QVariantMap& autoplay_state) { void GroovesharkService::MarkStreamKeyOver30Secs(const QString& stream_key, const QString& server_id) { QList parameters; - parameters << Param("streamKey", stream_key) - << Param("streamServerID", server_id); + parameters << Param("streamKey", stream_key) + << Param("streamServerID", server_id); QNetworkReply* reply = CreateRequest("markStreamKeyOver30Secs", parameters); NewClosure(reply, SIGNAL(finished()), this, @@ -982,9 +1014,8 @@ void GroovesharkService::MarkSongComplete(const QString& song_id, const QString& stream_key, const QString& server_id) { QList parameters; - parameters << Param("songID", song_id) - << Param("streamKey", stream_key) - << Param("streamServerID", server_id); + parameters << Param("songID", song_id) << Param("streamKey", stream_key) + << Param("streamServerID", server_id); QNetworkReply* reply = CreateRequest("markSongComplete", parameters); NewClosure(reply, SIGNAL(finished()), this, @@ -1007,26 +1038,28 @@ void GroovesharkService::ItemDoubleClicked(QStandardItem* item) { GeneratorPtr GroovesharkService::CreateGenerator(QStandardItem* item) { GeneratorPtr ret; - if (!item || - item->data(InternetModel::Role_Type).toInt() != InternetModel::Type_SmartPlaylist) { + if (!item || item->data(InternetModel::Role_Type).toInt() != + InternetModel::Type_SmartPlaylist) { return ret; } if (item == grooveshark_radio_) { if (last_artists_ids_.isEmpty()) { - QMessageBox::warning(NULL, tr("Error"), - tr("To start Grooveshark radio, you should first listen to a few other Grooveshark songs")); + QMessageBox::warning(nullptr, tr("Error"), + tr("To start Grooveshark radio, you should first " + "listen to a few other Grooveshark songs")); return ret; } ret = GeneratorPtr(new GroovesharkRadio(this)); } else { int tag_id = item->data(Role_UserPlaylistId).toInt(); - ret = GeneratorPtr(new GroovesharkRadio(this ,tag_id)); + ret = GeneratorPtr(new GroovesharkRadio(this, tag_id)); } return ret; } -void GroovesharkService::DropMimeData(const QMimeData* data, const QModelIndex& index) { +void GroovesharkService::DropMimeData(const QMimeData* data, + const QModelIndex& index) { if (!data) { return; } @@ -1046,17 +1079,19 @@ void GroovesharkService::DropMimeData(const QMimeData* data, const QModelIndex& int playlist_type = index.data(Role_PlaylistType).toInt(); int parent_playlist_type = index.parent().data(Role_PlaylistType).toInt(); // If dropped on Favorites list - if (playlist_type == UserFavorites || parent_playlist_type == UserFavorites) { - foreach (int song_id, data_songs_ids) { + if (playlist_type == UserFavorites || + parent_playlist_type == UserFavorites) { + for (int song_id : data_songs_ids) { AddUserFavoriteSong(song_id); } - } else if (playlist_type == UserLibrary || parent_playlist_type == UserLibrary) { + } else if (playlist_type == UserLibrary || + parent_playlist_type == UserLibrary) { // FIXME: Adding songs to user libray doesn't work atm, but the problem // seems to be on Grooveshark server side, as it returns success=true // when calling addUserLibrarySongs with a valid song id. // So this code is deactivated for now to not mislead user - //AddUserLibrarySongs(data_songs_ids); - } else { // Dropped on a normal playlist + // AddUserLibrarySongs(data_songs_ids); + } else { // Dropped on a normal playlist // Get the playlist int playlist_id = index.data(Role_UserPlaylistId).toInt(); if (!playlists_.contains(playlist_id)) { @@ -1077,37 +1112,41 @@ QList GroovesharkService::playlistitem_actions(const Song& song) { while (!playlistitem_actions_.isEmpty()) { QAction* action = playlistitem_actions_.takeFirst(); QMenu* menu = action->menu(); - if (menu) - delete menu; + if (menu) delete menu; delete action; } // Create a 'add to favorites' action - QAction* add_to_favorites = new QAction(QIcon(":/last.fm/love.png"), - tr("Add to Grooveshark favorites"), this); - connect(add_to_favorites, SIGNAL(triggered()), SLOT(AddCurrentSongToUserFavorites())); + QAction* add_to_favorites = new QAction( + QIcon(":/last.fm/love.png"), tr("Add to Grooveshark favorites"), this); + connect(add_to_favorites, SIGNAL(triggered()), + SLOT(AddCurrentSongToUserFavorites())); playlistitem_actions_.append(add_to_favorites); // FIXME: as explained above, adding songs to library doesn't work currently - //QAction* add_to_library = new QAction(IconLoader::Load("folder-sound"), - // tr("Add to Grooveshark My Music"), this); - //connect(add_to_library, SIGNAL(triggered()), SLOT(AddCurrentSongToUserLibrary())); - //playlistitem_actions_.append(add_to_library); + // QAction* add_to_library = new QAction(IconLoader::Load("folder-sound"), + // tr("Add to Grooveshark My Music"), + // this); + // connect(add_to_library, SIGNAL(triggered()), + // SLOT(AddCurrentSongToUserLibrary())); + // playlistitem_actions_.append(add_to_library); // Create a menu with 'add to playlist' actions for each Grooveshark playlist - QAction* add_to_playlists = new QAction(IconLoader::Load("list-add"), - tr("Add to Grooveshark playlists"), this); + QAction* add_to_playlists = new QAction( + IconLoader::Load("list-add"), tr("Add to Grooveshark playlists"), this); QMenu* playlists_menu = new QMenu(); - foreach (PlaylistInfo playlist_info, playlists_.values()) { + for (const PlaylistInfo& playlist_info : playlists_.values()) { QAction* add_to_playlist = new QAction(playlist_info.name_, this); add_to_playlist->setData(playlist_info.id_); playlists_menu->addAction(add_to_playlist); } - connect(playlists_menu, SIGNAL(triggered(QAction*)), SLOT(AddCurrentSongToPlaylist(QAction*))); + connect(playlists_menu, SIGNAL(triggered(QAction*)), + SLOT(AddCurrentSongToPlaylist(QAction*))); add_to_playlists->setMenu(playlists_menu); playlistitem_actions_.append(add_to_playlists); - QAction* share_song = new QAction(tr("Get a URL to share this Grooveshark song"), this); + QAction* share_song = + new QAction(tr("Get a URL to share this Grooveshark song"), this); connect(share_song, SIGNAL(triggered()), SLOT(GetCurrentSongUrlToShare())); playlistitem_actions_.append(share_song); @@ -1134,8 +1173,7 @@ void GroovesharkService::SongUrlToShareReceived(QNetworkReply* reply) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); - if (!result["url"].isValid()) - return; + if (!result["url"].isValid()) return; QString url = result["url"].toString(); ShowUrlBox(tr("Grooveshark song's URL"), url); } @@ -1147,7 +1185,8 @@ void GroovesharkService::GetCurrentPlaylistUrlToShare() { void GroovesharkService::GetPlaylistUrlToShare(int playlist_id) { QList parameters; parameters << Param("playlistID", playlist_id); - QNetworkReply* reply = CreateRequest("getPlaylistURLFromPlaylistID", parameters); + QNetworkReply* reply = + CreateRequest("getPlaylistURLFromPlaylistID", parameters); NewClosure(reply, SIGNAL(finished()), this, SLOT(PlaylistUrlToShareReceived(QNetworkReply*)), reply); @@ -1156,8 +1195,7 @@ void GroovesharkService::GetPlaylistUrlToShare(int playlist_id) { void GroovesharkService::PlaylistUrlToShareReceived(QNetworkReply* reply) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); - if (!result["url"].isValid()) - return; + if (!result["url"].isValid()) return; QString url = result["url"].toString(); ShowUrlBox(tr("Grooveshark playlist's URL"), url); } @@ -1191,33 +1229,34 @@ void GroovesharkService::AddCurrentSongToPlaylist(QAction* action) { SetPlaylistSongs(playlist_id, songs_ids); } -void GroovesharkService::SetPlaylistSongs(int playlist_id, const QList& songs_ids) { +void GroovesharkService::SetPlaylistSongs(int playlist_id, + const QList& songs_ids) { // If we are still retrieving playlists songs, don't update playlist: don't // take the risk to erase all (not yet retrieved) playlist's songs. - if (!pending_retrieve_playlists_.isEmpty()) - return; + if (!pending_retrieve_playlists_.isEmpty()) return; int task_id = - app_->task_manager()->StartTask(tr("Update Grooveshark playlist")); + app_->task_manager()->StartTask(tr("Update Grooveshark playlist")); QList parameters; // Convert song ids to QVariant QVariantList songs_ids_qvariant; - foreach (int song_id, songs_ids) { + for (int song_id : songs_ids) { songs_ids_qvariant << QVariant(song_id); } - parameters << Param("playlistID", playlist_id) - << Param("songIDs", songs_ids_qvariant); + parameters << Param("playlistID", playlist_id) + << Param("songIDs", songs_ids_qvariant); QNetworkReply* reply = CreateRequest("setPlaylistSongs", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PlaylistSongsSet(QNetworkReply*, int, int)), - reply, playlist_id, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PlaylistSongsSet(QNetworkReply*, int, int)), reply, + playlist_id, task_id); } -void GroovesharkService::PlaylistSongsSet(QNetworkReply* reply, int playlist_id, int task_id) { +void GroovesharkService::PlaylistSongsSet(QNetworkReply* reply, int playlist_id, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -1233,30 +1272,33 @@ void GroovesharkService::PlaylistSongsSet(QNetworkReply* reply, int playlist_id, void GroovesharkService::RefreshPlaylist(int playlist_id) { QList parameters; parameters << Param("playlistID", playlist_id); - QNetworkReply* reply = CreateRequest("getPlaylistSongs", parameters); - NewClosure(reply, SIGNAL(finished()), this, - SLOT(PlaylistSongsRetrieved(QNetworkReply*, int)), reply, playlist_id); - pending_retrieve_playlists_.insert(playlist_id); + QNetworkReply* reply = CreateRequest("getPlaylistSongs", parameters); + int id = next_pending_playlist_retrieve_id_++; + NewClosure(reply, SIGNAL(finished()), + this, SLOT(PlaylistSongsRetrieved(QNetworkReply*, int, int)), + reply, playlist_id, id); + + pending_retrieve_playlists_.insert(id); } void GroovesharkService::CreateNewPlaylist() { - QString name = QInputDialog::getText(NULL, - tr("Create a new Grooveshark playlist"), - tr("Name"), - QLineEdit::Normal); + QString name = + QInputDialog::getText(nullptr, tr("Create a new Grooveshark playlist"), + tr("Name"), QLineEdit::Normal); if (name.isEmpty()) { return; } QList parameters; - parameters << Param("name", name) - << Param("songIDs", QVariantList()); + parameters << Param("name", name) << Param("songIDs", QVariantList()); QNetworkReply* reply = CreateRequest("createPlaylist", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(NewPlaylistCreated(QNetworkReply*, const QString&)), reply, name); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(NewPlaylistCreated(QNetworkReply*, const QString&)), reply, + name); } -void GroovesharkService::NewPlaylistCreated(QNetworkReply* reply, const QString& name) { +void GroovesharkService::NewPlaylistCreated(QNetworkReply* reply, + const QString& name) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); if (!result["success"].toBool() || !result["playlistID"].isValid()) { @@ -1286,11 +1328,11 @@ void GroovesharkService::DeletePlaylist(int playlist_id) { if (!playlists_.contains(playlist_id)) { return; } - - boost::scoped_ptr confirmation_dialog(new QMessageBox( - QMessageBox::Question, tr("Delete Grooveshark playlist"), - tr("Are you sure you want to delete this playlist?"), - QMessageBox::Yes | QMessageBox::Cancel)); + + std::unique_ptr confirmation_dialog( + new QMessageBox(QMessageBox::Question, tr("Delete Grooveshark playlist"), + tr("Are you sure you want to delete this playlist?"), + QMessageBox::Yes | QMessageBox::Cancel)); if (confirmation_dialog->exec() != QMessageBox::Yes) { return; } @@ -1298,11 +1340,12 @@ void GroovesharkService::DeletePlaylist(int playlist_id) { QList parameters; parameters << Param("playlistID", playlist_id); QNetworkReply* reply = CreateRequest("deletePlaylist", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PlaylistDeleted(QNetworkReply*, int)), reply, playlist_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PlaylistDeleted(QNetworkReply*, int)), reply, playlist_id); } -void GroovesharkService::PlaylistDeleted(QNetworkReply* reply, int playlist_id) { +void GroovesharkService::PlaylistDeleted(QNetworkReply* reply, + int playlist_id) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); if (!result["success"].toBool()) { @@ -1319,8 +1362,9 @@ void GroovesharkService::PlaylistDeleted(QNetworkReply* reply, int playlist_id) void GroovesharkService::RenameCurrentPlaylist() { const QModelIndex& index(model()->current_index()); - if (index.data(InternetModel::Role_Type).toInt() != InternetModel::Type_UserPlaylist - || index.data(Role_PlaylistType).toInt() != UserPlaylist) { + if (index.data(InternetModel::Role_Type).toInt() != + InternetModel::Type_UserPlaylist || + index.data(Role_PlaylistType).toInt() != UserPlaylist) { return; } @@ -1333,25 +1377,22 @@ void GroovesharkService::RenamePlaylist(int playlist_id) { return; } const QString& old_name = playlists_[playlist_id].name_; - QString new_name = QInputDialog::getText(NULL, - tr("Rename \"%1\" playlist").arg(old_name), - tr("Name"), - QLineEdit::Normal, - old_name); + QString new_name = + QInputDialog::getText(nullptr, tr("Rename \"%1\" playlist").arg(old_name), + tr("Name"), QLineEdit::Normal, old_name); if (new_name.isEmpty()) { return; } QList parameters; - parameters << Param("playlistID", playlist_id) - << Param("name", new_name); + parameters << Param("playlistID", playlist_id) << Param("name", new_name); QNetworkReply* reply = CreateRequest("renamePlaylist", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(PlaylistRenamed(QNetworkReply*, int, const QString&)), reply, playlist_id, new_name); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PlaylistRenamed(QNetworkReply*, int, const QString&)), reply, + playlist_id, new_name); } -void GroovesharkService::PlaylistRenamed(QNetworkReply* reply, - int playlist_id, +void GroovesharkService::PlaylistRenamed(QNetworkReply* reply, int playlist_id, const QString& new_name) { reply->deleteLater(); QVariantMap result = ExtractResult(reply); @@ -1372,12 +1413,12 @@ void GroovesharkService::AddUserFavoriteSong(int song_id) { QList parameters; parameters << Param("songID", song_id); QNetworkReply* reply = CreateRequest("addUserFavoriteSong", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(UserFavoriteSongAdded(QNetworkReply*, int)), - reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserFavoriteSongAdded(QNetworkReply*, int)), reply, task_id); } -void GroovesharkService::UserFavoriteSongAdded(QNetworkReply* reply, int task_id) { +void GroovesharkService::UserFavoriteSongAdded(QNetworkReply* reply, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -1396,7 +1437,7 @@ void GroovesharkService::AddUserLibrarySongs(const QList& songs_ids) { // Convert songs ids to QVariant QVariantList songs_ids_qvariant; - foreach (int song_id, songs_ids) { + for (int song_id : songs_ids) { songs_ids_qvariant << QVariant(song_id); } QVariantList albums_ids_qvariant; @@ -1408,12 +1449,12 @@ void GroovesharkService::AddUserLibrarySongs(const QList& songs_ids) { parameters << Param("albumIDs", albums_ids_qvariant); parameters << Param("artistIDs", artists_ids_qvariant); QNetworkReply* reply = CreateRequest("addUserLibrarySongs", parameters); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(UserLibrarySongAdded(QNetworkReply*, int)), - reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserLibrarySongAdded(QNetworkReply*, int)), reply, task_id); } -void GroovesharkService::UserLibrarySongAdded(QNetworkReply* reply, int task_id) { +void GroovesharkService::UserLibrarySongAdded(QNetworkReply* reply, + int task_id) { reply->deleteLater(); app_->task_manager()->SetTaskFinished(task_id); @@ -1429,7 +1470,7 @@ void GroovesharkService::UserLibrarySongAdded(QNetworkReply* reply, int task_id) void GroovesharkService::RemoveCurrentFromPlaylist() { const QModelIndexList& indexes(model()->selected_indexes()); QMap > playlists_songs_ids; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { if (index.parent().data(InternetModel::Role_Type).toInt() != InternetModel::Type_UserPlaylist) { @@ -1443,21 +1484,21 @@ void GroovesharkService::RemoveCurrentFromPlaylist() { } } - for (QMap >::const_iterator it = playlists_songs_ids.constBegin(); - it != playlists_songs_ids.constEnd(); - ++it) { + for (QMap >::const_iterator it = + playlists_songs_ids.constBegin(); + it != playlists_songs_ids.constEnd(); ++it) { RemoveFromPlaylist(it.key(), it.value()); } } -void GroovesharkService::RemoveFromPlaylist(int playlist_id, - const QList& songs_ids_to_remove) { +void GroovesharkService::RemoveFromPlaylist( + int playlist_id, const QList& songs_ids_to_remove) { if (!playlists_.contains(playlist_id)) { return; } QList songs_ids = playlists_[playlist_id].songs_ids_; - foreach (const int song_id, songs_ids_to_remove) { + for (const int song_id : songs_ids_to_remove) { songs_ids.removeOne(song_id); } @@ -1467,7 +1508,7 @@ void GroovesharkService::RemoveFromPlaylist(int playlist_id, void GroovesharkService::RemoveCurrentFromFavorites() { const QModelIndexList& indexes(model()->selected_indexes()); QList songs_ids; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { if (index.parent().data(Role_PlaylistType).toInt() != UserFavorites) { continue; @@ -1478,30 +1519,33 @@ void GroovesharkService::RemoveCurrentFromFavorites() { songs_ids << song_id; } } - + RemoveFromFavorites(songs_ids); } -void GroovesharkService::RemoveFromFavorites(const QList& songs_ids_to_remove) { - if (songs_ids_to_remove.isEmpty()) - return; +void GroovesharkService::RemoveFromFavorites( + const QList& songs_ids_to_remove) { + if (songs_ids_to_remove.isEmpty()) return; - int task_id = app_->task_manager()->StartTask(tr("Removing songs from favorites")); + int task_id = + app_->task_manager()->StartTask(tr("Removing songs from favorites")); QList parameters; // Convert song ids to QVariant QVariantList songs_ids_qvariant; - foreach (const int song_id, songs_ids_to_remove) { + for (const int song_id : songs_ids_to_remove) { songs_ids_qvariant << QVariant(song_id); } parameters << Param("songIDs", songs_ids_qvariant); QNetworkReply* reply = CreateRequest("removeUserFavoriteSongs", parameters); NewClosure(reply, SIGNAL(finished()), this, - SLOT(SongsRemovedFromFavorites(QNetworkReply*, int)), reply, task_id); + SLOT(SongsRemovedFromFavorites(QNetworkReply*, int)), reply, + task_id); } -void GroovesharkService::SongsRemovedFromFavorites(QNetworkReply* reply, int task_id) { +void GroovesharkService::SongsRemovedFromFavorites(QNetworkReply* reply, + int task_id) { app_->task_manager()->SetTaskFinished(task_id); reply->deleteLater(); @@ -1517,7 +1561,7 @@ void GroovesharkService::RemoveCurrentFromLibrary() { const QModelIndexList& indexes(model()->selected_indexes()); QList songs_ids; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { if (index.parent().data(Role_PlaylistType).toInt() != UserLibrary) { continue; @@ -1528,20 +1572,21 @@ void GroovesharkService::RemoveCurrentFromLibrary() { songs_ids << song_id; } } - + RemoveFromLibrary(songs_ids); } -void GroovesharkService::RemoveFromLibrary(const QList& songs_ids_to_remove) { - if (songs_ids_to_remove.isEmpty()) - return; +void GroovesharkService::RemoveFromLibrary( + const QList& songs_ids_to_remove) { + if (songs_ids_to_remove.isEmpty()) return; - int task_id = app_->task_manager()->StartTask(tr("Removing songs from My Music")); + int task_id = + app_->task_manager()->StartTask(tr("Removing songs from My Music")); QList parameters; // Convert song ids to QVariant QVariantList songs_ids_qvariant; - foreach (const int song_id, songs_ids_to_remove) { + for (const int song_id : songs_ids_to_remove) { songs_ids_qvariant << QVariant(song_id); } QVariantList albums_ids_qvariant; @@ -1555,10 +1600,12 @@ void GroovesharkService::RemoveFromLibrary(const QList& songs_ids_to_remove QNetworkReply* reply = CreateRequest("removeUserLibrarySongs", parameters); NewClosure(reply, SIGNAL(finished()), this, - SLOT(SongsRemovedFromLibrary(QNetworkReply*, int)), reply, task_id); + SLOT(SongsRemovedFromLibrary(QNetworkReply*, int)), reply, + task_id); } -void GroovesharkService::SongsRemovedFromLibrary(QNetworkReply* reply, int task_id) { +void GroovesharkService::SongsRemovedFromLibrary(QNetworkReply* reply, + int task_id) { app_->task_manager()->SetTaskFinished(task_id); reply->deleteLater(); @@ -1570,10 +1617,9 @@ void GroovesharkService::SongsRemovedFromLibrary(QNetworkReply* reply, int task_ RetrieveUserLibrarySongs(); } -QNetworkReply* GroovesharkService::CreateRequest( - const QString& method_name, - const QList& params, - bool use_https) { +QNetworkReply* GroovesharkService::CreateRequest(const QString& method_name, + const QList& params, + bool use_https) { QVariantMap request_params; request_params.insert("method", method_name); @@ -1592,7 +1638,7 @@ QNetworkReply* GroovesharkService::CreateRequest( request_params.insert("header", header); QVariantMap parameters; - foreach(const Param& param, params) { + for (const Param& param : params) { parameters.insert(param.first, param.second); } request_params.insert("parameters", parameters); @@ -1604,9 +1650,12 @@ QNetworkReply* GroovesharkService::CreateRequest( if (use_https) { url.setScheme("https"); } - url.setQueryItems( QList >() << QPair("sig", Utilities::HmacMd5(api_key_, post_params).toHex())); + url.setQueryItems( + QList >() + << QPair( + "sig", Utilities::HmacMd5(api_key_, post_params).toHex())); QNetworkRequest req(url); - QNetworkReply *reply = network_->post(req, post_params); + QNetworkReply* reply = network_->post(req, post_params); if (use_https) { connect(reply, SIGNAL(sslErrors(QList)), @@ -1619,7 +1668,7 @@ QNetworkReply* GroovesharkService::CreateRequest( void GroovesharkService::RequestSslErrors(const QList& errors) { QNetworkReply* reply = qobject_cast(sender()); - foreach (const QSslError& error, errors) { + for (const QSslError& error : errors) { emit StreamError("SSL error occurred in Grooveshark request for " + reply->url().toString() + ": " + error.errorString()); } @@ -1651,24 +1700,33 @@ QVariantMap GroovesharkService::ExtractResult(QNetworkReply* reply) { QVariantList::iterator it; for (it = errors.begin(); it != errors.end(); ++it) { QVariantMap error = (*it).toMap(); - qLog(Error) << "Grooveshark error: (" << error["code"].toInt() <<") " << error["message"].toString(); + qLog(Error) << "Grooveshark error: (" << error["code"].toInt() << ") " + << error["message"].toString(); switch (error["code"].toInt()) { - case 100: // User auth required - case 102: // User premium required - case 300: // Session required - // These errors can happen if session_id is obsolete (e.g. we haven't use + case 100: // User auth required + case 102: // User premium required + case 300: // Session required + // These errors can happen if session_id is obsolete (e.g. we haven't + // use // it for more than two weeks): force the user to login again - Logout(); + Logout(); break; } } return result["result"].toMap(); } +namespace { +bool CompareSongs(const QVariant& song1, const QVariant& song2) { + return song1.toMap()["Sort"].toInt() < song1.toMap()["Sort"].toInt(); +} +} + SongList GroovesharkService::ExtractSongs(const QVariantMap& result) { QVariantList result_songs = result["songs"].toList(); + qStableSort(result_songs.begin(), result_songs.end(), CompareSongs); SongList songs; - for (int i=0; i GroovesharkService::ExtractSongsIds(const QVariantMap& result) { QVariantList result_songs = result["songs"].toList(); QList songs_ids; - for (int i=0; i GroovesharkService::ExtractSongsIds(const QVariantMap& result) { QList GroovesharkService::ExtractSongsIds(const QList& urls) { QList songs_ids; - foreach (const QUrl& url, urls) { + for (const QUrl& url : urls) { int song_id = ExtractSongId(url); if (song_id) { songs_ids << song_id; @@ -1744,13 +1804,14 @@ int GroovesharkService::ExtractSongId(const QUrl& url) { return 0; } -QList GroovesharkService::ExtractPlaylistInfo(const QVariantMap& result) { +QList GroovesharkService::ExtractPlaylistInfo( + const QVariantMap& result) { QVariantList playlists_qvariant = result["playlists"].toList(); QList playlists; // Get playlists info - foreach (const QVariant& playlist_qvariant, playlists_qvariant) { + for (const QVariant& playlist_qvariant : playlists_qvariant) { QVariantMap playlist = playlist_qvariant.toMap(); int playlist_id = playlist["PlaylistID"].toInt(); QString playlist_name = playlist["PlaylistName"].toString(); @@ -1763,3 +1824,12 @@ QList GroovesharkService::ExtractPlaylistInfo( return playlists; } + +void GroovesharkService::SortSongsAlphabeticallyIfNeeded(SongList* songs) const { + QSettings s; + s.beginGroup(GroovesharkService::kSettingsGroup); + const bool sort_songs_alphabetically = s.value("sort_alphabetically").toBool(); + if (sort_songs_alphabetically) { + Song::SortSongsListAlphabetically(songs); + } +} diff --git a/src/internet/groovesharkservice.h b/src/internet/groovesharkservice.h index d39510f11..b955b8568 100644 --- a/src/internet/groovesharkservice.h +++ b/src/internet/groovesharkservice.h @@ -36,7 +36,7 @@ class QSortFilterProxyModel; class GroovesharkService : public InternetService { Q_OBJECT public: - GroovesharkService(Application* app, InternetModel *parent); + GroovesharkService(Application* app, InternetModel* parent); ~GroovesharkService(); enum Role { @@ -63,7 +63,7 @@ class GroovesharkService : public InternetService { // Internet Service methods QStandardItem* CreateRootItem(); - void LazyPopulate(QStandardItem *parent); + void LazyPopulate(QStandardItem* parent); void ItemDoubleClicked(QStandardItem* item); smart_playlists::GeneratorPtr CreateGenerator(QStandardItem* item); @@ -73,9 +73,9 @@ class GroovesharkService : public InternetService { QWidget* HeaderWidget() const; // User should be logged in to be able to generate streaming urls - QUrl GetStreamingUrlFromSongId(const QString& song_id, const QString& artist_id, - QString* server_id, QString* stream_key, - qint64* length_nanosec); + QUrl GetStreamingUrlFromSongId(const QString& song_id, + const QString& artist_id, QString* server_id, + QString* stream_key, qint64* length_nanosec); void Login(const QString& username, const QString& password); void Logout(); bool IsLoggedIn() const { return !session_id_.isEmpty(); } @@ -88,7 +88,8 @@ class GroovesharkService : public InternetService { void RetrieveSubscribedPlaylists(); void RetrieveAutoplayTags(); void SetPlaylistSongs(int playlist_id, const QList& songs_ids); - void RemoveFromPlaylist(int playlist_id, const QList& songs_ids_to_remove); + void RemoveFromPlaylist(int playlist_id, + const QList& songs_ids_to_remove); // Refresh playlist_id playlist , or create it if it doesn't exist void RefreshPlaylist(int playlist_id); void DeletePlaylist(int playlist_id); @@ -103,10 +104,13 @@ class GroovesharkService : public InternetService { // first song to play Song StartAutoplayTag(int tag_id, QVariantMap& autoplay_state); Song StartAutoplay(QVariantMap& autoplay_state); - // Get another autoplay song. autoplay_state is the autoplay_state received from StartAutoplayTag + // Get another autoplay song. autoplay_state is the autoplay_state received + // from StartAutoplayTag Song GetAutoplaySong(QVariantMap& autoplay_state); - void MarkStreamKeyOver30Secs(const QString& stream_key, const QString& server_id); - void MarkSongComplete(const QString& song_id, const QString& stream_key, const QString& server_id); + void MarkStreamKeyOver30Secs(const QString& stream_key, + const QString& server_id); + void MarkSongComplete(const QString& song_id, const QString& stream_key, + const QString& server_id); // Persisted in the settings and updated on each Login(). LoginState login_state() const { return login_state_; } @@ -119,7 +123,7 @@ class GroovesharkService : public InternetService { static const char* kServiceName; static const char* kSettingsGroup; - signals: +signals: void LoginFinished(bool success); void SimpleSearchResults(int id, SongList songs); // AlbumSearchResult emits the search id and the Grooveshark ids of the @@ -131,14 +135,16 @@ class GroovesharkService : public InternetService { public slots: void Search(const QString& text, bool now = false); void ShowConfig(); + // Refresh all Grooveshark's items, and re-fill them + void RefreshItems(); protected: struct PlaylistInfo { PlaylistInfo() {} - PlaylistInfo(int id, QString name, QStandardItem* item = NULL) - : id_(id), name_(name), item_(item) {} + PlaylistInfo(int id, QString name, QStandardItem* item = nullptr) + : id_(id), name_(name), item_(item) {} - bool operator< (const PlaylistInfo other) const { + bool operator<(const PlaylistInfo other) const { return name_.localeAwareCompare(other.name_) < 0; } @@ -163,16 +169,21 @@ class GroovesharkService : public InternetService { void PopularSongsTodayRetrieved(QNetworkReply* reply); void SubscribedPlaylistsRetrieved(QNetworkReply* reply); void AutoplayTagsRetrieved(QNetworkReply* reply); - void PlaylistSongsRetrieved(QNetworkReply* reply, int playlist_id); + void PlaylistSongsRetrieved(QNetworkReply* reply, int playlist_id, int request_id); void PlaylistSongsSet(QNetworkReply* reply, int playlist_id, int task_id); void CreateNewPlaylist(); void NewPlaylistCreated(QNetworkReply* reply, const QString& name); void DeleteCurrentPlaylist(); void RenameCurrentPlaylist(); void PlaylistDeleted(QNetworkReply* reply, int playlist_id); - void PlaylistRenamed(QNetworkReply* reply, int playlist_id, const QString& new_name); - void AddCurrentSongToUserFavorites() { AddUserFavoriteSong(current_song_id_); } - void AddCurrentSongToUserLibrary() { AddUserLibrarySongs(QList() << current_song_id_); } + void PlaylistRenamed(QNetworkReply* reply, int playlist_id, + const QString& new_name); + void AddCurrentSongToUserFavorites() { + AddUserFavoriteSong(current_song_id_); + } + void AddCurrentSongToUserLibrary() { + AddUserLibrarySongs(QList() << current_song_id_); + } void AddCurrentSongToPlaylist(QAction* action); void UserFavoriteSongAdded(QNetworkReply* reply, int task_id); void UserLibrarySongAdded(QNetworkReply* reply, int task_id); @@ -191,8 +202,6 @@ class GroovesharkService : public InternetService { void RequestSslErrors(const QList& errors); void Homepage(); - // Refresh all Grooveshark's items, and re-fill them - void RefreshItems(); private: void EnsureMenuCreated(); @@ -203,7 +212,8 @@ class GroovesharkService : public InternetService { // Create a playlist item, with data set as excepted. Doesn't fill the item // with songs rows. - QStandardItem* CreatePlaylistItem(const QString& playlist_name, int playlist_id); + QStandardItem* CreatePlaylistItem(const QString& playlist_name, + int playlist_id); void AuthenticateSession(); void InitCountry(); @@ -211,10 +221,9 @@ class GroovesharkService : public InternetService { // Create a request for the given method, with the given params. // If need_authentication is true, add session_id to params. // Returns the reply object created - QNetworkReply* CreateRequest( - const QString& method_name, - const QList >& params, - bool use_https = false); + QNetworkReply* CreateRequest(const QString& method_name, + const QList >& params, + bool use_https = false); // Convenient function which block until 'reply' replies, or timeout after 10 // seconds. Returns false if reply has timeouted bool WaitForReply(QNetworkReply* reply); @@ -231,19 +240,24 @@ class GroovesharkService : public InternetService { // Convenient functions for extracting Grooveshark songs ids QList ExtractSongsIds(const QVariantMap& result); QList ExtractSongsIds(const QList& urls); - int ExtractSongId(const QUrl& url); // Returns 0 if url is not a Grooveshark url + int ExtractSongId( + const QUrl& url); // Returns 0 if url is not a Grooveshark url // Convenient function for extracting basic playlist info (only 'id' and // 'name': QStandardItem still need to be created), and sort them by name QList ExtractPlaylistInfo(const QVariantMap& result); void ResetSessionId(); + // Sort songs alphabetically only if the "sort_alphabetically" option has been + // checked in the preferences settings. + void SortSongsAlphabeticallyIfNeeded(SongList* songs) const; GroovesharkUrlHandler* url_handler_; QString pending_search_; int next_pending_search_id_; + int next_pending_playlist_retrieve_id_; QSet pending_retrieve_playlists_; @@ -288,7 +302,7 @@ class GroovesharkService : public InternetService { QNetworkReply* last_search_reply_; QString username_; - QString password_; // In fact, password's md5 hash + QString password_; // In fact, password's md5 hash QString user_id_; QString session_id_; QMap country_; @@ -318,5 +332,4 @@ class GroovesharkService : public InternetService { static const char* kApiSecret; }; - -#endif // GROOVESHARKSERVICE_H +#endif // GROOVESHARKSERVICE_H diff --git a/src/internet/groovesharksettingspage.cpp b/src/internet/groovesharksettingspage.cpp index b44b0b68e..ca198f5b3 100644 --- a/src/internet/groovesharksettingspage.cpp +++ b/src/internet/groovesharksettingspage.cpp @@ -30,11 +30,10 @@ #include GroovesharkSettingsPage::GroovesharkSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_GroovesharkSettingsPage), - service_(InternetModel::Service()), - validated_(false) -{ + : SettingsPage(dialog), + ui_(new Ui_GroovesharkSettingsPage), + service_(InternetModel::Service()), + validated_(false) { ui_->setupUi(this); setWindowIcon(QIcon(":/providers/grooveshark.png")); @@ -50,9 +49,7 @@ GroovesharkSettingsPage::GroovesharkSettingsPage(SettingsDialog* dialog) ui_->login_state->AddCredentialGroup(ui_->account_group); } -GroovesharkSettingsPage::~GroovesharkSettingsPage() { - delete ui_; -} +GroovesharkSettingsPage::~GroovesharkSettingsPage() { delete ui_; } void GroovesharkSettingsPage::Login() { if (service_->IsLoggedIn()) { @@ -73,6 +70,8 @@ void GroovesharkSettingsPage::Load() { validated_ = false; UpdateLoginState(); + + ui_->sort_alphabetically->setChecked(s.value("sort_alphabetically").toBool()); } void GroovesharkSettingsPage::Save() { @@ -81,6 +80,12 @@ void GroovesharkSettingsPage::Save() { s.setValue("username", ui_->username->text()); s.setValue("sessionid", service_->session_id()); + const bool old_sort_value = s.value("sort_alphabetically").toBool(); + const bool new_sort_value = ui_->sort_alphabetically->isChecked(); + if (old_sort_value != new_sort_value) { + s.setValue("sort_alphabetically", new_sort_value); + service_->RefreshItems(); + } } void GroovesharkSettingsPage::LoginFinished(bool success) { @@ -93,23 +98,26 @@ void GroovesharkSettingsPage::LoginFinished(bool success) { void GroovesharkSettingsPage::UpdateLoginState() { const bool logged_in = service_->IsLoggedIn(); - ui_->login_state->SetLoggedIn(logged_in ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - ui_->username->text()); + ui_->login_state->SetLoggedIn( + logged_in ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + ui_->username->text()); ui_->login_state->SetAccountTypeVisible(!logged_in); switch (service_->login_state()) { - case GroovesharkService::LoginState_NoPremium: - ui_->login_state->SetAccountTypeText(tr("You do not have a Grooveshark Anywhere account.")); - break; + case GroovesharkService::LoginState_NoPremium: + ui_->login_state->SetAccountTypeText( + tr("You do not have a Grooveshark Anywhere account.")); + break; - case GroovesharkService::LoginState_AuthFailed: - ui_->login_state->SetAccountTypeText(tr("Your username or password was incorrect.")); - break; + case GroovesharkService::LoginState_AuthFailed: + ui_->login_state->SetAccountTypeText( + tr("Your username or password was incorrect.")); + break; - default: - ui_->login_state->SetAccountTypeText(tr("A Grooveshark Anywhere account is required.")); - break; + default: + ui_->login_state->SetAccountTypeText( + tr("A Grooveshark Anywhere account is required.")); + break; } } diff --git a/src/internet/groovesharksettingspage.h b/src/internet/groovesharksettingspage.h index 838cad311..88b74fbe4 100644 --- a/src/internet/groovesharksettingspage.h +++ b/src/internet/groovesharksettingspage.h @@ -27,22 +27,22 @@ class GroovesharkService; class GroovesharkSettingsPage : public SettingsPage { Q_OBJECT -public: + public: GroovesharkSettingsPage(SettingsDialog* dialog); ~GroovesharkSettingsPage(); void Load(); void Save(); -private slots: + private slots: void Login(); void LoginFinished(bool success); void Logout(); -private: + private: void UpdateLoginState(); -private: + private: Ui_GroovesharkSettingsPage* ui_; GroovesharkService* service_; @@ -51,4 +51,4 @@ private: QString original_password_; }; -#endif // GROOVESHARKSETTINGSPAGE_H +#endif // GROOVESHARKSETTINGSPAGE_H diff --git a/src/internet/groovesharksettingspage.ui b/src/internet/groovesharksettingspage.ui index 158af7799..f79278f6e 100644 --- a/src/internet/groovesharksettingspage.ui +++ b/src/internet/groovesharksettingspage.ui @@ -7,12 +7,15 @@ 0 0 480 - 141 + 184 Grooveshark + + By default, Grooveshark sorts songs on date added + @@ -69,6 +72,32 @@ + + + + Preferences + + + + + + + + true + + + Sort playlists songs alphabetically + + + false + + + + + + + + diff --git a/src/internet/groovesharkurlhandler.cpp b/src/internet/groovesharkurlhandler.cpp index 1948526e9..c505baf1c 100644 --- a/src/internet/groovesharkurlhandler.cpp +++ b/src/internet/groovesharkurlhandler.cpp @@ -22,21 +22,23 @@ #include "groovesharkservice.h" #include "core/logging.h" - -GroovesharkUrlHandler::GroovesharkUrlHandler(GroovesharkService* service, QObject* parent) - : UrlHandler(parent), - service_(service), - timer_mark_stream_key_(new QTimer(this)) { +GroovesharkUrlHandler::GroovesharkUrlHandler(GroovesharkService* service, + QObject* parent) + : UrlHandler(parent), + service_(service), + timer_mark_stream_key_(new QTimer(this)) { // We have to warn Grooveshark when user has listened for more than 30 // seconds of a song, and when it ends. I guess this is used by Grooveshark // for statistics and user history. - // To do this, we have TrackAboutToEnd method, and timer_mark_stream_key_ timer. + // To do this, we have TrackAboutToEnd method, and timer_mark_stream_key_ + // timer. // It is not perfect, as we may call Grooveshark MarkStreamKeyOver30Secs even // if user hasn't actually listen to 30 seconds (e.g. stream set to pause // state) but this is not a big deal and it should be accurate enough anyway. timer_mark_stream_key_->setInterval(30000); timer_mark_stream_key_->setSingleShot(true); - connect(timer_mark_stream_key_, SIGNAL(timeout()), SLOT(MarkStreamKeyOver30Secs())); + connect(timer_mark_stream_key_, SIGNAL(timeout()), + SLOT(MarkStreamKeyOver30Secs())); } UrlHandler::LoadResult GroovesharkUrlHandler::StartLoading(const QUrl& url) { @@ -48,17 +50,19 @@ UrlHandler::LoadResult GroovesharkUrlHandler::StartLoading(const QUrl& url) { qLog(Error) << "Should be grooveshark://artist_id/album_id/song_id"; } else { last_artist_id_ = ids[0]; - last_album_id_ = ids[1]; - last_song_id_ = ids[2]; + last_album_id_ = ids[1]; + last_song_id_ = ids[2]; - streaming_url = service_->GetStreamingUrlFromSongId(last_song_id_, last_artist_id_, - &last_server_id_, &last_stream_key_, &length_nanosec); + streaming_url = service_->GetStreamingUrlFromSongId( + last_song_id_, last_artist_id_, &last_server_id_, &last_stream_key_, + &length_nanosec); qLog(Debug) << "Grooveshark Streaming URL: " << streaming_url; timer_mark_stream_key_->start(); } - return LoadResult(url, LoadResult::TrackAvailable, streaming_url, length_nanosec); + return LoadResult(url, LoadResult::TrackAvailable, streaming_url, + length_nanosec); } void GroovesharkUrlHandler::TrackAboutToEnd() { @@ -69,9 +73,7 @@ void GroovesharkUrlHandler::TrackAboutToEnd() { service_->MarkSongComplete(last_song_id_, last_stream_key_, last_server_id_); } -void GroovesharkUrlHandler::TrackSkipped() { - timer_mark_stream_key_->stop(); -} +void GroovesharkUrlHandler::TrackSkipped() { timer_mark_stream_key_->stop(); } void GroovesharkUrlHandler::MarkStreamKeyOver30Secs() { service_->MarkStreamKeyOver30Secs(last_stream_key_, last_server_id_); diff --git a/src/internet/groovesharkurlhandler.h b/src/internet/groovesharkurlhandler.h index c0ca3b228..cc5cad9e7 100644 --- a/src/internet/groovesharkurlhandler.h +++ b/src/internet/groovesharkurlhandler.h @@ -25,7 +25,7 @@ class QTimer; class GroovesharkUrlHandler : public UrlHandler { Q_OBJECT -public: + public: GroovesharkUrlHandler(GroovesharkService* service, QObject* parent); QString scheme() const { return "grooveshark"; } @@ -34,10 +34,10 @@ public: void TrackAboutToEnd(); void TrackSkipped(); -private slots: + private slots: void MarkStreamKeyOver30Secs(); -private: + private: GroovesharkService* service_; QTimer* timer_mark_stream_key_; QString last_artist_id_; @@ -47,4 +47,4 @@ private: QString last_stream_key_; }; -#endif // GROOVESHARKURLHANDLER_H +#endif // GROOVESHARKURLHANDLER_H diff --git a/src/internet/icecastbackend.cpp b/src/internet/icecastbackend.cpp index 51cfa3007..c449d8cf2 100644 --- a/src/internet/icecastbackend.cpp +++ b/src/internet/icecastbackend.cpp @@ -24,14 +24,9 @@ const char* IcecastBackend::kTableName = "icecast_stations"; -IcecastBackend::IcecastBackend(QObject* parent) - : QObject(parent) -{ -} +IcecastBackend::IcecastBackend(QObject* parent) : QObject(parent) {} -void IcecastBackend::Init(Database* db) { - db_ = db; -} +void IcecastBackend::Init(Database* db) { db_ = db; } QStringList IcecastBackend::GetGenresAlphabetical(const QString& filter) { QStringList ret; @@ -41,7 +36,7 @@ QStringList IcecastBackend::GetGenresAlphabetical(const QString& filter) { QString where = filter.isEmpty() ? "" : "WHERE name LIKE :filter"; QString sql = QString("SELECT DISTINCT genre FROM %1 %2 ORDER BY genre") - .arg(kTableName, where); + .arg(kTableName, where); QSqlQuery q(sql, db); if (!filter.isEmpty()) { @@ -64,10 +59,11 @@ QStringList IcecastBackend::GetGenresByPopularity(const QString& filter) { QString where = filter.isEmpty() ? "" : "WHERE name LIKE :filter"; - QString sql = QString("SELECT genre, COUNT(*) AS count FROM %1 " - " %2" - " GROUP BY genre" - " ORDER BY count DESC").arg(kTableName, where); + QString sql = QString( + "SELECT genre, COUNT(*) AS count FROM %1 " + " %2" + " GROUP BY genre" + " ORDER BY count DESC").arg(kTableName, where); QSqlQuery q(sql, db); if (!filter.isEmpty()) { q.bindValue(":filter", QString("%" + filter + "%")); @@ -100,15 +96,16 @@ IcecastBackend::StationList IcecastBackend::GetStations(const QString& filter, bound_items << "%" + filter + "%"; } - QString sql = QString("SELECT name, url, mime_type, bitrate, channels," - " samplerate, genre" - " FROM %1").arg(kTableName); + QString sql = QString( + "SELECT name, url, mime_type, bitrate, channels," + " samplerate, genre" + " FROM %1").arg(kTableName); if (!where_clauses.isEmpty()) { sql += " WHERE " + where_clauses.join(" AND "); } QSqlQuery q(sql, db); - foreach (const QString& value, bound_items) { + for (const QString& value : bound_items) { q.addBindValue(value); } @@ -117,13 +114,13 @@ IcecastBackend::StationList IcecastBackend::GetStations(const QString& filter, while (q.next()) { Station station; - station.name = q.value(0).toString(); - station.url = QUrl(q.value(1).toString()); - station.mime_type = q.value(2).toString(); - station.bitrate = q.value(3).toInt(); - station.channels = q.value(4).toInt(); + station.name = q.value(0).toString(); + station.url = QUrl(q.value(1).toString()); + station.mime_type = q.value(2).toString(); + station.bitrate = q.value(3).toInt(); + station.channels = q.value(4).toInt(); station.samplerate = q.value(5).toInt(); - station.genre = q.value(6).toString(); + station.genre = q.value(6).toString(); ret << station; } return ret; @@ -148,14 +145,16 @@ void IcecastBackend::ClearAndAddStations(const StationList& stations) { q.exec(); if (db_->CheckErrors(q)) return; - q = QSqlQuery(QString("INSERT INTO %1 (name, url, mime_type, bitrate," - " channels, samplerate, genre)" - " VALUES (:name, :url, :mime_type, :bitrate," - " :channels, :samplerate, :genre)") - .arg(kTableName), db); + q = QSqlQuery( + QString( + "INSERT INTO %1 (name, url, mime_type, bitrate," + " channels, samplerate, genre)" + " VALUES (:name, :url, :mime_type, :bitrate," + " :channels, :samplerate, :genre)").arg(kTableName), + db); // Add these ones - foreach (const Station& station, stations) { + for (const Station& station : stations) { q.bindValue(":name", station.name); q.bindValue(":url", station.url); q.bindValue(":mime_type", station.mime_type); diff --git a/src/internet/icecastbackend.h b/src/internet/icecastbackend.h index f5ffd1b87..3e3115488 100644 --- a/src/internet/icecastbackend.h +++ b/src/internet/icecastbackend.h @@ -28,18 +28,14 @@ class Database; class IcecastBackend : public QObject { Q_OBJECT -public: - IcecastBackend(QObject* parent = 0); + public: + IcecastBackend(QObject* parent = nullptr); void Init(Database* db); static const char* kTableName; struct Station { - Station() - : bitrate(0), - channels(0), - samplerate(0) { - } + Station() : bitrate(0), channels(0), samplerate(0) {} QString name; QUrl url; @@ -65,8 +61,8 @@ public: signals: void DatabaseReset(); -private: + private: Database* db_; }; -#endif // ICECASTBACKEND_H +#endif // ICECASTBACKEND_H diff --git a/src/internet/icecastfilterwidget.cpp b/src/internet/icecastfilterwidget.cpp index ce7e7f3f3..ba7bb9a9e 100644 --- a/src/internet/icecastfilterwidget.cpp +++ b/src/internet/icecastfilterwidget.cpp @@ -27,12 +27,11 @@ const char* IcecastFilterWidget::kSettingsGroup = "Icecast"; -IcecastFilterWidget::IcecastFilterWidget(QWidget *parent) - : QWidget(parent), - ui_(new Ui_IcecastFilterWidget), - menu_(new QMenu(tr("Display options"), this)), - sort_mode_mapper_(new QSignalMapper(this)) -{ +IcecastFilterWidget::IcecastFilterWidget(QWidget* parent) + : QWidget(parent), + ui_(new Ui_IcecastFilterWidget), + menu_(new QMenu(tr("Display options"), this)), + sort_mode_mapper_(new QSignalMapper(this)) { ui_->setupUi(this); // Icons @@ -40,9 +39,12 @@ IcecastFilterWidget::IcecastFilterWidget(QWidget *parent) // Options actions QActionGroup* group = new QActionGroup(this); - AddAction(group, ui_->action_sort_genre_popularity, IcecastModel::SortMode_GenreByPopularity); - AddAction(group, ui_->action_sort_genre_alphabetically, IcecastModel::SortMode_GenreAlphabetical); - AddAction(group, ui_->action_sort_station, IcecastModel::SortMode_StationAlphabetical); + AddAction(group, ui_->action_sort_genre_popularity, + IcecastModel::SortMode_GenreByPopularity); + AddAction(group, ui_->action_sort_genre_alphabetically, + IcecastModel::SortMode_GenreAlphabetical); + AddAction(group, ui_->action_sort_station, + IcecastModel::SortMode_StationAlphabetical); // Options menu menu_->setIcon(ui_->options->icon()); @@ -52,31 +54,30 @@ IcecastFilterWidget::IcecastFilterWidget(QWidget *parent) connect(sort_mode_mapper_, SIGNAL(mapped(int)), SLOT(SortModeChanged(int))); } -void IcecastFilterWidget::AddAction( - QActionGroup* group, QAction* action, IcecastModel::SortMode mode) { +void IcecastFilterWidget::AddAction(QActionGroup* group, QAction* action, + IcecastModel::SortMode mode) { group->addAction(action); sort_mode_mapper_->setMapping(action, mode); connect(action, SIGNAL(triggered()), sort_mode_mapper_, SLOT(map())); } -IcecastFilterWidget::~IcecastFilterWidget() { - delete ui_; -} +IcecastFilterWidget::~IcecastFilterWidget() { delete ui_; } -void IcecastFilterWidget::FocusOnFilter(QKeyEvent *event) { +void IcecastFilterWidget::FocusOnFilter(QKeyEvent* event) { ui_->filter->setFocus(Qt::OtherFocusReason); QApplication::sendEvent(ui_->filter, event); } void IcecastFilterWidget::SetIcecastModel(IcecastModel* model) { model_ = model; - connect(ui_->filter, SIGNAL(textChanged(QString)), - model_, SLOT(SetFilterText(QString))); + connect(ui_->filter, SIGNAL(textChanged(QString)), model_, + SLOT(SetFilterText(QString))); // Load settings QSettings s; s.beginGroup(kSettingsGroup); - switch (s.value("sort_by", IcecastModel::SortMode_GenreByPopularity).toInt()) { + switch ( + s.value("sort_by", IcecastModel::SortMode_GenreByPopularity).toInt()) { case IcecastModel::SortMode_GenreByPopularity: ui_->action_sort_genre_popularity->trigger(); break; diff --git a/src/internet/icecastfilterwidget.h b/src/internet/icecastfilterwidget.h index f99f5076c..c6c019d44 100644 --- a/src/internet/icecastfilterwidget.h +++ b/src/internet/icecastfilterwidget.h @@ -32,8 +32,8 @@ class QSignalMapper; class IcecastFilterWidget : public QWidget { Q_OBJECT -public: - IcecastFilterWidget(QWidget* parent = 0); + public: + IcecastFilterWidget(QWidget* parent = nullptr); ~IcecastFilterWidget(); static const char* kSettingsGroup; @@ -42,16 +42,17 @@ public: QMenu* menu() const { return menu_; } -public slots: + public slots: void FocusOnFilter(QKeyEvent* e); -private slots: + private slots: void SortModeChanged(int mode); -private: - void AddAction(QActionGroup* group, QAction* action, IcecastModel::SortMode mode); + private: + void AddAction(QActionGroup* group, QAction* action, + IcecastModel::SortMode mode); -private: + private: Ui_IcecastFilterWidget* ui_; IcecastModel* model_; QMenu* menu_; @@ -59,4 +60,4 @@ private: QSignalMapper* sort_mode_mapper_; }; -#endif // ICECASTFILTERWIDGET_H +#endif // ICECASTFILTERWIDGET_H diff --git a/src/internet/icecastitem.h b/src/internet/icecastitem.h index c09485447..d1178d002 100644 --- a/src/internet/icecastitem.h +++ b/src/internet/icecastitem.h @@ -22,20 +22,15 @@ #include "core/simpletreeitem.h" class IcecastItem : public SimpleTreeItem { -public: - enum Type { - Type_Root, - Type_Genre, - Type_Station, - Type_Divider, - }; + public: + enum Type { Type_Root, Type_Genre, Type_Station, Type_Divider, }; IcecastItem(SimpleTreeModel* model) - : SimpleTreeItem(Type_Root, model) {} - IcecastItem(Type type, IcecastItem* parent = NULL) - : SimpleTreeItem(type, parent) {} + : SimpleTreeItem(Type_Root, model) {} + IcecastItem(Type type, IcecastItem* parent = nullptr) + : SimpleTreeItem(type, parent) {} IcecastBackend::Station station; }; -#endif // ICECASTITEM_H +#endif // ICECASTITEM_H diff --git a/src/internet/icecastmodel.cpp b/src/internet/icecastmodel.cpp index b1732d188..c6d0e133a 100644 --- a/src/internet/icecastmodel.cpp +++ b/src/internet/icecastmodel.cpp @@ -19,18 +19,15 @@ #include "icecastmodel.h" #include "playlist/songmimedata.h" IcecastModel::IcecastModel(IcecastBackend* backend, QObject* parent) - : SimpleTreeModel(new IcecastItem(this), parent), - backend_(backend), - sort_mode_(SortMode_GenreByPopularity), - genre_icon_(":last.fm/icon_tag.png"), - station_icon_(":last.fm/icon_radio.png") -{ + : SimpleTreeModel(new IcecastItem(this), parent), + backend_(backend), + sort_mode_(SortMode_GenreByPopularity), + genre_icon_(":last.fm/icon_tag.png"), + station_icon_(":last.fm/icon_radio.png") { root_->lazy_loaded = true; } -IcecastModel::~IcecastModel() { - delete root_; -} +IcecastModel::~IcecastModel() { delete root_; } void IcecastModel::Init() { connect(backend_, SIGNAL(DatabaseReset()), SLOT(Reset())); @@ -50,8 +47,7 @@ void IcecastModel::Reset() { } void IcecastModel::LazyPopulate(IcecastItem* parent) { - if (parent->lazy_loaded) - return; + if (parent->lazy_loaded) return; parent->lazy_loaded = true; switch (parent->type) { @@ -85,9 +81,10 @@ void IcecastModel::PopulateGenre(IcecastItem* parent, const QString& genre, QChar last_divider; IcecastBackend::StationList stations = backend_->GetStations(filter_, genre); - foreach (const IcecastBackend::Station& station, stations) { + for (const IcecastBackend::Station& station : stations) { QChar divider_char = DividerKey(station.name); - if (create_dividers && !divider_char.isNull() && divider_char != last_divider) { + if (create_dividers && !divider_char.isNull() && + divider_char != last_divider) { last_divider = divider_char; IcecastItem* divider = new IcecastItem(IcecastItem::Type_Divider, parent); @@ -107,7 +104,7 @@ void IcecastModel::PopulateGenre(IcecastItem* parent, const QString& genre, void IcecastModel::AddGenres(const QStringList& genres, bool create_dividers) { QChar last_divider; - foreach (const QString& genre, genres) { + for (const QString& genre : genres) { QChar divider_char = DividerKey(genre); if (create_dividers && divider_char != last_divider) { last_divider = divider_char; @@ -123,16 +120,13 @@ void IcecastModel::AddGenres(const QStringList& genres, bool create_dividers) { } QChar IcecastModel::DividerKey(const QString& text) { - if (text.isEmpty()) - return QChar(); + if (text.isEmpty()) return QChar(); QChar c; c = text[0]; - if (c.isDigit()) - return '0'; - if (c.isPunct() || c.isSymbol()) - return QChar(); + if (c.isDigit()) return '0'; + if (c.isPunct() || c.isSymbol()) return QChar(); if (c.decompositionTag() != QChar::NoDecomposition) return QChar(c.decomposition()[0]); @@ -140,8 +134,7 @@ QChar IcecastModel::DividerKey(const QString& text) { } QString IcecastModel::DividerDisplayText(const QChar& key) { - if (key == '0') - return "0-9"; + if (key == '0') return "0-9"; return key; } @@ -158,8 +151,10 @@ QVariant IcecastModel::data(const IcecastItem* item, int role) const { case Qt::DecorationRole: switch (item->type) { - case IcecastItem::Type_Genre: return genre_icon_; - case IcecastItem::Type_Station: return station_icon_; + case IcecastItem::Type_Genre: + return genre_icon_; + case IcecastItem::Type_Station: + return station_icon_; } break; @@ -181,16 +176,13 @@ void IcecastModel::SetSortMode(SortMode mode) { Qt::ItemFlags IcecastModel::flags(const QModelIndex& index) const { switch (IndexToItem(index)->type) { - case IcecastItem::Type_Station: - return Qt::ItemIsSelectable | - Qt::ItemIsEnabled | - Qt::ItemIsDragEnabled; - case IcecastItem::Type_Genre: - case IcecastItem::Type_Root: - case IcecastItem::Type_Divider: - default: - return Qt::ItemIsSelectable | - Qt::ItemIsEnabled; + case IcecastItem::Type_Station: + return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled; + case IcecastItem::Type_Genre: + case IcecastItem::Type_Root: + case IcecastItem::Type_Divider: + default: + return Qt::ItemIsSelectable | Qt::ItemIsEnabled; } } @@ -199,16 +191,14 @@ QStringList IcecastModel::mimeTypes() const { } QMimeData* IcecastModel::mimeData(const QModelIndexList& indexes) const { - if (indexes.isEmpty()) - return NULL; + if (indexes.isEmpty()) return nullptr; SongMimeData* data = new SongMimeData; QList urls; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { IcecastItem* item = IndexToItem(index); - if (!item || item->type != IcecastItem::Type_Station) - continue; + if (!item || item->type != IcecastItem::Type_Station) continue; data->songs << item->station.ToSong(); urls << item->station.url; @@ -216,7 +206,7 @@ QMimeData* IcecastModel::mimeData(const QModelIndexList& indexes) const { if (data->songs.isEmpty()) { delete data; - return NULL; + return nullptr; } data->setUrls(urls); @@ -227,8 +217,7 @@ QMimeData* IcecastModel::mimeData(const QModelIndexList& indexes) const { Song IcecastModel::GetSong(const QModelIndex& index) const { IcecastItem* item = IndexToItem(index); - if (!item || item->type != IcecastItem::Type_Station) - return Song(); + if (!item || item->type != IcecastItem::Type_Station) return Song(); return item->station.ToSong(); } diff --git a/src/internet/icecastmodel.h b/src/internet/icecastmodel.h index 00297426e..02bbe8a00 100644 --- a/src/internet/icecastmodel.h +++ b/src/internet/icecastmodel.h @@ -29,8 +29,8 @@ class IcecastBackend; class IcecastModel : public SimpleTreeModel { Q_OBJECT -public: - IcecastModel(IcecastBackend* backend, QObject* parent = 0); + public: + IcecastModel(IcecastBackend* backend, QObject* parent = nullptr); ~IcecastModel(); // These values get saved in QSettings - don't change them @@ -40,39 +40,38 @@ public: SortMode_StationAlphabetical = 2, }; - enum Role { - Role_IsDivider = LibraryModel::Role_IsDivider, - }; + enum Role { Role_IsDivider = LibraryModel::Role_IsDivider, }; IcecastBackend* backend() const { return backend_; } Song GetSong(const QModelIndex& index) const; // QAbstractItemModel - QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex& index) const; QStringList mimeTypes() const; QMimeData* mimeData(const QModelIndexList& indexes) const; -public slots: + public slots: void Init(); void Reset(); void SetFilterText(const QString& filter); void SetSortMode(SortMode mode); -protected: + protected: void LazyPopulate(IcecastItem* parent); -private: + private: QVariant data(const IcecastItem* item, int role) const; - void PopulateGenre(IcecastItem* parent, const QString& genre, bool create_dividers); + void PopulateGenre(IcecastItem* parent, const QString& genre, + bool create_dividers); void AddGenres(const QStringList& genres, bool create_dividers); static QChar DividerKey(const QString& text); static QString DividerDisplayText(const QChar& key); -private: + private: IcecastBackend* backend_; QString filter_; @@ -82,4 +81,4 @@ private: QIcon station_icon_; }; -#endif // ICECASTMODEL_H +#endif // ICECASTMODEL_H diff --git a/src/internet/icecastservice.cpp b/src/internet/icecastservice.cpp index 00e83ac6f..e8a8df534 100644 --- a/src/internet/icecastservice.cpp +++ b/src/internet/icecastservice.cpp @@ -44,20 +44,19 @@ using std::sort; using std::unique; - const char* IcecastService::kServiceName = "Icecast"; -const char* IcecastService::kDirectoryUrl = "http://data.clementine-player.org/icecast-directory"; +const char* IcecastService::kDirectoryUrl = + "http://data.clementine-player.org/icecast-directory"; const char* IcecastService::kHomepage = "http://dir.xiph.org/"; IcecastService::IcecastService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), network_(new NetworkAccessManager(this)), - context_menu_(NULL), - backend_(NULL), - model_(NULL), + context_menu_(nullptr), + backend_(nullptr), + model_(nullptr), filter_(new IcecastFilterWidget(0)), - load_directory_task_id_(0) -{ + load_directory_task_id_(0) { backend_ = new IcecastBackend; backend_->moveToThread(app_->database()->thread()); backend_->Init(app_->database()); @@ -65,11 +64,11 @@ IcecastService::IcecastService(Application* app, InternetModel* parent) model_ = new IcecastModel(backend_, this); filter_->SetIcecastModel(model_); - app_->global_search()->AddProvider(new IcecastSearchProvider(backend_, app_, this)); + app_->global_search()->AddProvider( + new IcecastSearchProvider(backend_, app_, this)); } -IcecastService::~IcecastService() { -} +IcecastService::~IcecastService() {} QStandardItem* IcecastService::CreateRootItem() { root_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), kServiceName); @@ -81,7 +80,8 @@ void IcecastService::LazyPopulate(QStandardItem* item) { switch (item->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: model_->Init(); - model()->merged_model()->AddSubModel(model()->indexFromItem(item), model_); + model()->merged_model()->AddSubModel(model()->indexFromItem(item), + model_); if (backend_->IsEmpty()) { LoadDirectory(); @@ -97,8 +97,8 @@ void IcecastService::LoadDirectory() { RequestDirectory(QUrl(kDirectoryUrl)); if (!load_directory_task_id_) { - load_directory_task_id_ = app_->task_manager()->StartTask( - tr("Downloading Icecast directory")); + load_directory_task_id_ = + app_->task_manager()->StartTask(tr("Downloading Icecast directory")); } } @@ -116,7 +116,8 @@ void IcecastService::DownloadDirectoryFinished(QNetworkReply* reply) { if (reply->attribute(QNetworkRequest::RedirectionTargetAttribute).isValid()) { // Discard the old reply and follow the redirect reply->deleteLater(); - RequestDirectory(reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); + RequestDirectory( + reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); return; } @@ -125,19 +126,17 @@ void IcecastService::DownloadDirectoryFinished(QNetworkReply* reply) { QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); NewClosure(watcher, SIGNAL(finished()), this, - SLOT(ParseDirectoryFinished(QFuture)), - future); + SLOT(ParseDirectoryFinished(QFuture)), + future); connect(watcher, SIGNAL(finished()), watcher, SLOT(deleteLater())); } namespace { template struct GenreSorter { - GenreSorter(const QMultiHash& genres) - : genres_(genres) { - } + GenreSorter(const QMultiHash& genres) : genres_(genres) {} - bool operator() (const QString& a, const QString& b) const { + bool operator()(const QString& a, const QString& b) const { return genres_.count(a) > genres_.count(b); } @@ -147,31 +146,30 @@ struct GenreSorter { template struct StationSorter { - bool operator() (const T& a, const T& b) const { + bool operator()(const T& a, const T& b) const { return a.name.compare(b.name, Qt::CaseInsensitive) < 0; } }; template struct StationSorter { - bool operator() (const T* a, const T* b) const { + bool operator()(const T* a, const T* b) const { return a->name.compare(b->name, Qt::CaseInsensitive) < 0; } }; template struct StationEquality { - bool operator() (T a, T b) const { - return a.name == b.name; - } + bool operator()(T a, T b) const { return a.name == b.name; } }; QStringList FilterGenres(const QStringList& genres) { QStringList ret; - foreach (const QString& genre, genres) { + for (const QString& genre : genres) { if (genre.length() < 2) continue; if (genre.contains("ÃÂ")) continue; // Broken unicode. - if (genre.contains(QRegExp("^#x[0-9a-f][0-9a-f]"))) continue; // Broken XML entities. + if (genre.contains(QRegExp("^#x[0-9a-f][0-9a-f]"))) + continue; // Broken XML entities. // Convert 80 -> 80s. if (genre.contains(QRegExp("^[0-9]0$"))) { @@ -186,23 +184,25 @@ QStringList FilterGenres(const QStringList& genres) { } return ret; } - } void IcecastService::ParseDirectoryFinished( QFuture future) { IcecastBackend::StationList all_stations = future.result(); - sort(all_stations.begin(), all_stations.end(), StationSorter()); - // Remove duplicates by name. These tend to be multiple URLs for the same station. + sort(all_stations.begin(), all_stations.end(), + StationSorter()); + // Remove duplicates by name. These tend to be multiple URLs for the same + // station. IcecastBackend::StationList::iterator it = - unique(all_stations.begin(), all_stations.end(), StationEquality()); + unique(all_stations.begin(), all_stations.end(), + StationEquality()); all_stations.erase(it, all_stations.end()); // Cluster stations by genre. QMultiHash genres; // Add stations. - for (int i=0 ; i genre_set = genres.keys().toSet(); // Merge genres with only 1 or 2 stations into "Other". - foreach (const QString& genre, genre_set) { + for (const QString& genre : genre_set) { if (genres.count(genre) < 3) { const QList& small_genre = genres.values(genre); - foreach (IcecastBackend::Station* s, small_genre) { + for (IcecastBackend::Station* s : small_genre) { s->genre = "Other"; } } @@ -225,7 +225,8 @@ void IcecastService::ParseDirectoryFinished( load_directory_task_id_ = 0; } -IcecastBackend::StationList IcecastService::ParseDirectory(QIODevice* device) const { +IcecastBackend::StationList IcecastService::ParseDirectory(QIODevice* device) + const { QXmlStreamReader reader(device); IcecastBackend::StationList stations; while (!reader.atEnd()) { @@ -239,25 +240,27 @@ IcecastBackend::StationList IcecastService::ParseDirectory(QIODevice* device) co return stations; } -IcecastBackend::Station IcecastService::ReadStation(QXmlStreamReader* reader) const { +IcecastBackend::Station IcecastService::ReadStation(QXmlStreamReader* reader) + const { IcecastBackend::Station station; while (!reader->atEnd()) { reader->readNext(); - if (reader->tokenType() == QXmlStreamReader::EndElement) - break; + if (reader->tokenType() == QXmlStreamReader::EndElement) break; if (reader->tokenType() == QXmlStreamReader::StartElement) { QStringRef name = reader->name(); - QString value = reader->readElementText(QXmlStreamReader::SkipChildElements); + QString value = + reader->readElementText(QXmlStreamReader::SkipChildElements); if (name == "server_name") station.name = value; - if (name == "listen_url") station.url = QUrl(value); + if (name == "listen_url") station.url = QUrl(value); if (name == "server_type") station.mime_type = value; - if (name == "bitrate") station.bitrate = value.toInt(); - if (name == "channels") station.channels = value.toInt(); - if (name == "samplerate") station.samplerate = value.toInt(); - if (name == "genre") station.genre = - FilterGenres(value.split(' ', QString::SkipEmptyParts))[0]; + if (name == "bitrate") station.bitrate = value.toInt(); + if (name == "channels") station.channels = value.toInt(); + if (name == "samplerate") station.samplerate = value.toInt(); + if (name == "genre") + station.genre = + FilterGenres(value.split(' ', QString::SkipEmptyParts))[0]; } } @@ -269,9 +272,7 @@ IcecastBackend::Station IcecastService::ReadStation(QXmlStreamReader* reader) co return station; } -QWidget* IcecastService::HeaderWidget() const { - return filter_; -} +QWidget* IcecastService::HeaderWidget() const { return filter_; } void IcecastService::ShowContextMenu(const QPoint& global_pos) { EnsureMenuCreated(); @@ -287,19 +288,20 @@ void IcecastService::ShowContextMenu(const QPoint& global_pos) { } void IcecastService::EnsureMenuCreated() { - if (context_menu_) - return; + if (context_menu_) return; context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); - context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg("dir.xiph.org"), this, SLOT(Homepage())); - context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh station list"), this, SLOT(LoadDirectory())); + context_menu_->addAction(IconLoader::Load("download"), + tr("Open %1 in browser").arg("dir.xiph.org"), this, + SLOT(Homepage())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh station list"), this, + SLOT(LoadDirectory())); context_menu_->addSeparator(); context_menu_->addMenu(filter_->menu()); } -void IcecastService::Homepage() { - QDesktopServices::openUrl(QUrl(kHomepage)); -} +void IcecastService::Homepage() { QDesktopServices::openUrl(QUrl(kHomepage)); } diff --git a/src/internet/icecastservice.h b/src/internet/icecastservice.h index 36e054da4..52c549597 100644 --- a/src/internet/icecastservice.h +++ b/src/internet/icecastservice.h @@ -33,7 +33,7 @@ class QNetworkReply; class IcecastService : public InternetService { Q_OBJECT -public: + public: IcecastService(Application* app, InternetModel* parent); ~IcecastService(); @@ -41,10 +41,7 @@ public: static const char* kDirectoryUrl; static const char* kHomepage; - enum ItemType { - Type_Stream = 3000, - Type_Genre, - }; + enum ItemType { Type_Stream = 3000, Type_Genre, }; QStandardItem* CreateRootItem(); void LazyPopulate(QStandardItem* item); @@ -53,14 +50,13 @@ public: QWidget* HeaderWidget() const; -private slots: + private slots: void LoadDirectory(); void Homepage(); void DownloadDirectoryFinished(QNetworkReply* reply); - void ParseDirectoryFinished( - QFuture future); + void ParseDirectoryFinished(QFuture future); -private: + private: void RequestDirectory(const QUrl& url); void EnsureMenuCreated(); IcecastBackend::StationList ParseDirectory(QIODevice* device) const; diff --git a/src/internet/internetmimedata.h b/src/internet/internetmimedata.h index f6d089f3f..3e0513a49 100644 --- a/src/internet/internetmimedata.h +++ b/src/internet/internetmimedata.h @@ -28,12 +28,11 @@ class InternetModel; class InternetMimeData : public MimeData { Q_OBJECT -public: - InternetMimeData(const InternetModel* _model) - : model(_model) {} + public: + InternetMimeData(const InternetModel* _model) : model(_model) {} const InternetModel* model; QModelIndexList indexes; }; -#endif // INTERNETMIMEDATA_H +#endif // INTERNETMIMEDATA_H diff --git a/src/internet/internetmodel.cpp b/src/internet/internetmodel.cpp index 289f591e0..55a1eb766 100644 --- a/src/internet/internetmodel.cpp +++ b/src/internet/internetmodel.cpp @@ -38,36 +38,32 @@ #include "podcasts/podcastservice.h" #include "smartplaylists/generatormimedata.h" -#ifdef HAVE_LIBLASTFM - #include "lastfmservice.h" -#endif #ifdef HAVE_GOOGLE_DRIVE - #include "googledriveservice.h" -#endif -#ifdef HAVE_UBUNTU_ONE - #include "ubuntuoneservice.h" +#include "googledriveservice.h" #endif #ifdef HAVE_DROPBOX - #include "dropboxservice.h" +#include "dropboxservice.h" #endif #ifdef HAVE_SKYDRIVE - #include "skydriveservice.h" +#include "skydriveservice.h" #endif #ifdef HAVE_BOX - #include "boxservice.h" +#include "boxservice.h" +#endif +#ifdef HAVE_VK +#include "vkservice.h" #endif using smart_playlists::Generator; using smart_playlists::GeneratorMimeData; using smart_playlists::GeneratorPtr; -QMap* InternetModel::sServices = NULL; +QMap* InternetModel::sServices = nullptr; InternetModel::InternetModel(Application* app, QObject* parent) - : QStandardItemModel(parent), - app_(app), - merged_model_(new MergedProxyModel(this)) -{ + : QStandardItemModel(parent), + app_(app), + merged_model_(new MergedProxyModel(this)) { if (!sServices) { sServices = new QMap; } @@ -78,12 +74,6 @@ InternetModel::InternetModel(Application* app, QObject* parent) AddService(new DigitallyImportedService(app, this)); AddService(new IcecastService(app, this)); AddService(new JamendoService(app, this)); -#ifdef HAVE_LIBLASTFM - AddService(new LastFMService(app, this)); -#endif -#ifdef HAVE_GOOGLE_DRIVE - AddService(new GoogleDriveService(app, this)); -#endif AddService(new GroovesharkService(app, this)); AddService(new JazzRadioService(app, this)); AddService(new MagnatuneService(app, this)); @@ -96,24 +86,30 @@ InternetModel::InternetModel(Application* app, QObject* parent) AddService(new SoundCloudService(app, this)); AddService(new SpotifyService(app, this)); AddService(new SubsonicService(app, this)); -#ifdef HAVE_UBUNTU_ONE - AddService(new UbuntuOneService(app, this)); +#ifdef HAVE_BOX + AddService(new BoxService(app, this)); #endif #ifdef HAVE_DROPBOX AddService(new DropboxService(app, this)); #endif +#ifdef HAVE_GOOGLE_DRIVE + AddService(new GoogleDriveService(app, this)); +#endif #ifdef HAVE_SKYDRIVE AddService(new SkydriveService(app, this)); #endif -#ifdef HAVE_BOX - AddService(new BoxService(app, this)); +#ifdef HAVE_VK + AddService(new VkService(app, this)); #endif + + invisibleRootItem()->sortChildren(0, Qt::AscendingOrder); } -void InternetModel::AddService(InternetService *service) { +void InternetModel::AddService(InternetService* service) { QStandardItem* root = service->CreateRootItem(); if (!root) { - qLog(Warning) << "Internet service" << service->name() << "did not return a root item"; + qLog(Warning) << "Internet service" << service->name() + << "did not return a root item"; return; } @@ -125,22 +121,25 @@ void InternetModel::AddService(InternetService *service) { sServices->insert(service->name(), service); connect(service, SIGNAL(StreamError(QString)), SIGNAL(StreamError(QString))); - connect(service, SIGNAL(StreamMetadataFound(QUrl,Song)), SIGNAL(StreamMetadataFound(QUrl,Song))); - connect(service, SIGNAL(AddToPlaylistSignal(QMimeData*)), SIGNAL(AddToPlaylist(QMimeData*))); - connect(service, SIGNAL(ScrollToIndex(QModelIndex)), SIGNAL(ScrollToIndex(QModelIndex))); + connect(service, SIGNAL(StreamMetadataFound(QUrl, Song)), + SIGNAL(StreamMetadataFound(QUrl, Song))); + connect(service, SIGNAL(AddToPlaylistSignal(QMimeData*)), + SIGNAL(AddToPlaylist(QMimeData*))); + connect(service, SIGNAL(ScrollToIndex(QModelIndex)), + SIGNAL(ScrollToIndex(QModelIndex))); connect(service, SIGNAL(destroyed()), SLOT(ServiceDeleted())); service->ReloadSettings(); } void InternetModel::RemoveService(InternetService* service) { - if (!sServices->contains(service->name())) - return; + if (!sServices->contains(service->name())) return; // Find and remove the root item that this service created - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < invisibleRootItem()->rowCount(); ++i) { QStandardItem* item = invisibleRootItem()->child(i); - if (!item || item->data(Role_Service).value() == service) { + if (!item || + item->data(Role_Service).value() == service) { invisibleRootItem()->removeRow(i); break; } @@ -155,36 +154,36 @@ void InternetModel::RemoveService(InternetService* service) { void InternetModel::ServiceDeleted() { InternetService* service = qobject_cast(sender()); - if (service) - RemoveService(service); + if (service) RemoveService(service); } InternetService* InternetModel::ServiceByName(const QString& name) { - if (sServices->contains(name)) - return sServices->value(name); - return NULL; + if (sServices->contains(name)) return sServices->value(name); + return nullptr; } -InternetService* InternetModel::ServiceForItem(const QStandardItem* item) const { +InternetService* InternetModel::ServiceForItem( + const QStandardItem* item) const { return ServiceForIndex(indexFromItem(item)); } -InternetService* InternetModel::ServiceForIndex(const QModelIndex& index) const { +InternetService* InternetModel::ServiceForIndex( + const QModelIndex& index) const { QModelIndex current_index = index; while (current_index.isValid()) { - InternetService* service = current_index.data(Role_Service).value(); + InternetService* service = + current_index.data(Role_Service).value(); if (service) { return service; } current_index = current_index.parent(); } - return NULL; + return nullptr; } Qt::ItemFlags InternetModel::flags(const QModelIndex& index) const { - Qt::ItemFlags flags = Qt::ItemIsSelectable | - Qt::ItemIsEnabled | - Qt::ItemIsDropEnabled; + Qt::ItemFlags flags = + Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled; if (IsPlayable(index)) { flags |= Qt::ItemIsDragEnabled; } @@ -192,8 +191,7 @@ Qt::ItemFlags InternetModel::flags(const QModelIndex& index) const { } bool InternetModel::hasChildren(const QModelIndex& parent) const { - if (parent.data(Role_CanLazyLoad).toBool()) - return true; + if (parent.data(Role_CanLazyLoad).toBool()) return true; return QStandardItemModel::hasChildren(parent); } @@ -212,8 +210,7 @@ int InternetModel::rowCount(const QModelIndex& parent) const { bool InternetModel::IsPlayable(const QModelIndex& index) const { QVariant behaviour = index.data(Role_PlayBehaviour); - if (!behaviour.isValid()) - return false; + if (!behaviour.isValid()) return false; PlayBehaviour pb = PlayBehaviour(behaviour.toInt()); return (pb == PlayBehaviour_MultipleItems || pb == PlayBehaviour_SingleItem || @@ -226,19 +223,18 @@ QStringList InternetModel::mimeTypes() const { QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { // Special case for when the user double clicked on a special item. - if (indexes.count() == 1 && - indexes[0].data(Role_PlayBehaviour).toInt() == - PlayBehaviour_DoubleClickAction) { - InternetModel::ServiceForIndex(indexes[0])->ItemDoubleClicked(itemFromIndex(indexes[0])); - return NULL; + if (indexes.count() == 1 && indexes[0].data(Role_PlayBehaviour).toInt() == + PlayBehaviour_DoubleClickAction) { + InternetModel::ServiceForIndex(indexes[0]) + ->ItemDoubleClicked(itemFromIndex(indexes[0])); + return nullptr; } if (indexes.count() == 1 && indexes[0].data(Role_Type).toInt() == Type_SmartPlaylist) { - GeneratorPtr generator = - InternetModel::ServiceForIndex(indexes[0])->CreateGenerator(itemFromIndex(indexes[0])); - if (!generator) - return NULL; + GeneratorPtr generator = InternetModel::ServiceForIndex(indexes[0]) + ->CreateGenerator(itemFromIndex(indexes[0])); + if (!generator) return nullptr; GeneratorMimeData* data = new GeneratorMimeData(generator); data->setData(LibraryModel::kSmartPlaylistsMimeType, QByteArray()); data->name_for_new_playlist_ = this->data(indexes.first()).toString(); @@ -249,9 +245,8 @@ QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { QModelIndexList new_indexes; QModelIndex last_valid_index; - foreach (const QModelIndex& index, indexes) { - if (!IsPlayable(index)) - continue; + for (const QModelIndex& index : indexes) { + if (!IsPlayable(index)) continue; last_valid_index = index; if (index.data(Role_PlayBehaviour).toInt() == PlayBehaviour_MultipleItems) { @@ -270,18 +265,20 @@ QMimeData* InternetModel::mimeData(const QModelIndexList& indexes) const { } } - if (urls.isEmpty()) - return NULL; + if (urls.isEmpty()) return nullptr; InternetMimeData* data = new InternetMimeData(this); data->setUrls(urls); data->indexes = new_indexes; - data->name_for_new_playlist_ = InternetModel::ServiceForIndex(last_valid_index)->name(); + data->name_for_new_playlist_ = + InternetModel::ServiceForIndex(last_valid_index)->name(); return data; } -bool InternetModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) { +bool InternetModel::dropMimeData(const QMimeData* data, Qt::DropAction action, + int row, int column, + const QModelIndex& parent) { if (action == Qt::IgnoreAction) { return false; } @@ -292,23 +289,22 @@ bool InternetModel::dropMimeData(const QMimeData* data, Qt::DropAction action, i return true; } -void InternetModel::ShowContextMenu(const QModelIndexList& selected_merged_model_indexes, - const QModelIndex& current_merged_model_index, - const QPoint& global_pos) { +void InternetModel::ShowContextMenu( + const QModelIndexList& selected_merged_model_indexes, + const QModelIndex& current_merged_model_index, const QPoint& global_pos) { current_index_ = merged_model_->mapToSource(current_merged_model_index); selected_indexes_.clear(); - foreach (const QModelIndex& index, selected_merged_model_indexes) { + for (const QModelIndex& index : selected_merged_model_indexes) { selected_indexes_ << merged_model_->mapToSource(index); } InternetService* service = ServiceForIndex(current_merged_model_index); - if (service) - service->ShowContextMenu(global_pos); + if (service) service->ShowContextMenu(global_pos); } void InternetModel::ReloadSettings() { - foreach (InternetService* service, sServices->values()) { + for (InternetService* service : sServices->values()) { service->ReloadSettings(); } } diff --git a/src/internet/internetmodel.h b/src/internet/internetmodel.h index e1f2b73b3..794cbd94a 100644 --- a/src/internet/internetmodel.h +++ b/src/internet/internetmodel.h @@ -35,14 +35,14 @@ class SettingsDialog; class TaskManager; #ifdef HAVE_LIBLASTFM - class LastFMService; +class LastFMService; #endif class InternetModel : public QStandardItemModel { Q_OBJECT -public: - InternetModel(Application* app, QObject* parent = 0); + public: + InternetModel(Application* app, QObject* parent = nullptr); enum Role { // Services can use this role to distinguish between different types of @@ -77,9 +77,7 @@ public: // Setting this to true means that the item can be changed by user action // (e.g. changing remote playlists) Role_CanBeModified, - RoleCount, - Role_IsDivider = LibraryModel::Role_IsDivider, }; @@ -88,7 +86,6 @@ public: Type_Track, Type_UserPlaylist, Type_SmartPlaylist, - TypeCount }; @@ -120,7 +117,7 @@ public: // Needs to be static for InternetPlaylistItem::restore static InternetService* ServiceByName(const QString& name); - template + template static T* Service() { return static_cast(ServiceByName(T::kServiceName)); } @@ -143,7 +140,8 @@ public: Qt::ItemFlags flags(const QModelIndex& index) const; QStringList mimeTypes() const; QMimeData* mimeData(const QModelIndexList& indexes) const; - bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent); + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int column, const QModelIndex& parent); bool hasChildren(const QModelIndex& parent) const; int rowCount(const QModelIndex& parent) const; @@ -165,10 +163,10 @@ signals: void AddToPlaylist(QMimeData* data); void ScrollToIndex(const QModelIndex& index); -private slots: + private slots: void ServiceDeleted(); -private: + private: static QMap* sServices; Application* app_; @@ -180,4 +178,4 @@ private: QModelIndex current_index_; }; -#endif // INTERNETMODEL_H +#endif // INTERNETMODEL_H diff --git a/src/internet/internetplaylistitem.cpp b/src/internet/internetplaylistitem.cpp index 5db1781cf..803a0b029 100644 --- a/src/internet/internetplaylistitem.cpp +++ b/src/internet/internetplaylistitem.cpp @@ -27,23 +27,21 @@ #include InternetPlaylistItem::InternetPlaylistItem(const QString& type) - : PlaylistItem(type), - set_service_icon_(false) -{ -} + : PlaylistItem(type), set_service_icon_(false) {} -InternetPlaylistItem::InternetPlaylistItem(InternetService* service, const Song& metadata) - : PlaylistItem("Internet"), - service_name_(service->name()), - set_service_icon_(false), - metadata_(metadata) -{ +InternetPlaylistItem::InternetPlaylistItem(InternetService* service, + const Song& metadata) + : PlaylistItem("Internet"), + service_name_(service->name()), + set_service_icon_(false), + metadata_(metadata) { InitMetadata(); } bool InternetPlaylistItem::InitFromQuery(const SqlRow& query) { // The song tables gets joined first, plus one each for the song ROWIDs - const int row = (Song::kColumns.count() + 1) * PlaylistBackend::kSongTableJoins; + const int row = + (Song::kColumns.count() + 1) * PlaylistBackend::kSongTableJoins; service_name_ = query.value(row + 1).toString(); @@ -70,8 +68,10 @@ InternetService* InternetPlaylistItem::service() const { QVariant InternetPlaylistItem::DatabaseValue(DatabaseColumn column) const { switch (column) { - case Column_InternetService: return service_name_; - default: return PlaylistItem::DatabaseValue(column); + case Column_InternetService: + return service_name_; + default: + return PlaylistItem::DatabaseValue(column); } } @@ -88,25 +88,20 @@ Song InternetPlaylistItem::Metadata() const { service(); } - if (HasTemporaryMetadata()) - return temp_metadata_; + if (HasTemporaryMetadata()) return temp_metadata_; return metadata_; } -QUrl InternetPlaylistItem::Url() const { - return metadata_.url(); -} +QUrl InternetPlaylistItem::Url() const { return metadata_.url(); } PlaylistItem::Options InternetPlaylistItem::options() const { InternetService* s = service(); - if (!s) - return Default; + if (!s) return Default; return s->playlistitem_options(); } QList InternetPlaylistItem::actions() { InternetService* s = service(); - if (!s) - return QList(); + if (!s) return QList(); return s->playlistitem_actions(metadata_); } diff --git a/src/internet/internetplaylistitem.h b/src/internet/internetplaylistitem.h index df14e1659..3f636397c 100644 --- a/src/internet/internetplaylistitem.h +++ b/src/internet/internetplaylistitem.h @@ -55,4 +55,4 @@ class InternetPlaylistItem : public PlaylistItem { Song metadata_; }; -#endif // INTERNETPLAYLISTITEM_H +#endif // INTERNETPLAYLISTITEM_H diff --git a/src/internet/internetservice.cpp b/src/internet/internetservice.cpp index b809f3ffb..ee033e651 100644 --- a/src/internet/internetservice.cpp +++ b/src/internet/internetservice.cpp @@ -27,66 +27,68 @@ InternetService::InternetService(const QString& name, Application* app, InternetModel* model, QObject* parent) - : QObject(parent), - app_(app), - model_(model), - name_(name), - append_to_playlist_(NULL), - replace_playlist_(NULL), - open_in_new_playlist_(NULL), - separator_(NULL) -{ -} + : QObject(parent), + app_(app), + model_(model), + name_(name), + append_to_playlist_(nullptr), + replace_playlist_(nullptr), + open_in_new_playlist_(nullptr), + separator_(nullptr) {} QList InternetService::GetPlaylistActions() { - if(!separator_) { + if (!separator_) { separator_ = new QAction(this); separator_->setSeparator(true); } return QList() << GetAppendToPlaylistAction() << GetReplacePlaylistAction() - << GetOpenInNewPlaylistAction() - << separator_; + << GetOpenInNewPlaylistAction() << separator_; } QAction* InternetService::GetAppendToPlaylistAction() { - if(!append_to_playlist_) { + if (!append_to_playlist_) { append_to_playlist_ = new QAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this); - connect(append_to_playlist_, SIGNAL(triggered()), this, SLOT(AppendToPlaylist())); + connect(append_to_playlist_, SIGNAL(triggered()), this, + SLOT(AppendToPlaylist())); } return append_to_playlist_; } QAction* InternetService::GetReplacePlaylistAction() { - if(!replace_playlist_) { + if (!replace_playlist_) { replace_playlist_ = new QAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this); - connect(replace_playlist_, SIGNAL(triggered()), this, SLOT(ReplacePlaylist())); + connect(replace_playlist_, SIGNAL(triggered()), this, + SLOT(ReplacePlaylist())); } return replace_playlist_; } QAction* InternetService::GetOpenInNewPlaylistAction() { - if(!open_in_new_playlist_) { + if (!open_in_new_playlist_) { open_in_new_playlist_ = new QAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this); - connect(open_in_new_playlist_, SIGNAL(triggered()), this, SLOT(OpenInNewPlaylist())); + connect(open_in_new_playlist_, SIGNAL(triggered()), this, + SLOT(OpenInNewPlaylist())); } return open_in_new_playlist_; } -void InternetService::AddItemToPlaylist(const QModelIndex& index, AddMode add_mode) { +void InternetService::AddItemToPlaylist(const QModelIndex& index, + AddMode add_mode) { AddItemsToPlaylist(QModelIndexList() << index, add_mode); } -void InternetService::AddItemsToPlaylist(const QModelIndexList& indexes, AddMode add_mode) { +void InternetService::AddItemsToPlaylist(const QModelIndexList& indexes, + AddMode add_mode) { QMimeData* data = model()->merged_model()->mimeData( - model()->merged_model()->mapFromSource(indexes)); + model()->merged_model()->mapFromSource(indexes)); if (MimeData* mime_data = qobject_cast(data)) { mime_data->clear_first_ = add_mode == AddMode_Replace; mime_data->open_in_new_playlist_ = add_mode == AddMode_OpenInNew; @@ -107,12 +109,12 @@ void InternetService::OpenInNewPlaylist() { } QStandardItem* InternetService::CreateSongItem(const Song& song) { - QStandardItem* item = new QStandardItem(song.PrettyTitleWithArtist()); - item->setData(InternetModel::Type_Track, InternetModel::Role_Type); - item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); - item->setData(song.url(), InternetModel::Role_Url); + QStandardItem* item = new QStandardItem(song.PrettyTitleWithArtist()); + item->setData(InternetModel::Type_Track, InternetModel::Role_Type); + item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); + item->setData(song.url(), InternetModel::Role_Url); - return item; + return item; } - diff --git a/src/internet/internetservice.h b/src/internet/internetservice.h index 482e472b3..abcadc024 100644 --- a/src/internet/internetservice.h +++ b/src/internet/internetservice.h @@ -36,11 +36,11 @@ class QStandardItem; class InternetService : public QObject { Q_OBJECT -public: + public: // Constructs a new internet service with the given name and model. The name // should be user-friendly (like 'DigitallyImported' or 'Last.fm'). InternetService(const QString& name, Application* app, InternetModel* model, - QObject* parent = NULL); + QObject* parent = nullptr); virtual ~InternetService() {} QString name() const { return name_; } @@ -52,15 +52,22 @@ public: virtual void ShowContextMenu(const QPoint& global_pos) {} virtual void ItemDoubleClicked(QStandardItem* item) {} // Create a generator for smart playlists - virtual smart_playlists::GeneratorPtr CreateGenerator(QStandardItem* item) { return smart_playlists::GeneratorPtr(); } + virtual smart_playlists::GeneratorPtr CreateGenerator(QStandardItem* item) { + return smart_playlists::GeneratorPtr(); + } // Give the service a chance to do a custom action when data is dropped on it virtual void DropMimeData(const QMimeData* data, const QModelIndex& index) {} - virtual PlaylistItem::Options playlistitem_options() const { return PlaylistItem::Default; } - // Redefine this function to add service' specific actions to the playlist item - virtual QList playlistitem_actions(const Song& song) { return QList(); } + virtual PlaylistItem::Options playlistitem_options() const { + return PlaylistItem::Default; + } + // Redefine this function to add service' specific actions to the playlist + // item + virtual QList playlistitem_actions(const Song& song) { + return QList(); + } - virtual QWidget* HeaderWidget() const { return NULL; } + virtual QWidget* HeaderWidget() const { return nullptr; } virtual void ReloadSettings() {} @@ -73,15 +80,15 @@ signals: void AddToPlaylistSignal(QMimeData* data); void ScrollToIndex(const QModelIndex& index); -public slots: + public slots: virtual void ShowConfig() {} -private slots: + private slots: void AppendToPlaylist(); void ReplacePlaylist(); void OpenInNewPlaylist(); -protected: + protected: // Returns all the playlist insertion related QActions (see below). QList GetPlaylistActions(); @@ -111,10 +118,10 @@ protected: // Set some common properties (type=track, url, etc.) QStandardItem* CreateSongItem(const Song& song); -protected: + protected: Application* app_; -private: + private: InternetModel* model_; QString name_; @@ -126,4 +133,4 @@ private: Q_DECLARE_METATYPE(InternetService*); -#endif // INTERNETSERVICE_H +#endif // INTERNETSERVICE_H diff --git a/src/internet/internetsongmimedata.h b/src/internet/internetsongmimedata.h index 9b6f69ad0..07e86d237 100644 --- a/src/internet/internetsongmimedata.h +++ b/src/internet/internetsongmimedata.h @@ -26,12 +26,11 @@ class InternetService; class InternetSongMimeData : public MimeData { Q_OBJECT -public: - InternetSongMimeData(InternetService* _service) - : service(_service) {} + public: + InternetSongMimeData(InternetService* _service) : service(_service) {} InternetService* service; SongList songs; }; -#endif // INTERNETSONGMIMEDATA_H +#endif // INTERNETSONGMIMEDATA_H diff --git a/src/internet/internetview.cpp b/src/internet/internetview.cpp index 9a8c94b49..4b14dcf5e 100644 --- a/src/internet/internetview.cpp +++ b/src/internet/internetview.cpp @@ -22,9 +22,7 @@ #include -InternetView::InternetView(QWidget *parent) - : AutoExpandingTreeView(parent) -{ +InternetView::InternetView(QWidget* parent) : AutoExpandingTreeView(parent) { setItemDelegate(new LibraryItemDelegate(this)); SetExpandOnReset(false); setAttribute(Qt::WA_MacShowFocusRect, false); @@ -33,26 +31,27 @@ InternetView::InternetView(QWidget *parent) void InternetView::contextMenuEvent(QContextMenuEvent* e) { QModelIndex index = indexAt(e->pos()); - if (!index.isValid()) - return; + if (!index.isValid()) return; MergedProxyModel* merged_model = static_cast(model()); - InternetModel* internet_model = static_cast(merged_model->sourceModel()); + InternetModel* internet_model = + static_cast(merged_model->sourceModel()); internet_model->ShowContextMenu(selectionModel()->selectedRows(), index, e->globalPos()); } -void InternetView::currentChanged(const QModelIndex ¤t, const QModelIndex&) { +void InternetView::currentChanged(const QModelIndex& current, + const QModelIndex&) { emit CurrentIndexChanged(current); } -void InternetView::setModel(QAbstractItemModel *model) { +void InternetView::setModel(QAbstractItemModel* model) { AutoExpandingTreeView::setModel(model); if (MergedProxyModel* merged_model = qobject_cast(model)) { connect(merged_model, - SIGNAL(SubModelReset(QModelIndex,QAbstractItemModel*)), + SIGNAL(SubModelReset(QModelIndex, QAbstractItemModel*)), SLOT(RecursivelyExpand(QModelIndex))); } } diff --git a/src/internet/internetview.h b/src/internet/internetview.h index 334959401..ef5d7be2b 100644 --- a/src/internet/internetview.h +++ b/src/internet/internetview.h @@ -24,17 +24,17 @@ class InternetView : public AutoExpandingTreeView { Q_OBJECT public: - InternetView(QWidget* parent = 0); + InternetView(QWidget* parent = nullptr); // QWidget void contextMenuEvent(QContextMenuEvent* e); // QTreeView - void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); - void setModel(QAbstractItemModel *model); + void currentChanged(const QModelIndex& current, const QModelIndex& previous); + void setModel(QAbstractItemModel* model); - signals: +signals: void CurrentIndexChanged(const QModelIndex& index); }; -#endif // INTERNETVIEW_H +#endif // INTERNETVIEW_H diff --git a/src/internet/internetviewcontainer.cpp b/src/internet/internetviewcontainer.cpp index 206c995aa..c9beec672 100644 --- a/src/internet/internetviewcontainer.cpp +++ b/src/internet/internetviewcontainer.cpp @@ -29,27 +29,25 @@ const int InternetViewContainer::kAnimationDuration = 500; -InternetViewContainer::InternetViewContainer(QWidget *parent) - : QWidget(parent), - ui_(new Ui_InternetViewContainer), - app_(NULL), - current_service_(NULL), - current_header_(NULL) -{ +InternetViewContainer::InternetViewContainer(QWidget* parent) + : QWidget(parent), + ui_(new Ui_InternetViewContainer), + app_(nullptr), + current_service_(nullptr), + current_header_(nullptr) { ui_->setupUi(this); - connect(ui_->tree, SIGNAL(collapsed(QModelIndex)), SLOT(Collapsed(QModelIndex))); - connect(ui_->tree, SIGNAL(expanded(QModelIndex)), SLOT(Expanded(QModelIndex))); - connect(ui_->tree, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), SLOT(FocusOnFilter(QKeyEvent*))); + connect(ui_->tree, SIGNAL(collapsed(QModelIndex)), + SLOT(Collapsed(QModelIndex))); + connect(ui_->tree, SIGNAL(expanded(QModelIndex)), + SLOT(Expanded(QModelIndex))); + connect(ui_->tree, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), + SLOT(FocusOnFilter(QKeyEvent*))); } -InternetViewContainer::~InternetViewContainer() { - delete ui_; -} +InternetViewContainer::~InternetViewContainer() { delete ui_; } -InternetView* InternetViewContainer::tree() const { - return ui_->tree; -} +InternetView* InternetViewContainer::tree() const { return ui_->tree; } void InternetViewContainer::SetApplication(Application* app) { app_ = app; @@ -57,14 +55,14 @@ void InternetViewContainer::SetApplication(Application* app) { ui_->tree->setModel(app_->internet_model()->merged_model()); connect(ui_->tree->selectionModel(), - SIGNAL(currentChanged(QModelIndex,QModelIndex)), + SIGNAL(currentChanged(QModelIndex, QModelIndex)), SLOT(CurrentIndexChanged(QModelIndex))); } void InternetViewContainer::ServiceChanged(const QModelIndex& index) { - InternetService* service = index.data(InternetModel::Role_Service).value(); - if (!service || service == current_service_) - return; + InternetService* service = + index.data(InternetModel::Role_Service).value(); + if (!service || service == current_service_) return; current_service_ = service; QWidget* header = service->HeaderWidget(); @@ -78,7 +76,8 @@ void InternetViewContainer::ServiceChanged(const QModelIndex& index) { d.visible_ = false; d.animation_ = new QTimeLine(kAnimationDuration, this); d.animation_->setFrameRange(0, header->sizeHint().height()); - connect(d.animation_, SIGNAL(frameChanged(int)), SLOT(SetHeaderHeight(int))); + connect(d.animation_, SIGNAL(frameChanged(int)), + SLOT(SetHeaderHeight(int))); headers_.insert(header, d); } @@ -93,11 +92,12 @@ void InternetViewContainer::CurrentIndexChanged(const QModelIndex& index) { } void InternetViewContainer::Collapsed(const QModelIndex& index) { - if (app_->internet_model()->merged_model()->mapToSource(index).model() == app_->internet_model() - && index.data(InternetModel::Role_Type) == InternetModel::Type_Service) { + if (app_->internet_model()->merged_model()->mapToSource(index).model() == + app_->internet_model() && + index.data(InternetModel::Role_Type) == InternetModel::Type_Service) { SetHeaderVisible(current_header_, false); - current_service_ = NULL; - current_header_ = NULL; + current_service_ = nullptr; + current_header_ = nullptr; } } @@ -106,15 +106,14 @@ void InternetViewContainer::Expanded(const QModelIndex& index) { } void InternetViewContainer::SetHeaderVisible(QWidget* header, bool visible) { - if (!header) - return; + if (!header) return; HeaderData& d = headers_[header]; - if (d.visible_ == visible) - return; + if (d.visible_ == visible) return; d.visible_ = visible; - d.animation_->setDirection(visible ? QTimeLine::Forward : QTimeLine::Backward); + d.animation_->setDirection(visible ? QTimeLine::Forward + : QTimeLine::Backward); d.animation_->start(); } @@ -123,26 +122,25 @@ void InternetViewContainer::FocusOnFilter(QKeyEvent* event) { if (current_header_) { int slot = current_header_->metaObject()->indexOfSlot( - QMetaObject::normalizedSignature("FocusOnFilter(QKeyEvent*)")); + QMetaObject::normalizedSignature("FocusOnFilter(QKeyEvent*)")); if (slot != -1) { current_header_->metaObject()->method(slot).invoke( - current_header_, Q_ARG(QKeyEvent*, event)); + current_header_, Q_ARG(QKeyEvent*, event)); } } } void InternetViewContainer::SetHeaderHeight(int height) { QTimeLine* animation = qobject_cast(sender()); - QWidget* header = NULL; - foreach (QWidget* h, headers_.keys()) { + QWidget* header = nullptr; + for (QWidget* h : headers_.keys()) { if (headers_[h].animation_ == animation) { header = h; break; } } - if (header) - header->setMaximumHeight(height); + if (header) header->setMaximumHeight(height); } void InternetViewContainer::ScrollToIndex(const QModelIndex& index) { diff --git a/src/internet/internetviewcontainer.h b/src/internet/internetviewcontainer.h index 5da4f8844..f57f4b177 100644 --- a/src/internet/internetviewcontainer.h +++ b/src/internet/internetviewcontainer.h @@ -34,7 +34,7 @@ class InternetViewContainer : public QWidget { Q_OBJECT public: - InternetViewContainer(QWidget* parent = 0); + InternetViewContainer(QWidget* parent = nullptr); ~InternetViewContainer(); static const int kAnimationDuration; @@ -72,4 +72,4 @@ class InternetViewContainer : public QWidget { QMap headers_; }; -#endif // INTERNETVIEWCONTAINER_H +#endif // INTERNETVIEWCONTAINER_H diff --git a/src/internet/jamendodynamicplaylist.cpp b/src/internet/jamendodynamicplaylist.cpp index c9c45de2f..b6daa0712 100644 --- a/src/internet/jamendodynamicplaylist.cpp +++ b/src/internet/jamendodynamicplaylist.cpp @@ -33,17 +33,17 @@ const char* JamendoDynamicPlaylist::kUrl = "http://api.jamendo.com/get2/id/track/plain/"; JamendoDynamicPlaylist::JamendoDynamicPlaylist() - : order_by_(OrderBy_Rating), - order_direction_(Order_Descending), - current_page_(0), - current_index_(0) { -} + : order_by_(OrderBy_Rating), + order_direction_(Order_Descending), + current_page_(0), + current_index_(0) {} -JamendoDynamicPlaylist::JamendoDynamicPlaylist(const QString& name, OrderBy order_by) - : order_by_(order_by), - order_direction_(Order_Descending), - current_page_(0), - current_index_(0) { +JamendoDynamicPlaylist::JamendoDynamicPlaylist(const QString& name, + OrderBy order_by) + : order_by_(order_by), + order_direction_(Order_Descending), + current_page_(0), + current_index_(0) { set_name(name); } @@ -52,7 +52,8 @@ void JamendoDynamicPlaylist::Load(const QByteArray& data) { s >> *this; } -void JamendoDynamicPlaylist::Load(OrderBy order_by, OrderDirection order_direction) { +void JamendoDynamicPlaylist::Load(OrderBy order_by, + OrderDirection order_direction) { order_by_ = order_by; order_direction_ = order_direction; } @@ -65,9 +66,7 @@ QByteArray JamendoDynamicPlaylist::Save() const { return ret; } -PlaylistItemList JamendoDynamicPlaylist::Generate() { - return GenerateMore(20); -} +PlaylistItemList JamendoDynamicPlaylist::Generate() { return GenerateMore(20); } PlaylistItemList JamendoDynamicPlaylist::GenerateMore(int count) { int tries = 0; @@ -91,14 +90,26 @@ PlaylistItemList JamendoDynamicPlaylist::GenerateMore(int count) { QString JamendoDynamicPlaylist::OrderSpec(OrderBy by, OrderDirection dir) { QString ret; switch (by) { - case OrderBy_Listened: ret += "listened"; break; - case OrderBy_Rating: ret += "rating"; break; - case OrderBy_RatingMonth: ret += "ratingmonth"; break; - case OrderBy_RatingWeek: ret += "ratingweek"; break; + case OrderBy_Listened: + ret += "listened"; + break; + case OrderBy_Rating: + ret += "rating"; + break; + case OrderBy_RatingMonth: + ret += "ratingmonth"; + break; + case OrderBy_RatingWeek: + ret += "ratingweek"; + break; } switch (dir) { - case Order_Ascending: ret += "_asc"; break; - case Order_Descending: ret += "_desc"; break; + case Order_Ascending: + ret += "_asc"; + break; + case Order_Descending: + ret += "_desc"; + break; } return ret; } @@ -111,7 +122,8 @@ void JamendoDynamicPlaylist::Fetch() { // We have to use QHttp here because there's no way to disable Keep-Alive // with QNetworkManager. - QHttpRequestHeader header("GET", QString(url.encodedPath() + "?" + url.encodedQuery())); + QHttpRequestHeader header( + "GET", QString(url.encodedPath() + "?" + url.encodedQuery())); header.setValue("Host", url.encodedHost()); QHttp http(url.host()); @@ -120,13 +132,14 @@ void JamendoDynamicPlaylist::Fetch() { // Wait for the reply { QEventLoop event_loop; - connect(&http, SIGNAL(requestFinished(int,bool)), &event_loop, SLOT(quit())); + connect(&http, SIGNAL(requestFinished(int, bool)), &event_loop, + SLOT(quit())); event_loop.exec(); } if (http.error() != QHttp::NoError) { qLog(Warning) << "HTTP error returned from Jamendo:" << http.errorString() - << ", url:" << url.toString(); + << ", url:" << url.toString(); return; } @@ -135,28 +148,27 @@ void JamendoDynamicPlaylist::Fetch() { // Get the songs from the database SongList songs = backend_->GetSongsByForeignId( - lines, JamendoService::kTrackIdsTable, JamendoService::kTrackIdsColumn); + lines, JamendoService::kTrackIdsTable, JamendoService::kTrackIdsColumn); if (songs.empty()) { - qLog(Warning) << "No songs returned from Jamendo:" - << url.toString(); + qLog(Warning) << "No songs returned from Jamendo:" << url.toString(); return; } current_items_.clear(); - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (song.is_valid()) current_items_ << PlaylistItemPtr(new JamendoPlaylistItem(song)); } current_index_ = 0; } -QDataStream& operator <<(QDataStream& s, const JamendoDynamicPlaylist& p) { +QDataStream& operator<<(QDataStream& s, const JamendoDynamicPlaylist& p) { s << quint8(p.order_by_) << quint8(p.order_direction_); return s; } -QDataStream& operator >>(QDataStream& s, JamendoDynamicPlaylist& p) { +QDataStream& operator>>(QDataStream& s, JamendoDynamicPlaylist& p) { quint8 order_by, order_direction; s >> order_by >> order_direction; p.order_by_ = JamendoDynamicPlaylist::OrderBy(order_by); diff --git a/src/internet/jamendodynamicplaylist.h b/src/internet/jamendodynamicplaylist.h index 266f46364..d69318208 100644 --- a/src/internet/jamendodynamicplaylist.h +++ b/src/internet/jamendodynamicplaylist.h @@ -22,10 +22,11 @@ class JamendoDynamicPlaylist : public smart_playlists::Generator { Q_OBJECT - friend QDataStream& operator <<(QDataStream& s, const JamendoDynamicPlaylist& p); - friend QDataStream& operator >>(QDataStream& s, JamendoDynamicPlaylist& p); + friend QDataStream& operator<<(QDataStream& s, + const JamendoDynamicPlaylist& p); + friend QDataStream& operator>>(QDataStream& s, JamendoDynamicPlaylist& p); -public: + public: // These values are persisted - only add to the end enum OrderBy { OrderBy_Rating = 0, @@ -35,10 +36,7 @@ public: }; // These values are persisted - only add to the end - enum OrderDirection { - Order_Ascending = 0, - Order_Descending = 1, - }; + enum OrderDirection { Order_Ascending = 0, Order_Descending = 1, }; JamendoDynamicPlaylist(); JamendoDynamicPlaylist(const QString& name, OrderBy order_by); @@ -46,7 +44,8 @@ public: QString type() const { return "Jamendo"; } void Load(const QByteArray& data); - void Load(OrderBy order_by, OrderDirection order_direction = Order_Descending); + void Load(OrderBy order_by, + OrderDirection order_direction = Order_Descending); QByteArray Save() const; PlaylistItemList Generate(); @@ -54,11 +53,11 @@ public: bool is_dynamic() const { return true; } PlaylistItemList GenerateMore(int count); -private: + private: void Fetch(); static QString OrderSpec(OrderBy by, OrderDirection dir); -private: + private: OrderBy order_by_; OrderDirection order_direction_; @@ -71,7 +70,7 @@ private: static const char* kUrl; }; -QDataStream& operator <<(QDataStream& s, const JamendoDynamicPlaylist& p); -QDataStream& operator >>(QDataStream& s, JamendoDynamicPlaylist& p); +QDataStream& operator<<(QDataStream& s, const JamendoDynamicPlaylist& p); +QDataStream& operator>>(QDataStream& s, JamendoDynamicPlaylist& p); #endif diff --git a/src/internet/jamendoplaylistitem.cpp b/src/internet/jamendoplaylistitem.cpp index f14d69829..253ac4134 100644 --- a/src/internet/jamendoplaylistitem.cpp +++ b/src/internet/jamendoplaylistitem.cpp @@ -18,13 +18,10 @@ #include "jamendoplaylistitem.h" JamendoPlaylistItem::JamendoPlaylistItem(const QString& type) - : LibraryPlaylistItem(type) -{ -} + : LibraryPlaylistItem(type) {} JamendoPlaylistItem::JamendoPlaylistItem(const Song& song) - : LibraryPlaylistItem("Jamendo") -{ + : LibraryPlaylistItem("Jamendo") { song_ = song; } @@ -35,6 +32,4 @@ bool JamendoPlaylistItem::InitFromQuery(const SqlRow& query) { return song_.is_valid(); } -QUrl JamendoPlaylistItem::Url() const { - return song_.url(); -} +QUrl JamendoPlaylistItem::Url() const { return song_.url(); } diff --git a/src/internet/jamendoplaylistitem.h b/src/internet/jamendoplaylistitem.h index 4faab507e..06e35a3e1 100644 --- a/src/internet/jamendoplaylistitem.h +++ b/src/internet/jamendoplaylistitem.h @@ -21,7 +21,7 @@ #include "library/libraryplaylistitem.h" class JamendoPlaylistItem : public LibraryPlaylistItem { -public: + public: JamendoPlaylistItem(const QString& type); JamendoPlaylistItem(const Song& song); @@ -30,4 +30,4 @@ public: QUrl Url() const; }; -#endif // JAMENDOPLAYLISTITEM_H +#endif // JAMENDOPLAYLISTITEM_H diff --git a/src/internet/jamendoservice.cpp b/src/internet/jamendoservice.cpp index 325b800c2..99d50d131 100644 --- a/src/internet/jamendoservice.cpp +++ b/src/internet/jamendoservice.cpp @@ -51,14 +51,17 @@ const char* JamendoService::kServiceName = "Jamendo"; const char* JamendoService::kDirectoryUrl = "http://img.jamendo.com/data/dbdump_artistalbumtrack.xml.gz"; const char* JamendoService::kMp3StreamUrl = - "http://api.jamendo.com/get2/stream/track/redirect/?id=%1&streamencoding=mp31"; + "http://api.jamendo.com/get2/stream/track/redirect/" + "?id=%1&streamencoding=mp31"; const char* JamendoService::kOggStreamUrl = - "http://api.jamendo.com/get2/stream/track/redirect/?id=%1&streamencoding=ogg2"; + "http://api.jamendo.com/get2/stream/track/redirect/" + "?id=%1&streamencoding=ogg2"; const char* JamendoService::kAlbumCoverUrl = "http://api.jamendo.com/get2/image/album/redirect/?id=%1&imagesize=300"; const char* JamendoService::kHomepage = "http://www.jamendo.com/"; const char* JamendoService::kAlbumInfoUrl = "http://www.jamendo.com/album/%1"; -const char* JamendoService::kDownloadAlbumUrl = "http://www.jamendo.com/download/album/%1"; +const char* JamendoService::kDownloadAlbumUrl = + "http://www.jamendo.com/download/album/%1"; const char* JamendoService::kSongsTable = "jamendo.songs"; const char* JamendoService::kFtsTable = "jamendo.songs_fts"; @@ -73,19 +76,19 @@ const int JamendoService::kApproxDatabaseSize = 300000; JamendoService::JamendoService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), network_(new NetworkAccessManager(this)), - context_menu_(NULL), - library_backend_(NULL), - library_filter_(NULL), - library_model_(NULL), + context_menu_(nullptr), + library_backend_(nullptr), + library_filter_(nullptr), + library_model_(nullptr), library_sort_model_(new QSortFilterProxyModel(this)), - search_provider_(NULL), + search_provider_(nullptr), load_database_task_id_(0), total_song_count_(0), accepted_download_(false) { library_backend_ = new LibraryBackend; library_backend_->moveToThread(app_->database()->thread()); - library_backend_->Init(app_->database(), kSongsTable, - QString::null, QString::null, kFtsTable); + library_backend_->Init(app_->database(), kSongsTable, QString::null, + QString::null, kFtsTable); connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(UpdateTotalSongCount(int))); @@ -98,23 +101,27 @@ JamendoService::JamendoService(Application* app, InternetModel* parent) library_model_ = new LibraryModel(library_backend_, app_, this); library_model_->set_show_various_artists(false); library_model_->set_show_smart_playlists(false); - library_model_->set_default_smart_playlists(LibraryModel::DefaultGenerators() - << (LibraryModel::GeneratorList() - << GeneratorPtr(new JamendoDynamicPlaylist(tr("Jamendo Top Tracks of the Month"), - JamendoDynamicPlaylist::OrderBy_RatingMonth)) - << GeneratorPtr(new JamendoDynamicPlaylist(tr("Jamendo Top Tracks of the Week"), - JamendoDynamicPlaylist::OrderBy_RatingWeek)) - << GeneratorPtr(new JamendoDynamicPlaylist(tr("Jamendo Top Tracks"), - JamendoDynamicPlaylist::OrderBy_Rating)) - << GeneratorPtr(new JamendoDynamicPlaylist(tr("Jamendo Most Listened Tracks"), - JamendoDynamicPlaylist::OrderBy_Listened)) - ) - << (LibraryModel::GeneratorList() - << GeneratorPtr(new QueryGenerator(tr("Dynamic random mix"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_Random, SearchTerm::Field_Title), true)) - ) - ); + library_model_->set_default_smart_playlists( + LibraryModel::DefaultGenerators() + << (LibraryModel::GeneratorList() + << GeneratorPtr(new JamendoDynamicPlaylist( + tr("Jamendo Top Tracks of the Month"), + JamendoDynamicPlaylist::OrderBy_RatingMonth)) + << GeneratorPtr(new JamendoDynamicPlaylist( + tr("Jamendo Top Tracks of the Week"), + JamendoDynamicPlaylist::OrderBy_RatingWeek)) + << GeneratorPtr(new JamendoDynamicPlaylist( + tr("Jamendo Top Tracks"), + JamendoDynamicPlaylist::OrderBy_Rating)) + << GeneratorPtr(new JamendoDynamicPlaylist( + tr("Jamendo Most Listened Tracks"), + JamendoDynamicPlaylist::OrderBy_Listened))) + << (LibraryModel::GeneratorList() + << GeneratorPtr(new QueryGenerator( + tr("Dynamic random mix"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_Random, SearchTerm::Field_Title), + true)))); library_sort_model_->setSourceModel(library_model_); library_sort_model_->setSortRole(LibraryModel::Role_SortText); @@ -123,22 +130,19 @@ JamendoService::JamendoService(Application* app, InternetModel* parent) library_sort_model_->sort(0); search_provider_ = new LibrarySearchProvider( - library_backend_, - tr("Jamendo"), - "jamendo", - QIcon(":/providers/jamendo.png"), - false, app_, this); + library_backend_, tr("Jamendo"), "jamendo", + QIcon(":/providers/jamendo.png"), false, app_, this); app_->global_search()->AddProvider(search_provider_); connect(app_->global_search(), - SIGNAL(ProviderToggled(const SearchProvider*,bool)), - SLOT(SearchProviderToggled(const SearchProvider*,bool))); + SIGNAL(ProviderToggled(const SearchProvider*, bool)), + SLOT(SearchProviderToggled(const SearchProvider*, bool))); } -JamendoService::~JamendoService() { -} +JamendoService::~JamendoService() {} QStandardItem* JamendoService::CreateRootItem() { - QStandardItem* item = new QStandardItem(QIcon(":providers/jamendo.png"), kServiceName); + QStandardItem* item = + new QStandardItem(QIcon(":providers/jamendo.png"), kServiceName); item->setData(true, InternetModel::Role_CanLazyLoad); return item; } @@ -161,15 +165,19 @@ void JamendoService::UpdateTotalSongCount(int count) { total_song_count_ = count; if (total_song_count_ > 0) { library_model_->set_show_smart_playlists(true); - accepted_download_ = true; //the user has previously accepted + accepted_download_ = true; // the user has previously accepted } } void JamendoService::DownloadDirectory() { - //don't ask if we're refreshing the database + // don't ask if we're refreshing the database if (total_song_count_ == 0) { - if (QMessageBox::question(context_menu_, tr("Jamendo database"), tr("This action will create a database which could be as big as 150 MB.\n" - "Do you want to continue anyway?"), QMessageBox::Ok | QMessageBox::Cancel) != QMessageBox::Ok) + if (QMessageBox::question(context_menu_, tr("Jamendo database"), + tr("This action will create a database which " + "could be as big as 150 MB.\n" + "Do you want to continue anyway?"), + QMessageBox::Ok | QMessageBox::Cancel) != + QMessageBox::Ok) return; } accepted_download_ = true; @@ -179,19 +187,19 @@ void JamendoService::DownloadDirectory() { QNetworkReply* reply = network_->get(req); connect(reply, SIGNAL(finished()), SLOT(DownloadDirectoryFinished())); - connect(reply, SIGNAL(downloadProgress(qint64,qint64)), - SLOT(DownloadDirectoryProgress(qint64,qint64))); + connect(reply, SIGNAL(downloadProgress(qint64, qint64)), + SLOT(DownloadDirectoryProgress(qint64, qint64))); if (!load_database_task_id_) { - load_database_task_id_ = app_->task_manager()->StartTask( - tr("Downloading Jamendo catalogue")); + load_database_task_id_ = + app_->task_manager()->StartTask(tr("Downloading Jamendo catalogue")); } } void JamendoService::DownloadDirectoryProgress(qint64 received, qint64 total) { float progress = float(received) / total; app_->task_manager()->SetTaskProgress(load_database_task_id_, - int(progress * 100), 100); + int(progress * 100), 100); } void JamendoService::DownloadDirectoryFinished() { @@ -210,11 +218,11 @@ void JamendoService::DownloadDirectoryFinished() { return; } - load_database_task_id_ = app_->task_manager()->StartTask( - tr("Parsing Jamendo catalogue")); + load_database_task_id_ = + app_->task_manager()->StartTask(tr("Parsing Jamendo catalogue")); - QFuture future = QtConcurrent::run( - this, &JamendoService::ParseDirectory, gzip); + QFuture future = + QtConcurrent::run(this, &JamendoService::ParseDirectory, gzip); QFutureWatcher* watcher = new QFutureWatcher(); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(ParseDirectoryFinished())); @@ -226,8 +234,8 @@ void JamendoService::ParseDirectory(QIODevice* device) const { // Bit of a hack: don't update the model while we're parsing the xml disconnect(library_backend_, SIGNAL(SongsDiscovered(SongList)), library_model_, SLOT(SongsDiscovered(SongList))); - disconnect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), - this, SLOT(UpdateTotalSongCount(int))); + disconnect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), this, + SLOT(UpdateTotalSongCount(int))); // Delete the database and recreate it. This is faster than dropping tables // or removing rows. @@ -253,16 +261,16 @@ void JamendoService::ParseDirectory(QIODevice* device) const { track_ids.clear(); // Update progress info - app_->task_manager()->SetTaskProgress( - load_database_task_id_, total_count, kApproxDatabaseSize); + app_->task_manager()->SetTaskProgress(load_database_task_id_, total_count, + kApproxDatabaseSize); } } library_backend_->AddOrUpdateSongs(songs); InsertTrackIds(track_ids); - connect(library_backend_, SIGNAL(SongsDiscovered(SongList)), - library_model_, SLOT(SongsDiscovered(SongList))); + connect(library_backend_, SIGNAL(SongsDiscovered(SongList)), library_model_, + SLOT(SongsDiscovered(SongList))); connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(UpdateTotalSongCount(int))); @@ -276,9 +284,10 @@ void JamendoService::InsertTrackIds(const TrackIdList& ids) const { ScopedTransaction t(&db); QSqlQuery insert(QString("INSERT INTO %1 (%2) VALUES (:id)") - .arg(kTrackIdsTable, kTrackIdsColumn), db); + .arg(kTrackIdsTable, kTrackIdsColumn), + db); - foreach (int id, ids) { + for (int id : ids) { insert.bindValue(":id", id); if (!insert.exec()) { qLog(Warning) << "Query failed" << insert.lastQuery(); @@ -311,8 +320,9 @@ SongList JamendoService::ReadArtist(QXmlStreamReader* reader, return ret; } -SongList JamendoService::ReadAlbum( - const QString& artist, QXmlStreamReader* reader, TrackIdList* track_ids) const { +SongList JamendoService::ReadAlbum(const QString& artist, + QXmlStreamReader* reader, + TrackIdList* track_ids) const { SongList ret; QString current_album; QString cover; @@ -329,8 +339,8 @@ SongList JamendoService::ReadAlbum( cover = QString(kAlbumCoverUrl).arg(id); current_album_id = id.toInt(); } else if (reader->name() == "track") { - ret << ReadTrack(artist, current_album, cover, current_album_id, - reader, track_ids); + ret << ReadTrack(artist, current_album, cover, current_album_id, reader, + track_ids); } } else if (reader->isEndElement() && reader->name() == "album") { break; @@ -339,10 +349,8 @@ SongList JamendoService::ReadAlbum( return ret; } -Song JamendoService::ReadTrack(const QString& artist, - const QString& album, - const QString& album_cover, - int album_id, +Song JamendoService::ReadTrack(const QString& artist, const QString& album, + const QString& album_cover, int album_id, QXmlStreamReader* reader, TrackIdList* track_ids) const { Song song; @@ -375,8 +383,7 @@ Song JamendoService::ReadTrack(const QString& artist, } else if (name == "id") { QString id_text = reader->readElementText(); int id = id_text.toInt(); - if (id == 0) - continue; + if (id == 0) continue; QString mp3_url = QString(kMp3StreamUrl).arg(id_text); song.set_url(QUrl(mp3_url)); @@ -397,7 +404,7 @@ void JamendoService::ParseDirectoryFinished() { QFutureWatcher* watcher = static_cast*>(sender()); delete watcher; - //show smart playlists + // show smart playlists library_model_->set_show_smart_playlists(true); library_model_->Reset(); @@ -406,18 +413,23 @@ void JamendoService::ParseDirectoryFinished() { } void JamendoService::EnsureMenuCreated() { - if (library_filter_) - return; + if (library_filter_) return; context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); album_info_ = context_menu_->addAction(IconLoader::Load("view-media-lyrics"), - tr("Album info on jamendo.com..."), this, SLOT(AlbumInfo())); + tr("Album info on jamendo.com..."), + this, SLOT(AlbumInfo())); download_album_ = context_menu_->addAction(IconLoader::Load("download"), - tr("Download this album..."), this, SLOT(DownloadAlbum())); + tr("Download this album..."), this, + SLOT(DownloadAlbum())); context_menu_->addSeparator(); - context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg("jamendo.com"), this, SLOT(Homepage())); - context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh catalogue"), this, SLOT(DownloadDirectory())); + context_menu_->addAction(IconLoader::Load("download"), + tr("Open %1 in browser").arg("jamendo.com"), this, + SLOT(Homepage())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh catalogue"), this, + SLOT(DownloadDirectory())); if (accepted_download_) { library_filter_ = new LibraryFilterWidget(0); @@ -437,7 +449,7 @@ void JamendoService::ShowContextMenu(const QPoint& global_pos) { const bool enabled = accepted_download_ && model()->current_index().model() == library_sort_model_; - //make menu items visible and enabled only when needed + // make menu items visible and enabled only when needed GetAppendToPlaylistAction()->setVisible(accepted_download_); GetAppendToPlaylistAction()->setEnabled(enabled); GetReplacePlaylistAction()->setVisible(accepted_download_); @@ -460,13 +472,11 @@ QWidget* JamendoService::HeaderWidget() const { void JamendoService::AlbumInfo() { SongList songs(library_model_->GetChildSongs( library_sort_model_->mapToSource(model()->current_index()))); - if (songs.isEmpty()) - return; + if (songs.isEmpty()) return; // We put the album ID into the comment field int id = songs.first().comment().toInt(); - if (!id) - return; + if (!id) return; QDesktopServices::openUrl(QUrl(QString(kAlbumInfoUrl).arg(id))); } @@ -474,20 +484,16 @@ void JamendoService::AlbumInfo() { void JamendoService::DownloadAlbum() { SongList songs(library_model_->GetChildSongs( library_sort_model_->mapToSource(model()->current_index()))); - if (songs.isEmpty()) - return; + if (songs.isEmpty()) return; // We put the album ID into the comment field int id = songs.first().comment().toInt(); - if (!id) - return; + if (!id) return; QDesktopServices::openUrl(QUrl(QString(kDownloadAlbumUrl).arg(id))); } -void JamendoService::Homepage() { - QDesktopServices::openUrl(QUrl(kHomepage)); -} +void JamendoService::Homepage() { QDesktopServices::openUrl(QUrl(kHomepage)); } void JamendoService::SearchProviderToggled(const SearchProvider* provider, bool enabled) { diff --git a/src/internet/jamendoservice.h b/src/internet/jamendoservice.h index c2000a1c7..b658da0ef 100644 --- a/src/internet/jamendoservice.h +++ b/src/internet/jamendoservice.h @@ -77,12 +77,9 @@ class JamendoService : public InternetService { SongList ReadArtist(QXmlStreamReader* reader, TrackIdList* track_ids) const; SongList ReadAlbum(const QString& artist, QXmlStreamReader* reader, TrackIdList* track_ids) const; - Song ReadTrack(const QString& artist, - const QString& album, - const QString& album_cover, - int album_id, - QXmlStreamReader* reader, - TrackIdList* track_ids) const; + Song ReadTrack(const QString& artist, const QString& album, + const QString& album_cover, int album_id, + QXmlStreamReader* reader, TrackIdList* track_ids) const; void InsertTrackIds(const TrackIdList& ids) const; void EnsureMenuCreated(); diff --git a/src/internet/lastfmcompat.cpp b/src/internet/lastfmcompat.cpp index 09603fb8c..8f4d1579e 100644 --- a/src/internet/lastfmcompat.cpp +++ b/src/internet/lastfmcompat.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -23,16 +23,15 @@ namespace compat { #ifdef HAVE_LIBLASTFM1 -XmlQuery EmptyXmlQuery() { - return XmlQuery(); -} +XmlQuery EmptyXmlQuery() { return XmlQuery(); } -bool ParseQuery(const QByteArray& data, XmlQuery* query, bool* connection_problems) { +bool ParseQuery(const QByteArray& data, XmlQuery* query, + bool* connection_problems) { const bool ret = query->parse(data); if (connection_problems) { - *connection_problems = - !ret && query->parseError().enumValue() == lastfm::ws::MalformedResponse; + *connection_problems = !ret && query->parseError().enumValue() == + lastfm::ws::MalformedResponse; } return ret; @@ -48,32 +47,33 @@ bool ParseUserList(QNetworkReply* reply, QList* users) { return true; } -uint ScrobbleTimeMin() { - return lastfm::ScrobblePoint::scrobbleTimeMin(); -} +uint ScrobbleTimeMin() { return lastfm::ScrobblePoint::scrobbleTimeMin(); } -#else // HAVE_LIBLASTFM1 +#else // HAVE_LIBLASTFM1 XmlQuery EmptyXmlQuery() { QByteArray dummy; return XmlQuery(dummy); } -bool ParseQuery(const QByteArray& data, XmlQuery* query, bool* connection_problems) { +bool ParseQuery(const QByteArray& data, XmlQuery* query, + bool* connection_problems) { try { *query = lastfm::XmlQuery(data); - #ifdef Q_OS_WIN32 - if (lastfm::ws::last_parse_error != lastfm::ws::NoError) { - return false; - } - #endif // Q_OS_WIN32 - } catch (lastfm::ws::ParseError e) { +#ifdef Q_OS_WIN32 + if (lastfm::ws::last_parse_error != lastfm::ws::NoError) { + return false; + } +#endif // Q_OS_WIN32 + } + catch (lastfm::ws::ParseError e) { qLog(Error) << "Last.fm parse error: " << e.enumValue(); if (connection_problems) { *connection_problems = e.enumValue() == lastfm::ws::MalformedResponse; } return false; - } catch(std::runtime_error& e) { + } + catch (std::runtime_error& e) { qLog(Error) << e.what(); return false; } @@ -93,23 +93,21 @@ bool ParseQuery(const QByteArray& data, XmlQuery* query, bool* connection_proble bool ParseUserList(QNetworkReply* reply, QList* users) { try { *users = lastfm::User::list(reply); - #ifdef Q_OS_WIN32 - if (lastfm::ws::last_parse_error != lastfm::ws::NoError) { - return false; - } - #endif // Q_OS_WIN32 - } catch(std::runtime_error& e) { +#ifdef Q_OS_WIN32 + if (lastfm::ws::last_parse_error != lastfm::ws::NoError) { + return false; + } +#endif // Q_OS_WIN32 + } + catch (std::runtime_error& e) { qLog(Error) << e.what(); return false; } return true; } -uint ScrobbleTimeMin() { - return ScrobblePoint::kScrobbleMinLength; -} - -#endif // HAVE_LIBLASTFM1 +uint ScrobbleTimeMin() { return ScrobblePoint::kScrobbleMinLength; } +#endif // HAVE_LIBLASTFM1 } } diff --git a/src/internet/lastfmcompat.h b/src/internet/lastfmcompat.h index ca24d2e8d..cdd149be4 100644 --- a/src/internet/lastfmcompat.h +++ b/src/internet/lastfmcompat.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -22,21 +22,21 @@ #include "fixlastfm.h" #ifdef HAVE_LIBLASTFM1 - #include - #include - #include - #include - #include - #include - #include +#include +#include +#include +#include +#include +#include +#include #else - #include - #include - #include - #include - #include - #include - #include +#include +#include +#include +#include +#include +#include +#include #endif namespace lastfm { @@ -45,21 +45,20 @@ namespace compat { lastfm::XmlQuery EmptyXmlQuery(); bool ParseQuery(const QByteArray& data, lastfm::XmlQuery* query, - bool* connection_problems = NULL); + bool* connection_problems = nullptr); bool ParseUserList(QNetworkReply* reply, QList* users); uint ScrobbleTimeMin(); #ifdef HAVE_LIBLASTFM1 - typedef lastfm::ScrobbleCache ScrobbleCache; - typedef lastfm::User AuthenticatedUser; +typedef lastfm::ScrobbleCache ScrobbleCache; +typedef lastfm::User AuthenticatedUser; #else - typedef ::ScrobbleCache ScrobbleCache; - typedef lastfm::AuthenticatedUser AuthenticatedUser; +typedef ::ScrobbleCache ScrobbleCache; +typedef lastfm::AuthenticatedUser AuthenticatedUser; #endif - } } -#endif // LASTFMCOMPAT_H +#endif // LASTFMCOMPAT_H diff --git a/src/internet/lastfmservice.cpp b/src/internet/lastfmservice.cpp index 2636524fe..e3091eb2f 100644 --- a/src/internet/lastfmservice.cpp +++ b/src/internet/lastfmservice.cpp @@ -15,37 +15,34 @@ along with Clementine. If not, see . */ -// StringBuilder is activated to speed-up QString concatenation. As explained here: +// StringBuilder is activated to speed-up QString concatenation. As explained +// here: // http://labs.qt.nokia.com/2011/06/13/string-concatenation-with-qstringbuilder/ // this cause some compilation errors in some cases. As Lasfm library inlines // some functions in their includes files, which aren't compatible with // QStringBuilder, we undef it here #include #if QT_VERSION >= 0x040600 - #if QT_VERSION >= 0x040800 - #undef QT_USE_QSTRINGBUILDER - #else - #undef QT_USE_FAST_CONCATENATION - #undef QT_USE_FAST_OPERATOR_PLUS - #endif // QT_VERSION >= 0x040800 -#endif // QT_VERSION >= 0x040600 +#if QT_VERSION >= 0x040800 +#undef QT_USE_QSTRINGBUILDER +#else +#undef QT_USE_FAST_CONCATENATION +#undef QT_USE_FAST_OPERATOR_PLUS +#endif // QT_VERSION >= 0x040800 +#endif // QT_VERSION >= 0x040600 #include "lastfmservice.h" -#include - #include #include #ifdef HAVE_LIBLASTFM1 - #include +#include #else - #include +#include #endif #include "lastfmcompat.h" -#include "lastfmstationdialog.h" -#include "lastfmurlhandler.h" #include "internetmodel.h" #include "internetplaylistitem.h" #include "core/application.h" @@ -56,17 +53,13 @@ #include "core/taskmanager.h" #include "covers/coverproviders.h" #include "covers/lastfmcoverprovider.h" -#include "globalsearch/globalsearch.h" -#include "globalsearch/lastfmsearchprovider.h" #include "ui/iconloader.h" #include "ui/settingsdialog.h" -using boost::scoped_ptr; using lastfm::XmlQuery; uint qHash(const lastfm::Track& track) { - return qHash(track.title()) ^ - qHash(track.artist().name()) ^ + return qHash(track.title()) ^ qHash(track.artist().name()) ^ qHash(track.album().title()); } @@ -76,68 +69,23 @@ const char* LastFMService::kAudioscrobblerClientId = "tng"; const char* LastFMService::kApiKey = "75d20fb472be99275392aefa2760ea09"; const char* LastFMService::kSecret = "d3072b60ae626be12be69448f5c46e70"; -const char* LastFMService::kUrlArtist = "lastfm://artist/%1/similarartists"; -const char* LastFMService::kUrlTag = "lastfm://globaltags/%1"; -const char* LastFMService::kUrlCustom = "lastfm://rql/%1"; - -const char* LastFMService::kTitleArtist = QT_TR_NOOP("Last.fm Similar Artists to %1"); -const char* LastFMService::kTitleTag = QT_TR_NOOP("Last.fm Tag Radio: %1"); -const char* LastFMService::kTitleCustom = QT_TR_NOOP("Last.fm Custom Radio: %1"); - -const int LastFMService::kFriendsCacheDurationSecs = 60 * 60 * 24; // 1 day - -LastFMService::LastFMService(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - url_handler_(new LastFMUrlHandler(this, this)), - scrobbler_(NULL), - already_scrobbled_(false), - station_dialog_(new LastFMStationDialog), - context_menu_(new QMenu), - initial_tune_(false), - tune_task_id_(0), - scrobbling_enabled_(false), - root_item_(NULL), - artist_list_(NULL), - tag_list_(NULL), - custom_list_(NULL), - friends_list_(NULL), - neighbours_list_(NULL), - friend_names_(kSettingsGroup, "friend_names", kFriendsCacheDurationSecs), - connection_problems_(false) -{ +LastFMService::LastFMService(Application* app, QObject* parent) + : Scrobbler(parent), + scrobbler_(nullptr), + already_scrobbled_(false), + scrobbling_enabled_(false), + connection_problems_(false), + app_(app) { ReloadSettings(); - //we emit the signal the first time to be sure the buttons are in the right state + // we emit the signal the first time to be sure the buttons are in the right + // state emit ScrobblingEnabledChanged(scrobbling_enabled_); - context_menu_->addActions(GetPlaylistActions()); - remove_action_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); - context_menu_->addSeparator(); - add_artist_action_ = context_menu_->addAction( - QIcon(":last.fm/icon_radio.png"), tr("Play artist radio..."), this, SLOT(AddArtistRadio())); - add_tag_action_ = context_menu_->addAction( - QIcon(":last.fm/icon_tag.png"), tr("Play tag radio..."), this, SLOT(AddTagRadio())); - add_custom_action_ = context_menu_->addAction( - QIcon(":last.fm/icon_radio.png"), tr("Play custom radio..."), this, SLOT(AddCustomRadio())); - refresh_friends_action_ = context_menu_->addAction( - IconLoader::Load("view-refresh"), tr("Refresh friends list"), this, SLOT(ForceRefreshFriends())); - context_menu_->addAction( - IconLoader::Load("configure"), tr("Configure Last.fm..."), this, SLOT(ShowConfig())); - - remove_action_->setEnabled(false); - add_artist_action_->setEnabled(false); - add_tag_action_->setEnabled(false); - add_custom_action_->setEnabled(false); - - app_->player()->RegisterUrlHandler(url_handler_); app_->cover_providers()->AddProvider(new LastFmCoverProvider(this)); - - app_->global_search()->AddProvider(new LastFMSearchProvider(this, app_, this)); } -LastFMService::~LastFMService() { -} +LastFMService::~LastFMService() {} void LastFMService::ReloadSettings() { bool scrobbling_enabled_old = scrobbling_enabled_; @@ -147,12 +95,12 @@ void LastFMService::ReloadSettings() { lastfm::ws::SessionKey = settings.value("Session").toString(); scrobbling_enabled_ = settings.value("ScrobblingEnabled", true).toBool(); buttons_visible_ = settings.value("ShowLoveBanButtons", true).toBool(); - scrobble_button_visible_ = settings.value("ShowScrobbleButton", true).toBool(); + scrobble_button_visible_ = + settings.value("ShowScrobbleButton", true).toBool(); prefer_albumartist_ = settings.value("PreferAlbumArtist", false).toBool(); - friend_names_.Load(); - //avoid emitting signal if it's not changed - if(scrobbling_enabled_old != scrobbling_enabled_) + // avoid emitting signal if it's not changed + if (scrobbling_enabled_old != scrobbling_enabled_) emit ScrobblingEnabledChanged(scrobbling_enabled_); emit ButtonVisibilityChanged(buttons_visible_); emit ScrobbleButtonVisibilityChanged(scrobble_button_visible_); @@ -173,122 +121,13 @@ bool LastFMService::IsSubscriber() const { return settings.value("Subscriber", false).toBool(); } -QStandardItem* LastFMService::CreateRootItem() { - root_item_ = new QStandardItem(QIcon(":last.fm/as.png"), kServiceName); - root_item_->setData(true, InternetModel::Role_CanLazyLoad); - return root_item_; -} - -void LastFMService::LazyPopulate(QStandardItem* parent) { - switch (parent->data(InternetModel::Role_Type).toInt()) { - case InternetModel::Type_Service: - // Normal radio types - CreateStationItem(parent, - tr("My Recommendations"), - ":last.fm/recommended_radio.png", - QUrl("lastfm://user/USERNAME/recommended"), - tr("My Last.fm Recommended Radio")); - CreateStationItem(parent, - tr("My Radio Station"), - ":last.fm/personal_radio.png", - QUrl("lastfm://user/USERNAME/library"), - tr("My Last.fm Library")); - CreateStationItem(parent, - tr("My Mix Radio"), - ":last.fm/loved_radio.png", - QUrl("lastfm://user/USERNAME/mix"), - tr("My Last.fm Mix Radio")); - CreateStationItem(parent, - tr("My Neighborhood"), - ":last.fm/neighbour_radio.png", - QUrl("lastfm://user/USERNAME/neighbours"), - tr("My Last.fm Neighborhood")); - - // Types that have children - artist_list_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Artist radio")); - artist_list_->setData(Type_Artists, InternetModel::Role_Type); - parent->appendRow(artist_list_); - - tag_list_ = new QStandardItem(QIcon(":last.fm/icon_tag.png"), tr("Tag radio")); - tag_list_->setData(Type_Tags, InternetModel::Role_Type); - parent->appendRow(tag_list_); - - custom_list_ = new QStandardItem(QIcon(":last.fm/icon_radio.png"), tr("Custom radio")); - custom_list_->setData(Type_Custom, InternetModel::Role_Type); - parent->appendRow(custom_list_); - - RestoreList("artists", kUrlArtist, tr(kTitleArtist), QIcon(":last.fm/icon_radio.png"), artist_list_); - RestoreList("tags", kUrlTag, tr(kTitleTag), QIcon(":last.fm/icon_tag.png"), tag_list_); - RestoreList("custom", kUrlCustom, tr(kTitleCustom), QIcon(":last.fm/icon_radio.png"), custom_list_); - - friends_list_ = new QStandardItem(QIcon(":last.fm/my_friends.png"), tr("Friends")); - friends_list_->setData(Type_Friends, InternetModel::Role_Type); - friends_list_->setData(true, InternetModel::Role_CanLazyLoad); - parent->appendRow(friends_list_); - - neighbours_list_ = new QStandardItem(QIcon(":last.fm/my_neighbours.png"), tr("Neighbors")); - neighbours_list_->setData(Type_Neighbours, InternetModel::Role_Type); - neighbours_list_->setData(true, InternetModel::Role_CanLazyLoad); - parent->appendRow(neighbours_list_); - - if (!IsAuthenticated()) - ShowConfig(); - - add_artist_action_->setEnabled(true); - add_tag_action_->setEnabled(true); - add_custom_action_->setEnabled(true); - break; - - case Type_Friends: - RefreshFriends(false); - break; - - case Type_Neighbours: - RefreshNeighbours(); - break; - - case Type_OtherUser: - CreateStationItem(parent, - tr("Last.fm Radio Station - %1").arg(parent->text()), - ":last.fm/personal_radio.png", - QUrl("lastfm://user/" + parent->text() + "/library"), - tr("Last.fm Library - %1").arg(parent->text())); - CreateStationItem(parent, - tr("Last.fm Mix Radio - %1").arg(parent->text()), - ":last.fm/loved_radio.png", - QUrl("lastfm://user/" + parent->text() + "/mix"), - tr("Last.fm Mix Radio - %1").arg(parent->text())); - CreateStationItem(parent, - tr("Last.fm Neighbor Radio - %1").arg(parent->text()), - ":last.fm/neighbour_radio.png", - QUrl("lastfm://user/" + parent->text() + "/neighbours"), - tr("Last.fm Neighbor Radio - %1").arg(parent->text())); - break; - - default: - break; - } -} - -QStandardItem* LastFMService::CreateStationItem( - QStandardItem* parent, const QString& name, const QString& icon, - const QUrl& url, const QString& title) { - Song song; - song.set_url(url); - song.set_title(title); - - QStandardItem* ret = new QStandardItem(QIcon(icon), name); - ret->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - ret->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); - parent->appendRow(ret); - return ret; -} - -void LastFMService::Authenticate(const QString& username, const QString& password) { +void LastFMService::Authenticate(const QString& username, + const QString& password) { QMap params; params["method"] = "auth.getMobileSession"; params["username"] = username; - params["authToken"] = lastfm::md5((username + lastfm::md5(password.toUtf8())).toUtf8()); + params["authToken"] = + lastfm::md5((username + lastfm::md5(password.toUtf8())).toUtf8()); QNetworkReply* reply = lastfm::ws::post(params); NewClosure(reply, SIGNAL(finished()), this, @@ -300,8 +139,6 @@ void LastFMService::SignOut() { lastfm::ws::Username.clear(); lastfm::ws::SessionKey.clear(); - friend_names_.Update(QStringList()); - QSettings settings; settings.beginGroup(kSettingsGroup); @@ -333,7 +170,7 @@ void LastFMService::AuthenticateReplyFinished(QNetworkReply* reply) { // Invalidate the scrobbler - it will get recreated later delete scrobbler_; - scrobbler_ = NULL; + scrobbler_ = nullptr; emit AuthenticationComplete(true, QString()); } @@ -354,7 +191,8 @@ void LastFMService::UpdateSubscriberStatusFinished(QNetworkReply* reply) { bool is_subscriber = false; lastfm::XmlQuery lfm(lastfm::compat::EmptyXmlQuery()); - if (lastfm::compat::ParseQuery(reply->readAll(), &lfm, &connection_problems_)) { + if (lastfm::compat::ParseQuery(reply->readAll(), &lfm, + &connection_problems_)) { QString subscriber = lfm["user"]["subscriber"].text(); is_subscriber = (subscriber.toInt() == 1); @@ -374,74 +212,45 @@ QUrl LastFMService::FixupUrl(const QUrl& url) { return ret; } -QUrl LastFMService::DeququeNextMediaUrl() { - if (playlist_.empty()) { - return QUrl(); - } - - lastfm::MutableTrack track = playlist_.dequeue(); - track.stamp(); - - already_scrobbled_ = false; - last_track_ = track; - if (playlist_.empty()) { - FetchMoreTracks(); - } - - next_metadata_ = track; - StreamMetadataReady(); - - return last_track_.url(); -} - -void LastFMService::StreamMetadataReady() { - Song metadata; - metadata.InitFromLastFM(next_metadata_); - - if (art_urls_.contains(next_metadata_)) - metadata.set_art_automatic(art_urls_[next_metadata_]); - - emit StreamMetadataFound(last_url_, metadata); -} - -void LastFMService::TunerError(lastfm::ws::Error error) { - qLog(Warning) << "Last.fm error" << error; - if (!initial_tune_) - return; - - app_->task_manager()->SetTaskFinished(tune_task_id_); - tune_task_id_ = 0; - - if (error == lastfm::ws::NotEnoughContent) { - url_handler_->TunerError(); - return; - } - - emit StreamError(ErrorString(error)); -} - QString LastFMService::ErrorString(lastfm::ws::Error error) const { switch (error) { - case lastfm::ws::InvalidService: return tr("Invalid service"); - case lastfm::ws::InvalidMethod: return tr("Invalid method"); - case lastfm::ws::AuthenticationFailed: return tr("Authentication failed"); - case lastfm::ws::InvalidFormat: return tr("Invalid format"); - case lastfm::ws::InvalidParameters: return tr("Invalid parameters"); - case lastfm::ws::InvalidResourceSpecified: return tr("Invalid resource specified"); - case lastfm::ws::OperationFailed: return tr("Operation failed"); - case lastfm::ws::InvalidSessionKey: return tr("Invalid session key"); - case lastfm::ws::InvalidApiKey: return tr("Invalid API key"); - case lastfm::ws::ServiceOffline: return tr("Service offline"); - case lastfm::ws::SubscribersOnly: return tr("This stream is for paid subscribers only"); + case lastfm::ws::InvalidService: + return tr("Invalid service"); + case lastfm::ws::InvalidMethod: + return tr("Invalid method"); + case lastfm::ws::AuthenticationFailed: + return tr("Authentication failed"); + case lastfm::ws::InvalidFormat: + return tr("Invalid format"); + case lastfm::ws::InvalidParameters: + return tr("Invalid parameters"); + case lastfm::ws::InvalidResourceSpecified: + return tr("Invalid resource specified"); + case lastfm::ws::OperationFailed: + return tr("Operation failed"); + case lastfm::ws::InvalidSessionKey: + return tr("Invalid session key"); + case lastfm::ws::InvalidApiKey: + return tr("Invalid API key"); + case lastfm::ws::ServiceOffline: + return tr("Service offline"); + case lastfm::ws::SubscribersOnly: + return tr("This stream is for paid subscribers only"); - case lastfm::ws::TryAgainLater: return tr("Last.fm is currently busy, please try again in a few minutes"); + case lastfm::ws::TryAgainLater: + return tr("Last.fm is currently busy, please try again in a few minutes"); - case lastfm::ws::NotEnoughContent: return tr("Not enough content"); - case lastfm::ws::NotEnoughMembers: return tr("Not enough members"); - case lastfm::ws::NotEnoughFans: return tr("Not enough fans"); - case lastfm::ws::NotEnoughNeighbours: return tr("Not enough neighbors"); + case lastfm::ws::NotEnoughContent: + return tr("Not enough content"); + case lastfm::ws::NotEnoughMembers: + return tr("Not enough members"); + case lastfm::ws::NotEnoughFans: + return tr("Not enough fans"); + case lastfm::ws::NotEnoughNeighbours: + return tr("Not enough neighbors"); - case lastfm::ws::MalformedResponse: return tr("Malformed response"); + case lastfm::ws::MalformedResponse: + return tr("Malformed response"); case lastfm::ws::UnknownError: default: @@ -449,24 +258,18 @@ QString LastFMService::ErrorString(lastfm::ws::Error error) const { } } -void LastFMService::TunerTrackAvailable() { - if (initial_tune_) { - url_handler_->TunerTrackAvailable(); - initial_tune_ = false; - } -} - bool LastFMService::InitScrobbler() { - if (!IsAuthenticated() || !IsScrobblingEnabled()) - return false; + if (!IsAuthenticated() || !IsScrobblingEnabled()) return false; if (!scrobbler_) scrobbler_ = new lastfm::Audioscrobbler(kAudioscrobblerClientId); - //reemit the signal since the sender is private +// reemit the signal since the sender is private #ifdef HAVE_LIBLASTFM1 - connect(scrobbler_, SIGNAL(scrobblesSubmitted(QList)), SIGNAL(ScrobbleSubmitted())); - connect(scrobbler_, SIGNAL(nowPlayingError(int,QString)), SIGNAL(ScrobbleError(int))); + connect(scrobbler_, SIGNAL(scrobblesSubmitted(QList)), + SIGNAL(ScrobbleSubmitted())); + connect(scrobbler_, SIGNAL(nowPlayingError(int, QString)), + SIGNAL(ScrobbleError(int))); #else connect(scrobbler_, SIGNAL(status(int)), SLOT(ScrobblerStatus(int))); #endif @@ -475,18 +278,18 @@ bool LastFMService::InitScrobbler() { void LastFMService::ScrobblerStatus(int value) { switch (value) { - case 2: - case 3: - emit ScrobbleSubmitted(); - break; + case 2: + case 3: + emit ScrobbleSubmitted(); + break; - default: - emit ScrobbleError(value); - break; + default: + emit ScrobbleError(value); + break; } } -lastfm::Track LastFMService::TrackFromSong(const Song &song) const { +lastfm::Track LastFMService::TrackFromSong(const Song& song) const { if (song.title() == last_track_.title() && song.artist() == last_track_.artist() && song.album() == last_track_.album()) @@ -495,12 +298,10 @@ lastfm::Track LastFMService::TrackFromSong(const Song &song) const { lastfm::Track ret; song.ToLastFM(&ret, PreferAlbumArtist()); return ret; - } -void LastFMService::NowPlaying(const Song &song) { - if (!InitScrobbler()) - return; +void LastFMService::NowPlaying(const Song& song) { + if (!InitScrobbler()) return; // Scrobbling streams is difficult if we don't have length of each individual // part. In Song::ToLastFm we set the Track's source to @@ -509,12 +310,14 @@ void LastFMService::NowPlaying(const Song &song) { // since it started playing. if (!last_track_.isNull() && last_track_.source() == lastfm::Track::NonPersonalisedBroadcast) { - const int duration_secs = last_track_.timestamp().secsTo(QDateTime::currentDateTime()); + const int duration_secs = + last_track_.timestamp().secsTo(QDateTime::currentDateTime()); if (duration_secs >= lastfm::compat::ScrobbleTimeMin()) { lastfm::MutableTrack mtrack(last_track_); mtrack.setDuration(duration_secs); - qLog(Info) << "Scrobbling stream track" << mtrack.title() << "length" << duration_secs; + qLog(Info) << "Scrobbling stream track" << mtrack.title() << "length" + << duration_secs; scrobbler_->cache(mtrack); scrobbler_->submit(); @@ -530,25 +333,25 @@ void LastFMService::NowPlaying(const Song &song) { #ifndef HAVE_LIBLASTFM1 // Check immediately if the song is valid Scrobble::Invalidity invalidity; - if (!lastfm::Scrobble(last_track_).isValid( &invalidity )) { - //for now just notify this, we can also see the cause + if (!lastfm::Scrobble(last_track_).isValid(&invalidity)) { + // for now just notify this, we can also see the cause emit ScrobbleError(-1); return; } #else - // TODO: validity was removed from liblastfm1 but might reappear, it should have - // no impact as we get a different error when actually trying to scrobble. +// TODO: validity was removed from liblastfm1 but might reappear, it should have +// no impact as we get a different error when actually trying to scrobble. #endif scrobbler_->nowPlaying(mtrack); } void LastFMService::Scrobble() { - if (!InitScrobbler()) - return; + if (!InitScrobbler()) return; lastfm::compat::ScrobbleCache cache(lastfm::ws::Username); - qLog(Debug) << "There are" << cache.tracks().count() << "tracks in the last.fm cache."; + qLog(Debug) << "There are" << cache.tracks().count() + << "tracks in the last.fm cache."; scrobbler_->cache(last_track_); // Let's mark a track as cached, useful when the connection is down @@ -559,8 +362,7 @@ void LastFMService::Scrobble() { } void LastFMService::Love() { - if (!IsAuthenticated()) - ShowConfig(); + if (!IsAuthenticated()) ShowConfig(); lastfm::MutableTrack mtrack(last_track_); mtrack.love(); @@ -582,363 +384,11 @@ void LastFMService::Ban() { app_->player()->Next(); } -void LastFMService::ShowContextMenu(const QPoint& global_pos) { - switch (model()->current_index().parent().data(InternetModel::Role_Type).toInt()) { - case Type_Artists: - case Type_Tags: - case Type_Custom: - remove_action_->setEnabled(true); - break; - - default: - remove_action_->setEnabled(false); - break; - } - - const bool playable = model()->IsPlayable(model()->current_index()); - GetAppendToPlaylistAction()->setEnabled(playable); - GetReplacePlaylistAction()->setEnabled(playable); - GetOpenInNewPlaylistAction()->setEnabled(playable); - context_menu_->popup(global_pos); -} - -QStringList LastFMService::FriendNames() { - // Update the list for next time, in the main thread. - if (IsFriendsListStale()) - metaObject()->invokeMethod(this, "RefreshFriends", Qt::QueuedConnection); - - return friend_names_.Data(); -} - -static QStringList SavedArtistOrTagRadioNames(const QString& name) { - QStringList ret; - - QSettings s; - s.beginGroup(LastFMService::kSettingsGroup); - int count = s.beginReadArray(name); - for (int i=0 ; isetData(false, InternetModel::Role_CanLazyLoad); - LazyPopulate(root_item_); - } - - if (!force && !IsFriendsListStale()) { - PopulateFriendsList(); - return; - } - - lastfm::compat::AuthenticatedUser user; - QNetworkReply* reply = user.getFriends(); - NewClosure(reply, SIGNAL(finished()), this, - SLOT(RefreshFriendsFinished(QNetworkReply*)), reply); -} - -void LastFMService::RefreshNeighbours() { - if (!neighbours_list_ || !IsAuthenticated()) - return; - - lastfm::compat::AuthenticatedUser user; - QNetworkReply* reply = user.getNeighbours(); - NewClosure(reply, SIGNAL(finished()), this, - SLOT(RefreshNeighboursFinished(QNetworkReply*)), reply); -} - -void LastFMService::RefreshFriendsFinished(QNetworkReply* reply) { - QList friends; - if (!lastfm::compat::ParseUserList(reply, &friends)) { - return; - } - - QStringList names; - foreach (const lastfm::User& f, friends) { - names << f.name(); - } - - friend_names_.Update(names); - - PopulateFriendsList(); - emit SavedItemsChanged(); -} - -void LastFMService::PopulateFriendsList() { - if (friends_list_->hasChildren()) - friends_list_->removeRows(0, friends_list_->rowCount()); - - foreach (const QString& name, friend_names_) { - Song song; - song.set_url(QUrl("lastfm://user/" + name + "/library")); - song.set_title(tr("Last.fm Library - %1").arg(name)); - - QStandardItem* item = new QStandardItem(QIcon(":last.fm/icon_user.png"), name); - item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - item->setData(true, InternetModel::Role_CanLazyLoad); - item->setData(Type_OtherUser, InternetModel::Role_Type); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); - friends_list_->appendRow(item); - } -} - -void LastFMService::RefreshNeighboursFinished(QNetworkReply* reply) { - QList neighbours; - if (!lastfm::compat::ParseUserList(reply, &neighbours)) { - return; - } - - if (neighbours_list_->hasChildren()) - neighbours_list_->removeRows(0, neighbours_list_->rowCount()); - - foreach (const lastfm::User& n, neighbours) { - Song song; - song.set_url(QUrl("lastfm://user/" + n.name() + "/library")); - song.set_title(tr("Last.fm Library - %1").arg(n.name())); - - QStandardItem* item = new QStandardItem(QIcon(":last.fm/user_purple.png"), n.name()); - item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - item->setData(true, InternetModel::Role_CanLazyLoad); - item->setData(Type_OtherUser, InternetModel::Role_Type); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); - neighbours_list_->appendRow(item); - } -} - -void LastFMService::AddArtistRadio() { - AddArtistOrTag("artists", LastFMStationDialog::Artist, - kUrlArtist, tr(kTitleArtist), - ":last.fm/icon_radio.png", artist_list_); -} - -void LastFMService::AddTagRadio() { - AddArtistOrTag("tags", LastFMStationDialog::Tag, - kUrlTag, tr(kTitleTag), - ":last.fm/icon_tag.png", tag_list_); -} - -void LastFMService::AddCustomRadio() { - AddArtistOrTag("custom", LastFMStationDialog::Custom, - kUrlCustom, tr(kTitleCustom), - ":last.fm/icon_radio.png", custom_list_); -} - -void LastFMService::AddArtistOrTag(const QString& name, - LastFMStationDialog::Type dialog_type, - const QString& url_pattern, - const QString& title_pattern, - const QString& icon, QStandardItem* list) { - station_dialog_->SetType(dialog_type); - if (station_dialog_->exec() == QDialog::Rejected) - return; - - if (station_dialog_->content().isEmpty()) - return; - - QString content = station_dialog_->content(); - QString url; - if (name == "custom" && content.startsWith("lastfm://")) { - url = content; - } else if (name == "custom") { - url = url_pattern.arg(QString(content.toUtf8().toBase64())); - } else { - url = url_pattern.arg(content); - } - - Song song; - song.set_url(QUrl((url))); - song.set_title(title_pattern.arg(content)); - - QStandardItem* item = new QStandardItem(QIcon(icon), content); - item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); - list->appendRow(item); - emit AddItemToPlaylist(item->index(), AddMode_Append); - - SaveList(name, list); - - emit SavedItemsChanged(); -} - -void LastFMService::SaveList(const QString& name, QStandardItem* list) const { - QSettings settings; - settings.beginGroup(kSettingsGroup); - - settings.beginWriteArray(name, list->rowCount()); - for (int i=0 ; irowCount() ; ++i) { - settings.setArrayIndex(i); - settings.setValue("key", list->child(i)->text()); - } - settings.endArray(); -} - -void LastFMService::RestoreList(const QString& name, - const QString& url_pattern, - const QString& title_pattern, - const QIcon& icon, QStandardItem* parent) { - if (parent->hasChildren()) - parent->removeRows(0, parent->rowCount()); - - const QStringList keys = SavedArtistOrTagRadioNames(name); - - foreach (const QString& key, keys) { - QString url; - if (name == "custom" && key.startsWith("lastfm://")) { - url = key; - } else if (name == "custom") { - url = url_pattern.arg(QString(key.toUtf8().toBase64())); - } else { - url = url_pattern.arg(key); - } - - Song song; - song.set_url(QUrl(url)); - song.set_title(title_pattern.arg(key)); - - QStandardItem* item = new QStandardItem(icon, key); - item->setData(QVariant::fromValue(song), InternetModel::Role_SongMetadata); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); - parent->appendRow(item); - } -} - -void LastFMService::Remove() { - QStandardItem* context_item = model()->itemFromIndex(model()->current_index()); - int type = context_item->parent()->data(InternetModel::Role_Type).toInt(); - - context_item->parent()->removeRow(context_item->row()); - - if (type == Type_Artists) - SaveList("artists", artist_list_); - else if (type == Type_Tags) - SaveList("tags", tag_list_); - else if (type == Type_Custom) - SaveList("custom", custom_list_); -} - -void LastFMService::FetchMoreTracks() { - QMap params; - params["method"] = "radio.getPlaylist"; - params["rtp"] = "1"; - QNetworkReply* reply = lastfm::ws::post(params); - NewClosure(reply, SIGNAL(finished()), this, - SLOT(FetchMoreTracksFinished(QNetworkReply*)), reply); -} - -void LastFMService::FetchMoreTracksFinished(QNetworkReply* reply) { - reply->deleteLater(); - app_->task_manager()->SetTaskFinished(tune_task_id_); - tune_task_id_ = 0; - - lastfm::XmlQuery query(lastfm::compat::EmptyXmlQuery()); - if (lastfm::compat::ParseQuery(reply->readAll(), &query)) { - const XmlQuery& playlist = query["playlist"]; - foreach (const XmlQuery& q, playlist["trackList"].children("track")) { - lastfm::MutableTrack t; - t.setUrl(QUrl(q["location"].text())); - t.setExtra("trackauth", q["extension"]["trackauth"].text()); - t.setTitle(q["title"].text()); - t.setArtist(q["creator"].text()); - t.setAlbum(q["album"].text()); - t.setDuration(q["duration"].text().toInt() / 1000); - t.setSource(lastfm::Track::LastFmRadio); - - art_urls_[t] = q["image"].text(); - playlist_ << t; - } - } else { - emit StreamError(tr("Couldn't load the last.fm radio station")); - return; - } - - TunerTrackAvailable(); -} - -void LastFMService::Tune(const QUrl& url) { - if (!tune_task_id_) - tune_task_id_ = app_->task_manager()->StartTask(tr("Loading Last.fm radio")); - - last_url_ = url; - initial_tune_ = true; - const lastfm::RadioStation station(FixupUrl(url).toString()); - - playlist_.clear(); - - // Remove all the old album art URLs - art_urls_.clear(); - - QMap params; - params["method"] = "radio.tune"; - params["station"] = station.url(); - QNetworkReply* reply = lastfm::ws::post(params); - NewClosure(reply, SIGNAL(finished()), this, - SLOT(TuneFinished(QNetworkReply*)), reply); -} - -void LastFMService::TuneFinished(QNetworkReply* reply) { - reply->deleteLater(); - FetchMoreTracks(); -} - -PlaylistItem::Options LastFMService::playlistitem_options() const { - return PlaylistItem::LastFMControls | - PlaylistItem::PauseDisabled | - PlaylistItem::SeekDisabled; -} - -PlaylistItemPtr LastFMService::PlaylistItemForUrl(const QUrl& url) { - // This is a bit of a hack, it's only used by the artist/song info tag - // widgets for tag radio and similar artists radio. - - if (url.scheme() != "lastfm") - return PlaylistItemPtr(); - - QStringList sections(url.path().split("/", QString::SkipEmptyParts)); - - Song song; - song.set_url(url); - - if (sections.count() == 2 && url.host() == "artist" && sections[1] == "similarartists") { - song.set_title(tr(kTitleArtist).arg(sections[0])); - } else if (sections.count() == 1 && url.host() == "globaltags") { - song.set_title(tr(kTitleTag).arg(sections[0])); - } else { - return PlaylistItemPtr(); - } - - return PlaylistItemPtr(new InternetPlaylistItem(this, song)); -} - void LastFMService::ToggleScrobbling() { - //toggle status + // toggle status scrobbling_enabled_ = !scrobbling_enabled_; - //save to the settings + // save to the settings QSettings s; s.beginGroup(kSettingsGroup); s.setValue("ScrobblingEnabled", scrobbling_enabled_); diff --git a/src/internet/lastfmservice.h b/src/internet/lastfmservice.h index a25b21f33..aae8b8e2b 100644 --- a/src/internet/lastfmservice.h +++ b/src/internet/lastfmservice.h @@ -18,8 +18,9 @@ #ifndef LASTFMSERVICE_H #define LASTFMSERVICE_H +#include + namespace lastfm { -class RadioStation; class Track; } @@ -28,31 +29,19 @@ uint qHash(const lastfm::Track& track); #include "lastfmcompat.h" -#include "internetmodel.h" -#include "internetservice.h" -#include "lastfmstationdialog.h" -#include "core/cachedlist.h" -#include "core/song.h" -#include "playlist/playlistitem.h" - -#include -#include -#include -#include - -#include +#include "internet/scrobbler.h" +class Application; class LastFMUrlHandler; - class QAction; class QNetworkAccessManager; +class Song; -class LastFMService : public InternetService { +class LastFMService : public Scrobbler { Q_OBJECT - friend class LastFMUrlHandler; public: - LastFMService(Application* app, InternetModel* parent); + LastFMService(Application* app, QObject* parent = nullptr); ~LastFMService(); static const char* kServiceName; @@ -61,34 +50,6 @@ class LastFMService : public InternetService { static const char* kApiKey; static const char* kSecret; - static const char* kUrlArtist; - static const char* kUrlTag; - static const char* kUrlCustom; - - static const char* kTitleArtist; - static const char* kTitleTag; - static const char* kTitleCustom; - - static const int kFriendsCacheDurationSecs; - - enum ItemType { - Type_Root = InternetModel::TypeCount, - Type_Artists, - Type_Tags, - Type_Custom, - Type_Friends, - Type_Neighbours, - Type_OtherUser, - }; - - // InternetService - QStandardItem* CreateRootItem(); - void LazyPopulate(QStandardItem* parent); - - void ShowContextMenu(const QPoint &global_pos); - - PlaylistItem::Options playlistitem_options() const; - void ReloadSettings(); virtual QString Icon() { return ":last.fm/lastfm.png"; } @@ -106,18 +67,6 @@ class LastFMService : public InternetService { void SignOut(); void UpdateSubscriberStatus(); - void FetchMoreTracks(); - QUrl DeququeNextMediaUrl(); - - PlaylistItemPtr PlaylistItemForUrl(const QUrl& url); - - bool IsFriendsListStale() const { return friend_names_.IsStale(); } - - // Thread safe - QStringList FriendNames(); - QStringList SavedArtistRadioNames() const; - QStringList SavedTagRadioNames() const; - public slots: void NowPlaying(const Song& song); void Scrobble(); @@ -126,7 +75,7 @@ class LastFMService : public InternetService { void ShowConfig(); void ToggleScrobbling(); - signals: +signals: void AuthenticationComplete(bool success, const QString& error_message); void ScrobblingEnabledChanged(bool value); void ButtonVisibilityChanged(bool value); @@ -142,93 +91,35 @@ class LastFMService : public InternetService { private slots: void AuthenticateReplyFinished(QNetworkReply* reply); void UpdateSubscriberStatusFinished(QNetworkReply* reply); - void RefreshFriendsFinished(QNetworkReply* reply); - void RefreshNeighboursFinished(QNetworkReply* reply); - void TunerTrackAvailable(); - void TunerError(lastfm::ws::Error error); void ScrobblerStatus(int value); - void AddArtistRadio(); - void AddTagRadio(); - void AddCustomRadio(); - void ForceRefreshFriends(); - void RefreshFriends(); - void Remove(); - - // Radio tuner. - void FetchMoreTracksFinished(QNetworkReply* reply); - void TuneFinished(QNetworkReply* reply); - - void StreamMetadataReady(); - private: - QStandardItem* CreateStationItem(QStandardItem* parent, - const QString& name, const QString& icon, const QUrl& url, - const QString& title); QString ErrorString(lastfm::ws::Error error) const; bool InitScrobbler(); lastfm::Track TrackFromSong(const Song& song) const; - void RefreshFriends(bool force); - void RefreshNeighbours(); - void AddArtistOrTag(const QString& name, - LastFMStationDialog::Type dialog_type, - const QString& url_pattern, - const QString& title_pattern, - const QString& icon, QStandardItem* list); - void SaveList(const QString& name, QStandardItem* list) const; - void RestoreList(const QString& name, - const QString& url_pattern, - const QString& title_pattern, - const QIcon& icon, QStandardItem* parent); static QUrl FixupUrl(const QUrl& url); - void Tune(const QUrl& station); - - void PopulateFriendsList(); - - void AddSelectedToPlaylist(bool clear_first); private: - LastFMUrlHandler* url_handler_; - lastfm::Audioscrobbler* scrobbler_; lastfm::Track last_track_; lastfm::Track next_metadata_; - QQueue playlist_; bool already_scrobbled_; - boost::scoped_ptr station_dialog_; - - boost::scoped_ptr context_menu_; - QAction* remove_action_; - QAction* add_artist_action_; - QAction* add_tag_action_; - QAction* add_custom_action_; - QAction* refresh_friends_action_; - QUrl last_url_; - bool initial_tune_; - int tune_task_id_; bool scrobbling_enabled_; bool buttons_visible_; bool scrobble_button_visible_; bool prefer_albumartist_; - QStandardItem* root_item_; - QStandardItem* artist_list_; - QStandardItem* tag_list_; - QStandardItem* custom_list_; - QStandardItem* friends_list_; - QStandardItem* neighbours_list_; - QHash art_urls_; - CachedList friend_names_; - // Useful to inform the user that we can't scrobble right now bool connection_problems_; + + Application* app_; }; -#endif // LASTFMSERVICE_H +#endif // LASTFMSERVICE_H diff --git a/src/internet/lastfmsettingspage.cpp b/src/internet/lastfmsettingspage.cpp index e09812e5d..58715669e 100644 --- a/src/internet/lastfmsettingspage.cpp +++ b/src/internet/lastfmsettingspage.cpp @@ -16,31 +16,30 @@ */ #include "lastfmsettingspage.h" -#include "lastfmservice.h" -#include "internetmodel.h" #include "ui_lastfmsettingspage.h" -#include "ui/iconloader.h" #include #include -#include #include +#include "lastfmservice.h" +#include "internetmodel.h" +#include "core/application.h" +#include "ui/iconloader.h" + LastFMSettingsPage::LastFMSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - service_(static_cast(InternetModel::ServiceByName("Last.fm"))), - ui_(new Ui_LastFMSettingsPage), - waiting_for_auth_(false) -{ + : SettingsPage(dialog), + service_(static_cast(dialog->app()->scrobbler())), + ui_(new Ui_LastFMSettingsPage), + waiting_for_auth_(false) { ui_->setupUi(this); // Icons setWindowIcon(QIcon(":/last.fm/as.png")); - connect(service_, SIGNAL(AuthenticationComplete(bool,QString)), - SLOT(AuthenticationComplete(bool,QString))); - connect(service_, SIGNAL(UpdatedSubscriberStatus(bool)), SLOT(UpdatedSubscriberStatus(bool))); + connect(service_, SIGNAL(AuthenticationComplete(bool, QString)), + SLOT(AuthenticationComplete(bool, QString))); connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(Logout())); connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(Login())); connect(ui_->login, SIGNAL(clicked()), SLOT(Login())); @@ -53,9 +52,7 @@ LastFMSettingsPage::LastFMSettingsPage(SettingsDialog* dialog) resize(sizeHint()); } -LastFMSettingsPage::~LastFMSettingsPage() { - delete ui_; -} +LastFMSettingsPage::~LastFMSettingsPage() { delete ui_; } void LastFMSettingsPage::Login() { waiting_for_auth_ = true; @@ -66,8 +63,7 @@ void LastFMSettingsPage::Login() { void LastFMSettingsPage::AuthenticationComplete(bool success, const QString& message) { - if (!waiting_for_auth_) - return; // Wasn't us that was waiting for auth + if (!waiting_for_auth_) return; // Wasn't us that was waiting for auth waiting_for_auth_ = false; @@ -85,7 +81,6 @@ void LastFMSettingsPage::AuthenticationComplete(bool success, } RefreshControls(success); - service_->UpdateSubscriberStatus(); } void LastFMSettingsPage::Load() { @@ -94,29 +89,9 @@ void LastFMSettingsPage::Load() { ui_->scrobble_button->setChecked(service_->IsScrobbleButtonVisible()); ui_->prefer_albumartist->setChecked(service_->PreferAlbumArtist()); - if (service_->IsAuthenticated()) { - service_->UpdateSubscriberStatus(); - } - RefreshControls(service_->IsAuthenticated()); } -void LastFMSettingsPage::UpdatedSubscriberStatus(bool is_subscriber) { - ui_->login_state->SetAccountTypeVisible(!is_subscriber); - - if (!is_subscriber) { - if (service_->HasConnectionProblems()) { - ui_->login_state->SetAccountTypeText( - tr("Clementine couldn't fetch your subscription status since there are problems " - "with your connection. Played tracks will be cached and sent later to Last.fm.")); - } else { - ui_->login_state->SetAccountTypeText( - tr("You will not be able to play Last.fm radio stations " - "as you are not a Last.fm subscriber.")); - } - } -} - void LastFMSettingsPage::Save() { QSettings s; s.beginGroup(LastFMService::kSettingsGroup); @@ -138,15 +113,7 @@ void LastFMSettingsPage::Logout() { } void LastFMSettingsPage::RefreshControls(bool authenticated) { - ui_->login_state->SetLoggedIn(authenticated ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - lastfm::ws::Username); - ui_->login_state->SetAccountTypeVisible(!authenticated); - - if (!authenticated) { - ui_->login_state->SetAccountTypeText( - tr("You can scrobble tracks for free, but only " - "paid subscribers " - "can stream Last.fm radio from Clementine.")); - } + ui_->login_state->SetLoggedIn( + authenticated ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + lastfm::ws::Username); } diff --git a/src/internet/lastfmsettingspage.h b/src/internet/lastfmsettingspage.h index 30bbb604f..cf5e12580 100644 --- a/src/internet/lastfmsettingspage.h +++ b/src/internet/lastfmsettingspage.h @@ -26,27 +26,25 @@ class Ui_LastFMSettingsPage; class LastFMSettingsPage : public SettingsPage { Q_OBJECT -public: + public: LastFMSettingsPage(SettingsDialog* dialog); ~LastFMSettingsPage(); void Load(); void Save(); -private slots: + private slots: void Login(); void AuthenticationComplete(bool success, const QString& error_message); void Logout(); - void UpdatedSubscriberStatus(bool is_subscriber); -private: + private: LastFMService* service_; Ui_LastFMSettingsPage* ui_; - QMovie* loading_icon_; bool waiting_for_auth_; void RefreshControls(bool authenticated); }; -#endif // LASTFMSETTINGSPAGE_H +#endif // LASTFMSETTINGSPAGE_H diff --git a/src/internet/lastfmsettingspage.ui b/src/internet/lastfmsettingspage.ui index 1b5c04eb5..cf8f865b6 100644 --- a/src/internet/lastfmsettingspage.ui +++ b/src/internet/lastfmsettingspage.ui @@ -83,7 +83,7 @@ - Show the "love" and "ban" buttons + Show the "love" button true diff --git a/src/internet/lastfmstationdialog.ui b/src/internet/lastfmstationdialog.ui deleted file mode 100644 index 241d95edd..000000000 --- a/src/internet/lastfmstationdialog.ui +++ /dev/null @@ -1,119 +0,0 @@ - - - LastFMStationDialog - - - - 0 - 0 - 407 - 126 - - - - Play Artist or Tag - - - - :/last.fm/as.png:/last.fm/as.png - - - - - - Enter an <b>artist</b> or <b>tag</b> to start listening to Last.fm radio. - - - true - - - - - - - - - - Artist - - - - - Tag - - - - - Custom - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 7 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - - - buttonBox - accepted() - LastFMStationDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - LastFMStationDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/src/internet/lastfmurlhandler.cpp b/src/internet/lastfmurlhandler.cpp deleted file mode 100644 index 5617fb9e2..000000000 --- a/src/internet/lastfmurlhandler.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* This file is part of Clementine. - Copyright 2010, David Sansome - - 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 . -*/ - -#include "lastfmservice.h" -#include "lastfmurlhandler.h" - -LastFMUrlHandler::LastFMUrlHandler(LastFMService* service, QObject* parent) - : UrlHandler(parent), - service_(service) { -} - -UrlHandler::LoadResult LastFMUrlHandler::StartLoading(const QUrl& url) { - if (!service_->IsAuthenticated()) - return LoadResult(); - - service_->Tune(url); - return LoadResult(url, LoadResult::WillLoadAsynchronously); -} - -void LastFMUrlHandler::TunerTrackAvailable() { - emit AsyncLoadComplete(LoadNext(service_->last_url_)); -} - -void LastFMUrlHandler::TunerError() { - emit AsyncLoadComplete(LoadResult(service_->last_url_, LoadResult::NoMoreTracks)); -} - -UrlHandler::LoadResult LastFMUrlHandler::LoadNext(const QUrl& url) { - const QUrl media_url = service_->DeququeNextMediaUrl(); - if (media_url.isEmpty()) { - return LoadResult(); - } - return LoadResult(url, LoadResult::TrackAvailable, media_url); -} diff --git a/src/internet/lastfmurlhandler.h b/src/internet/lastfmurlhandler.h index 3f3bf174b..4cfcb9757 100644 --- a/src/internet/lastfmurlhandler.h +++ b/src/internet/lastfmurlhandler.h @@ -22,11 +22,10 @@ class LastFMService; - class LastFMUrlHandler : public UrlHandler { friend class LastFMService; -public: + public: LastFMUrlHandler(LastFMService* service, QObject* parent); QString scheme() const { return "lastfm"; } @@ -37,8 +36,8 @@ public: void TunerTrackAvailable(); void TunerError(); -private: + private: LastFMService* service_; }; -#endif // LASTFMURLHANDLER_H +#endif // LASTFMURLHANDLER_H diff --git a/src/internet/localredirectserver.cpp b/src/internet/localredirectserver.cpp index ca51892ba..b961385d3 100644 --- a/src/internet/localredirectserver.cpp +++ b/src/internet/localredirectserver.cpp @@ -11,9 +11,7 @@ #include "core/closure.h" LocalRedirectServer::LocalRedirectServer(QObject* parent) - : QObject(parent), - server_(new QTcpServer(this)) { -} + : QObject(parent), server_(new QTcpServer(this)) {} void LocalRedirectServer::Listen() { server_->listen(QHostAddress::LocalHost); @@ -31,8 +29,8 @@ void LocalRedirectServer::NewConnection() { server_->close(); QByteArray buffer; - NewClosure(socket, SIGNAL(readyRead()), - this, SLOT(ReadyRead(QTcpSocket*,QByteArray)), socket, buffer); + NewClosure(socket, SIGNAL(readyRead()), this, + SLOT(ReadyRead(QTcpSocket*, QByteArray)), socket, buffer); } void LocalRedirectServer::ReadyRead(QTcpSocket* socket, QByteArray buffer) { @@ -43,8 +41,8 @@ void LocalRedirectServer::ReadyRead(QTcpSocket* socket, QByteArray buffer) { request_url_ = ParseUrlFromRequest(buffer); emit Finished(); } else { - NewClosure(socket, SIGNAL(readyRead()), - this, SLOT(ReadyReady(QTcpSocket*,QByteArray)), socket, buffer); + NewClosure(socket, SIGNAL(readyRead()), this, + SLOT(ReadyReady(QTcpSocket*, QByteArray)), socket, buffer); } } @@ -68,8 +66,11 @@ void LocalRedirectServer::WriteTemplate(QTcpSocket* socket) const { QBuffer image_buffer; image_buffer.open(QIODevice::ReadWrite); - QApplication::style()->standardIcon(QStyle::SP_DialogOkButton) - .pixmap(16).toImage().save(&image_buffer, "PNG"); + QApplication::style() + ->standardIcon(QStyle::SP_DialogOkButton) + .pixmap(16) + .toImage() + .save(&image_buffer, "PNG"); page_data.replace("@IMAGE_DATA@", image_buffer.data().toBase64()); socket->write("HTTP/1.0 200 OK\r\n"); diff --git a/src/internet/localredirectserver.h b/src/internet/localredirectserver.h index 2c6993add..c919dbbf7 100644 --- a/src/internet/localredirectserver.h +++ b/src/internet/localredirectserver.h @@ -11,7 +11,7 @@ class QTcpSocket; class LocalRedirectServer : public QObject { Q_OBJECT public: - LocalRedirectServer(QObject* parent = 0); + LocalRedirectServer(QObject* parent = nullptr); // Causes the server to listen for _one_ request. void Listen(); @@ -22,8 +22,7 @@ class LocalRedirectServer : public QObject { // Returns the URL requested by the OAuth redirect. const QUrl& request_url() const { return request_url_; } - - signals: +signals: void Finished(); private slots: diff --git a/src/internet/magnatunedownloaddialog.cpp b/src/internet/magnatunedownloaddialog.cpp index 91afc8f4d..5a171a7af 100644 --- a/src/internet/magnatunedownloaddialog.cpp +++ b/src/internet/magnatunedownloaddialog.cpp @@ -16,13 +16,8 @@ */ #include "magnatunedownloaddialog.h" -#include "magnatuneservice.h" -#include "internetmodel.h" -#include "ui_magnatunedownloaddialog.h" -#include "core/logging.h" -#include "core/network.h" -#include "core/utilities.h" -#include "widgets/progressitemdelegate.h" + +#include #include #include @@ -35,15 +30,22 @@ #include #include +#include "magnatuneservice.h" +#include "internetmodel.h" +#include "ui_magnatunedownloaddialog.h" +#include "core/logging.h" +#include "core/network.h" +#include "core/utilities.h" +#include "widgets/progressitemdelegate.h" + MagnatuneDownloadDialog::MagnatuneDownloadDialog(MagnatuneService* service, - QWidget *parent) - : QDialog(parent), - ui_(new Ui_MagnatuneDownloadDialog), - service_(service), - network_(new NetworkAccessManager(this)), - current_reply_(NULL), - next_row_(0) -{ + QWidget* parent) + : QDialog(parent), + ui_(new Ui_MagnatuneDownloadDialog), + service_(service), + network_(new NetworkAccessManager(this)), + current_reply_(nullptr), + next_row_(0) { ui_->setupUi(this); ui_->albums->header()->setResizeMode(QHeaderView::ResizeToContents); ui_->albums->header()->setResizeMode(1, QHeaderView::Fixed); @@ -68,7 +70,7 @@ void MagnatuneDownloadDialog::Show(const SongList& songs) { ui_->albums->clear(); QSet sku_codes; - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (!sku_codes.contains(song.comment())) { sku_codes.insert(song.comment()); @@ -98,7 +100,7 @@ void MagnatuneDownloadDialog::accept() { ui_->options->setEnabled(false); // Reset all the progress bars - for (int i=0 ; ialbums->topLevelItemCount() ; ++i) { + for (int i = 0; i < ui_->albums->topLevelItemCount(); ++i) { ui_->albums->topLevelItem(i)->setData(1, Qt::DisplayRole, QVariant()); } @@ -127,7 +129,8 @@ void MagnatuneDownloadDialog::DownloadNext() { current_reply_ = network_->get(QNetworkRequest(url)); - connect(current_reply_, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(Error(QNetworkReply::NetworkError))); + connect(current_reply_, SIGNAL(error(QNetworkReply::NetworkError)), + SLOT(Error(QNetworkReply::NetworkError))); connect(current_reply_, SIGNAL(finished()), SLOT(MetadataFinished())); } @@ -141,8 +144,8 @@ void MagnatuneDownloadDialog::Error(QNetworkReply::NetworkError e) { QMetaEnum error_enum = QNetworkReply::staticMetaObject.enumerator( QNetworkReply::staticMetaObject.indexOfEnumerator("NetworkError")); - QString message = tr("Unable to download %1 (%2)") - .arg(url.toString()).arg(error_enum.valueToKey(e)); + QString message = tr("Unable to download %1 (%2)").arg(url.toString()).arg( + error_enum.valueToKey(e)); ShowError(message); } @@ -162,11 +165,21 @@ void MagnatuneDownloadDialog::MetadataFinished() { // Work out what format we want QString type; switch (ui_->format->currentIndex()) { - case MagnatuneService::Format_Ogg: type = "URL_OGGZIP"; break; - case MagnatuneService::Format_Flac: type = "URL_FLACZIP"; break; - case MagnatuneService::Format_Wav: type = "URL_WAVZIP"; break; - case MagnatuneService::Format_MP3_VBR: type = "URL_VBRZIP"; break; - case MagnatuneService::Format_MP3_128: type = "URL_128KMP3ZIP"; break; + case MagnatuneService::Format_Ogg: + type = "URL_OGGZIP"; + break; + case MagnatuneService::Format_Flac: + type = "URL_FLACZIP"; + break; + case MagnatuneService::Format_Wav: + type = "URL_WAVZIP"; + break; + case MagnatuneService::Format_MP3_VBR: + type = "URL_VBRZIP"; + break; + case MagnatuneService::Format_MP3_128: + type = "URL_128KMP3ZIP"; + break; } // Parse the XML (lol) to find the URL @@ -188,9 +201,11 @@ void MagnatuneDownloadDialog::MetadataFinished() { // Start the actual download current_reply_ = network_->get(QNetworkRequest(url)); - connect(current_reply_, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(Error(QNetworkReply::NetworkError))); + connect(current_reply_, SIGNAL(error(QNetworkReply::NetworkError)), + SLOT(Error(QNetworkReply::NetworkError))); connect(current_reply_, SIGNAL(finished()), SLOT(DownloadFinished())); - connect(current_reply_, SIGNAL(downloadProgress(qint64,qint64)), SLOT(DownloadProgress(qint64,qint64))); + connect(current_reply_, SIGNAL(downloadProgress(qint64, qint64)), + SLOT(DownloadProgress(qint64, qint64))); connect(current_reply_, SIGNAL(readyRead()), SLOT(DownloadReadyRead())); // Close any open file @@ -207,7 +222,7 @@ void MagnatuneDownloadDialog::MetadataFinished() { void MagnatuneDownloadDialog::DownloadFinished() { current_reply_->deleteLater(); - next_row_ ++; + next_row_++; DownloadNext(); } @@ -221,16 +236,15 @@ void MagnatuneDownloadDialog::DownloadReadyRead() { download_file_->write(reply->readAll()); } -void MagnatuneDownloadDialog::ShowError(const QString &message) { +void MagnatuneDownloadDialog::ShowError(const QString& message) { QMessageBox::critical(this, tr("Error"), message, QMessageBox::Close); AllFinished(true); } void MagnatuneDownloadDialog::AllFinished(bool error) { - current_reply_ = NULL; + current_reply_ = nullptr; - if (error) - ui_->button_box->button(QDialogButtonBox::Ok)->show(); + if (error) ui_->button_box->button(QDialogButtonBox::Ok)->show(); ui_->button_box->button(QDialogButtonBox::Close)->show(); ui_->button_box->button(QDialogButtonBox::Cancel)->hide(); ui_->options->setEnabled(true); @@ -240,7 +254,7 @@ void MagnatuneDownloadDialog::AllFinished(bool error) { if (!error) { QStringList albums; - for (int i=0 ; ialbums->topLevelItemCount() ; ++i) { + for (int i = 0; i < ui_->albums->topLevelItemCount(); ++i) { albums << ui_->albums->topLevelItem(i)->text(0); } emit Finished(albums); @@ -263,11 +277,21 @@ QString MagnatuneDownloadDialog::GetOutputFilename() { QString extension; switch (MagnatuneService::PreferredFormat(ui_->format->currentIndex())) { - case MagnatuneService::Format_Ogg: extension = "ogg"; break; - case MagnatuneService::Format_Flac: extension = "flac"; break; - case MagnatuneService::Format_Wav: extension = "wav"; break; - case MagnatuneService::Format_MP3_VBR: extension = "vbr"; break; - case MagnatuneService::Format_MP3_128: extension = "mp3"; break; + case MagnatuneService::Format_Ogg: + extension = "ogg"; + break; + case MagnatuneService::Format_Flac: + extension = "flac"; + break; + case MagnatuneService::Format_Wav: + extension = "wav"; + break; + case MagnatuneService::Format_MP3_VBR: + extension = "vbr"; + break; + case MagnatuneService::Format_MP3_128: + extension = "mp3"; + break; } return QString("%1/%2-%3.zip").arg(ui_->directory->text(), album, extension); @@ -275,10 +299,10 @@ QString MagnatuneDownloadDialog::GetOutputFilename() { void MagnatuneDownloadDialog::closeEvent(QCloseEvent* e) { if (current_reply_ && current_reply_->isRunning()) { - boost::scoped_ptr message_box(new QMessageBox( - QMessageBox::Question, tr("Really cancel?"), - tr("Closing this window will cancel the download."), - QMessageBox::Abort, this)); + std::unique_ptr message_box( + new QMessageBox(QMessageBox::Question, tr("Really cancel?"), + tr("Closing this window will cancel the download."), + QMessageBox::Abort, this)); message_box->addButton(tr("Don't stop!"), QMessageBox::AcceptRole); if (message_box->exec() != QMessageBox::Abort) { diff --git a/src/internet/magnatunedownloaddialog.h b/src/internet/magnatunedownloaddialog.h index 397a91705..89ecdd3b0 100644 --- a/src/internet/magnatunedownloaddialog.h +++ b/src/internet/magnatunedownloaddialog.h @@ -18,12 +18,12 @@ #ifndef MAGNATUNEDOWNLOADDIALOG_H #define MAGNATUNEDOWNLOADDIALOG_H +#include + #include #include #include -#include - #include "core/song.h" class MagnatuneService; @@ -34,8 +34,8 @@ class QXmlStreamReader; class MagnatuneDownloadDialog : public QDialog { Q_OBJECT -public: - MagnatuneDownloadDialog(MagnatuneService* service, QWidget *parent = 0); + public: + MagnatuneDownloadDialog(MagnatuneService* service, QWidget* parent = nullptr); ~MagnatuneDownloadDialog(); void Show(const SongList& songs); @@ -43,13 +43,13 @@ public: signals: void Finished(const QStringList& albums); -public slots: + public slots: void accept(); -protected: + protected: void closeEvent(QCloseEvent* e); -private slots: + private slots: void Browse(); void DownloadNext(); @@ -62,18 +62,18 @@ private slots: void ShowError(const QString& message); void AllFinished(bool error); -private: + private: QString GetOutputFilename(); -private: + private: Ui_MagnatuneDownloadDialog* ui_; MagnatuneService* service_; QNetworkAccessManager* network_; QNetworkReply* current_reply_; - boost::scoped_ptr download_file_; + std::unique_ptr download_file_; int next_row_; }; -#endif // MAGNATUNEDOWNLOADDIALOG_H +#endif // MAGNATUNEDOWNLOADDIALOG_H diff --git a/src/internet/magnatunedownloaddialog.ui b/src/internet/magnatunedownloaddialog.ui index 3f6968c80..4060de14e 100644 --- a/src/internet/magnatunedownloaddialog.ui +++ b/src/internet/magnatunedownloaddialog.ui @@ -41,12 +41,12 @@ - Name + Name - Progress + Progress diff --git a/src/internet/magnatuneplaylistitem.cpp b/src/internet/magnatuneplaylistitem.cpp index 5702c8df6..c582517c6 100644 --- a/src/internet/magnatuneplaylistitem.cpp +++ b/src/internet/magnatuneplaylistitem.cpp @@ -19,13 +19,10 @@ #include "internetmodel.h" MagnatunePlaylistItem::MagnatunePlaylistItem(const QString& type) - : LibraryPlaylistItem(type) -{ -} + : LibraryPlaylistItem(type) {} MagnatunePlaylistItem::MagnatunePlaylistItem(const Song& song) - : LibraryPlaylistItem("Magnatune") -{ + : LibraryPlaylistItem("Magnatune") { song_ = song; } @@ -36,6 +33,4 @@ bool MagnatunePlaylistItem::InitFromQuery(const SqlRow& query) { return song_.is_valid(); } -QUrl MagnatunePlaylistItem::Url() const { - return song_.url(); -} +QUrl MagnatunePlaylistItem::Url() const { return song_.url(); } diff --git a/src/internet/magnatuneplaylistitem.h b/src/internet/magnatuneplaylistitem.h index c7066ddc1..e6b0f3ba2 100644 --- a/src/internet/magnatuneplaylistitem.h +++ b/src/internet/magnatuneplaylistitem.h @@ -30,4 +30,4 @@ class MagnatunePlaylistItem : public LibraryPlaylistItem { QUrl Url() const; }; -#endif // MAGNATUNEPLAYLISTITEM_H +#endif // MAGNATUNEPLAYLISTITEM_H diff --git a/src/internet/magnatuneservice.cpp b/src/internet/magnatuneservice.cpp index 7b00a0fa2..a776eec12 100644 --- a/src/internet/magnatuneservice.cpp +++ b/src/internet/magnatuneservice.cpp @@ -51,41 +51,40 @@ #include -using boost::shared_ptr; - const char* MagnatuneService::kServiceName = "Magnatune"; const char* MagnatuneService::kSettingsGroup = "Magnatune"; const char* MagnatuneService::kSongsTable = "magnatune_songs"; const char* MagnatuneService::kFtsTable = "magnatune_songs_fts"; const char* MagnatuneService::kHomepage = "http://magnatune.com"; -const char* MagnatuneService::kDatabaseUrl = "http://magnatune.com/info/song_info_xml.gz"; +const char* MagnatuneService::kDatabaseUrl = + "http://magnatune.com/info/song_info_xml.gz"; const char* MagnatuneService::kStreamingHostname = "streaming.magnatune.com"; const char* MagnatuneService::kDownloadHostname = "download.magnatune.com"; const char* MagnatuneService::kPartnerId = "clementine"; -const char* MagnatuneService::kDownloadUrl = "http://download.magnatune.com/buy/membership_free_dl_xml"; +const char* MagnatuneService::kDownloadUrl = + "http://download.magnatune.com/buy/membership_free_dl_xml"; MagnatuneService::MagnatuneService(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - url_handler_(new MagnatuneUrlHandler(this, this)), - context_menu_(NULL), - root_(NULL), - library_backend_(NULL), - library_model_(NULL), - library_filter_(NULL), - library_sort_model_(new QSortFilterProxyModel(this)), - load_database_task_id_(0), - membership_(Membership_None), - format_(Format_Ogg), - total_song_count_(0), - network_(new NetworkAccessManager(this)) -{ + : InternetService(kServiceName, app, parent, parent), + url_handler_(new MagnatuneUrlHandler(this, this)), + context_menu_(nullptr), + root_(nullptr), + library_backend_(nullptr), + library_model_(nullptr), + library_filter_(nullptr), + library_sort_model_(new QSortFilterProxyModel(this)), + load_database_task_id_(0), + membership_(Membership_None), + format_(Format_Ogg), + total_song_count_(0), + network_(new NetworkAccessManager(this)) { // Create the library backend in the database thread library_backend_ = new LibraryBackend; library_backend_->moveToThread(app_->database()->thread()); - library_backend_->Init(app_->database(), kSongsTable, - QString::null, QString::null, kFtsTable); + library_backend_->Init(app_->database(), kSongsTable, QString::null, + QString::null, kFtsTable); library_model_ = new LibraryModel(library_backend_, app_, this); connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), @@ -99,16 +98,11 @@ MagnatuneService::MagnatuneService(Application* app, InternetModel* parent) app_->player()->RegisterUrlHandler(url_handler_); app_->global_search()->AddProvider(new LibrarySearchProvider( - library_backend_, - tr("Magnatune"), - "magnatune", - QIcon(":/providers/magnatune.png"), - true, app_, this)); + library_backend_, tr("Magnatune"), "magnatune", + QIcon(":/providers/magnatune.png"), true, app_, this)); } -MagnatuneService::~MagnatuneService() { - delete context_menu_; -} +MagnatuneService::~MagnatuneService() { delete context_menu_; } void MagnatuneService::ReloadSettings() { QSettings s; @@ -152,10 +146,10 @@ void MagnatuneService::ReloadDatabase() { QNetworkReply* reply = network_->get(request); connect(reply, SIGNAL(finished()), SLOT(ReloadDatabaseFinished())); - + if (!load_database_task_id_) - load_database_task_id_ = app_->task_manager()->StartTask( - tr("Downloading Magnatune catalogue")); + load_database_task_id_ = + app_->task_manager()->StartTask(tr("Downloading Magnatune catalogue")); } void MagnatuneService::ReloadDatabaseFinished() { @@ -170,8 +164,7 @@ void MagnatuneService::ReloadDatabaseFinished() { return; } - if (root_->hasChildren()) - root_->removeRows(0, root_->rowCount()); + if (root_->hasChildren()) root_->removeRows(0, root_->rowCount()); // The XML file is compressed QtIOCompressor gzip(reply); @@ -207,22 +200,22 @@ Song MagnatuneService::ReadTrack(QXmlStreamReader& reader) { while (!reader.atEnd()) { reader.readNext(); - if (reader.tokenType() == QXmlStreamReader::EndElement) - break; + if (reader.tokenType() == QXmlStreamReader::EndElement) break; if (reader.tokenType() == QXmlStreamReader::StartElement) { QStringRef name = reader.name(); QString value = ReadElementText(reader); - if (name == "artist") song.set_artist(value); - if (name == "albumname") song.set_album(value); - if (name == "trackname") song.set_title(value); - if (name == "tracknum") song.set_track(value.toInt()); - if (name == "year") song.set_year(value.toInt()); + if (name == "artist") song.set_artist(value); + if (name == "albumname") song.set_album(value); + if (name == "trackname") song.set_title(value); + if (name == "tracknum") song.set_track(value.toInt()); + if (name == "year") song.set_year(value.toInt()); if (name == "magnatunegenres") song.set_genre(value.section(',', 0, 0)); - if (name == "seconds") song.set_length_nanosec(value.toInt() * kNsecPerSec); - if (name == "cover_small") song.set_art_automatic(value); - if (name == "albumsku") song.set_comment(value); + if (name == "seconds") + song.set_length_nanosec(value.toInt() * kNsecPerSec); + if (name == "cover_small") song.set_art_automatic(value); + if (name == "albumsku") song.set_comment(value); if (name == "url") { QUrl url; // Magnatune's URLs are already encoded @@ -251,33 +244,43 @@ QString MagnatuneService::ReadElementText(QXmlStreamReader& reader) { QString ret; while (!reader.atEnd()) { switch (reader.readNext()) { - case QXmlStreamReader::StartElement: level++; break; - case QXmlStreamReader::EndElement: level--; break; + case QXmlStreamReader::StartElement: + level++; + break; + case QXmlStreamReader::EndElement: + level--; + break; case QXmlStreamReader::Characters: ret += reader.text().toString().trimmed(); break; - default: break; + default: + break; } - if (level == 0) - break; + if (level == 0) break; } return ret; } void MagnatuneService::EnsureMenuCreated() { - if (context_menu_) - return; + if (context_menu_) return; context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); - download_ = context_menu_->addAction( - IconLoader::Load("download"), tr("Download this album"), this, SLOT(Download())); + download_ = context_menu_->addAction(IconLoader::Load("download"), + tr("Download this album"), this, + SLOT(Download())); context_menu_->addSeparator(); - context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg("magnatune.com"), this, SLOT(Homepage())); - context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh catalogue"), this, SLOT(ReloadDatabase())); - QAction* config_action = context_menu_->addAction(IconLoader::Load("configure"), tr("Configure Magnatune..."), this, SLOT(ShowConfig())); + context_menu_->addAction(IconLoader::Load("download"), + tr("Open %1 in browser").arg("magnatune.com"), this, + SLOT(Homepage())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh catalogue"), this, + SLOT(ReloadDatabase())); + QAction* config_action = context_menu_->addAction( + IconLoader::Load("configure"), tr("Configure Magnatune..."), this, + SLOT(ShowConfig())); library_filter_ = new LibraryFilterWidget(0); library_filter_->SetSettingsGroup(kSettingsGroup); @@ -310,9 +313,9 @@ QUrl MagnatuneService::ModifyUrl(const QUrl& url) const { QUrl ret(url); ret.setScheme("http"); - switch(membership_) { + switch (membership_) { case Membership_None: - return ret; // Use the URL as-is + return ret; // Use the URL as-is // Otherwise add the hostname case Membership_Streaming: @@ -340,14 +343,16 @@ void MagnatuneService::ShowConfig() { } void MagnatuneService::Download() { - QModelIndex index = library_sort_model_->mapToSource(model()->current_index()); + QModelIndex index = + library_sort_model_->mapToSource(model()->current_index()); SongList songs = library_model_->GetChildSongs(index); MagnatuneDownloadDialog* dialog = new MagnatuneDownloadDialog(this, 0); dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->Show(songs); - connect(dialog, SIGNAL(Finished(QStringList)), SIGNAL(DownloadFinished(QStringList))); + connect(dialog, SIGNAL(Finished(QStringList)), + SIGNAL(DownloadFinished(QStringList))); } QWidget* MagnatuneService::HeaderWidget() const { diff --git a/src/internet/magnatuneservice.h b/src/internet/magnatuneservice.h index bb70a6d94..4050d926c 100644 --- a/src/internet/magnatuneservice.h +++ b/src/internet/magnatuneservice.h @@ -86,7 +86,7 @@ class MagnatuneService : public InternetService { QUrl ModifyUrl(const QUrl& url) const; - signals: +signals: void DownloadFinished(const QStringList& albums); private slots: @@ -127,4 +127,4 @@ class MagnatuneService : public InternetService { QNetworkAccessManager* network_; }; -#endif // MAGNATUNESERVICE_H +#endif // MAGNATUNESERVICE_H diff --git a/src/internet/magnatunesettingspage.cpp b/src/internet/magnatunesettingspage.cpp index 58eafb07f..e87db600a 100644 --- a/src/internet/magnatunesettingspage.cpp +++ b/src/internet/magnatunesettingspage.cpp @@ -29,17 +29,18 @@ #include MagnatuneSettingsPage::MagnatuneSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - network_(new NetworkAccessManager(this)), - ui_(new Ui_MagnatuneSettingsPage), - logged_in_(false) -{ + : SettingsPage(dialog), + network_(new NetworkAccessManager(this)), + ui_(new Ui_MagnatuneSettingsPage), + logged_in_(false) { ui_->setupUi(this); setWindowIcon(QIcon(":/providers/magnatune.png")); - connect(ui_->membership, SIGNAL(currentIndexChanged(int)), SLOT(MembershipChanged(int))); + connect(ui_->membership, SIGNAL(currentIndexChanged(int)), + SLOT(MembershipChanged(int))); - connect(network_, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), + connect(network_, + SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), SLOT(AuthenticationRequired(QNetworkReply*, QAuthenticator*))); connect(ui_->login, SIGNAL(clicked()), SLOT(Login())); connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(Login())); @@ -49,22 +50,21 @@ MagnatuneSettingsPage::MagnatuneSettingsPage(SettingsDialog* dialog) ui_->login_state->AddCredentialField(ui_->password); ui_->login_state->AddCredentialGroup(ui_->login_container); - ui_->login_state->SetAccountTypeText(tr( - "You can listen to Magnatune songs for free without an account. " - "Purchasing a membership removes the messages at the end of each track.")); + ui_->login_state->SetAccountTypeText( + tr("You can listen to Magnatune songs for free without an account. " + "Purchasing a membership removes the messages at the end of each " + "track.")); } -MagnatuneSettingsPage::~MagnatuneSettingsPage() { - delete ui_; -} +MagnatuneSettingsPage::~MagnatuneSettingsPage() { delete ui_; } const char* kMagnatuneDownloadValidateUrl = "http://download.magnatune.com/"; const char* kMagnatuneStreamingValidateUrl = "http://streaming.magnatune.com/"; void MagnatuneSettingsPage::UpdateLoginState() { - ui_->login_state->SetLoggedIn(logged_in_ ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - ui_->username->text()); + ui_->login_state->SetLoggedIn( + logged_in_ ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + ui_->username->text()); ui_->login_state->SetAccountTypeVisible(!logged_in_); } @@ -72,9 +72,9 @@ void MagnatuneSettingsPage::Login() { MagnatuneService::MembershipType type = MagnatuneService::MembershipType(ui_->membership->currentIndex()); - QUrl url(type == MagnatuneService::Membership_Streaming ? - kMagnatuneStreamingValidateUrl : - kMagnatuneDownloadValidateUrl, + QUrl url(type == MagnatuneService::Membership_Streaming + ? kMagnatuneStreamingValidateUrl + : kMagnatuneDownloadValidateUrl, QUrl::StrictMode); url.setUserName(ui_->username->text()); @@ -109,8 +109,8 @@ void MagnatuneSettingsPage::LoginFinished() { reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200; if (!logged_in_) { - QMessageBox::warning( - this, tr("Authentication failed"), tr("Your Magnatune credentials were incorrect")); + QMessageBox::warning(this, tr("Authentication failed"), + tr("Your Magnatune credentials were incorrect")); } else { Save(); } @@ -118,8 +118,8 @@ void MagnatuneSettingsPage::LoginFinished() { UpdateLoginState(); } -void MagnatuneSettingsPage::AuthenticationRequired( - QNetworkReply* reply, QAuthenticator*) { +void MagnatuneSettingsPage::AuthenticationRequired(QNetworkReply* reply, + QAuthenticator*) { // We send the authentication with the first request so this means we got // a 401 Authentication Required, ie. the credentials are incorrect. reply->abort(); @@ -129,13 +129,15 @@ void MagnatuneSettingsPage::Load() { QSettings s; s.beginGroup(MagnatuneService::kSettingsGroup); - ui_->membership->setCurrentIndex(s.value("membership", MagnatuneService::Membership_None).toInt()); + ui_->membership->setCurrentIndex( + s.value("membership", MagnatuneService::Membership_None).toInt()); ui_->username->setText(s.value("username").toString()); ui_->password->setText(s.value("password").toString()); - ui_->format->setCurrentIndex(s.value("format", MagnatuneService::Format_Ogg).toInt()); - logged_in_ = s.value("logged_in", - !ui_->username->text().isEmpty() && - !ui_->password->text().isEmpty()).toBool(); + ui_->format->setCurrentIndex( + s.value("format", MagnatuneService::Format_Ogg).toInt()); + logged_in_ = + s.value("logged_in", !ui_->username->text().isEmpty() && + !ui_->password->text().isEmpty()).toBool(); UpdateLoginState(); } diff --git a/src/internet/magnatunesettingspage.h b/src/internet/magnatunesettingspage.h index 352996d1d..e9231ee8e 100644 --- a/src/internet/magnatunesettingspage.h +++ b/src/internet/magnatunesettingspage.h @@ -28,28 +28,28 @@ class Ui_MagnatuneSettingsPage; class MagnatuneSettingsPage : public SettingsPage { Q_OBJECT -public: + public: MagnatuneSettingsPage(SettingsDialog* dialog); ~MagnatuneSettingsPage(); void Load(); void Save(); -private slots: + private slots: void Login(); void Logout(); void MembershipChanged(int value); void LoginFinished(); void AuthenticationRequired(QNetworkReply* reply, QAuthenticator* auth); -private: + private: void UpdateLoginState(); -private: + private: NetworkAccessManager* network_; Ui_MagnatuneSettingsPage* ui_; bool logged_in_; }; -#endif // MAGNATUNESETTINGSPAGE_H +#endif // MAGNATUNESETTINGSPAGE_H diff --git a/src/internet/magnatuneurlhandler.cpp b/src/internet/magnatuneurlhandler.cpp index 86785557a..c98ca552b 100644 --- a/src/internet/magnatuneurlhandler.cpp +++ b/src/internet/magnatuneurlhandler.cpp @@ -18,10 +18,9 @@ #include "magnatuneservice.h" #include "magnatuneurlhandler.h" -MagnatuneUrlHandler::MagnatuneUrlHandler(MagnatuneService* service, QObject* parent) - : UrlHandler(parent), - service_(service) { -} +MagnatuneUrlHandler::MagnatuneUrlHandler(MagnatuneService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult MagnatuneUrlHandler::StartLoading(const QUrl& url) { return LoadResult(url, LoadResult::TrackAvailable, service_->ModifyUrl(url)); diff --git a/src/internet/magnatuneurlhandler.h b/src/internet/magnatuneurlhandler.h index 0d00fc196..e971c05fb 100644 --- a/src/internet/magnatuneurlhandler.h +++ b/src/internet/magnatuneurlhandler.h @@ -22,17 +22,16 @@ class MagnatuneService; - class MagnatuneUrlHandler : public UrlHandler { -public: + public: MagnatuneUrlHandler(MagnatuneService* service, QObject* parent); QString scheme() const { return "magnatune"; } QIcon icon() const { return QIcon(":providers/magnatune.png"); } LoadResult StartLoading(const QUrl& url); -private: + private: MagnatuneService* service_; }; -#endif // MAGNATUNEURLHANDLER_H +#endif // MAGNATUNEURLHANDLER_H diff --git a/src/internet/oauthenticator.cpp b/src/internet/oauthenticator.cpp index e44daee37..d86ade803 100644 --- a/src/internet/oauthenticator.cpp +++ b/src/internet/oauthenticator.cpp @@ -10,21 +10,19 @@ #include "core/logging.h" #include "internet/localredirectserver.h" -OAuthenticator::OAuthenticator( - const QString& client_id, - const QString& client_secret, - RedirectStyle redirect, - QObject* parent) - : QObject(parent), - client_id_(client_id), - client_secret_(client_secret), - redirect_style_(redirect) { -} +const char* OAuthenticator::kRemoteURL = "https://clementine-data.appspot.com/skydrive"; -void OAuthenticator::StartAuthorisation( - const QString& oauth_endpoint, - const QString& token_endpoint, - const QString& scope) { +OAuthenticator::OAuthenticator(const QString& client_id, + const QString& client_secret, + RedirectStyle redirect, QObject* parent) + : QObject(parent), + client_id_(client_id), + client_secret_(client_secret), + redirect_style_(redirect) {} + +void OAuthenticator::StartAuthorisation(const QString& oauth_endpoint, + const QString& token_endpoint, + const QString& scope) { token_endpoint_ = QUrl(token_endpoint); LocalRedirectServer* server = new LocalRedirectServer(this); server->Listen(); @@ -33,30 +31,33 @@ void OAuthenticator::StartAuthorisation( url.addQueryItem("response_type", "code"); url.addQueryItem("client_id", client_id_); QUrl redirect_url; + + const QString port = QString::number(server->url().port()); + if (redirect_style_ == RedirectStyle::REMOTE) { - const int port = server->url().port(); - redirect_url = QUrl( - QString("https://clementine-data.appspot.com/skydrive?port=%1").arg(port)); + redirect_url = QUrl(kRemoteURL); + redirect_url.addQueryItem("port", port); + } else if (redirect_style_ == RedirectStyle::REMOTE_WITH_STATE) { + redirect_url = QUrl(kRemoteURL); + url.addQueryItem("state", port); } else { redirect_url = server->url(); } + url.addQueryItem("redirect_uri", redirect_url.toString()); url.addQueryItem("scope", scope); - NewClosure(server, SIGNAL(Finished()), - this, &OAuthenticator::RedirectArrived, server, redirect_url); + NewClosure(server, SIGNAL(Finished()), this, &OAuthenticator::RedirectArrived, + server, redirect_url); QDesktopServices::openUrl(url); } -void OAuthenticator::RedirectArrived( - LocalRedirectServer* server, QUrl url) { +void OAuthenticator::RedirectArrived(LocalRedirectServer* server, QUrl url) { server->deleteLater(); QUrl request_url = server->request_url(); qLog(Debug) << Q_FUNC_INFO << request_url; - RequestAccessToken( - request_url.queryItemValue("code").toUtf8(), - url); + RequestAccessToken(request_url.queryItemValue("code").toUtf8(), url); } QByteArray OAuthenticator::ParseHttpRequest(const QByteArray& request) const { @@ -68,7 +69,8 @@ QByteArray OAuthenticator::ParseHttpRequest(const QByteArray& request) const { return code; } -void OAuthenticator::RequestAccessToken(const QByteArray& code, const QUrl& url) { +void OAuthenticator::RequestAccessToken(const QByteArray& code, + const QUrl& url) { typedef QPair Param; QList parameters; parameters << Param("code", code) @@ -80,8 +82,9 @@ void OAuthenticator::RequestAccessToken(const QByteArray& code, const QUrl& url) << Param("redirect_uri", url.toString()); QStringList params; - foreach (const Param& p, parameters) { - params.append(QString("%1=%2").arg(p.first, QString(QUrl::toPercentEncoding(p.second)))); + for (const Param& p : parameters) { + params.append(QString("%1=%2").arg( + p.first, QString(QUrl::toPercentEncoding(p.second)))); } QString post_data = params.join("&"); qLog(Debug) << post_data; @@ -99,8 +102,7 @@ void OAuthenticator::FetchAccessTokenFinished(QNetworkReply* reply) { reply->deleteLater(); if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) != 200) { - qLog(Error) << "Failed to get access token" - << reply->readAll(); + qLog(Error) << "Failed to get access token" << reply->readAll(); return; } @@ -121,9 +123,8 @@ void OAuthenticator::FetchAccessTokenFinished(QNetworkReply* reply) { emit Finished(); } -void OAuthenticator::RefreshAuthorisation( - const QString& token_endpoint, - const QString& refresh_token) { +void OAuthenticator::RefreshAuthorisation(const QString& token_endpoint, + const QString& refresh_token) { refresh_token_ = refresh_token; QUrl url(token_endpoint); @@ -135,8 +136,9 @@ void OAuthenticator::RefreshAuthorisation( << Param("grant_type", "refresh_token") << Param("refresh_token", refresh_token); QStringList params; - foreach (const Param& p, parameters) { - params.append(QString("%1=%2").arg(p.first, QString(QUrl::toPercentEncoding(p.second)))); + for (const Param& p : parameters) { + params.append(QString("%1=%2").arg( + p.first, QString(QUrl::toPercentEncoding(p.second)))); } QString post_data = params.join("&"); diff --git a/src/internet/oauthenticator.h b/src/internet/oauthenticator.h index 8c229bcd5..274b0383c 100644 --- a/src/internet/oauthenticator.h +++ b/src/internet/oauthenticator.h @@ -18,20 +18,19 @@ class OAuthenticator : public QObject { // Redirect via data.clementine-player.org for when localhost is // unsupported (eg. Skydrive). REMOTE = 1, + // Same as REMOTE, but pass the 'port' parameter of the redirect URL as + // 'state' parameter of the URL, for services which allow only redirect URL + // without parameters (e.g. SoundCloud). "state" parameter will be added to + // the redirect URL by the service itself. + REMOTE_WITH_STATE = 2 }; - OAuthenticator( - const QString& client_id, - const QString& client_secret, - RedirectStyle redirect, - QObject* parent = 0); - void StartAuthorisation( - const QString& oauth_endpoint, - const QString& token_endpoint, - const QString& scope); - void RefreshAuthorisation( - const QString& token_endpoint, - const QString& refresh_token); + OAuthenticator(const QString& client_id, const QString& client_secret, + RedirectStyle redirect, QObject* parent = nullptr); + void StartAuthorisation(const QString& oauth_endpoint, + const QString& token_endpoint, const QString& scope); + void RefreshAuthorisation(const QString& token_endpoint, + const QString& refresh_token); // Token to use now. const QString& access_token() const { return access_token_; } @@ -41,7 +40,7 @@ class OAuthenticator : public QObject { const QDateTime& expiry_time() const { return expiry_time_; } - signals: +signals: void Finished(); private slots: @@ -50,6 +49,8 @@ class OAuthenticator : public QObject { void RefreshAccessTokenFinished(QNetworkReply* reply); private: + static const char* kRemoteURL; + QByteArray ParseHttpRequest(const QByteArray& request) const; void RequestAccessToken(const QByteArray& code, const QUrl& url); void SetExpiryTime(int expires_in_seconds); diff --git a/src/internet/savedradio.cpp b/src/internet/savedradio.cpp index d94ba561a..64ce750ff 100644 --- a/src/internet/savedradio.cpp +++ b/src/internet/savedradio.cpp @@ -31,18 +31,16 @@ const char* SavedRadio::kServiceName = "SavedRadio"; const char* SavedRadio::kSettingsGroup = "SavedRadio"; SavedRadio::SavedRadio(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - context_menu_(NULL), - root_(NULL) -{ + : InternetService(kServiceName, app, parent, parent), + context_menu_(nullptr), + root_(nullptr) { LoadStreams(); - app_->global_search()->AddProvider(new SavedRadioSearchProvider(this, app_, this)); + app_->global_search()->AddProvider( + new SavedRadioSearchProvider(this, app_, this)); } -SavedRadio::~SavedRadio() { - delete context_menu_; -} +SavedRadio::~SavedRadio() { delete context_menu_; } QStandardItem* SavedRadio::CreateRootItem() { root_ = new QStandardItem(IconLoader::Load("document-open-remote"), @@ -54,8 +52,9 @@ QStandardItem* SavedRadio::CreateRootItem() { void SavedRadio::LazyPopulate(QStandardItem* item) { switch (item->data(InternetModel::Role_Type).toInt()) { case InternetModel::Type_Service: - foreach (const Stream& stream, streams_) + for (const Stream& stream : streams_) { AddStreamToList(stream, root_); + } break; @@ -70,9 +69,10 @@ void SavedRadio::LoadStreams() { s.beginGroup(kSettingsGroup); int count = s.beginReadArray("streams"); - for (int i=0 ; iaddActions(GetPlaylistActions()); - remove_action_ = context_menu_->addAction(IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); - edit_action_ = context_menu_->addAction(IconLoader::Load("edit-rename"), tr("Edit..."), this, SLOT(Edit())); + remove_action_ = context_menu_->addAction( + IconLoader::Load("list-remove"), tr("Remove"), this, SLOT(Remove())); + edit_action_ = context_menu_->addAction(IconLoader::Load("edit-rename"), + tr("Edit..."), this, SLOT(Edit())); context_menu_->addSeparator(); - context_menu_->addAction(IconLoader::Load("document-open-remote"), tr("Add another stream..."), this, SIGNAL(ShowAddStreamDialog())); + context_menu_->addAction(IconLoader::Load("document-open-remote"), + tr("Add another stream..."), this, + SIGNAL(ShowAddStreamDialog())); } const bool is_root = @@ -117,15 +121,18 @@ void SavedRadio::ShowContextMenu(const QPoint& global_pos) { } void SavedRadio::Remove() { - QStandardItem* context_item = model()->itemFromIndex(model()->current_index()); + QStandardItem* context_item = + model()->itemFromIndex(model()->current_index()); - streams_.removeAll(Stream(QUrl(context_item->data(InternetModel::Role_Url).toUrl()))); + streams_.removeAll( + Stream(QUrl(context_item->data(InternetModel::Role_Url).toUrl()))); context_item->parent()->removeRow(context_item->row()); SaveStreams(); } void SavedRadio::Edit() { - QStandardItem* context_item = model()->itemFromIndex(model()->current_index()); + QStandardItem* context_item = + model()->itemFromIndex(model()->current_index()); if (!edit_dialog_) { edit_dialog_.reset(new AddStreamDialog); @@ -134,10 +141,10 @@ void SavedRadio::Edit() { edit_dialog_->set_name(context_item->text()); edit_dialog_->set_url(context_item->data(InternetModel::Role_Url).toUrl()); - if (edit_dialog_->exec() == QDialog::Rejected) - return; + if (edit_dialog_->exec() == QDialog::Rejected) return; - int i = streams_.indexOf(Stream(QUrl(context_item->data(InternetModel::Role_Url).toUrl()))); + int i = streams_.indexOf( + Stream(QUrl(context_item->data(InternetModel::Role_Url).toUrl()))); Stream* stream = &streams_[i]; stream->name_ = edit_dialog_->name(); stream->url_ = edit_dialog_->url(); @@ -149,15 +156,16 @@ void SavedRadio::Edit() { } void SavedRadio::AddStreamToList(const Stream& stream, QStandardItem* parent) { - QStandardItem* s = new QStandardItem(QIcon(":last.fm/icon_radio.png"), stream.name_); + QStandardItem* s = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), stream.name_); s->setData(stream.url_, InternetModel::Role_Url); - s->setData(InternetModel::PlayBehaviour_UseSongLoader, InternetModel::Role_PlayBehaviour); + s->setData(InternetModel::PlayBehaviour_UseSongLoader, + InternetModel::Role_PlayBehaviour); parent->appendRow(s); } -void SavedRadio::Add(const QUrl &url, const QString& name) { - if (streams_.contains(Stream(url))) - return; +void SavedRadio::Add(const QUrl& url, const QString& name) { + if (streams_.contains(Stream(url))) return; Stream stream(url, name); streams_ << stream; diff --git a/src/internet/savedradio.h b/src/internet/savedradio.h index d3a1d9ec6..d96a5e524 100644 --- a/src/internet/savedradio.h +++ b/src/internet/savedradio.h @@ -18,9 +18,9 @@ #ifndef SAVEDRADIO_H #define SAVEDRADIO_H -#include "internetservice.h" +#include -#include +#include "internetservice.h" class QMenu; @@ -33,16 +33,14 @@ class SavedRadio : public InternetService { SavedRadio(Application* app, InternetModel* parent); ~SavedRadio(); - enum ItemType { - Type_Stream = 2000, - }; + enum ItemType { Type_Stream = 2000, }; struct Stream { Stream(const QUrl& url, const QString& name = QString()) - : url_(url), name_(name) {} + : url_(url), name_(name) {} // For QList::contains - bool operator ==(const Stream& other) const { return url_ == other.url_; } + bool operator==(const Stream& other) const { return url_ == other.url_; } QUrl url_; QString name_; @@ -61,7 +59,7 @@ class SavedRadio : public InternetService { StreamList Streams() const { return streams_; } - signals: +signals: void ShowAddStreamDialog(); void StreamsChanged(); @@ -83,7 +81,7 @@ class SavedRadio : public InternetService { StreamList streams_; - boost::scoped_ptr edit_dialog_; + std::unique_ptr edit_dialog_; }; -#endif // SAVEDRADIO_H +#endif // SAVEDRADIO_H diff --git a/src/internet/scrobbler.h b/src/internet/scrobbler.h new file mode 100644 index 000000000..9beece9fa --- /dev/null +++ b/src/internet/scrobbler.h @@ -0,0 +1,36 @@ +#ifndef SCROBBLER_H +#define SCROBBLER_H + +#include + +class Song; + +class Scrobbler : public QObject { + Q_OBJECT + + public: + Scrobbler(QObject* parent = nullptr) {} + + virtual bool IsAuthenticated() const = 0; + virtual bool IsScrobblingEnabled() const = 0; + virtual bool AreButtonsVisible() const = 0; + virtual bool IsScrobbleButtonVisible() const = 0; + virtual bool PreferAlbumArtist() const = 0; + + public slots: + virtual void NowPlaying(const Song& song) = 0; + virtual void Scrobble() = 0; + virtual void Love() = 0; + virtual void ToggleScrobbling() = 0; + virtual void ShowConfig() = 0; + +signals: + void AuthenticationComplete(bool success, const QString& error_message); + void ScrobblingEnabledChanged(bool value); + void ButtonVisibilityChanged(bool value); + void ScrobbleButtonVisibilityChanged(bool value); + void ScrobbleSubmitted(); + void ScrobbleError(int value); +}; + +#endif // SCROBBLER_H diff --git a/src/internet/searchboxwidget.cpp b/src/internet/searchboxwidget.cpp index 514f569ef..11fa26344 100644 --- a/src/internet/searchboxwidget.cpp +++ b/src/internet/searchboxwidget.cpp @@ -25,10 +25,9 @@ #include SearchBoxWidget::SearchBoxWidget(InternetService* service) - : service_(service), - ui_(new Ui_SearchBoxWidget), - menu_(new QMenu(tr("Display options"), this)) -{ + : service_(service), + ui_(new Ui_SearchBoxWidget), + menu_(new QMenu(tr("Display options"), this)) { ui_->setupUi(this); // Icons @@ -39,26 +38,31 @@ SearchBoxWidget::SearchBoxWidget(InternetService* service) ui_->options->setMenu(menu_); menu_->addAction(IconLoader::Load("configure"), - tr("Configure %1...").arg(service_->name()), - service_, SLOT(ShowConfig())); + tr("Configure %1...").arg(service_->name()), service_, + SLOT(ShowConfig())); - ui_->filter->setPlaceholderText(QString("Search on %1").arg(service_->name())); - connect(ui_->filter, SIGNAL(textChanged(QString)), SIGNAL(TextChanged(QString))); + ui_->filter->setPlaceholderText( + QString("Search on %1").arg(service_->name())); + connect(ui_->filter, SIGNAL(textChanged(QString)), + SIGNAL(TextChanged(QString))); did_you_mean_ = new DidYouMean(ui_->filter, this); - connect(did_you_mean_, SIGNAL(Accepted(QString)), - ui_->filter, SLOT(setText(QString))); + connect(did_you_mean_, SIGNAL(Accepted(QString)), ui_->filter, + SLOT(setText(QString))); } -SearchBoxWidget::~SearchBoxWidget() { - delete ui_; -} +SearchBoxWidget::~SearchBoxWidget() { delete ui_; } -void SearchBoxWidget::FocusOnFilter(QKeyEvent *event) { +void SearchBoxWidget::FocusOnFilter(QKeyEvent* event) { ui_->filter->setFocus(Qt::OtherFocusReason); QApplication::sendEvent(ui_->filter, event); } +void SearchBoxWidget::SetText(const QString &text) +{ + ui_->filter->setText(text); +} + void SearchBoxWidget::keyReleaseEvent(QKeyEvent* e) { switch (e->key()) { case Qt::Key_Escape: diff --git a/src/internet/searchboxwidget.h b/src/internet/searchboxwidget.h index 9ba3c6b3b..1762eb3f3 100644 --- a/src/internet/searchboxwidget.h +++ b/src/internet/searchboxwidget.h @@ -30,7 +30,7 @@ class QMenu; class SearchBoxWidget : public QWidget { Q_OBJECT -public: + public: SearchBoxWidget(InternetService* service); ~SearchBoxWidget(); @@ -39,17 +39,18 @@ public: signals: void TextChanged(const QString& text); -public slots: + public slots: void FocusOnFilter(QKeyEvent* e); + void SetText(const QString& text); -protected: + protected: void keyReleaseEvent(QKeyEvent* e); -private: + private: InternetService* service_; Ui_SearchBoxWidget* ui_; QMenu* menu_; DidYouMean* did_you_mean_; }; -#endif // SEARCHBOXWIDGET_H +#endif // SEARCHBOXWIDGET_H diff --git a/src/internet/skydriveservice.cpp b/src/internet/skydriveservice.cpp index 0de877394..d80b2cfae 100644 --- a/src/internet/skydriveservice.cpp +++ b/src/internet/skydriveservice.cpp @@ -1,7 +1,6 @@ #include "skydriveservice.h" -#include -using boost::scoped_ptr; +#include #include @@ -13,9 +12,7 @@ using boost::scoped_ptr; namespace { -static const char* kServiceName = "OneDrive"; static const char* kServiceId = "skydrive"; -static const char* kSettingsGroup = "Skydrive"; static const char* kClientId = "0000000040111F16"; static const char* kClientSecret = "w2ClguSX0jG56cBl1CeUniypTBRjXt2Z"; @@ -31,36 +28,38 @@ static const char* kSkydriveBase = "https://apis.live.net/v5.0/"; } // namespace -SkydriveService::SkydriveService( - Application* app, - InternetModel* parent) - : CloudFileService( - app, parent, kServiceName, kServiceId, - QIcon(":providers/skydrive.png"), SettingsDialog::Page_Skydrive) { +const char* SkydriveService::kServiceName = "OneDrive"; +const char* SkydriveService::kSettingsGroup = "Skydrive"; + +SkydriveService::SkydriveService(Application* app, InternetModel* parent) + : CloudFileService(app, parent, kServiceName, kServiceId, + QIcon(":providers/skydrive.png"), + SettingsDialog::Page_Skydrive) { app->player()->RegisterUrlHandler(new SkydriveUrlHandler(this, this)); } bool SkydriveService::has_credentials() const { - return true; + return !refresh_token().isEmpty(); +} + +QString SkydriveService::refresh_token() const { + QSettings s; + s.beginGroup(kSettingsGroup); + + return s.value("refresh_token").toString(); } void SkydriveService::Connect() { OAuthenticator* oauth = new OAuthenticator( kClientId, kClientSecret, OAuthenticator::RedirectStyle::REMOTE, this); - QSettings s; - s.beginGroup(kSettingsGroup); - if (s.contains("refresh_token")) { - oauth->RefreshAuthorisation( - kOAuthTokenEndpoint, s.value("refresh_token").toString()); + if (!refresh_token().isEmpty()) { + oauth->RefreshAuthorisation(kOAuthTokenEndpoint, refresh_token()); } else { - oauth->StartAuthorisation( - kOAuthEndpoint, - kOAuthTokenEndpoint, - kOAuthScope); + oauth->StartAuthorisation(kOAuthEndpoint, kOAuthTokenEndpoint, kOAuthScope); } - NewClosure(oauth, SIGNAL(Finished()), - this, SLOT(ConnectFinished(OAuthenticator*)), oauth); + NewClosure(oauth, SIGNAL(Finished()), this, + SLOT(ConnectFinished(OAuthenticator*)), oauth); } void SkydriveService::ConnectFinished(OAuthenticator* oauth) { @@ -78,20 +77,19 @@ void SkydriveService::ConnectFinished(OAuthenticator* oauth) { AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(FetchUserInfoFinished(QNetworkReply*)), reply); } void SkydriveService::AddAuthorizationHeader(QNetworkRequest* request) { - request->setRawHeader( - "Authorization", QString("Bearer %1").arg(access_token_).toUtf8()); + request->setRawHeader("Authorization", + QString("Bearer %1").arg(access_token_).toUtf8()); } void SkydriveService::FetchUserInfoFinished(QNetworkReply* reply) { reply->deleteLater(); QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); - qLog(Debug) << response; QString name = response["name"].toString(); if (!name.isEmpty()) { @@ -112,18 +110,17 @@ void SkydriveService::ListFiles(const QString& folder) { AddAuthorizationHeader(&request); QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(ListFilesFinished(QNetworkReply*)), reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(ListFilesFinished(QNetworkReply*)), reply); } void SkydriveService::ListFilesFinished(QNetworkReply* reply) { reply->deleteLater(); QJson::Parser parser; QVariantMap response = parser.parse(reply).toMap(); - qLog(Debug) << response; QVariantList files = response["data"].toList(); - foreach (const QVariant& f, files) { + for (const QVariant& f : files) { QVariantMap file = f.toMap(); if (file["type"].toString() == "audio") { QString mime_type = GuessMimeTypeForFile(file["name"].toString()); @@ -143,11 +140,9 @@ void SkydriveService::ListFilesFinished(QNetworkReply* reply) { // HTTPS appears to be broken somehow between Qt & Skydrive downloads. // Fortunately, just changing the scheme to HTTP works. download_url.setScheme("http"); - MaybeAddFileToDatabase( - song, - mime_type, - download_url, - QString::null); + MaybeAddFileToDatabase(song, mime_type, download_url, QString::null); + } else if (file["type"].toString() == "folder") { + ListFiles(file["id"].toString()); } } } @@ -158,7 +153,7 @@ QUrl SkydriveService::GetStreamingUrlFromSongId(const QString& file_id) { QUrl url(QString(kSkydriveBase) + file_id); QNetworkRequest request(url); AddAuthorizationHeader(&request); - scoped_ptr reply(network_->get(request)); + std::unique_ptr reply(network_->get(request)); WaitForSignal(reply.get(), SIGNAL(finished())); QJson::Parser parser; @@ -174,3 +169,11 @@ void SkydriveService::EnsureConnected() { Connect(); WaitForSignal(this, SIGNAL(Connected())); } + +void SkydriveService::ForgetCredentials() { + QSettings s; + s.beginGroup(kSettingsGroup); + + s.remove("refresh_token"); + s.remove("name"); +} diff --git a/src/internet/skydriveservice.h b/src/internet/skydriveservice.h index 2a6ede077..5599ee60c 100644 --- a/src/internet/skydriveservice.h +++ b/src/internet/skydriveservice.h @@ -13,15 +13,17 @@ class SkydriveService : public CloudFileService { Q_OBJECT public: - SkydriveService( - Application* app, - InternetModel* parent); + SkydriveService(Application* app, InternetModel* parent); + + static const char* kServiceName; + static const char* kSettingsGroup; + + virtual bool has_credentials() const; QUrl GetStreamingUrlFromSongId(const QString& song_id); - protected: - // CloudFileService - virtual bool has_credentials() const; + public slots: virtual void Connect(); + void ForgetCredentials(); private slots: void ConnectFinished(OAuthenticator* oauth); @@ -32,6 +34,7 @@ class SkydriveService : public CloudFileService { void Connected(); private: + QString refresh_token() const; void AddAuthorizationHeader(QNetworkRequest* request); void ListFiles(const QString& folder); void EnsureConnected(); diff --git a/src/internet/skydrivesettingspage.cpp b/src/internet/skydrivesettingspage.cpp new file mode 100644 index 000000000..e7a6b33c4 --- /dev/null +++ b/src/internet/skydrivesettingspage.cpp @@ -0,0 +1,86 @@ +/* This file is part of Clementine. + Copyright 2013, John Maguire + + 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 . +*/ + +#include "skydrivesettingspage.h" + +#include + +#include "ui_skydrivesettingspage.h" +#include "core/application.h" +#include "internet/skydriveservice.h" +#include "internet/internetmodel.h" +#include "ui/settingsdialog.h" + +SkydriveSettingsPage::SkydriveSettingsPage(SettingsDialog* parent) + : SettingsPage(parent), + ui_(new Ui::SkydriveSettingsPage), + service_(dialog()->app()->internet_model()->Service()) { + ui_->setupUi(this); + ui_->login_state->AddCredentialGroup(ui_->login_container); + + connect(ui_->login_button, SIGNAL(clicked()), SLOT(LoginClicked())); + connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(LogoutClicked())); + connect(service_, SIGNAL(Connected()), SLOT(Connected())); + + dialog()->installEventFilter(this); +} + +SkydriveSettingsPage::~SkydriveSettingsPage() { delete ui_; } + +void SkydriveSettingsPage::Load() { + QSettings s; + s.beginGroup(SkydriveService::kSettingsGroup); + + const QString name = s.value("name").toString(); + + if (!name.isEmpty()) { + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, name); + } +} + +void SkydriveSettingsPage::Save() { + QSettings s; + s.beginGroup(SkydriveService::kSettingsGroup); +} + +void SkydriveSettingsPage::LoginClicked() { + service_->Connect(); + ui_->login_button->setEnabled(false); +} + +bool SkydriveSettingsPage::eventFilter(QObject* object, QEvent* event) { + if (object == dialog() && event->type() == QEvent::Enter) { + ui_->login_button->setEnabled(true); + return false; + } + + return SettingsPage::eventFilter(object, event); +} + +void SkydriveSettingsPage::LogoutClicked() { + service_->ForgetCredentials(); + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut); +} + +void SkydriveSettingsPage::Connected() { + QSettings s; + s.beginGroup(SkydriveService::kSettingsGroup); + + const QString name = s.value("name").toString(); + + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, name); +} diff --git a/src/internet/skydrivesettingspage.h b/src/internet/skydrivesettingspage.h new file mode 100644 index 000000000..4b27cc487 --- /dev/null +++ b/src/internet/skydrivesettingspage.h @@ -0,0 +1,53 @@ +/* This file is part of Clementine. + Copyright 2013, John Maguire + + 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 . +*/ + +#ifndef SKYDRIVESETTINGSPAGE_H +#define SKYDRIVESETTINGSPAGE_H + +#include "ui/settingspage.h" + +#include +#include + +class SkydriveService; +class Ui_SkydriveSettingsPage; + +class SkydriveSettingsPage : public SettingsPage { + Q_OBJECT + + public: + SkydriveSettingsPage(SettingsDialog* parent = nullptr); + ~SkydriveSettingsPage(); + + void Load(); + void Save(); + + // QObject + bool eventFilter(QObject* object, QEvent* event); + + private slots: + void LoginClicked(); + void LogoutClicked(); + void Connected(); + + private: + Ui_SkydriveSettingsPage* ui_; + + SkydriveService* service_; +}; + +#endif // SKYDRIVESETTINGSPAGE_H diff --git a/src/internet/ubuntuonesettingspage.ui b/src/internet/skydrivesettingspage.ui similarity index 52% rename from src/internet/ubuntuonesettingspage.ui rename to src/internet/skydrivesettingspage.ui index 4d25549c8..6fd3bb7e0 100644 --- a/src/internet/ubuntuonesettingspage.ui +++ b/src/internet/skydrivesettingspage.ui @@ -1,7 +1,7 @@ - UbuntuOneSettingsPage - + SkydriveSettingsPage + 0 @@ -11,17 +11,17 @@ - Ubuntu One + OneDrive - :/providers/ubuntuone.png:/providers/ubuntuone.png + :/providers/skydrive.png:/providers/skydrive.png - + - Clementine can play music that you have uploaded to Ubuntu One + Clementine can play music that you have uploaded to OneDrive true @@ -32,23 +32,19 @@ - - - Account details - - - - - - Ubuntu One username - - - - - - - - + + + + 28 + + + 0 + + + 0 + + + @@ -56,28 +52,27 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + - - + + - Ubuntu One password + Clicking the Login button will open a web browser. You should return to Clementine after you have logged in. - - - - - - QLineEdit::Password - - - - - - - <a href="https://one.ubuntu.com/auth/login">Create a new account or reset your password</a> - - + true @@ -93,7 +88,7 @@ 20 - 40 + 357 @@ -108,11 +103,6 @@ 1 - - username - password - login_button - diff --git a/src/internet/skydriveurlhandler.cpp b/src/internet/skydriveurlhandler.cpp index ec71ed4aa..ae00ed3d9 100644 --- a/src/internet/skydriveurlhandler.cpp +++ b/src/internet/skydriveurlhandler.cpp @@ -2,12 +2,9 @@ #include "skydriveservice.h" -SkydriveUrlHandler::SkydriveUrlHandler( - SkydriveService* service, - QObject* parent) - : UrlHandler(parent), - service_(service) { -} +SkydriveUrlHandler::SkydriveUrlHandler(SkydriveService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult SkydriveUrlHandler::StartLoading(const QUrl& url) { QString file_id(url.path()); diff --git a/src/internet/skydriveurlhandler.h b/src/internet/skydriveurlhandler.h index dc3ce04b4..1e7e61d15 100644 --- a/src/internet/skydriveurlhandler.h +++ b/src/internet/skydriveurlhandler.h @@ -8,7 +8,7 @@ class SkydriveService; class SkydriveUrlHandler : public UrlHandler { Q_OBJECT public: - SkydriveUrlHandler(SkydriveService* service, QObject* parent = 0); + SkydriveUrlHandler(SkydriveService* service, QObject* parent = nullptr); QString scheme() const { return "skydrive"; } QIcon icon() const { return QIcon(":providers/skydrive.png"); } diff --git a/src/internet/somafmservice.cpp b/src/internet/somafmservice.cpp index 5e3487619..8d7db7a30 100644 --- a/src/internet/somafmservice.cpp +++ b/src/internet/somafmservice.cpp @@ -38,43 +38,39 @@ #include const int SomaFMServiceBase::kStreamsCacheDurationSecs = - 60 * 60 * 24 * 28; // 4 weeks + 60 * 60 * 24 * 28; // 4 weeks -bool operator <(const SomaFMServiceBase::Stream& a, - const SomaFMServiceBase::Stream& b) { +bool operator<(const SomaFMServiceBase::Stream& a, + const SomaFMServiceBase::Stream& b) { return a.title_.compare(b.title_, Qt::CaseInsensitive) < 0; } -SomaFMServiceBase::SomaFMServiceBase( - Application* app, - InternetModel* parent, - const QString& name, - const QUrl& channel_list_url, - const QUrl& homepage_url, - const QUrl& donate_page_url, - const QIcon& icon) - : InternetService(name, app, parent, parent), - url_scheme_(name.toLower().remove(' ')), - url_handler_(new SomaFMUrlHandler(app, this, this)), - root_(NULL), - context_menu_(NULL), - network_(new NetworkAccessManager(this)), - streams_(name, "streams", kStreamsCacheDurationSecs), - name_(name), - channel_list_url_(channel_list_url), - homepage_url_(homepage_url), - donate_page_url_(donate_page_url), - icon_(icon) -{ +SomaFMServiceBase::SomaFMServiceBase(Application* app, InternetModel* parent, + const QString& name, + const QUrl& channel_list_url, + const QUrl& homepage_url, + const QUrl& donate_page_url, + const QIcon& icon) + : InternetService(name, app, parent, parent), + url_scheme_(name.toLower().remove(' ')), + url_handler_(new SomaFMUrlHandler(app, this, this)), + root_(nullptr), + context_menu_(nullptr), + network_(new NetworkAccessManager(this)), + streams_(name, "streams", kStreamsCacheDurationSecs), + name_(name), + channel_list_url_(channel_list_url), + homepage_url_(homepage_url), + donate_page_url_(donate_page_url), + icon_(icon) { ReloadSettings(); app_->player()->RegisterUrlHandler(url_handler_); - app_->global_search()->AddProvider(new SomaFMSearchProvider(this, app_, this)); + app_->global_search()->AddProvider( + new SomaFMSearchProvider(this, app_, this)); } -SomaFMServiceBase::~SomaFMServiceBase() { - delete context_menu_; -} +SomaFMServiceBase::~SomaFMServiceBase() { delete context_menu_; } QStandardItem* SomaFMServiceBase::CreateRootItem() { root_ = new QStandardItem(icon_, name_); @@ -97,13 +93,18 @@ void SomaFMServiceBase::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); - context_menu_->addAction(IconLoader::Load("download"), tr("Open %1 in browser").arg(homepage_url_.host()), this, SLOT(Homepage())); + context_menu_->addAction(IconLoader::Load("download"), + tr("Open %1 in browser").arg(homepage_url_.host()), + this, SLOT(Homepage())); if (!donate_page_url_.isEmpty()) { - context_menu_->addAction(IconLoader::Load("download"), tr("Donate"), this, SLOT(Donate())); + context_menu_->addAction(IconLoader::Load("download"), tr("Donate"), this, + SLOT(Donate())); } - context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh channels"), this, SLOT(ForceRefreshStreams())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh channels"), this, + SLOT(ForceRefreshStreams())); } context_menu_->popup(global_pos); @@ -113,12 +114,12 @@ void SomaFMServiceBase::ForceRefreshStreams() { QNetworkReply* reply = network_->get(QNetworkRequest(channel_list_url_)); int task_id = app_->task_manager()->StartTask(tr("Getting channels")); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(RefreshStreamsFinished(QNetworkReply*,int)), - reply, task_id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(RefreshStreamsFinished(QNetworkReply*, int)), reply, task_id); } -void SomaFMServiceBase::RefreshStreamsFinished(QNetworkReply* reply, int task_id) { +void SomaFMServiceBase::RefreshStreamsFinished(QNetworkReply* reply, + int task_id) { app_->task_manager()->SetTaskFinished(task_id); reply->deleteLater(); @@ -144,8 +145,7 @@ void SomaFMServiceBase::RefreshStreamsFinished(QNetworkReply* reply, int task_id streams_.Sort(); // Only update the item's children if it's already been populated - if (!root_->data(InternetModel::Role_CanLazyLoad).toBool()) - PopulateStreams(); + if (!root_->data(InternetModel::Role_CanLazyLoad).toBool()) PopulateStreams(); emit StreamsChanged(); } @@ -166,7 +166,8 @@ void SomaFMServiceBase::ReadChannel(QXmlStreamReader& reader, StreamList* ret) { stream.title_ = reader.readElementText(); } else if (reader.name() == "dj") { stream.dj_ = reader.readElementText(); - } else if (reader.name() == "fastpls" && reader.attributes().value("format") == "mp3") { + } else if (reader.name() == "fastpls" && + reader.attributes().value("format") == "mp3") { QUrl url(reader.readElementText()); url.setScheme(url_handler_->scheme()); @@ -196,9 +197,7 @@ Song SomaFMServiceBase::Stream::ToSong(const QString& prefix) const { return ret; } -void SomaFMServiceBase::Homepage() { - QDesktopServices::openUrl(homepage_url_); -} +void SomaFMServiceBase::Homepage() { QDesktopServices::openUrl(homepage_url_); } void SomaFMServiceBase::Donate() { QDesktopServices::openUrl(donate_page_url_); @@ -210,7 +209,8 @@ PlaylistItem::Options SomaFMServiceBase::playlistitem_options() const { SomaFMServiceBase::StreamList SomaFMServiceBase::Streams() { if (IsStreamListStale()) { - metaObject()->invokeMethod(this, "ForceRefreshStreams", Qt::QueuedConnection); + metaObject()->invokeMethod(this, "ForceRefreshStreams", + Qt::QueuedConnection); } return streams_; } @@ -224,30 +224,29 @@ void SomaFMServiceBase::RefreshStreams() { } void SomaFMServiceBase::PopulateStreams() { - if (root_->hasChildren()) - root_->removeRows(0, root_->rowCount()); + if (root_->hasChildren()) root_->removeRows(0, root_->rowCount()); - foreach (const Stream& stream, streams_) { - QStandardItem* item = new QStandardItem(QIcon(":last.fm/icon_radio.png"), QString()); + for (const Stream& stream : streams_) { + QStandardItem* item = + new QStandardItem(QIcon(":last.fm/icon_radio.png"), QString()); item->setText(stream.title_); - item->setData(QVariant::fromValue(stream.ToSong(name_)), InternetModel::Role_SongMetadata); - item->setData(InternetModel::PlayBehaviour_SingleItem, InternetModel::Role_PlayBehaviour); + item->setData(QVariant::fromValue(stream.ToSong(name_)), + InternetModel::Role_SongMetadata); + item->setData(InternetModel::PlayBehaviour_SingleItem, + InternetModel::Role_PlayBehaviour); root_->appendRow(item); } } -QDataStream& operator<<(QDataStream& out, const SomaFMServiceBase::Stream& stream) { - out << stream.title_ - << stream.dj_ - << stream.url_; +QDataStream& operator<<(QDataStream& out, + const SomaFMServiceBase::Stream& stream) { + out << stream.title_ << stream.dj_ << stream.url_; return out; } QDataStream& operator>>(QDataStream& in, SomaFMServiceBase::Stream& stream) { - in >> stream.title_ - >> stream.dj_ - >> stream.url_; + in >> stream.title_ >> stream.dj_ >> stream.url_; return in; } @@ -256,26 +255,14 @@ void SomaFMServiceBase::ReloadSettings() { streams_.Sort(); } - SomaFMService::SomaFMService(Application* app, InternetModel* parent) - : SomaFMServiceBase( - app, - parent, - "SomaFM", - QUrl("http://somafm.com/channels.xml"), - QUrl("http://somafm.com"), - QUrl(), - QIcon(":providers/somafm.png")) { -} - + : SomaFMServiceBase( + app, parent, "SomaFM", QUrl("http://somafm.com/channels.xml"), + QUrl("http://somafm.com"), QUrl(), QIcon(":providers/somafm.png")) {} RadioGFMService::RadioGFMService(Application* app, InternetModel* parent) - : SomaFMServiceBase( - app, - parent, - "Radio GFM", - QUrl("http://streams.radio-gfm.net/channels.xml"), - QUrl("http://www.radio-gfm.net"), - QUrl("http://www.radio-gfm.net/spenden"), - QIcon(":providers/radiogfm.png")) { -} + : SomaFMServiceBase(app, parent, "Radio GFM", + QUrl("http://streams.radio-gfm.net/channels.xml"), + QUrl("http://www.radio-gfm.net"), + QUrl("http://www.radio-gfm.net/spenden"), + QIcon(":providers/radiogfm.png")) {} diff --git a/src/internet/somafmservice.h b/src/internet/somafmservice.h index 7d14eb50b..9c34e1c89 100644 --- a/src/internet/somafmservice.h +++ b/src/internet/somafmservice.h @@ -32,20 +32,14 @@ class QMenu; class SomaFMServiceBase : public InternetService { Q_OBJECT -public: - SomaFMServiceBase( - Application* app, - InternetModel* parent, - const QString& name, - const QUrl& channel_list_url, - const QUrl& homepage_url, - const QUrl& donate_page_url, - const QIcon& icon); + public: + SomaFMServiceBase(Application* app, InternetModel* parent, + const QString& name, const QUrl& channel_list_url, + const QUrl& homepage_url, const QUrl& donate_page_url, + const QIcon& icon); ~SomaFMServiceBase(); - enum ItemType { - Type_Stream = 2000, - }; + enum ItemType { Type_Stream = 2000, }; struct Stream { QString title_; @@ -76,7 +70,7 @@ public: signals: void StreamsChanged(); -private slots: + private slots: void ForceRefreshStreams(); void RefreshStreams(); void RefreshStreamsFinished(QNetworkReply* reply, int task_id); @@ -84,11 +78,11 @@ private slots: void Homepage(); void Donate(); -private: + private: void ReadChannel(QXmlStreamReader& reader, StreamList* ret); void PopulateStreams(); -private: + private: const QString url_scheme_; SomaFMUrlHandler* url_handler_; @@ -120,4 +114,4 @@ QDataStream& operator<<(QDataStream& out, const SomaFMService::Stream& stream); QDataStream& operator>>(QDataStream& in, SomaFMService::Stream& stream); Q_DECLARE_METATYPE(SomaFMService::Stream) -#endif // SOMAFMSERVICE_H +#endif // SOMAFMSERVICE_H diff --git a/src/internet/somafmurlhandler.cpp b/src/internet/somafmurlhandler.cpp index 07f4c3a70..2e4f1cba7 100644 --- a/src/internet/somafmurlhandler.cpp +++ b/src/internet/somafmurlhandler.cpp @@ -28,30 +28,21 @@ #include #include -SomaFMUrlHandler::SomaFMUrlHandler(Application* app, - SomaFMServiceBase* service, +SomaFMUrlHandler::SomaFMUrlHandler(Application* app, SomaFMServiceBase* service, QObject* parent) - : UrlHandler(parent), - app_(app), - service_(service), - task_id_(0) -{ -} + : UrlHandler(parent), app_(app), service_(service), task_id_(0) {} -QString SomaFMUrlHandler::scheme() const { - return service_->url_scheme(); -} +QString SomaFMUrlHandler::scheme() const { return service_->url_scheme(); } -QIcon SomaFMUrlHandler::icon() const { - return service_->icon(); -} +QIcon SomaFMUrlHandler::icon() const { return service_->icon(); } UrlHandler::LoadResult SomaFMUrlHandler::StartLoading(const QUrl& url) { QUrl playlist_url = url; playlist_url.setScheme("http"); // Load the playlist - QNetworkReply* reply = service_->network()->get(QNetworkRequest(playlist_url)); + QNetworkReply* reply = + service_->network()->get(QNetworkRequest(playlist_url)); connect(reply, SIGNAL(finished()), SLOT(LoadPlaylistFinished())); if (!task_id_) @@ -76,7 +67,7 @@ void SomaFMUrlHandler::LoadPlaylistFinished() { } // Parse the playlist - PlaylistParser parser(NULL); + PlaylistParser parser(nullptr); QList songs = parser.LoadFromDevice(reply); qLog(Info) << "Loading station finished, got" << songs.count() << "songs"; @@ -88,6 +79,6 @@ void SomaFMUrlHandler::LoadPlaylistFinished() { return; } - emit AsyncLoadComplete(LoadResult(original_url, LoadResult::TrackAvailable, - songs[0].url())); + emit AsyncLoadComplete( + LoadResult(original_url, LoadResult::TrackAvailable, songs[0].url())); } diff --git a/src/internet/somafmurlhandler.h b/src/internet/somafmurlhandler.h index 1e4ea0121..e2919393e 100644 --- a/src/internet/somafmurlhandler.h +++ b/src/internet/somafmurlhandler.h @@ -23,28 +23,25 @@ class Application; class SomaFMServiceBase; - class SomaFMUrlHandler : public UrlHandler { Q_OBJECT -public: - SomaFMUrlHandler( - Application* app, - SomaFMServiceBase* service, - QObject* parent); + public: + SomaFMUrlHandler(Application* app, SomaFMServiceBase* service, + QObject* parent); QString scheme() const; QIcon icon() const; LoadResult StartLoading(const QUrl& url); -private slots: + private slots: void LoadPlaylistFinished(); -private: + private: Application* app_; SomaFMServiceBase* service_; int task_id_; }; -#endif // SOMAFMURLHANDLER_H +#endif // SOMAFMURLHANDLER_H diff --git a/src/internet/soundcloudservice.cpp b/src/internet/soundcloudservice.cpp index ae0cef802..82d703367 100644 --- a/src/internet/soundcloudservice.cpp +++ b/src/internet/soundcloudservice.cpp @@ -27,6 +27,7 @@ #include #include "internetmodel.h" +#include "oauthenticator.h" #include "searchboxwidget.h" #include "core/application.h" @@ -42,11 +43,17 @@ #include "globalsearch/soundcloudsearchprovider.h" #include "ui/iconloader.h" -const char* SoundCloudService::kApiClientId = "2add0f709fcfae1fd7a198ec7573d2d4"; +const char* SoundCloudService::kApiClientId = + "2add0f709fcfae1fd7a198ec7573d2d4"; +const char* SoundCloudService::kApiClientSecret = + "d1cd7829da2e98e1e0621d85d57a2077"; const char* SoundCloudService::kServiceName = "SoundCloud"; const char* SoundCloudService::kSettingsGroup = "SoundCloud"; const char* SoundCloudService::kUrl = "https://api.soundcloud.com/"; +const char* SoundCloudService::kOAuthEndpoint = "https://soundcloud.com/connect"; +const char* SoundCloudService::kOAuthTokenEndpoint = "https://api.soundcloud.com/oauth2/token"; +const char* SoundCloudService::kOAuthScope = "non-expiring"; const char* SoundCloudService::kHomepage = "http://soundcloud.com/"; const int SoundCloudService::kSearchDelayMsec = 400; @@ -55,36 +62,38 @@ const int SoundCloudService::kSongSimpleSearchLimit = 10; typedef QPair Param; -SoundCloudService::SoundCloudService(Application* app, InternetModel *parent) - : InternetService(kServiceName, app, parent, parent), - root_(NULL), - search_(NULL), - network_(new NetworkAccessManager(this)), - context_menu_(NULL), - search_box_(new SearchBoxWidget(this)), - search_delay_(new QTimer(this)), - next_pending_search_id_(0) { +SoundCloudService::SoundCloudService(Application* app, InternetModel* parent) + : InternetService(kServiceName, app, parent, parent), + root_(nullptr), + search_(nullptr), + user_tracks_(nullptr), + user_playlists_(nullptr), + user_activities_(nullptr), + network_(new NetworkAccessManager(this)), + context_menu_(nullptr), + search_box_(new SearchBoxWidget(this)), + search_delay_(new QTimer(this)), + next_pending_search_id_(0) { search_delay_->setInterval(kSearchDelayMsec); search_delay_->setSingleShot(true); connect(search_delay_, SIGNAL(timeout()), SLOT(DoSearch())); - SoundCloudSearchProvider* search_provider = new SoundCloudSearchProvider(app_, this); + SoundCloudSearchProvider* search_provider = + new SoundCloudSearchProvider(app_, this); search_provider->Init(this); app_->global_search()->AddProvider(search_provider); connect(search_box_, SIGNAL(TextChanged(QString)), SLOT(Search(QString))); } - -SoundCloudService::~SoundCloudService() { -} +SoundCloudService::~SoundCloudService() {} QStandardItem* SoundCloudService::CreateRootItem() { root_ = new QStandardItem(QIcon(":providers/soundcloud.png"), kServiceName); root_->setData(true, InternetModel::Role_CanLazyLoad); root_->setData(InternetModel::PlayBehaviour_DoubleClickAction, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); return root_; } @@ -100,23 +109,177 @@ void SoundCloudService::LazyPopulate(QStandardItem* item) { } void SoundCloudService::EnsureItemsCreated() { - search_ = new QStandardItem(IconLoader::Load("edit-find"), - tr("Search results")); - search_->setToolTip(tr("Start typing something on the search box above to " - "fill this search results list")); - search_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); - root_->appendRow(search_); + if (!search_) { + search_ = + new QStandardItem(IconLoader::Load("edit-find"), tr("Search results")); + search_->setToolTip( + tr("Start typing something on the search box above to " + "fill this search results list")); + search_->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + root_->appendRow(search_); + } + if (!user_tracks_ && !user_activities_ &&!user_playlists_ && IsLoggedIn()) { + user_activities_ = + new QStandardItem(tr("Activities stream")); + user_activities_->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + root_->appendRow(user_activities_); + + user_playlists_ = + new QStandardItem(tr("Playlists")); + root_->appendRow(user_playlists_); + + user_tracks_ = + new QStandardItem(tr("Tracks")); + user_tracks_->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + root_->appendRow(user_tracks_); + + RetrieveUserData(); // at least, try to (this will do nothing if user isn't logged) + } } QWidget* SoundCloudService::HeaderWidget() const { return search_box_; } +void SoundCloudService::ShowConfig() { + app_->OpenSettingsDialogAtPage(SettingsDialog::Page_SoundCloud); +} + void SoundCloudService::Homepage() { QDesktopServices::openUrl(QUrl(kHomepage)); } +void SoundCloudService::Connect() { + OAuthenticator* oauth = new OAuthenticator( + kApiClientId, kApiClientSecret, OAuthenticator::RedirectStyle::REMOTE_WITH_STATE, this); + + oauth->StartAuthorisation(kOAuthEndpoint, kOAuthTokenEndpoint, kOAuthScope); + + NewClosure(oauth, SIGNAL(Finished()), this, + SLOT(ConnectFinished(OAuthenticator*)), oauth); +} + +void SoundCloudService::ConnectFinished(OAuthenticator* oauth) { + oauth->deleteLater(); + + access_token_ = oauth->access_token(); + if (!access_token_.isEmpty()) { + emit Connected(); + } + expiry_time_ = oauth->expiry_time(); + QSettings s; + s.beginGroup(kSettingsGroup); + s.setValue("access_token", access_token_); + + EnsureItemsCreated(); +} + +void SoundCloudService::LoadAccessTokenIfEmpty() { + if (access_token_.isEmpty()) { + QSettings s; + s.beginGroup(kSettingsGroup); + if (!s.contains("access_token")) { + return; + } + access_token_ = s.value("access_token").toString(); + } +} + +bool SoundCloudService::IsLoggedIn() { + LoadAccessTokenIfEmpty(); + return !access_token_.isEmpty(); +} + +void SoundCloudService::Logout() { + QSettings s; + s.beginGroup(kSettingsGroup); + + access_token_.clear(); + s.remove("access_token"); + pending_playlists_requests_.clear(); + if (user_activities_) + root_->removeRow(user_activities_->row()); + if (user_tracks_) + root_->removeRow(user_tracks_->row()); + if (user_playlists_) + root_->removeRow(user_playlists_->row()); + user_activities_ = nullptr; + user_tracks_ = nullptr; + user_playlists_ = nullptr; +} + +void SoundCloudService::RetrieveUserData() { + LoadAccessTokenIfEmpty(); + RetrieveUserActivities(); + RetrieveUserTracks(); + RetrieveUserPlaylists(); +} + +void SoundCloudService::RetrieveUserTracks() { + QList parameters; + parameters << Param("oauth_token", access_token_); + QNetworkReply* reply = CreateRequest("me/tracks", parameters); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserTracksRetrieved(QNetworkReply*)), reply); +} + +void SoundCloudService::UserTracksRetrieved(QNetworkReply* reply) { + reply->deleteLater(); + + SongList songs = ExtractSongs(ExtractResult(reply)); + // Fill results list + for (const Song& song : songs) { + QStandardItem* child = CreateSongItem(song); + user_tracks_->appendRow(child); + } +} + +void SoundCloudService::RetrieveUserActivities() { + QList parameters; + parameters << Param("oauth_token", access_token_); + QNetworkReply* reply = CreateRequest("me/activities", parameters); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserActivitiesRetrieved(QNetworkReply*)), reply); +} + +void SoundCloudService::UserActivitiesRetrieved(QNetworkReply* reply) { + reply->deleteLater(); + + QList activities = ExtractActivities(ExtractResult(reply)); + // Fill results list + for (QStandardItem* activity : activities) { + user_activities_->appendRow(activity); + } +} + +void SoundCloudService::RetrieveUserPlaylists() { + QList parameters; + parameters << Param("oauth_token", access_token_); + QNetworkReply* reply = CreateRequest("me/playlists", parameters); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(UserPlaylistsRetrieved(QNetworkReply*)), reply); + +} + +void SoundCloudService::UserPlaylistsRetrieved(QNetworkReply* reply) { + reply->deleteLater(); + + QList playlists = ExtractResult(reply).toList(); + for (const QVariant& playlist : playlists) { + QMap playlist_map = playlist.toMap(); + + QStandardItem* playlist_item = CreatePlaylistItem(playlist_map["title"].toString()); + SongList songs = ExtractSongs(playlist_map["tracks"]); + for (const Song& song : songs) { + playlist_item->appendRow(CreateSongItem(song)); + } + user_playlists_->appendRow(playlist_item); + } +} + void SoundCloudService::Search(const QString& text, bool now) { pending_search_ = text; @@ -140,12 +303,11 @@ void SoundCloudService::DoSearch() { ClearSearchResults(); QList parameters; - parameters << Param("q", pending_search_); + parameters << Param("q", pending_search_); QNetworkReply* reply = CreateRequest("tracks", parameters); const int id = next_pending_search_id_++; - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SearchFinished(QNetworkReply*,int)), - reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SearchFinished(QNetworkReply*, int)), reply, id); } void SoundCloudService::SearchFinished(QNetworkReply* reply, int task_id) { @@ -153,7 +315,7 @@ void SoundCloudService::SearchFinished(QNetworkReply* reply, int task_id) { SongList songs = ExtractSongs(ExtractResult(reply)); // Fill results list - foreach (const Song& song, songs) { + for (const Song& song : songs) { QStandardItem* child = CreateSongItem(song); search_->appendRow(child); } @@ -163,18 +325,18 @@ void SoundCloudService::SearchFinished(QNetworkReply* reply, int task_id) { } void SoundCloudService::ClearSearchResults() { - if (search_) + if (search_) { search_->removeRows(0, search_->rowCount()); + } } int SoundCloudService::SimpleSearch(const QString& text) { QList parameters; - parameters << Param("q", text); + parameters << Param("q", text); QNetworkReply* reply = CreateRequest("tracks", parameters); const int id = next_pending_search_id_++; - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SimpleSearchFinished(QNetworkReply*,int)), - reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SimpleSearchFinished(QNetworkReply*, int)), reply, id); return id; } @@ -186,7 +348,7 @@ void SoundCloudService::SimpleSearchFinished(QNetworkReply* reply, int id) { } void SoundCloudService::EnsureMenuCreated() { - if(!context_menu_) { + if (!context_menu_) { context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); context_menu_->addSeparator(); @@ -198,20 +360,27 @@ void SoundCloudService::EnsureMenuCreated() { void SoundCloudService::ShowContextMenu(const QPoint& global_pos) { EnsureMenuCreated(); - + context_menu_->popup(global_pos); } -QNetworkReply* SoundCloudService::CreateRequest( - const QString& ressource_name, - const QList& params) { +QStandardItem* SoundCloudService::CreatePlaylistItem(const QString& playlist_name) { + QStandardItem* item = new QStandardItem(playlist_name); + item->setData(true, InternetModel::Role_CanLazyLoad); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + return item; +} + +QNetworkReply* SoundCloudService::CreateRequest(const QString& ressource_name, + const QList& params) { QUrl url(kUrl); url.setPath(ressource_name); url.addQueryItem("client_id", kApiClientId); - foreach(const Param& param, params) { + for (const Param& param : params) { url.addQueryItem(param.first, param.second); } @@ -219,11 +388,22 @@ QNetworkReply* SoundCloudService::CreateRequest( QNetworkRequest req(url); req.setRawHeader("Accept", "application/json"); - QNetworkReply *reply = network_->get(req); + QNetworkReply* reply = network_->get(req); return reply; } QVariant SoundCloudService::ExtractResult(QNetworkReply* reply) { + if (reply->error() != QNetworkReply::NoError) { + qLog(Error) << "Error when retrieving SoundCloud results:" << reply->errorString() << QString(" (%1)").arg(reply->error()); + if (reply->error() == QNetworkReply::ContentAccessDenied || + reply->error() == QNetworkReply::ContentOperationNotPermittedError || + reply->error() == QNetworkReply::ContentNotFoundError || + reply->error() == QNetworkReply::AuthenticationRequiredError) { + // In case of access denied errors (invalid token?) logout + Logout(); + return QVariant(); + } + } QJson::Parser parser; bool ok; QVariant result = parser.parse(reply, &ok); @@ -233,11 +413,57 @@ QVariant SoundCloudService::ExtractResult(QNetworkReply* reply) { return result; } +void SoundCloudService::RetrievePlaylist(int playlist_id, QStandardItem* playlist_item) { + const int request_id = next_retrieve_playlist_id_++; + pending_playlists_requests_.insert( + request_id, + PlaylistInfo(playlist_id, playlist_item)); + QList parameters; + parameters << Param("oauth_token", access_token_); + QNetworkReply* reply = CreateRequest("playlists/" + QString::number(playlist_id), parameters); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(PlaylistRetrieved(QNetworkReply*, int)), reply, request_id); +} + +void SoundCloudService::PlaylistRetrieved(QNetworkReply* reply, int request_id) { + if (!pending_playlists_requests_.contains(request_id)) + return; + PlaylistInfo playlist_info = pending_playlists_requests_.take(request_id); + QVariant res = ExtractResult(reply); + SongList songs = ExtractSongs(res.toMap()["tracks"]); + for (const Song& song : songs) { + QStandardItem* child = CreateSongItem(song); + playlist_info.item_->appendRow(child); + } +} + +QList SoundCloudService::ExtractActivities(const QVariant& result) { + QList activities; + QVariantList q_variant_list = result.toMap()["collection"].toList(); + for (const QVariant& q : q_variant_list) { + QMap activity = q.toMap(); + const QString type = activity["type"].toString(); + if (type == "track") { + Song song = ExtractSong(activity["origin"].toMap()); + if (song.is_valid()) { + activities << CreateSongItem(song); + } + } else if (type == "playlist") { + QMap origin_map = activity["origin"].toMap(); + QStandardItem* playlist_item = + CreatePlaylistItem(origin_map["title"].toString()); + activities << playlist_item; + RetrievePlaylist(origin_map["id"].toInt(), playlist_item); + } + } + return activities; +} + SongList SoundCloudService::ExtractSongs(const QVariant& result) { SongList songs; QVariantList q_variant_list = result.toList(); - foreach(const QVariant& q, q_variant_list) { + for (const QVariant& q : q_variant_list) { Song song = ExtractSong(q.toMap()); if (song.is_valid()) { songs << song; diff --git a/src/internet/soundcloudservice.h b/src/internet/soundcloudservice.h index c51f45482..48fec7ec0 100644 --- a/src/internet/soundcloudservice.h +++ b/src/internet/soundcloudservice.h @@ -22,6 +22,7 @@ #include "internetservice.h" class NetworkAccessManager; +class OAuthenticator; class SearchBoxWidget; class QMenu; @@ -30,18 +31,22 @@ class QNetworkReply; class SoundCloudService : public InternetService { Q_OBJECT public: - SoundCloudService(Application* app, InternetModel *parent); + SoundCloudService(Application* app, InternetModel* parent); ~SoundCloudService(); // Internet Service methods QStandardItem* CreateRootItem(); - void LazyPopulate(QStandardItem *parent); + void LazyPopulate(QStandardItem* parent); // TODO - //QList playlistitem_actions(const Song& song); + // QList playlistitem_actions(const Song& song); void ShowContextMenu(const QPoint& global_pos); QWidget* HeaderWidget() const; + void Connect(); + bool IsLoggedIn(); + void Logout(); + int SimpleSearch(const QString& query); static const char* kServiceName; @@ -49,8 +54,17 @@ class SoundCloudService : public InternetService { signals: void SimpleSearchResults(int id, SongList songs); + void Connected(); + + public slots: + void ShowConfig(); private slots: + void ConnectFinished(OAuthenticator* oauth); + void UserTracksRetrieved(QNetworkReply* reply); + void UserActivitiesRetrieved(QNetworkReply* reply); + void UserPlaylistsRetrieved(QNetworkReply* reply); + void PlaylistRetrieved(QNetworkReply* reply, int request_id); void Search(const QString& text, bool now = false); void DoSearch(); void SearchFinished(QNetworkReply* reply, int task); @@ -59,18 +73,43 @@ class SoundCloudService : public InternetService { void Homepage(); private: + struct PlaylistInfo { + PlaylistInfo() {} + PlaylistInfo(int id, QStandardItem* item) + : id_(id), item_(item) {} + + int id_; + QStandardItem* item_; + }; + + // Try to load "access_token" from preferences if the current access_token's + // value is empty + void LoadAccessTokenIfEmpty(); + void RetrieveUserData(); + void RetrieveUserTracks(); + void RetrieveUserActivities(); + void RetrieveUserPlaylists(); + void RetrievePlaylist(int playlist_id, QStandardItem* playlist_item); void ClearSearchResults(); void EnsureItemsCreated(); void EnsureMenuCreated(); + + QStandardItem* CreatePlaylistItem(const QString& playlist_name); + QNetworkReply* CreateRequest(const QString& ressource_name, const QList >& params); // Convenient function for extracting result from reply QVariant ExtractResult(QNetworkReply* reply); + // Returns items directly, as activities can be playlists or songs + QList ExtractActivities(const QVariant& result); SongList ExtractSongs(const QVariant& result); Song ExtractSong(const QVariantMap& result_song); QStandardItem* root_; QStandardItem* search_; + QStandardItem* user_tracks_; + QStandardItem* user_playlists_; + QStandardItem* user_activities_; NetworkAccessManager* network_; @@ -78,12 +117,21 @@ class SoundCloudService : public InternetService { SearchBoxWidget* search_box_; QTimer* search_delay_; QString pending_search_; + // Request IDs int next_pending_search_id_; + int next_retrieve_playlist_id_; + + QMap pending_playlists_requests_; QByteArray api_key_; + QString access_token_; + QDateTime expiry_time_; + static const char* kUrl; - static const char* kUrlCover; + static const char* kOAuthEndpoint; + static const char* kOAuthTokenEndpoint; + static const char* kOAuthScope; static const char* kHomepage; static const int kSongSearchLimit; @@ -91,7 +139,7 @@ class SoundCloudService : public InternetService { static const int kSearchDelayMsec; static const char* kApiClientId; + static const char* kApiClientSecret; }; - -#endif // SOUNDCLOUDSERVICE_H +#endif // SOUNDCLOUDSERVICE_H diff --git a/src/internet/soundcloudsettingspage.cpp b/src/internet/soundcloudsettingspage.cpp new file mode 100644 index 000000000..2813d361b --- /dev/null +++ b/src/internet/soundcloudsettingspage.cpp @@ -0,0 +1,73 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#include "soundcloudservice.h" +#include "soundcloudsettingspage.h" +#include "ui_soundcloudsettingspage.h" +#include "core/application.h" +#include "internet/internetmodel.h" + +SoundCloudSettingsPage::SoundCloudSettingsPage(SettingsDialog* parent) + : SettingsPage(parent), + ui_(new Ui::SoundCloudSettingsPage), + service_( + dialog()->app()->internet_model()->Service()) { + ui_->setupUi(this); + ui_->login_state->AddCredentialGroup(ui_->login_container); + + connect(ui_->login_button, SIGNAL(clicked()), SLOT(LoginClicked())); + connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(LogoutClicked())); + connect(service_, SIGNAL(Connected()), SLOT(Connected())); + + dialog()->installEventFilter(this); +} + +SoundCloudSettingsPage::~SoundCloudSettingsPage() { delete ui_; } + +void SoundCloudSettingsPage::Load() { + if (service_->IsLoggedIn()) { + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn); + } +} + +void SoundCloudSettingsPage::Save() { + // Everything is done in the service: nothing to do here +} + +void SoundCloudSettingsPage::LoginClicked() { + service_->Connect(); + ui_->login_button->setEnabled(false); +} + +bool SoundCloudSettingsPage::eventFilter(QObject* object, QEvent* event) { + if (object == dialog() && event->type() == QEvent::Enter) { + ui_->login_button->setEnabled(true); + return false; + } + + return SettingsPage::eventFilter(object, event); +} + +void SoundCloudSettingsPage::LogoutClicked() { + service_->Logout(); + ui_->login_button->setEnabled(true); + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut); +} + +void SoundCloudSettingsPage::Connected() { + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn); +} diff --git a/src/internet/soundcloudsettingspage.h b/src/internet/soundcloudsettingspage.h new file mode 100644 index 000000000..568c44b1e --- /dev/null +++ b/src/internet/soundcloudsettingspage.h @@ -0,0 +1,50 @@ +/* This file is part of Clementine. + Copyright 2014, David Sansome + + 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 . +*/ + +#ifndef SOUNDCLOUDSETTINGSPAGE_H +#define SOUNDCLOUDSETTINGSPAGE_H + +#include "ui/settingspage.h" + +class SoundCloudService; +class Ui_SoundCloudSettingsPage; + +class SoundCloudSettingsPage : public SettingsPage { + Q_OBJECT + + public: + SoundCloudSettingsPage(SettingsDialog* parent = nullptr); + ~SoundCloudSettingsPage(); + + void Load(); + void Save(); + + // QObject + bool eventFilter(QObject* object, QEvent* event); + + private slots: + void LoginClicked(); + void LogoutClicked(); + void Connected(); + + private: + Ui_SoundCloudSettingsPage* ui_; + + SoundCloudService* service_; +}; + +#endif // SOUNDCLOUDSETTINGSPAGE_H diff --git a/src/internet/soundcloudsettingspage.ui b/src/internet/soundcloudsettingspage.ui new file mode 100644 index 000000000..e4b2d1c08 --- /dev/null +++ b/src/internet/soundcloudsettingspage.ui @@ -0,0 +1,113 @@ + + + SoundCloudSettingsPage + + + + 0 + 0 + 569 + 491 + + + + SoundCloud + + + + :/providers/soundcloud.png:/providers/soundcloud.png + + + + + + true + + + You don't need to be logged in to search and to listen to music on SoundCloud. However, you need to login to access your playlists and your stream. + + + true + + + + + + + + + + + 28 + + + 0 + + + 0 + + + + + + + Login + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Clicking the Login button will open a web browser. You should return to Clementine after you have logged in. + + + true + + + + + + + + + + Qt::Vertical + + + + 20 + 357 + + + + + + + + + LoginStateWidget + QWidget +
widgets/loginstatewidget.h
+ 1 +
+
+ + + + +
diff --git a/src/internet/spotifyblobdownloader.cpp b/src/internet/spotifyblobdownloader.cpp index 2dbe7d70a..b51c63ef7 100644 --- a/src/internet/spotifyblobdownloader.cpp +++ b/src/internet/spotifyblobdownloader.cpp @@ -15,8 +15,9 @@ along with Clementine. If not, see . */ -#include "config.h" #include "spotifyblobdownloader.h" + +#include "config.h" #include "spotifyservice.h" #include "core/logging.h" #include "core/network.h" @@ -29,20 +30,24 @@ #include #ifdef HAVE_QCA - #include -#endif // HAVE_QCA +#include +#endif // HAVE_QCA + +#ifdef Q_OS_UNIX +#include +#endif const char* SpotifyBlobDownloader::kSignatureSuffix = ".sha1"; - -SpotifyBlobDownloader::SpotifyBlobDownloader( - const QString& version, const QString& path, QObject* parent) - : QObject(parent), - version_(version), - path_(path), - network_(new NetworkAccessManager(this)), - progress_(new QProgressDialog(tr("Downloading Spotify plugin"), tr("Cancel"), 0, 0)) -{ +SpotifyBlobDownloader::SpotifyBlobDownloader(const QString& version, + const QString& path, + QObject* parent) + : QObject(parent), + version_(version), + path_(path), + network_(new NetworkAccessManager(this)), + progress_(new QProgressDialog(tr("Downloading Spotify plugin"), + tr("Cancel"), 0, 0)) { progress_->setWindowTitle(QCoreApplication::applicationName()); connect(progress_, SIGNAL(canceled()), SLOT(Cancel())); } @@ -55,9 +60,10 @@ SpotifyBlobDownloader::~SpotifyBlobDownloader() { } bool SpotifyBlobDownloader::Prompt() { - QMessageBox::StandardButton ret = QMessageBox::question(NULL, - tr("Spotify plugin not installed"), - tr("An additional plugin is required to use Spotify in Clementine. Would you like to download and install it now?"), + QMessageBox::StandardButton ret = QMessageBox::question( + nullptr, tr("Spotify plugin not installed"), + tr("An additional plugin is required to use Spotify in Clementine. " + "Would you like to download and install it now?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); return ret == QMessageBox::Yes; } @@ -66,19 +72,21 @@ void SpotifyBlobDownloader::Start() { qDeleteAll(replies_); replies_.clear(); - const QStringList filenames = QStringList() - << "blob" - << "blob" + QString(kSignatureSuffix) - << "libspotify.so.12.1.45" - << "libspotify.so.12.1.45" + QString(kSignatureSuffix); + const QStringList filenames = + QStringList() << "blob" + << "blob" + QString(kSignatureSuffix) + << "libspotify.so.12.1.45" + << "libspotify.so.12.1.45" + QString(kSignatureSuffix); - foreach (const QString& filename, filenames) { - const QUrl url(SpotifyService::kBlobDownloadUrl + version_ + "/" + filename); + for (const QString& filename : filenames) { + const QUrl url(SpotifyService::kBlobDownloadUrl + version_ + "/" + + filename); qLog(Info) << "Downloading" << url; QNetworkReply* reply = network_->get(QNetworkRequest(url)); connect(reply, SIGNAL(finished()), SLOT(ReplyFinished())); - connect(reply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(ReplyProgress())); + connect(reply, SIGNAL(downloadProgress(qint64, qint64)), + SLOT(ReplyProgress())); replies_ << reply; } @@ -95,7 +103,7 @@ void SpotifyBlobDownloader::ReplyFinished() { } // Is everything finished? - foreach (QNetworkReply* reply, replies_) { + for (QNetworkReply* reply : replies_) { if (!reply->isFinished()) { return; } @@ -105,7 +113,7 @@ void SpotifyBlobDownloader::ReplyFinished() { QMap file_data; QStringList signature_filenames; - foreach (QNetworkReply* reply, replies_) { + for (QNetworkReply* reply : replies_) { const QString filename = reply->url().path().section('/', -1, -1); if (filename.endsWith(kSignatureSuffix)) { @@ -118,37 +126,36 @@ void SpotifyBlobDownloader::ReplyFinished() { #ifdef HAVE_QCA // Load the public key QCA::ConvertResult conversion_result; - QCA::PublicKey key = QCA::PublicKey::fromPEMFile(":/clementine-spotify-public.pem", - &conversion_result); + QCA::PublicKey key = QCA::PublicKey::fromPEMFile( + ":/clementine-spotify-public.pem", &conversion_result); if (QCA::ConvertGood != conversion_result) { ShowError("Failed to load Spotify public key"); return; } // Verify signatures - foreach (const QString& signature_filename, signature_filenames) { + for (const QString& signature_filename : signature_filenames) { QString actual_filename = signature_filename; actual_filename.remove(kSignatureSuffix); - qLog(Debug) << "Verifying" << actual_filename << "against" << signature_filename; + qLog(Debug) << "Verifying" << actual_filename << "against" + << signature_filename; if (!key.verifyMessage(file_data[actual_filename], - file_data[signature_filename], - QCA::EMSA3_SHA1)) { + file_data[signature_filename], QCA::EMSA3_SHA1)) { ShowError("Invalid signature: " + actual_filename); return; } } -#endif // HAVE_QCA +#endif // HAVE_QCA // Make the destination directory and write the files into it QDir().mkpath(path_); - foreach (const QString& filename, file_data.keys()) { + for (const QString& filename : file_data.keys()) { const QString dest_path = path_ + "/" + filename; - if (filename.endsWith(kSignatureSuffix)) - continue; + if (filename.endsWith(kSignatureSuffix)) continue; qLog(Info) << "Writing" << dest_path; @@ -180,7 +187,7 @@ void SpotifyBlobDownloader::ReplyFinished() { link_path += "." + version_parts.takeFirst(); } } -#endif // Q_OS_UNIX +#endif // Q_OS_UNIX } EmitFinished(); @@ -190,7 +197,7 @@ void SpotifyBlobDownloader::ReplyProgress() { int progress = 0; int total = 0; - foreach (QNetworkReply* reply, replies_) { + for (QNetworkReply* reply : replies_) { progress += reply->bytesAvailable(); total += reply->rawHeader("Content-Length").toInt(); } @@ -199,20 +206,18 @@ void SpotifyBlobDownloader::ReplyProgress() { progress_->setValue(progress); } -void SpotifyBlobDownloader::Cancel() { - deleteLater(); -} +void SpotifyBlobDownloader::Cancel() { deleteLater(); } void SpotifyBlobDownloader::ShowError(const QString& message) { // Stop any remaining replies before showing the dialog so they don't // carry on in the background - foreach (QNetworkReply* reply, replies_) { + for (QNetworkReply* reply : replies_) { disconnect(reply, 0, this, 0); reply->abort(); } qLog(Warning) << message; - QMessageBox::warning(NULL, tr("Error downloading Spotify plugin"), message, + QMessageBox::warning(nullptr, tr("Error downloading Spotify plugin"), message, QMessageBox::Close); deleteLater(); } diff --git a/src/internet/spotifyblobdownloader.h b/src/internet/spotifyblobdownloader.h index 7304aed4c..974cdff88 100644 --- a/src/internet/spotifyblobdownloader.h +++ b/src/internet/spotifyblobdownloader.h @@ -27,9 +27,9 @@ class QProgressDialog; class SpotifyBlobDownloader : public QObject { Q_OBJECT -public: + public: SpotifyBlobDownloader(const QString& version, const QString& path, - QObject* parent = 0); + QObject* parent = nullptr); ~SpotifyBlobDownloader(); static const char* kSignatureSuffix; @@ -41,16 +41,16 @@ public: signals: void Finished(); -private slots: + private slots: void ReplyFinished(); void ReplyProgress(); void Cancel(); -private: + private: void ShowError(const QString& message); void EmitFinished(); -private: + private: QString version_; QString path_; @@ -60,4 +60,4 @@ private: QProgressDialog* progress_; }; -#endif // SPOTIFYBLOBDOWNLOADER_H +#endif // SPOTIFYBLOBDOWNLOADER_H diff --git a/src/internet/spotifyserver.cpp b/src/internet/spotifyserver.cpp index ecd48bea3..ec2b56e69 100644 --- a/src/internet/spotifyserver.cpp +++ b/src/internet/spotifyserver.cpp @@ -26,10 +26,9 @@ #include SpotifyServer::SpotifyServer(QObject* parent) - : AbstractMessageHandler(NULL, parent), - server_(new QTcpServer(this)), - logged_in_(false) -{ + : AbstractMessageHandler(nullptr, parent), + server_(new QTcpServer(this)), + logged_in_(false) { connect(server_, SIGNAL(newConnection()), SLOT(NewConnection())); } @@ -39,9 +38,7 @@ void SpotifyServer::Init() { } } -int SpotifyServer::server_port() const { - return server_->serverPort(); -} +int SpotifyServer::server_port() const { return server_->serverPort(); } void SpotifyServer::NewConnection() { QTcpSocket* socket = server_->nextPendingConnection(); @@ -50,7 +47,7 @@ void SpotifyServer::NewConnection() { qLog(Info) << "Connection from port" << socket->peerPort(); // Send any login messages that were queued before the client connected - foreach (const pb::spotify::Message& message, queued_login_messages_) { + for (const pb::spotify::Message& message : queued_login_messages_) { SendOrQueueMessage(message); } queued_login_messages_.clear(); @@ -73,7 +70,8 @@ void SpotifyServer::SendOrQueueMessage(const pb::spotify::Message& message) { } void SpotifyServer::Login(const QString& username, const QString& password, - pb::spotify::Bitrate bitrate, bool volume_normalisation) { + pb::spotify::Bitrate bitrate, + bool volume_normalisation) { pb::spotify::Message message; pb::spotify::LoginRequest* request = message.mutable_login_request(); @@ -82,15 +80,18 @@ void SpotifyServer::Login(const QString& username, const QString& password, request->set_password(DataCommaSizeFromQString(password)); } request->mutable_playback_settings()->set_bitrate(bitrate); - request->mutable_playback_settings()->set_volume_normalisation(volume_normalisation); + request->mutable_playback_settings()->set_volume_normalisation( + volume_normalisation); SendOrQueueMessage(message); } -void SpotifyServer::SetPlaybackSettings(pb::spotify::Bitrate bitrate, bool volume_normalisation) { +void SpotifyServer::SetPlaybackSettings(pb::spotify::Bitrate bitrate, + bool volume_normalisation) { pb::spotify::Message message; - pb::spotify::PlaybackSettings* request = message.mutable_set_playback_settings_request(); + pb::spotify::PlaybackSettings* request = + message.mutable_set_playback_settings_request(); request->set_bitrate(bitrate); request->set_volume_normalisation(volume_normalisation); @@ -104,18 +105,20 @@ void SpotifyServer::MessageArrived(const pb::spotify::Message& message) { if (response.success()) { // Send any messages that were queued before the client logged in - foreach (const pb::spotify::Message& message, queued_messages_) { + for (const pb::spotify::Message& message : queued_messages_) { SendOrQueueMessage(message); } queued_messages_.clear(); } - emit LoginCompleted(response.success(), QStringFromStdString(response.error()), + emit LoginCompleted(response.success(), + QStringFromStdString(response.error()), response.error_code()); } else if (message.has_playlists_updated()) { emit PlaylistsUpdated(message.playlists_updated()); } else if (message.has_load_playlist_response()) { - const pb::spotify::LoadPlaylistResponse& response = message.load_playlist_response(); + const pb::spotify::LoadPlaylistResponse& response = + message.load_playlist_response(); switch (response.request().type()) { case pb::spotify::Inbox: @@ -139,8 +142,9 @@ void SpotifyServer::MessageArrived(const pb::spotify::Message& message) { const QString id = QStringFromStdString(response.id()); if (response.has_data()) { - emit ImageLoaded(id, QImage::fromData(QByteArray( - response.data().data(), response.data().size()))); + emit ImageLoaded( + id, QImage::fromData( + QByteArray(response.data().data(), response.data().size()))); } else { emit ImageLoaded(id, QImage()); } @@ -155,7 +159,8 @@ void SpotifyServer::MessageArrived(const pb::spotify::Message& message) { void SpotifyServer::LoadPlaylist(pb::spotify::PlaylistType type, int index) { pb::spotify::Message message; - pb::spotify::LoadPlaylistRequest* req = message.mutable_load_playlist_request(); + pb::spotify::LoadPlaylistRequest* req = + message.mutable_load_playlist_request(); req->set_type(type); if (index != -1) { @@ -165,10 +170,11 @@ void SpotifyServer::LoadPlaylist(pb::spotify::PlaylistType type, int index) { SendOrQueueMessage(message); } -void SpotifyServer::SyncPlaylist( - pb::spotify::PlaylistType type, int index, bool offline) { +void SpotifyServer::SyncPlaylist(pb::spotify::PlaylistType type, int index, + bool offline) { pb::spotify::Message message; - pb::spotify::SyncPlaylistRequest* req = message.mutable_sync_playlist_request(); + pb::spotify::SyncPlaylistRequest* req = + message.mutable_sync_playlist_request(); req->mutable_request()->set_type(type); if (index != -1) { req->mutable_request()->set_user_playlist_index(index); @@ -178,9 +184,7 @@ void SpotifyServer::SyncPlaylist( SendOrQueueMessage(message); } -void SpotifyServer::SyncInbox() { - SyncPlaylist(pb::spotify::Inbox, -1, true); -} +void SpotifyServer::SyncInbox() { SyncPlaylist(pb::spotify::Inbox, -1, true); } void SpotifyServer::SyncStarred() { SyncPlaylist(pb::spotify::Starred, -1, true); @@ -191,13 +195,9 @@ void SpotifyServer::SyncUserPlaylist(int index) { SyncPlaylist(pb::spotify::UserPlaylist, index, true); } -void SpotifyServer::LoadInbox() { - LoadPlaylist(pb::spotify::Inbox); -} +void SpotifyServer::LoadInbox() { LoadPlaylist(pb::spotify::Inbox); } -void SpotifyServer::LoadStarred() { - LoadPlaylist(pb::spotify::Starred); -} +void SpotifyServer::LoadStarred() { LoadPlaylist(pb::spotify::Starred); } void SpotifyServer::LoadUserPlaylist(int index) { Q_ASSERT(index >= 0); @@ -208,10 +208,9 @@ void SpotifyServer::StartPlaybackLater(const QString& uri, quint16 port) { QTimer* timer = new QTimer(this); connect(timer, SIGNAL(timeout()), timer, SLOT(deleteLater())); - timer->start(100); // lol - NewClosure(timer, SIGNAL(timeout()), - this, SLOT(StartPlayback(QString,quint16)), - uri, port); + timer->start(100); // lol + NewClosure(timer, SIGNAL(timeout()), this, + SLOT(StartPlayback(QString, quint16)), uri, port); } void SpotifyServer::StartPlayback(const QString& uri, quint16 port) { @@ -259,7 +258,8 @@ void SpotifyServer::AlbumBrowse(const QString& uri) { void SpotifyServer::LoadToplist() { pb::spotify::Message message; - pb::spotify::BrowseToplistRequest* req = message.mutable_browse_toplist_request(); + pb::spotify::BrowseToplistRequest* req = + message.mutable_browse_toplist_request(); req->set_type(pb::spotify::BrowseToplistRequest::Tracks); req->set_region(pb::spotify::BrowseToplistRequest::Everywhere); diff --git a/src/internet/spotifyserver.h b/src/internet/spotifyserver.h index ca06d62c3..3474a6b1d 100644 --- a/src/internet/spotifyserver.h +++ b/src/internet/spotifyserver.h @@ -24,15 +24,14 @@ #include #include - class QTcpServer; class QTcpSocket; class SpotifyServer : public AbstractMessageHandler { Q_OBJECT -public: - SpotifyServer(QObject* parent = 0); + public: + SpotifyServer(QObject* parent = nullptr); void Init(); void Login(const QString& username, const QString& password, @@ -48,12 +47,13 @@ public: void Search(const QString& text, int limit, int limit_album = 0); void LoadImage(const QString& id); void AlbumBrowse(const QString& uri); - void SetPlaybackSettings(pb::spotify::Bitrate bitrate, bool volume_normalisation); + void SetPlaybackSettings(pb::spotify::Bitrate bitrate, + bool volume_normalisation); void LoadToplist(); int server_port() const; -public slots: + public slots: void StartPlayback(const QString& uri, quint16 port); void Seek(qint64 offset_bytes); @@ -72,13 +72,13 @@ signals: void AlbumBrowseResults(const pb::spotify::BrowseAlbumResponse& response); void ToplistBrowseResults(const pb::spotify::BrowseToplistResponse& response); -protected: + protected: void MessageArrived(const pb::spotify::Message& message); -private slots: + private slots: void NewConnection(); -private: + private: void LoadPlaylist(pb::spotify::PlaylistType type, int index = -1); void SyncPlaylist(pb::spotify::PlaylistType type, int index, bool offline); void SendOrQueueMessage(const pb::spotify::Message& message); @@ -90,4 +90,4 @@ private: QList queued_messages_; }; -#endif // SPOTIFYSERVER_H +#endif // SPOTIFYSERVER_H diff --git a/src/internet/spotifyservice.cpp b/src/internet/spotifyservice.cpp index 543744ed3..ad86edb56 100644 --- a/src/internet/spotifyservice.cpp +++ b/src/internet/spotifyservice.cpp @@ -38,40 +38,43 @@ Q_DECLARE_METATYPE(QStandardItem*); const char* SpotifyService::kServiceName = "Spotify"; const char* SpotifyService::kSettingsGroup = "Spotify"; -const char* SpotifyService::kBlobDownloadUrl = "http://spotify.clementine-player.org/"; +const char* SpotifyService::kBlobDownloadUrl = + "http://spotify.clementine-player.org/"; const int SpotifyService::kSearchDelayMsec = 400; SpotifyService::SpotifyService(Application* app, InternetModel* parent) : InternetService(kServiceName, app, parent, parent), - server_(NULL), - blob_process_(NULL), - root_(NULL), - search_(NULL), - starred_(NULL), - inbox_(NULL), - toplist_(NULL), + server_(nullptr), + blob_process_(nullptr), + root_(nullptr), + search_(nullptr), + starred_(nullptr), + inbox_(nullptr), + toplist_(nullptr), login_task_id_(0), - context_menu_(NULL), + context_menu_(nullptr), search_box_(new SearchBoxWidget(this)), search_delay_(new QTimer(this)), login_state_(LoginState_OtherError), bitrate_(pb::spotify::Bitrate320k), - volume_normalisation_(false) -{ - // Build the search path for the binary blob. - // Look for one distributed alongside clementine first, then check in the - // user's home directory for any that have been downloaded. + volume_normalisation_(false) { +// Build the search path for the binary blob. +// Look for one distributed alongside clementine first, then check in the +// user's home directory for any that have been downloaded. #ifdef Q_OS_MAC system_blob_path_ = QCoreApplication::applicationDirPath() + - "/../PlugIns/clementine-spotifyblob"; + "/../PlugIns/clementine-spotifyblob"; #else system_blob_path_ = QCoreApplication::applicationDirPath() + - "/clementine-spotifyblob" CMAKE_EXECUTABLE_SUFFIX; + "/clementine-spotifyblob" CMAKE_EXECUTABLE_SUFFIX; #endif - local_blob_version_ = QString("version%1-%2bit").arg(SPOTIFY_BLOB_VERSION).arg(sizeof(void*) * 8); - local_blob_path_ = Utilities::GetConfigPath(Utilities::Path_LocalSpotifyBlob) + - "/" + local_blob_version_ + "/blob"; + local_blob_version_ = QString("version%1-%2bit") + .arg(SPOTIFY_BLOB_VERSION) + .arg(sizeof(void*) * 8); + local_blob_path_ = + Utilities::GetConfigPath(Utilities::Path_LocalSpotifyBlob) + "/" + + local_blob_version_ + "/blob"; qLog(Debug) << "Spotify system blob path:" << system_blob_path_; qLog(Debug) << "Spotify local blob path:" << local_blob_path_; @@ -139,8 +142,9 @@ void SpotifyService::Login(const QString& username, const QString& password) { EnsureServerCreated(username, password); } -void SpotifyService::LoginCompleted(bool success, const QString& error, - pb::spotify::LoginResponse_Error error_code) { +void SpotifyService::LoginCompleted( + bool success, const QString& error, + pb::spotify::LoginResponse_Error error_code) { if (login_task_id_) { app_->task_manager()->SetTaskFinished(login_task_id_); login_task_id_ = 0; @@ -151,37 +155,40 @@ void SpotifyService::LoginCompleted(bool success, const QString& error, QString error_copy(error); switch (error_code) { - case pb::spotify::LoginResponse_Error_BadUsernameOrPassword: - login_state_ = LoginState_BadCredentials; - break; + case pb::spotify::LoginResponse_Error_BadUsernameOrPassword: + login_state_ = LoginState_BadCredentials; + break; - case pb::spotify::LoginResponse_Error_UserBanned: - login_state_ = LoginState_Banned; - break; + case pb::spotify::LoginResponse_Error_UserBanned: + login_state_ = LoginState_Banned; + break; - case pb::spotify::LoginResponse_Error_UserNeedsPremium: - login_state_ = LoginState_NoPremium; - break; + case pb::spotify::LoginResponse_Error_UserNeedsPremium: + login_state_ = LoginState_NoPremium; + break; - case pb::spotify::LoginResponse_Error_ReloginFailed: - if (login_state_ == LoginState_LoggedIn) { - // This is the first time the relogin has failed - show a message this - // time only. - error_copy = tr("You have been logged out of Spotify, please re-enter your password in the Settings dialog."); - } else { - show_error_dialog = false; - } + case pb::spotify::LoginResponse_Error_ReloginFailed: + if (login_state_ == LoginState_LoggedIn) { + // This is the first time the relogin has failed - show a message this + // time only. + error_copy = + tr("You have been logged out of Spotify, please re-enter your " + "password in the Settings dialog."); + } else { + show_error_dialog = false; + } - login_state_ = LoginState_ReloginFailed; - break; + login_state_ = LoginState_ReloginFailed; + break; - default: - login_state_ = LoginState_OtherError; - break; + default: + login_state_ = LoginState_OtherError; + break; } if (show_error_dialog) { - QMessageBox::warning(NULL, tr("Spotify login error"), error_copy, QMessageBox::Close); + QMessageBox::warning(nullptr, tr("Spotify login error"), error_copy, + QMessageBox::Close); } } else { login_state_ = LoginState_LoggedIn; @@ -197,7 +204,7 @@ void SpotifyService::LoginCompleted(bool success, const QString& error, void SpotifyService::BlobProcessError(QProcess::ProcessError error) { qLog(Error) << "Spotify blob process failed:" << error; blob_process_->deleteLater(); - blob_process_ = NULL; + blob_process_ = nullptr; if (login_task_id_) { app_->task_manager()->SetTaskFinished(login_task_id_); @@ -208,9 +215,10 @@ void SpotifyService::ReloadSettings() { QSettings s; s.beginGroup(kSettingsGroup); - login_state_ = LoginState(s.value("login_state", LoginState_OtherError).toInt()); + login_state_ = + LoginState(s.value("login_state", LoginState_OtherError).toInt()); bitrate_ = static_cast( - s.value("bitrate", pb::spotify::Bitrate320k).toInt()); + s.value("bitrate", pb::spotify::Bitrate320k).toInt()); volume_normalisation_ = s.value("volume_normalisation", false).toBool(); if (server_ && blob_process_) { @@ -227,25 +235,30 @@ void SpotifyService::EnsureServerCreated(const QString& username, delete server_; server_ = new SpotifyServer(this); - connect(server_, SIGNAL(LoginCompleted(bool,QString,pb::spotify::LoginResponse_Error)), - SLOT(LoginCompleted(bool,QString,pb::spotify::LoginResponse_Error))); + connect( + server_, + SIGNAL(LoginCompleted(bool, QString, pb::spotify::LoginResponse_Error)), + SLOT(LoginCompleted(bool, QString, pb::spotify::LoginResponse_Error))); connect(server_, SIGNAL(PlaylistsUpdated(pb::spotify::Playlists)), SLOT(PlaylistsUpdated(pb::spotify::Playlists))); connect(server_, SIGNAL(InboxLoaded(pb::spotify::LoadPlaylistResponse)), SLOT(InboxLoaded(pb::spotify::LoadPlaylistResponse))); connect(server_, SIGNAL(StarredLoaded(pb::spotify::LoadPlaylistResponse)), SLOT(StarredLoaded(pb::spotify::LoadPlaylistResponse))); - connect(server_, SIGNAL(UserPlaylistLoaded(pb::spotify::LoadPlaylistResponse)), + connect(server_, + SIGNAL(UserPlaylistLoaded(pb::spotify::LoadPlaylistResponse)), SLOT(UserPlaylistLoaded(pb::spotify::LoadPlaylistResponse))); connect(server_, SIGNAL(PlaybackError(QString)), SIGNAL(StreamError(QString))); connect(server_, SIGNAL(SearchResults(pb::spotify::SearchResponse)), SLOT(SearchResults(pb::spotify::SearchResponse))); - connect(server_, SIGNAL(ImageLoaded(QString,QImage)), - SIGNAL(ImageLoaded(QString,QImage))); - connect(server_, SIGNAL(SyncPlaylistProgress(pb::spotify::SyncPlaylistProgress)), + connect(server_, SIGNAL(ImageLoaded(QString, QImage)), + SIGNAL(ImageLoaded(QString, QImage))); + connect(server_, + SIGNAL(SyncPlaylistProgress(pb::spotify::SyncPlaylistProgress)), SLOT(SyncPlaylistProgress(pb::spotify::SyncPlaylistProgress))); - connect(server_, SIGNAL(ToplistBrowseResults(pb::spotify::BrowseToplistResponse)), + connect(server_, + SIGNAL(ToplistBrowseResults(pb::spotify::BrowseToplistResponse)), SLOT(ToplistLoaded(pb::spotify::BrowseToplistResponse))); server_->Init(); @@ -263,7 +276,8 @@ void SpotifyService::EnsureServerCreated(const QString& username, login_password = QString(); } - server_->Login(login_username, login_password, bitrate_, volume_normalisation_); + server_->Login(login_username, login_password, bitrate_, + volume_normalisation_); StartBlobProcess(); } @@ -292,11 +306,11 @@ void SpotifyService::StartBlobProcess() { app_->task_manager()->SetTaskFinished(login_task_id_); } - #ifdef HAVE_SPOTIFY_DOWNLOADER - if (SpotifyBlobDownloader::Prompt()) { - InstallBlob(); - } - #endif +#ifdef HAVE_SPOTIFY_DOWNLOADER + if (SpotifyBlobDownloader::Prompt()) { + InstallBlob(); + } +#endif return; } @@ -306,34 +320,30 @@ void SpotifyService::StartBlobProcess() { blob_process_->setProcessChannelMode(QProcess::ForwardedChannels); blob_process_->setProcessEnvironment(env); - connect(blob_process_, - SIGNAL(error(QProcess::ProcessError)), + connect(blob_process_, SIGNAL(error(QProcess::ProcessError)), SLOT(BlobProcessError(QProcess::ProcessError))); qLog(Info) << "Starting" << blob_path; blob_process_->start( - blob_path, QStringList() << QString::number(server_->server_port())); + blob_path, QStringList() << QString::number(server_->server_port())); } bool SpotifyService::IsBlobInstalled() const { - return QFile::exists(system_blob_path_) || - QFile::exists(local_blob_path_); + return QFile::exists(system_blob_path_) || QFile::exists(local_blob_path_); } void SpotifyService::InstallBlob() { #ifdef HAVE_SPOTIFY_DOWNLOADER // The downloader deletes itself when it finishes SpotifyBlobDownloader* downloader = new SpotifyBlobDownloader( - local_blob_version_, QFileInfo(local_blob_path_).path(), this); + local_blob_version_, QFileInfo(local_blob_path_).path(), this); connect(downloader, SIGNAL(Finished()), SLOT(BlobDownloadFinished())); connect(downloader, SIGNAL(Finished()), SIGNAL(BlobStateChanged())); downloader->Start(); #endif // HAVE_SPOTIFY_DOWNLOADER } -void SpotifyService::BlobDownloadFinished() { - EnsureServerCreated(); -} +void SpotifyService::BlobDownloadFinished() { EnsureServerCreated(); } void SpotifyService::PlaylistsUpdated(const pb::spotify::Playlists& response) { if (login_task_id_) { @@ -343,31 +353,32 @@ void SpotifyService::PlaylistsUpdated(const pb::spotify::Playlists& response) { // Create starred and inbox playlists if they're not here already if (!search_) { - search_ = new QStandardItem(IconLoader::Load("edit-find"), - tr("Search results")); - search_->setToolTip(tr("Start typing something on the search box above to " - "fill this search results list")); + search_ = + new QStandardItem(IconLoader::Load("edit-find"), tr("Search results")); + search_->setToolTip( + tr("Start typing something on the search box above to " + "fill this search results list")); search_->setData(Type_SearchResults, InternetModel::Role_Type); search_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); starred_ = new QStandardItem(QIcon(":/star-on.png"), tr("Starred")); starred_->setData(Type_StarredPlaylist, InternetModel::Role_Type); starred_->setData(true, InternetModel::Role_CanLazyLoad); starred_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); inbox_ = new QStandardItem(IconLoader::Load("mail-message"), tr("Inbox")); inbox_->setData(Type_InboxPlaylist, InternetModel::Role_Type); inbox_->setData(true, InternetModel::Role_CanLazyLoad); inbox_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); toplist_ = new QStandardItem(QIcon(), tr("Top tracks")); toplist_->setData(Type_Toplist, InternetModel::Role_Type); toplist_->setData(true, InternetModel::Role_CanLazyLoad); toplist_->setData(InternetModel::PlayBehaviour_MultipleItems, - InternetModel::Role_PlayBehaviour); + InternetModel::Role_PlayBehaviour); root_->appendRow(search_); root_->appendRow(toplist_); @@ -382,19 +393,20 @@ void SpotifyService::PlaylistsUpdated(const pb::spotify::Playlists& response) { } // Remove and recreate the other playlists - foreach (QStandardItem* item, playlists_) { + for (QStandardItem* item : playlists_) { item->parent()->removeRow(item->row()); } playlists_.clear(); - for (int i=0 ; isetData(InternetModel::Type_UserPlaylist, InternetModel::Role_Type); item->setData(true, InternetModel::Role_CanLazyLoad); item->setData(msg.index(), Role_UserPlaylistIndex); - item->setData(InternetModel::PlayBehaviour_MultipleItems, InternetModel::Role_PlayBehaviour); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); root_->appendRow(item); playlists_ << item; @@ -404,12 +416,13 @@ void SpotifyService::PlaylistsUpdated(const pb::spotify::Playlists& response) { } } -bool SpotifyService::DoPlaylistsDiffer(const pb::spotify::Playlists& response) const { +bool SpotifyService::DoPlaylistsDiffer(const pb::spotify::Playlists& response) + const { if (playlists_.count() != response.playlist_size()) { return true; } - for (int i=0 ; idata(Role_UserPlaylistIndex).toInt() == index) { return item; } } - return NULL; + return nullptr; } -void SpotifyService::UserPlaylistLoaded(const pb::spotify::LoadPlaylistResponse& response) { +void SpotifyService::UserPlaylistLoaded( + const pb::spotify::LoadPlaylistResponse& response) { // Find a playlist with this index - QStandardItem* item = PlaylistBySpotifyIndex(response.request().user_playlist_index()); + QStandardItem* item = + PlaylistBySpotifyIndex(response.request().user_playlist_index()); if (item) { FillPlaylist(item, response); } @@ -463,10 +481,9 @@ void SpotifyService::UserPlaylistLoaded(const pb::spotify::LoadPlaylistResponse& void SpotifyService::FillPlaylist( QStandardItem* item, const google::protobuf::RepeatedPtrField& tracks) { - if (item->hasChildren()) - item->removeRows(0, item->rowCount()); + if (item->hasChildren()) item->removeRows(0, item->rowCount()); - for (int i=0 ; i < tracks.size() ; ++i) { + for (int i = 0; i < tracks.size(); ++i) { Song song; SongFromProtobuf(tracks.Get(i), &song); @@ -476,12 +493,14 @@ void SpotifyService::FillPlaylist( } } -void SpotifyService::FillPlaylist(QStandardItem* item, const pb::spotify::LoadPlaylistResponse& response) { +void SpotifyService::FillPlaylist( + QStandardItem* item, const pb::spotify::LoadPlaylistResponse& response) { qLog(Debug) << "Filling playlist:" << item->text(); FillPlaylist(item, response.track()); } -void SpotifyService::SongFromProtobuf(const pb::spotify::Track& track, Song* song) { +void SpotifyService::SongFromProtobuf(const pb::spotify::Track& track, + Song* song) { song->set_rating(track.starred() ? 1.0 : 0.0); song->set_title(QStringFromStdString(track.title())); song->set_album(QStringFromStdString(track.album())); @@ -491,10 +510,11 @@ void SpotifyService::SongFromProtobuf(const pb::spotify::Track& track, Song* son song->set_track(track.track()); song->set_year(track.year()); song->set_url(QUrl(QStringFromStdString(track.uri()))); - song->set_art_automatic("spotify://image/" + QStringFromStdString(track.album_art_id())); + song->set_art_automatic("spotify://image/" + + QStringFromStdString(track.album_art_id())); QStringList artists; - for (int i=0 ; iaddAction(IconLoader::Load("configure"), tr("Configure Spotify..."), this, SLOT(ShowConfig())); + context_menu_->addAction(IconLoader::Load("configure"), + tr("Configure Spotify..."), this, + SLOT(ShowConfig())); playlist_context_menu_ = new QMenu; playlist_context_menu_->addActions(GetPlaylistActions()); playlist_context_menu_->addSeparator(); playlist_sync_action_ = playlist_context_menu_->addAction( - IconLoader::Load("view-refresh"), - tr("Make playlist available offline"), - this, - SLOT(SyncPlaylist())); + IconLoader::Load("view-refresh"), tr("Make playlist available offline"), + this, SLOT(SyncPlaylist())); playlist_context_menu_->addSeparator(); playlist_context_menu_->addAction(IconLoader::Load("configure"), - tr("Configure Spotify..."), - this, SLOT(ShowConfig())); + tr("Configure Spotify..."), this, + SLOT(ShowConfig())); } void SpotifyService::ClearSearchResults() { - if (search_) - search_->removeRows(0, search_->rowCount()); + if (search_) search_->removeRows(0, search_->rowCount()); } void SpotifyService::SyncPlaylist() { @@ -558,11 +575,13 @@ void SpotifyService::SyncPlaylist() { } case Type_InboxPlaylist: server_->SyncInbox(); - inbox_sync_id_ = app_->task_manager()->StartTask(tr("Syncing Spotify inbox")); + inbox_sync_id_ = + app_->task_manager()->StartTask(tr("Syncing Spotify inbox")); break; case Type_StarredPlaylist: server_->SyncStarred(); - starred_sync_id_ = app_->task_manager()->StartTask(tr("Syncing Spotify starred tracks")); + starred_sync_id_ = + app_->task_manager()->StartTask(tr("Syncing Spotify starred tracks")); break; default: break; @@ -596,7 +615,8 @@ void SpotifyService::DoSearch() { } } -void SpotifyService::SearchResults(const pb::spotify::SearchResponse& response) { +void SpotifyService::SearchResults( + const pb::spotify::SearchResponse& response) { if (QStringFromStdString(response.request().query()) != pending_search_) { qLog(Debug) << "Old search result for" << QStringFromStdString(response.request().query()) @@ -606,7 +626,7 @@ void SpotifyService::SearchResults(const pb::spotify::SearchResponse& response) pending_search_.clear(); SongList songs; - for (int i=0 ; iappendRow(child); } - const QString did_you_mean_suggestion = QStringFromStdString(response.did_you_mean()); + const QString did_you_mean_suggestion = + QStringFromStdString(response.did_you_mean()); qLog(Debug) << "Did you mean suggestion: " << did_you_mean_suggestion; if (!did_you_mean_suggestion.isEmpty()) { search_box_->did_you_mean()->Show(did_you_mean_suggestion); @@ -653,8 +674,7 @@ void SpotifyService::ShowContextMenu(const QPoint& global_pos) { QStandardItem* item = model()->itemFromIndex(model()->current_index()); if (item) { int type = item->data(InternetModel::Role_Type).toInt(); - if (type == Type_InboxPlaylist || - type == Type_StarredPlaylist || + if (type == Type_InboxPlaylist || type == Type_StarredPlaylist || type == InternetModel::Type_UserPlaylist) { playlist_sync_action_->setData(qVariantFromValue(item)); playlist_context_menu_->popup(global_pos); @@ -665,10 +685,10 @@ void SpotifyService::ShowContextMenu(const QPoint& global_pos) { context_menu_->popup(global_pos); } -void SpotifyService::ItemDoubleClicked(QStandardItem* item) { -} +void SpotifyService::ItemDoubleClicked(QStandardItem* item) {} -void SpotifyService::DropMimeData(const QMimeData* data, const QModelIndex& index) { +void SpotifyService::DropMimeData(const QMimeData* data, + const QModelIndex& index) { qLog(Debug) << Q_FUNC_INFO << data->urls(); } @@ -719,8 +739,8 @@ void SpotifyService::ShowConfig() { void SpotifyService::Logout() { delete server_; delete blob_process_; - server_ = NULL; - blob_process_ = NULL; + server_ = nullptr; + blob_process_ = nullptr; login_state_ = LoginState_OtherError; diff --git a/src/internet/spotifyservice.h b/src/internet/spotifyservice.h index 338114067..39d7f5d0c 100644 --- a/src/internet/spotifyservice.h +++ b/src/internet/spotifyservice.h @@ -8,8 +8,6 @@ #include #include -#include - class Playlist; class SearchBoxWidget; class SpotifyServer; @@ -19,7 +17,7 @@ class QMenu; class SpotifyService : public InternetService { Q_OBJECT -public: + public: SpotifyService(Application* app, InternetModel* parent); ~SpotifyService(); @@ -31,9 +29,7 @@ public: Type_Toplist, }; - enum Role { - Role_UserPlaylistIndex = InternetModel::RoleCount, - }; + enum Role { Role_UserPlaylistIndex = InternetModel::RoleCount, }; // Values are persisted - don't change. enum LoginState { @@ -80,23 +76,24 @@ signals: void LoginFinished(bool success); void ImageLoaded(const QString& id, const QImage& image); -public slots: + public slots: void Search(const QString& text, bool now = false); void ShowConfig(); -private: + private: void StartBlobProcess(); void FillPlaylist( QStandardItem* item, const google::protobuf::RepeatedPtrField& tracks); - void FillPlaylist(QStandardItem* item, const pb::spotify::LoadPlaylistResponse& response); + void FillPlaylist(QStandardItem* item, + const pb::spotify::LoadPlaylistResponse& response); void EnsureMenuCreated(); void ClearSearchResults(); QStandardItem* PlaylistBySpotifyIndex(int index) const; bool DoPlaylistsDiffer(const pb::spotify::Playlists& response) const; -private slots: + private slots: void EnsureServerCreated(const QString& username = QString(), const QString& password = QString()); void BlobProcessError(QProcess::ProcessError error); @@ -115,7 +112,7 @@ private slots: void SyncPlaylist(); void BlobDownloadFinished(); -private: + private: SpotifyServer* server_; QString system_blob_path_; diff --git a/src/internet/spotifysettingspage.cpp b/src/internet/spotifysettingspage.cpp index f1a73bfa7..011457674 100644 --- a/src/internet/spotifysettingspage.cpp +++ b/src/internet/spotifysettingspage.cpp @@ -32,11 +32,10 @@ #include SpotifySettingsPage::SpotifySettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_SpotifySettingsPage), - service_(InternetModel::Service()), - validated_(false) -{ + : SettingsPage(dialog), + ui_(new Ui_SpotifySettingsPage), + service_(InternetModel::Service()), + validated_(false) { ui_->setupUi(this); setWindowIcon(QIcon(":/icons/48x48/spotify.png")); @@ -64,9 +63,7 @@ SpotifySettingsPage::SpotifySettingsPage(SettingsDialog* dialog) BlobStateChanged(); } -SpotifySettingsPage::~SpotifySettingsPage() { - delete ui_; -} +SpotifySettingsPage::~SpotifySettingsPage() { delete ui_; } void SpotifySettingsPage::BlobStateChanged() { const bool installed = service_->IsBlobInstalled(); @@ -81,9 +78,7 @@ void SpotifySettingsPage::BlobStateChanged() { #endif } -void SpotifySettingsPage::DownloadBlob() { - service_->InstallBlob(); -} +void SpotifySettingsPage::DownloadBlob() { service_->InstallBlob(); } void SpotifySettingsPage::Login() { if (!service_->IsBlobInstalled()) { @@ -124,7 +119,8 @@ void SpotifySettingsPage::Save() { s.setValue("username", ui_->username->text()); s.setValue("password", ui_->password->text()); - s.setValue("bitrate", ui_->bitrate->itemData(ui_->bitrate->currentIndex()).toInt()); + s.setValue("bitrate", + ui_->bitrate->itemData(ui_->bitrate->currentIndex()).toInt()); s.setValue("volume_normalisation", ui_->volume_normalisation->isChecked()); } @@ -139,28 +135,33 @@ void SpotifySettingsPage::UpdateLoginState() { const bool logged_in = service_->login_state() == SpotifyService::LoginState_LoggedIn; - ui_->login_state->SetLoggedIn(logged_in ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - ui_->username->text()); + ui_->login_state->SetLoggedIn( + logged_in ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + ui_->username->text()); ui_->login_state->SetAccountTypeVisible(!logged_in); switch (service_->login_state()) { - case SpotifyService::LoginState_NoPremium: - ui_->login_state->SetAccountTypeText(tr("You do not have a Spotify Premium account.")); - break; + case SpotifyService::LoginState_NoPremium: + ui_->login_state->SetAccountTypeText( + tr("You do not have a Spotify Premium account.")); + break; - case SpotifyService::LoginState_Banned: - case SpotifyService::LoginState_BadCredentials: - ui_->login_state->SetAccountTypeText(tr("Your username or password was incorrect.")); - break; + case SpotifyService::LoginState_Banned: + case SpotifyService::LoginState_BadCredentials: + ui_->login_state->SetAccountTypeText( + tr("Your username or password was incorrect.")); + break; - case SpotifyService::LoginState_ReloginFailed: - ui_->login_state->SetAccountTypeText(tr("You have been logged out of Spotify, please re-enter your password.")); - break; + case SpotifyService::LoginState_ReloginFailed: + ui_->login_state->SetAccountTypeText( + tr("You have been logged out of Spotify, please re-enter your " + "password.")); + break; - default: - ui_->login_state->SetAccountTypeText(tr("A Spotify Premium account is required.")); - break; + default: + ui_->login_state->SetAccountTypeText( + tr("A Spotify Premium account is required.")); + break; } } diff --git a/src/internet/spotifysettingspage.h b/src/internet/spotifysettingspage.h index d36b8b4a9..68ac10c29 100644 --- a/src/internet/spotifysettingspage.h +++ b/src/internet/spotifysettingspage.h @@ -27,26 +27,26 @@ class SpotifyService; class SpotifySettingsPage : public SettingsPage { Q_OBJECT -public: + public: SpotifySettingsPage(SettingsDialog* dialog); ~SpotifySettingsPage(); void Load(); void Save(); -public slots: + public slots: void BlobStateChanged(); void DownloadBlob(); -private slots: + private slots: void Login(); void LoginFinished(bool success); void Logout(); -private: + private: void UpdateLoginState(); -private: + private: Ui_SpotifySettingsPage* ui_; SpotifyService* service_; @@ -55,4 +55,4 @@ private: QString original_password_; }; -#endif // SPOTIFYSETTINGSPAGE_H +#endif // SPOTIFYSETTINGSPAGE_H diff --git a/src/internet/subsonicservice.cpp b/src/internet/subsonicservice.cpp index 31582a65c..64c7bed88 100644 --- a/src/internet/subsonicservice.cpp +++ b/src/internet/subsonicservice.cpp @@ -36,32 +36,28 @@ const char* SubsonicService::kFtsTable = "subsonic_songs_fts"; const int SubsonicService::kMaxRedirects = 10; SubsonicService::SubsonicService(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - network_(new QNetworkAccessManager(this)), - url_handler_(new SubsonicUrlHandler(this, this)), - scanner_(new SubsonicLibraryScanner(this, this)), - load_database_task_id_(0), - context_menu_(NULL), - root_(NULL), - library_backend_(NULL), - library_model_(NULL), - library_filter_(NULL), - library_sort_model_(new QSortFilterProxyModel(this)), - total_song_count_(0), - login_state_(LoginState_OtherError), - redirect_count_(0) { + : InternetService(kServiceName, app, parent, parent), + network_(new QNetworkAccessManager(this)), + url_handler_(new SubsonicUrlHandler(this, this)), + scanner_(new SubsonicLibraryScanner(this, this)), + load_database_task_id_(0), + context_menu_(nullptr), + root_(nullptr), + library_backend_(nullptr), + library_model_(nullptr), + library_filter_(nullptr), + library_sort_model_(new QSortFilterProxyModel(this)), + total_song_count_(0), + login_state_(LoginState_OtherError), + redirect_count_(0) { app_->player()->RegisterUrlHandler(url_handler_); - connect(scanner_, SIGNAL(ScanFinished()), - SLOT(ReloadDatabaseFinished())); + connect(scanner_, SIGNAL(ScanFinished()), SLOT(ReloadDatabaseFinished())); library_backend_ = new LibraryBackend; library_backend_->moveToThread(app_->database()->thread()); - library_backend_->Init(app_->database(), - kSongsTable, - QString::null, - QString::null, - kFtsTable); + library_backend_->Init(app_->database(), kSongsTable, QString::null, + QString::null, kFtsTable); connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(UpdateTotalSongCount(int))); @@ -87,29 +83,23 @@ SubsonicService::SubsonicService(Application* app, InternetModel* parent) context_menu_ = new QMenu; context_menu_->addActions(GetPlaylistActions()); context_menu_->addSeparator(); - context_menu_->addAction( - IconLoader::Load("view-refresh"), - tr("Refresh catalogue"), - this, SLOT(ReloadDatabase())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Refresh catalogue"), this, + SLOT(ReloadDatabase())); QAction* config_action = context_menu_->addAction( - IconLoader::Load("configure"), - tr("Configure Subsonic..."), - this, SLOT(ShowConfig())); + IconLoader::Load("configure"), tr("Configure Subsonic..."), this, + SLOT(ShowConfig())); context_menu_->addSeparator(); context_menu_->addMenu(library_filter_->menu()); library_filter_->AddMenuAction(config_action); app_->global_search()->AddProvider(new LibrarySearchProvider( - library_backend_, - tr("Subsonic"), - "subsonic", - QIcon(":/providers/subsonic.png"), - true, app_, this)); + library_backend_, tr("Subsonic"), "subsonic", + QIcon(":/providers/subsonic.png"), true, app_, this)); } -SubsonicService::~SubsonicService() { -} +SubsonicService::~SubsonicService() {} QStandardItem* SubsonicService::CreateRootItem() { root_ = new QStandardItem(QIcon(":providers/subsonic.png"), kServiceName); @@ -143,9 +133,7 @@ void SubsonicService::ShowContextMenu(const QPoint& global_pos) { context_menu_->popup(global_pos); } -QWidget* SubsonicService::HeaderWidget() const { - return library_filter_; -} +QWidget* SubsonicService::HeaderWidget() const { return library_filter_; } void SubsonicService::ReloadSettings() { QSettings s; @@ -160,13 +148,13 @@ void SubsonicService::ReloadSettings() { } bool SubsonicService::IsConfigured() const { - return !configured_server_.isEmpty() && - !username_.isEmpty() && + return !configured_server_.isEmpty() && !username_.isEmpty() && !password_.isEmpty(); } void SubsonicService::Login() { - // Recreate fresh network state, otherwise old HTTPS settings seem to get reused + // Recreate fresh network state, otherwise old HTTPS settings seem to get + // reused network_->deleteLater(); network_ = new QNetworkAccessManager(this); network_->setCookieJar(new QNetworkCookieJar(network_)); @@ -182,8 +170,8 @@ void SubsonicService::Login() { } } -void SubsonicService::Login( - const QString& server, const QString& username, const QString& password, const bool& usesslv3) { +void SubsonicService::Login(const QString& server, const QString& username, + const QString& password, const bool& usesslv3) { UpdateServer(server); username_ = username; password_ = password; @@ -193,9 +181,8 @@ void SubsonicService::Login( void SubsonicService::Ping() { QNetworkReply* reply = Send(BuildRequestUrl("ping")); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(OnPingFinished(QNetworkReply*)), - reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(OnPingFinished(QNetworkReply*)), reply); } QUrl SubsonicService::BuildRequestUrl(const QString& view) const { @@ -227,7 +214,7 @@ QNetworkReply* SubsonicService::Send(const QUrl& url) { sslconfig.setProtocol(QSsl::SslV3); } request.setSslConfiguration(sslconfig); - QNetworkReply *reply = network_->get(request); + QNetworkReply* reply = network_->get(request); return reply; } @@ -237,8 +224,8 @@ void SubsonicService::UpdateTotalSongCount(int count) { void SubsonicService::ReloadDatabase() { if (!load_database_task_id_) { - load_database_task_id_ = app_->task_manager()->StartTask( - tr("Fetching Subsonic library")); + load_database_task_id_ = + app_->task_manager()->StartTask(tr("Fetching Subsonic library")); } scanner_->Scan(); } @@ -252,7 +239,8 @@ void SubsonicService::ReloadDatabaseFinished() { library_model_->Reset(); } -void SubsonicService::OnLoginStateChanged(SubsonicService::LoginState newstate) { +void SubsonicService::OnLoginStateChanged( + SubsonicService::LoginState newstate) { // TODO: library refresh logic? } @@ -260,7 +248,7 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { reply->deleteLater(); if (reply->error() != QNetworkReply::NoError) { - switch(reply->error()) { + switch (reply->error()) { case QNetworkReply::ConnectionRefusedError: login_state_ = LoginState_ConnectionRefused; break; @@ -273,18 +261,20 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { case QNetworkReply::SslHandshakeFailedError: login_state_ = LoginState_SslError; break; - default: //Treat uncaught error types here as generic + default: // Treat uncaught error types here as generic login_state_ = LoginState_BadServer; break; } qLog(Error) << "Failed to connect (" - << Utilities::EnumToString(QNetworkReply::staticMetaObject, "NetworkError", reply->error()) + << Utilities::EnumToString(QNetworkReply::staticMetaObject, + "NetworkError", reply->error()) << "):" << reply->errorString(); } else { QXmlStreamReader reader(reply); reader.readNextStartElement(); QStringRef status = reader.attributes().value("status"); - int http_status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); + int http_status_code = + reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (status == "ok") { login_state_ = LoginState_Loggedin; } else if (http_status_code >= 300 && http_status_code <= 399) { @@ -292,18 +282,19 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { QUrl redirect_url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); if (redirect_url.isEmpty()) { - qLog(Debug) << "Received HTTP code " << http_status_code << ", but no URL"; + qLog(Debug) << "Received HTTP code " << http_status_code + << ", but no URL"; login_state_ = LoginState_RedirectNoUrl; } else { redirect_count_++; qLog(Debug) << "Redirect receieved to " << redirect_url.toString(QUrl::RemoveQuery) - << ", current redirect count is " - << redirect_count_; + << ", current redirect count is " << redirect_count_; if (redirect_count_ <= kMaxRedirects) { working_server_ = ScrubUrl(redirect_url).toString(QUrl::RemoveQuery); Ping(); - // To avoid the LoginStateChanged, as it will come from the recursive request. + // To avoid the LoginStateChanged, as it will come from the recursive + // request. return; } else { // Redirect limit exceeded @@ -314,7 +305,8 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { reader.readNextStartElement(); int error = reader.attributes().value("code").toString().toInt(); qLog(Error) << "Subsonic error (" - << Utilities::EnumToString(SubsonicService::staticMetaObject, "ApiError", error) + << Utilities::EnumToString(SubsonicService::staticMetaObject, + "ApiError", error) << "):" << reader.attributes().value("message").toString(); switch (error) { // "Parameter missing" for "ping" is always blank username or password @@ -338,7 +330,8 @@ void SubsonicService::OnPingFinished(QNetworkReply* reply) { } } qLog(Debug) << "Login state changed:" - << Utilities::EnumToString(SubsonicService::staticMetaObject, "LoginState", login_state_); + << Utilities::EnumToString(SubsonicService::staticMetaObject, + "LoginState", login_state_); emit LoginStateChanged(login_state_); } @@ -352,19 +345,14 @@ void SubsonicService::UpdateServer(const QString& server) { redirect_count_ = 0; } - const int SubsonicLibraryScanner::kAlbumChunkSize = 500; const int SubsonicLibraryScanner::kConcurrentRequests = 8; -SubsonicLibraryScanner::SubsonicLibraryScanner( - SubsonicService* service, QObject* parent) - : QObject(parent), - service_(service), - scanning_(false) { -} +SubsonicLibraryScanner::SubsonicLibraryScanner(SubsonicService* service, + QObject* parent) + : QObject(parent), service_(service), scanning_(false) {} -SubsonicLibraryScanner::~SubsonicLibraryScanner() { -} +SubsonicLibraryScanner::~SubsonicLibraryScanner() {} void SubsonicLibraryScanner::Scan() { if (scanning_) { @@ -378,8 +366,8 @@ void SubsonicLibraryScanner::Scan() { GetAlbumList(0); } -void SubsonicLibraryScanner::OnGetAlbumListFinished( - QNetworkReply* reply, int offset) { +void SubsonicLibraryScanner::OnGetAlbumListFinished(QNetworkReply* reply, + int offset) { reply->deleteLater(); QXmlStreamReader reader(reply); @@ -408,7 +396,8 @@ void SubsonicLibraryScanner::OnGetAlbumListFinished( scanning_ = false; } else { // Empty reply but we have some albums, time to start fetching songs - // Start up the maximum number of concurrent requests, finished requests get replaced with new ones + // Start up the maximum number of concurrent requests, finished requests get + // replaced with new ones for (int i = 0; i < kConcurrentRequests && !album_queue_.empty(); ++i) { GetAlbum(album_queue_.dequeue()); } @@ -478,17 +467,15 @@ void SubsonicLibraryScanner::GetAlbumList(int offset) { url.addQueryItem("size", QString::number(kAlbumChunkSize)); url.addQueryItem("offset", QString::number(offset)); QNetworkReply* reply = service_->Send(url); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(OnGetAlbumListFinished(QNetworkReply*,int)), - reply, offset); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(OnGetAlbumListFinished(QNetworkReply*, int)), reply, offset); } void SubsonicLibraryScanner::GetAlbum(const QString& id) { QUrl url = service_->BuildRequestUrl("getAlbum"); url.addQueryItem("id", id); QNetworkReply* reply = service_->Send(url); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(OnGetAlbumFinished(QNetworkReply*)), - reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(OnGetAlbumFinished(QNetworkReply*)), reply); pending_requests_.insert(reply); } diff --git a/src/internet/subsonicservice.h b/src/internet/subsonicservice.h index 47f2c0d60..d05d90ab2 100644 --- a/src/internet/subsonicservice.h +++ b/src/internet/subsonicservice.h @@ -14,14 +14,13 @@ class QXmlStreamReader; class SubsonicUrlHandler; class SubsonicLibraryScanner; -class SubsonicService : public InternetService -{ +class SubsonicService : public InternetService { Q_OBJECT Q_ENUMS(LoginState) Q_ENUMS(ApiError) public: - SubsonicService(Application* app, InternetModel *parent); + SubsonicService(Application* app, InternetModel* parent); ~SubsonicService(); enum LoginState { @@ -53,15 +52,9 @@ class SubsonicService : public InternetService ApiError_NotFound = 70, }; - enum Type { - Type_Artist = InternetModel::TypeCount, - Type_Album, - Type_Track, - }; + enum Type { Type_Artist = InternetModel::TypeCount, Type_Album, Type_Track, }; - enum Role { - Role_Id = InternetModel::RoleCount, - }; + enum Role { Role_Id = InternetModel::RoleCount, }; typedef QMap RequestOptions; @@ -74,11 +67,8 @@ class SubsonicService : public InternetService void ReloadSettings(); void Login(); - void Login( - const QString& server, - const QString& username, - const QString& password, - const bool& usesslv3); + void Login(const QString& server, const QString& username, + const QString& password, const bool& usesslv3); LoginState login_state() const { return login_state_; } @@ -88,7 +78,8 @@ class SubsonicService : public InternetService QUrl BuildRequestUrl(const QString& view) const; // Scrubs the part of the path that we re-add in BuildRequestUrl(). static QUrl ScrubUrl(const QUrl& url); - // Convenience function to reduce QNetworkRequest/QSslConfiguration boilerplate. + // Convenience function to reduce QNetworkRequest/QSslConfiguration + // boilerplate. QNetworkReply* Send(const QUrl& url); static const char* kServiceName; @@ -101,7 +92,7 @@ class SubsonicService : public InternetService static const int kMaxRedirects; - signals: +signals: void LoginStateChanged(SubsonicService::LoginState newstate); private: @@ -132,7 +123,7 @@ class SubsonicService : public InternetService bool usesslv3_; LoginState login_state_; - QString working_server_; // The actual server, possibly post-redirect + QString working_server_; // The actual server, possibly post-redirect int redirect_count_; private slots: @@ -149,7 +140,7 @@ class SubsonicLibraryScanner : public QObject { Q_OBJECT public: - SubsonicLibraryScanner(SubsonicService* service, QObject* parent = 0); + SubsonicLibraryScanner(SubsonicService* service, QObject* parent = nullptr); ~SubsonicLibraryScanner(); void Scan(); @@ -158,7 +149,7 @@ class SubsonicLibraryScanner : public QObject { static const int kAlbumChunkSize; static const int kConcurrentRequests; - signals: +signals: void ScanFinished(); private slots: @@ -178,4 +169,4 @@ class SubsonicLibraryScanner : public QObject { SongList songs_; }; -#endif // SUBSONICSERVICE_H +#endif // SUBSONICSERVICE_H diff --git a/src/internet/subsonicsettingspage.cpp b/src/internet/subsonicsettingspage.cpp index c9bf7f171..cafa9d607 100644 --- a/src/internet/subsonicsettingspage.cpp +++ b/src/internet/subsonicsettingspage.cpp @@ -5,11 +5,10 @@ #include -SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog) - : SettingsPage(dialog), - ui_(new Ui_SubsonicSettingsPage), - service_(InternetModel::Service()) -{ +SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog* dialog) + : SettingsPage(dialog), + ui_(new Ui_SubsonicSettingsPage), + service_(InternetModel::Service()) { ui_->setupUi(this); setWindowIcon(QIcon(":/providers/subsonic-32.png")); @@ -26,18 +25,15 @@ SubsonicSettingsPage::SubsonicSettingsPage(SettingsDialog *dialog) ui_->login_state->AddCredentialField(ui_->usesslv3); ui_->login_state->AddCredentialGroup(ui_->server_group); - ui_->login_state->SetAccountTypeText(tr( - "Streaming from a Subsonic server requires a valid server license after the 30-day trial period.")); + ui_->login_state->SetAccountTypeText( + tr("Streaming from a Subsonic server requires a valid server license " + "after the 30-day trial period.")); ui_->login_state->SetAccountTypeVisible(true); } -SubsonicSettingsPage::~SubsonicSettingsPage() -{ - delete ui_; -} +SubsonicSettingsPage::~SubsonicSettingsPage() { delete ui_; } -void SubsonicSettingsPage::Load() -{ +void SubsonicSettingsPage::Load() { QSettings s; s.beginGroup(SubsonicService::kSettingsGroup); @@ -46,15 +42,15 @@ void SubsonicSettingsPage::Load() ui_->password->setText(s.value("password").toString()); ui_->usesslv3->setChecked(s.value("usesslv3").toBool()); - // If the settings are complete, SubsonicService will have used them already and + // If the settings are complete, SubsonicService will have used them already + // and // we can tell the user if they worked if (ui_->server->text() != "" && ui_->username->text() != "") { LoginStateChanged(service_->login_state()); } } -void SubsonicSettingsPage::Save() -{ +void SubsonicSettingsPage::Save() { QSettings s; s.beginGroup(SubsonicService::kSettingsGroup); @@ -64,81 +60,90 @@ void SubsonicSettingsPage::Save() s.setValue("usesslv3", ui_->usesslv3->isChecked()); } -void SubsonicSettingsPage::LoginStateChanged(SubsonicService::LoginState newstate) -{ +void SubsonicSettingsPage::LoginStateChanged( + SubsonicService::LoginState newstate) { const bool logged_in = newstate == SubsonicService::LoginState_Loggedin; - ui_->login_state->SetLoggedIn(logged_in ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - QString("%1 (%2)") - .arg(ui_->username->text()) - .arg(ui_->server->text())); + ui_->login_state->SetLoggedIn( + logged_in ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + QString("%1 (%2)").arg(ui_->username->text()).arg(ui_->server->text())); ui_->login_state->SetAccountTypeVisible(!logged_in); - switch (newstate) - { - case SubsonicService::LoginState_BadServer: - ui_->login_state->SetAccountTypeText(tr("Could not connect to Subsonic, check server URL. " - "Example: http://localhost:4040/")); - break; + switch (newstate) { + case SubsonicService::LoginState_BadServer: + ui_->login_state->SetAccountTypeText( + tr("Could not connect to Subsonic, check server URL. " + "Example: http://localhost:4040/")); + break; - case SubsonicService::LoginState_BadCredentials: - ui_->login_state->SetAccountTypeText(tr("Wrong username or password.")); - break; + case SubsonicService::LoginState_BadCredentials: + ui_->login_state->SetAccountTypeText(tr("Wrong username or password.")); + break; - case SubsonicService::LoginState_OutdatedClient: - ui_->login_state->SetAccountTypeText(tr("Incompatible Subsonic REST protocol version. Client must upgrade.")); - break; + case SubsonicService::LoginState_OutdatedClient: + ui_->login_state->SetAccountTypeText(tr( + "Incompatible Subsonic REST protocol version. Client must upgrade.")); + break; - case SubsonicService::LoginState_OutdatedServer: - ui_->login_state->SetAccountTypeText(tr("Incompatible Subsonic REST protocol version. Server must upgrade.")); - break; + case SubsonicService::LoginState_OutdatedServer: + ui_->login_state->SetAccountTypeText(tr( + "Incompatible Subsonic REST protocol version. Server must upgrade.")); + break; - case SubsonicService::LoginState_Unlicensed: - ui_->login_state->SetAccountTypeText(tr("The trial period for the Subsonic server is over. " - "Please donate to get a license key. Visit subsonic.org for details.")); - break; + case SubsonicService::LoginState_Unlicensed: + ui_->login_state->SetAccountTypeText( + tr("The trial period for the Subsonic server is over. " + "Please donate to get a license key. Visit subsonic.org for " + "details.")); + break; - case SubsonicService::LoginState_OtherError: - ui_->login_state->SetAccountTypeText(tr("An unspecified error occurred.")); - break; + case SubsonicService::LoginState_OtherError: + ui_->login_state->SetAccountTypeText( + tr("An unspecified error occurred.")); + break; - case SubsonicService::LoginState_ConnectionRefused: - ui_->login_state->SetAccountTypeText(tr("Connection refused by server, check server URL. " - "Example: http://localhost:4040/")); - break; + case SubsonicService::LoginState_ConnectionRefused: + ui_->login_state->SetAccountTypeText( + tr("Connection refused by server, check server URL. " + "Example: http://localhost:4040/")); + break; - case SubsonicService::LoginState_HostNotFound: - ui_->login_state->SetAccountTypeText(tr("Host not found, check server URL. " - "Example: http://localhost:4040/")); - break; + case SubsonicService::LoginState_HostNotFound: + ui_->login_state->SetAccountTypeText( + tr("Host not found, check server URL. " + "Example: http://localhost:4040/")); + break; - case SubsonicService::LoginState_Timeout: - ui_->login_state->SetAccountTypeText(tr("Connection timed out, check server URL. " - "Example: http://localhost:4040/")); - break; + case SubsonicService::LoginState_Timeout: + ui_->login_state->SetAccountTypeText( + tr("Connection timed out, check server URL. " + "Example: http://localhost:4040/")); + break; - case SubsonicService::LoginState_SslError: - ui_->login_state->SetAccountTypeText(tr("SSL handshake error, verify server configuration. " - "SSLv3 option below may workaround some issues.")); - break; + case SubsonicService::LoginState_SslError: + ui_->login_state->SetAccountTypeText( + tr("SSL handshake error, verify server configuration. " + "SSLv3 option below may workaround some issues.")); + break; - case SubsonicService::LoginState_IncompleteCredentials: - ui_->login_state->SetAccountTypeText(tr("Incomplete configuration, please ensure all fields are populated.")); - break; + case SubsonicService::LoginState_IncompleteCredentials: + ui_->login_state->SetAccountTypeText(tr( + "Incomplete configuration, please ensure all fields are populated.")); + break; - case SubsonicService::LoginState_RedirectLimitExceeded: - ui_->login_state->SetAccountTypeText(tr("Redirect limit exceeded, verify server configuration.")); - break; + case SubsonicService::LoginState_RedirectLimitExceeded: + ui_->login_state->SetAccountTypeText( + tr("Redirect limit exceeded, verify server configuration.")); + break; - case SubsonicService::LoginState_RedirectNoUrl: - ui_->login_state->SetAccountTypeText(tr("HTTP 3xx status code received without URL, " - "verify server configuration.")); - break; + case SubsonicService::LoginState_RedirectNoUrl: + ui_->login_state->SetAccountTypeText( + tr("HTTP 3xx status code received without URL, " + "verify server configuration.")); + break; - - default: - break; + default: + break; } } @@ -146,26 +151,27 @@ void SubsonicSettingsPage::ServerEditingFinished() { QString input = ui_->server->text(); QUrl url = QUrl::fromUserInput(input); - // Veto things that don't get guessed as an HTTP URL, the result will be unhelpful + // Veto things that don't get guessed as an HTTP URL, the result will be + // unhelpful if (!url.scheme().startsWith("http")) { return; } - // If the user specified a /rest location, remove it since we're going to re-add it later + // If the user specified a /rest location, remove it since we're going to + // re-add it later url = SubsonicService::ScrubUrl(url); ui_->server->setText(url.toString()); qLog(Debug) << "URL fixed:" << input << "to" << url; } -void SubsonicSettingsPage::Login() -{ +void SubsonicSettingsPage::Login() { ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); - service_->Login(ui_->server->text(), ui_->username->text(), ui_->password->text(), ui_->usesslv3->isChecked()); + service_->Login(ui_->server->text(), ui_->username->text(), + ui_->password->text(), ui_->usesslv3->isChecked()); } -void SubsonicSettingsPage::Logout() -{ +void SubsonicSettingsPage::Logout() { ui_->username->setText(""); ui_->password->setText(""); } diff --git a/src/internet/subsonicsettingspage.h b/src/internet/subsonicsettingspage.h index 07579c400..111f43140 100644 --- a/src/internet/subsonicsettingspage.h +++ b/src/internet/subsonicsettingspage.h @@ -6,12 +6,11 @@ class Ui_SubsonicSettingsPage; -class SubsonicSettingsPage : public SettingsPage -{ +class SubsonicSettingsPage : public SettingsPage { Q_OBJECT public: - SubsonicSettingsPage(SettingsDialog *dialog); + SubsonicSettingsPage(SettingsDialog* dialog); ~SubsonicSettingsPage(); void Load(); @@ -30,4 +29,4 @@ class SubsonicSettingsPage : public SettingsPage SubsonicService* service_; }; -#endif // SUBSONICSETTINGSPAGE_H +#endif // SUBSONICSETTINGSPAGE_H diff --git a/src/internet/subsonicurlhandler.cpp b/src/internet/subsonicurlhandler.cpp index 0e1e6fe5c..ba348868a 100644 --- a/src/internet/subsonicurlhandler.cpp +++ b/src/internet/subsonicurlhandler.cpp @@ -1,10 +1,9 @@ #include "subsonicservice.h" #include "subsonicurlhandler.h" -SubsonicUrlHandler::SubsonicUrlHandler(SubsonicService* service, QObject* parent) - : UrlHandler(parent), - service_(service) { -} +SubsonicUrlHandler::SubsonicUrlHandler(SubsonicService* service, + QObject* parent) + : UrlHandler(parent), service_(service) {} UrlHandler::LoadResult SubsonicUrlHandler::StartLoading(const QUrl& url) { if (service_->login_state() != SubsonicService::LoginState_Loggedin) diff --git a/src/internet/subsonicurlhandler.h b/src/internet/subsonicurlhandler.h index 6d820f6fc..0b5117d5c 100644 --- a/src/internet/subsonicurlhandler.h +++ b/src/internet/subsonicurlhandler.h @@ -14,10 +14,10 @@ class SubsonicUrlHandler : public UrlHandler { QString scheme() const { return "subsonic"; } QIcon icon() const { return QIcon(":providers/subsonic-32.png"); } LoadResult StartLoading(const QUrl& url); - //LoadResult LoadNext(const QUrl& url); + // LoadResult LoadNext(const QUrl& url); private: SubsonicService* service_; }; -#endif // SUBSONICURLHANDLER_H +#endif // SUBSONICURLHANDLER_H diff --git a/src/internet/ubuntuoneauthenticator.cpp b/src/internet/ubuntuoneauthenticator.cpp deleted file mode 100644 index 8091fd0af..000000000 --- a/src/internet/ubuntuoneauthenticator.cpp +++ /dev/null @@ -1,142 +0,0 @@ -#include "ubuntuoneauthenticator.h" - -#include - -#include -#include -#include -#include - -#include - -#include "core/closure.h" -#include "core/logging.h" -#include "core/network.h" -#include "core/timeconstants.h" - -namespace { -static const char* kUbuntuOneEndpoint = - "https://login.ubuntu.com/api/1.0/authentications"; -static const char* kTokenNameTemplate = "Ubuntu One @ %1 [%2]"; -static const char* kOAuthSSOFinishedEndpoint = - "https://one.ubuntu.com/oauth/sso-finished-so-get-tokens/"; -static const char* kOAuthHeaderPrefix = "OAuth realm=\"\", "; -} - -UbuntuOneAuthenticator::UbuntuOneAuthenticator(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - success_(false) { -} - -void UbuntuOneAuthenticator::StartAuthorisation( - const QString& email, - const QString& password) { - QUrl url(kUbuntuOneEndpoint); - url.addQueryItem("ws.op", "authenticate"); - QString token_name = QString(kTokenNameTemplate).arg( - QHostInfo::localHostName(), - QCoreApplication::applicationName()); - url.addQueryItem("token_name", token_name); - - QByteArray authentication = QString(email + ":" + password).toAscii().toBase64(); - QString authorisation = - QString("Basic %1").arg(QString::fromAscii(authentication)); - - QNetworkRequest request(url); - request.setRawHeader("Authorization", authorisation.toAscii()); - request.setRawHeader("Accept", "application/json"); - - QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(AuthorisationFinished(QNetworkReply*)), reply); - - qLog(Debug) << url; - qLog(Debug) << authorisation; -} - -void UbuntuOneAuthenticator::AuthorisationFinished(QNetworkReply* reply) { - reply->deleteLater(); - - QByteArray data = reply->readAll(); - qLog(Debug) << data; - - QJson::Parser parser; - bool ok = false; - QVariant json = parser.parse(data, &ok); - if (!ok) { - qLog(Error) << "Failed to authenticate to Ubuntu One:" << parser.errorString(); - emit Finished(); - return; - } - - QVariantMap auth_info = json.toMap(); - consumer_key_ = auth_info["consumer_key"].toString(); - consumer_secret_ = auth_info["consumer_secret"].toString(); - token_ = auth_info["token"].toString(); - token_secret_ = auth_info["token_secret"].toString(); - - CopySSOTokens(); -} - -QByteArray UbuntuOneAuthenticator::GenerateAuthorisationHeader( - const QString& consumer_key, - const QString& consumer_secret, - const QString& token, - const QString& token_secret) { - typedef QPair Param; - QString timestamp = QString::number(time(NULL)); - QList parameters; - parameters << Param("oauth_nonce", QString::number(qrand())) - << Param("oauth_timestamp", timestamp) - << Param("oauth_version", "1.0") - << Param("oauth_consumer_key", consumer_key) - << Param("oauth_token", token) - << Param("oauth_signature_method", "PLAINTEXT"); - qSort(parameters.begin(), parameters.end()); - QStringList encoded_params; - foreach (const Param& p, parameters) { - encoded_params << QString("%1=%2").arg(p.first, p.second); - } - - QString signing_key = - consumer_secret + "&" + token_secret; - QByteArray signature = QUrl::toPercentEncoding(signing_key); - - // Construct authorisation header - parameters << Param("oauth_signature", signature); - QStringList header_params; - foreach (const Param& p, parameters) { - header_params << QString("%1=\"%2\"").arg(p.first, p.second); - } - QString authorisation_header = header_params.join(", "); - authorisation_header.prepend(kOAuthHeaderPrefix); - - return authorisation_header.toAscii(); -} - -QByteArray UbuntuOneAuthenticator::GenerateAuthorisationHeader() { - return GenerateAuthorisationHeader( - consumer_key_, - consumer_secret_, - token_, - token_secret_); -} - -void UbuntuOneAuthenticator::CopySSOTokens() { - QUrl url(kOAuthSSOFinishedEndpoint); - QNetworkRequest request(url); - request.setRawHeader("Authorization", GenerateAuthorisationHeader()); - request.setRawHeader("Accept", "application/json"); - - QNetworkReply* reply = network_->get(request); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(CopySSOTokensFinished(QNetworkReply*)), reply); -} - -void UbuntuOneAuthenticator::CopySSOTokensFinished(QNetworkReply* reply) { - reply->deleteLater(); - qLog(Debug) << reply->readAll(); - success_ = true; - emit Finished(); -} diff --git a/src/internet/ubuntuoneauthenticator.h b/src/internet/ubuntuoneauthenticator.h deleted file mode 100644 index edac507c2..000000000 --- a/src/internet/ubuntuoneauthenticator.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef UBUNTUONEAUTHENTICATOR_H -#define UBUNTUONEAUTHENTICATOR_H - -#include - -class QNetworkReply; -class NetworkAccessManager; - -class UbuntuOneAuthenticator : public QObject { - Q_OBJECT - public: - explicit UbuntuOneAuthenticator(QObject* parent = 0); - void StartAuthorisation(const QString& email, const QString& password); - - bool success() const { return success_; } - QString consumer_key() const { return consumer_key_; } - QString consumer_secret() const { return consumer_secret_; } - QString token() const { return token_; } - QString token_secret() const { return token_secret_; } - - static QByteArray GenerateAuthorisationHeader( - const QString& consumer_key, - const QString& consumer_secret, - const QString& token, - const QString& token_secret); - - signals: - void Finished(); - - private slots: - void AuthorisationFinished(QNetworkReply* reply); - void CopySSOTokensFinished(QNetworkReply* reply); - - private: - void CopySSOTokens(); - QByteArray GenerateAuthorisationHeader(); - - private: - NetworkAccessManager* network_; - - bool success_; - - QString consumer_key_; - QString consumer_secret_; - - QString token_; - QString token_secret_; -}; - -#endif // UBUNTUONEAUTHENTICATOR_H diff --git a/src/internet/ubuntuoneservice.cpp b/src/internet/ubuntuoneservice.cpp deleted file mode 100644 index 68b769096..000000000 --- a/src/internet/ubuntuoneservice.cpp +++ /dev/null @@ -1,190 +0,0 @@ -#include "ubuntuoneservice.h" - -#include -#include -#include - -#include - -#include "core/application.h" -#include "core/closure.h" -#include "core/database.h" -#include "core/logging.h" -#include "core/mergedproxymodel.h" -#include "core/network.h" -#include "core/player.h" -#include "core/timeconstants.h" -#include "core/utilities.h" -#include "globalsearch/globalsearch.h" -#include "globalsearch/librarysearchprovider.h" -#include "internet/internetmodel.h" -#include "internet/ubuntuoneauthenticator.h" -#include "internet/ubuntuoneurlhandler.h" -#include "library/librarybackend.h" -#include "playlist/playlist.h" -#include "ui/iconloader.h" - -const char* UbuntuOneService::kServiceName = "Ubuntu One"; -const char* UbuntuOneService::kSettingsGroup = "Ubuntu One"; - -namespace { -static const char* kFileStorageEndpoint = - "https://one.ubuntu.com/api/file_storage/v1"; -static const char* kVolumesEndpoint = - "https://one.ubuntu.com/api/file_storage/v1/volumes"; -static const char* kContentRoot = "https://files.one.ubuntu.com"; -static const char* kServiceId = "ubuntu_one"; -} - -UbuntuOneService::UbuntuOneService(Application* app, InternetModel* parent) - : CloudFileService( - app, parent, - kServiceName, kServiceId, - QIcon(":/providers/ubuntuone.png"), - SettingsDialog::Page_UbuntuOne) { - app_->player()->RegisterUrlHandler(new UbuntuOneUrlHandler(this, this)); - - QSettings s; - s.beginGroup(kSettingsGroup); - if (s.contains("consumer_key")) { - consumer_key_ = s.value("consumer_key").toString(); - consumer_secret_ = s.value("consumer_secret").toString(); - token_ = s.value("token").toString(); - token_secret_ = s.value("token_secret").toString(); - } -} - -bool UbuntuOneService::has_credentials() const { - return !consumer_key_.isEmpty(); -} - -void UbuntuOneService::Connect() { - if (has_credentials()) { - RequestVolumeList(); - } else { - ShowSettingsDialog(); - } -} - -QByteArray UbuntuOneService::GenerateAuthorisationHeader() { - return UbuntuOneAuthenticator::GenerateAuthorisationHeader( - consumer_key_, - consumer_secret_, - token_, - token_secret_); -} - -void UbuntuOneService::AuthenticationFinished( - UbuntuOneAuthenticator* authenticator) { - authenticator->deleteLater(); - if (!authenticator->success()) { - return; - } - - consumer_key_ = authenticator->consumer_key(); - consumer_secret_ = authenticator->consumer_secret(); - token_ = authenticator->token(); - token_secret_ = authenticator->token_secret(); - - QSettings s; - s.beginGroup(kSettingsGroup); - s.setValue("consumer_key", consumer_key_); - s.setValue("consumer_secret", consumer_secret_); - s.setValue("token", token_); - s.setValue("token_secret", token_secret_); - - RequestVolumeList(); -} - -QNetworkReply* UbuntuOneService::SendRequest(const QUrl& url) { - QNetworkRequest request(url); - request.setRawHeader("Authorization", GenerateAuthorisationHeader()); - request.setRawHeader("Accept", "application/json"); - - return network_->get(request); -} - -void UbuntuOneService::RequestVolumeList() { - QUrl volumes_url(kVolumesEndpoint); - QNetworkReply* reply = SendRequest(volumes_url); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(VolumeListRequestFinished(QNetworkReply*)), reply); -} - -void UbuntuOneService::VolumeListRequestFinished(QNetworkReply* reply) { - reply->deleteLater(); - - QJson::Parser parser; - QVariantList result = parser.parse(reply).toList(); - foreach (const QVariant& v, result) { - RequestFileList(v.toMap()["node_path"].toString()); - } -} - -void UbuntuOneService::RequestFileList(const QString& path) { - QUrl files_url(QString(kFileStorageEndpoint) + path); - files_url.addQueryItem("include_children", "true"); - - qLog(Debug) << "Sending files request" << files_url; - QNetworkReply* files_reply = SendRequest(files_url); - NewClosure(files_reply, SIGNAL(finished()), - this, SLOT(FileListRequestFinished(QNetworkReply*)), files_reply); -} - -void UbuntuOneService::FileListRequestFinished(QNetworkReply* reply) { - reply->deleteLater(); - QJson::Parser parser; - QVariantMap result = parser.parse(reply).toMap(); - - QVariantList children = result["children"].toList(); - foreach (const QVariant& c, children) { - QVariantMap child = c.toMap(); - if (child["kind"].toString() == "file") { - QString content_path = child["content_path"].toString(); - QUrl content_url(kContentRoot); - content_url.setPath(content_path); - QUrl service_url; - service_url.setScheme("ubuntuonefile"); - service_url.setPath(content_path); - - Song metadata; - metadata.set_url(service_url); - metadata.set_etag(child["hash"].toString()); - metadata.set_mtime(QDateTime::fromString( - child["when_changed"].toString(), Qt::ISODate).toTime_t()); - metadata.set_ctime(QDateTime::fromString( - child["when_created"].toString(), Qt::ISODate).toTime_t()); - metadata.set_filesize(child["size"].toInt()); - metadata.set_title(child["path"].toString().mid(1)); - MaybeAddFileToDatabase( - metadata, - GuessMimeTypeForFile(child["path"].toString().mid(1)), - content_url, - GenerateAuthorisationHeader()); - } else { - RequestFileList(child["resource_path"].toString()); - } - } -} - -QUrl UbuntuOneService::GetStreamingUrlFromSongId(const QString& song_id) { - QUrl url(kContentRoot); - url.setPath(song_id); - url.setFragment(GenerateAuthorisationHeader()); - return url; -} - -void UbuntuOneService::ShowCoverManager() { - if (!cover_manager_) { - cover_manager_.reset(new AlbumCoverManager(app_, library_backend_)); - cover_manager_->Init(); - connect(cover_manager_.get(), SIGNAL(AddToPlaylist(QMimeData*)), - SLOT(AddToPlaylist(QMimeData*))); - } - cover_manager_->show(); -} - -void UbuntuOneService::AddToPlaylist(QMimeData* mime) { - playlist_manager_->current()->dropMimeData( - mime, Qt::CopyAction, -1, 0, QModelIndex()); -} diff --git a/src/internet/ubuntuoneservice.h b/src/internet/ubuntuoneservice.h deleted file mode 100644 index c832e9ae8..000000000 --- a/src/internet/ubuntuoneservice.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef UBUNTUONESERVICE_H -#define UBUNTUONESERVICE_H - -#include "internet/cloudfileservice.h" - -#include "core/tagreaderclient.h" - -class QNetworkReply; -class UbuntuOneAuthenticator; - -class UbuntuOneService : public CloudFileService { - Q_OBJECT - public: - UbuntuOneService(Application* app, InternetModel* parent); - - static const char* kServiceName; - static const char* kSettingsGroup; - - QUrl GetStreamingUrlFromSongId(const QString& song_id); - - private slots: - void AuthenticationFinished(UbuntuOneAuthenticator* authenticator); - void FileListRequestFinished(QNetworkReply* reply); - void ShowCoverManager(); - void AddToPlaylist(QMimeData* mime); - void VolumeListRequestFinished(QNetworkReply* reply); - - private: - void Connect(); - QNetworkReply* SendRequest(const QUrl& url); - void RequestVolumeList(); - void RequestFileList(const QString& path); - bool has_credentials() const; - - private: - QByteArray GenerateAuthorisationHeader(); - - QString consumer_key_; - QString consumer_secret_; - QString token_; - QString token_secret_; -}; - -#endif // UBUNTUONESERVICE_H diff --git a/src/internet/ubuntuonesettingspage.cpp b/src/internet/ubuntuonesettingspage.cpp deleted file mode 100644 index 957b58c5f..000000000 --- a/src/internet/ubuntuonesettingspage.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "ubuntuonesettingspage.h" - -#include "ui_ubuntuonesettingspage.h" - -#include "core/application.h" -#include "core/closure.h" -#include "core/logging.h" -#include "internet/internetmodel.h" -#include "internet/ubuntuoneauthenticator.h" -#include "internet/ubuntuoneservice.h" - -#include - -UbuntuOneSettingsPage::UbuntuOneSettingsPage(SettingsDialog* parent) - : SettingsPage(parent), - ui_(new Ui::UbuntuOneSettingsPage), - service_(dialog()->app()->internet_model()->Service()), - authenticated_(false) { - ui_->setupUi(this); - - ui_->login_state->AddCredentialField(ui_->username); - ui_->login_state->AddCredentialField(ui_->password); - ui_->login_state->AddCredentialGroup(ui_->login_container); - - connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(LogoutClicked())); - connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(LoginClicked())); - connect(ui_->login_button, SIGNAL(clicked()), SLOT(LoginClicked())); -} - -void UbuntuOneSettingsPage::Load() { - QSettings s; - s.beginGroup(UbuntuOneService::kSettingsGroup); - - const QString user_email = s.value("user_email").toString(); - if (!user_email.isEmpty()) { - ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, user_email); - ui_->username->setText(user_email); - } -} - -void UbuntuOneSettingsPage::Save() { -} - -void UbuntuOneSettingsPage::LoginClicked() { - const QString username = ui_->username->text(); - const QString password = ui_->password->text(); - ui_->password->clear(); - - UbuntuOneAuthenticator* authenticator = new UbuntuOneAuthenticator; - authenticator->StartAuthorisation(username, password); - NewClosure(authenticator, SIGNAL(Finished()), - this, SLOT(Connected(UbuntuOneAuthenticator*)), authenticator); - NewClosure(authenticator, SIGNAL(Finished()), - service_, SLOT(AuthenticationFinished(UbuntuOneAuthenticator*)), - authenticator); - - ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); -} - -void UbuntuOneSettingsPage::LogoutClicked() { - QSettings s; - s.beginGroup(UbuntuOneService::kSettingsGroup); - s.remove("user_email"); - s.remove("consumer_key"); - s.remove("consumer_secret"); - s.remove("token"); - s.remove("token_secret"); - - ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut); -} - -void UbuntuOneSettingsPage::Connected(UbuntuOneAuthenticator* authenticator) { - if (!authenticator->success()) { - ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut); - QMessageBox::warning(this, tr("Authentication failed"), - tr("Your username or password was incorrect.")); - return; - } - - ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, ui_->username->text()); - authenticated_ = true; - - QSettings s; - s.beginGroup(UbuntuOneService::kSettingsGroup); - s.setValue("user_email", ui_->username->text()); -} diff --git a/src/internet/ubuntuonesettingspage.h b/src/internet/ubuntuonesettingspage.h deleted file mode 100644 index c0ab99467..000000000 --- a/src/internet/ubuntuonesettingspage.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef UBUNTUONESETTINGSPAGE_H -#define UBUNTUONESETTINGSPAGE_H - -#include "ui/settingspage.h" - -class UbuntuOneAuthenticator; -class UbuntuOneService; -class Ui_UbuntuOneSettingsPage; - -class UbuntuOneSettingsPage : public SettingsPage { - Q_OBJECT - public: - UbuntuOneSettingsPage(SettingsDialog* parent = 0); - - void Load(); - void Save(); - - private slots: - void LoginClicked(); - void LogoutClicked(); - void Connected(UbuntuOneAuthenticator* authenticator); - - private: - Ui_UbuntuOneSettingsPage* ui_; - UbuntuOneService* service_; - - bool authenticated_; -}; - -#endif // UBUNTUONESETTINGSPAGE_H diff --git a/src/internet/ubuntuoneurlhandler.cpp b/src/internet/ubuntuoneurlhandler.cpp deleted file mode 100644 index 972039d63..000000000 --- a/src/internet/ubuntuoneurlhandler.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "ubuntuoneurlhandler.h" - -#include "ubuntuoneservice.h" - -UbuntuOneUrlHandler::UbuntuOneUrlHandler( - UbuntuOneService* service, - QObject* parent) - : UrlHandler(parent), - service_(service) { -} - -UrlHandler::LoadResult UbuntuOneUrlHandler::StartLoading(const QUrl& url) { - QString file_id = url.path(); - QUrl real_url = service_->GetStreamingUrlFromSongId(file_id); - return LoadResult(url, LoadResult::TrackAvailable, real_url); -} diff --git a/src/internet/ubuntuoneurlhandler.h b/src/internet/ubuntuoneurlhandler.h deleted file mode 100644 index e36396148..000000000 --- a/src/internet/ubuntuoneurlhandler.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef UBUNTUONEURLHANDLER_H -#define UBUNTUONEURLHANDLER_H - -#include "core/urlhandler.h" - -class UbuntuOneService; - -class UbuntuOneUrlHandler : public UrlHandler { - Q_OBJECT - public: - UbuntuOneUrlHandler(UbuntuOneService* service, QObject* parent = 0); - - QString scheme() const { return "ubuntuonefile"; } - QIcon icon() const { return QIcon(":providers/ubuntuone.png"); } - LoadResult StartLoading(const QUrl& url); - - private: - UbuntuOneService* service_; -}; - -#endif // UBUNTUONEURLHANDLER_H diff --git a/src/internet/vkconnection.cpp b/src/internet/vkconnection.cpp new file mode 100644 index 000000000..7d50580d5 --- /dev/null +++ b/src/internet/vkconnection.cpp @@ -0,0 +1,207 @@ +/* This file is part of Clementine. + Copyright 2014, Vlad Maltsev + + 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 . +*/ + +#include +#include + +#include + +#include "core/closure.h" +#include "core/logging.h" +#include "internet/localredirectserver.h" +#include "vreen/utils.h" + +#include "vkservice.h" + +static const QUrl kVkOAuthEndpoint("https://oauth.vk.com/authorize"); +static const QUrl kVkOAuthTokenEndpoint("https://oauth.vk.com/access_token"); +static const QUrl kApiUrl("https://api.vk.com/method/"); +static const char *kScopeNames[] = { "notify", "friends", "photos", "audio", + "video", "docs", "notes", "pages", "status", "offers", "questions", "wall", + "groups", "messages", "notifications", "stats", "ads", "offline" }; + +static const QString kAppID = "3421812"; +static const QString kAppSecret = "cY7KMyX46Fq3nscZlbdo"; +static const VkConnection::Scopes kScopes = + VkConnection::Offline | + VkConnection::Audio | + VkConnection::Friends | + VkConnection::Groups; + +static const char* kSettingsGroup = "Vk.com/oauth"; + +VkConnection::VkConnection(QObject* parent) + : Connection(parent), + state_(Vreen::Client::StateOffline), + expires_in_(0), + uid_(0) { + loadToken(); +} + +VkConnection::~VkConnection() { +} + +void VkConnection::connectToHost(const QString& login, const QString& password) { + Q_UNUSED(login) + Q_UNUSED(password) + if (hasAccount()) { + setConnectionState(Vreen::Client::StateOnline); + } else { + setConnectionState(Vreen::Client::StateConnecting); + requestAccessToken(); + } +} + +void VkConnection::disconnectFromHost() { + clear(); + setConnectionState(Vreen::Client::StateOffline); +} + +void VkConnection::clear() { + access_token_.clear(); + expires_in_ = 0; + uid_ = 0; + + QSettings s; + s.beginGroup(kSettingsGroup); + s.remove("access_token"); + s.remove("expires_in"); + s.remove("uid"); +} + +bool VkConnection::hasAccount() { + return !access_token_.isNull() + && (expires_in_ > static_cast(QDateTime::currentDateTime().toTime_t())); +} + +QNetworkRequest VkConnection::makeRequest(const QString& method, const QVariantMap& args) { + QUrl url = kApiUrl; + url.setPath(url.path() % QLatin1Literal("/") % method); + for (auto it = args.constBegin(); it != args.constEnd(); ++it) { + url.addQueryItem(it.key(), + it.value().toString()); + } + url.addEncodedQueryItem("access_token", access_token_); + return QNetworkRequest(url); +} + +void VkConnection::decorateRequest(QNetworkRequest& request) { + QUrl url = request.url(); + url.addEncodedQueryItem("access_token", access_token_); + request.setUrl(url); +} + +void VkConnection::requestAccessToken() { + LocalRedirectServer* server = new LocalRedirectServer(this); + server->Listen(); + + QUrl url = kVkOAuthEndpoint; + url.addQueryItem("client_id", kAppID); + url.addQueryItem("scope", + Vreen::flagsToStrList(kScopes, kScopeNames).join(",")); + url.addQueryItem("redirect_uri", server->url().toString()); + url.addQueryItem("response_type", "code"); + + qLog(Debug) << "Try to login to Vk.com" << url; + + NewClosure(server, SIGNAL(Finished()), + this, SLOT(codeRecived(LocalRedirectServer*, QUrl)), + server, server->url()); + QDesktopServices::openUrl(url); +} + +void VkConnection::codeRecived(LocalRedirectServer* server, QUrl redirect_uri) { + if (server->request_url().hasQueryItem("code")) { + code_ = server->request_url().queryItemValue("code").toUtf8(); + QUrl url = kVkOAuthTokenEndpoint; + url.addQueryItem("client_id", kAppID); + url.addQueryItem("client_secret", kAppSecret); + url.addQueryItem("code", QString::fromUtf8(code_)); + url.addQueryItem("redirect_uri", redirect_uri.toString()); + qLog(Debug) << "Getting access token" << url; + + QNetworkRequest request(url); + QNetworkReply* reply = network_.get(request); + + NewClosure(reply, SIGNAL(finished()), this, + SLOT(accessTokenRecived(QNetworkReply*)), reply); + } else { + qLog(Error) << "Login failed" << server->request_url(); + clear(); + emit connectionStateChanged(Vreen::Client::StateOffline); + } +} + +void VkConnection::accessTokenRecived(QNetworkReply* reply) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) != 200) { + qLog(Error) << "Failed to get access token" << reply->readAll(); + emit setConnectionState(Vreen::Client::StateOffline); + clear(); + return; + } + + QJson::Parser parser; + bool ok = false; + QByteArray reply_data = reply->readAll(); + QVariantMap result = parser.parse(reply_data, &ok).toMap(); + if (!ok) { + qLog(Error) << "Failed to parse oauth reply" << reply_data; + emit setConnectionState(Vreen::Client::StateOffline); + clear(); + return; + } + qLog(Debug) << result; + + access_token_ = result["access_token"].toByteArray(); + expires_in_ = result["expires_in"].toUInt(); + uid_ = result["user_id"].toInt(); + + if (expires_in_) { + expires_in_ += QDateTime::currentDateTime().toTime_t(); + } else { + expires_in_ += QDateTime::currentDateTime().addMonths(1).toTime_t(); + } + qLog(Debug) << "Access token expires in" << expires_in_; + + saveToken(); + setConnectionState(Vreen::Client::StateOnline); + + reply->deleteLater(); +} + +void VkConnection::setConnectionState(Vreen::Client::State state) { + if (state != state_) { + state_ = state; + emit connectionStateChanged(state); + } +} + +void VkConnection::saveToken() { + QSettings s; + s.beginGroup(kSettingsGroup); + s.setValue("access_token", access_token_); + s.setValue("expires_in", QVariant::fromValue(expires_in_)); + s.setValue("uid", uid_); +} + +void VkConnection::loadToken() { + QSettings s; + s.beginGroup(kSettingsGroup); + access_token_ = s.value("access_token").toByteArray(); + expires_in_ = s.value("expires_in").toUInt(); + uid_ = s.value("uid").toInt(); +} diff --git a/src/internet/vkconnection.h b/src/internet/vkconnection.h new file mode 100644 index 000000000..1ce81e7fb --- /dev/null +++ b/src/internet/vkconnection.h @@ -0,0 +1,94 @@ +/* This file is part of Clementine. + Copyright 2014, Vlad Maltsev + + 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 . +*/ + +#ifndef VKCONNECTION_H +#define VKCONNECTION_H + +#include "vreen/client.h" +#include "vreen/connection.h" + +class LocalRedirectServer; + +class VkConnection : public Vreen::Connection { + Q_OBJECT + Q_ENUMS(DisplayType) + Q_FLAGS(Scopes) + +public: + enum DisplayType { + Page, + Popup, + Touch, + Wap + }; + enum Scope { + Notify = 0x1, + Friends = 0x2, + Photos = 0x4, + Audio = 0x8, + Video = 0x10, + Docs = 0x20, + Notes = 0x40, + Pages = 0x80, + Status = 0x100, + Offers = 0x200, + Questions = 0x400, + Wall = 0x800, + Groups = 0x1000, + Messages = 0x2000, + Notifications = 0x4000, + Stats = 0x8000, + Ads = 0x10000, + Offline = 0x20000 + }; + Q_DECLARE_FLAGS(Scopes, Scope) + + explicit VkConnection(QObject* parent = 0); + ~VkConnection(); + + void connectToHost(const QString& login, const QString& password); + void disconnectFromHost(); + Vreen::Client::State connectionState() const { return state_; } + int uid() const { return uid_; } + void clear(); + bool hasAccount(); + +protected: + QNetworkRequest makeRequest(const QString& method, + const QVariantMap& args = QVariantMap()); + void decorateRequest(QNetworkRequest& request); + +private slots: + void codeRecived(LocalRedirectServer* server, QUrl redirect_uri); + void accessTokenRecived(QNetworkReply* reply); + +private: + void requestAccessToken(); + void setConnectionState(Vreen::Client::State state); + void saveToken(); + void loadToken(); + QNetworkAccessManager network_; + Vreen::Client::State state_; + QByteArray code_; + QByteArray access_token_; + time_t expires_in_; + int uid_; +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(VkConnection::Scopes) + +#endif // VKCONNECTION_H diff --git a/src/internet/vkmusiccache.cpp b/src/internet/vkmusiccache.cpp new file mode 100644 index 000000000..05d4b69a6 --- /dev/null +++ b/src/internet/vkmusiccache.cpp @@ -0,0 +1,213 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ +#include "vkmusiccache.h" +#include "vkservice.h" + +#include +#include + +#include "core/application.h" +#include "core/logging.h" +#include "core/taskmanager.h" + +VkMusicCache::VkMusicCache(Application* app, VkService* service) + : QObject(service), + app_(app), + service_(service), + current_cashing_index(0), + is_downloading(false), + is_aborted(false), + task_id(0), + file_(NULL), + network_manager_(new QNetworkAccessManager), + reply_(NULL) { +} + +QUrl VkMusicCache::Get(const QUrl& url) { + QString cached_filename = CachedFilename(url); + QUrl result; + if (InCache(cached_filename)) { + qLog(Info) << "Use cashed file" << cached_filename; + result = QUrl::fromLocalFile(cached_filename); + } else { + result = service_->GetSongPlayUrl(url, false); + + if (service_->isCachingEnabled()) { + AddToQueue(cached_filename, result); + current_cashing_index = queue_.size(); + } + } + return result; +} + +void VkMusicCache::ForceCache(const QUrl& url) { + AddToQueue(CachedFilename(url), service_->GetSongPlayUrl(url)); +} + +void VkMusicCache::BreakCurrentCaching() { + if (current_cashing_index > 0) { + // Current song in queue + queue_.removeAt(current_cashing_index - 1); + } else if (current_cashing_index == 0) { + // Current song is downloading + if (reply_) { + reply_->abort(); + is_aborted = true; + } + } +} + +/*** +* Queue operations +*/ + +void VkMusicCache::AddToQueue(const QString& filename, const QUrl& download_url) { + DownloadItem item; + item.filename = filename; + item.url = download_url; + queue_.push_back(item); + DownloadNext(); +} + +/*** +* Downloading +*/ + +void VkMusicCache::DownloadNext() { + if (is_downloading || queue_.isEmpty()) { + return; + } else { + current_download = queue_.first(); + queue_.pop_front(); + current_cashing_index--; + + // Check file path and file existance first + if (QFile::exists(current_download.filename)) { + qLog(Warning) << "Tried to overwrite already cached file" << current_download.filename; + return; + } + + // Create temporarry file we download to. + if (file_) { + qLog(Warning) << "QFile" << file_->fileName() << "is not null"; + delete file_; + file_ = NULL; + } + + file_ = new QTemporaryFile; + if (!file_->open(QFile::WriteOnly)) { + qLog(Warning) << "Can not create temporary file" << file_->fileName() + << "Download right away to" << current_download.filename; + } + + // Start downloading + is_aborted = false; + is_downloading = true; + task_id = app_->task_manager()-> + StartTask(tr("Caching %1") + .arg(QFileInfo(current_download.filename).baseName())); + reply_ = network_manager_->get(QNetworkRequest(current_download.url)); + connect(reply_, SIGNAL(finished()), SLOT(Downloaded())); + connect(reply_, SIGNAL(readyRead()), SLOT(DownloadReadyToRead())); + connect(reply_, SIGNAL(downloadProgress(qint64, qint64)), SLOT(DownloadProgress(qint64, qint64))); + qLog(Info)<< "Start cashing" << current_download.filename << "from" << current_download.url; + } +} + +void VkMusicCache::DownloadProgress(qint64 bytesReceived, qint64 bytesTotal) { + if (bytesTotal) { + int progress = qRound(100 * bytesReceived / bytesTotal); + app_->task_manager()->SetTaskProgress(task_id, progress, 100); + } +} + +void VkMusicCache::DownloadReadyToRead() { + if (file_) { + file_->write(reply_->readAll()); + } else { + qLog(Warning) << "Tried to write recived song to not created file"; + } +} + +void VkMusicCache::Downloaded() { + app_->task_manager()->SetTaskFinished(task_id); + if (is_aborted || reply_->error()) { + if (reply_->error()) { + qLog(Info) << "Downloading failed" << reply_->errorString(); + } + } else { + DownloadReadyToRead(); // Save all recent recived data. + + QString path = service_->cacheDir(); + + if (file_->size() > 0) { + QDir(path).mkpath(QFileInfo(current_download.filename).path()); + if (file_->copy(current_download.filename)) { + qLog(Info) << "Cached" << current_download.filename; + } else { + qLog(Error) << "Unable to save" << current_download.filename + << ":" << file_->errorString(); + } + } else { + qLog(Error) << "File" << current_download.filename << "is empty"; + } + } + + delete file_; + file_ = NULL; + + reply_->deleteLater(); + reply_ = NULL; + + is_downloading = false; + DownloadNext(); +} + +/*** +* Utils +*/ + +bool VkMusicCache::InCache(const QString& filename) { + return QFile::exists(filename); +} + +bool VkMusicCache::InCache(const QUrl& url) { + return InCache(CachedFilename(url)); +} + +QString VkMusicCache::CachedFilename(const QUrl& url) { + QStringList args = url.path().split('/'); + + QString cache_filename; + if (args.size() == 4) { + cache_filename = service_->cacheFilename(); + cache_filename.replace("%artist", args[2]); + cache_filename.replace("%title", args[3]); + } else { + qLog(Warning) << "Song url with args" << args << "does not contain artist and title" + << "use id as file name for cache."; + cache_filename = args[1]; + } + + QString cache_dir = service_->cacheDir(); + if (cache_dir.isEmpty()) { + qLog(Warning) << "Cache dir not defined"; + return ""; + } + // TODO(Vk): Maybe use extenstion from link? Seems it's always mp3. + return cache_dir+QDir::separator()+cache_filename+".mp3"; +} diff --git a/src/internet/vkmusiccache.h b/src/internet/vkmusiccache.h new file mode 100644 index 000000000..e85cfa052 --- /dev/null +++ b/src/internet/vkmusiccache.h @@ -0,0 +1,78 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#ifndef VKMUSICCACHE_H +#define VKMUSICCACHE_H + +#include +#include +#include +#include +#include + +class VkService; +class Application; + +class VkMusicCache : public QObject { + Q_OBJECT + +public: + explicit VkMusicCache(Application* app, VkService* service); + ~VkMusicCache() {} + // Return file path if file in cache otherwise + // return internet url and add song to caching queue + QUrl Get(const QUrl& url); + void ForceCache(const QUrl& url); + void BreakCurrentCaching(); + bool InCache(const QUrl& url); + +private slots: + bool InCache(const QString& filename); + void AddToQueue(const QString& filename, const QUrl& download_url); + void DownloadNext(); + void DownloadProgress(qint64 bytesReceived, qint64 bytesTotal); + void DownloadReadyToRead(); + void Downloaded(); + +private: + struct DownloadItem { + QString filename; + QUrl url; + + bool operator ==(const DownloadItem& rhv) { + return filename == rhv.filename; + } + }; + + QString CachedFilename(const QUrl& url); + + Application* app_; + VkService* service_; + QList queue_; + // Contain index of current song in queue, need for removing if song was skipped. + // Is zero if song downloading now, and less that zero if current song not caching or cached. + int current_cashing_index; + DownloadItem current_download; + bool is_downloading; + bool is_aborted; + int task_id; + QFile* file_; + QNetworkAccessManager* network_manager_; + QNetworkReply* reply_; +}; + +#endif // VKMUSICCACHE_H diff --git a/src/internet/vksearchdialog.cpp b/src/internet/vksearchdialog.cpp new file mode 100644 index 000000000..19533156b --- /dev/null +++ b/src/internet/vksearchdialog.cpp @@ -0,0 +1,198 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#include +#include + +#include "vkservice.h" + +#include "vksearchdialog.h" +#include "ui_vksearchdialog.h" + +VkSearchDialog::VkSearchDialog(VkService* service, QWidget* parent) + : QDialog(parent), + ui(new Ui::VkSearchDialog), + service_(service), + last_search_(SearchID(SearchID::UserOrGroup)) { + ui->setupUi(this); + + timer = new QTimer(this); + timer->setSingleShot(true); + timer->setInterval(100); + connect(timer, SIGNAL(timeout()), SLOT(suggest())); + connect(ui->searchLine, SIGNAL(textChanged(QString)), timer, SLOT(start())); + + popup = new QTreeWidget(this); + popup->setColumnCount(2); + popup->setUniformRowHeights(true); + popup->setRootIsDecorated(false); + popup->setEditTriggers(QTreeWidget::NoEditTriggers); + popup->setSelectionBehavior(QTreeWidget::SelectRows); + popup->setFrameStyle(QFrame::Box | QFrame::Plain); + popup->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + popup->header()->hide(); + popup->installEventFilter(this); + popup->setMouseTracking(true); + + popup->setWindowFlags(Qt::Popup); + popup->setFocusPolicy(Qt::NoFocus); + popup->setFocusProxy(parent); + + connect(popup, SIGNAL(itemSelectionChanged()), + SLOT(selectionChanged())); + connect(popup, SIGNAL(clicked(QModelIndex)), + SLOT(selected())); + + connect(this, SIGNAL(Find(QString)), service_, SLOT(FindUserOrGroup(QString))); + connect(service_, SIGNAL(UserOrGroupSearchResult(SearchID, MusicOwnerList)), + this, SLOT(ReceiveResults(SearchID, MusicOwnerList))); + + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); +} + +VkSearchDialog::~VkSearchDialog() { + delete ui; + delete popup; +} + +void VkSearchDialog::suggest() { + emit Find(ui->searchLine->text()); +} + +void VkSearchDialog::selected() { + selectionChanged(); + ui->searchLine->setText(selected_.name()); + timer->stop(); + popup->hide(); +} + +void VkSearchDialog::ReceiveResults(const SearchID& id, const MusicOwnerList& owners) { + if (id.id() > last_search_.id()) { + popup->setUpdatesEnabled(false); + popup->clear(); + + if (owners.count() > 0) { + for (const MusicOwner &own : owners) { + popup->addTopLevelItem(createItem(own)); + } + } else { + popup->addTopLevelItem(new QTreeWidgetItem(QStringList(tr("Nothing found")))); + } + + popup->setCurrentItem(popup->topLevelItem(0)); + + popup->resizeColumnToContents(0); + int ch = popup->columnWidth(0); + if (ch > 0.8*ui->searchLine->width()) { + popup->setColumnWidth(0, qRound(0.8*ui->searchLine->width())); + } + popup->resizeColumnToContents(1); + popup->adjustSize(); + popup->setUpdatesEnabled(true); + + int elems = (owners.count() > 0) ? owners.count() : 1; + int h = popup->sizeHintForRow(0) * qMin(10, elems) + 3; + + popup->resize(ui->searchLine->width(), h); + + QPoint relpos = ui->searchLine->pos() + QPoint(0, ui->searchLine->height()); + popup->move(mapToGlobal(relpos)); + popup->setFocus(); + popup->show(); + } +} + +void VkSearchDialog::showEvent(QShowEvent*) { + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); + selected_ = MusicOwner(); + ui->searchLine->clear(); +} + +void VkSearchDialog::selectionChanged() { + if (popup->selectedItems().size() > 0) { + QTreeWidgetItem* sel = popup->selectedItems()[0]; + selected_ = sel->data(0, Qt::UserRole).value(); + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(selected_.id() != 0); + ui->buttonBox->button(QDialogButtonBox::Ok)->setDefault(true); + } +} + +MusicOwner VkSearchDialog::found() const { + return selected_; +} + +bool VkSearchDialog::eventFilter(QObject* obj, QEvent* ev) { + if (obj != popup) + return false; + + if (ev->type() == QEvent::MouseButtonPress) { + popup->hide(); + ui->searchLine->setFocus(); + return true; + } + + if (ev->type() == QEvent::KeyPress) { + bool consumed = false; + int key = static_cast(ev)->key(); + + switch (key) { + case Qt::Key_Enter: + case Qt::Key_Return: + selected(); + break; + + case Qt::Key_Escape: + ui->searchLine->setFocus(); + popup->hide(); + consumed = true; + break; + + case Qt::Key_Up: + case Qt::Key_Down: + case Qt::Key_Home: + case Qt::Key_End: + case Qt::Key_PageUp: + case Qt::Key_PageDown: + break; + + default: + ui->searchLine->setFocus(); + ui->searchLine->event(ev); + break; + } + + return consumed; + } + + return false; +} + +QTreeWidgetItem* VkSearchDialog::createItem(const MusicOwner& own) { + QTreeWidgetItem* item = new QTreeWidgetItem(popup); + item->setText(0, own.name()); + if (own.id() > 0) { + item->setIcon(0, QIcon(":vk/user.png")); + } else { + item->setIcon(0, QIcon(":vk/group.png")); + } + item->setData(0, Qt::UserRole, QVariant::fromValue(own)); + item->setText(1, QString::number(own.song_count())); + item->setTextAlignment(1, Qt::AlignRight); + item->setTextColor(1, palette().color(QPalette::WindowText)); + return item; +} diff --git a/src/internet/vksearchdialog.h b/src/internet/vksearchdialog.h new file mode 100644 index 000000000..cff826ff7 --- /dev/null +++ b/src/internet/vksearchdialog.h @@ -0,0 +1,65 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#ifndef VKSEARCHDIALOG_H +#define VKSEARCHDIALOG_H + +#include +#include +#include + +#include "vkservice.h" + +namespace Ui { +class VkSearchDialog; +} + +class VkSearchDialog : public QDialog { + Q_OBJECT + +public: + explicit VkSearchDialog(VkService* service, QWidget* parent = 0); + ~VkSearchDialog(); + MusicOwner found() const; + +signals: + void Find(const QString& query); + +public slots: + void ReceiveResults(const SearchID& id, const MusicOwnerList& owners); + +protected: + void showEvent(QShowEvent*); + +private slots: + void selectionChanged(); + void suggest(); + void selected(); + +private: + bool eventFilter(QObject* obj, QEvent* ev); + QTreeWidgetItem* createItem(const MusicOwner& own); + + Ui::VkSearchDialog* ui; + MusicOwner selected_; + VkService* service_; + SearchID last_search_; + QTreeWidget* popup; + QTimer* timer; +}; + +#endif // VKSEARCHDIALOG_H diff --git a/src/internet/vksearchdialog.ui b/src/internet/vksearchdialog.ui new file mode 100644 index 000000000..cf7ae1773 --- /dev/null +++ b/src/internet/vksearchdialog.ui @@ -0,0 +1,67 @@ + + + VkSearchDialog + + + + 0 + 0 + 418 + 78 + + + + Dialog + + + + + + + + + Qt::Vertical + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + VkSearchDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + VkSearchDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/internet/vkservice.cpp b/src/internet/vkservice.cpp new file mode 100644 index 000000000..286eb12c7 --- /dev/null +++ b/src/internet/vkservice.cpp @@ -0,0 +1,1259 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#include "vkservice.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "core/application.h" +#include "core/closure.h" +#include "core/logging.h" +#include "core/mergedproxymodel.h" +#include "core/player.h" +#include "core/timeconstants.h" +#include "core/utilities.h" +#include "ui/iconloader.h" +#include "widgets/didyoumean.h" + +#include "globalsearch/globalsearch.h" +#include "internetmodel.h" +#include "internetplaylistitem.h" +#include "searchboxwidget.h" + +#include "vreen/audio.h" +#include "vreen/contact.h" +#include "vreen/roster.h" + +#include "globalsearch/vksearchprovider.h" +#include "vkmusiccache.h" +#include "vksearchdialog.h" + +const char* VkService::kServiceName = "Vk.com"; +const char* VkService::kSettingGroup = "Vk.com"; +const char* VkService::kUrlScheme = "vk"; + +const char* VkService::kDefCacheFilename = "%artist - %title"; +const int VkService::kMaxVkSongList = 6000; +const int VkService::kCustomSongCount = 50; + +QString VkService::DefaultCacheDir() { + return QDir::toNativeSeparators( + Utilities::GetConfigPath(Utilities::Path_CacheRoot) + "/vkcache"); +} + +uint SearchID::last_id_ = 0; + +/*** + * Little functions + */ + +inline static void RemoveLastRow(QStandardItem* item, + VkService::ItemType type) { + QStandardItem* last_item = item->child(item->rowCount() - 1); + if (last_item->data(InternetModel::Role_Type).toInt() == type) { + item->removeRow(item->rowCount() - 1); + } else { + qLog(Error) << "Tryed to remove row" << last_item->text() << "of type" + << last_item->data(InternetModel::Role_Type).toInt() + << "instead of" << type << "from" << item->text(); + } +} + +struct SongId { + SongId() : audio_id(0), owner_id(0) {} + + int audio_id; + int owner_id; +}; + +static SongId ExtractIds(const QUrl& url) { + SongId res; + QString song_ids = url.path().section('/', 1, 1); + res.owner_id = song_ids.section('_', 0, 0).toInt(); + res.audio_id = song_ids.section('_', 1, 1).toInt(); + + if (res.owner_id && res.audio_id && url.scheme() == "vk" && + url.host() == "song") { + return res; + } else { + qLog(Error) << "Wromg song url" << url; + return SongId(); + } +} + +static Song SongFromUrl(const QUrl& url) { + Song result; + if (url.scheme() == "vk" && url.host() == "song") { + QStringList ids = url.path().split('/'); + if (ids.size() == 4) { + result.set_artist(ids[2]); + result.set_title(ids[3]); + result.set_valid(true); + } else { + qLog(Error) << "Wrong song url" << url; + result.set_valid(false); + } + result.set_url(url); + } else { + qLog(Error) << "Wrong song url" << url; + result.set_valid(false); + } + return result; +} + +MusicOwner::MusicOwner(const QUrl& group_url) { + QStringList tokens = group_url.path().split('/'); + if (group_url.scheme() == "vk" && group_url.host() == "group" && + tokens.size() == 5) { + id_ = -tokens[1].toInt(); + songs_count_ = tokens[2].toInt(); + screen_name_ = tokens[3]; + name_ = tokens[4].replace('_', '/'); + } else { + qLog(Error) << "Wrong group url" << group_url; + } +} + +Song MusicOwner::toOwnerRadio() const { + Song song; + song.set_title(QObject::tr("%1 (%2 songs)").arg(name_).arg(songs_count_)); + song.set_url(QUrl(QString("vk://group/%1/%2/%3/%4") + .arg(-id_) + .arg(songs_count_) + .arg(screen_name_) + .arg(QString(name_).replace('/', '_')))); + song.set_artist(" " + QObject::tr("Community Radio")); + song.set_valid(true); + return song; +} + +QDataStream& operator<<(QDataStream& stream, const MusicOwner& val) { + stream << val.id_; + stream << val.name_; + stream << val.songs_count_; + stream << val.screen_name_; + return stream; +} + +QDataStream& operator>>(QDataStream& stream, MusicOwner& var) { + stream >> var.id_; + stream >> var.name_; + stream >> var.songs_count_; + stream >> var.screen_name_; + return stream; +} + +QDebug operator<<(QDebug d, const MusicOwner& owner) { + d << "MusicOwner(" << owner.id_ << "," << owner.name_ << "," + << owner.songs_count_ << "," << owner.screen_name_ << ")"; + return d; +} + +MusicOwnerList MusicOwner::parseMusicOwnerList(const QVariant& request_result) { + auto list = request_result.toList(); + MusicOwnerList result; + for (const auto& item : list) { + auto map = item.toMap(); + MusicOwner owner; + owner.songs_count_ = map.value("songs_count").toInt(); + owner.id_ = map.value("id").toInt(); + owner.name_ = map.value("name").toString(); + owner.screen_name_ = map.value("screen_name").toString(); + owner.photo_ = map.value("photo").toUrl(); + + result.append(owner); + } + + return result; +} + +VkService::VkService(Application* app, InternetModel* parent) + : InternetService(kServiceName, app, parent, parent), + root_item_(NULL), + recommendations_item_(NULL), + my_music_item_(NULL), + search_result_item_(NULL), + context_menu_(NULL), + update_item_(NULL), + update_recommendations_(NULL), + find_this_artist_(NULL), + add_to_my_music_(NULL), + remove_from_my_music_(NULL), + add_song_to_cache_(NULL), + copy_share_url_(NULL), + add_to_bookmarks_(NULL), + remove_from_bookmarks_(NULL), + find_owner_(NULL), + search_box_(new SearchBoxWidget(this)), + vk_search_dialog_(new VkSearchDialog(this)), + client_(new Vreen::Client), + connection_(new VkConnection(this)), + url_handler_(new VkUrlHandler(this, this)), + audio_provider_(new Vreen::AudioProvider(client_.get())), + cache_(new VkMusicCache(app_, this)), + last_search_id_(0) { + QSettings s; + s.beginGroup(kSettingGroup); + + /* Init connection */ + client_->setTrackMessages(false); + client_->setInvisible(true); + client_->setConnection(connection_.get()); + + ReloadSettings(); + + if (HasAccount()) { + Login(); + } + + connect(client_.get(), SIGNAL(connectionStateChanged(Vreen::Client::State)), + SLOT(ChangeConnectionState(Vreen::Client::State))); + connect(client_.get(), SIGNAL(error(Vreen::Client::Error)), + SLOT(Error(Vreen::Client::Error))); + + /* Init interface */ + + VkSearchProvider* search_provider = new VkSearchProvider(app_, this); + search_provider->Init(this); + app_->global_search()->AddProvider(search_provider); + connect(search_box_, SIGNAL(TextChanged(QString)), SLOT(FindSongs(QString))); + + app_->player()->RegisterUrlHandler(url_handler_); +} + +VkService::~VkService() {} + +/*** + * Interface + */ + +QStandardItem* VkService::CreateRootItem() { + root_item_ = new QStandardItem(QIcon(":providers/vk.png"), kServiceName); + root_item_->setData(true, InternetModel::Role_CanLazyLoad); + return root_item_; +} + +void VkService::LazyPopulate(QStandardItem* parent) { + switch (parent->data(InternetModel::Role_Type).toInt()) { + case InternetModel::Type_Service: + UpdateRoot(); + break; + case Type_MyMusic: + UpdateMyMusic(); + break; + case Type_Recommendations: + UpdateRecommendations(); + break; + case Type_Bookmark: + UpdateBookmarkSongs(parent); + break; + case Type_Album: + UpdateAlbumSongs(parent); + break; + default: + break; + } +} + +void VkService::EnsureMenuCreated() { + if (!context_menu_) { + context_menu_ = new QMenu; + + context_menu_->addActions(GetPlaylistActions()); + context_menu_->addSeparator(); + + add_to_bookmarks_ = + context_menu_->addAction(QIcon(":vk/add.png"), tr("Add to bookmarks"), + this, SLOT(AddSelectedToBookmarks())); + + remove_from_bookmarks_ = context_menu_->addAction( + QIcon(":vk/remove.png"), tr("Remove from bookmarks"), this, + SLOT(RemoveFromBookmark())); + + context_menu_->addSeparator(); + + find_this_artist_ = + context_menu_->addAction(QIcon(":vk/find.png"), tr("Find this artist"), + this, SLOT(FindThisArtist())); + + add_to_my_music_ = + context_menu_->addAction(QIcon(":vk/add.png"), tr("Add to My Music"), + this, SLOT(AddToMyMusic())); + + remove_from_my_music_ = context_menu_->addAction( + QIcon(":vk/remove.png"), tr("Remove from My Music"), this, + SLOT(RemoveFromMyMusic())); + + add_song_to_cache_ = context_menu_->addAction(QIcon(":vk/download.png"), + tr("Add song to cache"), this, + SLOT(AddToCache())); + + copy_share_url_ = context_menu_->addAction( + QIcon(":vk/link.png"), tr("Copy share url to clipboard"), this, + SLOT(CopyShareUrl())); + + find_owner_ = context_menu_->addAction(QIcon(":vk/find.png"), + tr("Add user/group to bookmarks"), + this, SLOT(ShowSearchDialog())); + + update_recommendations_ = + context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Update"), + this, SLOT(UpdateRecommendations())); + + update_item_ = + context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Update"), + this, SLOT(UpdateItem())); + + context_menu_->addSeparator(); + context_menu_->addAction(IconLoader::Load("configure"), + tr("Configure Vk.com..."), this, + SLOT(ShowConfig())); + } +} + +void VkService::ShowContextMenu(const QPoint& global_pos) { + EnsureMenuCreated(); + + QModelIndex current(model()->current_index()); + + const int item_type = current.data(InternetModel::Role_Type).toInt(); + const int parent_type = + current.parent().data(InternetModel::Role_Type).toInt(); + + const bool is_playable = model()->IsPlayable(current); + const bool is_my_music_item = + item_type == Type_MyMusic || parent_type == Type_MyMusic; + const bool is_recommend_item = + item_type == Type_Recommendations || parent_type == Type_Recommendations; + const bool is_track = item_type == InternetModel::Type_Track; + + const bool is_bookmark = item_type == Type_Bookmark; + + const bool is_updatable = + item_type == InternetModel::Type_Service || item_type == Type_MyMusic || + item_type == Type_Album || is_bookmark || is_my_music_item; + + bool is_in_mymusic = false; + bool is_cached = false; + + if (is_track) { + selected_song_ = + current.data(InternetModel::Role_SongMetadata).value(); + is_in_mymusic = is_my_music_item || + ExtractIds(selected_song_.url()).owner_id == UserID(); + is_cached = cache()->InCache(selected_song_.url()); + } + + update_item_->setVisible(is_updatable); + update_recommendations_->setVisible(is_recommend_item); + find_this_artist_->setVisible(is_track); + add_song_to_cache_->setVisible(is_track && !is_cached); + add_to_my_music_->setVisible(is_track && !is_in_mymusic); + remove_from_my_music_->setVisible(is_track && is_in_mymusic); + copy_share_url_->setVisible(is_track); + remove_from_bookmarks_->setVisible(is_bookmark); + add_to_bookmarks_->setVisible(false); + + GetAppendToPlaylistAction()->setEnabled(is_playable); + GetReplacePlaylistAction()->setEnabled(is_playable); + GetOpenInNewPlaylistAction()->setEnabled(is_playable); + + context_menu_->popup(global_pos); +} + +void VkService::ItemDoubleClicked(QStandardItem* item) { + switch (item->data(InternetModel::Role_Type).toInt()) { + case Type_More: + switch (item->parent()->data(InternetModel::Role_Type).toInt()) { + case Type_Recommendations: + MoreRecommendations(); + break; + case Type_Search: + FindMore(); + break; + default: + qLog(Warning) << "Wrong parent for More item:" + << item->parent()->text(); + } + break; + default: + qLog(Warning) << "Wrong item for double click with type:" + << item->data(InternetModel::Role_Type); + } +} + +QList VkService::playlistitem_actions(const Song& song) { + EnsureMenuCreated(); + + QList actions; + + if (song.url().host() == "song") { + selected_song_ = song; + } else if (song.url().host() == "group") { + add_to_bookmarks_->setVisible(true); + actions << add_to_bookmarks_; + if (song.url() == current_group_url_) { + // Selected now playing group. + selected_song_ = current_song_; + } else { + // If selected not playing group, return only "Add to bookmarks" action. + selected_song_ = song; + return actions; + } + } + + // Adding songs actions. + find_this_artist_->setVisible(true); + actions << find_this_artist_; + + if (ExtractIds(selected_song_.url()).owner_id != UserID()) { + add_to_my_music_->setVisible(true); + actions << add_to_my_music_; + } else { + remove_from_my_music_->setVisible(true); + actions << remove_from_my_music_; + } + + copy_share_url_->setVisible(true); + actions << copy_share_url_; + + if (!cache()->InCache(selected_song_.url())) { + add_song_to_cache_->setVisible(true); + actions << add_song_to_cache_; + } + + return actions; +} + +void VkService::ShowConfig() { + app_->OpenSettingsDialogAtPage(SettingsDialog::Page_Vk); +} + +void VkService::UpdateRoot() { + ClearStandardItem(root_item_); + + if (HasAccount()) { + CreateAndAppendRow(root_item_, Type_Recommendations); + CreateAndAppendRow(root_item_, Type_MyMusic); + LoadAlbums(); + LoadBookmarks(); + } else { + ShowConfig(); + } +} + +QWidget* VkService::HeaderWidget() const { + if (HasAccount()) { + return search_box_; + } else { + return NULL; + } +} + +QStandardItem* VkService::CreateAndAppendRow(QStandardItem* parent, + VkService::ItemType type) { + QStandardItem* item = NULL; + + switch (type) { + case Type_Loading: + item = new QStandardItem(tr("Loading...")); + break; + + case Type_More: + item = new QStandardItem(tr("More")); + item->setData(InternetModel::PlayBehaviour_DoubleClickAction, + InternetModel::Role_PlayBehaviour); + break; + + case Type_Recommendations: + item = new QStandardItem(QIcon(":vk/recommends.png"), + tr("My Recommendations")); + item->setData(true, InternetModel::Role_CanLazyLoad); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + recommendations_item_ = item; + break; + + case Type_MyMusic: + item = new QStandardItem(QIcon(":vk/my_music.png"), tr("My Music")); + item->setData(true, InternetModel::Role_CanLazyLoad); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + my_music_item_ = item; + break; + + case Type_Search: + item = new QStandardItem(QIcon(":vk/find.png"), tr("Search")); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + search_result_item_ = item; + break; + + case Type_Bookmark: + qLog(Error) << "Use AppendBookmark(const MusicOwner &owner)" + << "for creating Bookmark item instead."; + break; + + case Type_Album: + qLog(Error) << "Use AppendAlbum(const Vreen::AudioAlbumItem &album)" + << "for creating Album item instead."; + break; + + default: + qLog(Error) << "Invalid type for creating row: " << type; + break; + } + + item->setData(type, InternetModel::Role_Type); + parent->appendRow(item); + return item; +} + +/*** + * Connection + */ + +void VkService::Login() { client_->connectToHost(); } + +void VkService::Logout() { + if (connection_) { + client_->disconnectFromHost(); + connection_->clear(); + } + + UpdateRoot(); +} + +bool VkService::HasAccount() const { return connection_->hasAccount(); } + +int VkService::UserID() const { return connection_->uid(); } + +void VkService::ChangeConnectionState(Vreen::Client::State state) { + qLog(Debug) << "Connection state changed to" << state; + switch (state) { + case Vreen::Client::StateOnline: + emit LoginSuccess(true); + UpdateRoot(); + break; + + case Vreen::Client::StateInvalid: + case Vreen::Client::StateOffline: + emit LoginSuccess(false); + UpdateRoot(); + break; + case Vreen::Client::StateConnecting: + break; + default: + qLog(Error) << "Wrong connection state " << state; + break; + } +} + +void VkService::RequestUserProfile() { + QVariantMap args; + args.insert("users_ids", "0"); + Vreen::Reply* reply = client_->request("users.get", args); + + connect(reply, SIGNAL(resultReady(QVariant)), this, + SLOT(UserProfileRecived(QVariant)), Qt::UniqueConnection); +} + +void VkService::UserProfileRecived(const QVariant& result) { + auto list = result.toList(); + if (!list.isEmpty()) { + auto profile = list[0].toMap(); + QString name = profile.value("first_name").toString() + " " + + profile.value("last_name").toString(); + emit NameUpdated(name); + } else { + qLog(Debug) << "Fetching user profile failed" << result; + } +} + +void VkService::Error(Vreen::Client::Error error) { + QString msg; + + switch (error) { + case Vreen::Client::ErrorApplicationDisabled: + msg = "Application disabled"; + break; + case Vreen::Client::ErrorIncorrectSignature: + msg = "Incorrect signature"; + break; + case Vreen::Client::ErrorAuthorizationFailed: + msg = "Authorization failed"; + emit LoginSuccess(false); + break; + case Vreen::Client::ErrorToManyRequests: + msg = "Too many requests"; + break; + case Vreen::Client::ErrorPermissionDenied: + msg = "Permission denied"; + break; + case Vreen::Client::ErrorCaptchaNeeded: + msg = "Captcha needed"; + QMessageBox::critical(NULL, tr("Error"), + tr("Captcha is needed.\n" + "Try to login into Vk.com with your browser," + "to fix this problem."), + QMessageBox::Close); + break; + case Vreen::Client::ErrorMissingOrInvalidParameter: + msg = "Missing or invalid parameter"; + break; + case Vreen::Client::ErrorNetworkReply: + msg = "Network reply"; + break; + default: + msg = "Unknown error"; + break; + } + + qLog(Error) << "Client error: " << error << msg; +} + +/*** + * My Music + */ + +void VkService::UpdateMyMusic() { + if (!my_music_item_) { + // Internet services panel still not created. + return; + } + LoadAndAppendSongList(my_music_item_, 0); +} + +/*** + * Recommendation + */ + +void VkService::UpdateRecommendations() { + ClearStandardItem(recommendations_item_); + CreateAndAppendRow(recommendations_item_, Type_Loading); + if (update_recommendations_) { + update_recommendations_->setEnabled(false); + } + + auto my_audio = + audio_provider_->getRecommendationsForUser(0, kCustomSongCount, 0); + + NewClosure(my_audio, SIGNAL(resultReady(QVariant)), this, + SLOT(RecommendationsLoaded(Vreen::AudioItemListReply*)), my_audio); +} + +void VkService::MoreRecommendations() { + RemoveLastRow(recommendations_item_, Type_More); + if (update_recommendations_) { + update_recommendations_->setEnabled(false); + } + CreateAndAppendRow(recommendations_item_, Type_Loading); + + auto my_audio = audio_provider_->getRecommendationsForUser( + 0, kCustomSongCount, recommendations_item_->rowCount() - 1); + + NewClosure(my_audio, SIGNAL(resultReady(QVariant)), this, + SLOT(RecommendationsLoaded(Vreen::AudioItemListReply*)), my_audio); +} + +void VkService::RecommendationsLoaded(Vreen::AudioItemListReply* reply) { + if (update_recommendations_) { + update_recommendations_->setEnabled(true); + } + SongList songs = FromAudioList(reply->result()); + RemoveLastRow(recommendations_item_, Type_Loading); + AppendSongs(recommendations_item_, songs); + if (songs.count() > 0) { + CreateAndAppendRow(recommendations_item_, Type_More); + } +} + +/*** + * Bookmarks + */ + +void VkService::AddSelectedToBookmarks() { + QUrl group_url; + if (selected_song_.url().scheme() == "vk" && + selected_song_.url().host() == "song") { + // Selected song is song of now playing group, so group url in + // current_group_url_ + group_url = current_group_url_; + } else { + // Otherwise selectet group radio in playlist + group_url = selected_song_.url(); + } + + AppendBookmark(MusicOwner(group_url)); + SaveBookmarks(); +} + +void VkService::RemoveFromBookmark() { + QModelIndex current(model()->current_index()); + root_item_->removeRow(current.row()); + SaveBookmarks(); +} + +void VkService::SaveBookmarks() { + QSettings s; + s.beginGroup(kSettingGroup); + + s.beginWriteArray("bookmarks"); + int index = 0; + for (int i = 0; i < root_item_->rowCount(); ++i) { + auto item = root_item_->child(i); + if (item->data(InternetModel::Role_Type).toInt() == Type_Bookmark) { + MusicOwner owner = + item->data(Role_MusicOwnerMetadata).value(); + s.setArrayIndex(index); + qLog(Info) << "Save" << index << ":" << owner; + s.setValue("owner", QVariant::fromValue(owner)); + ++index; + } + } + s.endArray(); +} + +void VkService::LoadBookmarks() { + QSettings s; + s.beginGroup(kSettingGroup); + + int max = s.beginReadArray("bookmarks"); + for (int i = 0; i < max; ++i) { + s.setArrayIndex(i); + MusicOwner owner = s.value("owner").value(); + qLog(Info) << "Load" << i << ":" << owner; + AppendBookmark(owner); + } + s.endArray(); +} + +QStandardItem* VkService::AppendBookmark(const MusicOwner& owner) { + QIcon icon; + if (owner.id() > 0) { + icon = QIcon(":vk/user.png"); + } else { + icon = QIcon(":vk/group.png"); + } + QStandardItem* item = new QStandardItem(icon, owner.name()); + + item->setData(QVariant::fromValue(owner), Role_MusicOwnerMetadata); + item->setData(Type_Bookmark, InternetModel::Role_Type); + item->setData(true, InternetModel::Role_CanLazyLoad); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + root_item_->appendRow(item); + return item; +} + +void VkService::UpdateItem() { + QModelIndex current(model()->current_index()); + LazyPopulate(model()->itemFromIndex(current)); +} + +void VkService::UpdateBookmarkSongs(QStandardItem* item) { + MusicOwner owner = item->data(Role_MusicOwnerMetadata).value(); + LoadAndAppendSongList(item, owner.id()); +} + +/*** + * Albums + */ + +void VkService::LoadAlbums() { + auto albums_request = audio_provider_->getAlbums(UserID()); + NewClosure(albums_request, SIGNAL(resultReady(QVariant)), this, + SLOT(AlbumListReceived(Vreen::AudioAlbumItemListReply*)), + albums_request); +} + +QStandardItem* VkService::AppendAlbum(const Vreen::AudioAlbumItem& album) { + QStandardItem* item = + new QStandardItem(QIcon(":vk/playlist.png"), album.title()); + + item->setData(QVariant::fromValue(album), Role_AlbumMetadata); + item->setData(Type_Album, InternetModel::Role_Type); + item->setData(true, InternetModel::Role_CanLazyLoad); + item->setData(InternetModel::PlayBehaviour_MultipleItems, + InternetModel::Role_PlayBehaviour); + root_item_->appendRow(item); + return item; +} + +void VkService::AlbumListReceived(Vreen::AudioAlbumItemListReply* reply) { + Vreen::AudioAlbumItemList albums = reply->result(); + for (const auto& album : albums) { + AppendAlbum(album); + } +} + +void VkService::UpdateAlbumSongs(QStandardItem* item) { + Vreen::AudioAlbumItem album = + item->data(Role_AlbumMetadata).value(); + + LoadAndAppendSongList(item, album.ownerId(), album.id()); +} + +/*** + * Features + */ + +void VkService::FindThisArtist() { + search_box_->SetText(selected_song_.artist()); +} + +void VkService::AddToMyMusic() { + SongId id = ExtractIds(selected_song_.url()); + auto reply = audio_provider_->addToLibrary(id.audio_id, id.owner_id); + connect(reply, SIGNAL(resultReady(QVariant)), this, SLOT(UpdateMyMusic())); +} + +void VkService::AddToMyMusicCurrent() { + if (isLoveAddToMyMusic()) { + selected_song_ = current_song_; + AddToMyMusic(); + } +} + +void VkService::RemoveFromMyMusic() { + SongId id = ExtractIds(selected_song_.url()); + if (id.owner_id == UserID()) { + auto reply = audio_provider_->removeFromLibrary(id.audio_id, id.owner_id); + connect(reply, SIGNAL(resultReady(QVariant)), this, SLOT(UpdateMyMusic())); + } else { + qLog(Error) << "Tried to delete song that not owned by user (" << UserID() + << selected_song_.url(); + } +} + +void VkService::AddToCache() { + url_handler_->ForceAddToCache(selected_song_.url()); +} + +void VkService::CopyShareUrl() { + QByteArray share_url("http://vk.com/audio?q="); + share_url += QUrl::toPercentEncoding( + QString(selected_song_.artist() + " " + selected_song_.title())); + + QApplication::clipboard()->setText(share_url); +} + +/*** + * Search + */ + +void VkService::FindSongs(const QString& query) { + if (query.isEmpty()) { + root_item_->removeRow(search_result_item_->row()); + search_result_item_ = NULL; + last_search_id_ = 0; + } else { + last_query_ = query; + if (!search_result_item_) { + CreateAndAppendRow(root_item_, Type_Search); + connect(this, SIGNAL(SongSearchResult(SearchID, SongList)), + SLOT(SearchResultLoaded(SearchID, SongList))); + } + ClearStandardItem(search_result_item_); + CreateAndAppendRow(search_result_item_, Type_Loading); + SongSearch(SearchID(SearchID::LocalSearch), query); + } +} + +void VkService::FindMore() { + RemoveLastRow(search_result_item_, Type_More); + CreateAndAppendRow(recommendations_item_, Type_Loading); + + SearchID id(SearchID::MoreLocalSearch); + SongSearch(id, last_query_, kCustomSongCount, + search_result_item_->rowCount() - 1); +} + +void VkService::SearchResultLoaded(const SearchID& id, const SongList& songs) { + if (!search_result_item_) { + return; // Result received when search is already over. + } + + if (id.id() >= last_search_id_) { + if (id.type() == SearchID::LocalSearch) { + ClearStandardItem(search_result_item_); + } else if (id.type() == SearchID::MoreLocalSearch) { + RemoveLastRow(search_result_item_, Type_Loading); + } else { + return; // Others request types ignored. + } + + last_search_id_ = id.id(); + + if (!songs.isEmpty()) { + AppendSongs(search_result_item_, songs); + CreateAndAppendRow(search_result_item_, Type_More); + } + + // If new search, scroll to search results. + if (id.type() == SearchID::LocalSearch) { + QModelIndex index = + model()->merged_model()->mapFromSource(search_result_item_->index()); + ScrollToIndex(index); + } + } +} + +/*** + * Load song list methods + */ + +void VkService::LoadAndAppendSongList(QStandardItem* item, int uid, + int album_id) { + if (item) { + ClearStandardItem(item); + CreateAndAppendRow(item, Type_Loading); + auto audioreq = + audio_provider_->getContactAudio(uid, kMaxVkSongList, 0, album_id); + NewClosure( + audioreq, SIGNAL(resultReady(QVariant)), this, + SLOT(AppendLoadedSongs(QStandardItem*, Vreen::AudioItemListReply*)), + item, audioreq); + } +} + +void VkService::AppendLoadedSongs(QStandardItem* item, + Vreen::AudioItemListReply* reply) { + SongList songs = FromAudioList(reply->result()); + + if (item) { + ClearStandardItem(item); + if (songs.count() > 0) { + AppendSongs(item, songs); + return; + } + } else { + qLog(Warning) << "Item for request not exist"; + } + + item->appendRow(new QStandardItem( + tr("Connection trouble " + "or audio is disabled by owner"))); +} + +static QString SanitiseCharacters(QString str) { + // Remove all leading and trailing unicode symbols + // that some users love to add to title and artist. + str = str.remove(QRegExp("^[^\\w]*")); + str = str.remove(QRegExp("[^])\\w]*$")); + return str; +} + +Song VkService::FromAudioItem(const Vreen::AudioItem& item) { + Song song; + song.set_title(SanitiseCharacters(item.title())); + song.set_artist(SanitiseCharacters(item.artist())); + song.set_length_nanosec(qFloor(item.duration()) * kNsecPerSec); + + QString url = QString("vk://song/%1_%2/%3/%4") + .arg(item.ownerId()) + .arg(item.id()) + .arg(item.artist().replace('/', '_')) + .arg(item.title().replace('/', '_')); + + song.set_url(QUrl(url)); + song.set_valid(true); + return song; +} + +SongList VkService::FromAudioList(const Vreen::AudioItemList& list) { + SongList song_list; + for (const Vreen::AudioItem& item : list) { + song_list.append(FromAudioItem(item)); + } + return song_list; +} + +/*** + * Url handling + */ + +QUrl VkService::GetSongPlayUrl(const QUrl& url, bool is_playing) { + QStringList tokens = url.path().split('/'); + + if (tokens.count() < 2) { + qLog(Error) << "Wrong song url" << url; + return QUrl(); + } + + QString song_id = tokens[1]; + + if (HasAccount()) { + Vreen::AudioItemListReply* song_request = + audio_provider_->getAudiosByIds(song_id); + emit StopWaiting(); // Stop all previous requests. + bool success = WaitForReply(song_request); + + if (success && !song_request->result().isEmpty()) { + Vreen::AudioItem song = song_request->result()[0]; + if (is_playing) { + current_song_ = FromAudioItem(song); + current_song_.set_url(url); + } + return song.url(); + } + } + + qLog(Info) << "Unresolved url by id" << song_id; + return QUrl(); +} + +UrlHandler::LoadResult VkService::GetGroupNextSongUrl(const QUrl& url) { + QStringList tokens = url.path().split('/'); + if (tokens.count() < 3) { + qLog(Error) << "Wrong url" << url; + return UrlHandler::LoadResult(); + } + + int gid = tokens[1].toInt(); + int songs_count = tokens[2].toInt(); + + if (songs_count > kMaxVkSongList) { + songs_count = kMaxVkSongList; + } + + if (HasAccount()) { + // Getting one random song from groups playlist. + Vreen::AudioItemListReply* song_request = + audio_provider_->getContactAudio(-gid, 1, qrand() % songs_count); + + emit StopWaiting(); // Stop all previous requests. + bool success = WaitForReply(song_request); + + if (success && !song_request->result().isEmpty()) { + Vreen::AudioItem song = song_request->result()[0]; + current_group_url_ = url; + current_song_ = FromAudioItem(song); + emit StreamMetadataFound(url, current_song_); + return UrlHandler::LoadResult(url, UrlHandler::LoadResult::TrackAvailable, + song.url(), current_song_.length_nanosec()); + } + } + + qLog(Info) << "Unresolved group url" << url; + return UrlHandler::LoadResult(); +} + +void VkService::SetCurrentSongFromUrl(const QUrl& url) { + current_song_ = SongFromUrl(url); +} + +/*** + * Search + */ + +void VkService::SongSearch(SearchID id, const QString& query, int count, + int offset) { + auto reply = audio_provider_->searchAudio( + query, count, offset, false, Vreen::AudioProvider::SortByPopularity); + NewClosure(reply, SIGNAL(resultReady(QVariant)), this, + SLOT(SongSearchReceived(SearchID, Vreen::AudioItemListReply*)), id, + reply); +} + +void VkService::SongSearchReceived(const SearchID& id, + Vreen::AudioItemListReply* reply) { + SongList songs = FromAudioList(reply->result()); + emit SongSearchResult(id, songs); +} + +void VkService::GroupSearch(SearchID id, const QString& query) { + QVariantMap args; + args.insert("q", query); + + // This is using of 'execute' method that execute + // this VKScript method on vk server: + /* + var groups = API.groups.search({"q": Args.q}); + if (groups.length == 0) { + return []; + } + + var i = 1; + var res = []; + while (i < groups.length - 1) { + i = i + 1; + var grp = groups[i]; + var songs = API.audio.getCount({oid: -grp.gid}); + if ( songs > 1 && + (grp.is_closed == 0 || grp.is_member == 1)) + { + res = res + [{"songs_count" : songs, + "id" : -grp.gid, + "name" : grp.name, + "screen_name" : grp.screen_name, + "photo": grp.photo}]; + } + } + return res; + */ + // + // I leave it here in case if my vk app disappear or smth. + + auto reply = client_->request("execute.searchMusicGroup", args); + + NewClosure(reply, SIGNAL(resultReady(QVariant)), this, + SLOT(GroupSearchReceived(SearchID, Vreen::Reply*)), id, reply); +} + +void VkService::GroupSearchReceived(const SearchID& id, Vreen::Reply* reply) { + QVariant groups = reply->response(); + emit GroupSearchResult(id, MusicOwner::parseMusicOwnerList(groups)); +} + +/*** + * Vk search user or group. + */ + +void VkService::ShowSearchDialog() { + if (vk_search_dialog_->exec() == QDialog::Accepted) { + AppendBookmark(vk_search_dialog_->found()); + SaveBookmarks(); + } +} + +void VkService::FindUserOrGroup(const QString& q) { + QVariantMap args; + args.insert("q", q); + + // This is using of 'execute' method that execute + // this VKScript method on vk server: + /* + var q = Args.q; + if (q + "" == ""){ + return []; + } + + var results_count = 0; + var res = []; + + // Search groups + var groups = API.groups.search({"q": q}); + + var i = 0; + while (i < groups.length - 1 && results_count <= 5) { + i = i + 1; + var grp = groups[i]; + var songs = API.audio.getCount({oid: -grp.gid}); + // Add only accessible groups with songs + if ( songs > 1 && + (grp.is_closed == 0 || grp.is_member == 1)) + { + results_count = results_count + 1; + res = res + [{"songs_count" : songs, + "id" : -grp.gid, + "name" : grp.name, + "screen_name" : grp.screen_name, + "photo": grp.photo}]; + } + } + + // Search peoples + var peoples = API.users.search({"q": q, + "count":10, + "fields":"screen_name,photo"}); + var i = 0; + while (i < peoples.length - 1 && results_count <= 7) { + i = i + 1; + var user = peoples[i]; + var songs = API.audio.getCount({"oid": user.uid}); + // Add groups only with songs + if (songs > 1) { + results_count = results_count + 1; + res = res + [{"songs_count" : songs, + "id" : user.uid, + "name" : user.first_name + " " + user.last_name, + "screen_name" : user.screen_name, + "phone" : user.photo}]; + } + } + + return res; + */ + // I leave it here just in case if my vk app will disappear or smth. + + auto reply = client_->request("execute.searchMusicOwner", args); + + NewClosure(reply, SIGNAL(resultReady(QVariant)), this, + SLOT(UserOrGroupReceived(SearchID, Vreen::Reply*)), + SearchID(SearchID::UserOrGroup), reply); +} + +void VkService::UserOrGroupReceived(const SearchID& id, Vreen::Reply* reply) { + QVariant owners = reply->response(); + emit UserOrGroupSearchResult(id, MusicOwner::parseMusicOwnerList(owners)); +} + +/*** + * Utils + */ + +void VkService::AppendSongs(QStandardItem* parent, const SongList& songs) { + for (const auto& song : songs) { + parent->appendRow(CreateSongItem(song)); + } +} + +void VkService::ReloadSettings() { + QSettings s; + s.beginGroup(kSettingGroup); + maxGlobalSearch_ = s.value("max_global_search", kCustomSongCount).toInt(); + cachingEnabled_ = s.value("cache_enabled", false).toBool(); + cacheDir_ = s.value("cache_dir", DefaultCacheDir()).toString(); + cacheFilename_ = s.value("cache_filename", kDefCacheFilename).toString(); + love_is_add_to_mymusic_ = s.value("love_is_add_to_my_music", false).toBool(); + groups_in_global_search_ = s.value("groups_in_global_search", false).toBool(); +} + +void VkService::ClearStandardItem(QStandardItem* item) { + if (item && item->hasChildren()) { + item->removeRows(0, item->rowCount()); + } +} + +bool VkService::WaitForReply(Vreen::Reply* reply) { + QEventLoop event_loop; + QTimer timeout_timer; + connect(this, SIGNAL(StopWaiting()), &timeout_timer, SLOT(stop())); + connect(&timeout_timer, SIGNAL(timeout()), &event_loop, SLOT(quit())); + connect(reply, SIGNAL(resultReady(QVariant)), &event_loop, SLOT(quit())); + timeout_timer.start(10000); + event_loop.exec(); + if (!timeout_timer.isActive()) { + qLog(Error) << "Vk.com request timeout"; + return false; + } + timeout_timer.stop(); + return true; +} diff --git a/src/internet/vkservice.h b/src/internet/vkservice.h new file mode 100644 index 000000000..80bd9f6b6 --- /dev/null +++ b/src/internet/vkservice.h @@ -0,0 +1,295 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#ifndef VKSERVICE_H +#define VKSERVICE_H + +#include + +#include "internetservice.h" +#include "internetmodel.h" +#include "core/song.h" + +#include "vreen/audio.h" +#include "vreen/contact.h" + +#include "vkconnection.h" +#include "vkurlhandler.h" + +namespace Vreen { +class Client; +class Buddy; +} + +class SearchBoxWidget; +class VkMusicCache; +class VkSearchDialog; + +/*** + * Store information about user or group + * using in bookmarks. + */ +class MusicOwner { +public: + MusicOwner() : + songs_count_(0), + id_(0) + {} + + explicit MusicOwner(const QUrl& group_url); + Song toOwnerRadio() const; + + QString name() const { return name_; } + int id() const { return id_; } + int song_count() const { return songs_count_; } + static QList parseMusicOwnerList(const QVariant& request_result); + +private: + friend QDataStream& operator<<(QDataStream& stream, const MusicOwner& val); + friend QDataStream& operator>>(QDataStream& stream, MusicOwner& val); + friend QDebug operator<<(QDebug d, const MusicOwner& owner); + + int songs_count_; + int id_; // if id > 0 is user otherwise id group + QString name_; + // name used in url http://vk.com/ for example: http://vk.com/shedward + QString screen_name_; + QUrl photo_; +}; + +typedef QList MusicOwnerList; + +Q_DECLARE_METATYPE(MusicOwner) + +QDataStream& operator<<(QDataStream& stream, const MusicOwner& val); +QDataStream& operator>>(QDataStream& stream, MusicOwner& var); +QDebug operator<<(QDebug d, const MusicOwner& owner); + +/*** + * The simple structure allows the handler to determine + * how to react to the received request or quickly skip unwanted. + */ +struct SearchID { + enum Type { + GlobalSearch, + LocalSearch, + MoreLocalSearch, + UserOrGroup + }; + + explicit SearchID(Type type) + : type_(type) { + id_= last_id_++; + } + int id() const { return id_; } + Type type() const { return type_; } +private: + static uint last_id_; + int id_; + Type type_; +}; + +/*** + * VkService + */ +class VkService : public InternetService { + Q_OBJECT + +public: + explicit VkService(Application* app, InternetModel* parent); + ~VkService(); + + static const char* kServiceName; + static const char* kSettingGroup; + static const char* kUrlScheme; + static const char* kDefCacheFilename; + static QString DefaultCacheDir(); + static const int kMaxVkSongList; + static const int kCustomSongCount; + + enum ItemType { + Type_Loading = InternetModel::TypeCount, + Type_More, + + Type_Recommendations, + Type_MyMusic, + Type_Bookmark, + Type_Album, + + Type_Search + }; + + enum Role { Role_MusicOwnerMetadata = InternetModel::RoleCount, + Role_AlbumMetadata }; + + /* InternetService interface */ + QStandardItem* CreateRootItem(); + void LazyPopulate(QStandardItem* parent); + void ShowContextMenu(const QPoint& global_pos); + void ItemDoubleClicked(QStandardItem* item); + QList playlistitem_actions(const Song& song); + + /* Interface*/ + QWidget* HeaderWidget() const; + + /* Connection */ + void Login(); + void Logout(); + bool HasAccount() const; + int UserID() const; + void RequestUserProfile(); + bool WaitForReply(Vreen::Reply* reply); + + /* Music */ + VkMusicCache* cache() const { return cache_; } + void SetCurrentSongFromUrl(const QUrl& url); // Used if song taked from cache. + QUrl GetSongPlayUrl(const QUrl& url, bool is_playing = true); + // Return random song result from group playlist. + UrlHandler::LoadResult GetGroupNextSongUrl(const QUrl& url); + + void SongSearch(SearchID id, const QString& query, int count = 50, int offset = 0); + void GroupSearch(SearchID id, const QString& query); + + /* Settings */ + void ReloadSettings(); + int maxGlobalSearch() const { return maxGlobalSearch_; } + bool isCachingEnabled() const { return cachingEnabled_; } + bool isGroupsInGlobalSearch() const { return groups_in_global_search_; } + QString cacheDir() const { return cacheDir_; } + QString cacheFilename() const { return cacheFilename_; } + bool isLoveAddToMyMusic() const { return love_is_add_to_mymusic_; } + +signals: + void NameUpdated(const QString& name); + void ConnectionStateChanged(Vreen::Client::State state); + void LoginSuccess(bool success); + void SongSearchResult(const SearchID& id, const SongList& songs); + void GroupSearchResult(const SearchID& id, const MusicOwnerList& groups); + void UserOrGroupSearchResult(const SearchID& id, const MusicOwnerList& owners); + void StopWaiting(); + +public slots: + void UpdateRoot(); + void ShowConfig(); + void FindUserOrGroup(const QString& q); + +private slots: + /* Interface */ + void UpdateItem(); + + /* Connection */ + void ChangeConnectionState(Vreen::Client::State state); + void UserProfileRecived(const QVariant& result); + void Error(Vreen::Client::Error error); + + /* Music */ + void UpdateMyMusic(); + void UpdateBookmarkSongs(QStandardItem* item); + void UpdateAlbumSongs(QStandardItem* item); + void FindSongs(const QString& query); + void FindMore(); + void UpdateRecommendations(); + void MoreRecommendations(); + void FindThisArtist(); + void AddToMyMusic(); + void AddToMyMusicCurrent(); + void RemoveFromMyMusic(); + void AddToCache(); + void CopyShareUrl(); + void ShowSearchDialog(); + + void AddSelectedToBookmarks(); + void RemoveFromBookmark(); + + void SongSearchReceived(const SearchID& id, Vreen::AudioItemListReply* reply); + void GroupSearchReceived(const SearchID& id, Vreen::Reply* reply); + void UserOrGroupReceived(const SearchID& id, Vreen::Reply* reply); + void AlbumListReceived(Vreen::AudioAlbumItemListReply* reply); + + void AppendLoadedSongs(QStandardItem* item, Vreen::AudioItemListReply* reply); + void RecommendationsLoaded(Vreen::AudioItemListReply* reply); + void SearchResultLoaded(const SearchID& id, const SongList& songs); + +private: + /* Interface */ + QStandardItem* CreateAndAppendRow(QStandardItem* parent, VkService::ItemType type); + void ClearStandardItem(QStandardItem* item); + QStandardItem* GetBookmarkItemById(int id); + void EnsureMenuCreated(); + + /* Music */ + void LoadAndAppendSongList(QStandardItem* item, int uid, int album_id = -1); + Song FromAudioItem(const Vreen::AudioItem& item); + SongList FromAudioList(const Vreen::AudioItemList& list); + void AppendSongs(QStandardItem* parent, const SongList& songs); + + QStandardItem* AppendBookmark(const MusicOwner& owner); + void SaveBookmarks(); + void LoadBookmarks(); + + void LoadAlbums(); + QStandardItem* AppendAlbum(const Vreen::AudioAlbumItem& album); + + /* Interface */ + QStandardItem* root_item_; + QStandardItem* recommendations_item_; + QStandardItem* my_music_item_; + QStandardItem* search_result_item_; + + QMenu* context_menu_; + + QAction* update_item_; + QAction* update_recommendations_; + QAction* find_this_artist_; + QAction* add_to_my_music_; + QAction* remove_from_my_music_; + QAction* add_song_to_cache_; + QAction* copy_share_url_; + QAction* add_to_bookmarks_; + QAction* remove_from_bookmarks_; + QAction* find_owner_; + + SearchBoxWidget* search_box_; + VkSearchDialog* vk_search_dialog_; + + /* Connection */ + std::unique_ptr client_; + std::unique_ptr connection_; + VkUrlHandler* url_handler_; + + /* Music */ + std::unique_ptr audio_provider_; + VkMusicCache* cache_; + // Keeping when more recent results recived. + // Using for prevent loading tardy result instead. + uint last_search_id_; + QString last_query_; + Song selected_song_; // Store for context menu actions. + Song current_song_; // Store for actions with now playing song. + // Store current group url for actions with it. + QUrl current_group_url_; + + /* Settings */ + int maxGlobalSearch_; + bool cachingEnabled_; + bool love_is_add_to_mymusic_; + bool groups_in_global_search_; + QString cacheDir_; + QString cacheFilename_; +}; + +#endif // VKSERVICE_H diff --git a/src/internet/vksettingspage.cpp b/src/internet/vksettingspage.cpp new file mode 100644 index 000000000..7cc27e81b --- /dev/null +++ b/src/internet/vksettingspage.cpp @@ -0,0 +1,133 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#include "vksettingspage.h" + +#include +#include + +#include "ui_vksettingspage.h" +#include "core/application.h" +#include "core/logging.h" +#include "internet/vkservice.h" + +VkSettingsPage::VkSettingsPage(SettingsDialog *parent) + : SettingsPage(parent), + ui_(new Ui::VkSettingsPage), + service_(dialog()->app()->internet_model()->Service()) { + ui_->setupUi(this); + connect(service_, SIGNAL(LoginSuccess(bool)), + SLOT(LoginSuccess(bool))); + connect(ui_->choose_path, SIGNAL(clicked()), + SLOT(CacheDirBrowse())); + connect(ui_->reset, SIGNAL(clicked()), + SLOT(ResetCasheFilenames())); +} + +VkSettingsPage::~VkSettingsPage() { + delete ui_; +} + +void VkSettingsPage::Load() { + service_->ReloadSettings(); + + ui_->maxGlobalSearch->setValue(service_->maxGlobalSearch()); + ui_->enable_caching->setChecked(service_->isCachingEnabled()); + ui_->cache_dir->setText(service_->cacheDir()); + ui_->cache_filename->setText(service_->cacheFilename()); + ui_->love_button_is_add_to_mymusic->setChecked(service_->isLoveAddToMyMusic()); + ui_->groups_in_global_search->setChecked(service_->isGroupsInGlobalSearch()); + + if (service_->HasAccount()) { + LogoutWidgets(); + } else { + LoginWidgets(); + } +} + +void VkSettingsPage::Save() { + QSettings s; + s.beginGroup(VkService::kSettingGroup); + + s.setValue("max_global_search", ui_->maxGlobalSearch->value()); + s.setValue("cache_enabled", ui_->enable_caching->isChecked()); + s.setValue("cache_dir", ui_->cache_dir->text()); + s.setValue("cache_filename", ui_->cache_filename->text()); + s.setValue("love_is_add_to_my_music", ui_->love_button_is_add_to_mymusic->isChecked()); + s.setValue("groups_in_global_search", ui_->groups_in_global_search->isChecked()); + + service_->ReloadSettings(); +} + +void VkSettingsPage::Login() { + ui_->login_button->setEnabled(false); + service_->Login(); +} + +void VkSettingsPage::LoginSuccess(bool success) { + if (success) { + LogoutWidgets(); + } else { + LoginWidgets(); + } +} + +void VkSettingsPage::Logout() { + ui_->login_button->setEnabled(false); + service_->Logout(); + LoginWidgets(); +} + +void VkSettingsPage::CacheDirBrowse() { + QString directory = QFileDialog::getExistingDirectory( + this, tr("Choose Vk.com cache directory"), ui_->cache_dir->text()); + if (directory.isEmpty()) { + return; + } + + ui_->cache_dir->setText(QDir::toNativeSeparators(directory)); +} + +void VkSettingsPage::ResetCasheFilenames() { + ui_->cache_filename->setText(VkService::kDefCacheFilename); +} + +void VkSettingsPage::LoginWidgets() { + ui_->login_button->setText(tr("Login")); + ui_->name->setText(""); + ui_->login_button->setEnabled(true); + + connect(ui_->login_button, SIGNAL(clicked()), + SLOT(Login()), Qt::UniqueConnection); + disconnect(ui_->login_button, SIGNAL(clicked()), + this, SLOT(Logout())); +} + +void VkSettingsPage::LogoutWidgets() { + ui_->login_button->setText(tr("Logout")); + ui_->name->setText(tr("Loading...")); + ui_->login_button->setEnabled(true); + + connect(service_, SIGNAL(NameUpdated(QString)), + ui_->name, SLOT(setText(QString)), Qt::UniqueConnection); + service_->RequestUserProfile(); + + connect(ui_->login_button, SIGNAL(clicked()), + SLOT(Logout()), Qt::UniqueConnection); + disconnect(ui_->login_button, SIGNAL(clicked()), + this, SLOT(Login())); +} diff --git a/src/internet/lastfmstationdialog.cpp b/src/internet/vksettingspage.h similarity index 50% rename from src/internet/lastfmstationdialog.cpp rename to src/internet/vksettingspage.h index 86fa75228..3090ab2db 100644 --- a/src/internet/lastfmstationdialog.cpp +++ b/src/internet/vksettingspage.h @@ -1,5 +1,5 @@ /* This file is part of Clementine. - Copyright 2010, David Sansome + Copyright 2013, Vlad Maltsev Clementine is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,28 +15,41 @@ along with Clementine. If not, see . */ -#include "lastfmstationdialog.h" -#include "ui_lastfmstationdialog.h" +#ifndef VKSETTINGSPAGE_H +#define VKSETTINGSPAGE_H -LastFMStationDialog::LastFMStationDialog(QWidget* parent) - : QDialog(parent), - ui_(new Ui_LastFMStationDialog) -{ - ui_->setupUi(this); +#include "ui/settingspage.h" - resize(sizeHint()); -} +#include +#include -LastFMStationDialog::~LastFMStationDialog() { - delete ui_; -} +class VkService; +class Ui_VkSettingsPage; -void LastFMStationDialog::SetType(Type type) { - ui_->type->setCurrentIndex(type); - ui_->content->clear(); - ui_->content->setFocus(Qt::OtherFocusReason); -} +class VkSettingsPage : public SettingsPage { + Q_OBJECT -QString LastFMStationDialog::content() const { - return ui_->content->text(); -} +public: + explicit VkSettingsPage(SettingsDialog* parent); + ~VkSettingsPage(); + + void Load(); + void Save(); + +private slots: + void LoginSuccess(bool success); + + void Login(); + void Logout(); + + void CacheDirBrowse(); + void ResetCasheFilenames(); + +private: + void LoginWidgets(); + void LogoutWidgets(); + Ui_VkSettingsPage* ui_; + VkService* service_; +}; + +#endif // VKSETTINGSPAGE_H diff --git a/src/internet/vksettingspage.ui b/src/internet/vksettingspage.ui new file mode 100644 index 000000000..29d251c4c --- /dev/null +++ b/src/internet/vksettingspage.ui @@ -0,0 +1,215 @@ + + + VkSettingsPage + + + + 0 + 0 + 569 + 491 + + + + Vk.com + + + + :/providers/vk.png:/providers/vk.png + + + + + + Account details + + + + + + + + + true + + + + + + + + 120 + 16777215 + + + + Login + + + + + + + + + + Preferences + + + + + + + + Max global search results + + + maxGlobalSearch + + + + + + + 50 + + + 3000 + + + 50 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Add songs to "My Music" when the "Love" button is clicked + + + + + + + Show groups in global search result + + + + + + + + + + Caching + + + + + + Enable automatic caching + + + + + + + true + + + + + + + + Cache path: + + + cache_dir + + + + + + + + + + ... + + + + + + + + + + + File name pattern: + + + cache_filename + + + + + + + %artist - %title + + + + + + + Reset + + + + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 40 + + + + + + + + + + + diff --git a/src/internet/vkurlhandler.cpp b/src/internet/vkurlhandler.cpp new file mode 100644 index 000000000..9d4872cf3 --- /dev/null +++ b/src/internet/vkurlhandler.cpp @@ -0,0 +1,68 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#include "vkurlhandler.h" + +#include "core/application.h" +#include "core/logging.h" + +#include "vkservice.h" +#include "vkmusiccache.h" + +VkUrlHandler::VkUrlHandler(VkService* service, QObject* parent) + : UrlHandler(parent), + service_(service) { +} + +UrlHandler::LoadResult VkUrlHandler::StartLoading(const QUrl& url) { + QStringList args = url.path().split("/"); + LoadResult result; + + if (args.size() < 2) { + qLog(Error) << "Invalid Vk.com URL: " << url + << "Url format should be vk:///." + << "For example vk://song/61145020_166946521/Daughtry/Gone Too Soon"; + } else { + QString action = url.host(); + + if (action == "song") { + service_->SetCurrentSongFromUrl(url); + result = LoadResult(url, LoadResult::TrackAvailable, service_->cache()->Get(url)); + } else if (action == "group") { + result = service_->GetGroupNextSongUrl(url); + } else { + qLog(Error) << "Invalid vk.com url action:" << action; + } + } + return result; +} + +void VkUrlHandler::TrackSkipped() { + service_->cache()->BreakCurrentCaching(); +} + +void VkUrlHandler::ForceAddToCache(const QUrl& url) { + service_->cache()->ForceCache(url); +} + +UrlHandler::LoadResult VkUrlHandler::LoadNext(const QUrl& url) { + if (url.host() == "group") { + return StartLoading(url); + } else { + return LoadResult(); + } +} diff --git a/src/internet/vkurlhandler.h b/src/internet/vkurlhandler.h new file mode 100644 index 000000000..30b9c6d39 --- /dev/null +++ b/src/internet/vkurlhandler.h @@ -0,0 +1,44 @@ +/* This file is part of Clementine. + Copyright 2013, Vlad Maltsev + + 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 . +*/ + +#ifndef VKURLHANDLER_H +#define VKURLHANDLER_H + +#include "core/urlhandler.h" +#include +#include +#include + +class VkService; +class VkMusicCache; + +class VkUrlHandler : public UrlHandler { + Q_OBJECT +public: + VkUrlHandler(VkService* service, QObject* parent); + QString scheme() const { return "vk"; } + QIcon icon() const { return QIcon(":providers/vk.png"); } + LoadResult StartLoading(const QUrl& url); + void TrackSkipped(); + void ForceAddToCache(const QUrl& url); + LoadResult LoadNext(const QUrl& url); + +private: + VkService* service_; +}; + +#endif // VKURLHANDLER_H diff --git a/src/library/directory.h b/src/library/directory.h index 9af610d36..fcc44feed 100644 --- a/src/library/directory.h +++ b/src/library/directory.h @@ -27,7 +27,7 @@ class QSqlQuery; struct Directory { Directory() : id(-1) {} - bool operator ==(const Directory& other) const { + bool operator==(const Directory& other) const { return path == other.path && id == other.id; } @@ -39,7 +39,6 @@ Q_DECLARE_METATYPE(Directory) typedef QList DirectoryList; Q_DECLARE_METATYPE(DirectoryList) - struct Subdirectory { Subdirectory() : directory_id(-1), mtime(0) {} @@ -52,4 +51,4 @@ Q_DECLARE_METATYPE(Subdirectory) typedef QList SubdirectoryList; Q_DECLARE_METATYPE(SubdirectoryList) -#endif // DIRECTORY_H +#endif // DIRECTORY_H diff --git a/src/library/groupbydialog.cpp b/src/library/groupbydialog.cpp index 74d17ffb2..f7a1c883b 100644 --- a/src/library/groupbydialog.cpp +++ b/src/library/groupbydialog.cpp @@ -20,25 +20,66 @@ #include -GroupByDialog::GroupByDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_GroupByDialog) -{ +// boost::multi_index still relies on these being in the global namespace. +using std::placeholders::_1; +using std::placeholders::_2; + +#include +#include +#include + +using boost::multi_index_container; +using boost::multi_index::indexed_by; +using boost::multi_index::ordered_unique; +using boost::multi_index::tag; +using boost::multi_index::member; + +namespace { + +struct Mapping { + Mapping(LibraryModel::GroupBy g, int i) : group_by(g), combo_box_index(i) {} + + LibraryModel::GroupBy group_by; + int combo_box_index; +}; + +struct tag_index {}; +struct tag_group_by {}; + +} // namespace + +class GroupByDialogPrivate { + private: + typedef multi_index_container< + Mapping, + indexed_by< + ordered_unique, + member >, + ordered_unique, + member > > > MappingContainer; + + public: + MappingContainer mapping_; +}; + +GroupByDialog::GroupByDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_GroupByDialog), p_(new GroupByDialogPrivate) { ui_->setupUi(this); Reset(); - mapping_.insert(Mapping(LibraryModel::GroupBy_None, 0)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Album, 1)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Artist, 2)); - mapping_.insert(Mapping(LibraryModel::GroupBy_AlbumArtist, 3)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Composer, 4)); - mapping_.insert(Mapping(LibraryModel::GroupBy_FileType, 5)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Genre, 6)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Year, 7)); - mapping_.insert(Mapping(LibraryModel::GroupBy_YearAlbum, 8)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Bitrate, 9)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Performer, 10)); - mapping_.insert(Mapping(LibraryModel::GroupBy_Grouping, 11)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_None, 0)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Album, 1)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Artist, 2)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_AlbumArtist, 3)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Composer, 4)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_FileType, 5)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Genre, 6)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Year, 7)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_YearAlbum, 8)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Bitrate, 9)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Performer, 10)); + p_->mapping_.insert(Mapping(LibraryModel::GroupBy_Grouping, 11)); connect(ui_->button_box->button(QDialogButtonBox::Reset), SIGNAL(clicked()), SLOT(Reset())); @@ -46,26 +87,29 @@ GroupByDialog::GroupByDialog(QWidget *parent) resize(sizeHint()); } -GroupByDialog::~GroupByDialog() { - delete ui_; -} +GroupByDialog::~GroupByDialog() {} void GroupByDialog::Reset() { - ui_->first->setCurrentIndex(2); // Artist - ui_->second->setCurrentIndex(1); // Album - ui_->third->setCurrentIndex(0); // None + ui_->first->setCurrentIndex(2); // Artist + ui_->second->setCurrentIndex(1); // Album + ui_->third->setCurrentIndex(0); // None } void GroupByDialog::accept() { emit Accepted(LibraryModel::Grouping( - mapping_.get().find(ui_->first->currentIndex())->group_by, - mapping_.get().find(ui_->second->currentIndex())->group_by, - mapping_.get().find(ui_->third->currentIndex())->group_by)); + p_->mapping_.get().find(ui_->first->currentIndex())->group_by, + p_->mapping_.get().find(ui_->second->currentIndex())->group_by, + p_->mapping_.get() + .find(ui_->third->currentIndex()) + ->group_by)); QDialog::accept(); } void GroupByDialog::LibraryGroupingChanged(const LibraryModel::Grouping& g) { - ui_->first->setCurrentIndex(mapping_.get().find(g[0])->combo_box_index); - ui_->second->setCurrentIndex(mapping_.get().find(g[1])->combo_box_index); - ui_->third->setCurrentIndex(mapping_.get().find(g[2])->combo_box_index); + ui_->first->setCurrentIndex( + p_->mapping_.get().find(g[0])->combo_box_index); + ui_->second->setCurrentIndex( + p_->mapping_.get().find(g[1])->combo_box_index); + ui_->third->setCurrentIndex( + p_->mapping_.get().find(g[2])->combo_box_index); } diff --git a/src/library/groupbydialog.h b/src/library/groupbydialog.h index fa8976d27..e1b3e8e3d 100644 --- a/src/library/groupbydialog.h +++ b/src/library/groupbydialog.h @@ -20,59 +20,33 @@ #include -#include -#include -#include +#include #include "librarymodel.h" +class GroupByDialogPrivate; class Ui_GroupByDialog; -using boost::multi_index_container; -using boost::multi_index::indexed_by; -using boost::multi_index::ordered_unique; -using boost::multi_index::tag; -using boost::multi_index::member; - class GroupByDialog : public QDialog { Q_OBJECT public: - GroupByDialog(QWidget *parent = 0); + GroupByDialog(QWidget* parent = nullptr); ~GroupByDialog(); public slots: void LibraryGroupingChanged(const LibraryModel::Grouping& g); void accept(); - signals: +signals: void Accepted(const LibraryModel::Grouping& g); private slots: void Reset(); private: - struct Mapping { - Mapping(LibraryModel::GroupBy g, int i) : group_by(g), combo_box_index(i) {} - - LibraryModel::GroupBy group_by; - int combo_box_index; - }; - - struct tag_index {}; - struct tag_group_by {}; - typedef multi_index_container< - Mapping, - indexed_by< - ordered_unique, - member >, - ordered_unique, - member > - > - > MappingContainer; - - MappingContainer mapping_; - Ui_GroupByDialog* ui_; + std::unique_ptr ui_; + std::unique_ptr p_; }; -#endif // GROUPBYDIALOG_H +#endif // GROUPBYDIALOG_H diff --git a/src/library/library.cpp b/src/library/library.cpp index 308ce7233..570817c58 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -34,18 +34,18 @@ const char* Library::kDirsTable = "directories"; const char* Library::kSubdirsTable = "subdirectories"; const char* Library::kFtsTable = "songs_fts"; -Library::Library(Application* app, QObject *parent) - : QObject(parent), - app_(app), - backend_(NULL), - model_(NULL), - watcher_(NULL), - watcher_thread_(NULL) -{ +Library::Library(Application* app, QObject* parent) + : QObject(parent), + app_(app), + backend_(nullptr), + model_(nullptr), + watcher_(nullptr), + watcher_thread_(nullptr) { backend_ = new LibraryBackend; backend()->moveToThread(app->database()->thread()); - backend_->Init(app->database(), kSongsTable, kDirsTable, kSubdirsTable, kFtsTable); + backend_->Init(app->database(), kSongsTable, kDirsTable, kSubdirsTable, + kFtsTable); using smart_playlists::Generator; using smart_playlists::GeneratorPtr; @@ -55,46 +55,64 @@ Library::Library(Application* app, QObject *parent) model_ = new LibraryModel(backend_, app_, this); model_->set_show_smart_playlists(true); - model_->set_default_smart_playlists(LibraryModel::DefaultGenerators() - << (LibraryModel::GeneratorList() - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "50 random tracks"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_Random, SearchTerm::Field_Title, 50))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Ever played"), Search( - Search::Type_And, Search::TermList() - << SearchTerm(SearchTerm::Field_PlayCount, SearchTerm::Op_GreaterThan, 0), - Search::Sort_Random, SearchTerm::Field_Title))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Never played"), Search( - Search::Type_And, Search::TermList() - << SearchTerm(SearchTerm::Field_PlayCount, SearchTerm::Op_Equals, 0), - Search::Sort_Random, SearchTerm::Field_Title))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Last played"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldDesc, SearchTerm::Field_LastPlayed))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Most played"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldDesc, SearchTerm::Field_PlayCount))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Favourite tracks"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldDesc, SearchTerm::Field_Score))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Newest tracks"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldDesc, SearchTerm::Field_DateCreated))) - ) << (LibraryModel::GeneratorList() - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "All tracks"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_FieldAsc, SearchTerm::Field_Artist, -1))) - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Least favourite tracks"), Search( - Search::Type_Or, Search::TermList() - << SearchTerm(SearchTerm::Field_Rating, SearchTerm::Op_LessThan, 0.6) - << SearchTerm(SearchTerm::Field_SkipCount, SearchTerm::Op_GreaterThan, 4), - Search::Sort_FieldDesc, SearchTerm::Field_SkipCount))) - ) << (LibraryModel::GeneratorList() - << GeneratorPtr(new QueryGenerator(QT_TRANSLATE_NOOP("Library", "Dynamic random mix"), Search( - Search::Type_All, Search::TermList(), - Search::Sort_Random, SearchTerm::Field_Title), true)) - ) - ); + model_->set_default_smart_playlists( + LibraryModel::DefaultGenerators() + << (LibraryModel::GeneratorList() + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "50 random tracks"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_Random, SearchTerm::Field_Title, 50))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Ever played"), + Search(Search::Type_And, + Search::TermList() + << SearchTerm(SearchTerm::Field_PlayCount, + SearchTerm::Op_GreaterThan, 0), + Search::Sort_Random, SearchTerm::Field_Title))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Never played"), + Search(Search::Type_And, + Search::TermList() + << SearchTerm(SearchTerm::Field_PlayCount, + SearchTerm::Op_Equals, 0), + Search::Sort_Random, SearchTerm::Field_Title))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Last played"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldDesc, SearchTerm::Field_LastPlayed))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Most played"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldDesc, SearchTerm::Field_PlayCount))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Favourite tracks"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldDesc, SearchTerm::Field_Score))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Newest tracks"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldDesc, + SearchTerm::Field_DateCreated)))) + << (LibraryModel::GeneratorList() + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "All tracks"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_FieldAsc, SearchTerm::Field_Artist, -1))) + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Least favourite tracks"), + Search(Search::Type_Or, + Search::TermList() + << SearchTerm(SearchTerm::Field_Rating, + SearchTerm::Op_LessThan, 0.6) + << SearchTerm(SearchTerm::Field_SkipCount, + SearchTerm::Op_GreaterThan, 4), + Search::Sort_FieldDesc, SearchTerm::Field_SkipCount)))) + << (LibraryModel::GeneratorList() + << GeneratorPtr(new QueryGenerator( + QT_TRANSLATE_NOOP("Library", "Dynamic random mix"), + Search(Search::Type_All, Search::TermList(), + Search::Sort_Random, SearchTerm::Field_Title), + true)))); // full rescan revisions full_rescan_revisions_[26] = tr("CUE sheet support"); @@ -116,42 +134,36 @@ void Library::Init() { watcher_->set_backend(backend_); watcher_->set_task_manager(app_->task_manager()); - connect(backend_, SIGNAL(DirectoryDiscovered(Directory,SubdirectoryList)), - watcher_, SLOT(AddDirectory(Directory,SubdirectoryList))); - connect(backend_, SIGNAL(DirectoryDeleted(Directory)), - watcher_, SLOT(RemoveDirectory(Directory))); - connect(watcher_, SIGNAL(NewOrUpdatedSongs(SongList)), - backend_, SLOT(AddOrUpdateSongs(SongList))); - connect(watcher_, SIGNAL(SongsMTimeUpdated(SongList)), - backend_, SLOT(UpdateMTimesOnly(SongList))); - connect(watcher_, SIGNAL(SongsDeleted(SongList)), - backend_, SLOT(MarkSongsUnavailable(SongList))); - connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), - backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); - connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), - backend_, SLOT(AddOrUpdateSubdirs(SubdirectoryList))); - connect(watcher_, SIGNAL(CompilationsNeedUpdating()), - backend_, SLOT(UpdateCompilations())); + connect(backend_, SIGNAL(DirectoryDiscovered(Directory, SubdirectoryList)), + watcher_, SLOT(AddDirectory(Directory, SubdirectoryList))); + connect(backend_, SIGNAL(DirectoryDeleted(Directory)), watcher_, + SLOT(RemoveDirectory(Directory))); + connect(watcher_, SIGNAL(NewOrUpdatedSongs(SongList)), backend_, + SLOT(AddOrUpdateSongs(SongList))); + connect(watcher_, SIGNAL(SongsMTimeUpdated(SongList)), backend_, + SLOT(UpdateMTimesOnly(SongList))); + connect(watcher_, SIGNAL(SongsDeleted(SongList)), backend_, + SLOT(MarkSongsUnavailable(SongList))); + connect(watcher_, SIGNAL(SongsReadded(SongList, bool)), backend_, + SLOT(MarkSongsUnavailable(SongList, bool))); + connect(watcher_, SIGNAL(SubdirsDiscovered(SubdirectoryList)), backend_, + SLOT(AddOrUpdateSubdirs(SubdirectoryList))); + connect(watcher_, SIGNAL(SubdirsMTimeUpdated(SubdirectoryList)), backend_, + SLOT(AddOrUpdateSubdirs(SubdirectoryList))); + connect(watcher_, SIGNAL(CompilationsNeedUpdating()), backend_, + SLOT(UpdateCompilations())); // This will start the watcher checking for updates backend_->LoadDirectoriesAsync(); } -void Library::IncrementalScan() { - watcher_->IncrementalScanAsync(); -} +void Library::IncrementalScan() { watcher_->IncrementalScanAsync(); } -void Library::FullScan() { - watcher_->FullScanAsync(); -} +void Library::FullScan() { watcher_->FullScanAsync(); } -void Library::PauseWatcher() { - watcher_->SetRescanPausedAsync(true); -} +void Library::PauseWatcher() { watcher_->SetRescanPausedAsync(true); } -void Library::ResumeWatcher() { - watcher_->SetRescanPausedAsync(false); -} +void Library::ResumeWatcher() { watcher_->SetRescanPausedAsync(false); } void Library::ReloadSettings() { backend_->ReloadSettingsAsync(); @@ -161,12 +173,13 @@ void Library::ReloadSettings() { void Library::WriteAllSongsStatisticsToFiles() { const SongList all_songs = backend_->GetAllSongs(); - const int task_id = app_->task_manager()->StartTask(tr("Saving songs statistics into songs files")); + const int task_id = app_->task_manager()->StartTask( + tr("Saving songs statistics into songs files")); app_->task_manager()->SetTaskBlocksLibraryScans(task_id); const int nb_songs = all_songs.size(); int i = 0; - foreach (const Song& song, all_songs) { + for (const Song& song : all_songs) { TagReaderClient::Instance()->UpdateSongStatisticsBlocking(song); TagReaderClient::Instance()->UpdateSongRatingBlocking(song); app_->task_manager()->SetTaskProgress(task_id, ++i, nb_songs); diff --git a/src/library/library.h b/src/library/library.h index f174845ea..32b6c9a9b 100644 --- a/src/library/library.h +++ b/src/library/library.h @@ -21,8 +21,6 @@ #include #include -#include - class Application; class Database; class LibraryBackend; @@ -47,7 +45,9 @@ class Library : public QObject { LibraryBackend* backend() const { return backend_; } LibraryModel* model() const { return model_; } - QString full_rescan_reason(int schema_version) const { return full_rescan_revisions_.value(schema_version, QString()); } + QString full_rescan_reason(int schema_version) const { + return full_rescan_revisions_.value(schema_version, QString()); + } void WriteAllSongsStatisticsToFiles(); @@ -70,7 +70,8 @@ class Library : public QObject { LibraryWatcher* watcher_; QThread* watcher_thread_; - // DB schema versions which should trigger a full library rescan (each of those with + // DB schema versions which should trigger a full library rescan (each of + // those with // a short reason why). QHash full_rescan_revisions_; }; diff --git a/src/library/librarybackend.cpp b/src/library/librarybackend.cpp index 78c73b396..372aab3d7 100644 --- a/src/library/librarybackend.cpp +++ b/src/library/librarybackend.cpp @@ -37,18 +37,18 @@ const char* LibraryBackend::kSettingsGroup = "LibraryBackend"; const char* LibraryBackend::kNewScoreSql = "case when playcount <= 0 then (%1 * 100 + score) / 2" - " else (score * (playcount + skipcount) + %1 * 100) / (playcount + skipcount + 1)" + " else (score * (playcount + skipcount) + %1 * 100) / (playcount + " + "skipcount + 1)" " end"; -LibraryBackend::LibraryBackend(QObject *parent) - : LibraryBackendInterface(parent), - save_statistics_in_file_(false), - save_ratings_in_file_(false) -{ -} +LibraryBackend::LibraryBackend(QObject* parent) + : LibraryBackendInterface(parent), + save_statistics_in_file_(false), + save_ratings_in_file_(false) {} void LibraryBackend::Init(Database* db, const QString& songs_table, - const QString& dirs_table, const QString& subdirs_table, + const QString& dirs_table, + const QString& subdirs_table, const QString& fts_table) { db_ = db; songs_table_ = songs_table; @@ -63,7 +63,8 @@ void LibraryBackend::LoadDirectoriesAsync() { } void LibraryBackend::UpdateTotalSongCountAsync() { - metaObject()->invokeMethod(this, "UpdateTotalSongCount", Qt::QueuedConnection); + metaObject()->invokeMethod(this, "UpdateTotalSongCount", + Qt::QueuedConnection); } void LibraryBackend::IncrementPlayCountAsync(int id) { @@ -92,7 +93,7 @@ void LibraryBackend::LoadDirectories() { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - foreach (const Directory& dir, dirs) { + for (const Directory& dir : dirs) { emit DirectoryDiscovered(dir, SubdirsInDirectory(dir.id, db)); } } @@ -104,7 +105,8 @@ void LibraryBackend::ChangeDirPath(int id, const QString& old_path, ScopedTransaction t(&db); // Do the dirs table - QSqlQuery q(QString("UPDATE %1 SET path=:path WHERE ROWID=:id").arg(dirs_table_), db); + QSqlQuery q( + QString("UPDATE %1 SET path=:path WHERE ROWID=:id").arg(dirs_table_), db); q.bindValue(":path", new_path); q.bindValue(":id", id); q.exec(); @@ -116,16 +118,24 @@ void LibraryBackend::ChangeDirPath(int id, const QString& old_path, const int path_len = old_url.length(); // Do the subdirs table - q = QSqlQuery(QString("UPDATE %1 SET path=:path || substr(path, %2)" - " WHERE directory=:id").arg(subdirs_table_).arg(path_len), db); + q = QSqlQuery(QString( + "UPDATE %1 SET path=:path || substr(path, %2)" + " WHERE directory=:id") + .arg(subdirs_table_) + .arg(path_len), + db); q.bindValue(":path", new_url); q.bindValue(":id", id); q.exec(); if (db_->CheckErrors(q)) return; // Do the songs table - q = QSqlQuery(QString("UPDATE %1 SET filename=:path || substr(filename, %2)" - " WHERE directory=:id").arg(songs_table_).arg(path_len), db); + q = QSqlQuery(QString( + "UPDATE %1 SET filename=:path || substr(filename, %2)" + " WHERE directory=:id") + .arg(songs_table_) + .arg(path_len), + db); q.bindValue(":path", new_url); q.bindValue(":id", id); q.exec(); @@ -160,9 +170,11 @@ SubdirectoryList LibraryBackend::SubdirsInDirectory(int id) { return SubdirsInDirectory(id, db); } -SubdirectoryList LibraryBackend::SubdirsInDirectory(int id, QSqlDatabase &db) { - QSqlQuery q(QString("SELECT path, mtime FROM %1" - " WHERE directory = :dir").arg(subdirs_table_), db); +SubdirectoryList LibraryBackend::SubdirsInDirectory(int id, QSqlDatabase& db) { + QSqlQuery q(QString( + "SELECT path, mtime FROM %1" + " WHERE directory = :dir").arg(subdirs_table_), + db); q.bindValue(":dir", id); q.exec(); if (db_->CheckErrors(q)) return SubdirectoryList(); @@ -183,7 +195,9 @@ void LibraryBackend::UpdateTotalSongCount() { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("SELECT COUNT(*) FROM %1 WHERE unavailable = 0").arg(songs_table_), db); + QSqlQuery q(QString("SELECT COUNT(*) FROM %1 WHERE unavailable = 0") + .arg(songs_table_), + db); q.exec(); if (db_->CheckErrors(q)) return; if (!q.next()) return; @@ -195,17 +209,20 @@ void LibraryBackend::AddDirectory(const QString& path) { QString canonical_path = QFileInfo(path).canonicalFilePath(); QString db_path = canonical_path; - if (Application::kIsPortable - && Utilities::UrlOnSameDriveAsClementine(QUrl::fromLocalFile(canonical_path))) { - db_path = Utilities::GetRelativePathToClementineBin(QUrl::fromLocalFile(db_path)).toLocalFile(); + if (Application::kIsPortable && Utilities::UrlOnSameDriveAsClementine( + QUrl::fromLocalFile(canonical_path))) { + db_path = Utilities::GetRelativePathToClementineBin( + QUrl::fromLocalFile(db_path)).toLocalFile(); qLog(Debug) << "db_path" << db_path; } QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("INSERT INTO %1 (path, subdirs)" - " VALUES (:path, 1)").arg(dirs_table_), db); + QSqlQuery q(QString( + "INSERT INTO %1 (path, subdirs)" + " VALUES (:path, 1)").arg(dirs_table_), + db); q.bindValue(":path", db_path); q.exec(); if (db_->CheckErrors(q)) return; @@ -227,15 +244,15 @@ void LibraryBackend::RemoveDirectory(const Directory& dir) { ScopedTransaction transaction(&db); // Delete the subdirs that were in this directory - QSqlQuery q(QString("DELETE FROM %1 WHERE directory = :id") - .arg(subdirs_table_), db); + QSqlQuery q( + QString("DELETE FROM %1 WHERE directory = :id").arg(subdirs_table_), db); q.bindValue(":id", dir.id); q.exec(); if (db_->CheckErrors(q)) return; // Now remove the directory itself - q = QSqlQuery(QString("DELETE FROM %1 WHERE ROWID = :id") - .arg(dirs_table_), db); + q = QSqlQuery(QString("DELETE FROM %1 WHERE ROWID = :id").arg(dirs_table_), + db); q.bindValue(":id", dir.id); q.exec(); if (db_->CheckErrors(q)) return; @@ -249,9 +266,10 @@ SongList LibraryBackend::FindSongsInDirectory(int id) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("SELECT ROWID, " + Song::kColumnSpec + - " FROM %1 WHERE directory = :directory") - .arg(songs_table_), db); + QSqlQuery q( + QString("SELECT ROWID, " + Song::kColumnSpec + + " FROM %1 WHERE directory = :directory").arg(songs_table_), + db); q.bindValue(":directory", id); q.exec(); if (db_->CheckErrors(q)) return SongList(); @@ -268,21 +286,28 @@ SongList LibraryBackend::FindSongsInDirectory(int id) { void LibraryBackend::AddOrUpdateSubdirs(const SubdirectoryList& subdirs) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery find_query(QString("SELECT ROWID FROM %1" - " WHERE directory = :id AND path = :path") - .arg(subdirs_table_), db); - QSqlQuery add_query(QString("INSERT INTO %1 (directory, path, mtime)" - " VALUES (:id, :path, :mtime)") - .arg(subdirs_table_), db); - QSqlQuery update_query(QString("UPDATE %1 SET mtime = :mtime" - " WHERE directory = :id AND path = :path") - .arg(subdirs_table_), db); - QSqlQuery delete_query(QString("DELETE FROM %1" - " WHERE directory = :id AND path = :path") - .arg(subdirs_table_), db); + QSqlQuery find_query( + QString( + "SELECT ROWID FROM %1" + " WHERE directory = :id AND path = :path").arg(subdirs_table_), + db); + QSqlQuery add_query(QString( + "INSERT INTO %1 (directory, path, mtime)" + " VALUES (:id, :path, :mtime)").arg(subdirs_table_), + db); + QSqlQuery update_query( + QString( + "UPDATE %1 SET mtime = :mtime" + " WHERE directory = :id AND path = :path").arg(subdirs_table_), + db); + QSqlQuery delete_query( + QString( + "DELETE FROM %1" + " WHERE directory = :id AND path = :path").arg(subdirs_table_), + db); ScopedTransaction transaction(&db); - foreach (const Subdirectory& subdir, subdirs) { + for (const Subdirectory& subdir : subdirs) { if (subdir.mtime == 0) { // Delete the subdirectory delete_query.bindValue(":id", subdir.directory_id); @@ -318,25 +343,32 @@ void LibraryBackend::AddOrUpdateSongs(const SongList& songs) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery check_dir(QString("SELECT ROWID FROM %1 WHERE ROWID = :id") - .arg(dirs_table_), db); - QSqlQuery add_song(QString("INSERT INTO %1 (" + Song::kColumnSpec + ")" - " VALUES (" + Song::kBindSpec + ")") - .arg(songs_table_), db); + QSqlQuery check_dir( + QString("SELECT ROWID FROM %1 WHERE ROWID = :id").arg(dirs_table_), db); + QSqlQuery add_song(QString("INSERT INTO %1 (" + Song::kColumnSpec + + ")" + " VALUES (" + + Song::kBindSpec + ")").arg(songs_table_), + db); QSqlQuery update_song(QString("UPDATE %1 SET " + Song::kUpdateSpec + - " WHERE ROWID = :id").arg(songs_table_), db); - QSqlQuery add_song_fts(QString("INSERT INTO %1 (ROWID, " + Song::kFtsColumnSpec + ")" - " VALUES (:id, " + Song::kFtsBindSpec + ")") - .arg(fts_table_), db); + " WHERE ROWID = :id").arg(songs_table_), + db); + QSqlQuery add_song_fts( + QString("INSERT INTO %1 (ROWID, " + Song::kFtsColumnSpec + + ")" + " VALUES (:id, " + + Song::kFtsBindSpec + ")").arg(fts_table_), + db); QSqlQuery update_song_fts(QString("UPDATE %1 SET " + Song::kFtsUpdateSpec + - " WHERE ROWID = :id").arg(fts_table_), db); + " WHERE ROWID = :id").arg(fts_table_), + db); ScopedTransaction transaction(&db); SongList added_songs; SongList deleted_songs; - foreach (const Song& song, songs) { + for (const Song& song : songs) { // Do a sanity check first - make sure the song's directory still exists // This is to fix a possible race condition when a directory is removed // while LibraryWatcher is scanning it. @@ -345,8 +377,7 @@ void LibraryBackend::AddOrUpdateSongs(const SongList& songs) { check_dir.exec(); if (db_->CheckErrors(check_dir)) continue; - if (!check_dir.next()) - continue; // Directory didn't exist + if (!check_dir.next()) continue; // Directory didn't exist } if (song.id() == -1) { @@ -372,8 +403,7 @@ void LibraryBackend::AddOrUpdateSongs(const SongList& songs) { } else { // Get the previous song data first Song old_song(GetSongById(song.id())); - if (!old_song.is_valid()) - continue; + if (!old_song.is_valid()) continue; // Update song.BindToQuery(&update_song); @@ -393,11 +423,9 @@ void LibraryBackend::AddOrUpdateSongs(const SongList& songs) { transaction.Commit(); - if (!deleted_songs.isEmpty()) - emit SongsDeleted(deleted_songs); + if (!deleted_songs.isEmpty()) emit SongsDeleted(deleted_songs); - if (!added_songs.isEmpty()) - emit SongsDiscovered(added_songs); + if (!added_songs.isEmpty()) emit SongsDiscovered(added_songs); UpdateTotalSongCountAsync(); } @@ -407,10 +435,11 @@ void LibraryBackend::UpdateMTimesOnly(const SongList& songs) { QSqlDatabase db(db_->Connect()); QSqlQuery q(QString("UPDATE %1 SET mtime = :mtime WHERE ROWID = :id") - .arg(songs_table_), db); + .arg(songs_table_), + db); ScopedTransaction transaction(&db); - foreach (const Song& song, songs) { + for (const Song& song : songs) { q.bindValue(":mtime", song.mtime()); q.bindValue(":id", song.id()); q.exec(); @@ -419,17 +448,17 @@ void LibraryBackend::UpdateMTimesOnly(const SongList& songs) { transaction.Commit(); } -void LibraryBackend::DeleteSongs(const SongList &songs) { +void LibraryBackend::DeleteSongs(const SongList& songs) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery remove(QString("DELETE FROM %1 WHERE ROWID = :id") - .arg(songs_table_), db); - QSqlQuery remove_fts(QString("DELETE FROM %1 WHERE ROWID = :id") - .arg(fts_table_), db); + QSqlQuery remove( + QString("DELETE FROM %1 WHERE ROWID = :id").arg(songs_table_), db); + QSqlQuery remove_fts( + QString("DELETE FROM %1 WHERE ROWID = :id").arg(fts_table_), db); ScopedTransaction transaction(&db); - foreach (const Song& song, songs) { + for (const Song& song : songs) { remove.bindValue(":id", song.id()); remove.exec(); db_->CheckErrors(remove); @@ -445,15 +474,18 @@ void LibraryBackend::DeleteSongs(const SongList &songs) { UpdateTotalSongCountAsync(); } -void LibraryBackend::MarkSongsUnavailable(const SongList &songs) { +void LibraryBackend::MarkSongsUnavailable(const SongList& songs, + bool unavailable) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery remove(QString("UPDATE %1 SET unavailable = 1 WHERE ROWID = :id") - .arg(songs_table_), db); + QSqlQuery remove(QString("UPDATE %1 SET unavailable = %2 WHERE ROWID = :id") + .arg(songs_table_) + .arg(int(unavailable)), + db); ScopedTransaction transaction(&db); - foreach (const Song& song, songs) { + for (const Song& song : songs) { remove.bindValue(":id", song.id()); remove.exec(); db_->CheckErrors(remove); @@ -464,7 +496,8 @@ void LibraryBackend::MarkSongsUnavailable(const SongList &songs) { UpdateTotalSongCountAsync(); } -QStringList LibraryBackend::GetAll(const QString& column, const QueryOptions& opt) { +QStringList LibraryBackend::GetAll(const QString& column, + const QueryOptions& opt) { LibraryQuery query(opt); query.SetColumnSpec("DISTINCT " + column); query.AddCompilationRequirement(false); @@ -499,24 +532,26 @@ QStringList LibraryBackend::GetAllArtistsWithAlbums(const QueryOptions& opt) { return ret; } -LibraryBackend::AlbumList LibraryBackend::GetAllAlbums(const QueryOptions &opt) { +LibraryBackend::AlbumList LibraryBackend::GetAllAlbums( + const QueryOptions& opt) { return GetAlbums(QString(), false, opt); } -LibraryBackend::AlbumList LibraryBackend::GetAlbumsByArtist(const QString& artist, - const QueryOptions& opt) { +LibraryBackend::AlbumList LibraryBackend::GetAlbumsByArtist( + const QString& artist, const QueryOptions& opt) { return GetAlbums(artist, false, opt); } - -SongList LibraryBackend::GetSongsByAlbum(const QString& album, const QueryOptions& opt) { +SongList LibraryBackend::GetSongsByAlbum(const QString& album, + const QueryOptions& opt) { LibraryQuery query(opt); query.AddCompilationRequirement(false); query.AddWhere("album", album); return ExecLibraryQuery(&query); } -SongList LibraryBackend::GetSongs(const QString& artist, const QString& album, const QueryOptions& opt) { +SongList LibraryBackend::GetSongs(const QString& artist, const QString& album, + const QueryOptions& opt) { LibraryQuery query(opt); query.AddCompilationRequirement(false); query.AddWhere("artist", artist); @@ -549,7 +584,7 @@ SongList LibraryBackend::GetSongsById(const QList& ids) { QSqlDatabase db(db_->Connect()); QStringList str_ids; - foreach (int id, ids) { + for (int id : ids) { str_ids << QString::number(id); } @@ -563,17 +598,22 @@ SongList LibraryBackend::GetSongsById(const QStringList& ids) { return GetSongsById(ids, db); } -SongList LibraryBackend::GetSongsByForeignId( - const QStringList& ids, const QString& table, const QString& column) { +SongList LibraryBackend::GetSongsByForeignId(const QStringList& ids, + const QString& table, + const QString& column) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QString in = ids.join(","); - QSqlQuery q(QString("SELECT %2.ROWID, " + Song::kColumnSpec + ", %2.%3" - " FROM %2, %1" - " WHERE %2.%3 IN (%4) AND %1.ROWID = %2.ROWID AND unavailable = 0") - .arg(songs_table_, table, column, in), db); + QSqlQuery q( + QString( + "SELECT %2.ROWID, " + Song::kColumnSpec + + ", %2.%3" + " FROM %2, %1" + " WHERE %2.%3 IN (%4) AND %1.ROWID = %2.ROWID AND unavailable = 0") + .arg(songs_table_, table, column, in), + db); q.exec(); if (db_->CheckErrors(q)) return SongList(); @@ -581,8 +621,7 @@ SongList LibraryBackend::GetSongsByForeignId( while (q.next()) { const QString foreign_id = q.value(Song::kColumns.count() + 1).toString(); const int index = ids.indexOf(foreign_id); - if (index == -1) - continue; + if (index == -1) continue; ret[index].InitFromQuery(q, true); } @@ -591,16 +630,18 @@ SongList LibraryBackend::GetSongsByForeignId( Song LibraryBackend::GetSongById(int id, QSqlDatabase& db) { SongList list = GetSongsById(QStringList() << QString::number(id), db); - if (list.isEmpty()) - return Song(); + if (list.isEmpty()) return Song(); return list.first(); } -SongList LibraryBackend::GetSongsById(const QStringList& ids, QSqlDatabase& db) { +SongList LibraryBackend::GetSongsById(const QStringList& ids, + QSqlDatabase& db) { QString in = ids.join(","); - QSqlQuery q(QString("SELECT ROWID, " + Song::kColumnSpec + " FROM %1" - " WHERE ROWID IN (%2)").arg(songs_table_, in), db); + QSqlQuery q(QString("SELECT ROWID, " + Song::kColumnSpec + + " FROM %1" + " WHERE ROWID IN (%2)").arg(songs_table_, in), + db); q.exec(); if (db_->CheckErrors(q)) return SongList(); @@ -633,7 +674,7 @@ SongList LibraryBackend::GetSongsByUrl(const QUrl& url) { SongList songlist; if (ExecQuery(&query)) { - while(query.Next()) { + while (query.Next()) { Song song; song.InitFromQuery(query, true); @@ -643,11 +684,13 @@ SongList LibraryBackend::GetSongsByUrl(const QUrl& url) { return songlist; } -LibraryBackend::AlbumList LibraryBackend::GetCompilationAlbums(const QueryOptions& opt) { +LibraryBackend::AlbumList LibraryBackend::GetCompilationAlbums( + const QueryOptions& opt) { return GetAlbums(QString(), true, opt); } -SongList LibraryBackend::GetCompilationSongs(const QString& album, const QueryOptions& opt) { +SongList LibraryBackend::GetCompilationSongs(const QString& album, + const QueryOptions& opt) { LibraryQuery query(opt); query.SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); query.AddCompilationRequirement(true); @@ -669,11 +712,15 @@ void LibraryBackend::UpdateCompilations() { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - // Look for albums that have songs by more than one 'effective album artist' in the same + // Look for albums that have songs by more than one 'effective album artist' + // in the same // directory - QSqlQuery q(QString("SELECT effective_albumartist, album, filename, sampler " - "FROM %1 WHERE unavailable = 0 ORDER BY album").arg(songs_table_), db); + QSqlQuery q( + QString( + "SELECT effective_albumartist, album, filename, sampler " + "FROM %1 WHERE unavailable = 0 ORDER BY album").arg(songs_table_), + db); q.exec(); if (db_->CheckErrors(q)) return; @@ -685,49 +732,61 @@ void LibraryBackend::UpdateCompilations() { bool sampler = q.value(3).toBool(); // Ignore songs that don't have an album field set - if (album.isEmpty()) - continue; + if (album.isEmpty()) continue; // Find the directory the song is in int last_separator = filename.lastIndexOf('/'); - if (last_separator == -1) - continue; + if (last_separator == -1) continue; CompilationInfo& info = compilation_info[album]; info.artists.insert(artist); info.directories.insert(filename.left(last_separator)); - if (sampler) info.has_samplers = true; - else info.has_not_samplers = true; + if (sampler) + info.has_samplers = true; + else + info.has_not_samplers = true; } // Now mark the songs that we think are in compilations - QSqlQuery update(QString("UPDATE %1" - " SET sampler = :sampler," - " effective_compilation = ((compilation OR :sampler OR forced_compilation_on) AND NOT forced_compilation_off) + 0" - " WHERE album = :album AND unavailable = 0").arg(songs_table_), db); - QSqlQuery find_songs(QString("SELECT ROWID, " + Song::kColumnSpec + " FROM %1" - " WHERE album = :album AND sampler = :sampler AND unavailable = 0") - .arg(songs_table_), db); + QSqlQuery update( + QString( + "UPDATE %1" + " SET sampler = :sampler," + " effective_compilation = ((compilation OR :sampler OR " + "forced_compilation_on) AND NOT forced_compilation_off) + 0" + " WHERE album = :album AND unavailable = 0").arg(songs_table_), + db); + QSqlQuery find_songs( + QString( + "SELECT ROWID, " + Song::kColumnSpec + + " FROM %1" + " WHERE album = :album AND sampler = :sampler AND unavailable = 0") + .arg(songs_table_), + db); SongList deleted_songs; SongList added_songs; ScopedTransaction transaction(&db); - QMap::const_iterator it = compilation_info.constBegin(); - for ( ; it != compilation_info.constEnd() ; ++it) { + QMap::const_iterator it = + compilation_info.constBegin(); + for (; it != compilation_info.constEnd(); ++it) { const CompilationInfo& info = it.value(); QString album(it.key()); - // If there were more 'effective album artists' than there were directories for this album, + // If there were more 'effective album artists' than there were directories + // for this album, // then it's a compilation if (info.artists.count() > info.directories.count()) { if (info.has_not_samplers) - UpdateCompilations(find_songs, update, deleted_songs, added_songs, album, 1); + UpdateCompilations(find_songs, update, deleted_songs, added_songs, + album, 1); } else { if (info.has_samplers) - UpdateCompilations(find_songs, update, deleted_songs, added_songs, album, 0); + UpdateCompilations(find_songs, update, deleted_songs, added_songs, + album, 0); } } @@ -739,8 +798,10 @@ void LibraryBackend::UpdateCompilations() { } } -void LibraryBackend::UpdateCompilations(QSqlQuery& find_songs, QSqlQuery& update, - SongList& deleted_songs, SongList& added_songs, +void LibraryBackend::UpdateCompilations(QSqlQuery& find_songs, + QSqlQuery& update, + SongList& deleted_songs, + SongList& added_songs, const QString& album, int sampler) { // Get songs that were already in that album, so we can tell the model // they've been updated @@ -768,8 +829,9 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist, AlbumList ret; LibraryQuery query(opt); - query.SetColumnSpec("album, artist, compilation, sampler, art_automatic, " - "art_manual, filename"); + query.SetColumnSpec( + "album, artist, compilation, sampler, art_automatic, " + "art_manual, filename"); query.SetOrderBy("album"); if (compilation) { @@ -794,8 +856,7 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist, info.art_manual = query.Value(5).toString(); info.first_url = QUrl::fromEncoded(query.Value(6).toByteArray()); - if (info.artist == last_artist && info.album_name == last_album) - continue; + if (info.artist == last_artist && info.album_name == last_album) continue; ret << info; @@ -806,7 +867,8 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist, return ret; } -LibraryBackend::Album LibraryBackend::GetAlbumArt(const QString& artist, const QString& album) { +LibraryBackend::Album LibraryBackend::GetAlbumArt(const QString& artist, + const QString& album) { Album ret; ret.album_name = album; ret.artist = artist; @@ -828,18 +890,17 @@ LibraryBackend::Album LibraryBackend::GetAlbumArt(const QString& artist, const Q return ret; } -void LibraryBackend::UpdateManualAlbumArtAsync(const QString &artist, - const QString &album, - const QString &art) { +void LibraryBackend::UpdateManualAlbumArtAsync(const QString& artist, + const QString& album, + const QString& art) { metaObject()->invokeMethod(this, "UpdateManualAlbumArt", Qt::QueuedConnection, - Q_ARG(QString, artist), - Q_ARG(QString, album), + Q_ARG(QString, artist), Q_ARG(QString, album), Q_ARG(QString, art)); } -void LibraryBackend::UpdateManualAlbumArt(const QString &artist, - const QString &album, - const QString &art) { +void LibraryBackend::UpdateManualAlbumArt(const QString& artist, + const QString& album, + const QString& art) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); @@ -847,8 +908,7 @@ void LibraryBackend::UpdateManualAlbumArt(const QString &artist, LibraryQuery query; query.SetColumnSpec("ROWID, " + Song::kColumnSpec); query.AddWhere("album", album); - if (!artist.isNull()) - query.AddWhere("artist", artist); + if (!artist.isNull()) query.AddWhere("artist", artist); if (!ExecQuery(&query)) return; @@ -859,23 +919,21 @@ void LibraryBackend::UpdateManualAlbumArt(const QString &artist, deleted_songs << song; } - // Update the songs - QString sql(QString("UPDATE %1 SET art_manual = :art" - " WHERE album = :album AND unavailable = 0").arg(songs_table_)); - if (!artist.isNull()) - sql += " AND artist = :artist"; + QString sql( + QString( + "UPDATE %1 SET art_manual = :art" + " WHERE album = :album AND unavailable = 0").arg(songs_table_)); + if (!artist.isNull()) sql += " AND artist = :artist"; QSqlQuery q(sql, db); q.bindValue(":art", art); q.bindValue(":album", album); - if (!artist.isNull()) - q.bindValue(":artist", artist); + if (!artist.isNull()) q.bindValue(":artist", artist); q.exec(); db_->CheckErrors(q); - // Now get the updated songs if (!ExecQuery(&query)) return; @@ -892,18 +950,18 @@ void LibraryBackend::UpdateManualAlbumArt(const QString &artist, } } -void LibraryBackend::ForceCompilation(const QString& album, const QList& artists, bool on) { +void LibraryBackend::ForceCompilation(const QString& album, + const QList& artists, bool on) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); SongList deleted_songs, added_songs; - foreach(const QString &artist, artists) { + for (const QString& artist : artists) { // Get the songs before they're updated LibraryQuery query; query.SetColumnSpec("ROWID, " + Song::kColumnSpec); query.AddWhere("album", album); - if (!artist.isNull()) - query.AddWhere("artist", artist); + if (!artist.isNull()) query.AddWhere("artist", artist); if (!ExecQuery(&query)) return; @@ -914,19 +972,20 @@ void LibraryBackend::ForceCompilation(const QString& album, const QList } // Update the songs - QString sql(QString("UPDATE %1 SET forced_compilation_on = :forced_compilation_on," - " forced_compilation_off = :forced_compilation_off," - " effective_compilation = ((compilation OR sampler OR :forced_compilation_on) AND NOT :forced_compilation_off) + 0" - " WHERE album = :album AND unavailable = 0").arg(songs_table_)); - if (!artist.isEmpty()) - sql += " AND artist = :artist"; + QString sql( + QString( + "UPDATE %1 SET forced_compilation_on = :forced_compilation_on," + " forced_compilation_off = :forced_compilation_off," + " effective_compilation = ((compilation OR sampler OR " + ":forced_compilation_on) AND NOT :forced_compilation_off) + 0" + " WHERE album = :album AND unavailable = 0").arg(songs_table_)); + if (!artist.isEmpty()) sql += " AND artist = :artist"; QSqlQuery q(sql, db); q.bindValue(":forced_compilation_on", on ? 1 : 0); q.bindValue(":forced_compilation_off", on ? 0 : 1); q.bindValue(":album", album); - if (!artist.isEmpty()) - q.bindValue(":artist", artist); + if (!artist.isEmpty()) q.bindValue(":artist", artist); q.exec(); db_->CheckErrors(q); @@ -947,7 +1006,7 @@ void LibraryBackend::ForceCompilation(const QString& album, const QList } } -bool LibraryBackend::ExecQuery(LibraryQuery *q) { +bool LibraryBackend::ExecQuery(LibraryQuery* q) { return !db_->CheckErrors(q->Exec(db_->Connect(), songs_table_, fts_table_)); } @@ -962,8 +1021,7 @@ SongList LibraryBackend::FindSongs(const smart_playlists::Search& search) { SongList ret; QSqlQuery query(sql, db); query.exec(); - if (db_->CheckErrors(query)) - return ret; + if (db_->CheckErrors(query)) return ret; // Read the results while (query.next()) { @@ -978,84 +1036,86 @@ SongList LibraryBackend::GetAllSongs() { // Get all the songs! return FindSongs(smart_playlists::Search( smart_playlists::Search::Type_All, smart_playlists::Search::TermList(), - smart_playlists::Search::Sort_FieldAsc, smart_playlists::SearchTerm::Field_Artist, -1)); + smart_playlists::Search::Sort_FieldAsc, + smart_playlists::SearchTerm::Field_Artist, -1)); } void LibraryBackend::IncrementPlayCount(int id) { - if (id == -1) - return; + if (id == -1) return; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("UPDATE %1 SET playcount = playcount + 1," - " lastplayed = :now," - " score = " + QString(kNewScoreSql).arg("1.0") + - " WHERE ROWID = :id").arg(songs_table_), db); + QSqlQuery q(QString( + "UPDATE %1 SET playcount = playcount + 1," + " lastplayed = :now," + " score = " + + QString(kNewScoreSql).arg("1.0") + + " WHERE ROWID = :id").arg(songs_table_), + db); q.bindValue(":now", QDateTime::currentDateTime().toTime_t()); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; Song new_song = GetSongById(id, db); emit SongsStatisticsChanged(SongList() << new_song); } void LibraryBackend::IncrementSkipCount(int id, float progress) { - if (id == -1) - return; + if (id == -1) return; progress = qBound(0.0f, progress, 1.0f); QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("UPDATE %1 SET skipcount = skipcount + 1," - " score = " + QString(kNewScoreSql).arg(progress) + - " WHERE ROWID = :id").arg(songs_table_), db); + QSqlQuery q(QString( + "UPDATE %1 SET skipcount = skipcount + 1," + " score = " + + QString(kNewScoreSql).arg(progress) + + " WHERE ROWID = :id").arg(songs_table_), + db); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; Song new_song = GetSongById(id, db); emit SongsStatisticsChanged(SongList() << new_song); } void LibraryBackend::ResetStatistics(int id) { - if (id == -1) - return; + if (id == -1) return; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QSqlQuery q(QString( - "UPDATE %1 SET playcount = 0, skipcount = 0," - " lastplayed = -1, score = 0" - " WHERE ROWID = :id").arg(songs_table_), db); + "UPDATE %1 SET playcount = 0, skipcount = 0," + " lastplayed = -1, score = 0" + " WHERE ROWID = :id").arg(songs_table_), + db); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; Song new_song = GetSongById(id, db); emit SongsStatisticsChanged(SongList() << new_song); } void LibraryBackend::UpdateSongRating(int id, float rating) { - if (id == -1) - return; + if (id == -1) return; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q(QString("UPDATE %1 SET rating = :rating" - " WHERE ROWID = :id").arg(songs_table_), db); + QSqlQuery q(QString( + "UPDATE %1 SET rating = :rating" + " WHERE ROWID = :id").arg(songs_table_), + db); q.bindValue(":rating", rating); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; Song new_song = GetSongById(id, db); emit SongsRatingChanged(SongList() << new_song); @@ -1069,13 +1129,11 @@ void LibraryBackend::DeleteAll() { QSqlQuery q("DELETE FROM " + songs_table_, db); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; q = QSqlQuery("DELETE FROM " + fts_table_, db); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; t.Commit(); } @@ -1093,14 +1151,18 @@ void LibraryBackend::ReloadSettings() { // Statistics { - bool save_statistics_in_file = s.value("save_statistics_in_file", false).toBool(); - // Compare with previous value to know if we should connect, disconnect or nothing + bool save_statistics_in_file = + s.value("save_statistics_in_file", false).toBool(); + // Compare with previous value to know if we should connect, disconnect or + // nothing if (save_statistics_in_file_ && !save_statistics_in_file) { disconnect(this, SIGNAL(SongsStatisticsChanged(SongList)), - TagReaderClient::Instance(), SLOT(UpdateSongsStatistics(SongList))); + TagReaderClient::Instance(), + SLOT(UpdateSongsStatistics(SongList))); } else if (!save_statistics_in_file_ && save_statistics_in_file) { connect(this, SIGNAL(SongsStatisticsChanged(SongList)), - TagReaderClient::Instance(), SLOT(UpdateSongsStatistics(SongList))); + TagReaderClient::Instance(), + SLOT(UpdateSongsStatistics(SongList))); } // Save old value save_statistics_in_file_ = save_statistics_in_file; @@ -1109,13 +1171,15 @@ void LibraryBackend::ReloadSettings() { // Rating { bool save_ratings_in_file = s.value("save_ratings_in_file", false).toBool(); - // Compare with previous value to know if we should connect, disconnect or nothing + // Compare with previous value to know if we should connect, disconnect or + // nothing if (save_ratings_in_file_ && !save_ratings_in_file) { disconnect(this, SIGNAL(SongsRatingChanged(SongList)), - TagReaderClient::Instance(), SLOT(UpdateSongsRating(SongList))); + TagReaderClient::Instance(), + SLOT(UpdateSongsRating(SongList))); } else if (!save_ratings_in_file_ && save_ratings_in_file) { connect(this, SIGNAL(SongsRatingChanged(SongList)), - TagReaderClient::Instance(), SLOT(UpdateSongsRating(SongList))); + TagReaderClient::Instance(), SLOT(UpdateSongsRating(SongList))); } // Save old value save_ratings_in_file_ = save_ratings_in_file; diff --git a/src/library/librarybackend.h b/src/library/librarybackend.h index b5026d41f..907fe29a1 100644 --- a/src/library/librarybackend.h +++ b/src/library/librarybackend.h @@ -28,13 +28,15 @@ class Database; -namespace smart_playlists { class Search; } +namespace smart_playlists { +class Search; +} class LibraryBackendInterface : public QObject { Q_OBJECT -public: - LibraryBackendInterface(QObject* parent = 0) : QObject(parent) {} + public: + LibraryBackendInterface(QObject* parent = nullptr) : QObject(parent) {} virtual ~LibraryBackendInterface() {} struct Album { @@ -42,9 +44,11 @@ public: Album(const QString& _artist, const QString& _album_name, const QString& _art_automatic, const QString& _art_manual, const QUrl& _first_url) - : artist(_artist), album_name(_album_name), - art_automatic(_art_automatic), art_manual(_art_manual), - first_url(_first_url) {} + : artist(_artist), + album_name(_album_name), + art_automatic(_art_automatic), + art_manual(_art_manual), + first_url(_first_url) {} QString artist; QString album_name; @@ -66,31 +70,43 @@ public: virtual SongList FindSongsInDirectory(int id) = 0; virtual SubdirectoryList SubdirsInDirectory(int id) = 0; virtual DirectoryList GetAllDirectories() = 0; - virtual void ChangeDirPath(int id, const QString& old_path, const QString& new_path) = 0; + virtual void ChangeDirPath(int id, const QString& old_path, + const QString& new_path) = 0; - virtual QStringList GetAllArtists(const QueryOptions& opt = QueryOptions()) = 0; - virtual QStringList GetAllArtistsWithAlbums(const QueryOptions& opt = QueryOptions()) = 0; - virtual SongList GetSongsByAlbum(const QString& album, const QueryOptions& opt = QueryOptions()) = 0; - virtual SongList GetSongs( - const QString& artist, const QString& album, const QueryOptions& opt = QueryOptions()) = 0; + virtual QStringList GetAllArtists( + const QueryOptions& opt = QueryOptions()) = 0; + virtual QStringList GetAllArtistsWithAlbums( + const QueryOptions& opt = QueryOptions()) = 0; + virtual SongList GetSongsByAlbum( + const QString& album, const QueryOptions& opt = QueryOptions()) = 0; + virtual SongList GetSongs(const QString& artist, const QString& album, + const QueryOptions& opt = QueryOptions()) = 0; - virtual SongList GetCompilationSongs(const QString& album, const QueryOptions& opt = QueryOptions()) = 0; + virtual SongList GetCompilationSongs( + const QString& album, const QueryOptions& opt = QueryOptions()) = 0; virtual AlbumList GetAllAlbums(const QueryOptions& opt = QueryOptions()) = 0; - virtual AlbumList GetAlbumsByArtist(const QString& artist, const QueryOptions& opt = QueryOptions()) = 0; - virtual AlbumList GetCompilationAlbums(const QueryOptions& opt = QueryOptions()) = 0; + virtual AlbumList GetAlbumsByArtist( + const QString& artist, const QueryOptions& opt = QueryOptions()) = 0; + virtual AlbumList GetCompilationAlbums( + const QueryOptions& opt = QueryOptions()) = 0; - virtual void UpdateManualAlbumArtAsync(const QString& artist, const QString& album, const QString& art) = 0; + virtual void UpdateManualAlbumArtAsync(const QString& artist, + const QString& album, + const QString& art) = 0; virtual Album GetAlbumArt(const QString& artist, const QString& album) = 0; virtual Song GetSongById(int id) = 0; - // Returns all sections of a song with the given filename. If there's just one section + // Returns all sections of a song with the given filename. If there's just one + // section // the resulting list will have it's size equal to 1. virtual SongList GetSongsByUrl(const QUrl& url) = 0; - // Returns a section of a song with the given filename and beginning. If the section + // Returns a section of a song with the given filename and beginning. If the + // section // is not present in library, returns invalid song. - // Using default beginning value is suitable when searching for single-section songs. + // Using default beginning value is suitable when searching for single-section + // songs. virtual Song GetSongByUrl(const QUrl& url, qint64 beginning = 0) = 0; virtual void AddDirectory(const QString& path) = 0; @@ -105,10 +121,9 @@ class LibraryBackend : public LibraryBackendInterface { public: static const char* kSettingsGroup; - Q_INVOKABLE LibraryBackend(QObject* parent = 0); - void Init(Database* db, const QString& songs_table, - const QString& dirs_table, const QString& subdirs_table, - const QString& fts_table); + Q_INVOKABLE LibraryBackend(QObject* parent = nullptr); + void Init(Database* db, const QString& songs_table, const QString& dirs_table, + const QString& subdirs_table, const QString& fts_table); Database* db() const { return db_; } @@ -127,19 +142,25 @@ class LibraryBackend : public LibraryBackendInterface { DirectoryList GetAllDirectories(); void ChangeDirPath(int id, const QString& old_path, const QString& new_path); - QStringList GetAll(const QString& column, const QueryOptions& opt = QueryOptions()); + QStringList GetAll(const QString& column, + const QueryOptions& opt = QueryOptions()); QStringList GetAllArtists(const QueryOptions& opt = QueryOptions()); QStringList GetAllArtistsWithAlbums(const QueryOptions& opt = QueryOptions()); - SongList GetSongsByAlbum(const QString& album, const QueryOptions& opt = QueryOptions()); - SongList GetSongs(const QString& artist, const QString& album, const QueryOptions& opt = QueryOptions()); + SongList GetSongsByAlbum(const QString& album, + const QueryOptions& opt = QueryOptions()); + SongList GetSongs(const QString& artist, const QString& album, + const QueryOptions& opt = QueryOptions()); - SongList GetCompilationSongs(const QString& album, const QueryOptions& opt = QueryOptions()); + SongList GetCompilationSongs(const QString& album, + const QueryOptions& opt = QueryOptions()); AlbumList GetAllAlbums(const QueryOptions& opt = QueryOptions()); - AlbumList GetAlbumsByArtist(const QString& artist, const QueryOptions& opt = QueryOptions()); + AlbumList GetAlbumsByArtist(const QString& artist, + const QueryOptions& opt = QueryOptions()); AlbumList GetCompilationAlbums(const QueryOptions& opt = QueryOptions()); - void UpdateManualAlbumArtAsync(const QString& artist, const QString& album, const QString& art); + void UpdateManualAlbumArtAsync(const QString& artist, const QString& album, + const QString& art); Album GetAlbumArt(const QString& artist, const QString& album); Song GetSongById(int id); @@ -174,19 +195,22 @@ class LibraryBackend : public LibraryBackendInterface { void AddOrUpdateSongs(const SongList& songs); void UpdateMTimesOnly(const SongList& songs); void DeleteSongs(const SongList& songs); - void MarkSongsUnavailable(const SongList& songs); + void MarkSongsUnavailable(const SongList& songs, bool unavailable = true); void AddOrUpdateSubdirs(const SubdirectoryList& subdirs); void UpdateCompilations(); - void UpdateManualAlbumArt(const QString& artist, const QString& album, const QString& art); - void ForceCompilation(const QString& album, const QList& artists, bool on); + void UpdateManualAlbumArt(const QString& artist, const QString& album, + const QString& art); + void ForceCompilation(const QString& album, const QList& artists, + bool on); void IncrementPlayCount(int id); void IncrementSkipCount(int id, float progress); void ResetStatistics(int id); void UpdateSongRating(int id, float rating); void ReloadSettings(); - signals: - void DirectoryDiscovered(const Directory& dir, const SubdirectoryList& subdirs); +signals: + void DirectoryDiscovered(const Directory& dir, + const SubdirectoryList& subdirs); void DirectoryDeleted(const Directory& dir); void SongsDiscovered(const SongList& songs); @@ -206,7 +230,6 @@ class LibraryBackend : public LibraryBackendInterface { bool has_samplers; bool has_not_samplers; - }; static const char* kNewScoreSql; @@ -231,4 +254,4 @@ class LibraryBackend : public LibraryBackendInterface { bool save_ratings_in_file_; }; -#endif // LIBRARYBACKEND_H +#endif // LIBRARYBACKEND_H diff --git a/src/library/librarydirectorymodel.cpp b/src/library/librarydirectorymodel.cpp index 2f2394332..afe18c783 100644 --- a/src/library/librarydirectorymodel.cpp +++ b/src/library/librarydirectorymodel.cpp @@ -23,35 +23,37 @@ #include "core/utilities.h" #include "ui/iconloader.h" -LibraryDirectoryModel::LibraryDirectoryModel(LibraryBackend* backend, QObject* parent) - : QStandardItemModel(parent), - dir_icon_(IconLoader::Load("document-open-folder")), - backend_(backend) -{ - connect(backend_, SIGNAL(DirectoryDiscovered(Directory, SubdirectoryList)), SLOT(DirectoryDiscovered(Directory))); - connect(backend_, SIGNAL(DirectoryDeleted(Directory)), SLOT(DirectoryDeleted(Directory))); +LibraryDirectoryModel::LibraryDirectoryModel(LibraryBackend* backend, + QObject* parent) + : QStandardItemModel(parent), + dir_icon_(IconLoader::Load("document-open-folder")), + backend_(backend) { + connect(backend_, SIGNAL(DirectoryDiscovered(Directory, SubdirectoryList)), + SLOT(DirectoryDiscovered(Directory))); + connect(backend_, SIGNAL(DirectoryDeleted(Directory)), + SLOT(DirectoryDeleted(Directory))); } -LibraryDirectoryModel::~LibraryDirectoryModel() { -} +LibraryDirectoryModel::~LibraryDirectoryModel() {} -void LibraryDirectoryModel::DirectoryDiscovered(const Directory &dir) { +void LibraryDirectoryModel::DirectoryDiscovered(const Directory& dir) { QStandardItem* item; - if (Application::kIsPortable - && Utilities::UrlOnSameDriveAsClementine(QUrl::fromLocalFile(dir.path))) { + if (Application::kIsPortable && + Utilities::UrlOnSameDriveAsClementine(QUrl::fromLocalFile(dir.path))) { item = new QStandardItem(Utilities::GetRelativePathToClementineBin( - QUrl::fromLocalFile(dir.path)).toLocalFile()); + QUrl::fromLocalFile(dir.path)).toLocalFile()); } else { item = new QStandardItem(dir.path); } item->setData(dir.id, kIdRole); item->setIcon(dir_icon_); - storage_ << boost::shared_ptr(new FilesystemMusicStorage(dir.path)); + storage_ << std::shared_ptr( + new FilesystemMusicStorage(dir.path)); appendRow(item); } -void LibraryDirectoryModel::DirectoryDeleted(const Directory &dir) { - for (int i=0 ; idata(kIdRole).toInt() == dir.id) { removeRow(i); storage_.removeAt(i); @@ -61,15 +63,13 @@ void LibraryDirectoryModel::DirectoryDeleted(const Directory &dir) { } void LibraryDirectoryModel::AddDirectory(const QString& path) { - if (!backend_) - return; + if (!backend_) return; backend_->AddDirectory(path); } void LibraryDirectoryModel::RemoveDirectory(const QModelIndex& index) { - if (!backend_ || !index.isValid()) - return; + if (!backend_ || !index.isValid()) return; Directory dir; dir.path = index.data().toString(); @@ -78,19 +78,21 @@ void LibraryDirectoryModel::RemoveDirectory(const QModelIndex& index) { backend_->RemoveDirectory(dir); } -QVariant LibraryDirectoryModel::data(const QModelIndex &index, int role) const { +QVariant LibraryDirectoryModel::data(const QModelIndex& index, int role) const { switch (role) { - case MusicStorage::Role_Storage: - case MusicStorage::Role_StorageForceConnect: - return QVariant::fromValue(storage_[index.row()]); + case MusicStorage::Role_Storage: + case MusicStorage::Role_StorageForceConnect: + return QVariant::fromValue(storage_[index.row()]); - case MusicStorage::Role_FreeSpace: - return Utilities::FileSystemFreeSpace(data(index, Qt::DisplayRole).toString()); + case MusicStorage::Role_FreeSpace: + return Utilities::FileSystemFreeSpace( + data(index, Qt::DisplayRole).toString()); - case MusicStorage::Role_Capacity: - return Utilities::FileSystemCapacity(data(index, Qt::DisplayRole).toString()); + case MusicStorage::Role_Capacity: + return Utilities::FileSystemCapacity( + data(index, Qt::DisplayRole).toString()); - default: - return QStandardItemModel::data(index, role); + default: + return QStandardItemModel::data(index, role); } } diff --git a/src/library/librarydirectorymodel.h b/src/library/librarydirectorymodel.h index eee72270b..f9a937ad2 100644 --- a/src/library/librarydirectorymodel.h +++ b/src/library/librarydirectorymodel.h @@ -18,11 +18,11 @@ #ifndef LIBRARYDIRECTORYMODEL_H #define LIBRARYDIRECTORYMODEL_H +#include + #include #include -#include - #include "directory.h" class LibraryBackend; @@ -32,14 +32,14 @@ class LibraryDirectoryModel : public QStandardItemModel { Q_OBJECT public: - LibraryDirectoryModel(LibraryBackend* backend, QObject* parent = 0); + LibraryDirectoryModel(LibraryBackend* backend, QObject* parent = nullptr); ~LibraryDirectoryModel(); // To be called by GUIs void AddDirectory(const QString& path); void RemoveDirectory(const QModelIndex& index); - QVariant data(const QModelIndex &index, int role) const; + QVariant data(const QModelIndex& index, int role) const; private slots: // To be called by the backend @@ -51,7 +51,7 @@ class LibraryDirectoryModel : public QStandardItemModel { QIcon dir_icon_; LibraryBackend* backend_; - QList > storage_; + QList > storage_; }; -#endif // LIBRARYDIRECTORYMODEL_H +#endif // LIBRARYDIRECTORYMODEL_H diff --git a/src/library/libraryfilterwidget.cpp b/src/library/libraryfilterwidget.cpp index 3f866149b..9060c58f6 100644 --- a/src/library/libraryfilterwidget.cpp +++ b/src/library/libraryfilterwidget.cpp @@ -20,26 +20,34 @@ #include "libraryquery.h" #include "groupbydialog.h" #include "ui_libraryfilterwidget.h" +#include "core/song.h" #include "ui/iconloader.h" #include "ui/settingsdialog.h" #include #include #include +#include #include #include #include -LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) - : QWidget(parent), - ui_(new Ui_LibraryFilterWidget), - model_(NULL), - group_by_dialog_(new GroupByDialog), - filter_delay_(new QTimer(this)), - filter_applies_to_model_(true), - delay_behaviour_(DelayedOnLargeLibraries) -{ +LibraryFilterWidget::LibraryFilterWidget(QWidget* parent) + : QWidget(parent), + ui_(new Ui_LibraryFilterWidget), + model_(nullptr), + group_by_dialog_(new GroupByDialog), + filter_delay_(new QTimer(this)), + filter_applies_to_model_(true), + delay_behaviour_(DelayedOnLargeLibraries) { ui_->setupUi(this); + + // Add the available fields to the tooltip here instead of the ui + // file to prevent that they get translated by mistake. + QString available_fields = + Song::kFtsColumns.join(", ").replace(QRegExp("\\bfts"), ""); + ui_->filter->setToolTip(ui_->filter->toolTip().arg(available_fields)); + connect(ui_->filter, SIGNAL(returnPressed()), SIGNAL(ReturnPressed())); connect(filter_delay_, SIGNAL(timeout()), SLOT(FilterDelayTimeout())); @@ -63,18 +71,25 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) filter_age_mapper_ = new QSignalMapper(this); filter_age_mapper_->setMapping(ui_->filter_age_all, -1); - filter_age_mapper_->setMapping(ui_->filter_age_today, 60*60*24); - filter_age_mapper_->setMapping(ui_->filter_age_week, 60*60*24*7); - filter_age_mapper_->setMapping(ui_->filter_age_month, 60*60*24*30); - filter_age_mapper_->setMapping(ui_->filter_age_three_months, 60*60*24*30*3); - filter_age_mapper_->setMapping(ui_->filter_age_year, 60*60*24*365); + filter_age_mapper_->setMapping(ui_->filter_age_today, 60 * 60 * 24); + filter_age_mapper_->setMapping(ui_->filter_age_week, 60 * 60 * 24 * 7); + filter_age_mapper_->setMapping(ui_->filter_age_month, 60 * 60 * 24 * 30); + filter_age_mapper_->setMapping(ui_->filter_age_three_months, + 60 * 60 * 24 * 30 * 3); + filter_age_mapper_->setMapping(ui_->filter_age_year, 60 * 60 * 24 * 365); - connect(ui_->filter_age_all, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_today, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_week, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_month, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_three_months, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); - connect(ui_->filter_age_year, SIGNAL(triggered()), filter_age_mapper_, SLOT(map())); + connect(ui_->filter_age_all, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_today, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_week, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_month, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_three_months, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); + connect(ui_->filter_age_year, SIGNAL(triggered()), filter_age_mapper_, + SLOT(map())); // "Group by ..." group_by_group_ = CreateGroupByActions(this); @@ -82,7 +97,8 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) group_by_menu_ = new QMenu(tr("Group by"), this); group_by_menu_->addActions(group_by_group_->actions()); - connect(group_by_group_, SIGNAL(triggered(QAction*)), SLOT(GroupByClicked(QAction*))); + connect(group_by_group_, SIGNAL(triggered(QAction*)), + SLOT(GroupByClicked(QAction*))); // Library config menu library_menu_ = new QMenu(tr("Display options"), this); @@ -92,35 +108,46 @@ LibraryFilterWidget::LibraryFilterWidget(QWidget *parent) library_menu_->addSeparator(); ui_->options->setMenu(library_menu_); - connect(ui_->filter, SIGNAL(textChanged(QString)), SLOT(FilterTextChanged(QString))); + connect(ui_->filter, SIGNAL(textChanged(QString)), + SLOT(FilterTextChanged(QString))); } -LibraryFilterWidget::~LibraryFilterWidget() { - delete ui_; -} +LibraryFilterWidget::~LibraryFilterWidget() { delete ui_; } QActionGroup* LibraryFilterWidget::CreateGroupByActions(QObject* parent) { QActionGroup* ret = new QActionGroup(parent); - ret->addAction(CreateGroupByAction(tr("Group by Artist"), parent, + ret->addAction(CreateGroupByAction( + tr("Group by Artist"), parent, LibraryModel::Grouping(LibraryModel::GroupBy_Artist))); - ret->addAction(CreateGroupByAction(tr("Group by Artist/Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Artist, LibraryModel::GroupBy_Album))); - ret->addAction(CreateGroupByAction(tr("Group by Artist/Year - Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Artist, LibraryModel::GroupBy_YearAlbum))); - ret->addAction(CreateGroupByAction(tr("Group by Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Album))); - ret->addAction(CreateGroupByAction(tr("Group by Genre/Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Genre, LibraryModel::GroupBy_Album))); - ret->addAction(CreateGroupByAction(tr("Group by Genre/Artist/Album"), parent, - LibraryModel::Grouping(LibraryModel::GroupBy_Genre, LibraryModel::GroupBy_Artist, LibraryModel::GroupBy_Album))); + ret->addAction( + CreateGroupByAction(tr("Group by Artist/Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Artist, + LibraryModel::GroupBy_Album))); + ret->addAction(CreateGroupByAction( + tr("Group by Artist/Year - Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Artist, + LibraryModel::GroupBy_YearAlbum))); + ret->addAction( + CreateGroupByAction(tr("Group by Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Album))); + ret->addAction( + CreateGroupByAction(tr("Group by Genre/Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Genre, + LibraryModel::GroupBy_Album))); + ret->addAction( + CreateGroupByAction(tr("Group by Genre/Artist/Album"), parent, + LibraryModel::Grouping(LibraryModel::GroupBy_Genre, + LibraryModel::GroupBy_Artist, + LibraryModel::GroupBy_Album))); ret->addAction(CreateGroupByAction(tr("Advanced grouping..."), parent, - LibraryModel::Grouping())); + LibraryModel::Grouping())); return ret; } QAction* LibraryFilterWidget::CreateGroupByAction( - const QString& text, QObject* parent, const LibraryModel::Grouping& grouping) { + const QString& text, QObject* parent, + const LibraryModel::Grouping& grouping) { QAction* ret = new QAction(text, parent); ret->setCheckable(true); @@ -131,12 +158,12 @@ QAction* LibraryFilterWidget::CreateGroupByAction( return ret; } -void LibraryFilterWidget::FocusOnFilter(QKeyEvent *event) { +void LibraryFilterWidget::FocusOnFilter(QKeyEvent* event) { ui_->filter->setFocus(); QApplication::sendEvent(ui_->filter, event); } -void LibraryFilterWidget::SetLibraryModel(LibraryModel *model) { +void LibraryFilterWidget::SetLibraryModel(LibraryModel* model) { if (model_) { disconnect(model_, 0, this, 0); disconnect(model_, 0, group_by_dialog_.get(), 0); @@ -148,21 +175,26 @@ void LibraryFilterWidget::SetLibraryModel(LibraryModel *model) { // Connect signals connect(model_, SIGNAL(GroupingChanged(LibraryModel::Grouping)), - group_by_dialog_.get(), SLOT(LibraryGroupingChanged(LibraryModel::Grouping))); + group_by_dialog_.get(), + SLOT(LibraryGroupingChanged(LibraryModel::Grouping))); connect(model_, SIGNAL(GroupingChanged(LibraryModel::Grouping)), SLOT(GroupingChanged(LibraryModel::Grouping))); connect(group_by_dialog_.get(), SIGNAL(Accepted(LibraryModel::Grouping)), model_, SLOT(SetGroupBy(LibraryModel::Grouping))); - connect(filter_age_mapper_, SIGNAL(mapped(int)), model_, SLOT(SetFilterAge(int))); + connect(filter_age_mapper_, SIGNAL(mapped(int)), model_, + SLOT(SetFilterAge(int))); // Load settings if (!settings_group_.isEmpty()) { QSettings s; s.beginGroup(settings_group_); model_->SetGroupBy(LibraryModel::Grouping( - LibraryModel::GroupBy(s.value("group_by1", int(LibraryModel::GroupBy_Artist)).toInt()), - LibraryModel::GroupBy(s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), - LibraryModel::GroupBy(s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); + LibraryModel::GroupBy( + s.value("group_by1", int(LibraryModel::GroupBy_Artist)).toInt()), + LibraryModel::GroupBy( + s.value("group_by2", int(LibraryModel::GroupBy_Album)).toInt()), + LibraryModel::GroupBy( + s.value("group_by3", int(LibraryModel::GroupBy_None)).toInt()))); } } @@ -172,7 +204,8 @@ void LibraryFilterWidget::GroupByClicked(QAction* action) { return; } - LibraryModel::Grouping g = action->property("group_by").value(); + LibraryModel::Grouping g = + action->property("group_by").value(); model_->SetGroupBy(g); } @@ -187,9 +220,8 @@ void LibraryFilterWidget::GroupingChanged(const LibraryModel::Grouping& g) { } // Now make sure the correct action is checked - foreach (QAction* action, group_by_group_->actions()) { - if (action->property("group_by").isNull()) - continue; + for (QAction* action : group_by_group_->actions()) { + if (action->property("group_by").isNull()) continue; if (g == action->property("group_by").value()) { action->setChecked(true); @@ -254,10 +286,10 @@ void LibraryFilterWidget::FilterTextChanged(const QString& text) { // even with FTS, so if there are a large number of songs in the database // introduce a small delay before actually filtering the model, so if the // user is typing the first few characters of something it will be quicker. - const bool delay = (delay_behaviour_ == AlwaysDelayed) - || (delay_behaviour_ == DelayedOnLargeLibraries && - !text.isEmpty() && text.length() < 3 && - model_->total_song_count() >= 100000); + const bool delay = + (delay_behaviour_ == AlwaysDelayed) || + (delay_behaviour_ == DelayedOnLargeLibraries && !text.isEmpty() && + text.length() < 3 && model_->total_song_count() >= 100000); if (delay) { filter_delay_->start(); diff --git a/src/library/libraryfilterwidget.h b/src/library/libraryfilterwidget.h index 255e35685..3241606b3 100644 --- a/src/library/libraryfilterwidget.h +++ b/src/library/libraryfilterwidget.h @@ -18,9 +18,9 @@ #ifndef LIBRARYFILTERWIDGET_H #define LIBRARYFILTERWIDGET_H -#include +#include -#include +#include #include "librarymodel.h" @@ -38,10 +38,10 @@ class LibraryFilterWidget : public QWidget { Q_OBJECT public: - LibraryFilterWidget(QWidget* parent = 0); + LibraryFilterWidget(QWidget* parent = nullptr); ~LibraryFilterWidget(); - static const int kFilterDelay = 500; // msec + static const int kFilterDelay = 500; // msec enum DelayBehaviour { AlwaysInstant, @@ -52,8 +52,12 @@ class LibraryFilterWidget : public QWidget { static QActionGroup* CreateGroupByActions(QObject* parent); void SetFilterHint(const QString& hint); - void SetApplyFilterToLibrary(bool filter_applies_to_model) { filter_applies_to_model_ = filter_applies_to_model; } - void SetDelayBehaviour(DelayBehaviour behaviour) { delay_behaviour_ = behaviour; } + void SetApplyFilterToLibrary(bool filter_applies_to_model) { + filter_applies_to_model_ = filter_applies_to_model; + } + void SetDelayBehaviour(DelayBehaviour behaviour) { + delay_behaviour_ = behaviour; + } void SetAgeFilterEnabled(bool enabled); void SetGroupByEnabled(bool enabled); void ShowInLibrary(const QString& search); @@ -68,7 +72,7 @@ class LibraryFilterWidget : public QWidget { void SetQueryMode(QueryOptions::QueryMode view); void FocusOnFilter(QKeyEvent* e); - signals: +signals: void UpPressed(); void DownPressed(); void ReturnPressed(); @@ -92,7 +96,7 @@ class LibraryFilterWidget : public QWidget { Ui_LibraryFilterWidget* ui_; LibraryModel* model_; - boost::scoped_ptr group_by_dialog_; + std::unique_ptr group_by_dialog_; SettingsDialog* settings_dialog_; QMenu* filter_age_menu_; @@ -109,4 +113,4 @@ class LibraryFilterWidget : public QWidget { QString settings_group_; }; -#endif // LIBRARYFILTERWIDGET_H +#endif // LIBRARYFILTERWIDGET_H diff --git a/src/library/libraryfilterwidget.ui b/src/library/libraryfilterwidget.ui index d58bdc949..eb268323d 100644 --- a/src/library/libraryfilterwidget.ui +++ b/src/library/libraryfilterwidget.ui @@ -21,7 +21,10 @@ 0 - + + + <html><head/><body><p>Prefix a word with a field name to limit the search to that field, e.g. <span style=" font-weight:600;">artist:</span><span style=" font-style:italic;">Bode</span> searches the library for all artists that contain the word Bode.</p><p><span style=" font-weight:600;">Available fields: </span><span style=" font-style:italic;">%1</span>.</p></body></html> + Enter search terms here diff --git a/src/library/libraryitem.h b/src/library/libraryitem.h index 2a14c45a7..9461d83eb 100644 --- a/src/library/libraryitem.h +++ b/src/library/libraryitem.h @@ -37,14 +37,14 @@ class LibraryItem : public SimpleTreeItem { }; LibraryItem(SimpleTreeModel* model) - : SimpleTreeItem(Type_Root, model), - container_level(-1), - compilation_artist_node_(NULL) {} + : SimpleTreeItem(Type_Root, model), + container_level(-1), + compilation_artist_node_(nullptr) {} - LibraryItem(Type type, LibraryItem* parent = NULL) - : SimpleTreeItem(type, parent), - container_level(-1), - compilation_artist_node_(NULL) {} + LibraryItem(Type type, LibraryItem* parent = nullptr) + : SimpleTreeItem(type, parent), + container_level(-1), + compilation_artist_node_(nullptr) {} int container_level; Song metadata; @@ -52,4 +52,4 @@ class LibraryItem : public SimpleTreeItem { LibraryItem* compilation_artist_node_; }; -#endif // LIBRARYITEM_H +#endif // LIBRARYITEM_H diff --git a/src/library/librarymodel.cpp b/src/library/librarymodel.cpp index 6db78f4db..3e048da67 100644 --- a/src/library/librarymodel.cpp +++ b/src/library/librarymodel.cpp @@ -16,6 +16,18 @@ */ #include "librarymodel.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + #include "librarybackend.h" #include "libraryitem.h" #include "librarydirectorymodel.h" @@ -32,24 +44,18 @@ #include "smartplaylists/querygenerator.h" #include "ui/iconloader.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include +using std::placeholders::_1; +using std::placeholders::_2; using smart_playlists::Generator; using smart_playlists::GeneratorMimeData; using smart_playlists::GeneratorPtr; using smart_playlists::QueryGenerator; -const char* LibraryModel::kSmartPlaylistsMimeType = "application/x-clementine-smart-playlist-generator"; -const char* LibraryModel::kSmartPlaylistsSettingsGroup = "SerialisedSmartPlaylists"; +const char* LibraryModel::kSmartPlaylistsMimeType = + "application/x-clementine-smart-playlist-generator"; +const char* LibraryModel::kSmartPlaylistsSettingsGroup = + "SerialisedSmartPlaylists"; const int LibraryModel::kSmartPlaylistsVersion = 4; const int LibraryModel::kPrettyCoverSize = 32; @@ -57,7 +63,8 @@ typedef QFuture RootQueryFuture; typedef QFutureWatcher RootQueryWatcher; static bool IsArtistGroupBy(const LibraryModel::GroupBy by) { - return by == LibraryModel::GroupBy_Artist || by == LibraryModel::GroupBy_AlbumArtist; + return by == LibraryModel::GroupBy_Artist || + by == LibraryModel::GroupBy_AlbumArtist; } static bool IsCompilationArtistNode(const LibraryItem* node) { @@ -66,21 +73,20 @@ static bool IsCompilationArtistNode(const LibraryItem* node) { LibraryModel::LibraryModel(LibraryBackend* backend, Application* app, QObject* parent) - : SimpleTreeModel(new LibraryItem(this), parent), - backend_(backend), - app_(app), - dir_model_(new LibraryDirectoryModel(backend, this)), - show_smart_playlists_(false), - show_various_artists_(true), - total_song_count_(0), - artist_icon_(":/icons/22x22/x-clementine-artist.png"), - album_icon_(":/icons/22x22/x-clementine-album.png"), - playlists_dir_icon_(IconLoader::Load("folder-sound")), - playlist_icon_(":/icons/22x22/x-clementine-albums.png"), - init_task_id_(-1), - use_pretty_covers_(false), - show_dividers_(true) -{ + : SimpleTreeModel(new LibraryItem(this), parent), + backend_(backend), + app_(app), + dir_model_(new LibraryDirectoryModel(backend, this)), + show_smart_playlists_(false), + show_various_artists_(true), + total_song_count_(0), + artist_icon_(":/icons/22x22/x-clementine-artist.png"), + album_icon_(":/icons/22x22/x-clementine-album.png"), + playlists_dir_icon_(IconLoader::Load("folder-sound")), + playlist_icon_(":/icons/22x22/x-clementine-albums.png"), + init_task_id_(-1), + use_pretty_covers_(false), + show_dividers_(true) { root_->lazy_loaded = true; group_by_[0] = GroupBy_Artist; @@ -91,27 +97,29 @@ LibraryModel::LibraryModel(LibraryBackend* backend, Application* app, cover_loader_options_.pad_output_image_ = true; cover_loader_options_.scale_output_image_ = true; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(AlbumArtLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(AlbumArtLoaded(quint64, QImage))); - no_cover_icon_ = QPixmap(":nocover.png").scaled( - kPrettyCoverSize, kPrettyCoverSize, - Qt::KeepAspectRatio, Qt::SmoothTransformation); + no_cover_icon_ = QPixmap(":nocover.png") + .scaled(kPrettyCoverSize, kPrettyCoverSize, + Qt::KeepAspectRatio, Qt::SmoothTransformation); - connect(backend_, SIGNAL(SongsDiscovered(SongList)), SLOT(SongsDiscovered(SongList))); - connect(backend_, SIGNAL(SongsDeleted(SongList)), SLOT(SongsDeleted(SongList))); - connect(backend_, SIGNAL(SongsStatisticsChanged(SongList)), SLOT(SongsSlightlyChanged(SongList))); - connect(backend_, SIGNAL(SongsRatingChanged(SongList)), SLOT(SongsSlightlyChanged(SongList))); + connect(backend_, SIGNAL(SongsDiscovered(SongList)), + SLOT(SongsDiscovered(SongList))); + connect(backend_, SIGNAL(SongsDeleted(SongList)), + SLOT(SongsDeleted(SongList))); + connect(backend_, SIGNAL(SongsStatisticsChanged(SongList)), + SLOT(SongsSlightlyChanged(SongList))); + connect(backend_, SIGNAL(SongsRatingChanged(SongList)), + SLOT(SongsSlightlyChanged(SongList))); connect(backend_, SIGNAL(DatabaseReset()), SLOT(Reset())); - connect(backend_, SIGNAL(TotalSongCountUpdated(int)), SLOT(TotalSongCountUpdatedSlot(int))); + connect(backend_, SIGNAL(TotalSongCountUpdated(int)), + SLOT(TotalSongCountUpdatedSlot(int))); backend_->UpdateTotalSongCountAsync(); } -LibraryModel::~LibraryModel() { - delete root_; -} +LibraryModel::~LibraryModel() { delete root_; } void LibraryModel::set_pretty_covers(bool use_pretty_covers) { if (use_pretty_covers != use_pretty_covers_) { @@ -130,7 +138,8 @@ void LibraryModel::set_show_dividers(bool show_dividers) { void LibraryModel::Init(bool async) { if (async) { // Show a loading indicator in the model. - LibraryItem* loading = new LibraryItem(LibraryItem::Type_LoadingIndicator, root_); + LibraryItem* loading = + new LibraryItem(LibraryItem::Type_LoadingIndicator, root_); loading->display_text = tr("Loading..."); loading->lazy_loaded = true; reset(); @@ -145,15 +154,13 @@ void LibraryModel::Init(bool async) { } void LibraryModel::SongsDiscovered(const SongList& songs) { - foreach (const Song& song, songs) { + for (const Song& song : songs) { // Sanity check to make sure we don't add songs that are outside the user's // filter - if (!query_options_.Matches(song)) - continue; + if (!query_options_.Matches(song)) continue; // Hey, we've already got that one! - if (song_nodes_.contains(song.id())) - continue; + if (song_nodes_.contains(song.id())) continue; // Before we can add each song we need to make sure the required container // items already exist in the tree. These depend on which "group by" @@ -163,14 +170,14 @@ void LibraryModel::SongsDiscovered(const SongList& songs) { // Find parent containers in the tree LibraryItem* container = root_; - for (int i=0 ; i<3 ; ++i) { + for (int i = 0; i < 3; ++i) { GroupBy type = group_by_[i]; if (type == GroupBy_None) break; // Special case: if the song is a compilation and the current GroupBy // level is Artists, then we want the Various Artists node :( if (IsArtistGroupBy(type) && song.is_compilation()) { - if (container->compilation_artist_node_ == NULL) + if (container->compilation_artist_node_ == nullptr) CreateCompilationArtistNode(true, container); container = container->compilation_artist_node_; } else { @@ -178,19 +185,39 @@ void LibraryModel::SongsDiscovered(const SongList& songs) { // item's key QString key; switch (type) { - case GroupBy_Album: key = song.album(); break; - case GroupBy_Artist: key = song.artist(); break; - case GroupBy_Composer: key = song.composer(); break; - case GroupBy_Performer: key = song.performer(); break; - case GroupBy_Grouping: key = song.grouping(); break; - case GroupBy_Genre: key = song.genre(); break; - case GroupBy_AlbumArtist: key = song.effective_albumartist(); break; + case GroupBy_Album: + key = song.album(); + break; + case GroupBy_Artist: + key = song.artist(); + break; + case GroupBy_Composer: + key = song.composer(); + break; + case GroupBy_Performer: + key = song.performer(); + break; + case GroupBy_Grouping: + key = song.grouping(); + break; + case GroupBy_Genre: + key = song.genre(); + break; + case GroupBy_AlbumArtist: + key = song.effective_albumartist(); + break; case GroupBy_Year: - key = QString::number(qMax(0, song.year())); break; + key = QString::number(qMax(0, song.year())); + break; case GroupBy_YearAlbum: - key = PrettyYearAlbum(qMax(0, song.year()), song.album()); break; - case GroupBy_FileType: key = song.filetype(); break; - case GroupBy_Bitrate: key = song.bitrate(); break; + key = PrettyYearAlbum(qMax(0, song.year()), song.album()); + break; + case GroupBy_FileType: + key = song.filetype(); + break; + case GroupBy_Bitrate: + key = song.bitrate(); + break; case GroupBy_None: qLog(Error) << "GroupBy_None"; break; @@ -207,12 +234,10 @@ void LibraryModel::SongsDiscovered(const SongList& songs) { // If we just created the damn thing then we don't need to continue into // it any further because it'll get lazy-loaded properly later. - if (!container->lazy_loaded) - break; + if (!container->lazy_loaded) break; } - if (!container->lazy_loaded) - continue; + if (!container->lazy_loaded) continue; // We've gone all the way down to the deepest level and everything was // already lazy loaded, so now we have to create the song in the container. @@ -225,26 +250,28 @@ void LibraryModel::SongsSlightlyChanged(const SongList& songs) { // This is called if there was a minor change to the songs that will not // normally require the library to be restructured. We can just update our // internal cache of Song objects without worrying about resetting the model. - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (song_nodes_.contains(song.id())) { song_nodes_[song.id()]->metadata = song; } } } -LibraryItem* LibraryModel::CreateCompilationArtistNode(bool signal, LibraryItem* parent) { +LibraryItem* LibraryModel::CreateCompilationArtistNode(bool signal, + LibraryItem* parent) { if (signal) - beginInsertRows(ItemToIndex(parent), parent->children.count(), parent->children.count()); + beginInsertRows(ItemToIndex(parent), parent->children.count(), + parent->children.count()); parent->compilation_artist_node_ = new LibraryItem(LibraryItem::Type_Container, parent); - parent->compilation_artist_node_->compilation_artist_node_ = NULL; + parent->compilation_artist_node_->compilation_artist_node_ = nullptr; parent->compilation_artist_node_->key = tr("Various artists"); parent->compilation_artist_node_->sort_text = " various"; - parent->compilation_artist_node_->container_level = parent->container_level + 1; + parent->compilation_artist_node_->container_level = + parent->container_level + 1; - if (signal) - endInsertRows(); + if (signal) endInsertRows(); return parent->compilation_artist_node_; } @@ -253,78 +280,73 @@ QString LibraryModel::DividerKey(GroupBy type, LibraryItem* item) const { // Items which are to be grouped under the same divider must produce the // same divider key. This will only get called for top-level items. - if (item->sort_text.isEmpty()) - return QString(); + if (item->sort_text.isEmpty()) return QString(); switch (type) { - case GroupBy_Album: - case GroupBy_Artist: - case GroupBy_Composer: - case GroupBy_Performer: - case GroupBy_Grouping: - case GroupBy_Genre: - case GroupBy_AlbumArtist: - case GroupBy_FileType: { - QChar c = item->sort_text[0]; - if (c.isDigit()) - return "0"; - if (c == ' ') + case GroupBy_Album: + case GroupBy_Artist: + case GroupBy_Composer: + case GroupBy_Performer: + case GroupBy_Grouping: + case GroupBy_Genre: + case GroupBy_AlbumArtist: + case GroupBy_FileType: { + QChar c = item->sort_text[0]; + if (c.isDigit()) return "0"; + if (c == ' ') return QString(); + if (c.decompositionTag() != QChar::NoDecomposition) + return QChar(c.decomposition()[0]); + return c; + } + + case GroupBy_Year: + return SortTextForYear(item->sort_text.toInt() / 10 * 10); + + case GroupBy_YearAlbum: + return SortTextForYear(item->metadata.year()); + + case GroupBy_Bitrate: + return SortTextForBitrate(item->metadata.bitrate()); + + case GroupBy_None: return QString(); - if (c.decompositionTag() != QChar::NoDecomposition) - return QChar(c.decomposition()[0]); - return c; } - - case GroupBy_Year: - return SortTextForYear(item->sort_text.toInt() / 10 * 10); - - case GroupBy_YearAlbum: - return SortTextForYear(item->metadata.year()); - - case GroupBy_Bitrate: - return SortTextForBitrate(item->metadata.bitrate()); - - case GroupBy_None: - return QString(); - } - qLog(Error) << "Unknown GroupBy type" << type << "for item" << item->display_text; + qLog(Error) << "Unknown GroupBy type" << type << "for item" + << item->display_text; return QString(); } -QString LibraryModel::DividerDisplayText(GroupBy type, const QString& key) const { +QString LibraryModel::DividerDisplayText(GroupBy type, + const QString& key) const { // Pretty display text for the dividers. switch (type) { - case GroupBy_Album: - case GroupBy_Artist: - case GroupBy_Composer: - case GroupBy_Performer: - case GroupBy_Grouping: - case GroupBy_Genre: - case GroupBy_AlbumArtist: - case GroupBy_FileType: - if (key == "0") - return "0-9"; - return key.toUpper(); + case GroupBy_Album: + case GroupBy_Artist: + case GroupBy_Composer: + case GroupBy_Performer: + case GroupBy_Grouping: + case GroupBy_Genre: + case GroupBy_AlbumArtist: + case GroupBy_FileType: + if (key == "0") return "0-9"; + return key.toUpper(); - case GroupBy_YearAlbum: - if (key == "0000") - return tr("Unknown"); - return key.toUpper(); + case GroupBy_YearAlbum: + if (key == "0000") return tr("Unknown"); + return key.toUpper(); - case GroupBy_Year: - if (key == "0000") - return tr("Unknown"); - return QString::number(key.toInt()); // To remove leading 0s + case GroupBy_Year: + if (key == "0000") return tr("Unknown"); + return QString::number(key.toInt()); // To remove leading 0s - case GroupBy_Bitrate: - if (key == "000") - return tr("Unknown"); - return QString::number(key.toInt()); // To remove leading 0s + case GroupBy_Bitrate: + if (key == "000") return tr("Unknown"); + return QString::number(key.toInt()); // To remove leading 0s - case GroupBy_None: - // fallthrough - ; + case GroupBy_None: + // fallthrough + ; } qLog(Error) << "Unknown GroupBy type" << type << "for divider key" << key; return QString(); @@ -334,12 +356,11 @@ void LibraryModel::SongsDeleted(const SongList& songs) { // Delete the actual song nodes first, keeping track of each parent so we // might check to see if they're empty later. QSet parents; - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (song_nodes_.contains(song.id())) { LibraryItem* node = song_nodes_[song.id()]; - if (node->parent != root_) - parents << node->parent; + if (node->parent != root_) parents << node->parent; beginRemoveRows(ItemToIndex(node->parent), node->row, node->row); node->parent->Delete(node->row); @@ -359,14 +380,16 @@ void LibraryModel::SongsDeleted(const SongList& songs) { // Now delete empty parents QSet divider_keys; while (!parents.isEmpty()) { - foreach (LibraryItem* node, parents) { + // Since we are going to remove elements from the container, we + // need a copy to iterate over. If we iterate over the original, + // the behavior will be undefined. + QSet parents_copy = parents; + for (LibraryItem* node : parents_copy) { parents.remove(node); - if (node->children.count() != 0) - continue; + if (node->children.count() != 0) continue; // Consider its parent for the next round - if (node->parent != root_) - parents << node->parent; + if (node->parent != root_) parents << node->parent; // Maybe consider its divider node if (node->container_level == 0) @@ -374,7 +397,7 @@ void LibraryModel::SongsDeleted(const SongList& songs) { // Special case the Various Artists node if (IsCompilationArtistNode(node)) - node->parent->compilation_artist_node_ = NULL; + node->parent->compilation_artist_node_ = nullptr; else container_nodes_[node->container_level].remove(node->key); @@ -386,21 +409,19 @@ void LibraryModel::SongsDeleted(const SongList& songs) { } // Delete empty dividers - foreach (const QString& divider_key, divider_keys) { - if (!divider_nodes_.contains(divider_key)) - continue; + for (const QString& divider_key : divider_keys) { + if (!divider_nodes_.contains(divider_key)) continue; // Look to see if there are any other items still under this divider bool found = false; - foreach (LibraryItem* node, container_nodes_[0].values()) { + for (LibraryItem* node : container_nodes_[0].values()) { if (DividerKey(group_by_[0], node) == divider_key) { found = true; break; } } - if (found) - continue; + if (found) continue; // Remove the divider int row = divider_nodes_[divider_key]->row; @@ -424,8 +445,7 @@ QString LibraryModel::AlbumIconPixmapCacheKey(const QModelIndex& index) const { QVariant LibraryModel::AlbumIcon(const QModelIndex& index) { LibraryItem* item = IndexToItem(index); - if (!item) - return no_cover_icon_; + if (!item) return no_cover_icon_; // Check the cache for a pixmap we already loaded. const QString cache_key = AlbumIconPixmapCacheKey(index); @@ -444,7 +464,7 @@ QVariant LibraryModel::AlbumIcon(const QModelIndex& index) { SongList songs = GetChildSongs(index); if (!songs.isEmpty()) { const quint64 id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, songs.first()); + cover_loader_options_, songs.first()); pending_art_[id] = ItemAndCacheKey(item, cache_key); pending_cache_keys_.insert(cache_key); } @@ -456,8 +476,7 @@ void LibraryModel::AlbumArtLoaded(quint64 id, const QImage& image) { ItemAndCacheKey item_and_cache_key = pending_art_.take(id); LibraryItem* item = item_and_cache_key.first; const QString& cache_key = item_and_cache_key.second; - if (!item) - return; + if (!item) return; pending_cache_keys_.remove(cache_key); @@ -475,17 +494,19 @@ void LibraryModel::AlbumArtLoaded(quint64 id, const QImage& image) { QVariant LibraryModel::data(const QModelIndex& index, int role) const { const LibraryItem* item = IndexToItem(index); - - // Handle a special case for returning album artwork instead of a generic CD icon. + + // Handle a special case for returning album artwork instead of a generic CD + // icon. // this is here instead of in the other data() function to let us use the // QModelIndex& version of GetChildSongs, which satisfies const-ness, instead // of the LibraryItem* version, which doesn't. - if (use_pretty_covers_) { + if (use_pretty_covers_) { bool is_album_node = false; - if (role == Qt::DecorationRole && item->type == LibraryItem::Type_Container) { + if (role == Qt::DecorationRole && + item->type == LibraryItem::Type_Container) { GroupBy container_type = group_by_[item->container_level]; - is_album_node = container_type == GroupBy_Album - || container_type == GroupBy_YearAlbum; + is_album_node = container_type == GroupBy_Album || + container_type == GroupBy_YearAlbum; } if (is_album_node) { // It has const behaviour some of the time - that's ok right? @@ -497,9 +518,9 @@ QVariant LibraryModel::data(const QModelIndex& index, int role) const { } QVariant LibraryModel::data(const LibraryItem* item, int role) const { - GroupBy container_type = - item->type == LibraryItem::Type_Container ? - group_by_[item->container_level] : GroupBy_None; + GroupBy container_type = item->type == LibraryItem::Type_Container + ? group_by_[item->container_level] + : GroupBy_None; switch (role) { case Qt::DisplayRole: @@ -546,16 +567,16 @@ QVariant LibraryModel::data(const LibraryItem* item, int role) const { case Role_Editable: if (!item->lazy_loaded) { - const_cast(this)->LazyPopulate( - const_cast(item), true); + const_cast(this) + ->LazyPopulate(const_cast(item), true); } - if(item->type == LibraryItem::Type_Container) { + if (item->type == LibraryItem::Type_Container) { // if we have even one non editable item as a child, we ourselves // are not available for edit - if(!item->children.isEmpty()) { - foreach(LibraryItem* child, item->children) { - if(!data(child, role).toBool()) { + if (!item->children.isEmpty()) { + for (LibraryItem* child : item->children) { + if (!data(child, role).toBool()) { return false; } } @@ -563,7 +584,7 @@ QVariant LibraryModel::data(const LibraryItem* item, int role) const { } else { return false; } - } else if(item->type == LibraryItem::Type_Song) { + } else if (item->type == LibraryItem::Type_Song) { return item->metadata.IsEditable(); } else { return false; @@ -618,8 +639,7 @@ LibraryModel::QueryResult LibraryModel::RunQuery(LibraryItem* parent) { // Execute the query QMutexLocker l(backend_->db()->Mutex()); - if (!backend_->ExecQuery(&q)) - return result; + if (!backend_->ExecQuery(&q)) return result; while (q.Next()) { result.rows << SqlRow(q); @@ -639,11 +659,10 @@ void LibraryModel::PostQuery(LibraryItem* parent, } // Step through the results - foreach (const SqlRow& row, result.rows) { + for (const SqlRow& row : result.rows) { // Create the item - it will get inserted into the model here - LibraryItem* item = - ItemFromQuery(child_type, signal, child_level == 0, parent, row, - child_level); + LibraryItem* item = ItemFromQuery(child_type, signal, child_level == 0, + parent, row, child_level); // Save a pointer to it for later if (child_type == GroupBy_None) @@ -654,8 +673,7 @@ void LibraryModel::PostQuery(LibraryItem* parent, } void LibraryModel::LazyPopulate(LibraryItem* parent, bool signal) { - if (parent->lazy_loaded) - return; + if (parent->lazy_loaded) return; parent->lazy_loaded = true; QueryResult result = RunQuery(parent); @@ -663,8 +681,8 @@ void LibraryModel::LazyPopulate(LibraryItem* parent, bool signal) { } void LibraryModel::ResetAsync() { - RootQueryFuture future = QtConcurrent::run( - this, &LibraryModel::RunQuery, root_); + RootQueryFuture future = + QtConcurrent::run(this, &LibraryModel::RunQuery, root_); RootQueryWatcher* watcher = new RootQueryWatcher(this); watcher->setFuture(future); @@ -698,10 +716,10 @@ void LibraryModel::BeginReset() { container_nodes_[2].clear(); divider_nodes_.clear(); pending_art_.clear(); - smart_playlist_node_ = NULL; + smart_playlist_node_ = nullptr; root_ = new LibraryItem(this); - root_->compilation_artist_node_ = NULL; + root_->compilation_artist_node_ = nullptr; root_->lazy_loaded = false; // Smart playlists? @@ -721,121 +739,122 @@ void LibraryModel::Reset() { void LibraryModel::InitQuery(GroupBy type, LibraryQuery* q) { // Say what type of thing we want to get back from the database. switch (type) { - case GroupBy_Artist: - q->SetColumnSpec("DISTINCT artist"); - break; - case GroupBy_Album: - q->SetColumnSpec("DISTINCT album"); - break; - case GroupBy_Composer: - q->SetColumnSpec("DISTINCT composer"); - break; - case GroupBy_Performer: - q->SetColumnSpec("DISTINCT performer"); - break; - case GroupBy_Grouping: - q->SetColumnSpec("DISTINCT grouping"); - break; - case GroupBy_YearAlbum: - q->SetColumnSpec("DISTINCT year, album"); - break; - case GroupBy_Year: - q->SetColumnSpec("DISTINCT year"); - break; - case GroupBy_Genre: - q->SetColumnSpec("DISTINCT genre"); - break; - case GroupBy_AlbumArtist: - q->SetColumnSpec("DISTINCT effective_albumartist"); - break; - case GroupBy_Bitrate: - q->SetColumnSpec("DISTINCT bitrate"); - break; - case GroupBy_None: - q->SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); - break; - case GroupBy_FileType: - q->SetColumnSpec("DISTINCT filetype"); - break; + case GroupBy_Artist: + q->SetColumnSpec("DISTINCT artist"); + break; + case GroupBy_Album: + q->SetColumnSpec("DISTINCT album"); + break; + case GroupBy_Composer: + q->SetColumnSpec("DISTINCT composer"); + break; + case GroupBy_Performer: + q->SetColumnSpec("DISTINCT performer"); + break; + case GroupBy_Grouping: + q->SetColumnSpec("DISTINCT grouping"); + break; + case GroupBy_YearAlbum: + q->SetColumnSpec("DISTINCT year, album"); + break; + case GroupBy_Year: + q->SetColumnSpec("DISTINCT year"); + break; + case GroupBy_Genre: + q->SetColumnSpec("DISTINCT genre"); + break; + case GroupBy_AlbumArtist: + q->SetColumnSpec("DISTINCT effective_albumartist"); + break; + case GroupBy_Bitrate: + q->SetColumnSpec("DISTINCT bitrate"); + break; + case GroupBy_None: + q->SetColumnSpec("%songs_table.ROWID, " + Song::kColumnSpec); + break; + case GroupBy_FileType: + q->SetColumnSpec("DISTINCT filetype"); + break; } } -void LibraryModel::FilterQuery(GroupBy type, LibraryItem* item, LibraryQuery* q) { +void LibraryModel::FilterQuery(GroupBy type, LibraryItem* item, + LibraryQuery* q) { // Say how we want the query to be filtered. This is done once for each // parent going up the tree. switch (type) { - case GroupBy_Artist: - if (IsCompilationArtistNode(item)) - q->AddCompilationRequirement(true); - else { - // Don't duplicate compilations outside the Various artists node - q->AddCompilationRequirement(false); - q->AddWhere("artist", item->key); - } - break; - case GroupBy_Album: - q->AddWhere("album", item->key); - break; - case GroupBy_YearAlbum: - q->AddWhere("year", item->metadata.year()); - q->AddWhere("album", item->metadata.album()); - break; - case GroupBy_Year: - q->AddWhere("year", item->key); - break; - case GroupBy_Composer: - q->AddWhere("composer", item->key); - break; - case GroupBy_Performer: - q->AddWhere("performer", item->key); - break; - case GroupBy_Grouping: - q->AddWhere("grouping", item->key); - break; - case GroupBy_Genre: - q->AddWhere("genre", item->key); - break; - case GroupBy_AlbumArtist: - if (IsCompilationArtistNode(item)) - q->AddCompilationRequirement(true); - else { - // Don't duplicate compilations outside the Various artists node - q->AddCompilationRequirement(false); - q->AddWhere("effective_albumartist", item->key); - } - break; - case GroupBy_FileType: - q->AddWhere("filetype", item->metadata.filetype()); - break; - case GroupBy_Bitrate: - q->AddWhere("bitrate", item->key); - break; - case GroupBy_None: - qLog(Error) << "Unknown GroupBy type" << type << "used in filter"; - break; + case GroupBy_Artist: + if (IsCompilationArtistNode(item)) + q->AddCompilationRequirement(true); + else { + // Don't duplicate compilations outside the Various artists node + q->AddCompilationRequirement(false); + q->AddWhere("artist", item->key); + } + break; + case GroupBy_Album: + q->AddWhere("album", item->key); + break; + case GroupBy_YearAlbum: + q->AddWhere("year", item->metadata.year()); + q->AddWhere("album", item->metadata.album()); + break; + case GroupBy_Year: + q->AddWhere("year", item->key); + break; + case GroupBy_Composer: + q->AddWhere("composer", item->key); + break; + case GroupBy_Performer: + q->AddWhere("performer", item->key); + break; + case GroupBy_Grouping: + q->AddWhere("grouping", item->key); + break; + case GroupBy_Genre: + q->AddWhere("genre", item->key); + break; + case GroupBy_AlbumArtist: + if (IsCompilationArtistNode(item)) + q->AddCompilationRequirement(true); + else { + // Don't duplicate compilations outside the Various artists node + q->AddCompilationRequirement(false); + q->AddWhere("effective_albumartist", item->key); + } + break; + case GroupBy_FileType: + q->AddWhere("filetype", item->metadata.filetype()); + break; + case GroupBy_Bitrate: + q->AddWhere("bitrate", item->key); + break; + case GroupBy_None: + qLog(Error) << "Unknown GroupBy type" << type << "used in filter"; + break; } } -LibraryItem* LibraryModel::InitItem(GroupBy type, bool signal, LibraryItem *parent, - int container_level) { - LibraryItem::Type item_type = - type == GroupBy_None ? LibraryItem::Type_Song : - LibraryItem::Type_Container; +LibraryItem* LibraryModel::InitItem(GroupBy type, bool signal, + LibraryItem* parent, int container_level) { + LibraryItem::Type item_type = type == GroupBy_None + ? LibraryItem::Type_Song + : LibraryItem::Type_Container; if (signal) - beginInsertRows(ItemToIndex(parent), - parent->children.count(),parent->children.count()); + beginInsertRows(ItemToIndex(parent), parent->children.count(), + parent->children.count()); // Initialise the item depending on what type it's meant to be LibraryItem* item = new LibraryItem(item_type, parent); - item->compilation_artist_node_ = NULL; + item->compilation_artist_node_ = nullptr; item->container_level = container_level; return item; } -LibraryItem* LibraryModel::ItemFromQuery(GroupBy type, - bool signal, bool create_divider, +LibraryItem* LibraryModel::ItemFromQuery(GroupBy type, bool signal, + bool create_divider, LibraryItem* parent, const SqlRow& row, int container_level) { LibraryItem* item = InitItem(type, signal, parent, container_level); @@ -843,132 +862,134 @@ LibraryItem* LibraryModel::ItemFromQuery(GroupBy type, int bitrate = 0; switch (type) { - case GroupBy_Artist: - item->key = row.value(0).toString(); - item->display_text = TextOrUnknown(item->key); - item->sort_text = SortTextForArtist(item->key); - break; + case GroupBy_Artist: + item->key = row.value(0).toString(); + item->display_text = TextOrUnknown(item->key); + item->sort_text = SortTextForArtist(item->key); + break; - case GroupBy_YearAlbum: - year = qMax(0, row.value(0).toInt()); - item->metadata.set_year(row.value(0).toInt()); - item->metadata.set_album(row.value(1).toString()); - item->key = PrettyYearAlbum(year, item->metadata.album()); - item->sort_text = SortTextForYear(year) + item->metadata.album(); - break; + case GroupBy_YearAlbum: + year = qMax(0, row.value(0).toInt()); + item->metadata.set_year(row.value(0).toInt()); + item->metadata.set_album(row.value(1).toString()); + item->key = PrettyYearAlbum(year, item->metadata.album()); + item->sort_text = SortTextForYear(year) + item->metadata.album(); + break; - case GroupBy_Year: - year = qMax(0, row.value(0).toInt()); - item->key = QString::number(year); - item->sort_text = SortTextForYear(year) + " "; - break; + case GroupBy_Year: + year = qMax(0, row.value(0).toInt()); + item->key = QString::number(year); + item->sort_text = SortTextForYear(year) + " "; + break; - case GroupBy_Composer: - case GroupBy_Performer: - case GroupBy_Grouping: - case GroupBy_Genre: - case GroupBy_Album: - case GroupBy_AlbumArtist: - item->key = row.value(0).toString(); - item->display_text = TextOrUnknown(item->key); - item->sort_text = SortTextForArtist(item->key); - break; + case GroupBy_Composer: + case GroupBy_Performer: + case GroupBy_Grouping: + case GroupBy_Genre: + case GroupBy_Album: + case GroupBy_AlbumArtist: + item->key = row.value(0).toString(); + item->display_text = TextOrUnknown(item->key); + item->sort_text = SortTextForArtist(item->key); + break; - case GroupBy_FileType: - item->metadata.set_filetype(Song::FileType(row.value(0).toInt())); - item->key = item->metadata.TextForFiletype(); - break; + case GroupBy_FileType: + item->metadata.set_filetype(Song::FileType(row.value(0).toInt())); + item->key = item->metadata.TextForFiletype(); + break; - case GroupBy_Bitrate: - bitrate = qMax(0, row.value(0).toInt()); - item->key = QString::number(bitrate); - item->sort_text = SortTextForBitrate(bitrate) + " "; - break; + case GroupBy_Bitrate: + bitrate = qMax(0, row.value(0).toInt()); + item->key = QString::number(bitrate); + item->sort_text = SortTextForBitrate(bitrate) + " "; + break; - case GroupBy_None: - item->metadata.InitFromQuery(row, true); - item->key = item->metadata.title(); - item->display_text = item->metadata.TitleWithCompilationArtist(); - item->sort_text = SortTextForSong(item->metadata); - break; + case GroupBy_None: + item->metadata.InitFromQuery(row, true); + item->key = item->metadata.title(); + item->display_text = item->metadata.TitleWithCompilationArtist(); + item->sort_text = SortTextForSong(item->metadata); + break; } FinishItem(type, signal, create_divider, parent, item); return item; } -LibraryItem* LibraryModel::ItemFromSong(GroupBy type, - bool signal, bool create_divider, - LibraryItem* parent, const Song& s, - int container_level) { +LibraryItem* LibraryModel::ItemFromSong(GroupBy type, bool signal, + bool create_divider, + LibraryItem* parent, const Song& s, + int container_level) { LibraryItem* item = InitItem(type, signal, parent, container_level); int year = 0; int bitrate = 0; switch (type) { - case GroupBy_Artist: - item->key = s.artist(); - item->display_text = TextOrUnknown(item->key); - item->sort_text = SortTextForArtist(item->key); - break; + case GroupBy_Artist: + item->key = s.artist(); + item->display_text = TextOrUnknown(item->key); + item->sort_text = SortTextForArtist(item->key); + break; - case GroupBy_YearAlbum: - year = qMax(0, s.year()); - item->metadata.set_year(year); - item->metadata.set_album(s.album()); - item->key = PrettyYearAlbum(year, s.album()); - item->sort_text = SortTextForYear(year) + s.album(); - break; + case GroupBy_YearAlbum: + year = qMax(0, s.year()); + item->metadata.set_year(year); + item->metadata.set_album(s.album()); + item->key = PrettyYearAlbum(year, s.album()); + item->sort_text = SortTextForYear(year) + s.album(); + break; - case GroupBy_Year: - year = qMax(0, s.year()); - item->key = QString::number(year); - item->sort_text = SortTextForYear(year) + " "; - break; + case GroupBy_Year: + year = qMax(0, s.year()); + item->key = QString::number(year); + item->sort_text = SortTextForYear(year) + " "; + break; - case GroupBy_Composer: item->key = s.composer(); - case GroupBy_Performer: item->key = s.performer(); - case GroupBy_Grouping: item->key = s.grouping(); - case GroupBy_Genre: if (item->key.isNull()) item->key = s.genre(); - case GroupBy_Album: if (item->key.isNull()) item->key = s.album(); - case GroupBy_AlbumArtist: if (item->key.isNull()) item->key = s.effective_albumartist(); - item->display_text = TextOrUnknown(item->key); - item->sort_text = SortTextForArtist(item->key); - break; + case GroupBy_Composer: + item->key = s.composer(); + case GroupBy_Performer: + item->key = s.performer(); + case GroupBy_Grouping: + item->key = s.grouping(); + case GroupBy_Genre: + if (item->key.isNull()) item->key = s.genre(); + case GroupBy_Album: + if (item->key.isNull()) item->key = s.album(); + case GroupBy_AlbumArtist: + if (item->key.isNull()) item->key = s.effective_albumartist(); + item->display_text = TextOrUnknown(item->key); + item->sort_text = SortTextForArtist(item->key); + break; - case GroupBy_FileType: - item->metadata.set_filetype(s.filetype()); - item->key = s.TextForFiletype(); - break; + case GroupBy_FileType: + item->metadata.set_filetype(s.filetype()); + item->key = s.TextForFiletype(); + break; - case GroupBy_Bitrate: - bitrate = qMax(0, s.bitrate()); - item->key = QString::number(bitrate); - item->sort_text = SortTextForBitrate(bitrate) + " "; - break; + case GroupBy_Bitrate: + bitrate = qMax(0, s.bitrate()); + item->key = QString::number(bitrate); + item->sort_text = SortTextForBitrate(bitrate) + " "; + break; - case GroupBy_None: - item->metadata = s; - item->key = s.title(); - item->display_text = s.TitleWithCompilationArtist(); - item->sort_text = SortTextForSong(s); - break; + case GroupBy_None: + item->metadata = s; + item->key = s.title(); + item->display_text = s.TitleWithCompilationArtist(); + item->sort_text = SortTextForSong(s); + break; } FinishItem(type, signal, create_divider, parent, item); - if (s.url().scheme() == "cdda") - item->lazy_loaded = true; + if (s.url().scheme() == "cdda") item->lazy_loaded = true; return item; } -void LibraryModel::FinishItem(GroupBy type, - bool signal, bool create_divider, - LibraryItem *parent, LibraryItem *item) { - if (type == GroupBy_None) - item->lazy_loaded = true; +void LibraryModel::FinishItem(GroupBy type, bool signal, bool create_divider, + LibraryItem* parent, LibraryItem* item) { + if (type == GroupBy_None) item->lazy_loaded = true; - if (signal) - endInsertRows(); + if (signal) endInsertRows(); // Create the divider entry if we're supposed to if (create_divider && show_dividers_) { @@ -980,16 +1001,14 @@ void LibraryModel::FinishItem(GroupBy type, beginInsertRows(ItemToIndex(parent), parent->children.count(), parent->children.count()); - LibraryItem* divider = - new LibraryItem(LibraryItem::Type_Divider, root_); + LibraryItem* divider = new LibraryItem(LibraryItem::Type_Divider, root_); divider->key = divider_key; divider->display_text = DividerDisplayText(type, divider_key); divider->lazy_loaded = true; divider_nodes_[divider_key] = divider; - if (signal) - endInsertRows(); + if (signal) endInsertRows(); } } } @@ -1002,8 +1021,7 @@ QString LibraryModel::TextOrUnknown(const QString& text) { } QString LibraryModel::PrettyYearAlbum(int year, const QString& album) { - if (year <= 0) - return TextOrUnknown(album); + if (year <= 0) return TextOrUnknown(album); return QString::number(year) + " - " + TextOrUnknown(album); } @@ -1038,9 +1056,9 @@ QString LibraryModel::SortTextForBitrate(int bitrate) { return QString("0").repeated(qMax(0, 3 - str.length())) + str; } - QString LibraryModel::SortTextForSong(const Song& song) { - QString ret = QString::number(qMax(0, song.disc()) * 1000 + qMax(0, song.track())); + QString ret = + QString::number(qMax(0, song.disc()) * 1000 + qMax(0, song.track())); ret.prepend(QString("0").repeated(6 - ret.length())); ret.append(song.url().toString()); return ret; @@ -1048,17 +1066,15 @@ QString LibraryModel::SortTextForSong(const Song& song) { Qt::ItemFlags LibraryModel::flags(const QModelIndex& index) const { switch (IndexToItem(index)->type) { - case LibraryItem::Type_Song: - case LibraryItem::Type_Container: - case LibraryItem::Type_SmartPlaylist: - return Qt::ItemIsSelectable | - Qt::ItemIsEnabled | - Qt::ItemIsDragEnabled; - case LibraryItem::Type_Divider: - case LibraryItem::Type_Root: - case LibraryItem::Type_LoadingIndicator: - default: - return Qt::ItemIsEnabled; + case LibraryItem::Type_Song: + case LibraryItem::Type_Container: + case LibraryItem::Type_SmartPlaylist: + return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled; + case LibraryItem::Type_Divider: + case LibraryItem::Type_Root: + case LibraryItem::Type_LoadingIndicator: + default: + return Qt::ItemIsEnabled; } } @@ -1067,14 +1083,12 @@ QStringList LibraryModel::mimeTypes() const { } QMimeData* LibraryModel::mimeData(const QModelIndexList& indexes) const { - if (indexes.isEmpty()) - return NULL; + if (indexes.isEmpty()) return nullptr; // Special case: a smart playlist was dragged if (IndexToItem(indexes.first())->type == LibraryItem::Type_SmartPlaylist) { GeneratorPtr generator = CreateGenerator(indexes.first()); - if (!generator) - return NULL; + if (!generator) return nullptr; GeneratorMimeData* data = new GeneratorMimeData(generator); data->setData(kSmartPlaylistsMimeType, QByteArray()); @@ -1087,37 +1101,38 @@ QMimeData* LibraryModel::mimeData(const QModelIndexList& indexes) const { QSet song_ids; data->backend = backend_; - - foreach (const QModelIndex& index, indexes) { + + for (const QModelIndex& index : indexes) { GetChildSongs(IndexToItem(index), &urls, &data->songs, &song_ids); } data->setUrls(urls); - data->name_for_new_playlist_ = PlaylistManager::GetNameForNewPlaylist(data->songs); + data->name_for_new_playlist_ = + PlaylistManager::GetNameForNewPlaylist(data->songs); return data; } -bool LibraryModel::CompareItems(const LibraryItem* a, const LibraryItem* b) const { +bool LibraryModel::CompareItems(const LibraryItem* a, + const LibraryItem* b) const { QVariant left(data(a, LibraryModel::Role_SortText)); QVariant right(data(b, LibraryModel::Role_SortText)); - if (left.type() == QVariant::Int) - return left.toInt() < right.toInt(); + if (left.type() == QVariant::Int) return left.toInt() < right.toInt(); return left.toString() < right.toString(); } void LibraryModel::GetChildSongs(LibraryItem* item, QList* urls, - SongList* songs, QSet* song_ids) const { + SongList* songs, QSet* song_ids) const { switch (item->type) { case LibraryItem::Type_Container: { const_cast(this)->LazyPopulate(item); QList children = item->children; - qSort(children.begin(), children.end(), boost::bind( - &LibraryModel::CompareItems, this, _1, _2)); + qSort(children.begin(), children.end(), + std::bind(&LibraryModel::CompareItems, this, _1, _2)); - foreach (LibraryItem* child, children) + for (LibraryItem* child : children) GetChildSongs(child, urls, songs, song_ids); break; } @@ -1140,13 +1155,13 @@ SongList LibraryModel::GetChildSongs(const QModelIndexList& indexes) const { SongList ret; QSet song_ids; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { GetChildSongs(IndexToItem(index), &dontcare, &ret, &song_ids); } return ret; } -SongList LibraryModel::GetChildSongs(const QModelIndex &index) const { +SongList LibraryModel::GetChildSongs(const QModelIndex& index) const { return GetChildSongs(QModelIndexList() << index); } @@ -1165,9 +1180,8 @@ void LibraryModel::SetFilterQueryMode(QueryOptions::QueryMode query_mode) { ResetAsync(); } -bool LibraryModel::canFetchMore(const QModelIndex &parent) const { - if (!parent.isValid()) - return false; +bool LibraryModel::canFetchMore(const QModelIndex& parent) const { + if (!parent.isValid()) return false; LibraryItem* item = IndexToItem(parent); return !item->lazy_loaded; @@ -1180,28 +1194,35 @@ void LibraryModel::SetGroupBy(const Grouping& g) { emit GroupingChanged(g); } -const LibraryModel::GroupBy& LibraryModel::Grouping::operator [](int i) const { +const LibraryModel::GroupBy& LibraryModel::Grouping::operator[](int i) const { switch (i) { - case 0: return first; - case 1: return second; - case 2: return third; + case 0: + return first; + case 1: + return second; + case 2: + return third; } qLog(Error) << "LibraryModel::Grouping[] index out of range" << i; return first; } -LibraryModel::GroupBy& LibraryModel::Grouping::operator [](int i) { +LibraryModel::GroupBy& LibraryModel::Grouping::operator[](int i) { switch (i) { - case 0: return first; - case 1: return second; - case 2: return third; + case 0: + return first; + case 1: + return second; + case 2: + return third; } qLog(Error) << "LibraryModel::Grouping[] index out of range" << i; return first; } void LibraryModel::CreateSmartPlaylists() { - smart_playlist_node_ = new LibraryItem(LibraryItem::Type_PlaylistContainer, root_); + smart_playlist_node_ = + new LibraryItem(LibraryItem::Type_PlaylistContainer, root_); smart_playlist_node_->container_level = 0; smart_playlist_node_->sort_text = "\0"; smart_playlist_node_->key = tr("Smart playlists"); @@ -1213,7 +1234,7 @@ void LibraryModel::CreateSmartPlaylists() { // How many defaults do we have to write? int unwritten_defaults = 0; - for (int i=version; i < default_smart_playlists_.count() ; ++i) { + for (int i = version; i < default_smart_playlists_.count(); ++i) { unwritten_defaults += default_smart_playlists_[i].count(); } @@ -1224,9 +1245,11 @@ void LibraryModel::CreateSmartPlaylists() { s.endArray(); // Append the new ones - s.beginWriteArray(backend_->songs_table(), playlist_index + unwritten_defaults); - for (; version < default_smart_playlists_.count() ; ++version) { - foreach (smart_playlists::GeneratorPtr gen, default_smart_playlists_[version]) { + s.beginWriteArray(backend_->songs_table(), + playlist_index + unwritten_defaults); + for (; version < default_smart_playlists_.count(); ++version) { + for (smart_playlists::GeneratorPtr gen : + default_smart_playlists_[version]) { SaveGenerator(&s, playlist_index++, gen); } } @@ -1236,23 +1259,23 @@ void LibraryModel::CreateSmartPlaylists() { s.setValue(backend_->songs_table() + "_version", version); const int count = s.beginReadArray(backend_->songs_table()); - for (int i=0 ; idisplay_text = tr(qPrintable(s.value("name").toString())); item->sort_text = item->display_text; item->key = s.value("type").toString(); item->smart_playlist_data = s.value("data").toByteArray(); item->lazy_loaded = true; - if (notify) - item->InsertNotify(smart_playlist_node_); + if (notify) item->InsertNotify(smart_playlist_node_); } void LibraryModel::AddGenerator(GeneratorPtr gen) { @@ -1274,11 +1297,9 @@ void LibraryModel::AddGenerator(GeneratorPtr gen) { } void LibraryModel::UpdateGenerator(const QModelIndex& index, GeneratorPtr gen) { - if (index.parent() != ItemToIndex(smart_playlist_node_)) - return; + if (index.parent() != ItemToIndex(smart_playlist_node_)) return; LibraryItem* item = IndexToItem(index); - if (!item) - return; + if (!item) return; // Update the config QSettings s; @@ -1300,8 +1321,7 @@ void LibraryModel::UpdateGenerator(const QModelIndex& index, GeneratorPtr gen) { } void LibraryModel::DeleteGenerator(const QModelIndex& index) { - if (index.parent() != ItemToIndex(smart_playlist_node_)) - return; + if (index.parent() != ItemToIndex(smart_playlist_node_)) return; // Remove the item from the tree smart_playlist_node_->DeleteNotify(index.row()); @@ -1310,9 +1330,10 @@ void LibraryModel::DeleteGenerator(const QModelIndex& index) { s.beginGroup(kSmartPlaylistsSettingsGroup); // Rewrite all the items to the settings - s.beginWriteArray(backend_->songs_table(), smart_playlist_node_->children.count()); + s.beginWriteArray(backend_->songs_table(), + smart_playlist_node_->children.count()); int i = 0; - foreach (LibraryItem* item, smart_playlist_node_->children) { + for (LibraryItem* item : smart_playlist_node_->children) { s.setArrayIndex(i++); s.setValue("name", item->display_text); s.setValue("type", item->key); @@ -1321,7 +1342,8 @@ void LibraryModel::DeleteGenerator(const QModelIndex& index) { s.endArray(); } -void LibraryModel::SaveGenerator(QSettings* s, int i, GeneratorPtr generator) const { +void LibraryModel::SaveGenerator(QSettings* s, int i, + GeneratorPtr generator) const { s->setArrayIndex(i); s->setValue("name", generator->name()); s->setValue("type", generator->type()); @@ -1332,12 +1354,10 @@ GeneratorPtr LibraryModel::CreateGenerator(const QModelIndex& index) const { GeneratorPtr ret; const LibraryItem* item = IndexToItem(index); - if (!item || item->type != LibraryItem::Type_SmartPlaylist) - return ret; + if (!item || item->type != LibraryItem::Type_SmartPlaylist) return ret; ret = Generator::Create(item->key); - if (!ret) - return ret; + if (!ret) return ret; ret->set_name(item->display_text); ret->set_library(backend()); @@ -1349,5 +1369,3 @@ void LibraryModel::TotalSongCountUpdatedSlot(int count) { total_song_count_ = count; emit TotalSongCountUpdated(count); } - - diff --git a/src/library/librarymodel.h b/src/library/librarymodel.h index 79a105327..302f8ace7 100644 --- a/src/library/librarymodel.h +++ b/src/library/librarymodel.h @@ -32,13 +32,13 @@ #include "playlist/playlistmanager.h" #include "smartplaylists/generator_fwd.h" -#include - class Application; class AlbumCoverLoader; class LibraryDirectoryModel; class LibraryBackend; -namespace smart_playlists { class Search; } +namespace smart_playlists { +class Search; +} class QSettings; @@ -47,8 +47,7 @@ class LibraryModel : public SimpleTreeModel { Q_ENUMS(GroupBy); public: - LibraryModel(LibraryBackend* backend, Application* app, - QObject* parent = 0); + LibraryModel(LibraryBackend* backend, Application* app, QObject* parent = nullptr); ~LibraryModel(); static const char* kSmartPlaylistsMimeType; @@ -65,7 +64,6 @@ class LibraryModel : public SimpleTreeModel { Role_Artist, Role_IsDivider, Role_Editable, - LastRole }; @@ -86,25 +84,21 @@ class LibraryModel : public SimpleTreeModel { }; struct Grouping { - Grouping(GroupBy f = GroupBy_None, - GroupBy s = GroupBy_None, + Grouping(GroupBy f = GroupBy_None, GroupBy s = GroupBy_None, GroupBy t = GroupBy_None) - : first(f), second(s), third(t) {} + : first(f), second(s), third(t) {} GroupBy first; GroupBy second; GroupBy third; - const GroupBy& operator [](int i) const; - GroupBy& operator [](int i); - bool operator ==(const Grouping& other) const { - return first == other.first && - second == other.second && + const GroupBy& operator[](int i) const; + GroupBy& operator[](int i); + bool operator==(const Grouping& other) const { + return first == other.first && second == other.second && third == other.third; } - bool operator !=(const Grouping& other) const { - return ! (*this == other); - } + bool operator!=(const Grouping& other) const { return !(*this == other); } }; struct QueryResult { @@ -121,9 +115,15 @@ class LibraryModel : public SimpleTreeModel { typedef QList DefaultGenerators; // Call before Init() - void set_show_smart_playlists(bool show_smart_playlists) { show_smart_playlists_ = show_smart_playlists; } - void set_default_smart_playlists(const DefaultGenerators& defaults) { default_smart_playlists_ = defaults; } - void set_show_various_artists(bool show_various_artists) { show_various_artists_ = show_various_artists; } + void set_show_smart_playlists(bool show_smart_playlists) { + show_smart_playlists_ = show_smart_playlists; + } + void set_default_smart_playlists(const DefaultGenerators& defaults) { + default_smart_playlists_ = defaults; + } + void set_show_various_artists(bool show_various_artists) { + show_various_artists_ = show_various_artists; + } // Get information about the library void GetChildSongs(LibraryItem* item, QList* urls, SongList* songs, @@ -137,15 +137,16 @@ class LibraryModel : public SimpleTreeModel { // Smart playlists smart_playlists::GeneratorPtr CreateGenerator(const QModelIndex& index) const; void AddGenerator(smart_playlists::GeneratorPtr gen); - void UpdateGenerator(const QModelIndex& index, smart_playlists::GeneratorPtr gen); + void UpdateGenerator(const QModelIndex& index, + smart_playlists::GeneratorPtr gen); void DeleteGenerator(const QModelIndex& index); // QAbstractItemModel - QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; Qt::ItemFlags flags(const QModelIndex& index) const; QStringList mimeTypes() const; QMimeData* mimeData(const QModelIndexList& indexes) const; - bool canFetchMore(const QModelIndex &parent) const; + bool canFetchMore(const QModelIndex& parent) const; // Whether or not to use album cover art, if it exists, in the library view void set_pretty_covers(bool use_pretty_covers); @@ -163,7 +164,7 @@ class LibraryModel : public SimpleTreeModel { static QString SortTextForBitrate(int bitrate); static QString SortTextForSong(const Song& song); - signals: +signals: void TotalSongCountUpdated(int count); void GroupingChanged(const LibraryModel::Grouping& g); @@ -226,7 +227,8 @@ class LibraryModel : public SimpleTreeModel { // Smart playlists are shown in another top-level node void CreateSmartPlaylists(); - void SaveGenerator(QSettings* s, int i, smart_playlists::GeneratorPtr generator) const; + void SaveGenerator(QSettings* s, int i, + smart_playlists::GeneratorPtr generator) const; void ItemFromSmartPlaylist(const QSettings& s, bool notify) const; // Helpers for ItemFromQuery and ItemFromSong @@ -278,7 +280,7 @@ class LibraryModel : public SimpleTreeModel { QIcon playlist_icon_; int init_task_id_; - + bool use_pretty_covers_; bool show_dividers_; @@ -291,4 +293,4 @@ class LibraryModel : public SimpleTreeModel { Q_DECLARE_METATYPE(LibraryModel::Grouping); -#endif // LIBRARYMODEL_H +#endif // LIBRARYMODEL_H diff --git a/src/library/libraryplaylistitem.cpp b/src/library/libraryplaylistitem.cpp index 625565c81..d05e21d0b 100644 --- a/src/library/libraryplaylistitem.cpp +++ b/src/library/libraryplaylistitem.cpp @@ -21,23 +21,16 @@ #include LibraryPlaylistItem::LibraryPlaylistItem(const QString& type) - : PlaylistItem(type) -{ -} + : PlaylistItem(type) {} LibraryPlaylistItem::LibraryPlaylistItem(const Song& song) - : PlaylistItem("Library"), - song_(song) -{ -} + : PlaylistItem("Library"), song_(song) {} - -QUrl LibraryPlaylistItem::Url() const { - return song_.url(); -} +QUrl LibraryPlaylistItem::Url() const { return song_.url(); } void LibraryPlaylistItem::Reload() { - TagReaderClient::Instance()->ReadFileBlocking(song_.url().toLocalFile(), &song_); + TagReaderClient::Instance()->ReadFileBlocking(song_.url().toLocalFile(), + &song_); } bool LibraryPlaylistItem::InitFromQuery(const SqlRow& query) { @@ -49,13 +42,14 @@ bool LibraryPlaylistItem::InitFromQuery(const SqlRow& query) { QVariant LibraryPlaylistItem::DatabaseValue(DatabaseColumn column) const { switch (column) { - case Column_LibraryId: return song_.id(); - default: return PlaylistItem::DatabaseValue(column); + case Column_LibraryId: + return song_.id(); + default: + return PlaylistItem::DatabaseValue(column); } } Song LibraryPlaylistItem::Metadata() const { - if (HasTemporaryMetadata()) - return temp_metadata_; + if (HasTemporaryMetadata()) return temp_metadata_; return song_; } diff --git a/src/library/libraryplaylistitem.h b/src/library/libraryplaylistitem.h index 1dbc49cc0..dbfd08850 100644 --- a/src/library/libraryplaylistitem.h +++ b/src/library/libraryplaylistitem.h @@ -43,4 +43,4 @@ class LibraryPlaylistItem : public PlaylistItem { Song song_; }; -#endif // LIBRARYPLAYLISTITEM_H +#endif // LIBRARYPLAYLISTITEM_H diff --git a/src/library/libraryquery.cpp b/src/library/libraryquery.cpp index f0ed6f424..02177bf42 100644 --- a/src/library/libraryquery.cpp +++ b/src/library/libraryquery.cpp @@ -22,18 +22,10 @@ #include #include -QueryOptions::QueryOptions() - : max_age_(-1), - query_mode_(QueryMode_All) -{ -} - +QueryOptions::QueryOptions() : max_age_(-1), query_mode_(QueryMode_All) {} LibraryQuery::LibraryQuery(const QueryOptions& options) - : include_unavailable_(false), - join_with_fts_(false), - limit_(-1) -{ + : include_unavailable_(false), join_with_fts_(false), limit_(-1) { if (!options.filter().isEmpty()) { // We need to munge the filter text a little bit to get it to work as // expected with sqlite's FTS3: @@ -42,10 +34,10 @@ LibraryQuery::LibraryQuery(const QueryOptions& options) // 3) Remove colons which don't correspond to column names. // Split on whitespace - QStringList tokens(options.filter().split( - QRegExp("\\s+"), QString::SkipEmptyParts)); + QStringList tokens( + options.filter().split(QRegExp("\\s+"), QString::SkipEmptyParts)); QString query; - foreach (QString token, tokens) { + for (QString token : tokens) { token.remove('('); token.remove(')'); token.remove('"'); @@ -56,8 +48,8 @@ LibraryQuery::LibraryQuery(const QueryOptions& options) if (Song::kFtsColumns.contains("fts" + token.section(':', 0, 0), Qt::CaseInsensitive)) { // Account for multiple colons. - QString columntoken = token.section( - ':', 0, 0, QString::SectionIncludeTrailingSep); + QString columntoken = + token.section(':', 0, 0, QString::SectionIncludeTrailingSep); QString subtoken = token.section(':', 1, -1); subtoken.replace(":", " "); subtoken = subtoken.trimmed(); @@ -84,12 +76,16 @@ LibraryQuery::LibraryQuery(const QueryOptions& options) bound_values_ << cutoff; } - // TODO: currently you cannot use any QueryMode other than All and fts at the same time. - // joining songs, duplicated_songs and songs_fts all together takes a huge amount of + // TODO: currently you cannot use any QueryMode other than All and fts at the + // same time. + // joining songs, duplicated_songs and songs_fts all together takes a huge + // amount of // time. the query takes about 20 seconds on my machine then. why? - // untagged mode could work with additional filtering but I'm disabling it just to be + // untagged mode could work with additional filtering but I'm disabling it + // just to be // consistent - this way filtering is available only in the All mode. - // remember though that when you fix the Duplicates + FTS cooperation, enable the + // remember though that when you fix the Duplicates + FTS cooperation, enable + // the // filtering in both Duplicates and Untagged modes. duplicates_only_ = options.query_mode() == QueryOptions::QueryMode_Duplicates; @@ -100,19 +96,20 @@ LibraryQuery::LibraryQuery(const QueryOptions& options) QString LibraryQuery::GetInnerQuery() { return duplicates_only_ - ? QString(" INNER JOIN (select * from duplicated_songs) dsongs " - "ON (%songs_table.artist = dsongs.dup_artist " - "AND %songs_table.album = dsongs.dup_album " - "AND %songs_table.title = dsongs.dup_title) ") + ? QString( + " INNER JOIN (select * from duplicated_songs) dsongs " + "ON (%songs_table.artist = dsongs.dup_artist " + "AND %songs_table.album = dsongs.dup_album " + "AND %songs_table.title = dsongs.dup_title) ") : QString(); } void LibraryQuery::AddWhere(const QString& column, const QVariant& value, const QString& op) { // ignore 'literal' for IN - if(!op.compare("IN", Qt::CaseInsensitive)) { + if (!op.compare("IN", Qt::CaseInsensitive)) { QStringList final; - foreach(const QString& single_value, value.toStringList()) { + for (const QString& single_value : value.toStringList()) { final.append("?"); bound_values_ << single_value; } @@ -121,7 +118,7 @@ void LibraryQuery::AddWhere(const QString& column, const QVariant& value, } else { // Do integers inline - sqlite seems to get confused when you pass integers // to bound parameters - if(value.type() == QVariant::Int) { + if (value.type() == QVariant::Int) { where_clauses_ << QString("%1 %2 %3").arg(column, op, value.toString()); } else { where_clauses_ << QString("%1 %2 ?").arg(column, op); @@ -131,7 +128,14 @@ void LibraryQuery::AddWhere(const QString& column, const QVariant& value, } void LibraryQuery::AddCompilationRequirement(bool compilation) { - where_clauses_ << QString("effective_compilation = %1").arg(compilation ? 1 : 0); + // The unary + is added to prevent sqlite from using the index + // idx_comp_artist. When joining with fts, sqlite 3.8 has a tendency + // to use this index and thereby nesting the tables in an order + // which gives very poor performance. See + // https://github.com/clementine-player/Clementine/pull/4285 for + // more details. + where_clauses_ << QString("+effective_compilation = %1") + .arg(compilation ? 1 : 0); } QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, @@ -139,11 +143,12 @@ QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, QString sql; if (join_with_fts_) { - sql = QString("SELECT %1 FROM %2 INNER JOIN %3 AS fts ON %2.ROWID = fts.ROWID") - .arg(column_spec_, songs_table, fts_table); + sql = QString( + "SELECT %1 FROM %2 INNER JOIN %3 AS fts ON %2.ROWID = fts.ROWID") + .arg(column_spec_, songs_table, fts_table); } else { sql = QString("SELECT %1 FROM %2 %3") - .arg(column_spec_, songs_table, GetInnerQuery()); + .arg(column_spec_, songs_table, GetInnerQuery()); } QStringList where_clauses(where_clauses_); @@ -151,14 +156,11 @@ QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, where_clauses << "unavailable = 0"; } - if (!where_clauses.isEmpty()) - sql += " WHERE " + where_clauses.join(" AND "); + if (!where_clauses.isEmpty()) sql += " WHERE " + where_clauses.join(" AND "); - if (!order_by_.isEmpty()) - sql += " ORDER BY " + order_by_; + if (!order_by_.isEmpty()) sql += " ORDER BY " + order_by_; - if (limit_ != -1) - sql += " LIMIT " + QString::number(limit_); + if (limit_ != -1) sql += " LIMIT " + QString::number(limit_); sql.replace("%songs_table", songs_table); sql.replace("%fts_table_noprefix", fts_table.section('.', -1, -1)); @@ -167,7 +169,7 @@ QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, query_ = QSqlQuery(sql, db); // Bind values - foreach (const QVariant& value, bound_values_) { + for (const QVariant& value : bound_values_) { query_.addBindValue(value); } @@ -175,19 +177,14 @@ QSqlQuery LibraryQuery::Exec(QSqlDatabase db, const QString& songs_table, return query_; } -bool LibraryQuery::Next() { - return query_.next(); -} +bool LibraryQuery::Next() { return query_.next(); } -QVariant LibraryQuery::Value(int column) const { - return query_.value(column); -} +QVariant LibraryQuery::Value(int column) const { return query_.value(column); } bool QueryOptions::Matches(const Song& song) const { if (max_age_ != -1) { const uint cutoff = QDateTime::currentDateTime().toTime_t() - max_age_; - if (song.ctime() <= cutoff) - return false; + if (song.ctime() <= cutoff) return false; } if (!filter_.isNull()) { diff --git a/src/library/libraryquery.h b/src/library/libraryquery.h index d129f9311..c20b71a43 100644 --- a/src/library/libraryquery.h +++ b/src/library/libraryquery.h @@ -31,18 +31,14 @@ class LibraryBackend; struct QueryOptions { // Modes of LibraryQuery: // - use the all songs table - // - use the duplicated songs view; by duplicated we mean those songs - // for which the (artist, album, title) tuple is found more than once + // - use the duplicated songs view; by duplicated we mean those songs + // for which the (artist, album, title) tuple is found more than once // in the songs table // - use the untagged songs view; by untagged we mean those for which // at least one of the (artist, album, title) tags is empty // Please note that additional filtering based on fts table (the filter // attribute) won't work in Duplicates and Untagged modes. - enum QueryMode { - QueryMode_All, - QueryMode_Duplicates, - QueryMode_Untagged - }; + enum QueryMode { QueryMode_All, QueryMode_Duplicates, QueryMode_Untagged }; QueryOptions(); @@ -81,17 +77,21 @@ class LibraryQuery { // Adds a fragment of WHERE clause. When executed, this Query will connect all // the fragments with AND operator. // Please note that IN operator expects a QStringList as value. - void AddWhere(const QString& column, const QVariant& value, const QString& op = "="); + void AddWhere(const QString& column, const QVariant& value, + const QString& op = "="); void AddCompilationRequirement(bool compilation); void SetLimit(int limit) { limit_ = limit; } - void SetIncludeUnavailable(bool include_unavailable) { include_unavailable_ = include_unavailable; } + void SetIncludeUnavailable(bool include_unavailable) { + include_unavailable_ = include_unavailable; + } - QSqlQuery Exec(QSqlDatabase db, const QString& songs_table, const QString& fts_table); + QSqlQuery Exec(QSqlDatabase db, const QString& songs_table, + const QString& fts_table); bool Next(); QVariant Value(int column) const; - operator const QSqlQuery& () const { return query_; } + operator const QSqlQuery&() const { return query_; } private: QString GetInnerQuery(); @@ -108,4 +108,4 @@ class LibraryQuery { QSqlQuery query_; }; -#endif // LIBRARYQUERY_H +#endif // LIBRARYQUERY_H diff --git a/src/library/librarysettingspage.cpp b/src/library/librarysettingspage.cpp index d74ffa499..bafc00c78 100644 --- a/src/library/librarysettingspage.cpp +++ b/src/library/librarysettingspage.cpp @@ -37,12 +37,10 @@ const char* LibrarySettingsPage::kSettingsGroup = "LibraryConfig"; - LibrarySettingsPage::LibrarySettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_LibrarySettingsPage), - initialised_model_(false) -{ + : SettingsPage(dialog), + ui_(new Ui_LibrarySettingsPage), + initialised_model_(false) { ui_->setupUi(this); ui_->list->setItemDelegate(new NativeSeparatorsDelegate(this)); @@ -52,19 +50,20 @@ LibrarySettingsPage::LibrarySettingsPage(SettingsDialog* dialog) connect(ui_->add, SIGNAL(clicked()), SLOT(Add())); connect(ui_->remove, SIGNAL(clicked()), SLOT(Remove())); - connect(ui_->sync_stats_button, SIGNAL(clicked()), SLOT(WriteAllSongsStatisticsToFiles())); + connect(ui_->sync_stats_button, SIGNAL(clicked()), + SLOT(WriteAllSongsStatisticsToFiles())); } -LibrarySettingsPage::~LibrarySettingsPage() { - delete ui_; -} +LibrarySettingsPage::~LibrarySettingsPage() { delete ui_; } void LibrarySettingsPage::Add() { QSettings settings; settings.beginGroup(kSettingsGroup); - QString path(settings.value("last_path", - Utilities::GetConfigPath(Utilities::Path_DefaultMusicLibrary)).toString()); + QString path( + settings.value("last_path", Utilities::GetConfigPath( + Utilities::Path_DefaultMusicLibrary)) + .toString()); path = QFileDialog::getExistingDirectory(this, tr("Add directory..."), path); if (!path.isNull()) { @@ -75,7 +74,8 @@ void LibrarySettingsPage::Add() { } void LibrarySettingsPage::Remove() { - dialog()->library_directory_model()->RemoveDirectory(ui_->list->currentIndex()); + dialog()->library_directory_model()->RemoveDirectory( + ui_->list->currentIndex()); } void LibrarySettingsPage::CurrentRowChanged(const QModelIndex& index) { @@ -93,16 +93,17 @@ void LibrarySettingsPage::Save() { s.beginGroup(LibraryWatcher::kSettingsGroup); s.setValue("startup_scan", ui_->startup_scan->isChecked()); s.setValue("monitor", ui_->monitor->isChecked()); - + QString filter_text = ui_->cover_art_patterns->text(); QStringList filters = filter_text.split(',', QString::SkipEmptyParts); s.setValue("cover_art_patterns", filters); - + s.endGroup(); s.beginGroup(LibraryBackend::kSettingsGroup); s.setValue("save_ratings_in_file", ui_->save_ratings_in_file->isChecked()); - s.setValue("save_statistics_in_file", ui_->save_statistics_in_file->isChecked()); + s.setValue("save_statistics_in_file", + ui_->save_statistics_in_file->isChecked()); s.endGroup(); } @@ -110,8 +111,8 @@ void LibrarySettingsPage::Load() { if (!initialised_model_) { if (ui_->list->selectionModel()) { disconnect(ui_->list->selectionModel(), - SIGNAL(currentRowChanged(QModelIndex, QModelIndex)), - this, SLOT(CurrentRowChanged(QModelIndex))); + SIGNAL(currentRowChanged(QModelIndex, QModelIndex)), this, + SLOT(CurrentRowChanged(QModelIndex))); } ui_->list->setModel(dialog()->library_directory_model()); @@ -132,27 +133,31 @@ void LibrarySettingsPage::Load() { s.beginGroup(LibraryWatcher::kSettingsGroup); ui_->startup_scan->setChecked(s.value("startup_scan", true).toBool()); ui_->monitor->setChecked(s.value("monitor", true).toBool()); - - QStringList filters = s.value("cover_art_patterns", - QStringList() << "front" << "cover").toStringList(); + + QStringList filters = + s.value("cover_art_patterns", QStringList() << "front" + << "cover").toStringList(); ui_->cover_art_patterns->setText(filters.join(",")); - + s.endGroup(); s.beginGroup(LibraryBackend::kSettingsGroup); - ui_->save_ratings_in_file->setChecked(s.value("save_ratings_in_file", false).toBool()); - ui_->save_statistics_in_file->setChecked(s.value("save_statistics_in_file", false).toBool()); + ui_->save_ratings_in_file->setChecked( + s.value("save_ratings_in_file", false).toBool()); + ui_->save_statistics_in_file->setChecked( + s.value("save_statistics_in_file", false).toBool()); s.endGroup(); } void LibrarySettingsPage::WriteAllSongsStatisticsToFiles() { QMessageBox confirmation_dialog( - QMessageBox::Question, - tr("Write all songs statistics into songs' files"), - tr("Are you sure you want to write song's statistics into song's file for all the songs of your library?"), + QMessageBox::Question, tr("Write all songs statistics into songs' files"), + tr("Are you sure you want to write song's statistics into song's file " + "for all the songs of your library?"), QMessageBox::Yes | QMessageBox::Cancel); if (confirmation_dialog.exec() != QMessageBox::Yes) { return; } - QtConcurrent::run(dialog()->app()->library(), &Library::WriteAllSongsStatisticsToFiles); + QtConcurrent::run(dialog()->app()->library(), + &Library::WriteAllSongsStatisticsToFiles); } diff --git a/src/library/librarysettingspage.h b/src/library/librarysettingspage.h index d0924e2a0..ad8398ffa 100644 --- a/src/library/librarysettingspage.h +++ b/src/library/librarysettingspage.h @@ -28,7 +28,7 @@ class QModelIndex; class LibrarySettingsPage : public SettingsPage { Q_OBJECT -public: + public: LibrarySettingsPage(SettingsDialog* dialog); ~LibrarySettingsPage(); @@ -37,16 +37,16 @@ public: void Load(); void Save(); -private slots: + private slots: void Add(); void Remove(); void WriteAllSongsStatisticsToFiles(); void CurrentRowChanged(const QModelIndex& index); -private: + private: Ui_LibrarySettingsPage* ui_; bool initialised_model_; }; -#endif // LIBRARYSETTINGSPAGE_H +#endif // LIBRARYSETTINGSPAGE_H diff --git a/src/library/libraryview.cpp b/src/library/libraryview.cpp index e807836d2..471f65b64 100644 --- a/src/library/libraryview.cpp +++ b/src/library/libraryview.cpp @@ -15,10 +15,22 @@ along with Clementine. If not, see . */ +#include "libraryview.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "librarydirectorymodel.h" #include "libraryfilterwidget.h" #include "librarymodel.h" -#include "libraryview.h" #include "libraryitem.h" #include "librarybackend.h" #include "core/application.h" @@ -34,27 +46,16 @@ #include "ui/organisedialog.h" #include "ui/organiseerrordialog.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - using smart_playlists::Wizard; const char* LibraryView::kSettingsGroup = "LibraryView"; -LibraryItemDelegate::LibraryItemDelegate(QObject *parent) - : QStyledItemDelegate(parent) -{ -} +LibraryItemDelegate::LibraryItemDelegate(QObject* parent) + : QStyledItemDelegate(parent) {} -void LibraryItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opt, const QModelIndex &index) const { +void LibraryItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& opt, + const QModelIndex& index) const { const bool is_divider = index.data(LibraryModel::Role_IsDivider).toBool(); if (is_divider) { @@ -112,19 +113,17 @@ void LibraryItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &o } } -bool LibraryItemDelegate::helpEvent(QHelpEvent *event, QAbstractItemView *view, - const QStyleOptionViewItem &option, - const QModelIndex &index) { +bool LibraryItemDelegate::helpEvent(QHelpEvent* event, QAbstractItemView* view, + const QStyleOptionViewItem& option, + const QModelIndex& index) { Q_UNUSED(option); - if (!event || !view) - return false; + if (!event || !view) return false; - QHelpEvent *he = static_cast(event); + QHelpEvent* he = static_cast(event); QString text = displayText(index.data(), QLocale::system()); - if (text.isEmpty() || !he) - return false; + if (text.isEmpty() || !he) return false; switch (event->type()) { case QEvent::ToolTip: { @@ -163,14 +162,13 @@ bool LibraryItemDelegate::helpEvent(QHelpEvent *event, QAbstractItemView *view, } LibraryView::LibraryView(QWidget* parent) - : AutoExpandingTreeView(parent), - app_(NULL), - filter_(NULL), - total_song_count_(-1), - nomusic_(":nomusic.png"), - context_menu_(NULL), - is_in_keyboard_search_(false) -{ + : AutoExpandingTreeView(parent), + app_(nullptr), + filter_(nullptr), + total_song_count_(-1), + nomusic_(":nomusic.png"), + context_menu_(nullptr), + is_in_keyboard_search_(false) { setItemDelegate(new LibraryItemDelegate(this)); setAttribute(Qt::WA_MacShowFocusRect, false); setHeaderHidden(true); @@ -182,15 +180,14 @@ LibraryView::LibraryView(QWidget* parent) setStyleSheet("QTreeView::item{padding-top:1px;}"); } -LibraryView::~LibraryView() { -} +LibraryView::~LibraryView() {} void LibraryView::SaveFocus() { QModelIndex current = currentIndex(); QVariant type = model()->data(current, LibraryModel::Role_Type); if (!type.isValid() || !(type.toInt() == LibraryItem::Type_Song || - type.toInt() == LibraryItem::Type_Container || - type.toInt() == LibraryItem::Type_Divider)) { + type.toInt() == LibraryItem::Type_Container || + type.toInt() == LibraryItem::Type_Divider)) { return; } @@ -200,8 +197,8 @@ void LibraryView::SaveFocus() { switch (type.toInt()) { case LibraryItem::Type_Song: { - QModelIndex index = qobject_cast(model()) - ->mapToSource(current); + QModelIndex index = + qobject_cast(model())->mapToSource(current); SongList songs = app_->library_model()->GetChildSongs(index); if (!songs.isEmpty()) { last_selected_song_ = songs.last(); @@ -211,7 +208,8 @@ void LibraryView::SaveFocus() { case LibraryItem::Type_Container: case LibraryItem::Type_Divider: { - QString text = model()->data(current, LibraryModel::Role_SortText).toString(); + QString text = + model()->data(current, LibraryModel::Role_SortText).toString(); last_selected_container_ = text; break; } @@ -227,7 +225,7 @@ void LibraryView::SaveContainerPath(const QModelIndex& child) { QModelIndex current = model()->parent(child); QVariant type = model()->data(current, LibraryModel::Role_Type); if (!type.isValid() || !(type.toInt() == LibraryItem::Type_Container || - type.toInt() == LibraryItem::Type_Divider)) { + type.toInt() == LibraryItem::Type_Divider)) { return; } @@ -237,7 +235,8 @@ void LibraryView::SaveContainerPath(const QModelIndex& child) { } void LibraryView::RestoreFocus() { - if (last_selected_container_.isEmpty() && last_selected_song_.url().isEmpty()) { + if (last_selected_container_.isEmpty() && + last_selected_song_.url().isEmpty()) { return; } RestoreLevelFocus(); @@ -255,9 +254,9 @@ bool LibraryView::RestoreLevelFocus(const QModelIndex& parent) { case LibraryItem::Type_Song: if (!last_selected_song_.url().isEmpty()) { QModelIndex index = qobject_cast(model()) - ->mapToSource(current); + ->mapToSource(current); SongList songs = app_->library_model()->GetChildSongs(index); - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (song == last_selected_song_) { setCurrentIndex(current); return true; @@ -268,14 +267,17 @@ bool LibraryView::RestoreLevelFocus(const QModelIndex& parent) { case LibraryItem::Type_Container: case LibraryItem::Type_Divider: { - QString text = model()->data(current, LibraryModel::Role_SortText).toString(); - if (!last_selected_container_.isEmpty() && last_selected_container_ == text) { + QString text = + model()->data(current, LibraryModel::Role_SortText).toString(); + if (!last_selected_container_.isEmpty() && + last_selected_container_ == text) { emit expand(current); setCurrentIndex(current); return true; } else if (last_selected_path_.contains(text)) { emit expand(current); - // If a selected container or song were not found, we've got into a wrong subtree + // If a selected container or song were not found, we've got into a + // wrong subtree // (happens with "unknown" all the time) if (!RestoreLevelFocus(current)) { emit collapse(current); @@ -295,9 +297,11 @@ void LibraryView::ReloadSettings() { s.beginGroup(kSettingsGroup); SetAutoOpen(s.value("auto_open", true).toBool()); - if (app_ != NULL) { - app_->library_model()->set_pretty_covers(s.value("pretty_covers", true).toBool()); - app_->library_model()->set_show_dividers(s.value("show_dividers", true).toBool()); + if (app_ != nullptr) { + app_->library_model()->set_pretty_covers( + s.value("pretty_covers", true).toBool()); + app_->library_model()->set_show_dividers( + s.value("show_dividers", true).toBool()); } } @@ -306,15 +310,12 @@ void LibraryView::SetApplication(Application* app) { ReloadSettings(); } -void LibraryView::SetFilter(LibraryFilterWidget* filter) { - filter_ = filter; -} +void LibraryView::SetFilter(LibraryFilterWidget* filter) { filter_ = filter; } void LibraryView::TotalSongCountUpdated(int count) { bool old = total_song_count_; total_song_count_ = count; - if (old != total_song_count_) - update(); + if (old != total_song_count_) update(); if (total_song_count_ == 0) setCursor(Qt::PointingHandCursor); @@ -339,7 +340,8 @@ void LibraryView::paintEvent(QPaintEvent* event) { QFontMetrics metrics(bold_font); - QRect title_rect(0, image_rect.bottom() + 20, rect.width(), metrics.height()); + QRect title_rect(0, image_rect.bottom() + 20, rect.width(), + metrics.height()); p.drawText(title_rect, Qt::AlignHCenter, tr("Your library is empty!")); // Draw the other text @@ -360,47 +362,60 @@ void LibraryView::mouseReleaseEvent(QMouseEvent* e) { } } -void LibraryView::contextMenuEvent(QContextMenuEvent *e) { - if(!context_menu_) { +void LibraryView::contextMenuEvent(QContextMenuEvent* e) { + if (!context_menu_) { context_menu_ = new QMenu(this); - add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), + add_to_playlist_ = context_menu_->addAction( + IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist())); load_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), - tr("Replace current playlist"), this, SLOT(Load())); - open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), - tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist())); + tr("Replace current playlist"), this, + SLOT(Load())); + open_in_new_playlist_ = context_menu_->addAction( + IconLoader::Load("document-new"), tr("Open in new playlist"), this, + SLOT(OpenInNewPlaylist())); context_menu_->addSeparator(); - add_to_playlist_enqueue_ = context_menu_->addAction(IconLoader::Load("go-next"), - tr("Queue track"), this, SLOT(AddToPlaylistEnqueue())); + add_to_playlist_enqueue_ = + context_menu_->addAction(IconLoader::Load("go-next"), tr("Queue track"), + this, SLOT(AddToPlaylistEnqueue())); context_menu_->addSeparator(); - new_smart_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), - tr("New smart playlist..."), this, SLOT(NewSmartPlaylist())); - edit_smart_playlist_ = context_menu_->addAction(IconLoader::Load("edit-rename"), - tr("Edit smart playlist..."), this, SLOT(EditSmartPlaylist())); - delete_smart_playlist_ = context_menu_->addAction(IconLoader::Load("edit-delete"), - tr("Delete smart playlist"), this, SLOT(DeleteSmartPlaylist())); + new_smart_playlist_ = context_menu_->addAction( + IconLoader::Load("document-new"), tr("New smart playlist..."), this, + SLOT(NewSmartPlaylist())); + edit_smart_playlist_ = context_menu_->addAction( + IconLoader::Load("edit-rename"), tr("Edit smart playlist..."), this, + SLOT(EditSmartPlaylist())); + delete_smart_playlist_ = context_menu_->addAction( + IconLoader::Load("edit-delete"), tr("Delete smart playlist"), this, + SLOT(DeleteSmartPlaylist())); context_menu_->addSeparator(); organise_ = context_menu_->addAction(IconLoader::Load("edit-copy"), - tr("Organise files..."), this, SLOT(Organise())); - copy_to_device_ = context_menu_->addAction(IconLoader::Load("multimedia-player-ipod-mini-blue"), + tr("Organise files..."), this, + SLOT(Organise())); + copy_to_device_ = context_menu_->addAction( + IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), this, SLOT(CopyToDevice())); delete_ = context_menu_->addAction(IconLoader::Load("edit-delete"), - tr("Delete from disk..."), this, SLOT(Delete())); + tr("Delete from disk..."), this, + SLOT(Delete())); context_menu_->addSeparator(); edit_track_ = context_menu_->addAction(IconLoader::Load("edit-rename"), - tr("Edit track information..."), this, SLOT(EditTracks())); + tr("Edit track information..."), + this, SLOT(EditTracks())); edit_tracks_ = context_menu_->addAction(IconLoader::Load("edit-rename"), - tr("Edit tracks information..."), this, SLOT(EditTracks())); - show_in_browser_ = context_menu_->addAction(IconLoader::Load("document-open-folder"), - tr("Show in file browser..."), this, SLOT(ShowInBrowser())); + tr("Edit tracks information..."), + this, SLOT(EditTracks())); + show_in_browser_ = context_menu_->addAction( + IconLoader::Load("document-open-folder"), tr("Show in file browser..."), + this, SLOT(ShowInBrowser())); context_menu_->addSeparator(); - show_in_various_ = context_menu_->addAction( - tr("Show in various artists"), this, SLOT(ShowInVarious())); + show_in_various_ = context_menu_->addAction(tr("Show in various artists"), + this, SLOT(ShowInVarious())); no_show_in_various_ = context_menu_->addAction( tr("Don't show in various artists"), this, SLOT(NoShowInVarious())); @@ -408,21 +423,23 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { context_menu_->addMenu(filter_->menu()); - copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); - connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), - copy_to_device_, SLOT(setDisabled(bool))); + copy_to_device_->setDisabled( + app_->device_manager()->connected_devices_model()->rowCount() == 0); + connect(app_->device_manager()->connected_devices_model(), + SIGNAL(IsEmptyChanged(bool)), copy_to_device_, + SLOT(setDisabled(bool))); } context_menu_index_ = indexAt(e->pos()); - if (!context_menu_index_.isValid()) - return; + if (!context_menu_index_.isValid()) return; context_menu_index_ = qobject_cast(model()) - ->mapToSource(context_menu_index_); + ->mapToSource(context_menu_index_); QModelIndexList selected_indexes = - qobject_cast(model())->mapSelectionToSource( - selectionModel()->selection()).indexes(); + qobject_cast(model()) + ->mapSelectionToSource(selectionModel()->selection()) + .indexes(); // number of smart playlists selected int smart_playlists = 0; @@ -433,27 +450,34 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { // number of editable non smart playlists selected int regular_editable = 0; - foreach(const QModelIndex& index, selected_indexes) { - int type = app_->library_model()->data(index, LibraryModel::Role_Type).toInt(); + for (const QModelIndex& index : selected_indexes) { + int type = + app_->library_model()->data(index, LibraryModel::Role_Type).toInt(); - if(type == LibraryItem::Type_SmartPlaylist) { + if (type == LibraryItem::Type_SmartPlaylist) { smart_playlists++; - } else if(type == LibraryItem::Type_PlaylistContainer) { + } else if (type == LibraryItem::Type_PlaylistContainer) { smart_playlists_header++; } else { regular_elements++; } - if(app_->library_model()->data(index, LibraryModel::Role_Editable).toBool()) { + if (app_->library_model() + ->data(index, LibraryModel::Role_Editable) + .toBool()) { regular_editable++; } } // TODO: check if custom plugin actions should be enabled / visible - const int songs_selected = smart_playlists + smart_playlists_header + regular_elements; - const bool regular_elements_only = songs_selected == regular_elements && regular_elements > 0; - const bool smart_playlists_only = songs_selected == smart_playlists + smart_playlists_header; - const bool only_smart_playlist_selected = smart_playlists == 1 && songs_selected == 1; + const int songs_selected = + smart_playlists + smart_playlists_header + regular_elements; + const bool regular_elements_only = + songs_selected == regular_elements && regular_elements > 0; + const bool smart_playlists_only = + songs_selected == smart_playlists + smart_playlists_header; + const bool only_smart_playlist_selected = + smart_playlists == 1 && songs_selected == 1; // in all modes load_->setEnabled(songs_selected); @@ -492,52 +516,53 @@ void LibraryView::contextMenuEvent(QContextMenuEvent *e) { context_menu_->popup(e->globalPos()); } -void LibraryView::ShowInVarious() { - ShowInVarious(true); -} +void LibraryView::ShowInVarious() { ShowInVarious(true); } -void LibraryView::NoShowInVarious() { - ShowInVarious(false); -} +void LibraryView::NoShowInVarious() { ShowInVarious(false); } void LibraryView::ShowInVarious(bool on) { - if (!context_menu_index_.isValid()) - return; + if (!context_menu_index_.isValid()) return; - // Map is from album name -> all artists sharing that album name, built from each selected - // song. We put through "Various Artists" changes one album at a time, to make sure the old album - // node gets removed (due to all children removed), before the new one gets added + // Map is from album name -> all artists sharing that album name, built from + // each selected + // song. We put through "Various Artists" changes one album at a time, to make + // sure the old album + // node gets removed (due to all children removed), before the new one gets + // added QMultiMap albums; - foreach (const Song& song, GetSelectedSongs()) { + for (const Song& song : GetSelectedSongs()) { if (albums.find(song.album(), song.artist()) == albums.end()) - albums.insert( song.album(), song.artist() ); + albums.insert(song.album(), song.artist()); } - // If we have only one album and we are putting it into Various Artists, check to see - // if there are other Artists in this album and prompt the user if they'd like them moved, too - if(on && albums.keys().count() == 1) { + // If we have only one album and we are putting it into Various Artists, check + // to see + // if there are other Artists in this album and prompt the user if they'd like + // them moved, too + if (on && albums.keys().count() == 1) { const QString album = albums.keys().first(); QList all_of_album = app_->library_backend()->GetSongsByAlbum(album); QSet other_artists; - foreach (const Song& s, all_of_album) { - if(!albums.contains(album, s.artist()) && !other_artists.contains(s.artist())) { + for (const Song& s : all_of_album) { + if (!albums.contains(album, s.artist()) && + !other_artists.contains(s.artist())) { other_artists.insert(s.artist()); } } if (other_artists.count() > 0) { - if (QMessageBox::question(this, - tr("There are other songs in this album"), - tr("Would you like to move the other songs in this album to Various Artists as well?"), - QMessageBox::Yes | QMessageBox::No, - QMessageBox::Yes) == QMessageBox::Yes) { - foreach (const QString& s, other_artists) { + if (QMessageBox::question(this, tr("There are other songs in this album"), + tr("Would you like to move the other songs in " + "this album to Various Artists as well?"), + QMessageBox::Yes | QMessageBox::No, + QMessageBox::Yes) == QMessageBox::Yes) { + for (const QString& s : other_artists) { albums.insert(album, s); } } } } - foreach (const QString& album, QSet::fromList(albums.keys())) { + for (const QString& album : QSet::fromList(albums.keys())) { app_->library_backend()->ForceCompilation(album, albums.values(album), on); } } @@ -585,8 +610,9 @@ void LibraryView::scrollTo(const QModelIndex& index, ScrollHint hint) { SongList LibraryView::GetSelectedSongs() const { QModelIndexList selected_indexes = - qobject_cast(model())->mapSelectionToSource( - selectionModel()->selection()).indexes(); + qobject_cast(model()) + ->mapSelectionToSource(selectionModel()->selection()) + .indexes(); return app_->library_model()->GetChildSongs(selected_indexes); } @@ -594,36 +620,44 @@ void LibraryView::Organise() { if (!organise_dialog_) organise_dialog_.reset(new OrganiseDialog(app_->task_manager())); - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); organise_dialog_->SetCopy(false); if (organise_dialog_->SetSongs(GetSelectedSongs())) organise_dialog_->show(); else { - QMessageBox::warning(this, tr("Error"), + QMessageBox::warning( + this, tr("Error"), tr("None of the selected songs were suitable for copying to a device")); } } void LibraryView::Delete() { if (QMessageBox::warning(this, tr("Delete files"), - tr("These files will be permanently deleted from disk, are you sure you want to continue?"), - QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) + tr("These files will be permanently deleted from " + "disk, are you sure you want to continue?"), + QMessageBox::Yes, + QMessageBox::Cancel) != QMessageBox::Yes) return; // We can cheat and always take the storage of the first directory, since // they'll all be FilesystemMusicStorage in a library and deleting doesn't // check the actual directory. - boost::shared_ptr storage = - app_->library_model()->directory_model()->index(0, 0).data(MusicStorage::Role_Storage) - .value >(); + std::shared_ptr storage = + app_->library_model() + ->directory_model() + ->index(0, 0) + .data(MusicStorage::Role_Storage) + .value>(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); - connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); + connect(delete_files, SIGNAL(Finished(SongList)), + SLOT(DeleteFinished(SongList))); delete_files->Start(GetSelectedSongs()); } void LibraryView::EditTracks() { - if(!edit_tag_dialog_) { + if (!edit_tag_dialog_) { edit_tag_dialog_.reset(new EditTagDialog(app_, this)); } edit_tag_dialog_->SetSongs(GetSelectedSongs()); @@ -634,15 +668,15 @@ void LibraryView::CopyToDevice() { if (!organise_dialog_) organise_dialog_.reset(new OrganiseDialog(app_->task_manager())); - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); organise_dialog_->SetSongs(GetSelectedSongs()); organise_dialog_->show(); } void LibraryView::DeleteFinished(const SongList& songs_with_errors) { - if (songs_with_errors.isEmpty()) - return; + if (songs_with_errors.isEmpty()) return; OrganiseErrorDialog* dialog = new OrganiseErrorDialog(this); dialog->Show(OrganiseErrorDialog::Type_Delete, songs_with_errors); @@ -652,7 +686,7 @@ void LibraryView::DeleteFinished(const SongList& songs_with_errors) { void LibraryView::FilterReturnPressed() { if (!currentIndex().isValid()) { // Pick the first thing that isn't a divider - for (int row=0 ; rowrowCount() ; ++row) { + for (int row = 0; row < model()->rowCount(); ++row) { QModelIndex idx(model()->index(row, 0)); if (idx.data(LibraryModel::Role_Type) != LibraryItem::Type_Divider) { setCurrentIndex(idx); @@ -661,8 +695,7 @@ void LibraryView::FilterReturnPressed() { } } - if (!currentIndex().isValid()) - return; + if (!currentIndex().isValid()) return; emit doubleClicked(currentIndex()); } @@ -681,7 +714,8 @@ void LibraryView::EditSmartPlaylist() { connect(wizard, SIGNAL(accepted()), SLOT(EditSmartPlaylistFinished())); wizard->show(); - wizard->SetGenerator(app_->library_model()->CreateGenerator(context_menu_index_)); + wizard->SetGenerator( + app_->library_model()->CreateGenerator(context_menu_index_)); } void LibraryView::DeleteSmartPlaylist() { @@ -695,12 +729,13 @@ void LibraryView::NewSmartPlaylistFinished() { void LibraryView::EditSmartPlaylistFinished() { const Wizard* wizard = qobject_cast(sender()); - app_->library_model()->UpdateGenerator(context_menu_index_, wizard->CreateGenerator()); + app_->library_model()->UpdateGenerator(context_menu_index_, + wizard->CreateGenerator()); } void LibraryView::ShowInBrowser() { QList urls; - foreach (const Song& song, GetSelectedSongs()) { + for (const Song& song : GetSelectedSongs()) { urls << song.url(); } diff --git a/src/library/libraryview.h b/src/library/libraryview.h index 85afe7e8a..3fbf0cb93 100644 --- a/src/library/libraryview.h +++ b/src/library/libraryview.h @@ -18,13 +18,13 @@ #ifndef LIBRARYVIEW_H #define LIBRARYVIEW_H -#include "core/song.h" -#include "ui/edittagdialog.h" -#include "widgets/autoexpandingtreeview.h" +#include #include -#include +#include "core/song.h" +#include "ui/edittagdialog.h" +#include "widgets/autoexpandingtreeview.h" class Application; class LibraryFilterWidget; @@ -32,25 +32,28 @@ class OrganiseDialog; class QMimeData; -namespace smart_playlists { class Wizard; } +namespace smart_playlists { +class Wizard; +} class LibraryItemDelegate : public QStyledItemDelegate { Q_OBJECT -public: + public: LibraryItemDelegate(QObject* parent); - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; -public slots: - bool helpEvent(QHelpEvent *event, QAbstractItemView *view, - const QStyleOptionViewItem &option, const QModelIndex &index); + public slots: + bool helpEvent(QHelpEvent* event, QAbstractItemView* view, + const QStyleOptionViewItem& option, const QModelIndex& index); }; class LibraryView : public AutoExpandingTreeView { Q_OBJECT public: - LibraryView(QWidget* parent = 0); + LibraryView(QWidget* parent = nullptr); ~LibraryView(); static const char* kSettingsGroup; @@ -64,7 +67,7 @@ class LibraryView : public AutoExpandingTreeView { void SetFilter(LibraryFilterWidget* filter); // QTreeView - void keyboardSearch(const QString &search); + void keyboardSearch(const QString& search); void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible); public slots: @@ -76,7 +79,7 @@ class LibraryView : public AutoExpandingTreeView { void SaveFocus(); void RestoreFocus(); - signals: +signals: void ShowConfigDialog(); protected: @@ -140,8 +143,8 @@ class LibraryView : public AutoExpandingTreeView { QAction* edit_smart_playlist_; QAction* delete_smart_playlist_; - boost::scoped_ptr organise_dialog_; - boost::scoped_ptr edit_tag_dialog_; + std::unique_ptr organise_dialog_; + std::unique_ptr edit_tag_dialog_; bool is_in_keyboard_search_; @@ -151,4 +154,4 @@ class LibraryView : public AutoExpandingTreeView { QSet last_selected_path_; }; -#endif // LIBRARYVIEW_H +#endif // LIBRARYVIEW_H diff --git a/src/library/libraryviewcontainer.cpp b/src/library/libraryviewcontainer.cpp index 2df492fea..f58f3e459 100644 --- a/src/library/libraryviewcontainer.cpp +++ b/src/library/libraryviewcontainer.cpp @@ -20,32 +20,26 @@ #include "globalsearch/globalsearch.h" LibraryViewContainer::LibraryViewContainer(QWidget* parent) - : QWidget(parent), - ui_(new Ui_LibraryViewContainer) -{ + : QWidget(parent), ui_(new Ui_LibraryViewContainer) { ui_->setupUi(this); view()->SetFilter(filter()); connect(filter(), SIGNAL(UpPressed()), view(), SLOT(UpAndFocus())); connect(filter(), SIGNAL(DownPressed()), view(), SLOT(DownAndFocus())); - connect(filter(), SIGNAL(ReturnPressed()), view(), SLOT(FilterReturnPressed())); - connect(view(), SIGNAL(FocusOnFilterSignal(QKeyEvent*)), filter(), SLOT(FocusOnFilter(QKeyEvent*))); + connect(filter(), SIGNAL(ReturnPressed()), view(), + SLOT(FilterReturnPressed())); + connect(view(), SIGNAL(FocusOnFilterSignal(QKeyEvent*)), filter(), + SLOT(FocusOnFilter(QKeyEvent*))); ReloadSettings(); } -LibraryViewContainer::~LibraryViewContainer() { - delete ui_; -} +LibraryViewContainer::~LibraryViewContainer() { delete ui_; } -LibraryView* LibraryViewContainer::view() const { - return ui_->view; -} +LibraryView* LibraryViewContainer::view() const { return ui_->view; } LibraryFilterWidget* LibraryViewContainer::filter() const { return ui_->filter; } -void LibraryViewContainer::ReloadSettings() { - view()->ReloadSettings(); -} +void LibraryViewContainer::ReloadSettings() { view()->ReloadSettings(); } diff --git a/src/library/libraryviewcontainer.h b/src/library/libraryviewcontainer.h index 24cf18a5b..6989fdafe 100644 --- a/src/library/libraryviewcontainer.h +++ b/src/library/libraryviewcontainer.h @@ -27,8 +27,8 @@ class Ui_LibraryViewContainer; class LibraryViewContainer : public QWidget { Q_OBJECT -public: - LibraryViewContainer(QWidget* parent = 0); + public: + LibraryViewContainer(QWidget* parent = nullptr); ~LibraryViewContainer(); LibraryFilterWidget* filter() const; @@ -36,8 +36,8 @@ public: void ReloadSettings(); -private: + private: Ui_LibraryViewContainer* ui_; }; -#endif // LIBRARYVIEWCONTAINER_H +#endif // LIBRARYVIEWCONTAINER_H diff --git a/src/library/librarywatcher.cpp b/src/library/librarywatcher.cpp index 4a421a840..7dd7cd6db 100644 --- a/src/library/librarywatcher.cpp +++ b/src/library/librarywatcher.cpp @@ -48,25 +48,27 @@ QStringList LibraryWatcher::sValidImages; const char* LibraryWatcher::kSettingsGroup = "LibraryWatcher"; LibraryWatcher::LibraryWatcher(QObject* parent) - : QObject(parent), - backend_(NULL), - task_manager_(NULL), - fs_watcher_(FileSystemWatcherInterface::Create(this)), - stop_requested_(false), - scan_on_startup_(true), - monitor_(true), - rescan_timer_(new QTimer(this)), - rescan_paused_(false), - total_watches_(0), - cue_parser_(new CueParser(backend_, this)) -{ + : QObject(parent), + backend_(nullptr), + task_manager_(nullptr), + fs_watcher_(FileSystemWatcherInterface::Create(this)), + stop_requested_(false), + scan_on_startup_(true), + monitor_(true), + rescan_timer_(new QTimer(this)), + rescan_paused_(false), + total_watches_(0), + cue_parser_(new CueParser(backend_, this)) { Utilities::SetThreadIOPriority(Utilities::IOPRIO_CLASS_IDLE); rescan_timer_->setInterval(1000); rescan_timer_->setSingleShot(true); if (sValidImages.isEmpty()) { - sValidImages << "jpg" << "png" << "gif" << "jpeg"; + sValidImages << "jpg" + << "png" + << "gif" + << "jpeg"; } ReloadSettings(); @@ -74,17 +76,17 @@ LibraryWatcher::LibraryWatcher(QObject* parent) connect(rescan_timer_, SIGNAL(timeout()), SLOT(RescanPathsNow())); } -LibraryWatcher::ScanTransaction::ScanTransaction(LibraryWatcher* watcher, int dir, - bool incremental, bool ignores_mtime) - : progress_(0), - progress_max_(0), - dir_(dir), - incremental_(incremental), - ignores_mtime_(ignores_mtime), - watcher_(watcher), - cached_songs_dirty_(true), - known_subdirs_dirty_(true) -{ +LibraryWatcher::ScanTransaction::ScanTransaction(LibraryWatcher* watcher, + int dir, bool incremental, + bool ignores_mtime) + : progress_(0), + progress_max_(0), + dir_(dir), + incremental_(incremental), + ignores_mtime_(ignores_mtime), + watcher_(watcher), + cached_songs_dirty_(true), + known_subdirs_dirty_(true) { QString description; if (watcher_->device_name_.isEmpty()) description = tr("Updating library"); @@ -99,17 +101,15 @@ LibraryWatcher::ScanTransaction::~ScanTransaction() { // If we're stopping then don't commit the transaction if (watcher_->stop_requested_) return; - if (!new_songs.isEmpty()) - emit watcher_->NewOrUpdatedSongs(new_songs); + if (!new_songs.isEmpty()) emit watcher_->NewOrUpdatedSongs(new_songs); - if (!touched_songs.isEmpty()) - emit watcher_->SongsMTimeUpdated(touched_songs); + if (!touched_songs.isEmpty()) emit watcher_->SongsMTimeUpdated(touched_songs); - if (!deleted_songs.isEmpty()) - emit watcher_->SongsDeleted(deleted_songs); + if (!deleted_songs.isEmpty()) emit watcher_->SongsDeleted(deleted_songs); - if (!new_subdirs.isEmpty()) - emit watcher_->SubdirsDiscovered(new_subdirs); + if (!readded_songs.isEmpty()) emit watcher_->SongsReadded(readded_songs); + + if (!new_subdirs.isEmpty()) emit watcher_->SubdirsDiscovered(new_subdirs); if (!touched_subdirs.isEmpty()) emit watcher_->SubdirsMTimeUpdated(touched_subdirs); @@ -118,7 +118,7 @@ LibraryWatcher::ScanTransaction::~ScanTransaction() { if (watcher_->monitor_) { // Watch the new subdirectories - foreach (const Subdirectory& subdir, new_subdirs) { + for (const Subdirectory& subdir : new_subdirs) { watcher_->AddWatch(watcher_->watched_dirs_[dir_], subdir.path); } } @@ -134,7 +134,8 @@ void LibraryWatcher::ScanTransaction::AddToProgressMax(int n) { watcher_->task_manager_->SetTaskProgress(task_id_, progress_, progress_max_); } -SongList LibraryWatcher::ScanTransaction::FindSongsInSubdirectory(const QString &path) { +SongList LibraryWatcher::ScanTransaction::FindSongsInSubdirectory( + const QString& path) { if (cached_songs_dirty_) { cached_songs_ = watcher_->backend_->FindSongsInDirectory(dir_); cached_songs_dirty_ = false; @@ -142,35 +143,35 @@ SongList LibraryWatcher::ScanTransaction::FindSongsInSubdirectory(const QString // TODO: Make this faster SongList ret; - foreach (const Song& song, cached_songs_) { - if (song.url().toLocalFile().section('/', 0, -2) == path) - ret << song; + for (const Song& song : cached_songs_) { + if (song.url().toLocalFile().section('/', 0, -2) == path) ret << song; } return ret; } -void LibraryWatcher::ScanTransaction::SetKnownSubdirs(const SubdirectoryList &subdirs) { +void LibraryWatcher::ScanTransaction::SetKnownSubdirs( + const SubdirectoryList& subdirs) { known_subdirs_ = subdirs; known_subdirs_dirty_ = false; } -bool LibraryWatcher::ScanTransaction::HasSeenSubdir(const QString &path) { +bool LibraryWatcher::ScanTransaction::HasSeenSubdir(const QString& path) { if (known_subdirs_dirty_) SetKnownSubdirs(watcher_->backend_->SubdirsInDirectory(dir_)); - foreach (const Subdirectory& subdir, known_subdirs_) { - if (subdir.path == path && subdir.mtime != 0) - return true; + for (const Subdirectory& subdir : known_subdirs_) { + if (subdir.path == path && subdir.mtime != 0) return true; } return false; } -SubdirectoryList LibraryWatcher::ScanTransaction::GetImmediateSubdirs(const QString &path) { +SubdirectoryList LibraryWatcher::ScanTransaction::GetImmediateSubdirs( + const QString& path) { if (known_subdirs_dirty_) SetKnownSubdirs(watcher_->backend_->SubdirsInDirectory(dir_)); SubdirectoryList ret; - foreach (const Subdirectory& subdir, known_subdirs_) { + for (const Subdirectory& subdir : known_subdirs_) { if (subdir.path.left(subdir.path.lastIndexOf(QDir::separator())) == path && subdir.mtime != 0) { ret << subdir; @@ -186,7 +187,8 @@ SubdirectoryList LibraryWatcher::ScanTransaction::GetAllSubdirs() { return known_subdirs_; } -void LibraryWatcher::AddDirectory(const Directory& dir, const SubdirectoryList& subdirs) { +void LibraryWatcher::AddDirectory(const Directory& dir, + const SubdirectoryList& subdirs) { watched_dirs_[dir.id] = dir; if (subdirs.isEmpty()) { @@ -202,29 +204,28 @@ void LibraryWatcher::AddDirectory(const Directory& dir, const SubdirectoryList& ScanTransaction transaction(this, dir.id, true); transaction.SetKnownSubdirs(subdirs); transaction.AddToProgressMax(subdirs.count()); - foreach (const Subdirectory& subdir, subdirs) { + for (const Subdirectory& subdir : subdirs) { if (stop_requested_) return; - if (scan_on_startup_) - ScanSubdirectory(subdir.path, subdir, &transaction); + if (scan_on_startup_) ScanSubdirectory(subdir.path, subdir, &transaction); - if (monitor_) - AddWatch(dir, subdir.path); + if (monitor_) AddWatch(dir, subdir.path); } } emit CompilationsNeedUpdating(); } -void LibraryWatcher::ScanSubdirectory( - const QString& path, const Subdirectory& subdir, ScanTransaction* t, - bool force_noincremental) { +void LibraryWatcher::ScanSubdirectory(const QString& path, + const Subdirectory& subdir, + ScanTransaction* t, + bool force_noincremental) { QFileInfo path_info(path); // Do not scan symlinked dirs that are already in collection if (path_info.isSymLink()) { QString real_path = path_info.symLinkTarget(); - foreach (const Directory& dir, watched_dirs_) { + for (const Directory& dir : watched_dirs_) { if (real_path.startsWith(dir.path)) { t->AddToProgress(1); return; @@ -247,7 +248,7 @@ void LibraryWatcher::ScanSubdirectory( // so we need to look and see if any of our children don't exist any more. // If one has been removed, "rescan" it to get the deleted songs SubdirectoryList previous_subdirs = t->GetImmediateSubdirs(path); - foreach (const Subdirectory& subdir, previous_subdirs) { + for (const Subdirectory& subdir : previous_subdirs) { if (!QFile::exists(subdir.path) && subdir.path != path) { t->AddToProgressMax(1); ScanSubdirectory(subdir.path, subdir, t, true); @@ -255,9 +256,11 @@ void LibraryWatcher::ScanSubdirectory( } // First we "quickly" get a list of the files in the directory that we - // think might be music. While we're here, we also look for new subdirectories + // think might be music. While we're here, we also look for new + // subdirectories // and possible album artwork. - QDirIterator it(path, QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot); + QDirIterator it( + path, QDir::Dirs | QDir::Files | QDir::Hidden | QDir::NoDotAndDotDot); while (it.hasNext()) { if (stop_requested_) return; @@ -293,7 +296,7 @@ void LibraryWatcher::ScanSubdirectory( QSet cues_processed; // Now compare the list from the database with the list of files on disk - foreach (const QString& file, files_on_disk) { + for (const QString& file : files_on_disk) { if (stop_requested_) return; // associated cue @@ -321,17 +324,19 @@ void LibraryWatcher::ScanSubdirectory( bool cue_deleted = song_cue_mtime == 0 && matching_song.has_cue(); bool cue_added = matching_cue_mtime != 0 && !matching_song.has_cue(); - // watch out for cue songs which have their mtime equal to qMax(media_file_mtime, cue_sheet_mtime) - bool changed = (matching_song.mtime() != qMax(file_info.lastModified().toTime_t(), song_cue_mtime)) - || cue_deleted || cue_added - || matching_song.is_unavailable(); + // watch out for cue songs which have their mtime equal to + // qMax(media_file_mtime, cue_sheet_mtime) + bool changed = + (matching_song.mtime() != + qMax(file_info.lastModified().toTime_t(), song_cue_mtime)) || + cue_deleted || cue_added; // Also want to look to see whether the album art has changed QString image = ImageForSong(file, album_art); if ((matching_song.art_automatic().isEmpty() && !image.isEmpty()) || - (!matching_song.art_automatic().isEmpty() - && !matching_song.has_embedded_cover() - && !QFile::exists(matching_song.art_automatic()))) { + (!matching_song.art_automatic().isEmpty() && + !matching_song.has_embedded_cover() && + !QFile::exists(matching_song.art_automatic()))) { changed = true; } @@ -340,18 +345,24 @@ void LibraryWatcher::ScanSubdirectory( qLog(Debug) << file << "changed"; // if cue associated... - if(!cue_deleted && (matching_song.has_cue() || cue_added)) { + if (!cue_deleted && (matching_song.has_cue() || cue_added)) { UpdateCueAssociatedSongs(file, path, matching_cue, image, t); - // if no cue or it's about to lose it... + // if no cue or it's about to lose it... } else { - UpdateNonCueAssociatedSong(file, matching_song, image, cue_deleted, t); + UpdateNonCueAssociatedSong(file, matching_song, image, cue_deleted, + t); } } + + // nothing has changed - mark the song available without re-scanning + if (matching_song.is_unavailable()) t->readded_songs << matching_song; + } else { // The song is on disk but not in the DB - SongList song_list = ScanNewFile(file, path, matching_cue, &cues_processed); + SongList song_list = + ScanNewFile(file, path, matching_cue, &cues_processed); - if(song_list.isEmpty()) { + if (song_list.isEmpty()) { continue; } @@ -359,10 +370,9 @@ void LibraryWatcher::ScanSubdirectory( // choose an image for the song(s) QString image = ImageForSong(file, album_art); - foreach (Song song, song_list) { + for (Song song : song_list) { song.set_directory_id(t->dir()); - if (song.art_automatic().isEmpty()) - song.set_art_automatic(image); + if (song.art_automatic().isEmpty()) song.set_art_automatic(image); t->new_songs << song; } @@ -370,8 +380,9 @@ void LibraryWatcher::ScanSubdirectory( } // Look for deleted songs - foreach (const Song& song, songs_in_db) { - if (!song.is_unavailable() && !files_on_disk.contains(song.url().toLocalFile())) { + for (const Song& song : songs_in_db) { + if (!song.is_unavailable() && + !files_on_disk.contains(song.url().toLocalFile())) { qLog(Debug) << "Song deleted from disk:" << song.url().toLocalFile(); t->deleted_songs << song; } @@ -380,8 +391,8 @@ void LibraryWatcher::ScanSubdirectory( // Add this subdir to the new or touched list Subdirectory updated_subdir; updated_subdir.directory_id = t->dir(); - updated_subdir.mtime = path_info.exists() ? - path_info.lastModified().toTime_t() : 0; + updated_subdir.mtime = + path_info.exists() ? path_info.lastModified().toTime_t() : 0; updated_subdir.path = path; if (subdir.directory_id == -1) @@ -393,14 +404,16 @@ void LibraryWatcher::ScanSubdirectory( // Recurse into the new subdirs that we found t->AddToProgressMax(my_new_subdirs.count()); - foreach (const Subdirectory& my_new_subdir, my_new_subdirs) { + for (const Subdirectory& my_new_subdir : my_new_subdirs) { if (stop_requested_) return; ScanSubdirectory(my_new_subdir.path, my_new_subdir, t, true); } } -void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, const QString& path, - const QString& matching_cue, const QString& image, +void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, + const QString& path, + const QString& matching_cue, + const QString& image, ScanTransaction* t) { QFile cue(matching_cue); cue.open(QIODevice::ReadOnly); @@ -408,21 +421,21 @@ void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, const QString SongList old_sections = backend_->GetSongsByUrl(QUrl::fromLocalFile(file)); QHash sections_map; - foreach(const Song& song, old_sections) { + for (const Song& song : old_sections) { sections_map[song.beginning_nanosec()] = song; } QSet used_ids; // update every song that's in the cue and library - foreach(Song cue_song, cue_parser_->Load(&cue, matching_cue, path)) { + for (Song cue_song : cue_parser_->Load(&cue, matching_cue, path)) { cue_song.set_directory_id(t->dir()); Song matching = sections_map[cue_song.beginning_nanosec()]; // a new section - if(!matching.is_valid()) { + if (!matching.is_valid()) { t->new_songs << cue_song; - // changed section + // changed section } else { PreserveUserSetData(file, image, matching, &cue_song, t); used_ids.insert(matching.id()); @@ -430,23 +443,25 @@ void LibraryWatcher::UpdateCueAssociatedSongs(const QString& file, const QString } // sections that are now missing - foreach(const Song& matching, old_sections) { - if(!used_ids.contains(matching.id())) { + for (const Song& matching : old_sections) { + if (!used_ids.contains(matching.id())) { t->deleted_songs << matching; } } } - -void LibraryWatcher::UpdateNonCueAssociatedSong(const QString& file, const Song& matching_song, - const QString& image, bool cue_deleted, +void LibraryWatcher::UpdateNonCueAssociatedSong(const QString& file, + const Song& matching_song, + const QString& image, + bool cue_deleted, ScanTransaction* t) { // if a cue got deleted, we turn it's first section into the new // 'raw' (cueless) song and we just remove the rest of the sections // from the library - if(cue_deleted) { - foreach(const Song& song, backend_->GetSongsByUrl(QUrl::fromLocalFile(file))) { - if(!song.IsMetadataEqual(matching_song)) { + if (cue_deleted) { + for (const Song& song : + backend_->GetSongsByUrl(QUrl::fromLocalFile(file))) { + if (!song.IsMetadataEqual(matching_song)) { t->deleted_songs << song; } } @@ -456,21 +471,21 @@ void LibraryWatcher::UpdateNonCueAssociatedSong(const QString& file, const Song& song_on_disk.set_directory_id(t->dir()); TagReaderClient::Instance()->ReadFileBlocking(file, &song_on_disk); - if(song_on_disk.is_valid()) { + if (song_on_disk.is_valid()) { PreserveUserSetData(file, image, matching_song, &song_on_disk, t); } } SongList LibraryWatcher::ScanNewFile(const QString& file, const QString& path, - const QString& matching_cue, QSet* cues_processed) { + const QString& matching_cue, + QSet* cues_processed) { SongList song_list; uint matching_cue_mtime = GetMtimeForCue(matching_cue); // if it's a cue - create virtual tracks - if(matching_cue_mtime) { + if (matching_cue_mtime) { // don't process the same cue many times - if(cues_processed->contains(matching_cue)) - return song_list; + if (cues_processed->contains(matching_cue)) return song_list; QFile cue(matching_cue); cue.open(QIODevice::ReadOnly); @@ -478,7 +493,7 @@ SongList LibraryWatcher::ScanNewFile(const QString& file, const QString& path, // Ignore FILEs pointing to other media files. Also, watch out for incorrect // media files. Playlist parser for CUEs considers every entry in sheet // valid and we don't want invalid media getting into library! - foreach(const Song& cue_song, cue_parser_->Load(&cue, matching_cue, path)) { + for (const Song& cue_song : cue_parser_->Load(&cue, matching_cue, path)) { if (cue_song.url().toLocalFile() == file) { if (TagReaderClient::Instance()->IsMediaFileBlocking(file)) { song_list << cue_song; @@ -486,11 +501,11 @@ SongList LibraryWatcher::ScanNewFile(const QString& file, const QString& path, } } - if(!song_list.isEmpty()) { + if (!song_list.isEmpty()) { *cues_processed << matching_cue; } - // it's a normal media file + // it's a normal media file } else { Song song; TagReaderClient::Instance()->ReadFileBlocking(file, &song); @@ -498,29 +513,29 @@ SongList LibraryWatcher::ScanNewFile(const QString& file, const QString& path, if (song.is_valid()) { song_list << song; } - } return song_list; } -void LibraryWatcher::PreserveUserSetData(const QString& file, const QString& image, - const Song& matching_song, Song* out, ScanTransaction* t) { +void LibraryWatcher::PreserveUserSetData(const QString& file, + const QString& image, + const Song& matching_song, Song* out, + ScanTransaction* t) { out->set_id(matching_song.id()); // Previous versions of Clementine incorrectly overwrote this and // stored it in the DB, so we can't rely on matching_song to // know if it has embedded artwork or not, but we can check here. - if (!out->has_embedded_cover()) - out->set_art_automatic(image); + if (!out->has_embedded_cover()) out->set_art_automatic(image); out->MergeUserSetData(matching_song); - // The song was deleted from the database (e.g. due to an unmounted + // The song was deleted from the database (e.g. due to an unmounted // filesystem), but has been restored. if (matching_song.is_unavailable()) { qLog(Debug) << file << " unavailable song restored"; - + t->new_songs << *out; } else if (!matching_song.IsMetadataEqual(*out)) { qLog(Debug) << file << "metadata changed"; @@ -546,17 +561,14 @@ uint LibraryWatcher::GetMtimeForCue(const QString& cue_path) { const QDateTime cue_last_modified = file_info.lastModified(); - return cue_last_modified.isValid() - ? cue_last_modified.toTime_t() - : 0; + return cue_last_modified.isValid() ? cue_last_modified.toTime_t() : 0; } void LibraryWatcher::AddWatch(const Directory& dir, const QString& path) { - if (!QFile::exists(path)) - return; + if (!QFile::exists(path)) return; connect(fs_watcher_, SIGNAL(PathChanged(const QString&)), this, - SLOT(DirectoryChanged(const QString&)), Qt::UniqueConnection); + SLOT(DirectoryChanged(const QString&)), Qt::UniqueConnection); fs_watcher_->AddPath(path); subdir_mapping_[path] = dir; } @@ -566,15 +578,16 @@ void LibraryWatcher::RemoveDirectory(const Directory& dir) { watched_dirs_.remove(dir.id); // Stop watching the directory's subdirectories - foreach (const QString& subdir_path, subdir_mapping_.keys(dir)) { + for (const QString& subdir_path : subdir_mapping_.keys(dir)) { fs_watcher_->RemovePath(subdir_path); subdir_mapping_.remove(subdir_path); } } -bool LibraryWatcher::FindSongByPath(const SongList& list, const QString& path, Song* out) { +bool LibraryWatcher::FindSongByPath(const SongList& list, const QString& path, + Song* out) { // TODO: Make this faster - foreach (const Song& song, list) { + for (const Song& song : list) { if (song.url().toLocalFile() == path) { *out = song; return true; @@ -583,31 +596,31 @@ bool LibraryWatcher::FindSongByPath(const SongList& list, const QString& path, S return false; } -void LibraryWatcher::DirectoryChanged(const QString &subdir) { +void LibraryWatcher::DirectoryChanged(const QString& subdir) { // Find what dir it was in - QHash::const_iterator it = subdir_mapping_.constFind(subdir); + QHash::const_iterator it = + subdir_mapping_.constFind(subdir); if (it == subdir_mapping_.constEnd()) { return; } Directory dir = *it; - qLog(Debug) << "Subdir" << subdir << "changed under directory" << dir.path << "id" << dir.id; + qLog(Debug) << "Subdir" << subdir << "changed under directory" << dir.path + << "id" << dir.id; // Queue the subdir for rescanning - if (!rescan_queue_[dir.id].contains(subdir)) - rescan_queue_[dir.id] << subdir; + if (!rescan_queue_[dir.id].contains(subdir)) rescan_queue_[dir.id] << subdir; - if (!rescan_paused_) - rescan_timer_->start(); + if (!rescan_paused_) rescan_timer_->start(); } void LibraryWatcher::RescanPathsNow() { - foreach (int dir, rescan_queue_.keys()) { + for (int dir : rescan_queue_.keys()) { if (stop_requested_) return; ScanTransaction transaction(this, dir, false); transaction.AddToProgressMax(rescan_queue_[dir].count()); - foreach (const QString& path, rescan_queue_[dir]) { + for (const QString& path : rescan_queue_[dir]) { if (stop_requested_) return; Subdirectory subdir; subdir.directory_id = dir; @@ -623,30 +636,29 @@ void LibraryWatcher::RescanPathsNow() { } QString LibraryWatcher::PickBestImage(const QStringList& images) { - + // This is used when there is more than one image in a directory. // Pick the biggest image that matches the most important filter - + QStringList filtered; - - foreach(const QString& filter_text, best_image_filters_) { - // the images in the images list are represented by a full path, + + for (const QString& filter_text : best_image_filters_) { + // the images in the images list are represented by a full path, // so we need to isolate just the filename - foreach(const QString& image, images) { + for (const QString& image : images) { QFileInfo file_info(image); QString filename(file_info.fileName()); if (filename.contains(filter_text, Qt::CaseInsensitive)) filtered << image; } - /* We assume the filters are give in the order best to worst, so + /* We assume the filters are give in the order best to worst, so if we've got a result, we go with it. Otherwise we might start capturing more generic rules */ - if (!filtered.isEmpty()) - break; + if (!filtered.isEmpty()) break; } - - if (filtered.isEmpty()){ + + if (filtered.isEmpty()) { // the filter was too restrictive, just use the original list filtered = images; } @@ -654,10 +666,9 @@ QString LibraryWatcher::PickBestImage(const QStringList& images) { int biggest_size = 0; QString biggest_path; - foreach (const QString& path, filtered) { + for (const QString& path : filtered) { QImage image(path); - if (image.isNull()) - continue; + if (image.isNull()) continue; int size = image.width() * image.height(); if (size > biggest_size) { @@ -669,7 +680,8 @@ QString LibraryWatcher::PickBestImage(const QStringList& images) { return biggest_path; } -QString LibraryWatcher::ImageForSong(const QString& path, QMap& album_art) { +QString LibraryWatcher::ImageForSong(const QString& path, + QMap& album_art) { QString dir(DirectoryPart(path)); if (album_art.contains(dir)) { @@ -697,21 +709,21 @@ void LibraryWatcher::ReloadSettings() { monitor_ = s.value("monitor", true).toBool(); best_image_filters_.clear(); - QStringList filters = s.value("cover_art_patterns", - QStringList() << "front" << "cover").toStringList(); - foreach(const QString& filter, filters) { + QStringList filters = + s.value("cover_art_patterns", QStringList() << "front" + << "cover").toStringList(); + for (const QString& filter : filters) { QString s = filter.trimmed(); - if (!s.isEmpty()) - best_image_filters_ << s; + if (!s.isEmpty()) best_image_filters_ << s; } if (!monitor_ && was_monitoring_before) { fs_watcher_->Clear(); } else if (monitor_ && !was_monitoring_before) { // Add all directories to all QFileSystemWatchers again - foreach (const Directory& dir, watched_dirs_.values()) { + for (const Directory& dir : watched_dirs_.values()) { SubdirectoryList subdirs = backend_->SubdirsInDirectory(dir.id); - foreach (const Subdirectory& subdir, subdirs) { + for (const Subdirectory& subdir : subdirs) { AddWatch(dir, subdir.path); } } @@ -725,8 +737,7 @@ void LibraryWatcher::SetRescanPausedAsync(bool pause) { void LibraryWatcher::SetRescanPaused(bool pause) { rescan_paused_ = pause; - if (!rescan_paused_ && !rescan_queue_.isEmpty()) - RescanPathsNow(); + if (!rescan_paused_ && !rescan_queue_.isEmpty()) RescanPathsNow(); } void LibraryWatcher::IncrementalScanAsync() { @@ -737,22 +748,17 @@ void LibraryWatcher::FullScanAsync() { QMetaObject::invokeMethod(this, "FullScanNow", Qt::QueuedConnection); } -void LibraryWatcher::IncrementalScanNow() { - PerformScan(true, false); -} +void LibraryWatcher::IncrementalScanNow() { PerformScan(true, false); } -void LibraryWatcher::FullScanNow() { - PerformScan(false, true); -} +void LibraryWatcher::FullScanNow() { PerformScan(false, true); } void LibraryWatcher::PerformScan(bool incremental, bool ignore_mtimes) { - foreach (const Directory& dir, watched_dirs_.values()) { - ScanTransaction transaction(this, dir.id, - incremental, ignore_mtimes); + for (const Directory& dir : watched_dirs_.values()) { + ScanTransaction transaction(this, dir.id, incremental, ignore_mtimes); SubdirectoryList subdirs(transaction.GetAllSubdirs()); transaction.AddToProgressMax(subdirs.count()); - foreach (const Subdirectory& subdir, subdirs) { + for (const Subdirectory& subdir : subdirs) { if (stop_requested_) return; ScanSubdirectory(subdir.path, subdir, &transaction); diff --git a/src/library/librarywatcher.h b/src/library/librarywatcher.h index 09b205742..81059d171 100644 --- a/src/library/librarywatcher.h +++ b/src/library/librarywatcher.h @@ -38,13 +38,17 @@ class LibraryWatcher : public QObject { Q_OBJECT public: - LibraryWatcher(QObject* parent = 0); + LibraryWatcher(QObject* parent = nullptr); static const char* kSettingsGroup; void set_backend(LibraryBackend* backend) { backend_ = backend; } - void set_task_manager(TaskManager* task_manager) { task_manager_ = task_manager; } - void set_device_name(const QString& device_name) { device_name_ = device_name; } + void set_task_manager(TaskManager* task_manager) { + task_manager_ = task_manager; + } + void set_device_name(const QString& device_name) { + device_name_ = device_name; + } void IncrementalScanAsync(); void FullScanAsync(); @@ -53,10 +57,11 @@ class LibraryWatcher : public QObject { void Stop() { stop_requested_ = true; } - signals: +signals: void NewOrUpdatedSongs(const SongList& songs); void SongsMTimeUpdated(const SongList& songs); void SongsDeleted(const SongList& songs); + void SongsReadded(const SongList& songs, bool unavailable = false); void SubdirsDiscovered(const SubdirectoryList& subdirs); void SubdirsMTimeUpdated(const SubdirectoryList& subdirs); void CompilationsNeedUpdating(); @@ -81,8 +86,8 @@ class LibraryWatcher : public QObject { // LibraryBackend::FindSongsInDirectory. class ScanTransaction { public: - ScanTransaction(LibraryWatcher* watcher, int dir, - bool incremental, bool ignores_mtime = false); + ScanTransaction(LibraryWatcher* watcher, int dir, bool incremental, + bool ignores_mtime = false); ~ScanTransaction(); SongList FindSongsInSubdirectory(const QString& path); @@ -99,6 +104,7 @@ class LibraryWatcher : public QObject { bool ignores_mtime() const { return ignores_mtime_; } SongList deleted_songs; + SongList readded_songs; SongList new_songs; SongList touched_songs; SubdirectoryList new_subdirs; @@ -106,7 +112,7 @@ class LibraryWatcher : public QObject { private: ScanTransaction(const ScanTransaction&) {} - ScanTransaction& operator =(const ScanTransaction&) { return *this; } + ScanTransaction& operator=(const ScanTransaction&) { return *this; } int task_id_; int progress_; @@ -140,12 +146,14 @@ class LibraryWatcher : public QObject { ScanTransaction* t, bool force_noincremental = false); private: - static bool FindSongByPath(const SongList& list, const QString& path, Song* out); - inline static QString NoExtensionPart( const QString &fileName ); - inline static QString ExtensionPart( const QString &fileName ); - inline static QString DirectoryPart( const QString &fileName ); + static bool FindSongByPath(const SongList& list, const QString& path, + Song* out); + inline static QString NoExtensionPart(const QString& fileName); + inline static QString ExtensionPart(const QString& fileName); + inline static QString DirectoryPart(const QString& fileName); QString PickBestImage(const QStringList& images); - QString ImageForSong(const QString& path, QMap& album_art); + QString ImageForSong(const QString& path, + QMap& album_art); void AddWatch(const Directory& dir, const QString& path); uint GetMtimeForCue(const QString& cue_path); void PerformScan(bool incremental, bool ignore_mtimes); @@ -153,22 +161,26 @@ class LibraryWatcher : public QObject { // Updates the sections of a cue associated and altered (according to mtime) // media file during a scan. void UpdateCueAssociatedSongs(const QString& file, const QString& path, - const QString& matching_cue, const QString& image, - ScanTransaction* t); + const QString& matching_cue, + const QString& image, ScanTransaction* t); // Updates a single non-cue associated and altered (according to mtime) song // during a scan. - void UpdateNonCueAssociatedSong(const QString& file, const Song& matching_song, + void UpdateNonCueAssociatedSong(const QString& file, + const Song& matching_song, const QString& image, bool cue_deleted, - ScanTransaction* t) ; - // Updates a new song with some metadata taken from it's equivalent old + ScanTransaction* t); + // Updates a new song with some metadata taken from it's equivalent old // song (for example rating and score). void PreserveUserSetData(const QString& file, const QString& image, - const Song& matching_song, Song* out, ScanTransaction* t); - // Scans a single media file that's present on the disk but not yet in the library. + const Song& matching_song, Song* out, + ScanTransaction* t); + // Scans a single media file that's present on the disk but not yet in the + // library. // It may result in a multiple files added to the library when the media file // has many sections (like a CUE related media file). SongList ScanNewFile(const QString& file, const QString& path, - const QString& matching_cue, QSet* cues_processed); + const QString& matching_cue, + QSet* cues_processed); private: LibraryBackend* backend_; @@ -178,12 +190,12 @@ class LibraryWatcher : public QObject { FileSystemWatcherInterface* fs_watcher_; QHash subdir_mapping_; - /* A list of words use to try to identify the (likely) best image + /* A list of words use to try to identify the (likely) best image * found in an directory to use as cover artwork. * e.g. using ["front", "cover"] would identify front.jpg and * exclude back.jpg. */ - QStringList best_image_filters_; + QStringList best_image_filters_; bool stop_requested_; bool scan_on_startup_; @@ -191,7 +203,8 @@ class LibraryWatcher : public QObject { QMap watched_dirs_; QTimer* rescan_timer_; - QMap rescan_queue_; // dir id -> list of subdirs to be scanned + QMap + rescan_queue_; // dir id -> list of subdirs to be scanned bool rescan_paused_; int total_watches_; @@ -201,15 +214,17 @@ class LibraryWatcher : public QObject { static QStringList sValidImages; }; -inline QString LibraryWatcher::NoExtensionPart( const QString &fileName ) { - return fileName.contains( '.' ) ? fileName.section( '.', 0, -2 ) : ""; +inline QString LibraryWatcher::NoExtensionPart(const QString& fileName) { + return fileName.contains('.') ? fileName.section('.', 0, -2) : ""; } // Thanks Amarok -inline QString LibraryWatcher::ExtensionPart( const QString &fileName ) { - return fileName.contains( '.' ) ? fileName.mid( fileName.lastIndexOf('.') + 1 ).toLower() : ""; +inline QString LibraryWatcher::ExtensionPart(const QString& fileName) { + return fileName.contains('.') + ? fileName.mid(fileName.lastIndexOf('.') + 1).toLower() + : ""; } -inline QString LibraryWatcher::DirectoryPart( const QString &fileName ) { - return fileName.section( '/', 0, -2 ); +inline QString LibraryWatcher::DirectoryPart(const QString& fileName) { + return fileName.section('/', 0, -2); } -#endif // LIBRARYWATCHER_H +#endif // LIBRARYWATCHER_H diff --git a/src/library/sqlrow.cpp b/src/library/sqlrow.cpp index 25ed7fff7..a573dfa03 100644 --- a/src/library/sqlrow.cpp +++ b/src/library/sqlrow.cpp @@ -21,13 +21,9 @@ #include #include -SqlRow::SqlRow(const QSqlQuery& query) { - Init(query); -} +SqlRow::SqlRow(const QSqlQuery& query) { Init(query); } -SqlRow::SqlRow(const LibraryQuery& query) { - Init(query); -} +SqlRow::SqlRow(const LibraryQuery& query) { Init(query); } void SqlRow::Init(const QSqlQuery& query) { int rows = query.record().count(); @@ -35,4 +31,3 @@ void SqlRow::Init(const QSqlQuery& query) { columns_ << query.value(i); } } - diff --git a/src/mac/SBSystemPreferences.h b/src/mac/SBSystemPreferences.h new file mode 100644 index 000000000..387d30025 --- /dev/null +++ b/src/mac/SBSystemPreferences.h @@ -0,0 +1,171 @@ +/* + * SBSystemPreferences.h + * + * Generated with: + * sdef "/Applications/System Preferences.app" | sdp -fh --basename + *SBSystemPreferences -o SBSystemPreferences.h + */ + +#import +#import + +@class SBSystemPreferencesApplication, SBSystemPreferencesDocument, + SBSystemPreferencesWindow, SBSystemPreferencesPane, + SBSystemPreferencesAnchor; + +enum SBSystemPreferencesSaveOptions { + SBSystemPreferencesSaveOptionsYes = 'yes ' /* Save the file. */, + SBSystemPreferencesSaveOptionsNo = 'no ' /* Do not save the file. */, + SBSystemPreferencesSaveOptionsAsk = + 'ask ' /* Ask the user whether or not to save the file. */ +}; +typedef enum SBSystemPreferencesSaveOptions SBSystemPreferencesSaveOptions; + +enum SBSystemPreferencesPrintingErrorHandling { + SBSystemPreferencesPrintingErrorHandlingStandard = + 'lwst' /* Standard PostScript error handling */, + SBSystemPreferencesPrintingErrorHandlingDetailed = + 'lwdt' /* print a detailed report of PostScript errors */ +}; +typedef enum SBSystemPreferencesPrintingErrorHandling + SBSystemPreferencesPrintingErrorHandling; + +/* + * Standard Suite + */ + +// The application's top-level scripting object. +@interface SBSystemPreferencesApplication : SBApplication + +- (SBElementArray*)documents; +- (SBElementArray*)windows; + +@property(copy, readonly) NSString* name; // The name of the application. +@property(readonly) BOOL frontmost; // Is this the active application? +@property(copy, readonly) + NSString* version; // The version number of the application. + +- (id)open:(id)x; // Open a document. +- (void)print:(id)x + withProperties:(NSDictionary*)withProperties + printDialog:(BOOL)printDialog; // Print a document. +- (void)quitSaving: + (SBSystemPreferencesSaveOptions)saving; // Quit the application. +- (BOOL)exists:(id)x; // Verify that an object exists. + +@end + +// A document. +@interface SBSystemPreferencesDocument : SBObject + +@property(copy, readonly) NSString* name; // Its name. +@property(readonly) BOOL modified; // Has it been modified since the last save? +@property(copy, readonly) NSURL* file; // Its location on disk, if it has one. + +- (void)closeSaving:(SBSystemPreferencesSaveOptions)saving + savingIn:(NSURL*)savingIn; // Close a document. +- (void)saveIn:(NSURL*)in_ as:(id)as; // Save a document. +- (void)printWithProperties:(NSDictionary*)withProperties + printDialog:(BOOL)printDialog; // Print a document. +- (void) delete; // Delete an object. +- (void)duplicateTo:(SBObject*)to + withProperties:(NSDictionary*)withProperties; // Copy an object. +- (void)moveTo:(SBObject*)to; // Move an object to a new location. + +@end + +// A window. +@interface SBSystemPreferencesWindow : SBObject + +@property(copy, readonly) NSString* name; // The title of the window. +- (NSInteger)id; // The unique identifier of the window. +@property NSInteger index; // The index of the window, ordered front to back. +@property NSRect bounds; // The bounding rectangle of the window. +@property(readonly) BOOL closeable; // Does the window have a close button? +@property(readonly) + BOOL miniaturizable; // Does the window have a minimize button? +@property BOOL miniaturized; // Is the window minimized right now? +@property(readonly) BOOL resizable; // Can the window be resized? +@property BOOL visible; // Is the window visible right now? +@property(readonly) BOOL zoomable; // Does the window have a zoom button? +@property BOOL zoomed; // Is the window zoomed right now? +@property(copy, readonly) SBSystemPreferencesDocument* + document; // The document whose contents are displayed in the window. + +- (void)closeSaving:(SBSystemPreferencesSaveOptions)saving + savingIn:(NSURL*)savingIn; // Close a document. +- (void)saveIn:(NSURL*)in_ as:(id)as; // Save a document. +- (void)printWithProperties:(NSDictionary*)withProperties + printDialog:(BOOL)printDialog; // Print a document. +- (void) delete; // Delete an object. +- (void)duplicateTo:(SBObject*)to + withProperties:(NSDictionary*)withProperties; // Copy an object. +- (void)moveTo:(SBObject*)to; // Move an object to a new location. + +@end + +/* + * System Preferences + */ + +// System Preferences top level scripting object +@interface SBSystemPreferencesApplication (SystemPreferences) + +- (SBElementArray*)panes; + +@property(copy) + SBSystemPreferencesPane* currentPane; // the currently selected pane +@property(copy, readonly) SBSystemPreferencesWindow* + preferencesWindow; // the main preferences window +@property BOOL showAll; // Is SystemPrefs in show all view. (Setting to false + // will do nothing) + +@end + +// a preference pane +@interface SBSystemPreferencesPane : SBObject + +- (SBElementArray*)anchors; + +- (NSString*)id; // locale independent name of the preference pane; can refer + // to a pane using the expression: pane id "" +@property(copy, readonly) + NSString* localizedName; // localized name of the preference pane +@property(copy, readonly) NSString* name; // name of the preference pane as it + // appears in the title bar; can + // refer to a pane using the + // expression: pane "" + +- (void)closeSaving:(SBSystemPreferencesSaveOptions)saving + savingIn:(NSURL*)savingIn; // Close a document. +- (void)saveIn:(NSURL*)in_ as:(id)as; // Save a document. +- (void)printWithProperties:(NSDictionary*)withProperties + printDialog:(BOOL)printDialog; // Print a document. +- (void) delete; // Delete an object. +- (void)duplicateTo:(SBObject*)to + withProperties:(NSDictionary*)withProperties; // Copy an object. +- (void)moveTo:(SBObject*)to; // Move an object to a new location. +- (id)reveal; // Reveals an anchor within a preference pane or preference pane + // itself + +@end + +// an anchor within a preference pane +@interface SBSystemPreferencesAnchor : SBObject + +@property(copy, readonly) + NSString* name; // name of the anchor within a preference pane + +- (void)closeSaving:(SBSystemPreferencesSaveOptions)saving + savingIn:(NSURL*)savingIn; // Close a document. +- (void)saveIn:(NSURL*)in_ as:(id)as; // Save a document. +- (void)printWithProperties:(NSDictionary*)withProperties + printDialog:(BOOL)printDialog; // Print a document. +- (void) delete; // Delete an object. +- (void)duplicateTo:(SBObject*)to + withProperties:(NSDictionary*)withProperties; // Copy an object. +- (void)moveTo:(SBObject*)to; // Move an object to a new location. +- (id)reveal; // Reveals an anchor within a preference pane or preference pane + // itself + +@end diff --git a/src/main.cpp b/src/main.cpp index 050d335d9..90f16a909 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,13 +15,32 @@ along with Clementine. If not, see . */ +#include + #include #ifdef Q_OS_WIN32 -# define _WIN32_WINNT 0x0600 -# include -# include -#endif // Q_OS_WIN32 +#define _WIN32_WINNT 0x0600 +#include +#include +#endif // Q_OS_WIN32 + +#ifdef Q_OS_UNIX +#include +#endif // Q_OS_UNIX + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "config.h" #include "core/application.h" @@ -54,61 +73,47 @@ #include "qtsingleapplication.h" #include "qtsinglecoreapplication.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include #include #include -#include -using boost::scoped_ptr; - #include #ifdef HAVE_SPOTIFY_DOWNLOADER - #include +#include #endif #ifdef Q_OS_DARWIN - #include - #include +#include +#include #endif #ifdef HAVE_LIBLASTFM - #include "internet/lastfmservice.h" +#include "internet/lastfmservice.h" #else - class LastFMService; +class LastFMService; #endif #ifdef HAVE_DBUS - #include "core/mpris.h" - #include "core/mpris2.h" - #include - #include +#include "core/mpris.h" +#include "core/mpris2.h" +#include +#include - QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image); - const QDBusArgument& operator>> (const QDBusArgument& arg, QImage& image); +QDBusArgument& operator<<(QDBusArgument& arg, const QImage& image); +const QDBusArgument& operator>>(const QDBusArgument& arg, QImage& image); #endif #ifdef Q_OS_WIN32 -# include +#include #endif // Load sqlite plugin on windows and mac. #include Q_IMPORT_PLUGIN(qsqlite) +namespace { + void LoadTranslation(const QString& prefix, const QString& path, const QString& language) { #if QT_VERSION < 0x040700 @@ -116,7 +121,8 @@ void LoadTranslation(const QString& prefix, const QString& path, // without checking if it's a file first. // This was fixed in Qt 4.7 QFileInfo maybe_clementine_directory(path + "/clementine"); - if (maybe_clementine_directory.exists() && !maybe_clementine_directory.isFile()) + if (maybe_clementine_directory.exists() && + !maybe_clementine_directory.isFile()) return; #endif @@ -130,7 +136,8 @@ void LoadTranslation(const QString& prefix, const QString& path, void IncreaseFDLimit() { #ifdef Q_OS_DARWIN - // Bump the soft limit for the number of file descriptors from the default of 256 to + // Bump the soft limit for the number of file descriptors from the default of + // 256 to // the maximum (usually 10240). struct rlimit limit; getrlimit(RLIMIT_NOFILE, &limit); @@ -138,7 +145,7 @@ void IncreaseFDLimit() { // getrlimit() lies about the hard limit so we have to check sysctl. int max_fd = 0; size_t len = sizeof(max_fd); - sysctlbyname("kern.maxfilesperproc", &max_fd, &len, NULL, 0); + sysctlbyname("kern.maxfilesperproc", &max_fd, &len, nullptr, 0); limit.rlim_cur = max_fd; int ret = setrlimit(RLIMIT_NOFILE, &limit); @@ -149,7 +156,7 @@ void IncreaseFDLimit() { #endif } -void SetEnv(const char *key, const QString &value) { +void SetEnv(const char* key, const QString& value) { #ifdef Q_OS_WIN32 putenv(QString("%1=%2").arg(key, value).toLocal8Bit().constData()); #else @@ -164,20 +171,22 @@ void SetGstreamerEnvironment() { QString plugin_path; QString registry_filename; - // On windows and mac we bundle the gstreamer plugins with clementine +// On windows and mac we bundle the gstreamer plugins with clementine #if defined(Q_OS_DARWIN) - scanner_path = QCoreApplication::applicationDirPath() + "/../PlugIns/gst-plugin-scanner"; - plugin_path = QCoreApplication::applicationDirPath() + "/../PlugIns/gstreamer"; + scanner_path = + QCoreApplication::applicationDirPath() + "/../PlugIns/gst-plugin-scanner"; + plugin_path = + QCoreApplication::applicationDirPath() + "/../PlugIns/gstreamer"; #elif defined(Q_OS_WIN32) plugin_path = QCoreApplication::applicationDirPath() + "/gstreamer-plugins"; #endif #if defined(Q_OS_WIN32) || defined(Q_OS_DARWIN) - registry_filename = Utilities::GetConfigPath(Utilities::Path_GstreamerRegistry); + registry_filename = + Utilities::GetConfigPath(Utilities::Path_GstreamerRegistry); #endif - if (!scanner_path.isEmpty()) - SetEnv("GST_PLUGIN_SCANNER", scanner_path); + if (!scanner_path.isEmpty()) SetEnv("GST_PLUGIN_SCANNER", scanner_path); if (!plugin_path.isEmpty()) { SetEnv("GST_PLUGIN_PATH", plugin_path); @@ -191,13 +200,40 @@ void SetGstreamerEnvironment() { #ifdef Q_OS_DARWIN SetEnv("GIO_EXTRA_MODULES", - QCoreApplication::applicationDirPath() + "/../PlugIns/gio-modules"); + QCoreApplication::applicationDirPath() + "/../PlugIns/gio-modules"); #endif } +void ParseAProto() { + const QByteArray data = QByteArray::fromHex( + "08001a8b010a8801b2014566696c653a2f2f2f453a2f4d7573696b2f28414c42554d2" + "9253230476f74616e25323050726f6a6563742532302d253230416d6269656e742532" + "304c6f756e67652e6d786dba012a28414c42554d2920476f74616e2050726f6a65637" + "4202d20416d6269656e74204c6f756e67652e6d786dc001c7a7efd104c801bad685e4" + "04d001eeca32"); + pb::tagreader::Message message; + message.ParseFromArray(data.constData(), data.size()); +} + +void CheckPortable() { + QFile f(QApplication::applicationDirPath() + QDir::separator() + "data"); + if (f.exists()) { + // We are portable. Set the bool and change the qsettings path + Application::kIsPortable = true; + + QSettings::setDefaultFormat(QSettings::IniFormat); + QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, + f.fileName()); + } +} + +} // namespace + #ifdef HAVE_GIO -# undef signals // Clashes with GIO, and not needed in this file -# include +#undef signals // Clashes with GIO, and not needed in this file +#include + +namespace { void ScanGIOModulePath() { QString gio_module_path; @@ -212,32 +248,11 @@ void ScanGIOModulePath() { g_io_modules_scan_all_in_directory(bytes.data()); } } -#endif -void ParseAProto() { - const QByteArray data = QByteArray::fromHex( - "08001a8b010a8801b2014566696c653a2f2f2f453a2f4d7573696b2f28414c42554d2" - "9253230476f74616e25323050726f6a6563742532302d253230416d6269656e742532" - "304c6f756e67652e6d786dba012a28414c42554d2920476f74616e2050726f6a65637" - "4202d20416d6269656e74204c6f756e67652e6d786dc001c7a7efd104c801bad685e4" - "04d001eeca32"); - pb::tagreader::Message message; - message.ParseFromArray(data.constData(), data.size()); -} +} // namespace +#endif // HAVE_GIO -void CheckPortable() { - QFile f(QApplication::applicationDirPath() + QDir::separator() + "data"); - qLog(Debug) << f.fileName(); - if (f.exists()) { - // We are portable. Set the bool and change the qsettings path - Application::kIsPortable = true; - - QSettings::setDefaultFormat(QSettings::IniFormat); - QSettings::setPath(QSettings::IniFormat, QSettings::UserScope, f.fileName()); - } -} - -int main(int argc, char *argv[]) { +int main(int argc, char* argv[]) { if (CrashReporting::SendCrashReport(argc, argv)) { return 0; } @@ -261,7 +276,7 @@ int main(int argc, char *argv[]) { QCoreApplication::setOrganizationName("Clementine"); QCoreApplication::setOrganizationDomain("clementine-player.org"); - // This makes us show up nicely in gnome-volume-control +// This makes us show up nicely in gnome-volume-control #if !GLIB_CHECK_VERSION(2, 36, 0) g_type_init(); // Deprecated in glib 2.36.0 #endif @@ -271,6 +286,12 @@ int main(int argc, char *argv[]) { CommandlineOptions options(argc, argv); + // Initialise logging + logging::Init(); + logging::SetLevels(options.log_levels()); + g_log_set_default_handler(reinterpret_cast(&logging::GLog), + nullptr); + { // Only start a core application now so we can check if there's another // Clementine running without needing an X server. @@ -282,12 +303,12 @@ int main(int argc, char *argv[]) { // Parse commandline options - need to do this before starting the // full QApplication so it works without an X server - if (!options.Parse()) - return 1; + if (!options.Parse()) return 1; if (a.isRunning()) { if (options.is_empty()) { - qLog(Info) << "Clementine is already running - activating existing window"; + qLog(Info) + << "Clementine is already running - activating existing window"; } if (a.sendMessage(options.Serialize(), 5000)) { return 0; @@ -298,7 +319,10 @@ int main(int argc, char *argv[]) { #ifdef Q_OS_DARWIN // Must happen after QCoreApplication::setOrganizationName(). - setenv("XDG_CONFIG_HOME", Utilities::GetConfigPath(Utilities::Path_Root).toLocal8Bit().constData(), 1); + setenv( + "XDG_CONFIG_HOME", + Utilities::GetConfigPath(Utilities::Path_Root).toLocal8Bit().constData(), + 1); #endif #ifdef HAVE_LIBLASTFM @@ -307,17 +331,12 @@ int main(int argc, char *argv[]) { lastfm::setNetworkAccessManager(new NetworkAccessManager); #endif - // Initialise logging - logging::Init(); - logging::SetLevels(options.log_levels()); - g_log_set_default_handler(reinterpret_cast(&logging::GLog), NULL); - // Output the version, so when people attach log output to bug reports they // don't have to tell us which version they're using. qLog(Info) << "Clementine" << CLEMENTINE_VERSION_DISPLAY; // Seed the random number generators. - time_t t = time(NULL); + time_t t = time(nullptr); srand(t); qsrand(t); @@ -331,8 +350,8 @@ int main(int argc, char *argv[]) { QSettings qt_settings(QSettings::UserScope, "Trolltech"); qt_settings.beginGroup("Qt"); QApplication::setWheelScrollLines( - qt_settings.value("wheelScrollLines", - QApplication::wheelScrollLines()).toInt()); + qt_settings.value("wheelScrollLines", QApplication::wheelScrollLines()) + .toInt()); } #ifdef Q_OS_DARWIN @@ -359,9 +378,9 @@ int main(int argc, char *argv[]) { SetGstreamerEnvironment(); - // Set the permissions on the config file on Unix - it can contain passwords - // for internet services so it's important that other users can't read it. - // On Windows these are stored in the registry instead. +// Set the permissions on the config file on Unix - it can contain passwords +// for internet services so it's important that other users can't read it. +// On Windows these are stored in the registry instead. #ifdef Q_OS_UNIX { QSettings s; @@ -392,7 +411,7 @@ int main(int argc, char *argv[]) { // that CA to the default list used by QSslSocket, so it always works in // Clementine. QSslSocket::addDefaultCaCertificates( - QSslCertificate::fromPath(":/grooveshark-valicert-ca.pem", QSsl::Pem)); + QSslCertificate::fromPath(":/grooveshark-valicert-ca.pem", QSsl::Pem)); // Has the user forced a different language? QString override_language = options.language(); @@ -402,11 +421,13 @@ int main(int argc, char *argv[]) { override_language = s.value("language").toString(); } - const QString language = override_language.isEmpty() ? - Utilities::SystemLanguageName() : override_language; + const QString language = override_language.isEmpty() + ? Utilities::SystemLanguageName() + : override_language; // Translations - LoadTranslation("qt", QLibraryInfo::location(QLibraryInfo::TranslationsPath), language); + LoadTranslation("qt", QLibraryInfo::location(QLibraryInfo::TranslationsPath), + language); LoadTranslation("clementine", ":/translations", language); LoadTranslation("clementine", a.applicationDirPath(), language); LoadTranslation("clementine", QDir::currentPath(), language); @@ -429,7 +450,8 @@ int main(int argc, char *argv[]) { app.set_language_name(language); Echonest::Config::instance()->setAPIKey("DFLFLJBUF4EGTXHIG"); - Echonest::Config::instance()->setNetworkAccessManager(new NetworkAccessManager); + Echonest::Config::instance()->setNetworkAccessManager( + new NetworkAccessManager); // Network proxy QNetworkProxyFactory::setApplicationProxyFactory( @@ -446,10 +468,11 @@ int main(int argc, char *argv[]) { // whitelisted applications. Clementine will override this setting and insert // itself into the list of whitelisted apps. UbuntuUnityHack hack; -#endif // Q_OS_LINUX +#endif // Q_OS_LINUX // Create the tray icon and OSD - scoped_ptr tray_icon(SystemTrayIcon::CreateSystemTrayIcon()); + std::unique_ptr tray_icon( + SystemTrayIcon::CreateSystemTrayIcon()); OSD osd(tray_icon.get(), &app); #ifdef HAVE_DBUS @@ -467,7 +490,8 @@ int main(int argc, char *argv[]) { #ifdef HAVE_DBUS QObject::connect(&mpris, SIGNAL(RaiseMainWindow()), &w, SLOT(Raise())); #endif - QObject::connect(&a, SIGNAL(messageReceived(QByteArray)), &w, SLOT(CommandlineOptionsReceived(QByteArray))); + QObject::connect(&a, SIGNAL(messageReceived(QByteArray)), &w, + SLOT(CommandlineOptionsReceived(QByteArray))); w.CommandlineOptionsReceived(options); int ret = a.exec(); diff --git a/src/moodbar/moodbarcontroller.cpp b/src/moodbar/moodbarcontroller.cpp index eb97af365..8cd0f5180 100644 --- a/src/moodbar/moodbarcontroller.cpp +++ b/src/moodbar/moodbarcontroller.cpp @@ -25,38 +25,36 @@ #include "playlist/playlistmanager.h" MoodbarController::MoodbarController(Application* app, QObject* parent) - : QObject(parent), - app_(app) -{ - connect(app_->playlist_manager(), - SIGNAL(CurrentSongChanged(Song)), SLOT(CurrentSongChanged(Song))); + : QObject(parent), app_(app) { + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + SLOT(CurrentSongChanged(Song))); connect(app_->player(), SIGNAL(Stopped()), SLOT(PlaybackStopped())); } void MoodbarController::CurrentSongChanged(const Song& song) { QByteArray data; - MoodbarPipeline* pipeline = NULL; + MoodbarPipeline* pipeline = nullptr; const MoodbarLoader::Result result = app_->moodbar_loader()->Load(song.url(), &data, &pipeline); switch (result) { - case MoodbarLoader::CannotLoad: - emit CurrentMoodbarDataChanged(QByteArray()); - break; + case MoodbarLoader::CannotLoad: + emit CurrentMoodbarDataChanged(QByteArray()); + break; - case MoodbarLoader::Loaded: - emit CurrentMoodbarDataChanged(data); - break; + case MoodbarLoader::Loaded: + emit CurrentMoodbarDataChanged(data); + break; - case MoodbarLoader::WillLoadAsync: - // Emit an empty array for now so the GUI reverts to a normal progress - // bar. Our slot will be called when the data is actually loaded. - emit CurrentMoodbarDataChanged(QByteArray()); + case MoodbarLoader::WillLoadAsync: + // Emit an empty array for now so the GUI reverts to a normal progress + // bar. Our slot will be called when the data is actually loaded. + emit CurrentMoodbarDataChanged(QByteArray()); - NewClosure(pipeline, SIGNAL(Finished(bool)), - this, SLOT(AsyncLoadComplete(MoodbarPipeline*,QUrl)), - pipeline, song.url()); - break; + NewClosure(pipeline, SIGNAL(Finished(bool)), this, + SLOT(AsyncLoadComplete(MoodbarPipeline*, QUrl)), pipeline, + song.url()); + break; } } diff --git a/src/moodbar/moodbarcontroller.h b/src/moodbar/moodbarcontroller.h index a236fa9ee..c3b672088 100644 --- a/src/moodbar/moodbarcontroller.h +++ b/src/moodbar/moodbarcontroller.h @@ -28,20 +28,20 @@ class QUrl; class MoodbarController : public QObject { Q_OBJECT - -public: - MoodbarController(Application* app, QObject* parent = 0); + + public: + MoodbarController(Application* app, QObject* parent = nullptr); signals: void CurrentMoodbarDataChanged(const QByteArray& data); - -private slots: + + private slots: void CurrentSongChanged(const Song& song); void PlaybackStopped(); void AsyncLoadComplete(MoodbarPipeline* pipeline, const QUrl& url); - -private: + + private: Application* app_; }; -#endif // MOODBARCONTROLLER_H +#endif // MOODBARCONTROLLER_H diff --git a/src/moodbar/moodbaritemdelegate.cpp b/src/moodbar/moodbaritemdelegate.cpp index cb5826c42..c3a20ff87 100644 --- a/src/moodbar/moodbaritemdelegate.cpp +++ b/src/moodbar/moodbaritemdelegate.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -31,18 +31,14 @@ #include #include -MoodbarItemDelegate::Data::Data() - : state_(State_None) -{ -} +MoodbarItemDelegate::Data::Data() : state_(State_None) {} MoodbarItemDelegate::MoodbarItemDelegate(Application* app, PlaylistView* view, QObject* parent) - : QItemDelegate(parent), - app_(app), - view_(view), - style_(MoodbarRenderer::Style_Normal) -{ + : QItemDelegate(parent), + app_(app), + view_(view), + style_(MoodbarRenderer::Style_Normal) { connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); ReloadSettings(); } @@ -52,7 +48,7 @@ void MoodbarItemDelegate::ReloadSettings() { s.beginGroup("Moodbar"); MoodbarRenderer::MoodbarStyle new_style = static_cast( - s.value("style", MoodbarRenderer::Style_Normal).toInt()); + s.value("style", MoodbarRenderer::Style_Normal).toInt()); if (new_style != style_) { style_ = new_style; @@ -60,14 +56,14 @@ void MoodbarItemDelegate::ReloadSettings() { } } -void MoodbarItemDelegate::paint( - QPainter* painter, const QStyleOptionViewItem& option, - const QModelIndex& index) const { - QPixmap pixmap = const_cast(this)->PixmapForIndex( - index, option.rect.size()); +void MoodbarItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { + QPixmap pixmap = const_cast(this) + ->PixmapForIndex(index, option.rect.size()); drawBackground(painter, option, index); - + if (!pixmap.isNull()) { // Make a little border for the moodbar const QRect moodbar_rect(option.rect.adjusted(1, 1, -1, -1)); @@ -75,10 +71,11 @@ void MoodbarItemDelegate::paint( } } -QPixmap MoodbarItemDelegate::PixmapForIndex( - const QModelIndex& index, const QSize& size) { +QPixmap MoodbarItemDelegate::PixmapForIndex(const QModelIndex& index, + const QSize& size) { // Pixmaps are keyed off URL. - const QUrl url(index.sibling(index.row(), Playlist::Column_Filename).data().toUrl()); + const QUrl url( + index.sibling(index.row(), Playlist::Column_Filename).data().toUrl()); Data* data = data_[url]; if (!data) { @@ -90,22 +87,22 @@ QPixmap MoodbarItemDelegate::PixmapForIndex( data->desired_size_ = size; switch (data->state_) { - case Data::State_CannotLoad: - case Data::State_LoadingData: - case Data::State_LoadingColors: - case Data::State_LoadingImage: - return data->pixmap_; + case Data::State_CannotLoad: + case Data::State_LoadingData: + case Data::State_LoadingColors: + case Data::State_LoadingImage: + return data->pixmap_; - case Data::State_Loaded: - // Is the pixmap the right size? - if (data->pixmap_.size() != size) { - StartLoadingImage(url, data); - } + case Data::State_Loaded: + // Is the pixmap the right size? + if (data->pixmap_.size() != size) { + StartLoadingImage(url, data); + } - return data->pixmap_; + return data->pixmap_; - case Data::State_None: - break; + case Data::State_None: + break; } // We have to start loading the data from scratch. @@ -119,28 +116,28 @@ void MoodbarItemDelegate::StartLoadingData(const QUrl& url, Data* data) { // Load a mood file for this song and generate some colors from it QByteArray bytes; - MoodbarPipeline* pipeline = NULL; + MoodbarPipeline* pipeline = nullptr; switch (app_->moodbar_loader()->Load(url, &bytes, &pipeline)) { - case MoodbarLoader::CannotLoad: - data->state_ = Data::State_CannotLoad; - break; + case MoodbarLoader::CannotLoad: + data->state_ = Data::State_CannotLoad; + break; - case MoodbarLoader::Loaded: - // We got the data immediately. - StartLoadingColors(url, bytes, data); - break; + case MoodbarLoader::Loaded: + // We got the data immediately. + StartLoadingColors(url, bytes, data); + break; - case MoodbarLoader::WillLoadAsync: - // Maybe in a little while. - NewClosure(pipeline, SIGNAL(Finished(bool)), - this, SLOT(DataLoaded(QUrl,MoodbarPipeline*)), - url, pipeline); - break; + case MoodbarLoader::WillLoadAsync: + // Maybe in a little while. + NewClosure(pipeline, SIGNAL(Finished(bool)), this, + SLOT(DataLoaded(QUrl, MoodbarPipeline*)), url, pipeline); + break; } } -bool MoodbarItemDelegate::RemoveFromCacheIfIndexesInvalid(const QUrl& url, Data* data) { - foreach (const QPersistentModelIndex& index, data->indexes_) { +bool MoodbarItemDelegate::RemoveFromCacheIfIndexesInvalid(const QUrl& url, + Data* data) { + for (const QPersistentModelIndex& index : data->indexes_) { if (index.isValid()) { return false; } @@ -151,7 +148,7 @@ bool MoodbarItemDelegate::RemoveFromCacheIfIndexesInvalid(const QUrl& url, Data* } void MoodbarItemDelegate::ReloadAllColors() { - foreach (const QUrl& url, data_.keys()) { + for (const QUrl& url : data_.keys()) { Data* data = data_[url]; if (data->state_ == Data::State_Loaded) { @@ -160,7 +157,8 @@ void MoodbarItemDelegate::ReloadAllColors() { } } -void MoodbarItemDelegate::DataLoaded( const QUrl& url, MoodbarPipeline* pipeline) { +void MoodbarItemDelegate::DataLoaded(const QUrl& url, + MoodbarPipeline* pipeline) { Data* data = data_[url]; if (!data) { return; @@ -179,22 +177,23 @@ void MoodbarItemDelegate::DataLoaded( const QUrl& url, MoodbarPipeline* pipeline StartLoadingColors(url, pipeline->data(), data); } -void MoodbarItemDelegate::StartLoadingColors( - const QUrl& url, const QByteArray& bytes, Data* data) { +void MoodbarItemDelegate::StartLoadingColors(const QUrl& url, + const QByteArray& bytes, + Data* data) { data->state_ = Data::State_LoadingColors; QFutureWatcher* watcher = new QFutureWatcher(); - NewClosure(watcher, SIGNAL(finished()), - this, SLOT(ColorsLoaded(QUrl,QFutureWatcher*)), - url, watcher); + NewClosure(watcher, SIGNAL(finished()), this, + SLOT(ColorsLoaded(QUrl, QFutureWatcher*)), url, + watcher); - QFuture future = QtConcurrent::run(MoodbarRenderer::Colors, - bytes, style_, qApp->palette()); + QFuture future = QtConcurrent::run( + MoodbarRenderer::Colors, bytes, style_, qApp->palette()); watcher->setFuture(future); } -void MoodbarItemDelegate::ColorsLoaded( - const QUrl& url, QFutureWatcher* watcher) { +void MoodbarItemDelegate::ColorsLoaded(const QUrl& url, + QFutureWatcher* watcher) { watcher->deleteLater(); Data* data = data_[url]; @@ -216,16 +215,16 @@ void MoodbarItemDelegate::StartLoadingImage(const QUrl& url, Data* data) { data->state_ = Data::State_LoadingImage; QFutureWatcher* watcher = new QFutureWatcher(); - NewClosure(watcher, SIGNAL(finished()), - this, SLOT(ImageLoaded(QUrl,QFutureWatcher*)), - url, watcher); + NewClosure(watcher, SIGNAL(finished()), this, + SLOT(ImageLoaded(QUrl, QFutureWatcher*)), url, watcher); - QFuture future = QtConcurrent::run(MoodbarRenderer::RenderToImage, - data->colors_, data->desired_size_); + QFuture future = QtConcurrent::run( + MoodbarRenderer::RenderToImage, data->colors_, data->desired_size_); watcher->setFuture(future); } -void MoodbarItemDelegate::ImageLoaded(const QUrl& url, QFutureWatcher* watcher) { +void MoodbarItemDelegate::ImageLoaded(const QUrl& url, + QFutureWatcher* watcher) { watcher->deleteLater(); Data* data = data_[url]; @@ -248,13 +247,15 @@ void MoodbarItemDelegate::ImageLoaded(const QUrl& url, QFutureWatcher* w data->pixmap_ = QPixmap::fromImage(image); data->state_ = Data::State_Loaded; - + Playlist* playlist = view_->playlist(); const QSortFilterProxyModel* filter = playlist->proxy(); // Update all the indices with the new pixmap. - foreach (const QPersistentModelIndex& index, data->indexes_) { - if (index.isValid() && index.sibling(index.row(), Playlist::Column_Filename).data().toUrl() == url) { + for (const QPersistentModelIndex& index : data->indexes_) { + if (index.isValid() && + index.sibling(index.row(), Playlist::Column_Filename).data().toUrl() == + url) { QModelIndex source_index = index; if (index.model() == filter) { source_index = filter->mapToSource(source_index); diff --git a/src/moodbar/moodbaritemdelegate.h b/src/moodbar/moodbaritemdelegate.h index 413326875..53e435058 100644 --- a/src/moodbar/moodbaritemdelegate.h +++ b/src/moodbar/moodbaritemdelegate.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -34,20 +34,21 @@ class QModelIndex; class MoodbarItemDelegate : public QItemDelegate { Q_OBJECT -public: - MoodbarItemDelegate(Application* app, PlaylistView* view, QObject* parent = 0); + public: + MoodbarItemDelegate(Application* app, PlaylistView* view, + QObject* parent = nullptr); void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; -private slots: + private slots: void ReloadSettings(); void DataLoaded(const QUrl& url, MoodbarPipeline* pipeline); void ColorsLoaded(const QUrl& url, QFutureWatcher* watcher); void ImageLoaded(const QUrl& url, QFutureWatcher* watcher); -private: + private: struct Data { Data(); @@ -68,7 +69,7 @@ private: QPixmap pixmap_; }; -private: + private: QPixmap PixmapForIndex(const QModelIndex& index, const QSize& size); void StartLoadingData(const QUrl& url, Data* data); void StartLoadingColors(const QUrl& url, const QByteArray& bytes, Data* data); @@ -78,7 +79,7 @@ private: void ReloadAllColors(); -private: + private: Application* app_; PlaylistView* view_; QCache data_; @@ -86,4 +87,4 @@ private: MoodbarRenderer::MoodbarStyle style_; }; -#endif // MOODBARITEMDELEGATE_H +#endif // MOODBARITEMDELEGATE_H diff --git a/src/moodbar/moodbarloader.cpp b/src/moodbar/moodbarloader.cpp index dacbe1e0e..adef8c813 100644 --- a/src/moodbar/moodbarloader.cpp +++ b/src/moodbar/moodbarloader.cpp @@ -17,7 +17,7 @@ #include "moodbarloader.h" -#include +#include #include #include @@ -35,15 +35,16 @@ #include "core/utilities.h" MoodbarLoader::MoodbarLoader(Application* app, QObject* parent) - : QObject(parent), - cache_(new QNetworkDiskCache(this)), - thread_(new QThread(this)), - kMaxActiveRequests(qMax(1, QThread::idealThreadCount() / 2)), - save_alongside_originals_(false), - disable_moodbar_calculation_(false) -{ - cache_->setCacheDirectory(Utilities::GetConfigPath(Utilities::Path_MoodbarCache)); - cache_->setMaximumCacheSize(60 * 1024 * 1024); // 60MB - enough for 20,000 moodbars + : QObject(parent), + cache_(new QNetworkDiskCache(this)), + thread_(new QThread(this)), + kMaxActiveRequests(qMax(1, QThread::idealThreadCount() / 2)), + save_alongside_originals_(false), + disable_moodbar_calculation_(false) { + cache_->setCacheDirectory( + Utilities::GetConfigPath(Utilities::Path_MoodbarCache)); + cache_->setMaximumCacheSize(60 * 1024 * + 1024); // 60MB - enough for 20,000 moodbars connect(app, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); ReloadSettings(); @@ -57,7 +58,8 @@ MoodbarLoader::~MoodbarLoader() { void MoodbarLoader::ReloadSettings() { QSettings s; s.beginGroup("Moodbar"); - save_alongside_originals_ = s.value("save_alongside_originals", false).toBool(); + save_alongside_originals_ = + s.value("save_alongside_originals", false).toBool(); disable_moodbar_calculation_ = !s.value("calculate", true).toBool(); MaybeTakeNextRequest(); @@ -76,8 +78,8 @@ QStringList MoodbarLoader::MoodFilenames(const QString& song_filename) { << dir_path + "/" + mood_filename; } -MoodbarLoader::Result MoodbarLoader::Load( - const QUrl& url, QByteArray* data, MoodbarPipeline** async_pipeline) { +MoodbarLoader::Result MoodbarLoader::Load(const QUrl& url, QByteArray* data, + MoodbarPipeline** async_pipeline) { if (url.scheme() != "file") { return CannotLoad; } @@ -91,7 +93,7 @@ MoodbarLoader::Result MoodbarLoader::Load( // Check if a mood file exists for this file already const QString filename(url.toLocalFile()); - foreach (const QString& possible_mood_file, MoodFilenames(filename)) { + for (const QString& possible_mood_file : MoodFilenames(filename)) { QFile f(possible_mood_file); if (f.open(QIODevice::ReadOnly)) { qLog(Info) << "Loading moodbar data from" << possible_mood_file; @@ -101,7 +103,7 @@ MoodbarLoader::Result MoodbarLoader::Load( } // Maybe it exists in the cache? - boost::scoped_ptr cache_device(cache_->data(url)); + std::unique_ptr cache_device(cache_->data(url)); if (cache_device) { qLog(Info) << "Loading cached moodbar data for" << filename; *data = cache_device->readAll(); @@ -110,15 +112,13 @@ MoodbarLoader::Result MoodbarLoader::Load( } } - if (!thread_->isRunning()) - thread_->start(QThread::IdlePriority); + if (!thread_->isRunning()) thread_->start(QThread::IdlePriority); // There was no existing file, analyze the audio file and create one. MoodbarPipeline* pipeline = new MoodbarPipeline(url); pipeline->moveToThread(thread_); - NewClosure(pipeline, SIGNAL(Finished(bool)), - this, SLOT(RequestFinished(MoodbarPipeline*,QUrl)), - pipeline, url); + NewClosure(pipeline, SIGNAL(Finished(bool)), this, + SLOT(RequestFinished(MoodbarPipeline*, QUrl)), pipeline, url); requests_[url] = pipeline; queued_requests_ << url; @@ -140,7 +140,6 @@ void MoodbarLoader::MaybeTakeNextRequest() { const QUrl url = queued_requests_.takeFirst(); active_requests_ << url; - qLog(Info) << "Creating moodbar data for" << url.toLocalFile(); QMetaObject::invokeMethod(requests_[url], "Start", Qt::QueuedConnection); } @@ -149,7 +148,8 @@ void MoodbarLoader::RequestFinished(MoodbarPipeline* request, const QUrl& url) { Q_ASSERT(QThread::currentThread() == qApp->thread()); if (request->success()) { - qLog(Info) << "Moodbar data generated successfully for" << url.toLocalFile(); + qLog(Info) << "Moodbar data generated successfully for" + << url.toLocalFile(); // Save the data in the cache QNetworkCacheMetaData metadata; diff --git a/src/moodbar/moodbarloader.h b/src/moodbar/moodbarloader.h index 43f467e1f..52fea6ae0 100644 --- a/src/moodbar/moodbarloader.h +++ b/src/moodbar/moodbarloader.h @@ -31,8 +31,8 @@ class MoodbarPipeline; class MoodbarLoader : public QObject { Q_OBJECT -public: - MoodbarLoader(Application* app, QObject* parent = 0); + public: + MoodbarLoader(Application* app, QObject* parent = nullptr); ~MoodbarLoader(); enum Result { @@ -48,18 +48,19 @@ public: WillLoadAsync }; - Result Load(const QUrl& url, QByteArray* data, MoodbarPipeline** async_pipeline); + Result Load(const QUrl& url, QByteArray* data, + MoodbarPipeline** async_pipeline); -private slots: + private slots: void ReloadSettings(); void RequestFinished(MoodbarPipeline* request, const QUrl& filename); void MaybeTakeNextRequest(); -private: + private: static QStringList MoodFilenames(const QString& song_filename); -private: + private: QNetworkDiskCache* cache_; QThread* thread_; @@ -73,4 +74,4 @@ private: bool disable_moodbar_calculation_; }; -#endif // MOODBARLOADER_H +#endif // MOODBARLOADER_H diff --git a/src/moodbar/moodbarpipeline.cpp b/src/moodbar/moodbarpipeline.cpp index 835e52e79..1de26e6c6 100644 --- a/src/moodbar/moodbarpipeline.cpp +++ b/src/moodbar/moodbarpipeline.cpp @@ -28,17 +28,13 @@ bool MoodbarPipeline::sIsAvailable = false; MoodbarPipeline::MoodbarPipeline(const QUrl& local_filename) - : QObject(NULL), - local_filename_(local_filename), - pipeline_(NULL), - convert_element_(NULL), - success_(false) -{ -} + : QObject(nullptr), + local_filename_(local_filename), + pipeline_(nullptr), + convert_element_(nullptr), + success_(false) {} -MoodbarPipeline::~MoodbarPipeline() { - Cleanup(); -} +MoodbarPipeline::~MoodbarPipeline() { Cleanup(); } bool MoodbarPipeline::IsAvailable() { if (!sIsAvailable) { @@ -61,7 +57,8 @@ bool MoodbarPipeline::IsAvailable() { } GstElement* MoodbarPipeline::CreateElement(const QString& factory_name) { - GstElement* ret = gst_element_factory_make(factory_name.toAscii().constData(), NULL); + GstElement* ret = + gst_element_factory_make(factory_name.toAscii().constData(), nullptr); if (ret) { gst_bin_add(GST_BIN(pipeline_), ret); @@ -83,39 +80,42 @@ void MoodbarPipeline::Start() { pipeline_ = gst_pipeline_new("moodbar-pipeline"); - GstElement* decodebin = CreateElement("uridecodebin"); - convert_element_ = CreateElement("audioconvert"); + GstElement* decodebin = CreateElement("uridecodebin"); + convert_element_ = CreateElement("audioconvert"); GstElement* fftwspectrum = CreateElement("fftwspectrum"); - GstElement* moodbar = CreateElement("moodbar"); - GstElement* appsink = CreateElement("appsink"); + GstElement* moodbar = CreateElement("moodbar"); + GstElement* appsink = CreateElement("appsink"); - if (!decodebin || !convert_element_ || !fftwspectrum || !moodbar || !appsink) { - pipeline_ = NULL; + if (!decodebin || !convert_element_ || !fftwspectrum || !moodbar || + !appsink) { + pipeline_ = nullptr; emit Finished(false); return; } // Join them together - gst_element_link_many(convert_element_, fftwspectrum, moodbar, appsink, NULL); + gst_element_link_many(convert_element_, fftwspectrum, moodbar, appsink, + nullptr); // Set properties - g_object_set(decodebin, "uri", local_filename_.toEncoded().constData(), NULL); - g_object_set(fftwspectrum, "def-size", 2048, - "def-step", 1024, - "hiquality", true, NULL); - g_object_set(moodbar, "height", 1, - "max-width", 1000, NULL); + g_object_set(decodebin, "uri", local_filename_.toEncoded().constData(), + nullptr); + g_object_set(fftwspectrum, "def-size", 2048, "def-step", 1024, "hiquality", + true, nullptr); + g_object_set(moodbar, "height", 1, "max-width", 1000, nullptr); // Connect signals CHECKED_GCONNECT(decodebin, "pad-added", &NewPadCallback, this); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallbackSync, this); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + BusCallbackSync, this); // Set appsink callbacks GstAppSinkCallbacks callbacks; memset(&callbacks, 0, sizeof(callbacks)); callbacks.new_buffer = NewBufferCallback; - gst_app_sink_set_callbacks(reinterpret_cast(appsink), &callbacks, this, NULL); + gst_app_sink_set_callbacks(reinterpret_cast(appsink), &callbacks, + this, nullptr); // Start playing gst_element_set_state(pipeline_, GST_STATE_PLAYING); @@ -136,8 +136,8 @@ void MoodbarPipeline::ReportError(GstMessage* msg) { void MoodbarPipeline::NewPadCallback(GstElement*, GstPad* pad, gpointer data) { MoodbarPipeline* self = reinterpret_cast(data); - GstPad* const audiopad = gst_element_get_static_pad( - self->convert_element_, "sink"); + GstPad* const audiopad = + gst_element_get_static_pad(self->convert_element_, "sink"); if (GST_PAD_IS_LINKED(audiopad)) { qLog(Warning) << "audiopad is already linked, unlinking old pad"; @@ -148,7 +148,8 @@ void MoodbarPipeline::NewPadCallback(GstElement*, GstPad* pad, gpointer data) { gst_object_unref(audiopad); } -GstFlowReturn MoodbarPipeline::NewBufferCallback(GstAppSink* app_sink, gpointer data) { +GstFlowReturn MoodbarPipeline::NewBufferCallback(GstAppSink* app_sink, + gpointer data) { MoodbarPipeline* self = reinterpret_cast(data); GstBuffer* buffer = gst_app_sink_pull_buffer(app_sink); @@ -158,7 +159,8 @@ GstFlowReturn MoodbarPipeline::NewBufferCallback(GstAppSink* app_sink, gpointer return GST_FLOW_OK; } -GstBusSyncReply MoodbarPipeline::BusCallbackSync(GstBus*, GstMessage* msg, gpointer data) { +GstBusSyncReply MoodbarPipeline::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data) { MoodbarPipeline* self = reinterpret_cast(data); switch (GST_MESSAGE_TYPE(msg)) { @@ -187,9 +189,10 @@ void MoodbarPipeline::Cleanup() { Q_ASSERT(QThread::currentThread() != qApp->thread()); if (pipeline_) { - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), NULL, NULL); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + nullptr, nullptr); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(pipeline_); - pipeline_ = NULL; + pipeline_ = nullptr; } } diff --git a/src/moodbar/moodbarpipeline.h b/src/moodbar/moodbarpipeline.h index 5978fc89a..63374176e 100644 --- a/src/moodbar/moodbarpipeline.h +++ b/src/moodbar/moodbarpipeline.h @@ -28,7 +28,7 @@ class MoodbarPipeline : public QObject { Q_OBJECT -public: + public: MoodbarPipeline(const QUrl& local_filename); ~MoodbarPipeline(); @@ -37,13 +37,13 @@ public: bool success() const { return success_; } const QByteArray& data() const { return data_; } -public slots: + public slots: void Start(); signals: void Finished(bool success); -private: + private: GstElement* CreateElement(const QString& factory_name); void ReportError(GstMessage* message); @@ -53,9 +53,10 @@ private: static void NewPadCallback(GstElement*, GstPad* pad, gpointer data); static GstFlowReturn NewBufferCallback(GstAppSink* app_sink, gpointer self); static gboolean BusCallback(GstBus*, GstMessage* msg, gpointer data); - static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, gpointer data); + static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data); -private: + private: static bool sIsAvailable; QUrl local_filename_; @@ -66,4 +67,4 @@ private: QByteArray data_; }; -#endif // MOODBARPIPELINE_H +#endif // MOODBARPIPELINE_H diff --git a/src/moodbar/moodbarproxystyle.cpp b/src/moodbar/moodbarproxystyle.cpp index 4014c763d..61dc5654a 100644 --- a/src/moodbar/moodbarproxystyle.cpp +++ b/src/moodbar/moodbarproxystyle.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -35,23 +35,23 @@ const int MoodbarProxyStyle::kArrowWidth = 17; const int MoodbarProxyStyle::kArrowHeight = 13; MoodbarProxyStyle::MoodbarProxyStyle(Application* app, QSlider* slider) - : QProxyStyle(slider->style()), - app_(app), - slider_(slider), - enabled_(true), - moodbar_style_(MoodbarRenderer::Style_Normal), - state_(MoodbarOff), - fade_timeline_(new QTimeLine(1000, this)), - moodbar_colors_dirty_(true), - moodbar_pixmap_dirty_(true), - context_menu_(NULL), - show_moodbar_action_(NULL), - style_action_group_(NULL) -{ + : QProxyStyle(slider->style()), + app_(app), + slider_(slider), + enabled_(true), + moodbar_style_(MoodbarRenderer::Style_Normal), + state_(MoodbarOff), + fade_timeline_(new QTimeLine(1000, this)), + moodbar_colors_dirty_(true), + moodbar_pixmap_dirty_(true), + context_menu_(nullptr), + show_moodbar_action_(nullptr), + style_action_group_(nullptr) { slider->setStyle(this); slider->installEventFilter(this); - connect(fade_timeline_, SIGNAL(valueChanged(qreal)), SLOT(FaderValueChanged(qreal))); + connect(fade_timeline_, SIGNAL(valueChanged(qreal)), + SLOT(FaderValueChanged(qreal))); connect(app, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); ReloadSettings(); @@ -69,7 +69,7 @@ void MoodbarProxyStyle::ReloadSettings() { // Get the style, and redraw if there's a change. MoodbarRenderer::MoodbarStyle new_style = static_cast( - s.value("style", MoodbarRenderer::Style_Normal).toInt()); + s.value("style", MoodbarRenderer::Style_Normal).toInt()); if (new_style != moodbar_style_) { moodbar_style_ = new_style; @@ -80,7 +80,7 @@ void MoodbarProxyStyle::ReloadSettings() { void MoodbarProxyStyle::SetMoodbarData(const QByteArray& data) { data_ = data; - moodbar_colors_dirty_ = true; // Redraw next time + moodbar_colors_dirty_ = true; // Redraw next time NextState(); } @@ -98,11 +98,17 @@ void MoodbarProxyStyle::SetMoodbarEnabled(bool enabled) { void MoodbarProxyStyle::NextState() { const bool visible = enabled_ && !data_.isEmpty(); + // While the regular slider should stay at the standard size (Fixed), + // moodbars should use all available space (MinimumExpanding). + slider_->setSizePolicy(QSizePolicy::Expanding, + visible ? QSizePolicy::MinimumExpanding : QSizePolicy::Fixed); + slider_->updateGeometry(); + if (show_moodbar_action_) { show_moodbar_action_->setChecked(enabled_); } - if ((visible && (state_ == MoodbarOn || state_ == FadingToOn)) || + if ((visible && (state_ == MoodbarOn || state_ == FadingToOn)) || (!visible && (state_ == MoodbarOff || state_ == FadingToOff))) { return; } @@ -128,46 +134,45 @@ void MoodbarProxyStyle::NextState() { state_ = visible ? FadingToOn : FadingToOff; } -void MoodbarProxyStyle::FaderValueChanged(qreal value) { - slider_->update(); -} +void MoodbarProxyStyle::FaderValueChanged(qreal value) { slider_->update(); } bool MoodbarProxyStyle::eventFilter(QObject* object, QEvent* event) { if (object == slider_) { switch (event->type()) { - case QEvent::Resize: - // The widget was resized, we've got to render a new pixmap. - moodbar_pixmap_dirty_ = true; - break; + case QEvent::Resize: + // The widget was resized, we've got to render a new pixmap. + moodbar_pixmap_dirty_ = true; + break; - case QEvent::ContextMenu: - ShowContextMenu(static_cast(event)->globalPos()); - return true; + case QEvent::ContextMenu: + ShowContextMenu(static_cast(event)->globalPos()); + return true; - default: - break; + default: + break; } } return QProxyStyle::eventFilter(object, event); } -void MoodbarProxyStyle::drawComplexControl( - ComplexControl control, const QStyleOptionComplex* option, - QPainter* painter, const QWidget* widget) const { +void MoodbarProxyStyle::drawComplexControl(ComplexControl control, + const QStyleOptionComplex* option, + QPainter* painter, + const QWidget* widget) const { if (control != CC_Slider || widget != slider_) { QProxyStyle::drawComplexControl(control, option, painter, widget); return; } - const_cast(this)->Render( - control, qstyleoption_cast(option), - painter, widget); + const_cast(this) + ->Render(control, qstyleoption_cast(option), + painter, widget); } -void MoodbarProxyStyle::Render( - ComplexControl control, const QStyleOptionSlider* option, - QPainter* painter, const QWidget* widget) { +void MoodbarProxyStyle::Render(ComplexControl control, + const QStyleOptionSlider* option, + QPainter* painter, const QWidget* widget) { const qreal fade_value = fade_timeline_->currentValue(); @@ -178,71 +183,81 @@ void MoodbarProxyStyle::Render( state_ = MoodbarOff; } - switch (state_) { - case FadingToOn: - case FadingToOff: - // Update the cached pixmaps if necessary - if (fade_source_.isNull()) { - // Draw the normal slider into the fade source pixmap. - fade_source_ = QPixmap(option->rect.size()); - fade_source_.fill(option->palette.color(QPalette::Active, QPalette::Background)); + case FadingToOn: + case FadingToOff: + // Update the cached pixmaps if necessary + if (fade_source_.isNull()) { + // Draw the normal slider into the fade source pixmap. + fade_source_ = QPixmap(option->rect.size()); + fade_source_.fill( + option->palette.color(QPalette::Active, QPalette::Background)); - QPainter p(&fade_source_); - QStyleOptionSlider opt_copy(*option); - opt_copy.rect.moveTo(0, 0); + QPainter p(&fade_source_); + QStyleOptionSlider opt_copy(*option); + opt_copy.rect.moveTo(0, 0); - QProxyStyle::drawComplexControl(control, &opt_copy, &p, widget); + QProxyStyle::drawComplexControl(control, &opt_copy, &p, widget); - p.end(); - } - - if (fade_target_.isNull()) { - if (state_ == FadingToOn) { - EnsureMoodbarRendered(); + p.end(); } - fade_target_ = moodbar_pixmap_; - QPainter p(&fade_target_); - DrawArrow(option, &p); - p.end(); - } - // Blend the pixmaps into each other - painter->drawPixmap(option->rect, fade_source_); - painter->setOpacity(fade_value); - painter->drawPixmap(option->rect, fade_target_); - painter->setOpacity(1.0); - break; + if (fade_target_.isNull()) { + if (state_ == FadingToOn) { + EnsureMoodbarRendered(option); + } + fade_target_ = moodbar_pixmap_; + QPainter p(&fade_target_); + DrawArrow(option, &p); + p.end(); + } - case MoodbarOff: - // It's a normal slider widget. - QProxyStyle::drawComplexControl(control, option, painter, widget); - break; + // Blend the pixmaps into each other + painter->drawPixmap(option->rect, fade_source_); + painter->setOpacity(fade_value); + painter->drawPixmap(option->rect, fade_target_); + painter->setOpacity(1.0); + break; - case MoodbarOn: - EnsureMoodbarRendered(); - painter->drawPixmap(option->rect, moodbar_pixmap_); - DrawArrow(option, painter); - break; + case MoodbarOff: + // It's a normal slider widget. + QProxyStyle::drawComplexControl(control, option, painter, widget); + break; + + case MoodbarOn: + EnsureMoodbarRendered(option); + painter->drawPixmap(option->rect, moodbar_pixmap_); + DrawArrow(option, painter); + break; } } -void MoodbarProxyStyle::EnsureMoodbarRendered() { +void MoodbarProxyStyle::EnsureMoodbarRendered(const QStyleOptionSlider* opt) { if (moodbar_colors_dirty_) { - moodbar_colors_ = MoodbarRenderer::Colors(data_, moodbar_style_, slider_->palette()); + moodbar_colors_ = + MoodbarRenderer::Colors(data_, moodbar_style_, slider_->palette()); moodbar_colors_dirty_ = false; moodbar_pixmap_dirty_ = true; } if (moodbar_pixmap_dirty_) { - moodbar_pixmap_ = MoodbarPixmap(moodbar_colors_, slider_->size(), slider_->palette()); + moodbar_pixmap_ = + MoodbarPixmap(moodbar_colors_, slider_->size(), slider_->palette(), opt); moodbar_pixmap_dirty_ = false; } } -QRect MoodbarProxyStyle::subControlRect( - ComplexControl cc, const QStyleOptionComplex* opt, - SubControl sc, const QWidget* widget) const { +int MoodbarProxyStyle::GetExtraSpace(const QStyleOptionComplex* opt) const { + int space_available = + slider_->style()->pixelMetric(QStyle::PM_SliderSpaceAvailable, opt, slider_); + int w = slider_->width(); + return w - space_available; +} + +QRect MoodbarProxyStyle::subControlRect(ComplexControl cc, + const QStyleOptionComplex* opt, + SubControl sc, + const QWidget* widget) const { if (cc != QStyle::CC_Slider || widget != slider_) { return QProxyStyle::subControlRect(cc, opt, sc, widget); } @@ -255,17 +270,23 @@ QRect MoodbarProxyStyle::subControlRect( case MoodbarOn: case FadingToOn: switch (sc) { - case SC_SliderGroove: - return opt->rect.adjusted(kMarginSize, kMarginSize, - -kMarginSize, -kMarginSize); - + case SC_SliderGroove: { + int margin_leftright = GetExtraSpace(opt) / 2; + return opt->rect.adjusted(margin_leftright, kMarginSize, -margin_leftright, + -kMarginSize); + } case SC_SliderHandle: { const QStyleOptionSlider* slider_opt = qstyleoption_cast(opt); - const int x = - (slider_opt->sliderValue - slider_opt->minimum) * (opt->rect.width() - kArrowWidth) / - (slider_opt->maximum - slider_opt->minimum); + int space_available = + slider_->style()->pixelMetric(QStyle::PM_SliderSpaceAvailable, opt, slider_); + int w = slider_->width(); + int margin = (w - space_available) / 2; + int x = (slider_opt->sliderValue - slider_opt->minimum) * + (space_available - kArrowWidth) / + (slider_opt->maximum - slider_opt->minimum); + x += margin; return QRect(QPoint(opt->rect.left() + x, opt->rect.top()), QSize(kArrowWidth, kArrowHeight)); @@ -282,12 +303,12 @@ QRect MoodbarProxyStyle::subControlRect( void MoodbarProxyStyle::DrawArrow(const QStyleOptionSlider* option, QPainter* painter) const { // Get the dimensions of the arrow - const QRect rect = subControlRect(CC_Slider, option, SC_SliderHandle, slider_); + const QRect rect = + subControlRect(CC_Slider, option, SC_SliderHandle, slider_); // Make a polygon QPolygon poly; - poly << rect.topLeft() - << rect.topRight() + poly << rect.topLeft() << rect.topRight() << QPoint(rect.center().x(), rect.bottom()); // Draw it @@ -301,10 +322,17 @@ void MoodbarProxyStyle::DrawArrow(const QStyleOptionSlider* option, } QPixmap MoodbarProxyStyle::MoodbarPixmap(const ColorVector& colors, - const QSize& size, const QPalette& palette) { - QRect rect(QPoint(0, 0), size); + const QSize& size, + const QPalette& palette, + const QStyleOptionSlider* opt) { + + int margin_leftright = GetExtraSpace(opt); + const QRect rect(QPoint(0, 0), size); QRect border_rect(rect); - border_rect.adjust(kMarginSize, kMarginSize, -kMarginSize, -kMarginSize); + // I would expect we need to adjust by margin_lr/2, so the extra space is + // distributed on both side, but if we do so, the margin is too small, and I'm + // not sure why... + border_rect.adjust(margin_leftright, kMarginSize, -margin_leftright, -kMarginSize); QRect inner_rect(border_rect); inner_rect.adjust(kBorderSize, kBorderSize, -kBorderSize, -kBorderSize); @@ -316,14 +344,20 @@ QPixmap MoodbarProxyStyle::MoodbarPixmap(const ColorVector& colors, MoodbarRenderer::Render(colors, &p, inner_rect); // Draw the border - p.setPen(QPen(Qt::black, - kBorderSize, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); + p.setPen( + QPen(Qt::black, kBorderSize, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); p.drawRect(border_rect.adjusted(0, 0, -1, -1)); // Draw the outer bit p.setPen(QPen(palette.brush(QPalette::Active, QPalette::Background), kMarginSize, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); + // First: a rectangle around the slier p.drawRect(rect.adjusted(1, 1, -2, -2)); + // Then, thicker border on left and right, because of the margins. + p.setPen(QPen(palette.brush(QPalette::Active, QPalette::Background), + margin_leftright*2-kBorderSize, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); + p.drawLine(rect.topLeft(), rect.bottomLeft()); + p.drawLine(rect.topRight(), rect.bottomRight()); p.end(); @@ -334,7 +368,7 @@ void MoodbarProxyStyle::ShowContextMenu(const QPoint& pos) { if (!context_menu_) { context_menu_ = new QMenu(slider_); show_moodbar_action_ = context_menu_->addAction( - tr("Show moodbar"), this, SLOT(SetMoodbarEnabled(bool))); + tr("Show moodbar"), this, SLOT(SetMoodbarEnabled(bool))); show_moodbar_action_->setCheckable(true); show_moodbar_action_->setChecked(enabled_); @@ -342,23 +376,26 @@ void MoodbarProxyStyle::ShowContextMenu(const QPoint& pos) { QMenu* styles_menu = context_menu_->addMenu(tr("Moodbar style")); style_action_group_ = new QActionGroup(styles_menu); - for (int i=0 ; iaddAction(MoodbarRenderer::StyleName(style)); + QAction* action = + style_action_group_->addAction(MoodbarRenderer::StyleName(style)); action->setCheckable(true); action->setData(i); } styles_menu->addActions(style_action_group_->actions()); - connect(styles_menu, SIGNAL(triggered(QAction*)), SLOT(ChangeStyle(QAction*))); + connect(styles_menu, SIGNAL(triggered(QAction*)), + SLOT(ChangeStyle(QAction*))); } // Update the currently selected style - foreach (QAction* action, style_action_group_->actions()) { - if (MoodbarRenderer::MoodbarStyle(action->data().toInt()) == moodbar_style_) { + for (QAction* action : style_action_group_->actions()) { + if (MoodbarRenderer::MoodbarStyle(action->data().toInt()) == + moodbar_style_) { action->setChecked(true); break; } diff --git a/src/moodbar/moodbarproxystyle.h b/src/moodbar/moodbarproxystyle.h index 8b7ab0396..bf6cf9d2b 100644 --- a/src/moodbar/moodbarproxystyle.h +++ b/src/moodbar/moodbarproxystyle.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -33,56 +33,56 @@ class QTimeLine; class MoodbarProxyStyle : public QProxyStyle { Q_OBJECT -public: + public: MoodbarProxyStyle(Application* app, QSlider* slider); // QProxyStyle - void drawComplexControl(ComplexControl control, const QStyleOptionComplex* option, - QPainter* painter, const QWidget* widget) const; + void drawComplexControl(ComplexControl control, + const QStyleOptionComplex* option, QPainter* painter, + const QWidget* widget) const; QRect subControlRect(ComplexControl cc, const QStyleOptionComplex* opt, SubControl sc, const QWidget* widget) const; // QObject bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: // An empty byte array means there's no moodbar, so just show a normal slider. void SetMoodbarData(const QByteArray& data); // If the moodbar is disabled then a normal slider will always be shown. void SetMoodbarEnabled(bool enabled); -private: + private: static const int kMarginSize; static const int kBorderSize; static const int kArrowWidth; static const int kArrowHeight; - enum State { - MoodbarOn, - MoodbarOff, - FadingToOn, - FadingToOff - }; + enum State { MoodbarOn, MoodbarOff, FadingToOn, FadingToOff }; -private: + private: void NextState(); void Render(ComplexControl control, const QStyleOptionSlider* option, QPainter* painter, const QWidget* widget); - void EnsureMoodbarRendered(); + void EnsureMoodbarRendered(const QStyleOptionSlider* opt); void DrawArrow(const QStyleOptionSlider* option, QPainter* painter) const; void ShowContextMenu(const QPoint& pos); - static QPixmap MoodbarPixmap(const ColorVector& colors, - const QSize& size, const QPalette& palette); + QPixmap MoodbarPixmap(const ColorVector& colors, const QSize& size, + const QPalette& palette, const QStyleOptionSlider* opt); -private slots: + private slots: void ReloadSettings(); void FaderValueChanged(qreal value); void ChangeStyle(QAction* action); -private: + private: + // The slider "groove" is smaller than the actual slider: this convenient + // function returns the difference between groove width and slider width. + int GetExtraSpace(const QStyleOptionComplex* opt) const; + Application* app_; QSlider* slider_; @@ -106,4 +106,4 @@ private: QActionGroup* style_action_group_; }; -#endif // MOODBARPROXYSTYLE_H +#endif // MOODBARPROXYSTYLE_H diff --git a/src/moodbar/moodbarrenderer.cpp b/src/moodbar/moodbarrenderer.cpp index 82eb4754e..55df0faad 100644 --- a/src/moodbar/moodbarrenderer.cpp +++ b/src/moodbar/moodbarrenderer.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -20,28 +20,39 @@ #include #include +#include "core/arraysize.h" + const int MoodbarRenderer::kNumHues = 12; -ColorVector MoodbarRenderer::Colors( - const QByteArray& data, MoodbarStyle style, const QPalette& palette) { +ColorVector MoodbarRenderer::Colors(const QByteArray& data, MoodbarStyle style, + const QPalette& palette) { const int samples = data.size() / 3; // Set some parameters based on the moodbar style StyleProperties properties; - switch(style) { - case Style_Angry: properties = StyleProperties(samples / 360 * 9, 45, -45, 200, 100); break; - case Style_Frozen: properties = StyleProperties(samples / 360 * 1, 140, 160, 50, 100); break; - case Style_Happy: properties = StyleProperties(samples / 360 * 2, 0, 359, 150, 250); break; - case Style_Normal: properties = StyleProperties(samples / 360 * 3, 0, 359, 100, 100); break; + switch (style) { + case Style_Angry: + properties = StyleProperties(samples / 360 * 9, 45, -45, 200, 100); + break; + case Style_Frozen: + properties = StyleProperties(samples / 360 * 1, 140, 160, 50, 100); + break; + case Style_Happy: + properties = StyleProperties(samples / 360 * 2, 0, 359, 150, 250); + break; + case Style_Normal: + properties = StyleProperties(samples / 360 * 3, 0, 359, 100, 100); + break; case Style_SystemPalette: default: { - const QColor highlight_color(palette.color(QPalette::Active, QPalette::Highlight)); + const QColor highlight_color( + palette.color(QPalette::Active, QPalette::Highlight)); - properties.threshold_ = samples / 360 * 3; + properties.threshold_ = samples / 360 * 3; properties.range_start_ = (highlight_color.hsvHue() - 20 + 360) % 360; properties.range_delta_ = 20; - properties.sat_ = highlight_color.hsvSaturation(); - properties.val_ = highlight_color.value() / 2; + properties.sat_ = highlight_color.hsvSaturation(); + properties.val_ = highlight_color.value() / 2; } } @@ -51,12 +62,12 @@ ColorVector MoodbarRenderer::Colors( int hue_distribution[360]; int total = 0; - memset(hue_distribution, 0, sizeof(hue_distribution)); + memset(hue_distribution, 0, arraysize(hue_distribution)); ColorVector colors; // Read the colors, keeping track of some histograms - for (int i=0; i properties.threshold_ ? n++ : n ) - * properties.range_delta_ / total + properties.range_start_) % 360; + ((hue_distribution[i] > properties.threshold_ ? n++ : n) * + properties.range_delta_ / total + + properties.range_start_) % + 360; } // Now huedist is a hue mapper: huedist[h] is the new hue value // for a bar with hue h - for (ColorVector::iterator it = colors.begin() ; it != colors.end() ; ++it) { + for (ColorVector::iterator it = colors.begin(); it != colors.end(); ++it) { const int hue = qMax(0, it->hue()); *it = QColor::fromHsv( - qBound(0, hue_distribution[hue], 359), - qBound(0, it->saturation() * properties.sat_ / 100, 255), - qBound(0, it->value() * properties.val_ / 100, 255)); + qBound(0, hue_distribution[hue], 359), + qBound(0, it->saturation() * properties.sat_ / 100, 255), + qBound(0, it->value() * properties.val_ / 100, 255)); } return colors; } -void MoodbarRenderer::Render(const ColorVector& colors, QPainter* p, const QRect& rect) { +void MoodbarRenderer::Render(const ColorVector& colors, QPainter* p, + const QRect& rect) { // Sample the colors and map them to screen pixels. ColorVector screen_colors; - for (int x=0; xsetPen(QColor::fromHsv( - h, - qBound(0, int(float(s) * coeff), 255), + h, qBound(0, int(float(s) * coeff), 255), qBound(0, int(255.f - (255.f - float(v)) * coeff2), 255))); p->drawPoint(rect.left() + x, rect.top() + y); @@ -142,7 +154,8 @@ void MoodbarRenderer::Render(const ColorVector& colors, QPainter* p, const QRect } } -QImage MoodbarRenderer::RenderToImage(const ColorVector& colors, const QSize& size) { +QImage MoodbarRenderer::RenderToImage(const ColorVector& colors, + const QSize& size) { QImage image(size, QImage::Format_ARGB32_Premultiplied); QPainter p(&image); Render(colors, &p, image.rect()); @@ -152,12 +165,18 @@ QImage MoodbarRenderer::RenderToImage(const ColorVector& colors, const QSize& si QString MoodbarRenderer::StyleName(MoodbarStyle style) { switch (style) { - case Style_Normal: return QObject::tr("Normal"); - case Style_Angry: return QObject::tr("Angry"); - case Style_Frozen: return QObject::tr("Frozen"); - case Style_Happy: return QObject::tr("Happy"); - case Style_SystemPalette: return QObject::tr("System colors"); + case Style_Normal: + return QObject::tr("Normal"); + case Style_Angry: + return QObject::tr("Angry"); + case Style_Frozen: + return QObject::tr("Frozen"); + case Style_Happy: + return QObject::tr("Happy"); + case Style_SystemPalette: + return QObject::tr("System colors"); - default: return QString(); + default: + return QString(); } } diff --git a/src/moodbar/moodbarrenderer.h b/src/moodbar/moodbarrenderer.h index 8521bdd6b..d91c04bcb 100644 --- a/src/moodbar/moodbarrenderer.h +++ b/src/moodbar/moodbarrenderer.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -27,7 +27,7 @@ class QPalette; typedef QVector ColorVector; class MoodbarRenderer { -public: + public: // These values are persisted. Remember to change appearancesettingspage.ui // when changing them. enum MoodbarStyle { @@ -36,7 +36,6 @@ public: Style_Frozen, Style_Happy, Style_SystemPalette, - StyleCount }; @@ -49,14 +48,17 @@ public: static void Render(const ColorVector& colors, QPainter* p, const QRect& rect); static QImage RenderToImage(const ColorVector& colors, const QSize& size); -private: + private: MoodbarRenderer(); struct StyleProperties { StyleProperties(int threshold = 0, int range_start = 0, int range_delta = 0, int sat = 0, int val = 0) - : threshold_(threshold), range_start_(range_start), range_delta_(range_delta), - sat_(sat), val_(val) {} + : threshold_(threshold), + range_start_(range_start), + range_delta_(range_delta), + sat_(sat), + val_(val) {} int threshold_; int range_start_; @@ -68,4 +70,4 @@ private: Q_DECLARE_METATYPE(QVector) -#endif // MOODBARRENDERER_H +#endif // MOODBARRENDERER_H diff --git a/src/musicbrainz/acoustidclient.cpp b/src/musicbrainz/acoustidclient.cpp index 448bf5ed0..c98d2de5a 100644 --- a/src/musicbrainz/acoustidclient.cpp +++ b/src/musicbrainz/acoustidclient.cpp @@ -29,25 +29,21 @@ const char* AcoustidClient::kClientId = "qsZGpeLx"; const char* AcoustidClient::kUrl = "http://api.acoustid.org/v2/lookup"; -const int AcoustidClient::kDefaultTimeout = 5000; // msec +const int AcoustidClient::kDefaultTimeout = 5000; // msec AcoustidClient::AcoustidClient(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) -{ -} + : QObject(parent), + network_(new NetworkAccessManager(this)), + timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) {} -void AcoustidClient::SetTimeout(int msec) { - timeouts_->SetTimeout(msec); -} +void AcoustidClient::SetTimeout(int msec) { timeouts_->SetTimeout(msec); } -void AcoustidClient::Start(int id, const QString& fingerprint, int duration_msec) { +void AcoustidClient::Start(int id, const QString& fingerprint, + int duration_msec) { typedef QPair Param; QList parameters; - parameters << Param("format", "json") - << Param("client", kClientId) + parameters << Param("format", "json") << Param("client", kClientId) << Param("duration", QString::number(duration_msec / kMsecPerSec)) << Param("meta", "recordingids") << Param("fingerprint", fingerprint); @@ -64,9 +60,7 @@ void AcoustidClient::Start(int id, const QString& fingerprint, int duration_msec timeouts_->AddReply(reply); } -void AcoustidClient::Cancel(int id) { - delete requests_.take(id); -} +void AcoustidClient::Cancel(int id) { delete requests_.take(id); } void AcoustidClient::CancelAll() { qDeleteAll(requests_.values()); @@ -77,7 +71,8 @@ void AcoustidClient::RequestFinished(QNetworkReply* reply, int id) { reply->deleteLater(); requests_.remove(id); - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != + 200) { emit Finished(id, QString()); return; } @@ -96,11 +91,11 @@ void AcoustidClient::RequestFinished(QNetworkReply* reply, int id) { return; } QVariantList results = result["results"].toList(); - foreach (const QVariant& v, results) { + for (const QVariant& v : results) { QVariantMap r = v.toMap(); if (r.contains("recordings")) { QVariantList recordings = r["recordings"].toList(); - foreach (const QVariant& recording, recordings) { + for (const QVariant& recording : recordings) { QVariantMap o = recording.toMap(); if (o.contains("id")) { emit Finished(id, o["id"].toString()); diff --git a/src/musicbrainz/acoustidclient.h b/src/musicbrainz/acoustidclient.h index aa54d5a62..36b3bc50c 100644 --- a/src/musicbrainz/acoustidclient.h +++ b/src/musicbrainz/acoustidclient.h @@ -37,8 +37,8 @@ class AcoustidClient : public QObject { // IDs are provided by the caller when a request is started and included in // the Finished signal - they have no meaning to AcoustidClient. -public: - AcoustidClient(QObject* parent = 0); + public: + AcoustidClient(QObject* parent = nullptr); // Network requests will be aborted after this interval. void SetTimeout(int msec); @@ -58,10 +58,10 @@ public: signals: void Finished(int id, const QString& mbid); -private slots: + private slots: void RequestFinished(QNetworkReply* reply, int id); -private: + private: static const char* kClientId; static const char* kUrl; static const int kDefaultTimeout; @@ -71,4 +71,4 @@ private: QMap requests_; }; -#endif // ACOUSTIDCLIENT_H +#endif // ACOUSTIDCLIENT_H diff --git a/src/musicbrainz/chromaprinter.cpp b/src/musicbrainz/chromaprinter.cpp index ea1ae2f33..ebb2ef882 100644 --- a/src/musicbrainz/chromaprinter.cpp +++ b/src/musicbrainz/chromaprinter.cpp @@ -34,23 +34,19 @@ static const int kDecodeRate = 11025; static const int kDecodeChannels = 1; Chromaprinter::Chromaprinter(const QString& filename) - : filename_(filename), - event_loop_(NULL), - convert_element_(NULL), - finishing_(false) { -} + : filename_(filename), + event_loop_(nullptr), + convert_element_(nullptr), + finishing_(false) {} -Chromaprinter::~Chromaprinter() { -} +Chromaprinter::~Chromaprinter() {} -GstElement* Chromaprinter::CreateElement(const QString &factory_name, - GstElement *bin) { +GstElement* Chromaprinter::CreateElement(const QString& factory_name, + GstElement* bin) { GstElement* ret = gst_element_factory_make( - factory_name.toAscii().constData(), - factory_name.toAscii().constData()); + factory_name.toAscii().constData(), factory_name.toAscii().constData()); - if (ret && bin) - gst_bin_add(GST_BIN(bin), ret); + if (ret && bin) gst_bin_add(GST_BIN(bin), ret); if (!ret) { qLog(Warning) << "Couldn't create the gstreamer element" << factory_name; @@ -69,11 +65,11 @@ QString Chromaprinter::CreateFingerprint() { event_loop_ = g_main_loop_new(context, FALSE); pipeline_ = gst_pipeline_new("pipeline"); - GstElement* src = CreateElement("filesrc", pipeline_); - GstElement* decode = CreateElement("decodebin2", pipeline_); - GstElement* convert = CreateElement("audioconvert", pipeline_); + GstElement* src = CreateElement("filesrc", pipeline_); + GstElement* decode = CreateElement("decodebin2", pipeline_); + GstElement* convert = CreateElement("audioconvert", pipeline_); GstElement* resample = CreateElement("audioresample", pipeline_); - GstElement* sink = CreateElement("appsink", pipeline_); + GstElement* sink = CreateElement("appsink", pipeline_); if (!src || !decode || !convert || !resample || !sink) { return QString(); @@ -82,33 +78,33 @@ QString Chromaprinter::CreateFingerprint() { convert_element_ = convert; // Connect the elements - gst_element_link_many(src, decode, NULL); - gst_element_link_many(convert, resample, NULL); + gst_element_link_many(src, decode, nullptr); + gst_element_link_many(convert, resample, nullptr); // Chromaprint expects mono floats at a sample rate of 11025Hz. GstCaps* caps = gst_caps_new_simple( - "audio/x-raw-int", - "width", G_TYPE_INT, 16, - "channels", G_TYPE_INT, kDecodeChannels, - "rate", G_TYPE_INT, kDecodeRate, - NULL); + "audio/x-raw-int", "width", G_TYPE_INT, 16, "channels", G_TYPE_INT, + kDecodeChannels, "rate", G_TYPE_INT, kDecodeRate, nullptr); gst_element_link_filtered(resample, sink, caps); gst_caps_unref(caps); GstAppSinkCallbacks callbacks; memset(&callbacks, 0, sizeof(callbacks)); callbacks.new_buffer = NewBufferCallback; - gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, this, NULL); - g_object_set(G_OBJECT(sink), "sync", FALSE, NULL); - g_object_set(G_OBJECT(sink), "emit-signals", TRUE, NULL); + gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, + this, nullptr); + g_object_set(G_OBJECT(sink), "sync", FALSE, nullptr); + g_object_set(G_OBJECT(sink), "emit-signals", TRUE, nullptr); // Set the filename - g_object_set(src, "location", filename_.toUtf8().constData(), NULL); + g_object_set(src, "location", filename_.toUtf8().constData(), nullptr); // Connect signals CHECKED_GCONNECT(decode, "new-decoded-pad", &NewPadCallback, this); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallbackSync, this); - guint bus_callback_id = gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallback, this); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + BusCallbackSync, this); + guint bus_callback_id = gst_bus_add_watch( + gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), BusCallback, this); QTime time; time.start(); @@ -125,20 +121,22 @@ QString Chromaprinter::CreateFingerprint() { buffer_.close(); QByteArray data = buffer_.data(); - ChromaprintContext* chromaprint = chromaprint_new(CHROMAPRINT_ALGORITHM_DEFAULT); + ChromaprintContext* chromaprint = + chromaprint_new(CHROMAPRINT_ALGORITHM_DEFAULT); chromaprint_start(chromaprint, kDecodeRate, kDecodeChannels); - chromaprint_feed(chromaprint, reinterpret_cast(data.data()), data.size() / 2); + chromaprint_feed(chromaprint, reinterpret_cast(data.data()), + data.size() / 2); chromaprint_finish(chromaprint); - void* fprint = NULL; + void* fprint = nullptr; int size = 0; int ret = chromaprint_get_raw_fingerprint(chromaprint, &fprint, &size); QByteArray fingerprint; if (ret == 1) { - void* encoded = NULL; + void* encoded = nullptr; int encoded_size = 0; - chromaprint_encode_fingerprint( - fprint, size, CHROMAPRINT_ALGORITHM_DEFAULT, &encoded, &encoded_size, 1); + chromaprint_encode_fingerprint(fprint, size, CHROMAPRINT_ALGORITHM_DEFAULT, + &encoded, &encoded_size, 1); fingerprint.append(reinterpret_cast(encoded), encoded_size); @@ -148,12 +146,15 @@ QString Chromaprinter::CreateFingerprint() { chromaprint_free(chromaprint); int codegen_time = time.elapsed(); - qLog(Debug) << "Decode time:" << decode_time << "Codegen time:" << codegen_time; + qLog(Debug) << "Decode time:" << decode_time + << "Codegen time:" << codegen_time; // Cleanup - callbacks.new_buffer = NULL; - gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, this, NULL); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), NULL, NULL); + callbacks.new_buffer = nullptr; + gst_app_sink_set_callbacks(reinterpret_cast(sink), &callbacks, + this, nullptr); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(pipeline_)), + nullptr, nullptr); g_source_remove(bus_callback_id); gst_element_set_state(pipeline_, GST_STATE_NULL); gst_object_unref(pipeline_); @@ -161,10 +162,11 @@ QString Chromaprinter::CreateFingerprint() { return fingerprint; } -void Chromaprinter::NewPadCallback(GstElement*, GstPad* pad, gboolean, gpointer data) { +void Chromaprinter::NewPadCallback(GstElement*, GstPad* pad, gboolean, + gpointer data) { Chromaprinter* instance = reinterpret_cast(data); - GstPad* const audiopad = gst_element_get_static_pad( - instance->convert_element_, "sink"); + GstPad* const audiopad = + gst_element_get_static_pad(instance->convert_element_, "sink"); if (GST_PAD_IS_LINKED(audiopad)) { qLog(Warning) << "audiopad is already linked, unlinking old pad"; @@ -206,7 +208,8 @@ gboolean Chromaprinter::BusCallback(GstBus*, GstMessage* msg, gpointer data) { return GST_BUS_DROP; } -GstBusSyncReply Chromaprinter::BusCallbackSync(GstBus*, GstMessage* msg, gpointer data) { +GstBusSyncReply Chromaprinter::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data) { Chromaprinter* instance = reinterpret_cast(data); if (instance->finishing_) { return GST_BUS_PASS; @@ -228,7 +231,8 @@ GstBusSyncReply Chromaprinter::BusCallbackSync(GstBus*, GstMessage* msg, gpointe return GST_BUS_PASS; } -GstFlowReturn Chromaprinter::NewBufferCallback(GstAppSink* app_sink, gpointer self) { +GstFlowReturn Chromaprinter::NewBufferCallback(GstAppSink* app_sink, + gpointer self) { Chromaprinter* me = reinterpret_cast(self); if (me->finishing_) { return GST_FLOW_OK; diff --git a/src/musicbrainz/chromaprinter.h b/src/musicbrainz/chromaprinter.h index a9c32265f..7174cfc0f 100644 --- a/src/musicbrainz/chromaprinter.h +++ b/src/musicbrainz/chromaprinter.h @@ -35,7 +35,7 @@ class Chromaprinter { // You should create one Chromaprinter for each file you want to fingerprint. // This class works well with QtConcurrentMap. -public: + public: Chromaprinter(const QString& filename); ~Chromaprinter(); @@ -44,17 +44,19 @@ public: // could be created. QString CreateFingerprint(); -private: - GstElement* CreateElement(const QString& factory_name, GstElement* bin = NULL); + private: + GstElement* CreateElement(const QString& factory_name, + GstElement* bin = nullptr); void ReportError(GstMessage* message); static void NewPadCallback(GstElement*, GstPad* pad, gboolean, gpointer data); static gboolean BusCallback(GstBus*, GstMessage* msg, gpointer data); - static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, gpointer data); + static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data); static GstFlowReturn NewBufferCallback(GstAppSink* app_sink, gpointer self); -private: + private: QString filename_; GMainLoop* event_loop_; @@ -65,4 +67,4 @@ private: bool finishing_; }; -#endif // CHROMAPRINTER_H +#endif // CHROMAPRINTER_H diff --git a/src/musicbrainz/musicbrainzclient.cpp b/src/musicbrainz/musicbrainzclient.cpp index 4cb1c73a2..a82279cc1 100644 --- a/src/musicbrainz/musicbrainzclient.cpp +++ b/src/musicbrainz/musicbrainzclient.cpp @@ -27,17 +27,17 @@ #include "core/network.h" #include "core/utilities.h" -const char* MusicBrainzClient::kTrackUrl = "https://musicbrainz.org/ws/2/recording/"; -const char* MusicBrainzClient::kDiscUrl = "https://musicbrainz.org/ws/2/discid/"; +const char* MusicBrainzClient::kTrackUrl = + "https://musicbrainz.org/ws/2/recording/"; +const char* MusicBrainzClient::kDiscUrl = + "https://musicbrainz.org/ws/2/discid/"; const char* MusicBrainzClient::kDateRegex = "^[12]\\d{3}"; -const int MusicBrainzClient::kDefaultTimeout = 5000; // msec +const int MusicBrainzClient::kDefaultTimeout = 5000; // msec MusicBrainzClient::MusicBrainzClient(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) -{ -} + : QObject(parent), + network_(new NetworkAccessManager(this)), + timeouts_(new NetworkTimeouts(kDefaultTimeout, this)) {} void MusicBrainzClient::Start(int id, const QString& mbid) { typedef QPair Param; @@ -74,9 +74,7 @@ void MusicBrainzClient::StartDiscIdRequest(const QString& discid) { timeouts_->AddReply(reply); } -void MusicBrainzClient::Cancel(int id) { - delete requests_.take(id); -} +void MusicBrainzClient::Cancel(int id) { delete requests_.take(id); } void MusicBrainzClient::CancelAll() { qDeleteAll(requests_.values()); @@ -90,7 +88,8 @@ void MusicBrainzClient::DiscIdRequestFinished(QNetworkReply* reply) { QString artist; QString album; - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != + 200) { emit Finished(artist, album, ret); return; } @@ -116,14 +115,16 @@ void MusicBrainzClient::DiscIdRequestFinished(QNetworkReply* reply) { while (!reader.atEnd()) { QXmlStreamReader::TokenType token = reader.readNext(); - if (token == QXmlStreamReader::StartElement && reader.name() == "recording") { + if (token == QXmlStreamReader::StartElement && + reader.name() == "recording") { ResultList tracks = ParseTrack(&reader); - foreach (const Result& track, tracks) { + for (const Result& track : tracks) { if (!track.title_.isEmpty()) { ret << track; } } - } else if (token == QXmlStreamReader::EndElement && reader.name() == "track-list") { + } else if (token == QXmlStreamReader::EndElement && + reader.name() == "track-list") { break; } } @@ -131,22 +132,23 @@ void MusicBrainzClient::DiscIdRequestFinished(QNetworkReply* reply) { emit Finished(artist, album, UniqueResults(ret)); } - void MusicBrainzClient::RequestFinished(QNetworkReply* reply, int id) { reply->deleteLater(); requests_.remove(id); ResultList ret; - if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != 200) { + if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() != + 200) { emit Finished(id, ret); return; } QXmlStreamReader reader(reply); while (!reader.atEnd()) { - if (reader.readNext() == QXmlStreamReader::StartElement && reader.name() == "recording") { + if (reader.readNext() == QXmlStreamReader::StartElement && + reader.name() == "recording") { ResultList tracks = ParseTrack(&reader); - foreach (const Result& track, tracks) { + for (const Result& track : tracks) { if (!track.title_.isEmpty()) { ret << track; } @@ -157,7 +159,8 @@ void MusicBrainzClient::RequestFinished(QNetworkReply* reply, int id) { emit Finished(id, UniqueResults(ret)); } -MusicBrainzClient::ResultList MusicBrainzClient::ParseTrack(QXmlStreamReader* reader) { +MusicBrainzClient::ResultList MusicBrainzClient::ParseTrack( + QXmlStreamReader* reader) { Result result; QList releases; @@ -187,7 +190,7 @@ MusicBrainzClient::ResultList MusicBrainzClient::ParseTrack(QXmlStreamReader* re if (releases.isEmpty()) { ret << result; } else { - foreach (const Release& release, releases) { + for (const Release& release : releases) { ret << release.CopyAndMergeInto(result); } } @@ -208,7 +211,8 @@ void MusicBrainzClient::ParseArtist(QXmlStreamReader* reader, QString* artist) { } } -MusicBrainzClient::Release MusicBrainzClient::ParseRelease(QXmlStreamReader* reader) { +MusicBrainzClient::Release MusicBrainzClient::ParseRelease( + QXmlStreamReader* reader) { Release ret; while (!reader->atEnd()) { @@ -224,7 +228,8 @@ MusicBrainzClient::Release MusicBrainzClient::ParseRelease(QXmlStreamReader* rea ret.year_ = regex.cap(0).toInt(); } } else if (name == "track-list") { - ret.track_ = reader->attributes().value("offset").toString().toInt() + 1; + ret.track_ = + reader->attributes().value("offset").toString().toInt() + 1; Utilities::ConsumeCurrentElement(reader); } } @@ -237,7 +242,8 @@ MusicBrainzClient::Release MusicBrainzClient::ParseRelease(QXmlStreamReader* rea return ret; } -MusicBrainzClient::ResultList MusicBrainzClient::UniqueResults(const ResultList& results) { +MusicBrainzClient::ResultList MusicBrainzClient::UniqueResults( + const ResultList& results) { ResultList ret = QSet::fromList(results).toList(); qSort(ret); return ret; diff --git a/src/musicbrainz/musicbrainzclient.h b/src/musicbrainz/musicbrainzclient.h index e7065daf4..cdaf20094 100644 --- a/src/musicbrainz/musicbrainzclient.h +++ b/src/musicbrainz/musicbrainzclient.h @@ -37,16 +37,16 @@ class MusicBrainzClient : public QObject { // IDs are provided by the caller when a request is started and included in // the Finished signal - they have no meaning to MusicBrainzClient. -public: - MusicBrainzClient(QObject* parent = 0); + public: + MusicBrainzClient(QObject* parent = nullptr); struct Result { Result() : duration_msec_(0), track_(0), year_(-1) {} - bool operator <(const Result& other) const { - #define cmp(field) \ - if (field < other.field) return true; \ - if (field > other.field) return false; + bool operator<(const Result& other) const { +#define cmp(field) \ + if (field < other.field) return true; \ + if (field > other.field) return false; cmp(track_); cmp(year_); @@ -54,16 +54,13 @@ public: cmp(artist_); return false; - #undef cmp +#undef cmp } - bool operator ==(const Result& other) const { - return title_ == other.title_ && - artist_ == other.artist_ && - album_ == other.album_ && - duration_msec_ == other.duration_msec_ && - track_ == other.track_ && - year_ == other.year_; + bool operator==(const Result& other) const { + return title_ == other.title_ && artist_ == other.artist_ && + album_ == other.album_ && duration_msec_ == other.duration_msec_ && + track_ == other.track_ && year_ == other.year_; } QString title_; @@ -75,7 +72,6 @@ public: }; typedef QList ResultList; - // Starts a request and returns immediately. Finished() will be emitted // later with the same ID. void Start(int id, const QString& mbid); @@ -96,11 +92,11 @@ signals: void Finished(const QString& artist, const QString album, const MusicBrainzClient::ResultList& result); -private slots: + private slots: void RequestFinished(QNetworkReply* reply, int id); void DiscIdRequestFinished(QNetworkReply* reply); -private: + private: struct Release { Release() : track_(0), year_(0) {} @@ -122,7 +118,7 @@ private: static Release ParseRelease(QXmlStreamReader* reader); static ResultList UniqueResults(const ResultList& results); -private: + private: static const char* kTrackUrl; static const char* kDiscUrl; static const char* kDateRegex; @@ -134,12 +130,8 @@ private: }; inline uint qHash(const MusicBrainzClient::Result& result) { - return qHash(result.album_) ^ - qHash(result.artist_) ^ - result.duration_msec_ ^ - qHash(result.title_) ^ - result.track_ ^ - result.year_; + return qHash(result.album_) ^ qHash(result.artist_) ^ result.duration_msec_ ^ + qHash(result.title_) ^ result.track_ ^ result.year_; } -#endif // MUSICBRAINZCLIENT_H +#endif // MUSICBRAINZCLIENT_H diff --git a/src/musicbrainz/tagfetcher.cpp b/src/musicbrainz/tagfetcher.cpp index 983665889..17309ca4f 100644 --- a/src/musicbrainz/tagfetcher.cpp +++ b/src/musicbrainz/tagfetcher.cpp @@ -28,13 +28,15 @@ #include TagFetcher::TagFetcher(QObject* parent) - : QObject(parent), - fingerprint_watcher_(NULL), - acoustid_client_(new AcoustidClient(this)), - musicbrainz_client_(new MusicBrainzClient(this)) -{ - connect(acoustid_client_, SIGNAL(Finished(int,QString)), SLOT(PuidFound(int,QString))); - connect(musicbrainz_client_, SIGNAL(Finished(int,MusicBrainzClient::ResultList)), SLOT(TagsFetched(int,MusicBrainzClient::ResultList))); + : QObject(parent), + fingerprint_watcher_(nullptr), + acoustid_client_(new AcoustidClient(this)), + musicbrainz_client_(new MusicBrainzClient(this)) { + connect(acoustid_client_, SIGNAL(Finished(int, QString)), + SLOT(PuidFound(int, QString))); + connect(musicbrainz_client_, + SIGNAL(Finished(int, MusicBrainzClient::ResultList)), + SLOT(TagsFetched(int, MusicBrainzClient::ResultList))); } QString TagFetcher::GetFingerprint(const Song& song) { @@ -49,9 +51,10 @@ void TagFetcher::StartFetch(const SongList& songs) { QFuture future = QtConcurrent::mapped(songs_, GetFingerprint); fingerprint_watcher_ = new QFutureWatcher(this); fingerprint_watcher_->setFuture(future); - connect(fingerprint_watcher_, SIGNAL(resultReadyAt(int)), SLOT(FingerprintFound(int))); + connect(fingerprint_watcher_, SIGNAL(resultReadyAt(int)), + SLOT(FingerprintFound(int))); - foreach (const Song& song, songs) { + for (const Song& song : songs) { emit Progress(song, tr("Fingerprinting song")); } } @@ -61,7 +64,7 @@ void TagFetcher::Cancel() { fingerprint_watcher_->cancel(); delete fingerprint_watcher_; - fingerprint_watcher_ = NULL; + fingerprint_watcher_ = nullptr; } acoustid_client_->CancelAll(); @@ -70,7 +73,8 @@ void TagFetcher::Cancel() { } void TagFetcher::FingerprintFound(int index) { - QFutureWatcher* watcher = reinterpret_cast*>(sender()); + QFutureWatcher* watcher = + reinterpret_cast*>(sender()); if (!watcher || index >= songs_.count()) { return; } @@ -84,7 +88,8 @@ void TagFetcher::FingerprintFound(int index) { } emit Progress(song, tr("Identifying song")); - acoustid_client_->Start(index, fingerprint, song.length_nanosec() / kNsecPerMsec); + acoustid_client_->Start(index, fingerprint, + song.length_nanosec() / kNsecPerMsec); } void TagFetcher::PuidFound(int index, const QString& puid) { @@ -103,7 +108,8 @@ void TagFetcher::PuidFound(int index, const QString& puid) { musicbrainz_client_->Start(index, puid); } -void TagFetcher::TagsFetched(int index, const MusicBrainzClient::ResultList& results) { +void TagFetcher::TagsFetched(int index, + const MusicBrainzClient::ResultList& results) { if (index >= songs_.count()) { return; } @@ -111,7 +117,7 @@ void TagFetcher::TagsFetched(int index, const MusicBrainzClient::ResultList& res const Song& original_song = songs_[index]; SongList songs_guessed; - foreach (const MusicBrainzClient::Result& result, results) { + for (const MusicBrainzClient::Result& result : results) { Song song; song.Init(result.title_, result.artist_, result.album_, result.duration_msec_ * kNsecPerMsec); diff --git a/src/musicbrainz/tagfetcher.h b/src/musicbrainz/tagfetcher.h index 468624a35..18bb90ef9 100644 --- a/src/musicbrainz/tagfetcher.h +++ b/src/musicbrainz/tagfetcher.h @@ -32,12 +32,12 @@ class TagFetcher : public QObject { // High level interface to Fingerprinter, AcoustidClient and // MusicBrainzClient. -public: - TagFetcher(QObject* parent = 0); + public: + TagFetcher(QObject* parent = nullptr); void StartFetch(const SongList& songs); -public slots: + public slots: void Cancel(); signals: @@ -45,12 +45,12 @@ signals: void ResultAvailable(const Song& original_song, const SongList& songs_guessed); -private slots: + private slots: void FingerprintFound(int index); void PuidFound(int index, const QString& puid); void TagsFetched(int index, const MusicBrainzClient::ResultList& result); -private: + private: static QString GetFingerprint(const Song& song); QFutureWatcher* fingerprint_watcher_; @@ -60,4 +60,4 @@ private: SongList songs_; }; -#endif // TAGFETCHER_H +#endif // TAGFETCHER_H diff --git a/src/networkremote/avahi.cpp b/src/networkremote/avahi.cpp index f30e0e0bf..d126aa2a4 100644 --- a/src/networkremote/avahi.cpp +++ b/src/networkremote/avahi.cpp @@ -9,65 +9,45 @@ namespace { -void AddService( - const QString domain, - const QString type, - const QByteArray name, - quint16 port, - QDBusPendingReply path_reply); +void AddService(const QString domain, const QString type, const QByteArray name, + quint16 port, QDBusPendingReply path_reply); void Commit(OrgFreedesktopAvahiEntryGroupInterface* interface); void LogCommit(QDBusPendingReply<> reply); } // namespace -void Avahi::PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port) { +void Avahi::PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port) { OrgFreedesktopAvahiServerInterface server_interface( - "org.freedesktop.Avahi", - "/", - QDBusConnection::systemBus()); + "org.freedesktop.Avahi", "/", QDBusConnection::systemBus()); QDBusPendingReply reply = server_interface.EntryGroupNew(); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply); - NewClosure( - watcher, - SIGNAL(finished(QDBusPendingCallWatcher*)), - &AddService, - domain, type, name, port, reply); - QObject::connect( - watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - watcher, SLOT(deleteLater())); + NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), &AddService, + domain, type, name, port, reply); + QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), watcher, + SLOT(deleteLater())); } namespace { -void AddService( - const QString domain, - const QString type, - const QByteArray name, - quint16 port, - QDBusPendingReply path_reply) { +void AddService(const QString domain, const QString type, const QByteArray name, + quint16 port, QDBusPendingReply path_reply) { if (path_reply.isError()) { - qLog(Warning) - << "Failed to create Avahi entry group:" - << path_reply.error(); - qLog(Info) - << "This might be because 'disable-user-service-publishing'" - << "is set to 'yes' in avahi-daemon.conf"; + qLog(Warning) << "Failed to create Avahi entry group:" + << path_reply.error(); + qLog(Info) << "This might be because 'disable-user-service-publishing'" + << "is set to 'yes' in avahi-daemon.conf"; return; } qLog(Debug) << path_reply.error(); OrgFreedesktopAvahiEntryGroupInterface* entry_group_interface = - new OrgFreedesktopAvahiEntryGroupInterface( - "org.freedesktop.Avahi", - path_reply.value().path(), - QDBusConnection::systemBus()); + new OrgFreedesktopAvahiEntryGroupInterface("org.freedesktop.Avahi", + path_reply.value().path(), + QDBusConnection::systemBus()); QDBusPendingReply<> reply = entry_group_interface->AddService( - -1, // Interface (all) - -1, // Protocol (v4 & v6) - 0, // Flags + -1, // Interface (all) + -1, // Protocol (v4 & v6) + 0, // Flags // Service name, eg. Clementine QString::fromUtf8(name.constData(), name.size()), type, // Service type, eg. _clementine._tcp @@ -76,31 +56,22 @@ void AddService( port, // Port our service is running on QList()); // TXT record QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply); - NewClosure( - watcher, - SIGNAL(finished(QDBusPendingCallWatcher*)), - &Commit, - entry_group_interface); + NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), &Commit, + entry_group_interface); - QObject::connect( - watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - watcher, SLOT(deleteLater())); + QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), watcher, + SLOT(deleteLater())); } void Commit(OrgFreedesktopAvahiEntryGroupInterface* interface) { QDBusPendingReply<> reply = interface->Commit(); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply); - QObject::connect( - watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - watcher, SLOT(deleteLater())); - QObject::connect( - watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - interface, SLOT(deleteLater())); - NewClosure( - watcher, - SIGNAL(finished(QDBusPendingCallWatcher*)), - &LogCommit, - reply); + QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), watcher, + SLOT(deleteLater())); + QObject::connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), + interface, SLOT(deleteLater())); + NewClosure(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), &LogCommit, + reply); } void LogCommit(QDBusPendingReply<> reply) { @@ -108,4 +79,3 @@ void LogCommit(QDBusPendingReply<> reply) { } } // namespace - diff --git a/src/networkremote/avahi.h b/src/networkremote/avahi.h index c53b0aa90..d36f7f346 100644 --- a/src/networkremote/avahi.h +++ b/src/networkremote/avahi.h @@ -5,11 +5,8 @@ class Avahi : public Zeroconf { protected: - virtual void PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port); + virtual void PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port); }; #endif // AVAHI_H diff --git a/src/networkremote/bonjour.h b/src/networkremote/bonjour.h index 450ab61ac..49c8f9f41 100644 --- a/src/networkremote/bonjour.h +++ b/src/networkremote/bonjour.h @@ -15,11 +15,8 @@ class Bonjour : public Zeroconf { virtual ~Bonjour(); protected: - virtual void PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port); + virtual void PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port); private: NetServicePublicationDelegate* delegate_; diff --git a/src/networkremote/incomingdataparser.cpp b/src/networkremote/incomingdataparser.cpp index 83af30466..8cc9a0b66 100644 --- a/src/networkremote/incomingdataparser.cpp +++ b/src/networkremote/incomingdataparser.cpp @@ -27,39 +27,30 @@ #include "playlist/playlist.h" #ifdef HAVE_LIBLASTFM -# include "internet/lastfmservice.h" +#include "internet/lastfmservice.h" #endif -IncomingDataParser::IncomingDataParser(Application* app) - :app_(app) -{ +IncomingDataParser::IncomingDataParser(Application* app) : app_(app) { // Connect all the signals - // due the player is in a different thread, we cannot access these functions directly - connect(this, SIGNAL(Play()), - app_->player(), SLOT(Play())); - connect(this, SIGNAL(PlayPause()), - app_->player(), SLOT(PlayPause())); - connect(this, SIGNAL(Pause()), - app_->player(), SLOT(Pause())); - connect(this, SIGNAL(Stop()), - app_->player(), SLOT(Stop())); - connect(this, SIGNAL(StopAfterCurrent()), - app_->player(), SLOT(StopAfterCurrent())); - connect(this, SIGNAL(Next()), - app_->player(), SLOT(Next())); - connect(this, SIGNAL(Previous()), - app_->player(), SLOT(Previous())); - connect(this, SIGNAL(SetVolume(int)), - app_->player(), SLOT(SetVolume(int))); - connect(this, SIGNAL(PlayAt(int,Engine::TrackChangeFlags,bool)), - app_->player(), SLOT(PlayAt(int,Engine::TrackChangeFlags,bool))); - connect(this, SIGNAL(SeekTo(int)), - app_->player(), SLOT(SeekTo(int))); + // due the player is in a different thread, we cannot access these functions + // directly + connect(this, SIGNAL(Play()), app_->player(), SLOT(Play())); + connect(this, SIGNAL(PlayPause()), app_->player(), SLOT(PlayPause())); + connect(this, SIGNAL(Pause()), app_->player(), SLOT(Pause())); + connect(this, SIGNAL(Stop()), app_->player(), SLOT(Stop())); + connect(this, SIGNAL(StopAfterCurrent()), app_->player(), + SLOT(StopAfterCurrent())); + connect(this, SIGNAL(Next()), app_->player(), SLOT(Next())); + connect(this, SIGNAL(Previous()), app_->player(), SLOT(Previous())); + connect(this, SIGNAL(SetVolume(int)), app_->player(), SLOT(SetVolume(int))); + connect(this, SIGNAL(PlayAt(int, Engine::TrackChangeFlags, bool)), + app_->player(), SLOT(PlayAt(int, Engine::TrackChangeFlags, bool))); + connect(this, SIGNAL(SeekTo(int)), app_->player(), SLOT(SeekTo(int))); - connect(this, SIGNAL(SetActivePlaylist(int)), - app_->playlist_manager(), SLOT(SetActivePlaylist(int))); - connect(this, SIGNAL(ShuffleCurrent()), - app_->playlist_manager(), SLOT(ShuffleCurrent())); + connect(this, SIGNAL(SetActivePlaylist(int)), app_->playlist_manager(), + SLOT(SetActivePlaylist(int))); + connect(this, SIGNAL(ShuffleCurrent()), app_->playlist_manager(), + SLOT(ShuffleCurrent())); connect(this, SIGNAL(SetRepeatMode(PlaylistSequence::RepeatMode)), app_->playlist_manager()->sequence(), SLOT(SetRepeatMode(PlaylistSequence::RepeatMode))); @@ -72,31 +63,23 @@ IncomingDataParser::IncomingDataParser(Application* app) connect(this, SIGNAL(RemoveSongs(int, const QList&)), app_->playlist_manager(), SLOT(RemoveItemsWithoutUndo(int, const QList&))); - connect(this, SIGNAL(Open(int)), - app_->playlist_manager(), SLOT(Open(int))); - connect(this, SIGNAL(Close(int)), - app_->playlist_manager(), SLOT(Close(int))); + connect(this, SIGNAL(Open(int)), app_->playlist_manager(), SLOT(Open(int))); + connect(this, SIGNAL(Close(int)), app_->playlist_manager(), SLOT(Close(int))); - connect(this, SIGNAL(RateCurrentSong(double)), - app_->playlist_manager(), SLOT(RateCurrentSong(double))); + connect(this, SIGNAL(RateCurrentSong(double)), app_->playlist_manager(), + SLOT(RateCurrentSong(double))); #ifdef HAVE_LIBLASTFM - connect(this, SIGNAL(Love()), - InternetModel::Service(), SLOT(Love())); - connect(this, SIGNAL(Ban()), - InternetModel::Service(), SLOT(Ban())); + connect(this, SIGNAL(Love()), app_->scrobbler(), SLOT(Love())); #endif } -IncomingDataParser::~IncomingDataParser() { -} +IncomingDataParser::~IncomingDataParser() {} -bool IncomingDataParser::close_connection() { - return close_connection_; -} +bool IncomingDataParser::close_connection() { return close_connection_; } void IncomingDataParser::Parse(const pb::remote::Message& msg) { - close_connection_ = false; + close_connection_ = false; RemoteClient* client = qobject_cast(sender()); @@ -186,7 +169,8 @@ void IncomingDataParser::Parse(const pb::remote::Message& msg) { case pb::remote::RATE_SONG: RateSong(msg); break; - default: break; + default: + break; } } @@ -221,7 +205,8 @@ void IncomingDataParser::SetRepeatMode(const pb::remote::Repeat& repeat) { case pb::remote::Repeat_Playlist: emit SetRepeatMode(PlaylistSequence::Repeat_Playlist); break; - default: break; + default: + break; } } @@ -239,7 +224,8 @@ void IncomingDataParser::SetShuffleMode(const pb::remote::Shuffle& shuffle) { case pb::remote::Shuffle_Albums: emit SetShuffleMode(PlaylistSequence::Shuffle_Albums); break; - default: break; + default: + break; } } @@ -259,50 +245,49 @@ void IncomingDataParser::InsertUrls(const pb::remote::Message& msg) { } void IncomingDataParser::RemoveSongs(const pb::remote::Message& msg) { - const pb::remote::RequestRemoveSongs& request = msg.request_remove_songs(); + const pb::remote::RequestRemoveSongs& request = msg.request_remove_songs(); - // Extract urls - QList songs; - for (int i = 0; i songs; + for (int i = 0; i < request.songs().size(); i++) { + songs.append(request.songs(i)); + } - // Insert the urls - emit RemoveSongs(request.playlist_id(), songs); + // Insert the urls + emit RemoveSongs(request.playlist_id(), songs); } void IncomingDataParser::ClientConnect(const pb::remote::Message& msg) { - // Always sned the Clementine infos emit SendClementineInfo(); // Check if we should send the first data - if (!msg.request_connect().has_send_playlist_songs() // legacy - || msg.request_connect().send_playlist_songs()) { + if (!msg.request_connect().has_send_playlist_songs() // legacy + || msg.request_connect().send_playlist_songs()) { emit SendFirstData(true); } else { emit SendFirstData(false); } } -void IncomingDataParser::SendPlaylists(const pb::remote::Message &msg) { - if (!msg.has_request_playlists() - || !msg.request_playlists().include_closed()) { +void IncomingDataParser::SendPlaylists(const pb::remote::Message& msg) { + if (!msg.has_request_playlists() || + !msg.request_playlists().include_closed()) { emit SendAllActivePlaylists(); } else { emit SendAllPlaylists(); } } -void IncomingDataParser::OpenPlaylist(const pb::remote::Message &msg) { +void IncomingDataParser::OpenPlaylist(const pb::remote::Message& msg) { emit Open(msg.request_open_playlist().playlist_id()); } -void IncomingDataParser::ClosePlaylist(const pb::remote::Message &msg) { +void IncomingDataParser::ClosePlaylist(const pb::remote::Message& msg) { emit Close(msg.request_close_playlist().playlist_id()); } -void IncomingDataParser::RateSong(const pb::remote::Message &msg) { - double rating = (double) msg.request_rate_song().rating(); +void IncomingDataParser::RateSong(const pb::remote::Message& msg) { + double rating = (double)msg.request_rate_song().rating(); emit RateCurrentSong(rating); } diff --git a/src/networkremote/incomingdataparser.h b/src/networkremote/incomingdataparser.h index 285c97e6a..47cd4e94d 100644 --- a/src/networkremote/incomingdataparser.h +++ b/src/networkremote/incomingdataparser.h @@ -8,13 +8,13 @@ class IncomingDataParser : public QObject { Q_OBJECT -public: + public: IncomingDataParser(Application* app); ~IncomingDataParser(); bool close_connection(); -public slots: + public slots: void Parse(const pb::remote::Message& msg); signals: @@ -42,15 +42,17 @@ signals: void ShuffleCurrent(); void SetRepeatMode(PlaylistSequence::RepeatMode mode); void SetShuffleMode(PlaylistSequence::ShuffleMode mode); - void InsertUrls(int id, const QList& urls, int pos, bool play_now, bool enqueue); + void InsertUrls(int id, const QList& urls, int pos, bool play_now, + bool enqueue); void RemoveSongs(int id, const QList& indices); void SeekTo(int seconds); - void SendSongs(const pb::remote::RequestDownloadSongs& request, RemoteClient* client); + void SendSongs(const pb::remote::RequestDownloadSongs& request, + RemoteClient* client); void ResponseSongOffer(RemoteClient* client, bool accepted); void SendLibrary(RemoteClient* client); void RateCurrentSong(double); -private: + private: Application* app_; bool close_connection_; @@ -67,4 +69,4 @@ private: void RateSong(const pb::remote::Message& msg); }; -#endif // INCOMINGDATAPARSER_H +#endif // INCOMINGDATAPARSER_H diff --git a/src/networkremote/networkremote.cpp b/src/networkremote/networkremote.cpp index 38aa955fd..2f211d719 100644 --- a/src/networkremote/networkremote.cpp +++ b/src/networkremote/networkremote.cpp @@ -31,22 +31,16 @@ const char* NetworkRemote::kSettingsGroup = "NetworkRemote"; const quint16 NetworkRemote::kDefaultServerPort = 5500; NetworkRemote::NetworkRemote(Application* app, QObject* parent) - : QObject(parent), - signals_connected_(false), - app_(app) { -} + : QObject(parent), signals_connected_(false), app_(app) {} - -NetworkRemote::~NetworkRemote() { - StopServer(); -} +NetworkRemote::~NetworkRemote() { StopServer(); } void NetworkRemote::ReadSettings() { QSettings s; s.beginGroup(NetworkRemote::kSettingsGroup); use_remote_ = s.value("use_remote", false).toBool(); - port_ = s.value("port", kDefaultServerPort).toInt(); + port_ = s.value("port", kDefaultServerPort).toInt(); // Use only non public ips must be true be default only_non_public_ip_ = s.value("only_non_public_ip", true).toBool(); @@ -68,8 +62,10 @@ void NetworkRemote::SetupServer() { SLOT(CurrentSongChanged(const Song&, const QString&, const QImage&))); // Only connect the signals once - connect(server_.get(), SIGNAL(newConnection()), this, SLOT(AcceptConnection())); - connect(server_ipv6_.get(), SIGNAL(newConnection()), this, SLOT(AcceptConnection())); + connect(server_.get(), SIGNAL(newConnection()), this, + SLOT(AcceptConnection())); + connect(server_ipv6_.get(), SIGNAL(newConnection()), this, + SLOT(AcceptConnection())); } void NetworkRemote::StartServer() { @@ -96,8 +92,7 @@ void NetworkRemote::StartServer() { if (Zeroconf::GetZeroconf()) { QString name = QString("Clementine on %1").arg(QHostInfo::localHostName()); - Zeroconf::GetZeroconf()->Publish( - "local", "_clementine._tcp", name, port_); + Zeroconf::GetZeroconf()->Publish("local", "_clementine._tcp", name, port_); } } @@ -136,17 +131,18 @@ void NetworkRemote::AcceptConnection() { outgoing_data_creator_.get(), SLOT(ActiveChanged(Playlist*))); connect(app_->playlist_manager(), SIGNAL(PlaylistChanged(Playlist*)), outgoing_data_creator_.get(), SLOT(PlaylistChanged(Playlist*))); - connect(app_->playlist_manager(), SIGNAL(PlaylistAdded(int,QString,bool)), - outgoing_data_creator_.get(), SLOT(PlaylistAdded(int,QString,bool))); - connect(app_->playlist_manager(), SIGNAL(PlaylistRenamed(int,QString)), - outgoing_data_creator_.get(), SLOT(PlaylistRenamed(int,QString))); + connect(app_->playlist_manager(), SIGNAL(PlaylistAdded(int, QString, bool)), + outgoing_data_creator_.get(), + SLOT(PlaylistAdded(int, QString, bool))); + connect(app_->playlist_manager(), SIGNAL(PlaylistRenamed(int, QString)), + outgoing_data_creator_.get(), SLOT(PlaylistRenamed(int, QString))); connect(app_->playlist_manager(), SIGNAL(PlaylistClosed(int)), outgoing_data_creator_.get(), SLOT(PlaylistClosed(int))); connect(app_->playlist_manager(), SIGNAL(PlaylistDeleted(int)), outgoing_data_creator_.get(), SLOT(PlaylistDeleted(int))); - connect(app_->player(), SIGNAL(VolumeChanged(int)), outgoing_data_creator_.get(), - SLOT(VolumeChanged(int))); + connect(app_->player(), SIGNAL(VolumeChanged(int)), + outgoing_data_creator_.get(), SLOT(VolumeChanged(int))); connect(app_->player()->engine(), SIGNAL(StateChanged(Engine::State)), outgoing_data_creator_.get(), SLOT(StateChanged(Engine::State))); @@ -163,26 +159,24 @@ void NetworkRemote::AcceptConnection() { outgoing_data_creator_.get(), SLOT(GetLyrics())); connect(incoming_data_parser_.get(), - SIGNAL(SendSongs(pb::remote::RequestDownloadSongs,RemoteClient*)), + SIGNAL(SendSongs(pb::remote::RequestDownloadSongs, RemoteClient*)), outgoing_data_creator_.get(), - SLOT(SendSongs(pb::remote::RequestDownloadSongs,RemoteClient*))); + SLOT(SendSongs(pb::remote::RequestDownloadSongs, RemoteClient*))); connect(incoming_data_parser_.get(), SIGNAL(ResponseSongOffer(RemoteClient*, bool)), outgoing_data_creator_.get(), SLOT(ResponseSongOffer(RemoteClient*, bool))); - connect(incoming_data_parser_.get(), - SIGNAL(SendLibrary(RemoteClient*)), - outgoing_data_creator_.get(), - SLOT(SendLibrary(RemoteClient*))); + connect(incoming_data_parser_.get(), SIGNAL(SendLibrary(RemoteClient*)), + outgoing_data_creator_.get(), SLOT(SendLibrary(RemoteClient*))); } QTcpServer* server = qobject_cast(sender()); QTcpSocket* client_socket = server->nextPendingConnection(); // Check if our ip is in private scope if (only_non_public_ip_ && !IpIsPrivate(client_socket->peerAddress())) { - qLog(Info) << "Got a connection from public ip" << - client_socket->peerAddress().toString(); + qLog(Info) << "Got a connection from public ip" + << client_socket->peerAddress().toString(); client_socket->close(); } else { CreateRemoteClient(client_socket); @@ -219,11 +213,9 @@ void NetworkRemote::CreateRemoteClient(QTcpSocket* client_socket) { } void NetworkRemote::EnableKittens(bool aww) { - if (outgoing_data_creator_.get()) - outgoing_data_creator_->EnableKittens(aww); + if (outgoing_data_creator_.get()) outgoing_data_creator_->EnableKittens(aww); } -void NetworkRemote::SendKitten(quint64 id, const QImage &kitten) { - if (outgoing_data_creator_.get()) - outgoing_data_creator_->SendKitten(kitten); +void NetworkRemote::SendKitten(quint64 id, const QImage& kitten) { + if (outgoing_data_creator_.get()) outgoing_data_creator_->SendKitten(kitten); } diff --git a/src/networkremote/networkremote.h b/src/networkremote/networkremote.h index 5de164eb3..ba455bc23 100644 --- a/src/networkremote/networkremote.h +++ b/src/networkremote/networkremote.h @@ -1,7 +1,7 @@ #ifndef NETWORKREMOTE_H #define NETWORKREMOTE_H -#include +#include #include #include @@ -13,15 +13,15 @@ #include "remoteclient.h" class NetworkRemote : public QObject { - Q_OBJECT -public: + Q_OBJECT + public: static const char* kSettingsGroup; static const quint16 kDefaultServerPort; - explicit NetworkRemote(Application* app, QObject* parent = 0); + explicit NetworkRemote(Application* app, QObject* parent = nullptr); ~NetworkRemote(); -public slots: + public slots: void SetupServer(); void StartServer(); void ReloadSettings(); @@ -29,11 +29,11 @@ public slots: void EnableKittens(bool aww); void SendKitten(quint64 id, const QImage& kitten); -private: - boost::scoped_ptr server_; - boost::scoped_ptr server_ipv6_; - boost::scoped_ptr incoming_data_parser_; - boost::scoped_ptr outgoing_data_creator_; + private: + std::unique_ptr server_; + std::unique_ptr server_ipv6_; + std::unique_ptr incoming_data_parser_; + std::unique_ptr outgoing_data_creator_; quint16 port_; bool use_remote_; @@ -49,4 +49,4 @@ private: bool IpIsPrivate(const QHostAddress& address); }; -#endif // NETWORKREMOTE_H +#endif // NETWORKREMOTE_H diff --git a/src/networkremote/networkremotehelper.cpp b/src/networkremote/networkremotehelper.cpp index 27a5a63ac..6c7496555 100644 --- a/src/networkremote/networkremotehelper.cpp +++ b/src/networkremote/networkremotehelper.cpp @@ -20,43 +20,38 @@ #include "networkremote.h" #include "networkremotehelper.h" -NetworkRemoteHelper* NetworkRemoteHelper::sInstance = NULL; +NetworkRemoteHelper* NetworkRemoteHelper::sInstance = nullptr; -NetworkRemoteHelper::NetworkRemoteHelper(Application* app) - : app_(app) -{ +NetworkRemoteHelper::NetworkRemoteHelper(Application* app) : app_(app) { app_ = app; - connect(this, SIGNAL(ReloadSettingsSig()), - app_->network_remote(), SLOT(ReloadSettings())); - connect(this, SIGNAL(StartServerSig()), - app_->network_remote(), SLOT(StartServer())); - connect(this, SIGNAL(SetupServerSig()), - app_->network_remote(), SLOT(SetupServer())); + connect(this, SIGNAL(ReloadSettingsSig()), app_->network_remote(), + SLOT(ReloadSettings())); + connect(this, SIGNAL(StartServerSig()), app_->network_remote(), + SLOT(StartServer())); + connect(this, SIGNAL(SetupServerSig()), app_->network_remote(), + SLOT(SetupServer())); // Start the server once the playlistmanager is initialized - connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), - this, SLOT(StartServer())); + connect(app_->playlist_manager(), SIGNAL(PlaylistManagerInitialized()), this, + SLOT(StartServer())); sInstance = this; } -NetworkRemoteHelper::~NetworkRemoteHelper() { -} +NetworkRemoteHelper::~NetworkRemoteHelper() {} void NetworkRemoteHelper::StartServer() { emit SetupServerSig(); emit StartServerSig(); } -void NetworkRemoteHelper::ReloadSettings() { - emit ReloadSettingsSig(); -} +void NetworkRemoteHelper::ReloadSettings() { emit ReloadSettingsSig(); } // For using in Settingsdialog, we haven't the appication there NetworkRemoteHelper* NetworkRemoteHelper::Instance() { if (!sInstance) { // normally he shouldn't go here. Only for safety - return NULL; + return nullptr; } return sInstance; } diff --git a/src/networkremote/networkremotehelper.h b/src/networkremote/networkremotehelper.h index 3c0943f9d..8bb36efee 100644 --- a/src/networkremote/networkremotehelper.h +++ b/src/networkremote/networkremotehelper.h @@ -6,8 +6,8 @@ #include "networkremote.h" class NetworkRemoteHelper : public QObject { - Q_OBJECT -public: + Q_OBJECT + public: static NetworkRemoteHelper* Instance(); NetworkRemoteHelper(Application* app); @@ -15,7 +15,7 @@ public: void ReloadSettings(); -private slots: + private slots: void StartServer(); signals: @@ -23,9 +23,9 @@ signals: void StartServerSig(); void ReloadSettingsSig(); -private: + private: static NetworkRemoteHelper* sInstance; Application* app_; }; -#endif // NETWORKREMOTEHELPER_H +#endif // NETWORKREMOTEHELPER_H diff --git a/src/networkremote/outgoingdatacreator.cpp b/src/networkremote/outgoingdatacreator.cpp index c99fe0c2c..3dac89eaf 100644 --- a/src/networkremote/outgoingdatacreator.cpp +++ b/src/networkremote/outgoingdatacreator.cpp @@ -29,22 +29,20 @@ #include #include "core/database.h" -const quint32 OutgoingDataCreator::kFileChunkSize = 100000; // in Bytes +const quint32 OutgoingDataCreator::kFileChunkSize = 100000; // in Bytes OutgoingDataCreator::OutgoingDataCreator(Application* app) - : app_(app), - aww_(false), - ultimate_reader_(new UltimateLyricsReader(this)), - fetcher_(new SongInfoFetcher(this)) -{ + : app_(app), + aww_(false), + ultimate_reader_(new UltimateLyricsReader(this)), + fetcher_(new SongInfoFetcher(this)) { // Create Keep Alive Timer keep_alive_timer_ = new QTimer(this); connect(keep_alive_timer_, SIGNAL(timeout()), this, SLOT(SendKeepAlive())); keep_alive_timeout_ = 10000; } -OutgoingDataCreator::~OutgoingDataCreator() { -} +OutgoingDataCreator::~OutgoingDataCreator() {} void OutgoingDataCreator::SetClients(QList* clients) { clients_ = clients; @@ -54,17 +52,18 @@ void OutgoingDataCreator::SetClients(QList* clients) { // Create the song position timer track_position_timer_ = new QTimer(this); - connect(track_position_timer_, SIGNAL(timeout()), this, SLOT(UpdateTrackPosition())); + connect(track_position_timer_, SIGNAL(timeout()), this, + SLOT(UpdateTrackPosition())); // Parse the ultimate lyrics xml file ultimate_reader_->SetThread(this->thread()); provider_list_ = ultimate_reader_->Parse(":lyrics/ultimate_providers.xml"); // Set up the lyrics parser - connect(fetcher_, SIGNAL(ResultReady(int,SongInfoFetcher::Result)), - SLOT(SendLyrics(int,SongInfoFetcher::Result))); + connect(fetcher_, SIGNAL(ResultReady(int, SongInfoFetcher::Result)), + SLOT(SendLyrics(int, SongInfoFetcher::Result))); - foreach (SongInfoProvider* provider, provider_list_) { + for (SongInfoProvider* provider : provider_list_) { fetcher_->AddProvider(provider); } @@ -99,35 +98,37 @@ void OutgoingDataCreator::CheckEnabledProviders() { << "darklyrics.com"; QVariant saved_order = s.value("search_order", default_order); - foreach (const QVariant& name, saved_order.toList()) { + for (const QVariant& name : saved_order.toList()) { SongInfoProvider* provider = ProviderByName(name.toString()); - if (provider) - ordered_providers << provider; + if (provider) ordered_providers << provider; } // Enable all the providers in the list and rank them int relevance = 100; - foreach (SongInfoProvider* provider, ordered_providers) { + for (SongInfoProvider* provider : ordered_providers) { provider->set_enabled(true); qobject_cast(provider)->set_relevance(relevance--); } - // Any lyric providers we don't have in ordered_providers are considered disabled - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (qobject_cast(provider) && !ordered_providers.contains(provider)) { + // Any lyric providers we don't have in ordered_providers are considered + // disabled + for (SongInfoProvider* provider : fetcher_->providers()) { + if (qobject_cast(provider) && + !ordered_providers.contains(provider)) { provider->set_enabled(false); } } } -SongInfoProvider* OutgoingDataCreator::ProviderByName(const QString& name) const { - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (UltimateLyricsProvider* lyrics = qobject_cast(provider)) { - if (lyrics->name() == name) - return provider; +SongInfoProvider* OutgoingDataCreator::ProviderByName(const QString& name) + const { + for (SongInfoProvider* provider : fetcher_->providers()) { + if (UltimateLyricsProvider* lyrics = + qobject_cast(provider)) { + if (lyrics->name() == name) return provider; } } - return NULL; + return nullptr; } void OutgoingDataCreator::SendDataToClients(pb::remote::Message* msg) { @@ -136,8 +137,7 @@ void OutgoingDataCreator::SendDataToClients(pb::remote::Message* msg) { return; } - RemoteClient* client; - foreach(client, *clients_) { + for (RemoteClient* client : *clients_) { // Do not send data to downloaders if (client->isDownloader()) { if (client->State() != QTcpSocket::ConnectedState) { @@ -168,22 +168,29 @@ void OutgoingDataCreator::SendClementineInfo() { msg.mutable_response_clementine_info(); SetEngineState(info); - QString version = QString("%1 %2").arg(QCoreApplication::applicationName(), - QCoreApplication::applicationVersion()); + QString version = + QString("%1 %2").arg(QCoreApplication::applicationName(), + QCoreApplication::applicationVersion()); info->set_version(version.toAscii()); SendDataToClients(&msg); } -void OutgoingDataCreator::SetEngineState(pb::remote::ResponseClementineInfo* msg) { - switch(app_->player()->GetState()) { - case Engine::Idle: msg->set_state(pb::remote::Idle); - break; - case Engine::Empty: msg->set_state(pb::remote::Empty); - break; - case Engine::Playing: msg->set_state(pb::remote::Playing); - break; - case Engine::Paused: msg->set_state(pb::remote::Paused); - break; +void OutgoingDataCreator::SetEngineState( + pb::remote::ResponseClementineInfo* msg) { + switch (app_->player()->GetState()) { + case Engine::Idle: + msg->set_state(pb::remote::Idle); + break; + case Engine::Error: + case Engine::Empty: + msg->set_state(pb::remote::Empty); + break; + case Engine::Playing: + msg->set_state(pb::remote::Playing); + break; + case Engine::Paused: + msg->set_state(pb::remote::Paused); + break; } } @@ -199,11 +206,10 @@ void OutgoingDataCreator::SendAllPlaylists() { pb::remote::ResponsePlaylists* playlists = msg.mutable_response_playlists(); // Get all playlists, even ones that are hidden in the UI. - foreach (const PlaylistBackend::Playlist& p, - app_->playlist_backend()->GetAllPlaylists()) { + for (const PlaylistBackend::Playlist& p : + app_->playlist_backend()->GetAllPlaylists()) { bool playlist_open = app_->playlist_manager()->IsPlaylistOpen(p.id); - int item_count = playlist_open ? - app_playlists.at(p.id)->rowCount() : 0; + int item_count = playlist_open ? app_playlists.at(p.id)->rowCount() : 0; // Create a new playlist pb::remote::Playlist* playlist = playlists->add_playlist(); @@ -229,7 +235,7 @@ void OutgoingDataCreator::SendAllActivePlaylists() { pb::remote::ResponsePlaylists* playlists = msg.mutable_response_playlists(); QListIterator it(app_playlists); - while(it.hasNext()) { + while (it.hasNext()) { // Get the next Playlist Playlist* p = it.next(); QString playlist_name = app_->playlist_manager()->GetPlaylistName(p->id()); @@ -257,17 +263,14 @@ void OutgoingDataCreator::ActiveChanged(Playlist* playlist) { SendDataToClients(&msg); } -void OutgoingDataCreator::PlaylistAdded(int id, const QString& name, bool favorite) { +void OutgoingDataCreator::PlaylistAdded(int id, const QString& name, + bool favorite) { SendAllActivePlaylists(); } -void OutgoingDataCreator::PlaylistDeleted(int id) { - SendAllActivePlaylists(); -} +void OutgoingDataCreator::PlaylistDeleted(int id) { SendAllActivePlaylists(); } -void OutgoingDataCreator::PlaylistClosed(int id) { - SendAllActivePlaylists(); -} +void OutgoingDataCreator::PlaylistClosed(int id) { SendAllActivePlaylists(); } void OutgoingDataCreator::PlaylistRenamed(int id, const QString& new_name) { SendAllActivePlaylists(); @@ -312,9 +315,11 @@ void OutgoingDataCreator::SendFirstData(bool send_playlist_songs) { SendDataToClients(&msg); } -void OutgoingDataCreator::CurrentSongChanged(const Song& song, const QString& uri, const QImage& img) { - current_song_ = song; - current_uri_ = uri; +void OutgoingDataCreator::CurrentSongChanged(const Song& song, + const QString& uri, + const QImage& img) { + current_song_ = song; + current_uri_ = uri; if (!aww_) { current_image_ = img; @@ -330,27 +335,26 @@ void OutgoingDataCreator::SendSongMetadata() { // If there is no song, create an empty node, otherwise fill it with data int i = app_->playlist_manager()->active()->current_row(); - CreateSong( - current_song_, current_image_, i, - msg.mutable_response_current_metadata()->mutable_song_metadata()); + CreateSong(current_song_, current_image_, i, + msg.mutable_response_current_metadata()->mutable_song_metadata()); SendDataToClients(&msg); } -void OutgoingDataCreator::CreateSong( - const Song& song, - const QImage& art, - const int index, - pb::remote::SongMetadata* song_metadata) { +void OutgoingDataCreator::CreateSong(const Song& song, const QImage& art, + const int index, + pb::remote::SongMetadata* song_metadata) { if (song.is_valid()) { song_metadata->set_id(song.id()); song_metadata->set_index(index); song_metadata->set_title(DataCommaSizeFromQString(song.PrettyTitle())); song_metadata->set_artist(DataCommaSizeFromQString(song.artist())); song_metadata->set_album(DataCommaSizeFromQString(song.album())); - song_metadata->set_albumartist(DataCommaSizeFromQString(song.albumartist())); + song_metadata->set_albumartist( + DataCommaSizeFromQString(song.albumartist())); song_metadata->set_length(song.length_nanosec() / kNsecPerSec); - song_metadata->set_pretty_length(DataCommaSizeFromQString(song.PrettyLength())); + song_metadata->set_pretty_length( + DataCommaSizeFromQString(song.PrettyLength())); song_metadata->set_genre(DataCommaSizeFromQString(song.genre())); song_metadata->set_pretty_year(DataCommaSizeFromQString(song.PrettyYear())); song_metadata->set_track(song.track()); @@ -383,7 +387,6 @@ void OutgoingDataCreator::CreateSong( } } - void OutgoingDataCreator::VolumeChanged(int volume) { // Create the message pb::remote::Message msg; @@ -395,7 +398,7 @@ void OutgoingDataCreator::VolumeChanged(int volume) { void OutgoingDataCreator::SendPlaylistSongs(int id) { // Get the PlaylistQByteArray(data.data(), data.size() Playlist* playlist = app_->playlist_manager()->playlist(id); - if(!playlist) { + if (!playlist) { qLog(Info) << "Could not find playlist with id = " << id; return; } @@ -406,7 +409,7 @@ void OutgoingDataCreator::SendPlaylistSongs(int id) { // Create the Response message pb::remote::ResponsePlaylistSongs* pb_response_playlist_songs = - msg.mutable_response_playlist_songs(); + msg.mutable_response_playlist_songs(); // Create a new playlist pb::remote::Playlist* pb_playlist = @@ -418,8 +421,8 @@ void OutgoingDataCreator::SendPlaylistSongs(int id) { SongList song_list = playlist->GetAllSongs(); QListIterator it(song_list); QImage null_img; - while(it.hasNext()) { - Song song = it.next(); + while (it.hasNext()) { + Song song = it.next(); pb::remote::SongMetadata* pb_song = pb_response_playlist_songs->add_songs(); CreateSong(song, null_img, index, pb_song); ++index; @@ -444,18 +447,22 @@ void OutgoingDataCreator::StateChanged(Engine::State state) { pb::remote::Message msg; switch (state) { - case Engine::Playing: msg.set_type(pb::remote::PLAY); - track_position_timer_->start(1000); - break; - case Engine::Paused: msg.set_type(pb::remote::PAUSE); - track_position_timer_->stop(); - break; - case Engine::Empty: msg.set_type(pb::remote::STOP); // Empty is called when player stopped - track_position_timer_->stop(); - break; - default: msg.set_type(pb::remote::STOP); - track_position_timer_->stop(); - break; + case Engine::Playing: + msg.set_type(pb::remote::PLAY); + track_position_timer_->start(1000); + break; + case Engine::Paused: + msg.set_type(pb::remote::PAUSE); + track_position_timer_->stop(); + break; + case Engine::Empty: + msg.set_type(pb::remote::STOP); // Empty is called when player stopped + track_position_timer_->stop(); + break; + default: + msg.set_type(pb::remote::STOP); + track_position_timer_->stop(); + break; }; SendDataToClients(&msg); @@ -466,18 +473,18 @@ void OutgoingDataCreator::SendRepeatMode(PlaylistSequence::RepeatMode mode) { msg.set_type(pb::remote::REPEAT); switch (mode) { - case PlaylistSequence::Repeat_Off: - msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Off); - break; - case PlaylistSequence::Repeat_Track: - msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Track); - break; - case PlaylistSequence::Repeat_Album: - msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Album); - break; - case PlaylistSequence::Repeat_Playlist: - msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Playlist); - break; + case PlaylistSequence::Repeat_Off: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Off); + break; + case PlaylistSequence::Repeat_Track: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Track); + break; + case PlaylistSequence::Repeat_Album: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Album); + break; + case PlaylistSequence::Repeat_Playlist: + msg.mutable_repeat()->set_repeat_mode(pb::remote::Repeat_Playlist); + break; } SendDataToClients(&msg); @@ -488,18 +495,18 @@ void OutgoingDataCreator::SendShuffleMode(PlaylistSequence::ShuffleMode mode) { msg.set_type(pb::remote::SHUFFLE); switch (mode) { - case PlaylistSequence::Shuffle_Off: - msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_Off); - break; - case PlaylistSequence::Shuffle_All: - msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_All); - break; - case PlaylistSequence::Shuffle_InsideAlbum: - msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_InsideAlbum); - break; - case PlaylistSequence::Shuffle_Albums: - msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_Albums); - break; + case PlaylistSequence::Shuffle_Off: + msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_Off); + break; + case PlaylistSequence::Shuffle_All: + msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_All); + break; + case PlaylistSequence::Shuffle_InsideAlbum: + msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_InsideAlbum); + break; + case PlaylistSequence::Shuffle_Albums: + msg.mutable_shuffle()->set_shuffle_mode(pb::remote::Shuffle_Albums); + break; } SendDataToClients(&msg); @@ -516,9 +523,10 @@ void OutgoingDataCreator::UpdateTrackPosition() { msg.set_type(pb::remote::UPDATE_TRACK_POSITION); int position = std::floor( - float(app_->player()->engine()->position_nanosec()) / kNsecPerSec + 0.5); + float(app_->player()->engine()->position_nanosec()) / kNsecPerSec + 0.5); - if (app_->player()->engine()->position_nanosec() > current_song_.length_nanosec()) + if (app_->player()->engine()->position_nanosec() > + current_song_.length_nanosec()) position = last_track_position_; msg.mutable_response_update_track_position()->set_position(position); @@ -531,24 +539,24 @@ void OutgoingDataCreator::UpdateTrackPosition() { void OutgoingDataCreator::DisconnectAllClients() { pb::remote::Message msg; msg.set_type(pb::remote::DISCONNECT); - msg.mutable_response_disconnect()->set_reason_disconnect(pb::remote::Server_Shutdown); + msg.mutable_response_disconnect()->set_reason_disconnect( + pb::remote::Server_Shutdown); SendDataToClients(&msg); } -void OutgoingDataCreator::GetLyrics() { - fetcher_->FetchInfo(current_song_); -} +void OutgoingDataCreator::GetLyrics() { fetcher_->FetchInfo(current_song_); } -void OutgoingDataCreator::SendLyrics(int id, const SongInfoFetcher::Result& result) { +void OutgoingDataCreator::SendLyrics(int id, + const SongInfoFetcher::Result& result) { pb::remote::Message msg; msg.set_type(pb::remote::LYRICS); pb::remote::ResponseLyrics* response = msg.mutable_response_lyrics(); - foreach (const CollapsibleInfoPane::Data& data, result.info_) { + for (const CollapsibleInfoPane::Data& data : result.info_) { // If the size is zero, do not send the provider - UltimateLyricsLyric* editor = qobject_cast(data.content_object_); - if (editor->toPlainText().length() == 0) - continue; + UltimateLyricsLyric* editor = + qobject_cast(data.content_object_); + if (editor->toPlainText().length() == 0) continue; pb::remote::Lyric* lyric = response->mutable_lyrics()->Add(); @@ -561,36 +569,62 @@ void OutgoingDataCreator::SendLyrics(int id, const SongInfoFetcher::Result& resu results_.take(id); } -void OutgoingDataCreator::SendSongs(const pb::remote::RequestDownloadSongs &request, - RemoteClient* client) { +void OutgoingDataCreator::SendSongs( + const pb::remote::RequestDownloadSongs& request, RemoteClient* client) { if (!download_queue_.contains(client)) { - download_queue_.insert(client, QQueue() ); + download_queue_.insert(client, QQueue()); } switch (request.download_item()) { - case pb::remote::CurrentItem: { - DownloadItem item(current_song_, 1 , 1); - download_queue_[client].append(item); - break; - } - case pb::remote::ItemAlbum: - SendAlbum(client, current_song_); - break; - case pb::remote::APlaylist: - SendPlaylist(client, request.playlist_id()); - break; - default: - break; + case pb::remote::CurrentItem: { + DownloadItem item(current_song_, 1, 1); + download_queue_[client].append(item); + break; + } + case pb::remote::ItemAlbum: + SendAlbum(client, current_song_); + break; + case pb::remote::APlaylist: + SendPlaylist(client, request.playlist_id()); + break; + case pb::remote::Urls: + SendUrls(client, request); + break; + default: + break; } + // Send total file size & file count + SendTotalFileSize(client); + // Send first file OfferNextSong(client); } -void OutgoingDataCreator::OfferNextSong(RemoteClient *client) { - if (!download_queue_.contains(client)) - return; +void OutgoingDataCreator::SendTotalFileSize(RemoteClient *client) { + if (!download_queue_.contains(client)) return; + + pb::remote::Message msg; + msg.set_type(pb::remote::DOWNLOAD_TOTAL_SIZE); + + pb::remote::ResponseDownloadTotalSize* response = + msg.mutable_response_download_total_size(); + + response->set_file_count(download_queue_[client].size()); + + int total = 0; + for (DownloadItem item : download_queue_[client]) { + total += item.song_.filesize(); + } + + response->set_total_size(total); + + client->SendData(&msg); +} + +void OutgoingDataCreator::OfferNextSong(RemoteClient* client) { + if (!download_queue_.contains(client)) return; pb::remote::Message msg; @@ -602,7 +636,8 @@ void OutgoingDataCreator::OfferNextSong(RemoteClient *client) { DownloadItem item = download_queue_[client].head(); msg.set_type(pb::remote::SONG_FILE_CHUNK); - pb::remote::ResponseSongFileChunk* chunk = msg.mutable_response_song_file_chunk(); + pb::remote::ResponseSongFileChunk* chunk = + msg.mutable_response_song_file_chunk(); // Song offer is chunk no 0 chunk->set_chunk_count(0); @@ -610,19 +645,17 @@ void OutgoingDataCreator::OfferNextSong(RemoteClient *client) { chunk->set_file_count(item.song_count_); chunk->set_file_number(item.song_no_); - CreateSong(item.song_, QImage() , -1, - chunk->mutable_song_metadata()); + CreateSong(item.song_, QImage(), -1, chunk->mutable_song_metadata()); } client->SendData(&msg); } -void OutgoingDataCreator::ResponseSongOffer(RemoteClient *client, bool accepted) { - if (!download_queue_.contains(client)) - return; +void OutgoingDataCreator::ResponseSongOffer(RemoteClient* client, + bool accepted) { + if (!download_queue_.contains(client)) return; - if (download_queue_.value(client).isEmpty()) - return; + if (download_queue_.value(client).isEmpty()) return; // Get the item and send the single song DownloadItem item = download_queue_[client].dequeue(); @@ -633,11 +666,10 @@ void OutgoingDataCreator::ResponseSongOffer(RemoteClient *client, bool accepted) OfferNextSong(client); } -void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, +void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song& song, int song_no, int song_count) { // Only local files!!! - if (!(song.url().scheme() == "file")) - return; + if (!(song.url().scheme() == "file")) return; // Open the file QFile file(song.url().toLocalFile()); @@ -650,13 +682,14 @@ void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, QByteArray data; pb::remote::Message msg; - pb::remote::ResponseSongFileChunk* chunk = msg.mutable_response_song_file_chunk(); + pb::remote::ResponseSongFileChunk* chunk = + msg.mutable_response_song_file_chunk(); msg.set_type(pb::remote::SONG_FILE_CHUNK); QImage null_image; // Calculate the number of chunks - int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); + int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); int chunk_number = 1; while (!file.atEnd()) { @@ -677,8 +710,8 @@ void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, if (chunk_number == 1) { int i = app_->playlist_manager()->active()->current_row(); CreateSong( - song, null_image, i, - msg.mutable_response_song_file_chunk()->mutable_song_metadata()); + song, null_image, i, + msg.mutable_response_song_file_chunk()->mutable_song_metadata()); } // Send data directly to the client @@ -694,22 +727,21 @@ void OutgoingDataCreator::SendSingleSong(RemoteClient* client, const Song &song, file.close(); } -void OutgoingDataCreator::SendAlbum(RemoteClient *client, const Song &song) { +void OutgoingDataCreator::SendAlbum(RemoteClient* client, const Song& song) { // No streams! - if (song.url().scheme() != "file") - return; + if (song.url().scheme() != "file") return; SongList album = app_->library_backend()->GetSongsByAlbum(song.album()); - foreach (Song s, album) { - DownloadItem item(s, album.indexOf(s)+1, album.size()); + for (Song s : album) { + DownloadItem item(s, album.indexOf(s) + 1, album.size()); download_queue_[client].append(item); } } -void OutgoingDataCreator::SendPlaylist(RemoteClient *client, int playlist_id) { +void OutgoingDataCreator::SendPlaylist(RemoteClient* client, int playlist_id) { Playlist* playlist = app_->playlist_manager()->playlist(playlist_id); - if(!playlist) { + if (!playlist) { qLog(Info) << "Could not find playlist with id = " << playlist_id; return; } @@ -717,22 +749,45 @@ void OutgoingDataCreator::SendPlaylist(RemoteClient *client, int playlist_id) { // Count the local songs int count = 0; - foreach (Song s, song_list) { + for (Song s : song_list) { if (s.url().scheme() == "file") { count++; } } - foreach (Song s, song_list) { + for (Song s : song_list) { // Only local files! if (s.url().scheme() == "file") { - DownloadItem item(s, song_list.indexOf(s)+1, count); + DownloadItem item(s, song_list.indexOf(s) + 1, count); download_queue_[client].append(item); } } } -void OutgoingDataCreator::SendLibrary(RemoteClient *client) { +void OutgoingDataCreator::SendUrls(RemoteClient *client, + const pb::remote::RequestDownloadSongs &request) { + SongList song_list; + + // First gather all valid songs + for (auto it = request.urls().begin(); it != request.urls().end(); ++it) { + std::string s = *it; + QUrl url = QUrl(QStringFromStdString(s)); + + Song song = app_->library_backend()->GetSongByUrl(url); + + if (song.is_valid() && song.url().scheme() == "file") { + song_list.append(song); + } + } + + // Then send them to Clementine Remote + for (Song s : song_list) { + DownloadItem item(s, song_list.indexOf(s) + 1, song_list.count()); + download_queue_[client].append(item); + } +} + +void OutgoingDataCreator::SendLibrary(RemoteClient* client) { // Get a temporary file name QString temp_file_name = Utilities::GetTemporaryFileName(); @@ -743,7 +798,10 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { app_->database()->AttachDatabaseOnDbConnection("songs_export", adb, db); // Copy the content of the song table to this temporary database - QSqlQuery q(QString("create table songs_export.songs as SELECT * FROM songs where unavailable = 0;"), db); + QSqlQuery q(QString( + "create table songs_export.songs as SELECT * FROM songs " + "where unavailable = 0;"), + db); if (app_->database()->CheckErrors(q)) return; @@ -761,11 +819,12 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { QByteArray data; pb::remote::Message msg; - pb::remote::ResponseLibraryChunk* chunk = msg.mutable_response_library_chunk(); + pb::remote::ResponseLibraryChunk* chunk = + msg.mutable_response_library_chunk(); msg.set_type(pb::remote::LIBRARY_CHUNK); // Calculate the number of chunks - int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); + int chunk_count = qRound((file.size() / kFileChunkSize) + 0.5); int chunk_number = 1; while (!file.atEnd()) { @@ -793,9 +852,7 @@ void OutgoingDataCreator::SendLibrary(RemoteClient *client) { file.remove(); } -void OutgoingDataCreator::EnableKittens(bool aww) { - aww_ = aww; -} +void OutgoingDataCreator::EnableKittens(bool aww) { aww_ = aww; } void OutgoingDataCreator::SendKitten(const QImage& kitten) { if (aww_) { @@ -803,4 +860,3 @@ void OutgoingDataCreator::SendKitten(const QImage& kitten) { SendSongMetadata(); } } - diff --git a/src/networkremote/outgoingdatacreator.h b/src/networkremote/outgoingdatacreator.h index 264da2add..05f89b292 100644 --- a/src/networkremote/outgoingdatacreator.h +++ b/src/networkremote/outgoingdatacreator.h @@ -1,6 +1,8 @@ #ifndef OUTGOINGDATACREATOR_H #define OUTGOINGDATACREATOR_H +#include + #include #include #include @@ -24,7 +26,6 @@ #include "songinfo/ultimatelyricsreader.h" #include "remotecontrolmessages.pb.h" #include "remoteclient.h" -#include typedef QList ProviderList; @@ -32,15 +33,13 @@ struct DownloadItem { Song song_; int song_no_; int song_count_; - DownloadItem(Song s, int no, int count) : - song_(s), - song_no_(no), - song_count_(count) { } + DownloadItem(Song s, int no, int count) + : song_(s), song_no_(no), song_count_(count) {} }; class OutgoingDataCreator : public QObject { - Q_OBJECT -public: + Q_OBJECT + public: OutgoingDataCreator(Application* app); ~OutgoingDataCreator(); @@ -48,7 +47,7 @@ public: void SetClients(QList* clients); -public slots: + public slots: void SendClementineInfo(); void SendAllPlaylists(); void SendAllActivePlaylists(); @@ -61,7 +60,8 @@ public slots: void PlaylistClosed(int id); void PlaylistRenamed(int id, const QString& new_name); void ActiveChanged(Playlist*); - void CurrentSongChanged(const Song& song, const QString& uri, const QImage& img); + void CurrentSongChanged(const Song& song, const QString& uri, + const QImage& img); void SendSongMetadata(); void StateChanged(Engine::State); void SendKeepAlive(); @@ -71,13 +71,14 @@ public slots: void DisconnectAllClients(); void GetLyrics(); void SendLyrics(int id, const SongInfoFetcher::Result& result); - void SendSongs(const pb::remote::RequestDownloadSongs& request, RemoteClient* client); + void SendSongs(const pb::remote::RequestDownloadSongs& request, + RemoteClient* client); void ResponseSongOffer(RemoteClient* client, bool accepted); void SendLibrary(RemoteClient* client); void EnableKittens(bool aww); void SendKitten(const QImage& kitten); -private: + private: Application* app_; QList* clients_; Song current_song_; @@ -91,24 +92,24 @@ private: int last_track_position_; bool aww_; - boost::scoped_ptr ultimate_reader_; + std::unique_ptr ultimate_reader_; ProviderList provider_list_; QMap results_; SongInfoFetcher* fetcher_; void SendDataToClients(pb::remote::Message* msg); void SetEngineState(pb::remote::ResponseClementineInfo* msg); - void CreateSong( - const Song& song, - const QImage& art, - const int index, - pb::remote::SongMetadata* song_metadata); + void CreateSong(const Song& song, const QImage& art, const int index, + pb::remote::SongMetadata* song_metadata); void CheckEnabledProviders(); SongInfoProvider* ProviderByName(const QString& name) const; - void SendSingleSong(RemoteClient* client, const Song& song, int song_no, int song_count); + void SendSingleSong(RemoteClient* client, const Song& song, int song_no, + int song_count); void SendAlbum(RemoteClient* client, const Song& song); void SendPlaylist(RemoteClient* client, int playlist_id); + void SendUrls(RemoteClient* client, const pb::remote::RequestDownloadSongs& request); void OfferNextSong(RemoteClient* client); + void SendTotalFileSize(RemoteClient* client); }; -#endif // OUTGOINGDATACREATOR_H +#endif // OUTGOINGDATACREATOR_H diff --git a/src/networkremote/remoteclient.cpp b/src/networkremote/remoteclient.cpp index 6079828c4..cd05bdade 100644 --- a/src/networkremote/remoteclient.cpp +++ b/src/networkremote/remoteclient.cpp @@ -24,10 +24,7 @@ #include RemoteClient::RemoteClient(Application* app, QTcpSocket* client) - : app_(app), - downloader_(false), - client_(client) -{ + : app_(app), downloader_(false), client_(client) { // Open the buffer buffer_.setData(QByteArray()); buffer_.open(QIODevice::ReadWrite); @@ -41,7 +38,7 @@ RemoteClient::RemoteClient(Application* app, QTcpSocket* client) s.beginGroup(NetworkRemote::kSettingsGroup); use_auth_code_ = s.value("use_auth_code", false).toBool(); - auth_code_ = s.value("auth_code", 0).toInt(); + auth_code_ = s.value("auth_code", 0).toInt(); allow_downloads_ = s.value("allow_downloads", false).toBool(); s.endGroup(); @@ -56,9 +53,7 @@ RemoteClient::~RemoteClient() { client_->waitForDisconnected(2000); } -void RemoteClient::setDownloader(bool downloader) { - downloader_ = downloader; -} +void RemoteClient::setDownloader(bool downloader) { downloader_ = downloader; } void RemoteClient::IncomingData() { while (client_->bytesAvailable()) { @@ -80,8 +75,7 @@ void RemoteClient::IncomingData() { } // Read some of the message - buffer_.write( - client_->read(expected_length_ - buffer_.size())); + buffer_.write(client_->read(expected_length_ - buffer_.size())); // Did we get everything? if (buffer_.size() == expected_length_) { @@ -97,7 +91,7 @@ void RemoteClient::IncomingData() { } } -void RemoteClient::ParseMessage(const QByteArray &data) { +void RemoteClient::ParseMessage(const QByteArray& data) { pb::remote::Message msg; if (!msg.ParseFromArray(data.constData(), data.size())) { qLog(Info) << "Couldn't parse data"; @@ -153,7 +147,7 @@ void RemoteClient::DisconnectClient(pb::remote::ReasonDisconnect reason) { } // Sends data to client without check if authenticated -void RemoteClient::SendDataToClient(pb::remote::Message *msg) { +void RemoteClient::SendDataToClient(pb::remote::Message* msg) { // Set the default version msg->set_version(msg->default_instance().version()); @@ -180,13 +174,11 @@ void RemoteClient::SendDataToClient(pb::remote::Message *msg) { } } -void RemoteClient::SendData(pb::remote::Message *msg) { +void RemoteClient::SendData(pb::remote::Message* msg) { // Check if client is authenticated before sending the data if (authenticated_) { SendDataToClient(msg); } } -QAbstractSocket::SocketState RemoteClient::State() { - return client_->state(); -} +QAbstractSocket::SocketState RemoteClient::State() { return client_->state(); } diff --git a/src/networkremote/remoteclient.h b/src/networkremote/remoteclient.h index 1acf6ffef..b1812b571 100644 --- a/src/networkremote/remoteclient.h +++ b/src/networkremote/remoteclient.h @@ -9,8 +9,8 @@ #include "remotecontrolmessages.pb.h" class RemoteClient : public QObject { - Q_OBJECT -public: + Q_OBJECT + public: RemoteClient(Application* app, QTcpSocket* client); ~RemoteClient(); @@ -21,13 +21,13 @@ public: bool isDownloader() { return downloader_; } void DisconnectClient(pb::remote::ReasonDisconnect reason); -private slots: + private slots: void IncomingData(); signals: void Parse(const pb::remote::Message& msg); -private: + private: void ParseMessage(const QByteArray& data); // Sends data to client without check if authenticated @@ -47,4 +47,4 @@ private: QBuffer buffer_; }; -#endif // REMOTECLIENT_H +#endif // REMOTECLIENT_H diff --git a/src/networkremote/tinysvcmdns.cpp b/src/networkremote/tinysvcmdns.cpp index ab496f3cb..b4e70b858 100644 --- a/src/networkremote/tinysvcmdns.cpp +++ b/src/networkremote/tinysvcmdns.cpp @@ -18,32 +18,32 @@ void TinySVCMDNS::CreateMdnsd(uint32_t ipv4, QString ipv6) { mdnsd* mdnsd = mdnsd_start_bind(ipv4); // Set our hostname - mdnsd_set_hostname( - mdnsd, - QString(host + ".local").toUtf8().constData(), - ipv4); + mdnsd_set_hostname(mdnsd, QString(host + ".local").toUtf8().constData(), + ipv4); // Add to the list mdnsd_.append(mdnsd); } -TinySVCMDNS::TinySVCMDNS() { +TinySVCMDNS::TinySVCMDNS() { // Get all network interfaces - QList network_interfaces = QNetworkInterface::allInterfaces(); - foreach (QNetworkInterface network_interface, network_interfaces) { + QList network_interfaces = + QNetworkInterface::allInterfaces(); + for (QNetworkInterface network_interface : network_interfaces) { // Only use up and non loopback interfaces - if (network_interface.flags().testFlag(network_interface.IsUp) - && !network_interface.flags().testFlag(network_interface.IsLoopBack)) - { + if (network_interface.flags().testFlag(network_interface.IsUp) && + !network_interface.flags().testFlag(network_interface.IsLoopBack)) { uint32_t ipv4 = 0; QString ipv6; qLog(Debug) << "Interface" << network_interface.humanReadableName(); - - // Now check all network addresses for this device - QList network_address_entries = network_interface.addressEntries(); - foreach (QNetworkAddressEntry network_address_entry, network_address_entries) { + // Now check all network addresses for this device + QList network_address_entries = + network_interface.addressEntries(); + + for (QNetworkAddressEntry network_address_entry : + network_address_entries) { QHostAddress host_address = network_address_entry.ip(); if (host_address.protocol() == QAbstractSocket::IPv4Protocol) { ipv4 = qToBigEndian(host_address.toIPv4Address()); @@ -53,7 +53,7 @@ TinySVCMDNS::TinySVCMDNS() { qLog(Debug) << " ipv6:" << host_address.toString(); } } - + // Now start the service CreateMdnsd(ipv4, ipv6); } @@ -61,30 +61,20 @@ TinySVCMDNS::TinySVCMDNS() { } TinySVCMDNS::~TinySVCMDNS() { - foreach(mdnsd* mdnsd, mdnsd_) { + for (mdnsd* mdnsd : mdnsd_) { mdnsd_stop(mdnsd); } } -void TinySVCMDNS::PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port) { +void TinySVCMDNS::PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port) { // Some pointless text, so tinymDNS publishes the service correctly. - const char* txt[] = { - "cat=nyan", - NULL - }; - - foreach(mdnsd* mdnsd, mdnsd_) { - mdnsd_register_svc( - mdnsd, - name.constData(), - QString(type + ".local").toUtf8().constData(), - port, - NULL, - txt); + const char* txt[] = {"cat=nyan", nullptr}; + + for (mdnsd* mdnsd : mdnsd_) { + mdnsd_register_svc(mdnsd, name.constData(), + QString(type + ".local").toUtf8().constData(), port, + nullptr, txt); } } diff --git a/src/networkremote/tinysvcmdns.h b/src/networkremote/tinysvcmdns.h index 9d96beebd..a7dc16cb9 100644 --- a/src/networkremote/tinysvcmdns.h +++ b/src/networkremote/tinysvcmdns.h @@ -12,11 +12,8 @@ class TinySVCMDNS : public Zeroconf { virtual ~TinySVCMDNS(); protected: - virtual void PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port); + virtual void PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port); private: void CreateMdnsd(uint32_t ipv4, QString ipv6); diff --git a/src/networkremote/zeroconf.cpp b/src/networkremote/zeroconf.cpp index 2d901c34f..f817a1766 100644 --- a/src/networkremote/zeroconf.cpp +++ b/src/networkremote/zeroconf.cpp @@ -16,23 +16,21 @@ #include -Zeroconf* Zeroconf::sInstance = NULL; +Zeroconf* Zeroconf::sInstance = nullptr; -Zeroconf::~Zeroconf() { - -} +Zeroconf::~Zeroconf() {} Zeroconf* Zeroconf::GetZeroconf() { if (!sInstance) { - #ifdef HAVE_DBUS - sInstance = new Avahi; - #endif // HAVE_DBUS - #ifdef Q_OS_DARWIN - sInstance = new Bonjour; - #endif - #ifdef Q_OS_WIN32 - sInstance = new TinySVCMDNS; - #endif +#ifdef HAVE_DBUS + sInstance = new Avahi; +#endif // HAVE_DBUS +#ifdef Q_OS_DARWIN + sInstance = new Bonjour; +#endif +#ifdef Q_OS_WIN32 + sInstance = new TinySVCMDNS; +#endif } return sInstance; @@ -41,8 +39,8 @@ Zeroconf* Zeroconf::GetZeroconf() { QByteArray Zeroconf::TruncateName(const QString& name) { QTextCodec* codec = QTextCodec::codecForName("UTF-8"); QByteArray truncated_utf8; - foreach (QChar c, name) { - QByteArray rendered = codec->fromUnicode(&c, 1, NULL); + for (QChar c : name) { + QByteArray rendered = codec->fromUnicode(&c, 1, nullptr); if (truncated_utf8.size() + rendered.size() >= 63) { break; } @@ -53,15 +51,8 @@ QByteArray Zeroconf::TruncateName(const QString& name) { return truncated_utf8; } -void Zeroconf::Publish( - const QString& domain, - const QString& type, - const QString& name, - quint16 port) { +void Zeroconf::Publish(const QString& domain, const QString& type, + const QString& name, quint16 port) { QByteArray truncated_name = TruncateName(name); - PublishInternal( - domain, - type, - truncated_name, - port); + PublishInternal(domain, type, truncated_name, port); } diff --git a/src/networkremote/zeroconf.h b/src/networkremote/zeroconf.h index 047dd51aa..e81704629 100644 --- a/src/networkremote/zeroconf.h +++ b/src/networkremote/zeroconf.h @@ -7,11 +7,8 @@ class Zeroconf { public: virtual ~Zeroconf(); - void Publish( - const QString& domain, - const QString& type, - const QString& name, - quint16 port); + void Publish(const QString& domain, const QString& type, const QString& name, + quint16 port); static Zeroconf* GetZeroconf(); @@ -19,11 +16,8 @@ class Zeroconf { static QByteArray TruncateName(const QString& name); protected: - virtual void PublishInternal( - const QString& domain, - const QString& type, - const QByteArray& name, - quint16 port) = 0; + virtual void PublishInternal(const QString& domain, const QString& type, + const QByteArray& name, quint16 port) = 0; private: static Zeroconf* sInstance; diff --git a/src/playlist/dynamicplaylistcontrols.cpp b/src/playlist/dynamicplaylistcontrols.cpp index ca29687b5..8c2a30bcd 100644 --- a/src/playlist/dynamicplaylistcontrols.cpp +++ b/src/playlist/dynamicplaylistcontrols.cpp @@ -18,10 +18,8 @@ #include "dynamicplaylistcontrols.h" #include "ui_dynamicplaylistcontrols.h" -DynamicPlaylistControls::DynamicPlaylistControls(QWidget *parent) - : QWidget(parent), - ui_(new Ui_DynamicPlaylistControls) -{ +DynamicPlaylistControls::DynamicPlaylistControls(QWidget* parent) + : QWidget(parent), ui_(new Ui_DynamicPlaylistControls) { ui_->setupUi(this); connect(ui_->expand, SIGNAL(clicked()), SIGNAL(Expand())); @@ -29,6 +27,4 @@ DynamicPlaylistControls::DynamicPlaylistControls(QWidget *parent) connect(ui_->off, SIGNAL(clicked()), SIGNAL(TurnOff())); } -DynamicPlaylistControls::~DynamicPlaylistControls() { - delete ui_; -} +DynamicPlaylistControls::~DynamicPlaylistControls() { delete ui_; } diff --git a/src/playlist/dynamicplaylistcontrols.h b/src/playlist/dynamicplaylistcontrols.h index e44b5d6d5..e1212563e 100644 --- a/src/playlist/dynamicplaylistcontrols.h +++ b/src/playlist/dynamicplaylistcontrols.h @@ -25,8 +25,8 @@ class Ui_DynamicPlaylistControls; class DynamicPlaylistControls : public QWidget { Q_OBJECT -public: - DynamicPlaylistControls(QWidget* parent = 0); + public: + DynamicPlaylistControls(QWidget* parent = nullptr); ~DynamicPlaylistControls(); signals: @@ -34,8 +34,8 @@ signals: void Repopulate(); void TurnOff(); -private: + private: Ui_DynamicPlaylistControls* ui_; }; -#endif // DYNAMICPLAYLISTCONTROLS_H +#endif // DYNAMICPLAYLISTCONTROLS_H diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 45c6673f8..dfe4556a6 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -16,6 +16,25 @@ */ #include "playlist.h" + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "playlistbackend.h" #include "playlistfilter.h" #include "playlistitemmimedata.h" @@ -49,36 +68,15 @@ #include "smartplaylists/generatorinserter.h" #include "smartplaylists/generatormimedata.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifdef USE_STD_UNORDERED_MAP - #include - using std::unordered_map; -#else - #include - using std::tr1::unordered_map; -#endif +using std::placeholders::_1; +using std::placeholders::_2; +using std::shared_ptr; +using std::unordered_map; using smart_playlists::Generator; using smart_playlists::GeneratorInserter; using smart_playlists::GeneratorPtr; -using boost::shared_ptr; - const char* Playlist::kCddaMimeType = "x-content/audio-cdda"; const char* Playlist::kRowsMimetype = "application/x-clementine-playlist-rows"; const char* Playlist::kPlayNowMimetype = "application/x-clementine-play-now"; @@ -94,46 +92,44 @@ const char* Playlist::kSettingsGroup = "Playlist"; const int Playlist::kUndoStackSize = 20; const int Playlist::kUndoItemLimit = 500; -Playlist::Playlist(PlaylistBackend* backend, - TaskManager* task_manager, - LibraryBackend* library, - int id, - const QString& special_type, - bool favorite, - QObject *parent) - : QAbstractListModel(parent), - is_loading_(false), - proxy_(new PlaylistFilter(this)), - queue_(new Queue(this)), - backend_(backend), - task_manager_(task_manager), - library_(library), - id_(id), - favorite_(favorite), - current_is_paused_(false), - current_virtual_index_(-1), - is_shuffled_(false), - scrobble_point_(-1), - lastfm_status_(LastFM_New), - have_incremented_playcount_(false), - playlist_sequence_(NULL), - ignore_sorting_(false), - undo_stack_(new QUndoStack(this)), - special_type_(special_type) -{ +Playlist::Playlist(PlaylistBackend* backend, TaskManager* task_manager, + LibraryBackend* library, int id, const QString& special_type, + bool favorite, QObject* parent) + : QAbstractListModel(parent), + is_loading_(false), + proxy_(new PlaylistFilter(this)), + queue_(new Queue(this)), + backend_(backend), + task_manager_(task_manager), + library_(library), + id_(id), + favorite_(favorite), + current_is_paused_(false), + current_virtual_index_(-1), + is_shuffled_(false), + scrobble_point_(-1), + lastfm_status_(LastFM_New), + have_incremented_playcount_(false), + playlist_sequence_(nullptr), + ignore_sorting_(false), + undo_stack_(new QUndoStack(this)), + special_type_(special_type) { undo_stack_->setUndoLimit(kUndoStackSize); - connect(this, SIGNAL(rowsInserted(const QModelIndex&, int, int)), SIGNAL(PlaylistChanged())); - connect(this, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), SIGNAL(PlaylistChanged())); + connect(this, SIGNAL(rowsInserted(const QModelIndex&, int, int)), + SIGNAL(PlaylistChanged())); + connect(this, SIGNAL(rowsRemoved(const QModelIndex&, int, int)), + SIGNAL(PlaylistChanged())); Restore(); proxy_->setSourceModel(this); queue_->setSourceModel(this); - connect(queue_, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - SLOT(TracksAboutToBeDequeued(QModelIndex,int,int))); - connect(queue_, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(TracksDequeued())); + connect(queue_, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), + SLOT(TracksAboutToBeDequeued(QModelIndex, int, int))); + connect(queue_, SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(TracksDequeued())); connect(queue_, SIGNAL(rowsInserted(const QModelIndex&, int, int)), SLOT(TracksEnqueued(const QModelIndex&, int, int))); @@ -148,11 +144,12 @@ Playlist::~Playlist() { library_items_by_id_.clear(); } -template -void Playlist::InsertSongItems(const SongList& songs, int pos, bool play_now, bool enqueue) { +template +void Playlist::InsertSongItems(const SongList& songs, int pos, bool play_now, + bool enqueue) { PlaylistItemList items; - foreach (const Song& song, songs) { + for (const Song& song : songs) { items << PlaylistItemPtr(new T(song)); } @@ -160,12 +157,10 @@ void Playlist::InsertSongItems(const SongList& songs, int pos, bool play_now, bo } QVariant Playlist::headerData(int section, Qt::Orientation, int role) const { - if (role != Qt::DisplayRole && role != Qt::ToolTipRole) - return QVariant(); + if (role != Qt::DisplayRole && role != Qt::ToolTipRole) return QVariant(); - const QString name = column_name((Playlist::Column) section); - if (!name.isEmpty()) - return name; + const QString name = column_name((Playlist::Column)section); + if (!name.isEmpty()) return name; return QVariant(); } @@ -194,11 +189,9 @@ bool Playlist::column_is_editable(Playlist::Column column) { bool Playlist::set_column_value(Song& song, Playlist::Column column, const QVariant& value) { + if (!song.IsEditable()) return false; - if (!song.IsEditable()) - return false; - - switch(column) { + switch (column) { case Column_Title: song.set_title(value.toString()); break; @@ -247,7 +240,8 @@ bool Playlist::set_column_value(Song& song, Playlist::Column column, QVariant Playlist::data(const QModelIndex& index, int role) const { switch (role) { case Role_IsCurrent: - return current_item_index_.isValid() && index.row() == current_item_index_.row(); + return current_item_index_.isValid() && + index.row() == current_item_index_.row(); case Role_IsPaused: return current_is_paused_; @@ -273,37 +267,61 @@ QVariant Playlist::data(const QModelIndex& index, int role) const { switch (index.column()) { case Column_Title: return song.PrettyTitle(); - case Column_Artist: return song.artist(); - case Column_Album: return song.album(); - case Column_Length: return song.length_nanosec(); - case Column_Track: return song.track(); - case Column_Disc: return song.disc(); - case Column_Year: return song.year(); - case Column_Genre: return song.genre(); - case Column_AlbumArtist: return song.playlist_albumartist(); - case Column_Composer: return song.composer(); - case Column_Performer: return song.performer(); - case Column_Grouping: return song.grouping(); + case Column_Artist: + return song.artist(); + case Column_Album: + return song.album(); + case Column_Length: + return song.length_nanosec(); + case Column_Track: + return song.track(); + case Column_Disc: + return song.disc(); + case Column_Year: + return song.year(); + case Column_Genre: + return song.genre(); + case Column_AlbumArtist: + return song.playlist_albumartist(); + case Column_Composer: + return song.composer(); + case Column_Performer: + return song.performer(); + case Column_Grouping: + return song.grouping(); - case Column_Rating: return song.rating(); - case Column_PlayCount: return song.playcount(); - case Column_SkipCount: return song.skipcount(); - case Column_LastPlayed: return song.lastplayed(); - case Column_Score: return song.score(); + case Column_Rating: + return song.rating(); + case Column_PlayCount: + return song.playcount(); + case Column_SkipCount: + return song.skipcount(); + case Column_LastPlayed: + return song.lastplayed(); + case Column_Score: + return song.score(); - case Column_BPM: return song.bpm(); - case Column_Bitrate: return song.bitrate(); - case Column_Samplerate: return song.samplerate(); - case Column_Filename: return song.url(); - case Column_BaseFilename: return song.basefilename(); - case Column_Filesize: return song.filesize(); - case Column_Filetype: return song.filetype(); - case Column_DateModified: return song.mtime(); - case Column_DateCreated: return song.ctime(); + case Column_BPM: + return song.bpm(); + case Column_Bitrate: + return song.bitrate(); + case Column_Samplerate: + return song.samplerate(); + case Column_Filename: + return song.url(); + case Column_BaseFilename: + return song.basefilename(); + case Column_Filesize: + return song.filesize(); + case Column_Filetype: + return song.filetype(); + case Column_DateModified: + return song.mtime(); + case Column_DateCreated: + return song.ctime(); case Column_Comment: - if (role == Qt::DisplayRole) - return song.comment().simplified(); + if (role == Qt::DisplayRole) return song.comment().simplified(); return song.comment(); case Column_Source: @@ -314,7 +332,8 @@ QVariant Playlist::data(const QModelIndex& index, int role) const { } case Qt::TextAlignmentRole: - return QVariant(column_alignments_.value(index.column(), (Qt::AlignLeft | Qt::AlignVCenter))); + return QVariant(column_alignments_.value( + index.column(), (Qt::AlignLeft | Qt::AlignVCenter))); case Qt::ForegroundRole: if (data(index, Role_IsCurrent).toBool()) { @@ -343,6 +362,14 @@ QVariant Playlist::data(const QModelIndex& index, int role) const { } return QVariant(); + case Qt::FontRole: + if (items_[index.row()]->GetShouldSkip()) { + QFont track_font; + track_font.setStrikeOut(true); + return track_font; + } + return QVariant(); + default: return QVariant(); } @@ -353,36 +380,37 @@ void Playlist::MoodbarUpdated(const QModelIndex& index) { index.sibling(index.row(), Column_Mood)); } -bool Playlist::setData(const QModelIndex& index, const QVariant& value, int role) { +bool Playlist::setData(const QModelIndex& index, const QVariant& value, + int role) { int row = index.row(); PlaylistItemPtr item = item_at(row); Song song = item->Metadata(); - if (index.data() == value) - return false; + if (index.data() == value) return false; - if(!set_column_value(song, (Column)index.column(), value)) - return false; + if (!set_column_value(song, (Column)index.column(), value)) return false; - if((Column)index.column() == Column_Score) { + if ((Column)index.column() == Column_Score) { // The score is only saved in the database, not the file library_->AddOrUpdateSongs(SongList() << song); emit EditingFinished(index); } else { - TagReaderReply* reply = TagReaderClient::Instance()->SaveFile( - song.url().toLocalFile(), song); + TagReaderReply* reply = + TagReaderClient::Instance()->SaveFile(song.url().toLocalFile(), song); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(SongSaveComplete(TagReaderReply*,QPersistentModelIndex)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(SongSaveComplete(TagReaderReply*, QPersistentModelIndex)), reply, QPersistentModelIndex(index)); } return true; } -void Playlist::SongSaveComplete(TagReaderReply* reply, const QPersistentModelIndex& index) { +void Playlist::SongSaveComplete(TagReaderReply* reply, + const QPersistentModelIndex& index) { if (reply->is_successful() && index.isValid()) { QFuture future = item_at(index.row())->BackgroundReload(); - ModelFutureWatcher* watcher = new ModelFutureWatcher(index, this); + ModelFutureWatcher* watcher = + new ModelFutureWatcher(index, this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(ItemReloadComplete())); } @@ -391,7 +419,8 @@ void Playlist::SongSaveComplete(TagReaderReply* reply, const QPersistentModelInd } void Playlist::ItemReloadComplete() { - ModelFutureWatcher* watcher = static_cast*>(sender()); + ModelFutureWatcher* watcher = + static_cast*>(sender()); watcher->deleteLater(); const QPersistentModelIndex& index = watcher->index(); if (index.isValid()) { @@ -418,22 +447,22 @@ void Playlist::ShuffleModeChanged(PlaylistSequence::ShuffleMode mode) { } bool Playlist::FilterContainsVirtualIndex(int i) const { - if (i<0 || i>=virtual_items_.count()) - return false; + if (i < 0 || i >= virtual_items_.count()) return false; return proxy_->filterAcceptsRow(virtual_items_[i], QModelIndex()); } int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { PlaylistSequence::RepeatMode repeat_mode = playlist_sequence_->repeat_mode(); - PlaylistSequence::ShuffleMode shuffle_mode = playlist_sequence_->shuffle_mode(); + PlaylistSequence::ShuffleMode shuffle_mode = + playlist_sequence_->shuffle_mode(); bool album_only = repeat_mode == PlaylistSequence::Repeat_Album || shuffle_mode == PlaylistSequence::Shuffle_InsideAlbum; // This one's easy - if we have to repeat the current track then just return i if (repeat_mode == PlaylistSequence::Repeat_Track && !ignore_repeat_track) { if (!FilterContainsVirtualIndex(i)) - return virtual_items_.count(); // It's not in the filter any more + return virtual_items_.count(); // It's not in the filter any more return i; } @@ -442,21 +471,28 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { if (!album_only) { ++i; - // Advance i until we find any track that is in the filter - while (i < virtual_items_.count() && !FilterContainsVirtualIndex(i)) + // Advance i until we find any track that is in the filter, skipping + // the selected to be skipped + while (i < virtual_items_.count() && + (!FilterContainsVirtualIndex(i) || + item_at(virtual_items_[i])->GetShouldSkip())) { ++i; + } return i; } // We need to advance i until we get something else on the same album Song last_song = current_item_metadata(); - for (int j=i+1 ; jGetShouldSkip()) { + continue; + } Song this_song = item_at(virtual_items_[j])->Metadata(); if (((last_song.is_compilation() && this_song.is_compilation()) || last_song.artist() == this_song.artist()) && last_song.album() == this_song.album() && FilterContainsVirtualIndex(j)) { - return j; // Found one + return j; // Found one } } @@ -466,14 +502,14 @@ int Playlist::NextVirtualIndex(int i, bool ignore_repeat_track) const { int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { PlaylistSequence::RepeatMode repeat_mode = playlist_sequence_->repeat_mode(); - PlaylistSequence::ShuffleMode shuffle_mode = playlist_sequence_->shuffle_mode(); + PlaylistSequence::ShuffleMode shuffle_mode = + playlist_sequence_->shuffle_mode(); bool album_only = repeat_mode == PlaylistSequence::Repeat_Album || shuffle_mode == PlaylistSequence::Shuffle_InsideAlbum; // This one's easy - if we have to repeat the current track then just return i if (repeat_mode == PlaylistSequence::Repeat_Track && !ignore_repeat_track) { - if (!FilterContainsVirtualIndex(i)) - return -1; + if (!FilterContainsVirtualIndex(i)) return -1; return i; } @@ -483,20 +519,24 @@ int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { --i; // Decrement i until we find any track that is in the filter - while (i>=0 && !FilterContainsVirtualIndex(i)) + while (i >= 0 && (!FilterContainsVirtualIndex(i) || + item_at(virtual_items_[i])->GetShouldSkip())) --i; return i; } // We need to decrement i until we get something else on the same album Song last_song = current_item_metadata(); - for (int j=i-1 ; j>=0; --j) { + for (int j = i - 1; j >= 0; --j) { + if (item_at(virtual_items_[j])->GetShouldSkip()) { + continue; + } Song this_song = item_at(virtual_items_[j])->Metadata(); if (((last_song.is_compilation() && this_song.is_compilation()) || last_song.artist() == this_song.artist()) && last_song.album() == this_song.album() && FilterContainsVirtualIndex(j)) { - return j; // Found one + return j; // Found one } } @@ -505,16 +545,13 @@ int Playlist::PreviousVirtualIndex(int i, bool ignore_repeat_track) const { } int Playlist::next_row(bool ignore_repeat_track) const { - // Did we want to stop after this track? - if (stop_after_.isValid() && current_row() == stop_after_.row()) - return -1; - // Any queued items take priority if (!queue_->is_empty()) { return queue_->PeekNext(); } - int next_virtual_index = NextVirtualIndex(current_virtual_index_, ignore_repeat_track); + int next_virtual_index = + NextVirtualIndex(current_virtual_index_, ignore_repeat_track); if (next_virtual_index >= virtual_items_.count()) { // We've gone off the end of the playlist. @@ -539,7 +576,8 @@ int Playlist::next_row(bool ignore_repeat_track) const { } int Playlist::previous_row(bool ignore_repeat_track) const { - int prev_virtual_index = PreviousVirtualIndex(current_virtual_index_,ignore_repeat_track); + int prev_virtual_index = + PreviousVirtualIndex(current_virtual_index_, ignore_repeat_track); if (prev_virtual_index < 0) { // We've gone off the beginning of the playlist. @@ -551,44 +589,44 @@ int Playlist::previous_row(bool ignore_repeat_track) const { break; default: - prev_virtual_index = PreviousVirtualIndex(virtual_items_.count(),ignore_repeat_track); + prev_virtual_index = + PreviousVirtualIndex(virtual_items_.count(), ignore_repeat_track); break; } } // Still off the beginning? Then just give up - if (prev_virtual_index < 0) - return -1; + if (prev_virtual_index < 0) return -1; return virtual_items_[prev_virtual_index]; } int Playlist::dynamic_history_length() const { - return dynamic_playlist_ && last_played_item_index_.isValid() - ? last_played_item_index_.row() + 1 - : 0; + return dynamic_playlist_ && last_played_item_index_.isValid() + ? last_played_item_index_.row() + 1 + : 0; } -void Playlist::set_current_row(int i) { +void Playlist::set_current_row(int i, bool is_stopping) { QModelIndex old_current_item_index = current_item_index_; ClearStreamMetadata(); current_item_index_ = QPersistentModelIndex(index(i, 0, QModelIndex())); - + // if the given item is the first in the queue, remove it from the queue if (current_item_index_.row() == queue_->PeekNext()) { queue_->TakeNext(); } - if (current_item_index_ == old_current_item_index) - return; + if (current_item_index_ == old_current_item_index) return; if (old_current_item_index.isValid()) { - emit dataChanged(old_current_item_index, - old_current_item_index.sibling(old_current_item_index.row(), ColumnCount-1)); + emit dataChanged(old_current_item_index, + old_current_item_index.sibling( + old_current_item_index.row(), ColumnCount - 1)); } - if (current_item_index_.isValid()) { + if (current_item_index_.isValid() && !is_stopping) { InformOfCurrentSongChange(); } @@ -618,20 +656,21 @@ void Playlist::set_current_row(int i) { // Move the new item one position ahead of the last item in the history. MoveItemWithoutUndo(current_item_index_.row(), dynamic_history_length()); - + // Compute the number of new items that have to be inserted. This is not - // necessarily 1 because the user might have added or removed items - // manually. Note that the future excludes the current item. - const int count = dynamic_history_length() + 1 + dynamic_playlist_->GetDynamicFuture() - items_.count(); + // necessarily 1 because the user might have added or removed items + // manually. Note that the future excludes the current item. + const int count = dynamic_history_length() + 1 + + dynamic_playlist_->GetDynamicFuture() - items_.count(); if (count > 0) { InsertDynamicItems(count); } // Shrink the history, again this is not necessarily by 1, because the user // might have moved items by hand. - const int remove_count = dynamic_history_length() - dynamic_playlist_->GetDynamicHistory(); - if (0 < remove_count) - RemoveItemsWithoutUndo(0, remove_count); + const int remove_count = + dynamic_history_length() - dynamic_playlist_->GetDynamicHistory(); + if (0 < remove_count) RemoveItemsWithoutUndo(0, remove_count); // the above actions make all commands on the undo stack invalid, so we // better clear it. @@ -642,26 +681,26 @@ void Playlist::set_current_row(int i) { last_played_item_index_ = current_item_index_; Save(); } - + UpdateScrobblePoint(); } void Playlist::InsertDynamicItems(int count) { - GeneratorInserter* inserter = new GeneratorInserter(task_manager_, library_, this); + GeneratorInserter* inserter = + new GeneratorInserter(task_manager_, library_, this); connect(inserter, SIGNAL(Error(QString)), SIGNAL(LoadTracksError(QString))); - connect(inserter, SIGNAL(PlayRequested(QModelIndex)), SIGNAL(PlayRequested(QModelIndex))); + connect(inserter, SIGNAL(PlayRequested(QModelIndex)), + SIGNAL(PlayRequested(QModelIndex))); inserter->Load(this, -1, false, false, dynamic_playlist_, count); } -Qt::ItemFlags Playlist::flags(const QModelIndex &index) const { +Qt::ItemFlags Playlist::flags(const QModelIndex& index) const { Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable; - if(column_is_editable((Column)index.column())) - flags |= Qt::ItemIsEditable; + if (column_is_editable((Column)index.column())) flags |= Qt::ItemIsEditable; - if (index.isValid()) - return flags | Qt::ItemIsDragEnabled; + if (index.isValid()) return flags | Qt::ItemIsDragEnabled; return Qt::ItemIsDropEnabled; } @@ -675,9 +714,9 @@ Qt::DropActions Playlist::supportedDropActions() const { return Qt::MoveAction | Qt::CopyAction | Qt::LinkAction; } -bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int, const QModelIndex&) { - if (action == Qt::IgnoreAction) - return false; +bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, + int row, int, const QModelIndex&) { + if (action == Qt::IgnoreAction) return false; using smart_playlists::GeneratorMimeData; @@ -695,24 +734,35 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro // Dragged from a library // We want to check if these songs are from the actual local file backend, // if they are we treat them differently. - if (song_data->backend && song_data->backend->songs_table() == Library::kSongsTable) - InsertSongItems(song_data->songs, row, play_now, enqueue_now); - else if (song_data->backend && song_data->backend->songs_table() == MagnatuneService::kSongsTable) - InsertSongItems(song_data->songs, row, play_now, enqueue_now); - else if (song_data->backend && song_data->backend->songs_table() == JamendoService::kSongsTable) - InsertSongItems(song_data->songs, row, play_now, enqueue_now); + if (song_data->backend && + song_data->backend->songs_table() == Library::kSongsTable) + InsertSongItems(song_data->songs, row, play_now, + enqueue_now); + else if (song_data->backend && + song_data->backend->songs_table() == MagnatuneService::kSongsTable) + InsertSongItems(song_data->songs, row, play_now, + enqueue_now); + else if (song_data->backend && + song_data->backend->songs_table() == JamendoService::kSongsTable) + InsertSongItems(song_data->songs, row, play_now, + enqueue_now); else - InsertSongItems(song_data->songs, row, play_now, enqueue_now); - } else if (const InternetMimeData* internet_data = qobject_cast(data)) { + InsertSongItems(song_data->songs, row, play_now, + enqueue_now); + } else if (const InternetMimeData* internet_data = + qobject_cast(data)) { // Dragged from the Internet pane - InsertInternetItems(internet_data->model, internet_data->indexes, - row, play_now, enqueue_now); - } else if (const InternetSongMimeData* internet_song_data = qobject_cast(data)) { + InsertInternetItems(internet_data->model, internet_data->indexes, row, + play_now, enqueue_now); + } else if (const InternetSongMimeData* internet_song_data = + qobject_cast(data)) { InsertInternetItems(internet_song_data->service, internet_song_data->songs, row, play_now, enqueue_now); - } else if (const GeneratorMimeData* generator_data = qobject_cast(data)) { + } else if (const GeneratorMimeData* generator_data = + qobject_cast(data)) { InsertSmartPlaylist(generator_data->generator_, row, play_now, enqueue_now); - } else if (const PlaylistItemMimeData* item_data = qobject_cast(data)) { + } else if (const PlaylistItemMimeData* item_data = + qobject_cast(data)) { InsertItems(item_data->items_, row, play_now, enqueue_now); } else if (data->hasFormat(kRowsMimetype)) { // Dragged from the playlist @@ -720,29 +770,30 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro // Get the list of rows that were moved QList source_rows; - Playlist* source_playlist = NULL; + Playlist* source_playlist = nullptr; qint64 pid = 0; qint64 own_pid = QCoreApplication::applicationPid(); QDataStream stream(data->data(kRowsMimetype)); - stream.readRawData(reinterpret_cast(&source_playlist), sizeof(source_playlist)); + stream.readRawData(reinterpret_cast(&source_playlist), + sizeof(source_playlist)); stream >> source_rows; if (!stream.atEnd()) { stream.readRawData((char*)&pid, sizeof(pid)); } else { - pid = ! own_pid; + pid = !own_pid; } - qStableSort(source_rows); // Make sure we take them in order + qStableSort(source_rows); // Make sure we take them in order if (source_playlist == this) { // Dragged from this playlist - rearrange the items - undo_stack_->push(new PlaylistUndoCommands::MoveItems(this, source_rows, row)); + undo_stack_->push( + new PlaylistUndoCommands::MoveItems(this, source_rows, row)); } else if (pid == own_pid) { // Drag from a different playlist PlaylistItemList items; - foreach (int row, source_rows) - items << source_playlist->item_at(row); + for (int row : source_rows) items << source_playlist->item_at(row); if (items.count() > kUndoItemLimit) { // Too big to keep in the undo stack. Also clear the stack because it @@ -750,12 +801,13 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro InsertItemsWithoutUndo(items, row, false); undo_stack_->clear(); } else { - undo_stack_->push(new PlaylistUndoCommands::InsertItems(this, items, row)); + undo_stack_->push( + new PlaylistUndoCommands::InsertItems(this, items, row)); } // Remove the items from the source playlist if it was a move event if (action == Qt::MoveAction) { - foreach (int row, source_rows) { + for (int row : source_rows) { source_playlist->undo_stack()->push( new PlaylistUndoCommands::RemoveItems(source_playlist, row, 1)); } @@ -774,7 +826,8 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro return true; } -void Playlist::InsertUrls(const QList &urls, int pos, bool play_now, bool enqueue) { +void Playlist::InsertUrls(const QList& urls, int pos, bool play_now, + bool enqueue) { SongLoaderInserter* inserter = new SongLoaderInserter( task_manager_, library_, backend_->app()->player()); connect(inserter, SIGNAL(Error(QString)), SIGNAL(LoadTracksError(QString))); @@ -782,13 +835,15 @@ void Playlist::InsertUrls(const QList &urls, int pos, bool play_now, bool inserter->Load(this, pos, play_now, enqueue, urls); } -void Playlist::InsertSmartPlaylist(GeneratorPtr generator, int pos, bool play_now, bool enqueue) { +void Playlist::InsertSmartPlaylist(GeneratorPtr generator, int pos, + bool play_now, bool enqueue) { // Hack: If the generator hasn't got a library set then use the main one if (!generator->library()) { generator->set_library(library_); } - GeneratorInserter* inserter = new GeneratorInserter(task_manager_, library_, this); + GeneratorInserter* inserter = + new GeneratorInserter(task_manager_, library_, this); connect(inserter, SIGNAL(Error(QString)), SIGNAL(LoadTracksError(QString))); inserter->Load(this, pos, play_now, enqueue, generator); @@ -822,36 +877,36 @@ void Playlist::MoveItemsWithoutUndo(const QList& source_rows, int pos) { // insertion point changes int offset = 0; int start = pos; - foreach (int source_row, source_rows) { - moved_items << items_.takeAt(source_row-offset); + for (int source_row : source_rows) { + moved_items << items_.takeAt(source_row - offset); if (pos > source_row) { - start --; + start--; } offset++; } - + // Put the items back in - for (int i=start ; iRemoveForegroundColor(kDynamicHistoryPriority); items_.insert(i, moved_items[i - start]); } // Update persistent indexes - foreach (const QModelIndex& pidx, persistentIndexList()) { + for (const QModelIndex& pidx : persistentIndexList()) { const int dest_offset = source_rows.indexOf(pidx.row()); if (dest_offset != -1) { // This index was moved - changePersistentIndex(pidx, index(start + dest_offset, pidx.column(), QModelIndex())); + changePersistentIndex( + pidx, index(start + dest_offset, pidx.column(), QModelIndex())); } else { int d = 0; - foreach (int source_row, source_rows) { - if (pidx.row() > source_row) - d --; + for (int source_row : source_rows) { + if (pidx.row() > source_row) d--; } - if (pidx.row() + d >= start) - d += source_rows.count(); + if (pidx.row() + d >= start) d += source_rows.count(); - changePersistentIndex(pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); + changePersistentIndex( + pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); } } current_virtual_index_ = virtual_items_.indexOf(current_row()); @@ -865,10 +920,10 @@ void Playlist::MoveItemsWithoutUndo(int start, const QList& dest_rows) { PlaylistItemList moved_items; int pos = start; - foreach (int dest_row, dest_rows) { + for (int dest_row : dest_rows) { if (dest_row < pos) start--; } - + if (start < 0) { start = items_.count() - dest_rows.count(); } @@ -879,28 +934,28 @@ void Playlist::MoveItemsWithoutUndo(int start, const QList& dest_rows) { // Put the items back in int offset = 0; - foreach (int dest_row, dest_rows) { + for (int dest_row : dest_rows) { items_.insert(dest_row, moved_items[offset]); - offset ++; + offset++; } // Update persistent indexes - foreach (const QModelIndex& pidx, persistentIndexList()) { + for (const QModelIndex& pidx : persistentIndexList()) { if (pidx.row() >= start && pidx.row() < start + dest_rows.count()) { // This index was moved const int i = pidx.row() - start; - changePersistentIndex(pidx, index(dest_rows[i], pidx.column(), QModelIndex())); + changePersistentIndex(pidx, + index(dest_rows[i], pidx.column(), QModelIndex())); } else { int d = 0; - if (pidx.row() >= start + dest_rows.count()) - d -= dest_rows.count(); + if (pidx.row() >= start + dest_rows.count()) d -= dest_rows.count(); - foreach (int dest_row, dest_rows) { - if (pidx.row() + d > dest_row) - d ++; + for (int dest_row : dest_rows) { + if (pidx.row() + d > dest_row) d++; } - changePersistentIndex(pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); + changePersistentIndex( + pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); } } current_virtual_index_ = virtual_items_.indexOf(current_row()); @@ -909,46 +964,48 @@ void Playlist::MoveItemsWithoutUndo(int start, const QList& dest_rows) { Save(); } -void Playlist::InsertItems(const PlaylistItemList& itemsIn, int pos, bool play_now, bool enqueue) { - if (itemsIn.isEmpty()) - return; +void Playlist::InsertItems(const PlaylistItemList& itemsIn, int pos, + bool play_now, bool enqueue) { + if (itemsIn.isEmpty()) return; PlaylistItemList items = itemsIn; // exercise vetoes SongList songs; - foreach(PlaylistItemPtr item, items) { + for (PlaylistItemPtr item : items) { songs << item->Metadata(); } const int song_count = songs.length(); QSet vetoed; - foreach(SongInsertVetoListener* listener, veto_listeners_) { - foreach(const Song& song, listener->AboutToInsertSongs(GetAllSongs(), songs)) { + for (SongInsertVetoListener* listener : veto_listeners_) { + for (const Song& song : + listener->AboutToInsertSongs(GetAllSongs(), songs)) { // avoid veto-ing a song multiple times vetoed.insert(song); } if (vetoed.count() == song_count) { - // all songs were vetoed and there's nothing more to do (there's no need for an undo step) + // all songs were vetoed and there's nothing more to do (there's no need + // for an undo step) return; } } - if(!vetoed.isEmpty()) { + if (!vetoed.isEmpty()) { QMutableListIterator it(items); while (it.hasNext()) { PlaylistItemPtr item = it.next(); const Song& current = item->Metadata(); - if(vetoed.contains(current)) { + if (vetoed.contains(current)) { vetoed.remove(current); it.remove(); } } // check for empty items once again after veto - if(items.isEmpty()) { + if (items.isEmpty()) { return; } } @@ -961,23 +1018,22 @@ void Playlist::InsertItems(const PlaylistItemList& itemsIn, int pos, bool play_n InsertItemsWithoutUndo(items, pos, enqueue); undo_stack_->clear(); } else { - undo_stack_->push(new PlaylistUndoCommands::InsertItems(this, items, pos, enqueue)); + undo_stack_->push( + new PlaylistUndoCommands::InsertItems(this, items, pos, enqueue)); } - if (play_now) - emit PlayRequested(index(start, 0)); + if (play_now) emit PlayRequested(index(start, 0)); } -void Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items, - int pos, bool enqueue) { - if (items.isEmpty()) - return; +void Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items, int pos, + bool enqueue) { + if (items.isEmpty()) return; const int start = pos == -1 ? items_.count() : pos; const int end = start + items.count() - 1; beginInsertRows(QModelIndex(), start, end); - for (int i=start ; i<=end ; ++i) { + for (int i = start; i <= end; ++i) { PlaylistItemPtr item = items[i - start]; items_.insert(i, item); virtual_items_ << virtual_items_.count(); @@ -999,7 +1055,7 @@ void Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items, if (enqueue) { QModelIndexList indexes; - for (int i=start ; i<=end ; ++i) { + for (int i = start; i <= end; ++i) { indexes << index(i, 0); } queue_->ToggleTracks(indexes); @@ -1009,17 +1065,20 @@ void Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items, ReshuffleIndices(); } -void Playlist::InsertLibraryItems(const SongList& songs, int pos, bool play_now, bool enqueue) { +void Playlist::InsertLibraryItems(const SongList& songs, int pos, bool play_now, + bool enqueue) { InsertSongItems(songs, pos, play_now, enqueue); } -void Playlist::InsertSongs(const SongList& songs, int pos, bool play_now, bool enqueue) { +void Playlist::InsertSongs(const SongList& songs, int pos, bool play_now, + bool enqueue) { InsertSongItems(songs, pos, play_now, enqueue); } -void Playlist::InsertSongsOrLibraryItems(const SongList& songs, int pos, bool play_now, bool enqueue) { +void Playlist::InsertSongsOrLibraryItems(const SongList& songs, int pos, + bool play_now, bool enqueue) { PlaylistItemList items; - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (song.id() == -1) items << PlaylistItemPtr(new SongPlaylistItem(song)); else @@ -1029,22 +1088,23 @@ void Playlist::InsertSongsOrLibraryItems(const SongList& songs, int pos, bool pl } void Playlist::InsertInternetItems(const InternetModel* model, - const QModelIndexList& items, - int pos, bool play_now, bool enqueue) { + const QModelIndexList& items, int pos, + bool play_now, bool enqueue) { PlaylistItemList playlist_items; QList song_urls; - foreach (const QModelIndex& item, items) { + for (const QModelIndex& item : items) { switch (item.data(InternetModel::Role_PlayBehaviour).toInt()) { - case InternetModel::PlayBehaviour_SingleItem: - playlist_items << shared_ptr(new InternetPlaylistItem( - model->ServiceForIndex(item), - item.data(InternetModel::Role_SongMetadata).value())); - break; + case InternetModel::PlayBehaviour_SingleItem: + playlist_items << shared_ptr(new InternetPlaylistItem( + model->ServiceForIndex(item), + item.data(InternetModel::Role_SongMetadata) + .value())); + break; - case InternetModel::PlayBehaviour_UseSongLoader: - song_urls << item.data(InternetModel::Role_Url).toUrl(); - break; + case InternetModel::PlayBehaviour_UseSongLoader: + song_urls << item.data(InternetModel::Role_Url).toUrl(); + break; } } @@ -1057,11 +1117,12 @@ void Playlist::InsertInternetItems(const InternetModel* model, } void Playlist::InsertInternetItems(InternetService* service, - const SongList& songs, - int pos, bool play_now, bool enqueue) { + const SongList& songs, int pos, + bool play_now, bool enqueue) { PlaylistItemList playlist_items; - foreach (const Song& song, songs) { - playlist_items << shared_ptr(new InternetPlaylistItem(service, song)); + for (const Song& song : songs) { + playlist_items << shared_ptr( + new InternetPlaylistItem(service, song)); } InsertItems(playlist_items, pos, play_now, enqueue); @@ -1077,9 +1138,9 @@ void Playlist::UpdateItems(const SongList& songs) { // our list because we will not need to check it again. // And we also update undo actions. QLinkedList songs_list; - foreach (const Song& song, songs) songs_list.append(song); + for (const Song& song : songs) songs_list.append(song); - for (int i=0; i it(songs_list); while (it.hasNext()) { @@ -1087,8 +1148,8 @@ void Playlist::UpdateItems(const SongList& songs) { PlaylistItemPtr& item = items_[i]; if (item->Metadata().url() == song.url() && (item->Metadata().filetype() == Song::Type_Unknown || - // Stream may change and may need to be updated too - item->Metadata().filetype() == Song::Type_Stream)) { + // Stream may change and may need to be updated too + item->Metadata().filetype() == Song::Type_Stream)) { PlaylistItemPtr new_item; if (song.id() == -1) { new_item = PlaylistItemPtr(new SongPlaylistItem(song)); @@ -1097,12 +1158,13 @@ void Playlist::UpdateItems(const SongList& songs) { library_items_by_id_.insertMulti(song.id(), new_item); } items_[i] = new_item; - emit dataChanged(index(i, 0), index(i, ColumnCount-1)); + emit dataChanged(index(i, 0), index(i, ColumnCount - 1)); // Also update undo actions - for (int i=0; icount(); i++) { - QUndoCommand *undo_action = const_cast(undo_stack_->command(i)); - PlaylistUndoCommands::InsertItems *undo_action_insert = - dynamic_cast(undo_action); + for (int i = 0; i < undo_stack_->count(); i++) { + QUndoCommand* undo_action = + const_cast(undo_stack_->command(i)); + PlaylistUndoCommands::InsertItems* undo_action_insert = + dynamic_cast(undo_action); if (undo_action_insert) { bool found_and_updated = undo_action_insert->UpdateItem(new_item); if (found_and_updated) break; @@ -1117,20 +1179,18 @@ void Playlist::UpdateItems(const SongList& songs) { } QMimeData* Playlist::mimeData(const QModelIndexList& indexes) const { - if (indexes.isEmpty()) - return NULL; - + if (indexes.isEmpty()) return nullptr; + // We only want one index per row, but we can't just take column 0 because // the user might have hidden it. const int first_column = indexes.first().column(); - + QMimeData* data = new QMimeData; QList urls; QList rows; - foreach (const QModelIndex& index, indexes) { - if (index.column() != first_column) - continue; + for (const QModelIndex& index : indexes) { + if (index.column() != first_column) continue; urls << items_[index.row()]->Url(); rows << index.row(); @@ -1160,42 +1220,71 @@ bool Playlist::CompareItems(int column, Qt::SortOrder order, shared_ptr a = order == Qt::AscendingOrder ? _a : _b; shared_ptr b = order == Qt::AscendingOrder ? _b : _a; -#define cmp(field) return a->Metadata().field() < b->Metadata().field() -#define strcmp(field) return QString::localeAwareCompare( \ - a->Metadata().field().toLower(), b->Metadata().field().toLower()) < 0; +#define cmp(field) return a->Metadata().field() < b->Metadata().field() +#define strcmp(field) \ + return QString::localeAwareCompare(a->Metadata().field().toLower(), \ + b->Metadata().field().toLower()) < 0; switch (column) { - case Column_Title: strcmp(title); - case Column_Artist: strcmp(artist); - case Column_Album: strcmp(album); - case Column_Length: cmp(length_nanosec); - case Column_Track: cmp(track); - case Column_Disc: cmp(disc); - case Column_Year: cmp(year); - case Column_Genre: strcmp(genre); - case Column_AlbumArtist: strcmp(playlist_albumartist); - case Column_Composer: strcmp(composer); - case Column_Performer: strcmp(performer); - case Column_Grouping: strcmp(grouping); + case Column_Title: + strcmp(title); + case Column_Artist: + strcmp(artist); + case Column_Album: + strcmp(album); + case Column_Length: + cmp(length_nanosec); + case Column_Track: + cmp(track); + case Column_Disc: + cmp(disc); + case Column_Year: + cmp(year); + case Column_Genre: + strcmp(genre); + case Column_AlbumArtist: + strcmp(playlist_albumartist); + case Column_Composer: + strcmp(composer); + case Column_Performer: + strcmp(performer); + case Column_Grouping: + strcmp(grouping); - case Column_Rating: cmp(rating); - case Column_PlayCount: cmp(playcount); - case Column_SkipCount: cmp(skipcount); - case Column_LastPlayed: cmp(lastplayed); - case Column_Score: cmp(score); + case Column_Rating: + cmp(rating); + case Column_PlayCount: + cmp(playcount); + case Column_SkipCount: + cmp(skipcount); + case Column_LastPlayed: + cmp(lastplayed); + case Column_Score: + cmp(score); - case Column_BPM: cmp(bpm); - case Column_Bitrate: cmp(bitrate); - case Column_Samplerate: cmp(samplerate); - case Column_Filename: cmp(url); - case Column_BaseFilename: cmp(basefilename); - case Column_Filesize: cmp(filesize); - case Column_Filetype: cmp(filetype); - case Column_DateModified: cmp(mtime); - case Column_DateCreated: cmp(ctime); + case Column_BPM: + cmp(bpm); + case Column_Bitrate: + cmp(bitrate); + case Column_Samplerate: + cmp(samplerate); + case Column_Filename: + cmp(url); + case Column_BaseFilename: + cmp(basefilename); + case Column_Filesize: + cmp(filesize); + case Column_Filetype: + cmp(filetype); + case Column_DateModified: + cmp(mtime); + case Column_DateCreated: + cmp(ctime); - case Column_Comment: strcmp(comment); - case Column_Source: cmp(url); + case Column_Comment: + strcmp(comment); + case Column_Source: + cmp(url); } #undef cmp @@ -1206,39 +1295,69 @@ bool Playlist::CompareItems(int column, Qt::SortOrder order, QString Playlist::column_name(Column column) { switch (column) { - case Column_Title: return tr("Title"); - case Column_Artist: return tr("Artist"); - case Column_Album: return tr("Album"); - case Column_Length: return tr("Length"); - case Column_Track: return tr("Track"); - case Column_Disc: return tr("Disc"); - case Column_Year: return tr("Year"); - case Column_Genre: return tr("Genre"); - case Column_AlbumArtist: return tr("Album artist"); - case Column_Composer: return tr("Composer"); - case Column_Performer: return tr("Performer"); - case Column_Grouping: return tr("Grouping"); + case Column_Title: + return tr("Title"); + case Column_Artist: + return tr("Artist"); + case Column_Album: + return tr("Album"); + case Column_Length: + return tr("Length"); + case Column_Track: + return tr("Track"); + case Column_Disc: + return tr("Disc"); + case Column_Year: + return tr("Year"); + case Column_Genre: + return tr("Genre"); + case Column_AlbumArtist: + return tr("Album artist"); + case Column_Composer: + return tr("Composer"); + case Column_Performer: + return tr("Performer"); + case Column_Grouping: + return tr("Grouping"); - case Column_Rating: return tr("Rating"); - case Column_PlayCount: return tr("Play count"); - case Column_SkipCount: return tr("Skip count"); - case Column_LastPlayed: return tr("Last played"); - case Column_Score: return tr("Score"); + case Column_Rating: + return tr("Rating"); + case Column_PlayCount: + return tr("Play count"); + case Column_SkipCount: + return tr("Skip count"); + case Column_LastPlayed: + return tr("Last played", "A playlist's tag."); + case Column_Score: + return tr("Score"); - case Column_BPM: return tr("BPM"); - case Column_Bitrate: return tr("Bit rate"); - case Column_Samplerate: return tr("Sample rate"); - case Column_Filename: return tr("File name"); - case Column_BaseFilename: return tr("File name (without path)"); - case Column_Filesize: return tr("File size"); - case Column_Filetype: return tr("File type"); - case Column_DateModified: return tr("Date modified"); - case Column_DateCreated: return tr("Date created"); + case Column_BPM: + return tr("BPM"); + case Column_Bitrate: + return tr("Bit rate"); + case Column_Samplerate: + return tr("Sample rate"); + case Column_Filename: + return tr("File name"); + case Column_BaseFilename: + return tr("File name (without path)"); + case Column_Filesize: + return tr("File size"); + case Column_Filetype: + return tr("File type"); + case Column_DateModified: + return tr("Date modified"); + case Column_DateCreated: + return tr("Date created"); - case Column_Comment: return tr("Comment"); - case Column_Source: return tr("Source"); - case Column_Mood: return tr("Mood"); - default: return QString(); + case Column_Comment: + return tr("Comment"); + case Column_Source: + return tr("Source"); + case Column_Mood: + return tr("Mood"); + default: + return QString(); } return ""; } @@ -1251,41 +1370,41 @@ QString Playlist::abbreviated_column_name(Column column) { case Column_SkipCount: case Column_Track: return QString("%1#").arg(column_name[0]); - default: + default: return column_name; } return ""; } void Playlist::sort(int column, Qt::SortOrder order) { - if (ignore_sorting_) - return; + if (ignore_sorting_) return; PlaylistItemList new_items(items_); PlaylistItemList::iterator begin = new_items.begin(); - if(dynamic_playlist_ && current_item_index_.isValid()) + if (dynamic_playlist_ && current_item_index_.isValid()) begin += current_item_index_.row() + 1; qStableSort(begin, new_items.end(), - boost::bind(&Playlist::CompareItems, column, order, _1, _2)); + std::bind(&Playlist::CompareItems, column, order, _1, _2)); - undo_stack_->push(new PlaylistUndoCommands::SortItems(this, column, order, new_items)); + undo_stack_->push( + new PlaylistUndoCommands::SortItems(this, column, order, new_items)); } void Playlist::ReOrderWithoutUndo(const PlaylistItemList& new_items) { layoutAboutToBeChanged(); // This is a slow and nasty way to keep the persistent indices - QMap > old_persistent_mappings; - foreach (const QModelIndex& index, persistentIndexList()) { + QMap> old_persistent_mappings; + for (const QModelIndex& index : persistentIndexList()) { old_persistent_mappings[index.row()] = items_[index.row()]; } - + items_ = new_items; - QMapIterator > it(old_persistent_mappings); + QMapIterator> it(old_persistent_mappings); while (it.hasNext()) { it.next(); - for (int col=0 ; colSavePlaylistAsync(id_, items_, last_played_row(), dynamic_playlist_); + backend_->SavePlaylistAsync(id_, items_, last_played_row(), + dynamic_playlist_); } namespace { -typedef QFutureWatcher > PlaylistItemFutureWatcher; +typedef QFutureWatcher> PlaylistItemFutureWatcher; } void Playlist::Restore() { - if (!backend_) - return; + if (!backend_) return; items_.clear(); virtual_items_.clear(); @@ -1347,12 +1458,13 @@ void Playlist::Restore() { } void Playlist::ItemsLoaded() { - PlaylistItemFutureWatcher* watcher = static_cast(sender()); + PlaylistItemFutureWatcher* watcher = + static_cast(sender()); watcher->deleteLater(); PlaylistItemList items = watcher->future().results(); - // backend returns empty elements for library items which it couldn't + // backend returns empty elements for library items which it couldn't // match (because they got deleted); we don't need those QMutableListIterator it(items); while (it.hasNext()) { @@ -1379,7 +1491,7 @@ void Playlist::ItemsLoaded() { GeneratorPtr gen = Generator::Create(p.dynamic_type); if (gen) { // Hack: can't think of a better way to get the right backend - LibraryBackend* backend = NULL; + LibraryBackend* backend = nullptr; if (p.dynamic_backend == library_->songs_table()) backend = library_; else if (p.dynamic_backend == MagnatuneService::kSongsTable) @@ -1401,14 +1513,12 @@ void Playlist::ItemsLoaded() { s.beginGroup(kSettingsGroup); // should we gray out deleted songs asynchronously on startup? - if(s.value("greyoutdeleted", false).toBool()) { + if (s.value("greyoutdeleted", false).toBool()) { QtConcurrent::run(this, &Playlist::InvalidateDeletedSongs); } } -static bool DescendingIntLessThan(int a, int b) { - return a > b; -} +static bool DescendingIntLessThan(int a, int b) { return a > b; } void Playlist::RemoveItemsWithoutUndo(const QList& indicesIn) { // Sort the indices descending because removing elements 'backwards' @@ -1416,12 +1526,12 @@ void Playlist::RemoveItemsWithoutUndo(const QList& indicesIn) { QList indices = indicesIn; qSort(indices.begin(), indices.end(), DescendingIntLessThan); - for(int j = 0; j < indices.count(); j++) { + for (int j = 0; j < indices.count(); j++) { int beginning = indices[j], end = indices[j]; // Splits the indices into sequences. For example this: [1, 2, 4], // will get split into [1, 2] and [4]. - while(j != indices.count() - 1 && indices[j] == indices[j + 1] + 1) { + while (j != indices.count() - 1 && indices[j] == indices[j + 1] + 1) { beginning--; j++; } @@ -1449,7 +1559,7 @@ bool Playlist::removeRows(int row, int count, const QModelIndex& parent) { } bool Playlist::removeRows(QList& rows) { - if(rows.isEmpty()) { + if (rows.isEmpty()) { return false; } @@ -1458,16 +1568,16 @@ bool Playlist::removeRows(QList& rows) { qSort(rows.begin(), rows.end(), qGreater()); QList part; - while(!rows.isEmpty()) { + while (!rows.isEmpty()) { // we're splitting the input list into sequences of consecutive // numbers part.append(rows.takeFirst()); - while(!rows.isEmpty() && rows.first() == part.last() - 1) { + while (!rows.isEmpty() && rows.first() == part.last() - 1) { part.append(rows.takeFirst()); } // and now we're removing the current sequence - if(!removeRows(part.last(), part.size())) { + if (!removeRows(part.last(), part.size())) { return false; } @@ -1481,11 +1591,11 @@ PlaylistItemList Playlist::RemoveItemsWithoutUndo(int row, int count) { if (row < 0 || row >= items_.size() || row + count > items_.size()) { return PlaylistItemList(); } - beginRemoveRows(QModelIndex(), row, row+count-1); + beginRemoveRows(QModelIndex(), row, row + count - 1); // Remove items PlaylistItemList ret; - for (int i=0 ; iUrl() != url) - return; + if (current_item()->Url() != url) return; // Don't update the metadata if it's only a minor change from before if (current_item()->Metadata().artist() == song.artist() && @@ -1553,13 +1665,13 @@ void Playlist::SetStreamMetadata(const QUrl& url, const Song& song) { } void Playlist::ClearStreamMetadata() { - if (!current_item()) - return; + if (!current_item()) return; current_item()->ClearTemporaryMetadata(); UpdateScrobblePoint(); - emit dataChanged(index(current_item_index_.row(), 0), index(current_item_index_.row(), ColumnCount-1)); + emit dataChanged(index(current_item_index_.row(), 0), + index(current_item_index_.row(), ColumnCount - 1)); } bool Playlist::stop_after_current() const { @@ -1569,21 +1681,20 @@ bool Playlist::stop_after_current() const { PlaylistItemPtr Playlist::current_item() const { // QList[] runs in constant time, so no need to cache current_item - if (current_item_index_.isValid() && current_item_index_.row() <= items_.length()) + if (current_item_index_.isValid() && + current_item_index_.row() <= items_.length()) return items_[current_item_index_.row()]; - return PlaylistItemPtr(); + return PlaylistItemPtr(); } - + PlaylistItem::Options Playlist::current_item_options() const { - if (!current_item()) - return PlaylistItem::Default; + if (!current_item()) return PlaylistItem::Default; return current_item()->options(); } Song Playlist::current_item_metadata() const { - if (!current_item()) - return Song(); + if (!current_item()) return Song(); return current_item()->Metadata(); } @@ -1592,11 +1703,10 @@ void Playlist::UpdateScrobblePoint() { const qint64 length = current_item_metadata().length_nanosec(); if (length == 0) { - scrobble_point_ = 240ll * kNsecPerSec; // 4 minutes + scrobble_point_ = 240ll * kNsecPerSec; // 4 minutes } else { - scrobble_point_ = qBound(31ll * kNsecPerSec, - length/2, - 240ll * kNsecPerSec); + scrobble_point_ = + qBound(31ll * kNsecPerSec, length / 2, 240ll * kNsecPerSec); } set_lastfm_status(LastFM_New); @@ -1632,16 +1742,14 @@ void Playlist::TurnOffDynamicPlaylist() { } void Playlist::RepopulateDynamicPlaylist() { - if (!dynamic_playlist_) - return; + if (!dynamic_playlist_) return; RemoveItemsNotInQueue(); InsertSmartPlaylist(dynamic_playlist_); } void Playlist::ExpandDynamicPlaylist() { - if (!dynamic_playlist_) - return; + if (!dynamic_playlist_) return; InsertDynamicItems(5); } @@ -1656,31 +1764,27 @@ void Playlist::RemoveItemsNotInQueue() { forever { // Find a place to start - first row that isn't in the queue forever { - if (start >= rowCount()) - return; - if (!queue_->ContainsSourceRow(start)) - break; - start ++; + if (start >= rowCount()) return; + if (!queue_->ContainsSourceRow(start)) break; + start++; } // Figure out how many rows to remove - keep going until we find a row // that is in the queue int count = 1; forever { - if (start + count >= rowCount()) - break; - if (queue_->ContainsSourceRow(start + count)) - break; - count ++; + if (start + count >= rowCount()) break; + if (queue_->ContainsSourceRow(start + count)) break; + count++; } RemoveItemsWithoutUndo(start, count); - start ++; + start++; } } void Playlist::ReloadItems(const QList& rows) { - foreach (int row, rows) { + for (int row : rows) { PlaylistItemPtr item = item_at(row); item->Reload(); @@ -1688,7 +1792,7 @@ void Playlist::ReloadItems(const QList& rows) { if (row == current_row()) { InformOfCurrentSongChange(); } else { - emit dataChanged(index(row, 0), index(row, ColumnCount-1)); + emit dataChanged(index(row, 0), index(row, ColumnCount - 1)); } } @@ -1698,7 +1802,7 @@ void Playlist::ReloadItems(const QList& rows) { void Playlist::RateSong(const QModelIndex& index, double rating) { int row = index.row(); - if(has_item_at(row)) { + if (has_item_at(row)) { PlaylistItemPtr item = item_at(row); if (item && item->IsLocalLibraryItem() && item->Metadata().id() != -1) { library_->UpdateSongRatingAsync(item->Metadata().id(), rating); @@ -1708,11 +1812,13 @@ void Playlist::RateSong(const QModelIndex& index, double rating) { void Playlist::AddSongInsertVetoListener(SongInsertVetoListener* listener) { veto_listeners_.append(listener); - connect(listener, SIGNAL(destroyed()), this, SLOT(SongInsertVetoListenerDestroyed())); + connect(listener, SIGNAL(destroyed()), this, + SLOT(SongInsertVetoListenerDestroyed())); } void Playlist::RemoveSongInsertVetoListener(SongInsertVetoListener* listener) { - disconnect(listener, SIGNAL(destroyed()), this, SLOT(SongInsertVetoListenerDestroyed())); + disconnect(listener, SIGNAL(destroyed()), this, + SLOT(SongInsertVetoListenerDestroyed())); veto_listeners_.removeAll(listener); } @@ -1724,11 +1830,11 @@ void Playlist::Shuffle() { PlaylistItemList new_items(items_); int begin = 0; - if(dynamic_playlist_ && current_item_index_.isValid()) + if (dynamic_playlist_ && current_item_index_.isValid()) begin += current_item_index_.row() + 1; const int count = items_.count(); - for (int i=begin; i < count; ++i) { + for (int i = begin; i < count; ++i) { int new_pos = i + (rand() % (count - i)); std::swap(new_items[i], new_items[new_pos]); @@ -1739,13 +1845,12 @@ void Playlist::Shuffle() { namespace { bool AlbumShuffleComparator(const QMap& album_key_positions, - const QMap& album_keys, - int left, int right) { + const QMap& album_keys, int left, + int right) { const int left_pos = album_key_positions[album_keys[left]]; const int right_pos = album_key_positions[album_keys[right]]; - if (left_pos == right_pos) - return left < right; + if (left_pos == right_pos) return left < right; return left_pos < right_pos; } } @@ -1771,54 +1876,54 @@ void Playlist::ReshuffleIndices() { std::advance(begin, current_virtual_index_ + 1); switch (playlist_sequence_->shuffle_mode()) { - case PlaylistSequence::Shuffle_Off: - // Handled above. - break; + case PlaylistSequence::Shuffle_Off: + // Handled above. + break; - case PlaylistSequence::Shuffle_All: - case PlaylistSequence::Shuffle_InsideAlbum: - std::random_shuffle(begin, end); - break; + case PlaylistSequence::Shuffle_All: + case PlaylistSequence::Shuffle_InsideAlbum: + std::random_shuffle(begin, end); + break; - case PlaylistSequence::Shuffle_Albums: { - QMap album_keys; // real index -> key - QSet album_key_set; // unique keys + case PlaylistSequence::Shuffle_Albums: { + QMap album_keys; // real index -> key + QSet album_key_set; // unique keys - // Find all the unique albums in the playlist - for (QList::iterator it = begin ; it != end ; ++it) { - const int index = *it; - const QString key = items_[index]->Metadata().AlbumKey(); - album_keys[index] = key; - album_key_set << key; - } - - // Shuffle them - QStringList shuffled_album_keys = album_key_set.toList(); - std::random_shuffle(shuffled_album_keys.begin(), - shuffled_album_keys.end()); - - // If the user is currently playing a song, force its album to be first. - if (current_virtual_index_ != -1) { - const QString key = items_[current_row()]->Metadata().AlbumKey(); - const int pos = shuffled_album_keys.indexOf(key); - if (pos >= 1) { - std::swap(shuffled_album_keys[0], shuffled_album_keys[pos]); + // Find all the unique albums in the playlist + for (QList::iterator it = begin; it != end; ++it) { + const int index = *it; + const QString key = items_[index]->Metadata().AlbumKey(); + album_keys[index] = key; + album_key_set << key; } - } - // Create album key -> position mapping for fast lookup - QMap album_key_positions; - for (int i=0 ; iMetadata().AlbumKey(); + const int pos = shuffled_album_keys.indexOf(key); + if (pos >= 1) { + std::swap(shuffled_album_keys[0], shuffled_album_keys[pos]); + } + } + + // Create album key -> position mapping for fast lookup + QMap album_key_positions; + for (int i = 0; i < shuffled_album_keys.count(); ++i) { + album_key_positions[shuffled_album_keys[i]] = i; + } + + // Sort the virtual items + std::stable_sort(begin, end, + std::bind(AlbumShuffleComparator, album_key_positions, album_keys, _1, _2)); - break; - } + break; + } } } @@ -1830,28 +1935,23 @@ void Playlist::set_sequence(PlaylistSequence* v) { ShuffleModeChanged(v->shuffle_mode()); } -QSortFilterProxyModel* Playlist::proxy() const { - return proxy_; -} +QSortFilterProxyModel* Playlist::proxy() const { return proxy_; } SongList Playlist::GetAllSongs() const { SongList ret; - foreach (PlaylistItemPtr item, items_) { + for (PlaylistItemPtr item : items_) { ret << item->Metadata(); } return ret; } -PlaylistItemList Playlist::GetAllItems() const { - return items_; -} +PlaylistItemList Playlist::GetAllItems() const { return items_; } quint64 Playlist::GetTotalLength() const { quint64 ret = 0; - foreach (PlaylistItemPtr item, items_) { + for (PlaylistItemPtr item : items_) { quint64 length = item->Metadata().length_nanosec(); - if (length > 0) - ret += length; + if (length > 0) ret += length; } return ret; } @@ -1861,35 +1961,38 @@ PlaylistItemList Playlist::library_items_by_id(int id) const { } void Playlist::TracksAboutToBeDequeued(const QModelIndex&, int begin, int end) { - for (int i=begin ; i<=end ; ++i) { - temp_dequeue_change_indexes_ << queue_->mapToSource(queue_->index(i, Column_Title)); + for (int i = begin; i <= end; ++i) { + temp_dequeue_change_indexes_ + << queue_->mapToSource(queue_->index(i, Column_Title)); } } void Playlist::TracksDequeued() { - foreach (const QModelIndex& index, temp_dequeue_change_indexes_) { + for (const QModelIndex& index : temp_dequeue_change_indexes_) { emit dataChanged(index, index); } temp_dequeue_change_indexes_.clear(); } void Playlist::TracksEnqueued(const QModelIndex&, int begin, int end) { - const QModelIndex& b = queue_->mapToSource(queue_->index(begin, Column_Title)); + const QModelIndex& b = + queue_->mapToSource(queue_->index(begin, Column_Title)); const QModelIndex& e = queue_->mapToSource(queue_->index(end, Column_Title)); emit dataChanged(b, e); } void Playlist::QueueLayoutChanged() { - for (int i=0 ; irowCount() ; ++i) { - const QModelIndex& index = queue_->mapToSource(queue_->index(i, Column_Title)); + for (int i = 0; i < queue_->rowCount(); ++i) { + const QModelIndex& index = + queue_->mapToSource(queue_->index(i, Column_Title)); emit dataChanged(index, index); } } void Playlist::ItemChanged(PlaylistItemPtr item) { - for (int row=0 ; rowMetadata(); - if(!song.is_stream()) { + if (!song.is_stream()) { bool exists = QFile::exists(song.url().toLocalFile()); - if(!exists && !item->HasForegroundColor(kInvalidSongPriority)) { + if (!exists && !item->HasForegroundColor(kInvalidSongPriority)) { // gray out the song if it's not there item->SetForegroundColor(kInvalidSongPriority, kInvalidSongColor); invalidated_rows.append(row); - } else if(exists && item->HasForegroundColor(kInvalidSongPriority)) { + } else if (exists && item->HasForegroundColor(kInvalidSongPriority)) { item->RemoveForegroundColor(kInvalidSongPriority); invalidated_rows.append(row); } @@ -1938,7 +2041,7 @@ void Playlist::RemoveDeletedSongs() { PlaylistItemPtr item = items_[row]; Song song = item->Metadata(); - if(!song.is_stream() && !QFile::exists(song.url().toLocalFile())) { + if (!song.is_stream() && !QFile::exists(song.url().toLocalFile())) { rows_to_remove.append(row); } } @@ -1947,13 +2050,11 @@ void Playlist::RemoveDeletedSongs() { } struct SongSimilarHash { - long operator() (const Song& song) const { - return HashSimilar(song); - } + long operator()(const Song& song) const { return HashSimilar(song); } }; struct SongSimilarEqual { - long operator() (const Song& song1, const Song& song2) const { + long operator()(const Song& song1, const Song& song2) const { return song1.IsSimilar(song2); } }; @@ -1990,23 +2091,22 @@ void Playlist::RemoveDuplicateSongs() { removeRows(rows_to_remove); } - bool Playlist::ApplyValidityOnCurrentSong(const QUrl& url, bool valid) { PlaylistItemPtr current = current_item(); - if(current) { + if (current) { Song current_song = current->Metadata(); // if validity has changed, reload the item - if(!current_song.is_stream() && - !current_song.is_cdda() && + if (!current_song.is_stream() && !current_song.is_cdda() && current_song.url() == url && - current_song.is_valid() != QFile::exists(current_song.url().toLocalFile())) { + current_song.is_valid() != + QFile::exists(current_song.url().toLocalFile())) { ReloadItems(QList() << current_row()); } // gray out the song if it's now broken; otherwise undo the gray color - if(valid) { + if (valid) { current->RemoveForegroundColor(kInvalidSongPriority); } else { current->SetForegroundColor(kInvalidSongPriority, kInvalidSongColor); @@ -2019,3 +2119,10 @@ bool Playlist::ApplyValidityOnCurrentSong(const QUrl& url, bool valid) { void Playlist::SetColumnAlignment(const ColumnAlignmentMap& alignment) { column_alignments_ = alignment; } + +void Playlist::SkipTracks(const QModelIndexList& source_indexes) { + for (const QModelIndex& source_index : source_indexes) { + PlaylistItemPtr track_to_skip = item_at(source_index.row()); + track_to_skip->SetShouldSkip(!((track_to_skip)->GetShouldSkip())); + } +} diff --git a/src/playlist/playlist.h b/src/playlist/playlist.h index 8a24ce7f8..8f628a196 100644 --- a/src/playlist/playlist.h +++ b/src/playlist/playlist.h @@ -21,8 +21,6 @@ #include #include -#include - #include "playlistitem.h" #include "playlistsequence.h" #include "core/tagreaderclient.h" @@ -41,12 +39,12 @@ class QSortFilterProxyModel; class QUndoStack; namespace PlaylistUndoCommands { - class InsertItems; - class RemoveItems; - class MoveItems; - class ReOrderItems; - class SortItems; - class ShuffleItems; +class InsertItems; +class RemoveItems; +class MoveItems; +class ReOrderItems; +class SortItems; +class ShuffleItems; } typedef QMap ColumnAlignmentMap; @@ -59,11 +57,13 @@ Q_DECLARE_METATYPE(ColumnAlignmentMap); class SongInsertVetoListener : public QObject { Q_OBJECT -public: + public: // Listener returns a list of 'invalid' songs. 'old_songs' are songs that are - // currently in the playlist and 'new_songs' are the songs about to be added if + // currently in the playlist and 'new_songs' are the songs about to be added + // if // nobody exercises a veto. - virtual SongList AboutToInsertSongs(const SongList& old_songs, const SongList& new_songs) = 0; + virtual SongList AboutToInsertSongs(const SongList& old_songs, + const SongList& new_songs) = 0; }; class Playlist : public QAbstractListModel { @@ -75,15 +75,14 @@ class Playlist : public QAbstractListModel { friend class PlaylistUndoCommands::ReOrderItems; public: - Playlist(PlaylistBackend* backend, - TaskManager* task_manager, - LibraryBackend* library, - int id, - const QString& special_type = QString(), - bool favorite = false, - QObject* parent = 0); + Playlist(PlaylistBackend* backend, TaskManager* task_manager, + LibraryBackend* library, int id, + const QString& special_type = QString(), bool favorite = false, + QObject* parent = nullptr); ~Playlist(); + void SkipTracks(const QModelIndexList& source_indexes); + // Always add new columns to the end of this enum - the values are persisted enum Column { Column_Title = 0, @@ -96,7 +95,6 @@ class Playlist : public QAbstractListModel { Column_Disc, Column_Year, Column_Genre, - Column_BPM, Column_Bitrate, Column_Samplerate, @@ -106,21 +104,16 @@ class Playlist : public QAbstractListModel { Column_Filetype, Column_DateCreated, Column_DateModified, - Column_Rating, Column_PlayCount, Column_SkipCount, Column_LastPlayed, Column_Score, - Column_Comment, - Column_Source, Column_Mood, - Column_Performer, Column_Grouping, - ColumnCount }; @@ -133,12 +126,12 @@ class Playlist : public QAbstractListModel { }; enum LastFMStatus { - LastFM_New = 0, // Haven't scrobbled yet, but we want to later - LastFM_Scrobbled, // Scrobbled ok - LastFM_Seeked, // The user seeked so don't scrobble - LastFM_Error, // Tried to scrobble but got an error - LastFM_Invalid, // The song isn't suitable for scrobbling - LastFM_Queued, // Track added to the queue for scrobbling + LastFM_New = 0, // Haven't scrobbled yet, but we want to later + LastFM_Scrobbled, // Scrobbled ok + LastFM_Seeked, // The user seeked so don't scrobble + LastFM_Error, // Tried to scrobble but got an error + LastFM_Invalid, // The song isn't suitable for scrobbling + LastFM_Queued, // Track added to the queue for scrobbling }; static const char* kCddaMimeType; @@ -156,14 +149,15 @@ class Playlist : public QAbstractListModel { static const int kUndoStackSize; static const int kUndoItemLimit; - static bool CompareItems(int column, Qt::SortOrder order, - PlaylistItemPtr a, PlaylistItemPtr b); + static bool CompareItems(int column, Qt::SortOrder order, PlaylistItemPtr a, + PlaylistItemPtr b); static QString column_name(Column column); static QString abbreviated_column_name(Column column); static bool column_is_editable(Playlist::Column column); - static bool set_column_value(Song& song, Column column, const QVariant& value); + static bool set_column_value(Song& song, Column column, + const QVariant& value); // Persistence void Save() const; @@ -194,7 +188,9 @@ class Playlist : public QAbstractListModel { void set_special_type(const QString& v) { special_type_ = v; } const PlaylistItemPtr& item_at(int index) const { return items_[index]; } - const bool has_item_at(int index) const { return index >= 0 && index < rowCount(); } + const bool has_item_at(int index) const { + return index >= 0 && index < rowCount(); + } PlaylistItemPtr current_item() const; @@ -205,7 +201,7 @@ class Playlist : public QAbstractListModel { SongList GetAllSongs() const; PlaylistItemList GetAllItems() const; - quint64 GetTotalLength() const; // in seconds + quint64 GetTotalLength() const; // in seconds void set_sequence(PlaylistSequence* v); PlaylistSequence* sequence() const { return playlist_sequence_; } @@ -215,28 +211,42 @@ class Playlist : public QAbstractListModel { // Scrobbling qint64 scrobble_point_nanosec() const { return scrobble_point_; } LastFMStatus get_lastfm_status() const { return lastfm_status_; } - bool have_incremented_playcount() const { return have_incremented_playcount_; } - void set_lastfm_status(LastFMStatus status) {lastfm_status_ = status; } + bool have_incremented_playcount() const { + return have_incremented_playcount_; + } + void set_lastfm_status(LastFMStatus status) { lastfm_status_ = status; } void set_have_incremented_playcount() { have_incremented_playcount_ = true; } // Changing the playlist - void InsertItems (const PlaylistItemList& items, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertLibraryItems (const SongList& items, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertSongs (const SongList& items, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertSongsOrLibraryItems(const SongList& items, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertSmartPlaylist (smart_playlists::GeneratorPtr gen, int pos = -1, bool play_now = false, bool enqueue = false); - void InsertInternetItems (InternetService* service, - const SongList& songs, int pos = -1, bool play_now = false, bool enqueue = false); + void InsertItems(const PlaylistItemList& items, int pos = -1, + bool play_now = false, bool enqueue = false); + void InsertLibraryItems(const SongList& items, int pos = -1, + bool play_now = false, bool enqueue = false); + void InsertSongs(const SongList& items, int pos = -1, bool play_now = false, + bool enqueue = false); + void InsertSongsOrLibraryItems(const SongList& items, int pos = -1, + bool play_now = false, bool enqueue = false); + void InsertSmartPlaylist(smart_playlists::GeneratorPtr gen, int pos = -1, + bool play_now = false, bool enqueue = false); + void InsertInternetItems(InternetService* service, const SongList& songs, + int pos = -1, bool play_now = false, + bool enqueue = false); void ReshuffleIndices(); - - // If this playlist contains the current item, this method will apply the "valid" flag on it. - // If the "valid" flag is false, the song will be greyed out. Otherwise the grey color will + + // If this playlist contains the current item, this method will apply the + // "valid" flag on it. + // If the "valid" flag is false, the song will be greyed out. Otherwise the + // grey color will // be undone. - // If the song is a local file and it's valid but non existent or invalid but exists, the - // song will be reloaded to even out the situation because obviously something has changed. - // This returns true if this playlist had current item when the method was invoked. + // If the song is a local file and it's valid but non existent or invalid but + // exists, the + // song will be reloaded to even out the situation because obviously something + // has changed. + // This returns true if this playlist had current item when the method was + // invoked. bool ApplyValidityOnCurrentSong(const QUrl& url, bool valid); - // Grays out and reloads all deleted songs in all playlists. Also, "ungreys" those songs + // Grays out and reloads all deleted songs in all playlists. Also, "ungreys" + // those songs // which were once deleted but now got restored somehow. void InvalidateDeletedSongs(); // Removes from the playlist all local files that don't exist anymore. @@ -259,21 +269,28 @@ class Playlist : public QAbstractListModel { void MoodbarUpdated(const QModelIndex& index); // QAbstractListModel - int rowCount(const QModelIndex& = QModelIndex()) const { return items_.count(); } - int columnCount(const QModelIndex& = QModelIndex()) const { return ColumnCount; } + int rowCount(const QModelIndex& = QModelIndex()) const { + return items_.count(); + } + int columnCount(const QModelIndex& = QModelIndex()) const { + return ColumnCount; + } QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; - bool setData(const QModelIndex &index, const QVariant &value, int role); - QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; - Qt::ItemFlags flags(const QModelIndex &index) const; + bool setData(const QModelIndex& index, const QVariant& value, int role); + QVariant headerData(int section, Qt::Orientation orientation, + int role = Qt::DisplayRole) const; + Qt::ItemFlags flags(const QModelIndex& index) const; QStringList mimeTypes() const; Qt::DropActions supportedDropActions() const; QMimeData* mimeData(const QModelIndexList& indexes) const; - bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent); + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int column, const QModelIndex& parent); void sort(int column, Qt::SortOrder order); - bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()); + bool removeRows(int row, int count, + const QModelIndex& parent = QModelIndex()); public slots: - void set_current_row(int index); + void set_current_row(int index, bool is_stopping = false); void Paused(); void Playing(); void Stopped(); @@ -296,11 +313,13 @@ class Playlist : public QAbstractListModel { void SetColumnAlignment(const ColumnAlignmentMap& alignment); - void InsertUrls(const QList& urls, int pos = -1, bool play_now = false, bool enqueue = false); - // Removes items with given indices from the playlist. This operation is not undoable. + void InsertUrls(const QList& urls, int pos = -1, bool play_now = false, + bool enqueue = false); + // Removes items with given indices from the playlist. This operation is not + // undoable. void RemoveItemsWithoutUndo(const QList& indices); - signals: +signals: void RestoreFinished(); void CurrentSongChanged(const Song& metadata); void EditingFinished(const QModelIndex& index); @@ -322,14 +341,15 @@ class Playlist : public QAbstractListModel { void TurnOnDynamicPlaylist(smart_playlists::GeneratorPtr gen); void InsertInternetItems(const InternetModel* model, - const QModelIndexList& items, - int pos, bool play_now, bool enqueue); + const QModelIndexList& items, int pos, bool play_now, + bool enqueue); - template - void InsertSongItems(const SongList& songs, int pos, bool play_now, bool enqueue); + template + void InsertSongItems(const SongList& songs, int pos, bool play_now, + bool enqueue); + + void InsertDynamicItems(int count); - void InsertDynamicItems(int count) ; - // Modify the playlist without changing the undo stack. These are used by // our friends in PlaylistUndoCommands void InsertItemsWithoutUndo(const PlaylistItemList& items, int pos, @@ -350,7 +370,8 @@ class Playlist : public QAbstractListModel { void TracksDequeued(); void TracksEnqueued(const QModelIndex&, int begin, int end); void QueueLayoutChanged(); - void SongSaveComplete(TagReaderReply* reply, const QPersistentModelIndex& index); + void SongSaveComplete(TagReaderReply* reply, + const QPersistentModelIndex& index); void ItemReloadComplete(); void ItemsLoaded(); void SongInsertVetoListenerDestroyed(); @@ -370,8 +391,8 @@ class Playlist : public QAbstractListModel { bool favorite_; PlaylistItemList items_; - QList virtual_items_; // Contains the indices into items_ in the order - // that they will be played. + QList virtual_items_; // Contains the indices into items_ in the order + // that they will be played. // A map of library ID to playlist item - for fast lookups when library // items change. QMultiMap library_items_by_id_; @@ -403,7 +424,7 @@ class Playlist : public QAbstractListModel { QString special_type_; }; -//QDataStream& operator <<(QDataStream&, const Playlist*); -//QDataStream& operator >>(QDataStream&, Playlist*&); +// QDataStream& operator <<(QDataStream&, const Playlist*); +// QDataStream& operator >>(QDataStream&, Playlist*&); -#endif // PLAYLIST_H +#endif // PLAYLIST_H diff --git a/src/playlist/playlistbackend.cpp b/src/playlist/playlistbackend.cpp index c248a2b3d..82fd33e53 100644 --- a/src/playlist/playlistbackend.cpp +++ b/src/playlist/playlistbackend.cpp @@ -16,15 +16,9 @@ */ #include "playlistbackend.h" -#include "core/application.h" -#include "core/database.h" -#include "core/scopedtransaction.h" -#include "core/song.h" -#include "library/librarybackend.h" -#include "library/sqlrow.h" -#include "playlist/songplaylistitem.h" -#include "playlistparsers/cueparser.h" -#include "smartplaylists/generator.h" + +#include +#include #include #include @@ -33,20 +27,26 @@ #include #include -#include +#include "core/application.h" +#include "core/database.h" +#include "core/logging.h" +#include "core/scopedtransaction.h" +#include "core/song.h" +#include "library/librarybackend.h" +#include "library/sqlrow.h" +#include "playlist/songplaylistitem.h" +#include "playlistparsers/cueparser.h" +#include "smartplaylists/generator.h" + +using std::placeholders::_1; +using std::shared_ptr; using smart_playlists::GeneratorPtr; -using boost::shared_ptr; - const int PlaylistBackend::kSongTableJoins = 4; PlaylistBackend::PlaylistBackend(Application* app, QObject* parent) - : QObject(parent), - app_(app), - db_(app_->database()) -{ -} + : QObject(parent), app_(app), db_(app_->database()) {} PlaylistBackend::PlaylistList PlaylistBackend::GetAllPlaylists() { return GetPlaylists(GetPlaylists_All); @@ -60,7 +60,8 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetAllFavoritePlaylists() { return GetPlaylists(GetPlaylists_Favorite); } -PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(GetPlaylistsFlags flags) { +PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists( + GetPlaylistsFlags flags) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); @@ -78,15 +79,16 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(GetPlaylistsFlags fl condition = " WHERE " + condition_list.join(" OR "); } - QSqlQuery q("SELECT ROWID, name, last_played, dynamic_playlist_type," - " dynamic_playlist_data, dynamic_playlist_backend," - " special_type, ui_path, is_favorite" - " FROM playlists" - " " + condition + - " ORDER BY ui_order", db); + QSqlQuery q( + "SELECT ROWID, name, last_played, dynamic_playlist_type," + " dynamic_playlist_data, dynamic_playlist_backend," + " special_type, ui_path, is_favorite" + " FROM playlists" + " " + + condition + " ORDER BY ui_order", + db); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { Playlist p; @@ -109,15 +111,16 @@ PlaylistBackend::Playlist PlaylistBackend::GetPlaylist(int id) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q("SELECT ROWID, name, last_played, dynamic_playlist_type," - " dynamic_playlist_data, dynamic_playlist_backend," - " special_type, ui_path, is_favorite" - " FROM playlists" - " WHERE ROWID=:id", db); + QSqlQuery q( + "SELECT ROWID, name, last_played, dynamic_playlist_type," + " dynamic_playlist_data, dynamic_playlist_backend," + " special_type, ui_path, is_favorite" + " FROM playlists" + " WHERE ROWID=:id", + db); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return Playlist(); + if (db_->CheckErrors(q)) return Playlist(); q.next(); @@ -139,10 +142,17 @@ QList PlaylistBackend::GetPlaylistRows(int playlist) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QString query = "SELECT songs.ROWID, " + Song::JoinSpec("songs") + "," - " magnatune_songs.ROWID, " + Song::JoinSpec("magnatune_songs") + "," - " jamendo_songs.ROWID, " + Song::JoinSpec("jamendo_songs") + "," - " p.ROWID, " + Song::JoinSpec("p") + "," + QString query = "SELECT songs.ROWID, " + Song::JoinSpec("songs") + + "," + " magnatune_songs.ROWID, " + + Song::JoinSpec("magnatune_songs") + + "," + " jamendo_songs.ROWID, " + + Song::JoinSpec("jamendo_songs") + + "," + " p.ROWID, " + + Song::JoinSpec("p") + + "," " p.type, p.radio_service" " FROM playlist_items AS p" " LEFT JOIN songs" @@ -156,8 +166,7 @@ QList PlaylistBackend::GetPlaylistRows(int playlist) { q.bindValue(":playlist", playlist); q.exec(); - if (db_->CheckErrors(q)) - return QList(); + if (db_->CheckErrors(q)) return QList(); QList rows; @@ -174,8 +183,10 @@ QFuture PlaylistBackend::GetPlaylistItems(int playlist) { // it's probable that we'll have a few songs associated with the // same CUE so we're caching results of parsing CUEs - boost::shared_ptr state_ptr(new NewSongFromQueryState()); - return QtConcurrent::mapped(rows, boost::bind(&PlaylistBackend::NewPlaylistItemFromQuery, this, _1, state_ptr)); + std::shared_ptr state_ptr(new NewSongFromQueryState()); + return QtConcurrent::mapped( + rows, std::bind(&PlaylistBackend::NewPlaylistItemFromQuery, this, _1, + state_ptr)); } QFuture PlaylistBackend::GetPlaylistSongs(int playlist) { @@ -184,15 +195,18 @@ QFuture PlaylistBackend::GetPlaylistSongs(int playlist) { // it's probable that we'll have a few songs associated with the // same CUE so we're caching results of parsing CUEs - boost::shared_ptr state_ptr(new NewSongFromQueryState()); - return QtConcurrent::mapped(rows, boost::bind(&PlaylistBackend::NewSongFromQuery, this, _1, state_ptr)); + std::shared_ptr state_ptr(new NewSongFromQueryState()); + return QtConcurrent::mapped( + rows, std::bind(&PlaylistBackend::NewSongFromQuery, this, _1, state_ptr)); } -PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery(const SqlRow& row, boost::shared_ptr state) { +PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery( + const SqlRow& row, std::shared_ptr state) { // The song tables get joined first, plus one each for the song ROWIDs const int playlist_row = (Song::kColumns.count() + 1) * kSongTableJoins; - PlaylistItemPtr item(PlaylistItem::NewFromType(row.value(playlist_row).toString())); + PlaylistItemPtr item( + PlaylistItem::NewFromType(row.value(playlist_row).toString())); if (item) { item->InitFromQuery(row); return RestoreCueData(item, state); @@ -201,29 +215,31 @@ PlaylistItemPtr PlaylistBackend::NewPlaylistItemFromQuery(const SqlRow& row, boo } } -Song PlaylistBackend::NewSongFromQuery(const SqlRow& row, boost::shared_ptr state) { +Song PlaylistBackend::NewSongFromQuery( + const SqlRow& row, std::shared_ptr state) { return NewPlaylistItemFromQuery(row, state)->Metadata(); } // If song had a CUE and the CUE still exists, the metadata from it will // be applied here. -PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, boost::shared_ptr state) { +PlaylistItemPtr PlaylistBackend::RestoreCueData( + PlaylistItemPtr item, std::shared_ptr state) { // we need library to run a CueParser; also, this method applies only to // file-type PlaylistItems - if(item->type() != "File") { + if (item->type() != "File") { return item; } CueParser cue_parser(app_->library_backend()); Song song = item->Metadata(); // we're only interested in .cue songs here - if(!song.has_cue()) { + if (!song.has_cue()) { return item; } QString cue_path = song.cue_path(); // if .cue was deleted - reload the song - if(!QFile::exists(cue_path)) { + if (!QFile::exists(cue_path)) { item->Reload(); return item; } @@ -232,20 +248,21 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, boost::sha { QMutexLocker locker(&state->mutex_); - if(!state->cached_cues_.contains(cue_path)) { + if (!state->cached_cues_.contains(cue_path)) { QFile cue(cue_path); cue.open(QIODevice::ReadOnly); - song_list = cue_parser.Load(&cue, cue_path, QDir(cue_path.section('/', 0, -2))); + song_list = + cue_parser.Load(&cue, cue_path, QDir(cue_path.section('/', 0, -2))); state->cached_cues_[cue_path] = song_list; } else { song_list = state->cached_cues_[cue_path]; } } - foreach(const Song& from_list, song_list) { - if(from_list.url().toEncoded() == song.url().toEncoded() && - from_list.beginning_nanosec() == song.beginning_nanosec()) { + for (const Song& from_list : song_list) { + if (from_list.url().toEncoded() == song.url().toEncoded() && + from_list.beginning_nanosec() == song.beginning_nanosec()) { // we found a matching section; replace the input // item with a new one containing CUE metadata return PlaylistItemPtr(new SongPlaylistItem(from_list)); @@ -257,13 +274,13 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, boost::sha return item; } -void PlaylistBackend::SavePlaylistAsync(int playlist, const PlaylistItemList &items, +void PlaylistBackend::SavePlaylistAsync(int playlist, + const PlaylistItemList& items, int last_played, GeneratorPtr dynamic) { - metaObject()->invokeMethod(this, "SavePlaylist", Qt::QueuedConnection, - Q_ARG(int, playlist), - Q_ARG(PlaylistItemList, items), - Q_ARG(int, last_played), - Q_ARG(smart_playlists::GeneratorPtr, dynamic)); + metaObject()->invokeMethod( + this, "SavePlaylist", Qt::QueuedConnection, Q_ARG(int, playlist), + Q_ARG(PlaylistItemList, items), Q_ARG(int, last_played), + Q_ARG(smart_playlists::GeneratorPtr, dynamic)); } void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList& items, @@ -271,29 +288,35 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList& items, QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); + qLog(Debug) << "Saving playlist" << playlist; + QSqlQuery clear("DELETE FROM playlist_items WHERE playlist = :playlist", db); - QSqlQuery insert("INSERT INTO playlist_items" - " (playlist, type, library_id, radio_service, " + - Song::kColumnSpec + ")" - " VALUES (:playlist, :type, :library_id, :radio_service, " + - Song::kBindSpec + ")", db); - QSqlQuery update("UPDATE playlists SET " - " last_played=:last_played," - " dynamic_playlist_type=:dynamic_type," - " dynamic_playlist_data=:dynamic_data," - " dynamic_playlist_backend=:dynamic_backend" - " WHERE ROWID=:playlist", db); + QSqlQuery insert( + "INSERT INTO playlist_items" + " (playlist, type, library_id, radio_service, " + + Song::kColumnSpec + + ")" + " VALUES (:playlist, :type, :library_id, :radio_service, " + + Song::kBindSpec + ")", + db); + QSqlQuery update( + "UPDATE playlists SET " + " last_played=:last_played," + " dynamic_playlist_type=:dynamic_type," + " dynamic_playlist_data=:dynamic_data," + " dynamic_playlist_backend=:dynamic_backend" + " WHERE ROWID=:playlist", + db); ScopedTransaction transaction(&db); // Clear the existing items in the playlist clear.bindValue(":playlist", playlist); clear.exec(); - if (db_->CheckErrors(clear)) - return; + if (db_->CheckErrors(clear)) return; // Save the new ones - foreach (PlaylistItemPtr item, items) { + for (PlaylistItemPtr item : items) { insert.bindValue(":playlist", playlist); item->BindToQuery(&insert); @@ -314,24 +337,24 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList& items, } update.bindValue(":playlist", playlist); update.exec(); - if (db_->CheckErrors(update)) - return; + if (db_->CheckErrors(update)) return; transaction.Commit(); } -int PlaylistBackend::CreatePlaylist(const QString &name, +int PlaylistBackend::CreatePlaylist(const QString& name, const QString& special_type) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q("INSERT INTO playlists (name, special_type)" - " VALUES (:name, :special_type)", db); + QSqlQuery q( + "INSERT INTO playlists (name, special_type)" + " VALUES (:name, :special_type)", + db); q.bindValue(":name", name); q.bindValue(":special_type", special_type); q.exec(); - if (db_->CheckErrors(q)) - return -1; + if (db_->CheckErrors(q)) return -1; return q.lastInsertId().toInt(); } @@ -348,17 +371,15 @@ void PlaylistBackend::RemovePlaylist(int id) { ScopedTransaction transaction(&db); delete_playlist.exec(); - if (db_->CheckErrors(delete_playlist)) - return; + if (db_->CheckErrors(delete_playlist)) return; delete_items.exec(); - if (db_->CheckErrors(delete_items)) - return; + if (db_->CheckErrors(delete_items)) return; transaction.Commit(); } -void PlaylistBackend::RenamePlaylist(int id, const QString &new_name) { +void PlaylistBackend::RenamePlaylist(int id, const QString& new_name) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QSqlQuery q("UPDATE playlists SET name=:name WHERE ROWID=:id", db); @@ -372,7 +393,8 @@ void PlaylistBackend::RenamePlaylist(int id, const QString &new_name) { void PlaylistBackend::FavoritePlaylist(int id, bool is_favorite) { QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); - QSqlQuery q("UPDATE playlists SET is_favorite=:is_favorite WHERE ROWID=:id", db); + QSqlQuery q("UPDATE playlists SET is_favorite=:is_favorite WHERE ROWID=:id", + db); q.bindValue(":is_favorite", is_favorite ? 1 : 0); q.bindValue(":id", id); @@ -387,16 +409,14 @@ void PlaylistBackend::SetPlaylistOrder(const QList& ids) { QSqlQuery q("UPDATE playlists SET ui_order=-1", db); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; q = QSqlQuery("UPDATE playlists SET ui_order=:index WHERE ROWID=:id", db); - for (int i=0 ; iCheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; } transaction.Commit(); @@ -412,8 +432,7 @@ void PlaylistBackend::SetPlaylistUiPath(int id, const QString& path) { q.bindValue(":path", path); q.bindValue(":id", id); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; transaction.Commit(); } diff --git a/src/playlist/playlistbackend.h b/src/playlist/playlistbackend.h index c908a3a84..1d7c10179 100644 --- a/src/playlist/playlistbackend.h +++ b/src/playlist/playlistbackend.h @@ -34,14 +34,10 @@ class PlaylistBackend : public QObject { Q_OBJECT public: - Q_INVOKABLE PlaylistBackend(Application* app, QObject* parent = 0); + Q_INVOKABLE PlaylistBackend(Application* app, QObject* parent = nullptr); struct Playlist { - Playlist() - : id(-1), - favorite(false), - last_played(0) { - } + Playlist() : id(-1), favorite(false), last_played(0) {} int id; QString name; @@ -73,7 +69,8 @@ class PlaylistBackend : public QObject { int CreatePlaylist(const QString& name, const QString& special_type); void SavePlaylistAsync(int playlist, const PlaylistItemList& items, - int last_played, smart_playlists::GeneratorPtr dynamic); + int last_played, + smart_playlists::GeneratorPtr dynamic); void RenamePlaylist(int id, const QString& new_name); void FavoritePlaylist(int id, bool is_favorite); void RemovePlaylist(int id); @@ -92,9 +89,12 @@ class PlaylistBackend : public QObject { QList GetPlaylistRows(int playlist); - Song NewSongFromQuery(const SqlRow& row, boost::shared_ptr state); - PlaylistItemPtr NewPlaylistItemFromQuery(const SqlRow& row, boost::shared_ptr state); - PlaylistItemPtr RestoreCueData(PlaylistItemPtr item, boost::shared_ptr state); + Song NewSongFromQuery(const SqlRow& row, + std::shared_ptr state); + PlaylistItemPtr NewPlaylistItemFromQuery( + const SqlRow& row, std::shared_ptr state); + PlaylistItemPtr RestoreCueData(PlaylistItemPtr item, + std::shared_ptr state); enum GetPlaylistsFlags { GetPlaylists_OpenInUi = 1, @@ -107,4 +107,4 @@ class PlaylistBackend : public QObject { Database* db_; }; -#endif // PLAYLISTBACKEND_H +#endif // PLAYLISTBACKEND_H diff --git a/src/playlist/playlistcontainer.cpp b/src/playlist/playlistcontainer.cpp index fe9a48bd7..70e0b9327 100644 --- a/src/playlist/playlistcontainer.cpp +++ b/src/playlist/playlistcontainer.cpp @@ -37,19 +37,18 @@ const char* PlaylistContainer::kSettingsGroup = "Playlist"; const int PlaylistContainer::kFilterDelayMs = 100; const int PlaylistContainer::kFilterDelayPlaylistSizeThreshold = 5000; -PlaylistContainer::PlaylistContainer(QWidget *parent) - : QWidget(parent), - ui_(new Ui_PlaylistContainer), - manager_(NULL), - undo_(NULL), - redo_(NULL), - playlist_(NULL), - starting_up_(true), - tab_bar_visible_(false), - tab_bar_animation_(new QTimeLine(500, this)), - no_matches_label_(NULL), - filter_timer_(new QTimer(this)) -{ +PlaylistContainer::PlaylistContainer(QWidget* parent) + : QWidget(parent), + ui_(new Ui_PlaylistContainer), + manager_(nullptr), + undo_(nullptr), + redo_(nullptr), + playlist_(nullptr), + starting_up_(true), + tab_bar_visible_(false), + tab_bar_animation_(new QTimeLine(500, this)), + no_matches_label_(nullptr), + filter_timer_(new QTimer(this)) { ui_->setupUi(this); no_matches_label_ = new QLabel(ui_->playlist); @@ -61,9 +60,12 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) // Set the colour of the no matches label to the disabled text colour QPalette no_matches_palette = no_matches_label_->palette(); - const QColor no_matches_color = no_matches_palette.color(QPalette::Disabled, QPalette::Text); - no_matches_palette.setColor(QPalette::Normal, QPalette::WindowText, no_matches_color); - no_matches_palette.setColor(QPalette::Inactive, QPalette::WindowText, no_matches_color); + const QColor no_matches_color = + no_matches_palette.color(QPalette::Disabled, QPalette::Text); + no_matches_palette.setColor(QPalette::Normal, QPalette::WindowText, + no_matches_color); + no_matches_palette.setColor(QPalette::Inactive, QPalette::WindowText, + no_matches_color); no_matches_label_->setPalette(no_matches_palette); // Make it bold @@ -77,7 +79,8 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) ui_->tab_bar->setExpanding(false); ui_->tab_bar->setMovable(true); - connect(tab_bar_animation_, SIGNAL(frameChanged(int)), SLOT(SetTabBarHeight(int))); + connect(tab_bar_animation_, SIGNAL(frameChanged(int)), + SLOT(SetTabBarHeight(int))); ui_->tab_bar->setMaximumHeight(0); // Connections @@ -87,21 +90,18 @@ PlaylistContainer::PlaylistContainer(QWidget *parent) // set up timer for delayed filter updates filter_timer_->setSingleShot(true); filter_timer_->setInterval(kFilterDelayMs); - connect(filter_timer_,SIGNAL(timeout()),this,SLOT(UpdateFilter())); + connect(filter_timer_, SIGNAL(timeout()), this, SLOT(UpdateFilter())); // Replace playlist search filter with native search box. connect(ui_->filter, SIGNAL(textChanged(QString)), SLOT(MaybeUpdateFilter())); - connect(ui_->playlist, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), SLOT(FocusOnFilter(QKeyEvent*))); + connect(ui_->playlist, SIGNAL(FocusOnFilterSignal(QKeyEvent*)), + SLOT(FocusOnFilter(QKeyEvent*))); ui_->filter->installEventFilter(this); } -PlaylistContainer::~PlaylistContainer() { - delete ui_; -} +PlaylistContainer::~PlaylistContainer() { delete ui_; } -PlaylistView* PlaylistContainer::view() const { - return ui_->playlist; -} +PlaylistView* PlaylistContainer::view() const { return ui_->playlist; } void PlaylistContainer::SetActions(QAction* new_playlist, QAction* load_playlist, @@ -118,55 +118,55 @@ void PlaylistContainer::SetActions(QAction* new_playlist, connect(save_playlist, SIGNAL(triggered()), SLOT(SavePlaylist())); connect(load_playlist, SIGNAL(triggered()), SLOT(LoadPlaylist())); connect(next_playlist, SIGNAL(triggered()), SLOT(GoToNextPlaylistTab())); - connect(previous_playlist, SIGNAL(triggered()), SLOT(GoToPreviousPlaylistTab())); + connect(previous_playlist, SIGNAL(triggered()), + SLOT(GoToPreviousPlaylistTab())); } -void PlaylistContainer::SetManager(PlaylistManager *manager) { +void PlaylistContainer::SetManager(PlaylistManager* manager) { manager_ = manager; ui_->tab_bar->SetManager(manager); - connect(ui_->tab_bar, SIGNAL(CurrentIdChanged(int)), - manager, SLOT(SetCurrentPlaylist(int))); - connect(ui_->tab_bar, SIGNAL(Rename(int,QString)), - manager, SLOT(Rename(int,QString))); - connect(ui_->tab_bar, SIGNAL(Close(int)), - manager, SLOT(Close(int))); - connect(ui_->tab_bar, SIGNAL(PlaylistFavorited(int, bool)), - manager, SLOT(Favorite(int, bool))); + connect(ui_->tab_bar, SIGNAL(CurrentIdChanged(int)), manager, + SLOT(SetCurrentPlaylist(int))); + connect(ui_->tab_bar, SIGNAL(Rename(int, QString)), manager, + SLOT(Rename(int, QString))); + connect(ui_->tab_bar, SIGNAL(Close(int)), manager, SLOT(Close(int))); + connect(ui_->tab_bar, SIGNAL(PlaylistFavorited(int, bool)), manager, + SLOT(Favorite(int, bool))); - connect(ui_->tab_bar, SIGNAL(PlaylistOrderChanged(QList)), - manager, SLOT(ChangePlaylistOrder(QList))); + connect(ui_->tab_bar, SIGNAL(PlaylistOrderChanged(QList)), manager, + SLOT(ChangePlaylistOrder(QList))); connect(manager, SIGNAL(CurrentChanged(Playlist*)), SLOT(SetViewModel(Playlist*))); - connect(manager, SIGNAL(PlaylistAdded(int,QString,bool)), - SLOT(PlaylistAdded(int,QString,bool))); - connect(manager, SIGNAL(PlaylistClosed(int)), - SLOT(PlaylistClosed(int))); - connect(manager, SIGNAL(PlaylistRenamed(int,QString)), - SLOT(PlaylistRenamed(int,QString))); + connect(manager, SIGNAL(PlaylistAdded(int, QString, bool)), + SLOT(PlaylistAdded(int, QString, bool))); + connect(manager, SIGNAL(PlaylistClosed(int)), SLOT(PlaylistClosed(int))); + connect(manager, SIGNAL(PlaylistRenamed(int, QString)), + SLOT(PlaylistRenamed(int, QString))); } void PlaylistContainer::SetViewModel(Playlist* playlist) { if (view()->selectionModel()) { - disconnect(view()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(SelectionChanged())); + disconnect(view()->selectionModel(), + SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, + SLOT(SelectionChanged())); } if (playlist_ && playlist_->proxy()) { - disconnect(playlist_->proxy(), SIGNAL(modelReset()), + disconnect(playlist_->proxy(), SIGNAL(modelReset()), this, + SLOT(UpdateNoMatchesLabel())); + disconnect(playlist_->proxy(), SIGNAL(rowsInserted(QModelIndex, int, int)), this, SLOT(UpdateNoMatchesLabel())); - disconnect(playlist_->proxy(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(UpdateNoMatchesLabel())); - disconnect(playlist_->proxy(), SIGNAL(rowsRemoved(QModelIndex,int,int)), + disconnect(playlist_->proxy(), SIGNAL(rowsRemoved(QModelIndex, int, int)), this, SLOT(UpdateNoMatchesLabel())); } if (playlist_) { - disconnect(playlist_, SIGNAL(modelReset()), - this, SLOT(UpdateNoMatchesLabel())); - disconnect(playlist_, SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(UpdateNoMatchesLabel())); - disconnect(playlist_, SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(UpdateNoMatchesLabel())); + disconnect(playlist_, SIGNAL(modelReset()), this, + SLOT(UpdateNoMatchesLabel())); + disconnect(playlist_, SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(UpdateNoMatchesLabel())); + disconnect(playlist_, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(UpdateNoMatchesLabel())); } playlist_ = playlist; @@ -176,23 +176,30 @@ void PlaylistContainer::SetViewModel(Playlist* playlist) { view()->setModel(playlist->proxy()); view()->SetItemDelegates(manager_->library_backend()); view()->SetPlaylist(playlist); - view()->selectionModel()->select(manager_->current_selection(), QItemSelectionModel::ClearAndSelect); + view()->selectionModel()->select(manager_->current_selection(), + QItemSelectionModel::ClearAndSelect); playlist->IgnoreSorting(false); - connect(view()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(SelectionChanged())); + connect(view()->selectionModel(), + SIGNAL(selectionChanged(QItemSelection, QItemSelection)), this, + SLOT(SelectionChanged())); emit ViewSelectionModelChanged(); // Update filter ui_->filter->setText(playlist->proxy()->filterRegExp().pattern()); // Update the no matches label - connect(playlist_->proxy(), SIGNAL(modelReset()), SLOT(UpdateNoMatchesLabel())); - connect(playlist_->proxy(), SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(UpdateNoMatchesLabel())); - connect(playlist_->proxy(), SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(UpdateNoMatchesLabel())); + connect(playlist_->proxy(), SIGNAL(modelReset()), + SLOT(UpdateNoMatchesLabel())); + connect(playlist_->proxy(), SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(UpdateNoMatchesLabel())); + connect(playlist_->proxy(), SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(UpdateNoMatchesLabel())); connect(playlist_, SIGNAL(modelReset()), SLOT(UpdateNoMatchesLabel())); - connect(playlist_, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(UpdateNoMatchesLabel())); - connect(playlist_, SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(UpdateNoMatchesLabel())); + connect(playlist_, SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(UpdateNoMatchesLabel())); + connect(playlist_, SIGNAL(rowsRemoved(QModelIndex, int, int)), + SLOT(UpdateNoMatchesLabel())); UpdateNoMatchesLabel(); // Ensure that tab is current @@ -213,7 +220,6 @@ void PlaylistContainer::SetViewModel(Playlist* playlist) { ui_->redo->setDefaultAction(redo_); emit UndoRedoActionsChanged(undo_, redo_); - } void PlaylistContainer::ActivePlaying() { @@ -224,22 +230,20 @@ void PlaylistContainer::ActivePaused() { UpdateActiveIcon(QIcon(":tiny-pause.png")); } -void PlaylistContainer::ActiveStopped() { - UpdateActiveIcon(QIcon()); -} +void PlaylistContainer::ActiveStopped() { UpdateActiveIcon(QIcon()); } void PlaylistContainer::UpdateActiveIcon(const QIcon& icon) { // Unset all existing icons - for (int i=0 ; itab_bar->count() ; ++i) { + for (int i = 0; i < ui_->tab_bar->count(); ++i) { ui_->tab_bar->setTabIcon(i, QIcon()); } // Set our icon - if (!icon.isNull()) - ui_->tab_bar->set_icon_by_id(manager_->active_id(), icon); + if (!icon.isNull()) ui_->tab_bar->set_icon_by_id(manager_->active_id(), icon); } -void PlaylistContainer::PlaylistAdded(int id, const QString &name, bool favorite) { +void PlaylistContainer::PlaylistAdded(int id, const QString& name, + bool favorite) { const int index = ui_->tab_bar->count(); ui_->tab_bar->InsertTab(id, index, name, favorite); @@ -268,26 +272,21 @@ void PlaylistContainer::PlaylistAdded(int id, const QString &name, bool favorite void PlaylistContainer::PlaylistClosed(int id) { ui_->tab_bar->RemoveTab(id); - if (ui_->tab_bar->count() <= 1) - SetTabBarVisible(false); + if (ui_->tab_bar->count() <= 1) SetTabBarVisible(false); } -void PlaylistContainer::PlaylistRenamed(int id, const QString &new_name) { +void PlaylistContainer::PlaylistRenamed(int id, const QString& new_name) { ui_->tab_bar->set_text_by_id(id, new_name); } -void PlaylistContainer::NewPlaylist() { - manager_->New(tr("Playlist")); -} +void PlaylistContainer::NewPlaylist() { manager_->New(tr("Playlist")); } void PlaylistContainer::LoadPlaylist() { QString filename = settings_.value("last_load_playlist").toString(); - filename = QFileDialog::getOpenFileName( - this, tr("Load playlist"), filename, - manager_->parser()->filters()); + filename = QFileDialog::getOpenFileName(this, tr("Load playlist"), filename, + manager_->parser()->filters()); - if (filename.isNull()) - return; + if (filename.isNull()) return; settings_.setValue("last_load_playlist", filename); @@ -303,34 +302,33 @@ void PlaylistContainer::SavePlaylist(int id = -1) { void PlaylistContainer::GoToNextPlaylistTab() { // Get the next tab' id - int id_next = - ui_->tab_bar->id_of((ui_->tab_bar->currentIndex()+1)%ui_->tab_bar->count()); + int id_next = ui_->tab_bar->id_of((ui_->tab_bar->currentIndex() + 1) % + ui_->tab_bar->count()); // Switch to next tab manager_->SetCurrentPlaylist(id_next); } void PlaylistContainer::GoToPreviousPlaylistTab() { // Get the next tab' id - int id_previous = - ui_->tab_bar->id_of((ui_->tab_bar->currentIndex()+ui_->tab_bar->count()-1) - % ui_->tab_bar->count()); + int id_previous = ui_->tab_bar->id_of( + (ui_->tab_bar->currentIndex() + ui_->tab_bar->count() - 1) % + ui_->tab_bar->count()); // Switch to next tab manager_->SetCurrentPlaylist(id_previous); } void PlaylistContainer::Save() { - if (starting_up_) - return; + if (starting_up_) return; settings_.setValue("current_playlist", ui_->tab_bar->current_id()); } void PlaylistContainer::SetTabBarVisible(bool visible) { - if (tab_bar_visible_ == visible) - return; + if (tab_bar_visible_ == visible) return; tab_bar_visible_ = visible; - tab_bar_animation_->setDirection(visible ? QTimeLine::Forward : QTimeLine::Backward); + tab_bar_animation_->setDirection(visible ? QTimeLine::Forward + : QTimeLine::Backward); tab_bar_animation_->start(); } @@ -363,7 +361,9 @@ void PlaylistContainer::UpdateNoMatchesLabel() { QString text; if (has_rows && !has_results) { - text = tr("No matches found. Clear the search box to show the whole playlist again."); + text = + tr("No matches found. Clear the search box to show the whole playlist " + "again."); } if (!text.isEmpty()) { @@ -380,7 +380,7 @@ void PlaylistContainer::resizeEvent(QResizeEvent* e) { RepositionNoMatchesLabel(); } -void PlaylistContainer::FocusOnFilter(QKeyEvent *event) { +void PlaylistContainer::FocusOnFilter(QKeyEvent* event) { ui_->filter->setFocus(); if (event->key() == Qt::Key_Escape) { ui_->filter->clear(); @@ -390,12 +390,12 @@ void PlaylistContainer::FocusOnFilter(QKeyEvent *event) { } void PlaylistContainer::RepositionNoMatchesLabel(bool force) { - if (!force && !no_matches_label_->isVisible()) - return; + if (!force && !no_matches_label_->isVisible()) return; const int kBorder = 10; - QPoint pos = ui_->playlist->viewport()->mapTo(ui_->playlist, QPoint(kBorder, kBorder)); + QPoint pos = + ui_->playlist->viewport()->mapTo(ui_->playlist, QPoint(kBorder, kBorder)); QSize size = ui_->playlist->viewport()->size(); size.setWidth(size.width() - kBorder * 2); size.setHeight(size.height() - kBorder * 2); @@ -408,11 +408,11 @@ void PlaylistContainer::SelectionChanged() { manager_->SelectionChanged(view()->selectionModel()->selection()); } -bool PlaylistContainer::eventFilter(QObject *objectWatched, QEvent *event) { - if(objectWatched == ui_->filter) { +bool PlaylistContainer::eventFilter(QObject* objectWatched, QEvent* event) { + if (objectWatched == ui_->filter) { if (event->type() == QEvent::KeyPress) { - QKeyEvent *e = static_cast(event); - switch(e->key()) { + QKeyEvent* e = static_cast(event); + switch (e->key()) { case Qt::Key_Up: case Qt::Key_Down: case Qt::Key_PageUp: diff --git a/src/playlist/playlistcontainer.h b/src/playlist/playlistcontainer.h index 24412fac5..b0b8b8ba8 100644 --- a/src/playlist/playlistcontainer.h +++ b/src/playlist/playlistcontainer.h @@ -35,20 +35,20 @@ class QLabel; class PlaylistContainer : public QWidget { Q_OBJECT -public: - PlaylistContainer(QWidget *parent = 0); + public: + PlaylistContainer(QWidget* parent = nullptr); ~PlaylistContainer(); static const char* kSettingsGroup; void SetActions(QAction* new_playlist, QAction* load_playlist, - QAction* save_playlist, - QAction* next_playlist, QAction* previous_playlist); + QAction* save_playlist, QAction* next_playlist, + QAction* previous_playlist); void SetManager(PlaylistManager* manager); PlaylistView* view() const; - bool eventFilter(QObject *objectWatched, QEvent *event); + bool eventFilter(QObject* objectWatched, QEvent* event); signals: void TabChanged(int id); @@ -57,11 +57,11 @@ signals: void UndoRedoActionsChanged(QAction* undo, QAction* redo); void ViewSelectionModelChanged(); -protected: + protected: // QWidget - void resizeEvent(QResizeEvent *); + void resizeEvent(QResizeEvent*); -private slots: + private slots: void NewPlaylist(); void LoadPlaylist(); void SavePlaylist() { SavePlaylist(-1); } @@ -86,15 +86,15 @@ private slots: void SelectionChanged(); void MaybeUpdateFilter(); void UpdateFilter(); - void FocusOnFilter(QKeyEvent *event); + void FocusOnFilter(QKeyEvent* event); void UpdateNoMatchesLabel(); -private: + private: void UpdateActiveIcon(const QIcon& icon); void RepositionNoMatchesLabel(bool force = false); -private: + private: static const int kFilterDelayMs; static const int kFilterDelayPlaylistSizeThreshold; @@ -116,4 +116,4 @@ private: QTimer* filter_timer_; }; -#endif // PLAYLISTCONTAINER_H +#endif // PLAYLISTCONTAINER_H diff --git a/src/playlist/playlistdelegates.cpp b/src/playlist/playlistdelegates.cpp index b49b46ee3..a9cc47a71 100644 --- a/src/playlist/playlistdelegates.cpp +++ b/src/playlist/playlistdelegates.cpp @@ -44,23 +44,22 @@ #include "core/mac_utilities.h" #endif // Q_OS_DARWIN -const int QueuedItemDelegate::kQueueBoxBorder = 1; -const int QueuedItemDelegate::kQueueBoxCornerRadius = 3; -const int QueuedItemDelegate::kQueueBoxLength = 30; -const QRgb QueuedItemDelegate::kQueueBoxGradientColor1 = qRgb(102, 150, 227); -const QRgb QueuedItemDelegate::kQueueBoxGradientColor2 = qRgb(77, 121, 200); -const int QueuedItemDelegate::kQueueOpacitySteps = 10; +const int QueuedItemDelegate::kQueueBoxBorder = 1; +const int QueuedItemDelegate::kQueueBoxCornerRadius = 3; +const int QueuedItemDelegate::kQueueBoxLength = 30; +const QRgb QueuedItemDelegate::kQueueBoxGradientColor1 = qRgb(102, 150, 227); +const QRgb QueuedItemDelegate::kQueueBoxGradientColor2 = qRgb(77, 121, 200); +const int QueuedItemDelegate::kQueueOpacitySteps = 10; const float QueuedItemDelegate::kQueueOpacityLowerBound = 0.4; -const int PlaylistDelegateBase::kMinHeight = 19; +const int PlaylistDelegateBase::kMinHeight = 19; -QueuedItemDelegate::QueuedItemDelegate(QObject *parent, int indicator_column) - : QStyledItemDelegate(parent), - indicator_column_(indicator_column) -{ -} +QueuedItemDelegate::QueuedItemDelegate(QObject* parent, int indicator_column) + : QStyledItemDelegate(parent), indicator_column_(indicator_column) {} -void QueuedItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { +void QueuedItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { QStyledItemDelegate::paint(painter, option, index); if (index.column() == indicator_column_) { @@ -73,7 +72,7 @@ void QueuedItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op opacity += kQueueOpacityLowerBound; painter->setOpacity(opacity); - DrawBox(painter, option.rect, option.font, QString::number(queue_pos+1), + DrawBox(painter, option.rect, option.font, QString::number(queue_pos + 1), kQueueBoxLength); painter->setOpacity(1.0); @@ -81,15 +80,14 @@ void QueuedItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op } } -void QueuedItemDelegate::DrawBox( - QPainter* painter, const QRect& line_rect, const QFont& font, - const QString& text, int width) const { +void QueuedItemDelegate::DrawBox(QPainter* painter, const QRect& line_rect, + const QFont& font, const QString& text, + int width) const { QFont smaller = font; smaller.setPointSize(smaller.pointSize() - 1); smaller.setBold(true); - if (width == -1) - width = QFontMetrics(font).width(text + " "); + if (width == -1) width = QFontMetrics(font).width(text + " "); QRect rect(line_rect); rect.setLeft(rect.right() - width - kQueueBoxBorder); @@ -123,36 +121,33 @@ int QueuedItemDelegate::queue_indicator_size(const QModelIndex& index) const { if (index.column() == indicator_column_) { const int queue_pos = index.data(Playlist::Role_QueuePosition).toInt(); if (queue_pos != -1) { - return kQueueBoxLength + kQueueBoxBorder*2; + return kQueueBoxLength + kQueueBoxBorder * 2; } } return 0; } +PlaylistDelegateBase::PlaylistDelegateBase(QObject* parent, + const QString& suffix) + : QueuedItemDelegate(parent), + view_(qobject_cast(parent)), + suffix_(suffix) {} -PlaylistDelegateBase::PlaylistDelegateBase(QObject* parent, const QString& suffix) - : QueuedItemDelegate(parent), - view_(qobject_cast(parent)), - suffix_(suffix) -{ -} - -QString PlaylistDelegateBase::displayText(const QVariant& value, const QLocale&) const { +QString PlaylistDelegateBase::displayText(const QVariant& value, + const QLocale&) const { QString text; switch (static_cast(value.type())) { case QMetaType::Int: { int v = value.toInt(); - if (v > 0) - text = QString::number(v); + if (v > 0) text = QString::number(v); break; } case QMetaType::Float: case QMetaType::Double: { double v = value.toDouble(); - if (v > 0) - text = QString::number(v); + if (v > 0) text = QString::number(v); break; } @@ -161,19 +156,20 @@ QString PlaylistDelegateBase::displayText(const QVariant& value, const QLocale&) break; } - if (!text.isNull() && !suffix_.isNull()) - text += " " + suffix_; + if (!text.isNull() && !suffix_.isNull()) text += " " + suffix_; return text; } -QSize PlaylistDelegateBase::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { +QSize PlaylistDelegateBase::sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const { QSize size = QueuedItemDelegate::sizeHint(option, index); - if (size.height() < kMinHeight) - size.setHeight(kMinHeight); + if (size.height() < kMinHeight) size.setHeight(kMinHeight); return size; } -void PlaylistDelegateBase::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { +void PlaylistDelegateBase::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { QueuedItemDelegate::paint(painter, Adjusted(option, index), index); // Stop after indicator @@ -187,9 +183,9 @@ void PlaylistDelegateBase::paint(QPainter* painter, const QStyleOptionViewItem& } } -QStyleOptionViewItemV4 PlaylistDelegateBase::Adjusted(const QStyleOptionViewItem& option, const QModelIndex& index) const { - if (!view_) - return option; +QStyleOptionViewItemV4 PlaylistDelegateBase::Adjusted( + const QStyleOptionViewItem& option, const QModelIndex& index) const { + if (!view_) return option; QPoint top_left(-view_->horizontalScrollBar()->value(), -view_->verticalScrollBar()->value()); @@ -208,19 +204,18 @@ QStyleOptionViewItemV4 PlaylistDelegateBase::Adjusted(const QStyleOptionViewItem return ret; } -bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, - const QStyleOptionViewItem &option, - const QModelIndex &index) { +bool PlaylistDelegateBase::helpEvent(QHelpEvent* event, QAbstractItemView* view, + const QStyleOptionViewItem& option, + const QModelIndex& index) { // This function is copied from QAbstractItemDelegate, and changed to show // displayText() in the tooltip, rather than the index's naked // Qt::ToolTipRole text. Q_UNUSED(option); - if (!event || !view) - return false; + if (!event || !view) return false; - QHelpEvent *he = static_cast(event); + QHelpEvent* he = static_cast(event); QString text = displayText(index.data(), QLocale::system()); // Special case: we want newlines in the comment tooltip @@ -232,8 +227,7 @@ bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, text.replace("\n", "
"); } - if (text.isEmpty() || !he) - return false; + if (text.isEmpty() || !he) return false; switch (event->type()) { case QEvent::ToolTip: { @@ -244,9 +238,9 @@ bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, real_text = sizeHint(option, index); displayed_text = view->visualRect(index); is_elided = displayed_text.width() < real_text.width(); - if(is_elided) { + if (is_elided) { QToolTip::showText(he->globalPos(), text, view); - } else { // in case that another text was previously displayed + } else { // in case that another text was previously displayed QToolTip::hideText(); } return true; @@ -265,83 +259,80 @@ bool PlaylistDelegateBase::helpEvent(QHelpEvent *event, QAbstractItemView *view, return false; } - -QString LengthItemDelegate::displayText(const QVariant& value, const QLocale&) const { +QString LengthItemDelegate::displayText(const QVariant& value, + const QLocale&) const { bool ok = false; qint64 nanoseconds = value.toLongLong(&ok); - if (ok && nanoseconds > 0) - return Utilities::PrettyTimeNanosec(nanoseconds); + if (ok && nanoseconds > 0) return Utilities::PrettyTimeNanosec(nanoseconds); return QString::null; } - -QString SizeItemDelegate::displayText(const QVariant& value, const QLocale&) const { +QString SizeItemDelegate::displayText(const QVariant& value, + const QLocale&) const { bool ok = false; int bytes = value.toInt(&ok); - if (ok) - return Utilities::PrettySize(bytes); + if (ok) return Utilities::PrettySize(bytes); return QString(); } -QString DateItemDelegate::displayText(const QVariant &value, const QLocale &locale) const { +QString DateItemDelegate::displayText(const QVariant& value, + const QLocale& locale) const { bool ok = false; int time = value.toInt(&ok); - if (!ok || time == -1) - return QString::null; + if (!ok || time == -1) return QString::null; - return QDateTime::fromTime_t(time).toString( - QLocale::system().dateTimeFormat(QLocale::ShortFormat)); + return QDateTime::fromTime_t(time) + .toString(QLocale::system().dateTimeFormat(QLocale::ShortFormat)); } -QString LastPlayedItemDelegate::displayText(const QVariant& value, const QLocale& locale) const { +QString LastPlayedItemDelegate::displayText(const QVariant& value, + const QLocale& locale) const { bool ok = false; const int time = value.toInt(&ok); - if (!ok || time == -1) - return tr("Never"); + if (!ok || time == -1) return tr("Never"); return Utilities::Ago(time, locale); } -QString FileTypeItemDelegate::displayText(const QVariant &value, const QLocale &locale) const { +QString FileTypeItemDelegate::displayText(const QVariant& value, + const QLocale& locale) const { bool ok = false; Song::FileType type = Song::FileType(value.toInt(&ok)); - if (!ok) - return tr("Unknown"); + if (!ok) return tr("Unknown"); return Song::TextForFiletype(type); } -QWidget* TextItemDelegate::createEditor( - QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const { +QWidget* TextItemDelegate::createEditor(QWidget* parent, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { return new QLineEdit(parent); } RatingItemDelegate::RatingItemDelegate(QObject* parent) - : PlaylistDelegateBase(parent) -{ -} + : PlaylistDelegateBase(parent) {} -void RatingItemDelegate::paint( - QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { +void RatingItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { // Draw the background const QStyleOptionViewItemV3* vopt = qstyleoption_cast(&option); - vopt->widget->style()->drawPrimitive( - QStyle::PE_PanelItemViewItem, vopt, painter, vopt->widget); + vopt->widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, vopt, + painter, vopt->widget); // Don't draw anything else if the user can't set the rating of this item - if (!index.data(Playlist::Role_CanSetRating).toBool()) - return; + if (!index.data(Playlist::Role_CanSetRating).toBool()) return; - const bool hover = mouse_over_index_.isValid() && ( - mouse_over_index_ == index || ( - selected_indexes_.contains(mouse_over_index_) && - selected_indexes_.contains(index))); + const bool hover = mouse_over_index_.isValid() && + (mouse_over_index_ == index || + (selected_indexes_.contains(mouse_over_index_) && + selected_indexes_.contains(index))); const double rating = (hover ? RatingPainter::RatingForPos(mouse_over_pos_, option.rect) @@ -350,27 +341,27 @@ void RatingItemDelegate::paint( painter_.Paint(painter, option.rect, rating); } -QSize RatingItemDelegate::sizeHint( - const QStyleOptionViewItem& option, const QModelIndex& index) const { +QSize RatingItemDelegate::sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const { QSize size = PlaylistDelegateBase::sizeHint(option, index); size.setWidth(size.height() * RatingPainter::kStarCount); return size; } -QString RatingItemDelegate::displayText( - const QVariant& value, const QLocale&) const { - if (value.isNull() || value.toDouble() <= 0) - return QString(); +QString RatingItemDelegate::displayText(const QVariant& value, + const QLocale&) const { + if (value.isNull() || value.toDouble() <= 0) return QString(); // Round to the nearest 0.5 - const double rating = float(int(value.toDouble() * RatingPainter::kStarCount * 2 + 0.5)) / 2; + const double rating = + float(int(value.toDouble() * RatingPainter::kStarCount * 2 + 0.5)) / 2; return QString::number(rating, 'f', 1); } -TagCompletionModel::TagCompletionModel(LibraryBackend* backend, Playlist::Column column) - : QStringListModel() -{ +TagCompletionModel::TagCompletionModel(LibraryBackend* backend, + Playlist::Column column) + : QStringListModel() { QString col = database_column(column); if (!col.isEmpty()) { setStringList(backend->GetAll(col)); @@ -379,13 +370,20 @@ TagCompletionModel::TagCompletionModel(LibraryBackend* backend, Playlist::Column QString TagCompletionModel::database_column(Playlist::Column column) { switch (column) { - case Playlist::Column_Artist: return "artist"; - case Playlist::Column_Album: return "album"; - case Playlist::Column_AlbumArtist: return "albumartist"; - case Playlist::Column_Composer: return "composer"; - case Playlist::Column_Performer: return "performer"; - case Playlist::Column_Grouping: return "grouping"; - case Playlist::Column_Genre: return "genre"; + case Playlist::Column_Artist: + return "artist"; + case Playlist::Column_Album: + return "album"; + case Playlist::Column_AlbumArtist: + return "albumartist"; + case Playlist::Column_Composer: + return "composer"; + case Playlist::Column_Performer: + return "performer"; + case Playlist::Column_Grouping: + return "grouping"; + case Playlist::Column_Genre: + return "genre"; default: qLog(Warning) << "Unknown column" << column; return QString(); @@ -399,11 +397,9 @@ static TagCompletionModel* InitCompletionModel(LibraryBackend* backend, TagCompleter::TagCompleter(LibraryBackend* backend, Playlist::Column column, QLineEdit* editor) - : QCompleter(editor), - editor_(editor) -{ - QFuture future = QtConcurrent::run( - &InitCompletionModel, backend, column); + : QCompleter(editor), editor_(editor) { + QFuture future = + QtConcurrent::run(&InitCompletionModel, backend, column); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); @@ -414,8 +410,7 @@ TagCompleter::TagCompleter(LibraryBackend* backend, Playlist::Column column, void TagCompleter::ModelReady() { QFutureWatcher* watcher = dynamic_cast*>(sender()); - if (!watcher) - return; + if (!watcher) return; TagCompletionModel* model = watcher->result(); setModel(model); @@ -423,8 +418,9 @@ void TagCompleter::ModelReady() { editor_->setCompleter(this); } -QWidget* TagCompletionItemDelegate::createEditor( - QWidget* parent, const QStyleOptionViewItem&, const QModelIndex&) const { +QWidget* TagCompletionItemDelegate::createEditor(QWidget* parent, + const QStyleOptionViewItem&, + const QModelIndex&) const { QLineEdit* editor = new QLineEdit(parent); new TagCompleter(backend_, column_, editor); @@ -432,7 +428,8 @@ QWidget* TagCompletionItemDelegate::createEditor( return editor; } -QString NativeSeparatorsDelegate::displayText(const QVariant& value, const QLocale&) const { +QString NativeSeparatorsDelegate::displayText(const QVariant& value, + const QLocale&) const { const QString string_value = value.toString(); QUrl url; @@ -451,15 +448,15 @@ QString NativeSeparatorsDelegate::displayText(const QVariant& value, const QLoca } SongSourceDelegate::SongSourceDelegate(QObject* parent, Player* player) - : PlaylistDelegateBase(parent), - player_(player) { -} + : PlaylistDelegateBase(parent), player_(player) {} -QString SongSourceDelegate::displayText(const QVariant& value, const QLocale&) const { +QString SongSourceDelegate::displayText(const QVariant& value, + const QLocale&) const { return QString(); } -QPixmap SongSourceDelegate::LookupPixmap(const QUrl& url, const QSize& size) const { +QPixmap SongSourceDelegate::LookupPixmap(const QUrl& url, + const QSize& size) const { QPixmap pixmap; if (cache_.find(url.scheme(), &pixmap)) { return pixmap; @@ -485,8 +482,9 @@ QPixmap SongSourceDelegate::LookupPixmap(const QUrl& url, const QSize& size) con return pixmap; } -void SongSourceDelegate::paint( - QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { +void SongSourceDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { // Draw the background PlaylistDelegateBase::paint(painter, option, index); @@ -504,7 +502,8 @@ void SongSourceDelegate::paint( #endif // Draw the pixmap in the middle of the rectangle - QRect draw_rect(QPoint(0, 0), option_copy.decorationSize / device_pixel_ratio); + QRect draw_rect(QPoint(0, 0), + option_copy.decorationSize / device_pixel_ratio); draw_rect.moveCenter(option_copy.rect.center()); painter->drawPixmap(draw_rect, pixmap); diff --git a/src/playlist/playlistdelegates.h b/src/playlist/playlistdelegates.h index 7239dd9e2..c935b6b2e 100644 --- a/src/playlist/playlistdelegates.h +++ b/src/playlist/playlistdelegates.h @@ -31,15 +31,17 @@ class Player; class QueuedItemDelegate : public QStyledItemDelegate { -public: - QueuedItemDelegate(QObject* parent, int indicator_column = Playlist::Column_Title); - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; - void DrawBox(QPainter* painter, const QRect& line_rect, - const QFont& font, const QString& text, int width = -1) const; + public: + QueuedItemDelegate(QObject* parent, + int indicator_column = Playlist::Column_Title); + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; + void DrawBox(QPainter* painter, const QRect& line_rect, const QFont& font, + const QString& text, int width = -1) const; int queue_indicator_size(const QModelIndex& index) const; -private: + private: static const int kQueueBoxBorder; static const int kQueueBoxCornerRadius; static const int kQueueBoxLength; @@ -55,17 +57,20 @@ class PlaylistDelegateBase : public QueuedItemDelegate { Q_OBJECT public: PlaylistDelegateBase(QObject* parent, const QString& suffix = QString()); - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; QString displayText(const QVariant& value, const QLocale& locale) const; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; + QSize sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const; - QStyleOptionViewItemV4 Adjusted(const QStyleOptionViewItem& option, const QModelIndex& index) const; + QStyleOptionViewItemV4 Adjusted(const QStyleOptionViewItem& option, + const QModelIndex& index) const; static const int kMinHeight; public slots: - bool helpEvent(QHelpEvent *event, QAbstractItemView *view, - const QStyleOptionViewItem &option, const QModelIndex &index); + bool helpEvent(QHelpEvent* event, QAbstractItemView* view, + const QStyleOptionViewItem& option, const QModelIndex& index); protected: QTreeView* view_; @@ -91,7 +96,7 @@ class DateItemDelegate : public PlaylistDelegateBase { }; class LastPlayedItemDelegate : public PlaylistDelegateBase { -public: + public: LastPlayedItemDelegate(QObject* parent) : PlaylistDelegateBase(parent) {} QString displayText(const QVariant& value, const QLocale& locale) const; }; @@ -106,29 +111,31 @@ class TextItemDelegate : public PlaylistDelegateBase { public: TextItemDelegate(QObject* parent) : PlaylistDelegateBase(parent) {} QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, - const QModelIndex& index) const; + const QModelIndex& index) const; }; class RatingItemDelegate : public PlaylistDelegateBase { -public: + public: RatingItemDelegate(QObject* parent); - void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; + QSize sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const; QString displayText(const QVariant& value, const QLocale& locale) const; void set_mouse_over(const QModelIndex& index, const QModelIndexList& selected_indexes, const QPoint& pos) { - mouse_over_index_ = index; - selected_indexes_ = selected_indexes; - mouse_over_pos_ = pos; + mouse_over_index_ = index; + selected_indexes_ = selected_indexes; + mouse_over_pos_ = pos; } void set_mouse_out() { mouse_over_index_ = QModelIndex(); } bool is_mouse_over() const { return mouse_over_index_.isValid(); } QModelIndex mouse_over_index() const { return mouse_over_index_; } -private: + private: RatingPainter painter_; QModelIndex mouse_over_index_; @@ -137,34 +144,35 @@ private: }; class TagCompletionModel : public QStringListModel { -public: + public: TagCompletionModel(LibraryBackend* backend, Playlist::Column column); -private: + private: static QString database_column(Playlist::Column column); }; class TagCompleter : public QCompleter { Q_OBJECT -public: + public: TagCompleter(LibraryBackend* backend, Playlist::Column column, QLineEdit* editor); -private slots: + private slots: void ModelReady(); -private: + private: QLineEdit* editor_; }; class TagCompletionItemDelegate : public PlaylistDelegateBase { public: - TagCompletionItemDelegate(QObject* parent, LibraryBackend* backend, Playlist::Column column) : - PlaylistDelegateBase(parent), backend_(backend), column_(column) {}; + TagCompletionItemDelegate(QObject* parent, LibraryBackend* backend, + Playlist::Column column) + : PlaylistDelegateBase(parent), backend_(backend), column_(column) {}; QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, - const QModelIndex& index) const; + const QModelIndex& index) const; private: LibraryBackend* backend_; @@ -181,7 +189,8 @@ class SongSourceDelegate : public PlaylistDelegateBase { public: SongSourceDelegate(QObject* parent, Player* player); QString displayText(const QVariant& value, const QLocale& locale) const; - void paint(QPainter* paint, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void paint(QPainter* paint, const QStyleOptionViewItem& option, + const QModelIndex& index) const; private: QPixmap LookupPixmap(const QUrl& url, const QSize& size) const; @@ -190,4 +199,4 @@ class SongSourceDelegate : public PlaylistDelegateBase { mutable QPixmapCache cache_; }; -#endif // PLAYLISTDELEGATES_H +#endif // PLAYLISTDELEGATES_H diff --git a/src/playlist/playlistfilter.cpp b/src/playlist/playlistfilter.cpp index d96dc0d3f..68e7c88c3 100644 --- a/src/playlist/playlistfilter.cpp +++ b/src/playlist/playlistfilter.cpp @@ -20,11 +20,10 @@ #include -PlaylistFilter::PlaylistFilter(QObject *parent) - : QSortFilterProxyModel(parent), - filter_tree_(new NopFilter), - query_hash_(0) -{ +PlaylistFilter::PlaylistFilter(QObject* parent) + : QSortFilterProxyModel(parent), + filter_tree_(new NopFilter), + query_hash_(0) { setDynamicSortFilter(true); column_names_["title"] = Playlist::Column_Title; @@ -47,25 +46,21 @@ PlaylistFilter::PlaylistFilter(QObject *parent) column_names_["filename"] = Playlist::Column_Filename; column_names_["rating"] = Playlist::Column_Rating; - numerical_columns_ << Playlist::Column_Length - << Playlist::Column_Track - << Playlist::Column_Disc - << Playlist::Column_Year - << Playlist::Column_Score - << Playlist::Column_BPM - << Playlist::Column_Bitrate - << Playlist::Column_Rating; + numerical_columns_ << Playlist::Column_Length << Playlist::Column_Track + << Playlist::Column_Disc << Playlist::Column_Year + << Playlist::Column_Score << Playlist::Column_BPM + << Playlist::Column_Bitrate << Playlist::Column_Rating; } -PlaylistFilter::~PlaylistFilter() { -} +PlaylistFilter::~PlaylistFilter() {} void PlaylistFilter::sort(int column, Qt::SortOrder order) { // Pass this through to the Playlist, it does sorting itself sourceModel()->sort(column, order); } -bool PlaylistFilter::filterAcceptsRow(int row, const QModelIndex &parent) const { +bool PlaylistFilter::filterAcceptsRow(int row, + const QModelIndex& parent) const { QString filter = filterRegExp().pattern(); uint hash = qHash(filter); @@ -78,5 +73,5 @@ bool PlaylistFilter::filterAcceptsRow(int row, const QModelIndex &parent) const } // Test the row - return filter_tree_->accept(row,parent,sourceModel()); + return filter_tree_->accept(row, parent, sourceModel()); } diff --git a/src/playlist/playlistfilter.h b/src/playlist/playlistfilter.h index 70a04db77..fad98b423 100644 --- a/src/playlist/playlistfilter.h +++ b/src/playlist/playlistfilter.h @@ -30,8 +30,8 @@ class FilterTree; class PlaylistFilter : public QSortFilterProxyModel { Q_OBJECT -public: - PlaylistFilter(QObject* parent = 0); + public: + PlaylistFilter(QObject* parent = nullptr); ~PlaylistFilter(); // QAbstractItemModel @@ -39,9 +39,9 @@ public: // QSortFilterProxyModel // public so Playlist::NextVirtualIndex and friends can get at it - bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; + bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const; -private: + private: // Mutable because they're modified from filterAcceptsRow() const mutable QScopedPointer filter_tree_; mutable uint query_hash_; @@ -50,4 +50,4 @@ private: QSet numerical_columns_; }; -#endif // PLAYLISTFILTER_H +#endif // PLAYLISTFILTER_H diff --git a/src/playlist/playlistfilterparser.cpp b/src/playlist/playlistfilterparser.cpp index f4ee69090..29823ff8b 100644 --- a/src/playlist/playlistfilterparser.cpp +++ b/src/playlist/playlistfilterparser.cpp @@ -34,6 +34,7 @@ class DefaultComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.contains(search_term_); } + private: QString search_term_; }; @@ -44,6 +45,7 @@ class EqComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return search_term_ == element; } + private: QString search_term_; }; @@ -54,6 +56,7 @@ class NeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return search_term_ != element; } + private: QString search_term_; }; @@ -64,6 +67,7 @@ class LexicalGtComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element > search_term_; } + private: QString search_term_; }; @@ -74,6 +78,7 @@ class LexicalGeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element >= search_term_; } + private: QString search_term_; }; @@ -84,6 +89,7 @@ class LexicalLtComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element < search_term_; } + private: QString search_term_; }; @@ -94,6 +100,7 @@ class LexicalLeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element <= search_term_; } + private: QString search_term_; }; @@ -104,6 +111,7 @@ class GtComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.toInt() > search_term_; } + private: int search_term_; }; @@ -114,6 +122,7 @@ class GeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.toInt() >= search_term_; } + private: int search_term_; }; @@ -124,6 +133,7 @@ class LtComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.toInt() < search_term_; } + private: int search_term_; }; @@ -134,6 +144,7 @@ class LeComparator : public SearchTermComparator { virtual bool Matches(const QString& element) const { return element.toInt() <= search_term_; } + private: int search_term_; }; @@ -149,10 +160,11 @@ class DropTailComparatorDecorator : public SearchTermComparator { virtual bool Matches(const QString& element) const { if (element.length() > 9) - return cmp_->Matches(element.left(element.length()-9)); + return cmp_->Matches(element.left(element.length() - 9)); else return cmp_->Matches(element); } + private: QScopedPointer cmp_; }; @@ -164,6 +176,7 @@ class RatingComparatorDecorator : public SearchTermComparator { return cmp_->Matches( QString::number(static_cast(element.toDouble() * 10.0 + 0.5))); } + private: QScopedPointer cmp_; }; @@ -171,32 +184,39 @@ class RatingComparatorDecorator : public SearchTermComparator { // filter that applies a SearchTermComparator to all fields of a playlist entry class FilterTerm : public FilterTree { public: - explicit FilterTerm(SearchTermComparator* comparator, const QList& columns) : cmp_(comparator), columns_(columns) {} + explicit FilterTerm(SearchTermComparator* comparator, + const QList& columns) + : cmp_(comparator), columns_(columns) {} - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { - foreach (int i, columns_) { + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { + for (int i : columns_) { QModelIndex idx(model->index(row, i, parent)); - if (cmp_->Matches(idx.data().toString().toLower())) - return true; + if (cmp_->Matches(idx.data().toString().toLower())) return true; } return false; } virtual FilterType type() { return Term; } + private: QScopedPointer cmp_; QList columns_; }; -// filter that applies a SearchTermComparator to one specific field of a playlist entry +// filter that applies a SearchTermComparator to one specific field of a +// playlist entry class FilterColumnTerm : public FilterTree { public: - FilterColumnTerm(int column, SearchTermComparator* comparator) : col(column), cmp_(comparator) {} + FilterColumnTerm(int column, SearchTermComparator* comparator) + : col(column), cmp_(comparator) {} - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { QModelIndex idx(model->index(row, col, parent)); return cmp_->Matches(idx.data().toString().toLower()); } virtual FilterType type() { return Column; } + private: int col; QScopedPointer cmp_; @@ -206,26 +226,29 @@ class NotFilter : public FilterTree { public: explicit NotFilter(const FilterTree* inv) : child_(inv) {} - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { return !child_->accept(row, parent, model); } virtual FilterType type() { return Not; } + private: QScopedPointer child_; }; -class OrFilter : public FilterTree { +class OrFilter : public FilterTree { public: ~OrFilter() { qDeleteAll(children_); } virtual void add(FilterTree* child) { children_.append(child); } - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { - foreach (FilterTree* child, children_) { - if (child->accept(row, parent, model)) - return true; + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { + for (FilterTree* child : children_) { + if (child->accept(row, parent, model)) return true; } return false; } FilterType type() { return Or; } + private: QList children_; }; @@ -234,22 +257,25 @@ class AndFilter : public FilterTree { public: virtual ~AndFilter() { qDeleteAll(children_); } virtual void add(FilterTree* child) { children_.append(child); } - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { - foreach (FilterTree* child, children_) { - if (!child->accept(row, parent, model)) - return false; + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { + for (FilterTree* child : children_) { + if (!child->accept(row, parent, model)) return false; } return true; } FilterType type() { return And; } + private: QList children_; }; -FilterParser::FilterParser(const QString& filter, const QMap& columns, const QSet& numerical_cols) - : filterstring_(filter), columns_(columns), numerical_columns_(numerical_cols) -{ -} +FilterParser::FilterParser(const QString& filter, + const QMap& columns, + const QSet& numerical_cols) + : filterstring_(filter), + columns_(columns), + numerical_columns_(numerical_cols) {} FilterTree* FilterParser::parse() { iter_ = filterstring_.constBegin(); @@ -265,8 +291,7 @@ void FilterParser::advance() { FilterTree* FilterParser::parseOrGroup() { advance(); - if (iter_ == end_) - return new NopFilter; + if (iter_ == end_) return new NopFilter; OrFilter* group = new OrFilter; group->add(parseAndGroup()); @@ -280,15 +305,13 @@ FilterTree* FilterParser::parseOrGroup() { FilterTree* FilterParser::parseAndGroup() { advance(); - if (iter_ == end_) - return new NopFilter; + if (iter_ == end_) return new NopFilter; AndFilter* group = new AndFilter(); do { group->add(parseSearchExpression()); advance(); - if (iter_ != end_ && *iter_ == QChar(')')) - break; + if (iter_ != end_ && *iter_ == QChar(')')) break; if (checkOr(false)) { break; } @@ -308,7 +331,8 @@ bool FilterParser::checkAnd() { if (iter_ != end_ && *iter_ == QChar('D')) { buf_ += *iter_; iter_++; - if (iter_ != end_ && (iter_->isSpace() || *iter_ == QChar('-') || *iter_ == '(')) { + if (iter_ != end_ && + (iter_->isSpace() || *iter_ == QChar('-') || *iter_ == '(')) { advance(); buf_.clear(); return true; @@ -337,7 +361,8 @@ bool FilterParser::checkOr(bool step_over) { if (iter_ != end_ && *iter_ == 'R') { buf_ += *iter_; iter_++; - if (iter_ != end_ && (iter_->isSpace() || *iter_ == '-' || *iter_ == '(')) { + if (iter_ != end_ && + (iter_->isSpace() || *iter_ == '-' || *iter_ == '(')) { if (step_over) { buf_.clear(); advance(); @@ -353,8 +378,7 @@ bool FilterParser::checkOr(bool step_over) { FilterTree* FilterParser::parseSearchExpression() { advance(); - if (iter_ == end_) - return new NopFilter; + if (iter_ == end_) return new NopFilter; if (*iter_ == '(') { iter_++; advance(); @@ -369,8 +393,7 @@ FilterTree* FilterParser::parseSearchExpression() { } else if (*iter_ == '-') { ++iter_; FilterTree* tree = parseSearchExpression(); - if (tree->type() != FilterTree::Nop) - return new NotFilter(tree); + if (tree->type() != FilterTree::Nop) return new NotFilter(tree); return tree; } else { return parseSearchTerm(); @@ -395,17 +418,14 @@ FilterTree* FilterParser::parseSearchTerm() { col = buf_.toLower(); buf_.clear(); prefix.clear(); // prefix isn't allowed here - let's ignore it - } else if (iter_->isSpace() || - *iter_ == '(' || - *iter_ == ')' || - *iter_ == '-') { - break; + } else if (iter_->isSpace() || *iter_ == '(' || *iter_ == ')' || + *iter_ == '-') { + break; } else if (buf_.isEmpty()) { // we don't know whether there is a column part in this search term // thus we assume the latter and just try and read a prefix - if (prefix.isEmpty() && - (*iter_ == '>' || *iter_ == '<' || *iter_ == '=' || - *iter_ == '!')) { + if (prefix.isEmpty() && (*iter_ == '>' || *iter_ == '<' || + *iter_ == '=' || *iter_ == '!')) { prefix += *iter_; } else if (prefix != "=" && *iter_ == '=') { prefix += *iter_; @@ -431,7 +451,7 @@ FilterTree* FilterParser::createSearchTermTreeNode( } // here comes a mess :/ // well, not that much of a mess, but so many options -_- - SearchTermComparator* cmp = NULL; + SearchTermComparator* cmp = nullptr; if (prefix == "!=" || prefix == "<>") { cmp = new NeComparator(search); } else if (!col.isEmpty() && columns_.contains(col) && @@ -481,8 +501,7 @@ FilterTree* FilterParser::createSearchTermTreeNode( cmp = new RatingComparatorDecorator(cmp); } return new FilterColumnTerm(columns_[col], cmp); - } - else { + } else { return new FilterTerm(cmp, columns_.values()); } } @@ -504,7 +523,7 @@ int FilterParser::parseTime(const QString& time_str) const { int seconds = 0; int accum = 0; int colon_count = 0; - foreach (const QChar& c, time_str) { + for (const QChar& c : time_str) { if (c.isDigit()) { accum = accum * 10 + c.digitValue(); } else if (c == ':') { diff --git a/src/playlist/playlistfilterparser.h b/src/playlist/playlistfilterparser.h index e921ee172..f6fa21454 100644 --- a/src/playlist/playlistfilterparser.h +++ b/src/playlist/playlistfilterparser.h @@ -29,26 +29,22 @@ class QAbstractItemModel; class FilterTree { public: virtual ~FilterTree() {} - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const = 0; - enum FilterType { - Nop = 0, - Or, - And, - Not, - Column, - Term - }; + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const = 0; + enum FilterType { Nop = 0, Or, And, Not, Column, Term }; virtual FilterType type() = 0; }; // trivial filter that accepts *anything* class NopFilter : public FilterTree { public: - virtual bool accept(int row, const QModelIndex& parent, const QAbstractItemModel* const model) const { return true; } + virtual bool accept(int row, const QModelIndex& parent, + const QAbstractItemModel* const model) const { + return true; + } virtual FilterType type() { return Nop; } }; - // A utility class to parse search filter strings into a decision tree // that can decide whether a playlist entry matches the filter. // @@ -64,10 +60,8 @@ class NopFilter : public FilterTree { // col ::= "title" | "artist" | ... class FilterParser { public: - FilterParser( - const QString& filter, - const QMap& columns, - const QSet& numerical_cols); + FilterParser(const QString& filter, const QMap& columns, + const QSet& numerical_cols); FilterTree* parse(); @@ -84,8 +78,9 @@ class FilterParser { FilterTree* parseSearchExpression(); FilterTree* parseSearchTerm(); - FilterTree* createSearchTermTreeNode( - const QString& col, const QString& prefix, const QString& search) const; + FilterTree* createSearchTermTreeNode(const QString& col, + const QString& prefix, + const QString& search) const; int parseTime(const QString& time_str) const; QString::const_iterator iter_; diff --git a/src/playlist/playlistheader.cpp b/src/playlist/playlistheader.cpp index 49d24c244..51a79c2dc 100644 --- a/src/playlist/playlistheader.cpp +++ b/src/playlist/playlistheader.cpp @@ -28,24 +28,25 @@ PlaylistHeader::PlaylistHeader(Qt::Orientation orientation, PlaylistView* view, : StretchHeaderView(orientation, parent), view_(view), menu_(new QMenu(this)), - show_mapper_(new QSignalMapper(this)) -{ + show_mapper_(new QSignalMapper(this)) { hide_action_ = menu_->addAction(tr("&Hide..."), this, SLOT(HideCurrent())); - stretch_action_ = menu_->addAction(tr("&Stretch columns to fit window"), this, SLOT(ToggleStretchEnabled())); + stretch_action_ = menu_->addAction(tr("&Stretch columns to fit window"), this, + SLOT(ToggleStretchEnabled())); menu_->addSeparator(); - QMenu* align_menu = new QMenu(tr("&Align text"), this); + QMenu* align_menu = new QMenu(tr("&Align text"), this); QActionGroup* align_group = new QActionGroup(this); - align_left_action_ = new QAction(tr("&Left"), align_group); - align_center_action_ = new QAction(tr("&Center"), align_group); - align_right_action_ = new QAction(tr("&Right"), align_group); + align_left_action_ = new QAction(tr("&Left"), align_group); + align_center_action_ = new QAction(tr("&Center"), align_group); + align_right_action_ = new QAction(tr("&Right"), align_group); align_left_action_->setCheckable(true); align_center_action_->setCheckable(true); align_right_action_->setCheckable(true); align_menu->addActions(align_group->actions()); - connect(align_group, SIGNAL(triggered(QAction*)), SLOT(SetColumnAlignment(QAction*))); + connect(align_group, SIGNAL(triggered(QAction*)), + SLOT(SetColumnAlignment(QAction*))); menu_->addMenu(align_menu); menu_->addSeparator(); @@ -54,7 +55,8 @@ PlaylistHeader::PlaylistHeader(Qt::Orientation orientation, PlaylistView* view, stretch_action_->setChecked(is_stretch_enabled()); connect(show_mapper_, SIGNAL(mapped(int)), SLOT(ToggleVisible(int))); - connect(this, SIGNAL(StretchEnabledChanged(bool)), stretch_action_, SLOT(setChecked(bool))); + connect(this, SIGNAL(StretchEnabledChanged(bool)), stretch_action_, + SLOT(setChecked(bool))); } void PlaylistHeader::contextMenuEvent(QContextMenuEvent* e) { @@ -66,18 +68,22 @@ void PlaylistHeader::contextMenuEvent(QContextMenuEvent* e) { else { hide_action_->setVisible(true); - QString title(model()->headerData(menu_section_, Qt::Horizontal).toString()); + QString title( + model()->headerData(menu_section_, Qt::Horizontal).toString()); hide_action_->setText(tr("&Hide %1").arg(title)); Qt::Alignment alignment = view_->column_alignment(menu_section_); - if (alignment & Qt::AlignLeft) align_left_action_->setChecked(true); - else if (alignment & Qt::AlignHCenter) align_center_action_->setChecked(true); - else if (alignment & Qt::AlignRight) align_right_action_->setChecked(true); + if (alignment & Qt::AlignLeft) + align_left_action_->setChecked(true); + else if (alignment & Qt::AlignHCenter) + align_center_action_->setChecked(true); + else if (alignment & Qt::AlignRight) + align_right_action_->setChecked(true); } qDeleteAll(show_actions_); show_actions_.clear(); - for (int i=0 ; iSetColumnAlignment(menu_section_, alignment); } @@ -123,6 +128,4 @@ void PlaylistHeader::ToggleVisible(int section) { emit SectionVisibilityChanged(section, !isSectionHidden(section)); } -void PlaylistHeader::enterEvent(QEvent*) { - emit MouseEntered(); -} +void PlaylistHeader::enterEvent(QEvent*) { emit MouseEntered(); } diff --git a/src/playlist/playlistheader.h b/src/playlist/playlistheader.h index 0280b1724..a2e2e3d2f 100644 --- a/src/playlist/playlistheader.h +++ b/src/playlist/playlistheader.h @@ -30,13 +30,13 @@ class PlaylistHeader : public StretchHeaderView { public: PlaylistHeader(Qt::Orientation orientation, PlaylistView* view, - QWidget* parent = 0); + QWidget* parent = nullptr); // QWidget void contextMenuEvent(QContextMenuEvent* e); void enterEvent(QEvent*); - signals: +signals: void SectionVisibilityChanged(int logical, bool visible); void MouseEntered(); @@ -63,4 +63,4 @@ class PlaylistHeader : public StretchHeaderView { QSignalMapper* show_mapper_; }; -#endif // PLAYLISTHEADER_H +#endif // PLAYLISTHEADER_H diff --git a/src/playlist/playlistitem.cpp b/src/playlist/playlistitem.cpp index b8c24e0f5..fa42cd4f1 100644 --- a/src/playlist/playlistitem.cpp +++ b/src/playlist/playlistitem.cpp @@ -31,36 +31,30 @@ #include #include - -PlaylistItem::~PlaylistItem() { -} +PlaylistItem::~PlaylistItem() {} PlaylistItem* PlaylistItem::NewFromType(const QString& type) { - if (type == "Library") - return new LibraryPlaylistItem(type); - if (type == "Magnatune") - return new MagnatunePlaylistItem(type); - if (type == "Jamendo") - return new JamendoPlaylistItem(type); - if (type == "Stream" || type == "File") - return new SongPlaylistItem(type); + if (type == "Library") return new LibraryPlaylistItem(type); + if (type == "Magnatune") return new MagnatunePlaylistItem(type); + if (type == "Jamendo") return new JamendoPlaylistItem(type); + if (type == "Stream" || type == "File") return new SongPlaylistItem(type); if (type == "Internet" || type == "Radio") return new InternetPlaylistItem("Internet"); qLog(Warning) << "Invalid PlaylistItem type:" << type; - return NULL; + return nullptr; } -PlaylistItem* PlaylistItem::NewFromSongsTable(const QString& table, const Song& song) { - if (table == Library::kSongsTable) - return new LibraryPlaylistItem(song); +PlaylistItem* PlaylistItem::NewFromSongsTable(const QString& table, + const Song& song) { + if (table == Library::kSongsTable) return new LibraryPlaylistItem(song); if (table == MagnatuneService::kSongsTable) return new MagnatunePlaylistItem(song); if (table == JamendoService::kSongsTable) return new JamendoPlaylistItem(song); qLog(Warning) << "Invalid PlaylistItem songs table:" << table; - return NULL; + return nullptr; } void PlaylistItem::BindToQuery(QSqlQuery* query) const { @@ -76,13 +70,9 @@ void PlaylistItem::SetTemporaryMetadata(const Song& metadata) { temp_metadata_.set_filetype(Song::Type_Stream); } -void PlaylistItem::ClearTemporaryMetadata() { - temp_metadata_ = Song(); -} +void PlaylistItem::ClearTemporaryMetadata() { temp_metadata_ = Song(); } -static void ReloadPlaylistItem(PlaylistItemPtr item) { - item->Reload(); -} +static void ReloadPlaylistItem(PlaylistItemPtr item) { item->Reload(); } QFuture PlaylistItem::BackgroundReload() { return QtConcurrent::run(ReloadPlaylistItem, shared_from_this()); @@ -99,8 +89,8 @@ void PlaylistItem::RemoveBackgroundColor(short priority) { } QColor PlaylistItem::GetCurrentBackgroundColor() const { return background_colors_.isEmpty() - ? QColor() - : background_colors_[background_colors_.keys().last()]; + ? QColor() + : background_colors_[background_colors_.keys().last()]; } bool PlaylistItem::HasCurrentBackgroundColor() const { return !background_colors_.isEmpty(); @@ -117,9 +107,11 @@ void PlaylistItem::RemoveForegroundColor(short priority) { } QColor PlaylistItem::GetCurrentForegroundColor() const { return foreground_colors_.isEmpty() - ? QColor() - : foreground_colors_[foreground_colors_.keys().last()]; + ? QColor() + : foreground_colors_[foreground_colors_.keys().last()]; } bool PlaylistItem::HasCurrentForegroundColor() const { return !foreground_colors_.isEmpty(); } +void PlaylistItem::SetShouldSkip(bool val) { should_skip_ = val; } +bool PlaylistItem::GetShouldSkip() const { return should_skip_; } diff --git a/src/playlist/playlistitem.h b/src/playlist/playlistitem.h index 449a1f421..d58968f63 100644 --- a/src/playlist/playlistitem.h +++ b/src/playlist/playlistitem.h @@ -18,26 +18,26 @@ #ifndef PLAYLISTITEM_H #define PLAYLISTITEM_H +#include + #include #include #include #include -#include - #include "core/song.h" class QAction; class SqlRow; -class PlaylistItem : public boost::enable_shared_from_this { +class PlaylistItem : public std::enable_shared_from_this { public: - PlaylistItem(const QString& type) - : type_(type) {} + PlaylistItem(const QString& type) : should_skip_(false), type_(type) {} virtual ~PlaylistItem(); static PlaylistItem* NewFromType(const QString& type); - static PlaylistItem* NewFromSongsTable(const QString& table, const Song& song); + static PlaylistItem* NewFromSongsTable(const QString& table, + const Song& song); enum Option { Default = 0x00, @@ -91,15 +91,17 @@ class PlaylistItem : public boost::enable_shared_from_this { // invalid so you might want to check that its id is not equal to -1 // before actually using it. virtual bool IsLocalLibraryItem() const { return false; } + void SetShouldSkip(bool val); + bool GetShouldSkip() const; protected: - enum DatabaseColumn { - Column_LibraryId, - Column_InternetService, - }; + bool should_skip_; + + enum DatabaseColumn { Column_LibraryId, Column_InternetService, }; virtual QVariant DatabaseValue(DatabaseColumn) const { - return QVariant(QVariant::String); } + return QVariant(QVariant::String); + } virtual Song DatabaseSongMetadata() const { return Song(); } QString type_; @@ -109,11 +111,11 @@ class PlaylistItem : public boost::enable_shared_from_this { QMap background_colors_; QMap foreground_colors_; }; -typedef boost::shared_ptr PlaylistItemPtr; +typedef std::shared_ptr PlaylistItemPtr; typedef QList PlaylistItemList; Q_DECLARE_METATYPE(PlaylistItemPtr) Q_DECLARE_METATYPE(QList) Q_DECLARE_OPERATORS_FOR_FLAGS(PlaylistItem::Options) -#endif // PLAYLISTITEM_H +#endif // PLAYLISTITEM_H diff --git a/src/playlist/playlistitemmimedata.h b/src/playlist/playlistitemmimedata.h index 6d0a0eb18..2be3b59d3 100644 --- a/src/playlist/playlistitemmimedata.h +++ b/src/playlist/playlistitemmimedata.h @@ -24,13 +24,12 @@ class PlaylistItemMimeData : public MimeData { Q_OBJECT -public: + public: PlaylistItemMimeData(const PlaylistItemPtr& item) - : items_(PlaylistItemList() << item) {} - PlaylistItemMimeData(const PlaylistItemList& items) - : items_(items) {} + : items_(PlaylistItemList() << item) {} + PlaylistItemMimeData(const PlaylistItemList& items) : items_(items) {} PlaylistItemList items_; }; -#endif // PLAYLISTITEMMIMEDATA_H +#endif // PLAYLISTITEMMIMEDATA_H diff --git a/src/playlist/playlistlistcontainer.cpp b/src/playlist/playlistlistcontainer.cpp index 267afdec0..659ad9887 100644 --- a/src/playlist/playlistlistcontainer.cpp +++ b/src/playlist/playlistlistcontainer.cpp @@ -34,15 +34,14 @@ #include class PlaylistListSortFilterModel : public QSortFilterProxyModel { -public: + public: explicit PlaylistListSortFilterModel(QObject* parent) - : QSortFilterProxyModel(parent) { - } + : QSortFilterProxyModel(parent) {} bool lessThan(const QModelIndex& left, const QModelIndex& right) const { // Compare the display text first. - const int ret = left.data().toString().localeAwareCompare( - right.data().toString()); + const int ret = + left.data().toString().localeAwareCompare(right.data().toString()); if (ret < 0) return true; if (ret > 0) return false; @@ -52,26 +51,25 @@ public: } }; - PlaylistListContainer::PlaylistListContainer(QWidget* parent) - : QWidget(parent), - app_(NULL), - ui_(new Ui_PlaylistListContainer), - menu_(NULL), - action_new_folder_(new QAction(this)), - action_remove_(new QAction(this)), - action_save_playlist_(new QAction(this)), - model_(new PlaylistListModel(this)), - proxy_(new PlaylistListSortFilterModel(this)), - loaded_icons_(false), - active_playlist_id_(-1) -{ + : QWidget(parent), + app_(nullptr), + ui_(new Ui_PlaylistListContainer), + menu_(nullptr), + action_new_folder_(new QAction(this)), + action_remove_(new QAction(this)), + action_save_playlist_(new QAction(this)), + model_(new PlaylistListModel(this)), + proxy_(new PlaylistListSortFilterModel(this)), + loaded_icons_(false), + active_playlist_id_(-1) { ui_->setupUi(this); ui_->tree->setAttribute(Qt::WA_MacShowFocusRect, false); action_new_folder_->setText(tr("New folder")); action_remove_->setText(tr("Delete")); - action_save_playlist_->setText(tr("Save playlist", "Save playlist menu action.")); + action_save_playlist_->setText( + tr("Save playlist", "Save playlist menu action.")); ui_->new_folder->setDefaultAction(action_new_folder_); ui_->remove->setDefaultAction(action_remove_); @@ -80,8 +78,8 @@ PlaylistListContainer::PlaylistListContainer(QWidget* parent) connect(action_new_folder_, SIGNAL(triggered()), SLOT(NewFolderClicked())); connect(action_remove_, SIGNAL(triggered()), SLOT(DeleteClicked())); connect(action_save_playlist_, SIGNAL(triggered()), SLOT(SavePlaylist())); - connect(model_, SIGNAL(PlaylistPathChanged(int,QString)), - SLOT(PlaylistPathChanged(int,QString))); + connect(model_, SIGNAL(PlaylistPathChanged(int, QString)), + SLOT(PlaylistPathChanged(int, QString))); proxy_->setSourceModel(model_); proxy_->setDynamicSortFilter(true); @@ -89,14 +87,13 @@ PlaylistListContainer::PlaylistListContainer(QWidget* parent) ui_->tree->setModel(proxy_); connect(ui_->tree, SIGNAL(doubleClicked(QModelIndex)), - SLOT(ItemDoubleClicked(QModelIndex))); + SLOT(ItemDoubleClicked(QModelIndex))); - model_->invisibleRootItem()->setData(PlaylistListModel::Type_Folder, PlaylistListModel::Role_Type); + model_->invisibleRootItem()->setData(PlaylistListModel::Type_Folder, + PlaylistListModel::Role_Type); } -PlaylistListContainer::~PlaylistListContainer() { - delete ui_; -} +PlaylistListContainer::~PlaylistListContainer() { delete ui_; } void PlaylistListContainer::showEvent(QShowEvent* e) { // Loading icons is expensive so only do it when the view is first opened @@ -120,17 +117,17 @@ void PlaylistListContainer::showEvent(QShowEvent* e) { } void PlaylistListContainer::RecursivelySetIcons(QStandardItem* parent) const { - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < parent->rowCount(); ++i) { QStandardItem* child = parent->child(i); switch (child->data(PlaylistListModel::Role_Type).toInt()) { - case PlaylistListModel::Type_Folder: - child->setIcon(model_->folder_icon()); - RecursivelySetIcons(child); - break; + case PlaylistListModel::Type_Folder: + child->setIcon(model_->folder_icon()); + RecursivelySetIcons(child); + break; - case PlaylistListModel::Type_Playlist: - child->setIcon(model_->playlist_icon()); - break; + case PlaylistListModel::Type_Playlist: + child->setIcon(model_->playlist_icon()); + break; } } } @@ -140,27 +137,27 @@ void PlaylistListContainer::SetApplication(Application* app) { PlaylistManager* manager = app_->playlist_manager(); Player* player = app_->player(); - connect(manager, SIGNAL(PlaylistAdded(int,QString,bool)), - SLOT(AddPlaylist(int,QString,bool))); - connect(manager, SIGNAL(PlaylistFavorited(int,bool)), - SLOT(PlaylistFavoriteStateChanged(int,bool))); - connect(manager, SIGNAL(PlaylistRenamed(int,QString)), - SLOT(PlaylistRenamed(int,QString))); + connect(manager, SIGNAL(PlaylistAdded(int, QString, bool)), + SLOT(AddPlaylist(int, QString, bool))); + connect(manager, SIGNAL(PlaylistFavorited(int, bool)), + SLOT(PlaylistFavoriteStateChanged(int, bool))); + connect(manager, SIGNAL(PlaylistRenamed(int, QString)), + SLOT(PlaylistRenamed(int, QString))); connect(manager, SIGNAL(CurrentChanged(Playlist*)), SLOT(CurrentChanged(Playlist*))); connect(manager, SIGNAL(ActiveChanged(Playlist*)), SLOT(ActiveChanged(Playlist*))); - connect(model_, SIGNAL(PlaylistRenamed(int,QString)), - manager, SLOT(Rename(int,QString))); + connect(model_, SIGNAL(PlaylistRenamed(int, QString)), manager, + SLOT(Rename(int, QString))); connect(player, SIGNAL(Paused()), SLOT(ActivePaused())); connect(player, SIGNAL(Playing()), SLOT(ActivePlaying())); connect(player, SIGNAL(Stopped()), SLOT(ActiveStopped())); // Get all playlists, even ones that are hidden in the UI. - foreach (const PlaylistBackend::Playlist& p, - app->playlist_backend()->GetAllFavoritePlaylists()) { + for (const PlaylistBackend::Playlist& p : + app->playlist_backend()->GetAllFavoritePlaylists()) { QStandardItem* playlist_item = model_->NewPlaylist(p.name, p.id); QStandardItem* parent_folder = model_->FolderByPath(p.ui_path); parent_folder->appendRow(playlist_item); @@ -179,7 +176,8 @@ void PlaylistListContainer::NewFolderClicked() { model_->invisibleRootItem()->appendRow(model_->NewFolder(name)); } -void PlaylistListContainer::AddPlaylist(int id, const QString& name, bool favorite) { +void PlaylistListContainer::AddPlaylist(int id, const QString& name, + bool favorite) { if (!favorite) { return; } @@ -218,19 +216,22 @@ void PlaylistListContainer::RemovePlaylist(int id) { } void PlaylistListContainer::SavePlaylist() { - const QModelIndex& current_index = proxy_->mapToSource(ui_->tree->currentIndex()); + const QModelIndex& current_index = + proxy_->mapToSource(ui_->tree->currentIndex()); // Is it a playlist? if (current_index.data(PlaylistListModel::Role_Type).toInt() == PlaylistListModel::Type_Playlist) { - const int playlist_id = current_index.data(PlaylistListModel::Role_PlaylistId).toInt(); + const int playlist_id = + current_index.data(PlaylistListModel::Role_PlaylistId).toInt(); QStandardItem* item = model_->PlaylistById(playlist_id); QString playlist_name = item ? item->text() : tr("Playlist"); app_->playlist_manager()->SaveWithUI(playlist_id, playlist_name); } } -void PlaylistListContainer::PlaylistFavoriteStateChanged(int id, bool favorite) { +void PlaylistListContainer::PlaylistFavoriteStateChanged(int id, + bool favorite) { if (favorite) { const QString& name = app_->playlist_manager()->GetPlaylistName(id); AddPlaylist(id, name, favorite); @@ -262,11 +263,12 @@ void PlaylistListContainer::CurrentChanged(Playlist* new_playlist) { QModelIndex index = proxy_->mapFromSource(item->index()); ui_->tree->selectionModel()->setCurrentIndex( - index, QItemSelectionModel::ClearAndSelect); + index, QItemSelectionModel::ClearAndSelect); ui_->tree->scrollTo(index); } -void PlaylistListContainer::PlaylistPathChanged(int id, const QString& new_path) { +void PlaylistListContainer::PlaylistPathChanged(int id, + const QString& new_path) { // Update the path in the database app_->playlist_backend()->SetPlaylistUiPath(id, new_path); Playlist* playlist = app_->playlist_manager()->playlist(id); @@ -283,7 +285,7 @@ void PlaylistListContainer::ItemDoubleClicked(const QModelIndex& proxy_index) { if (index.data(PlaylistListModel::Role_Type).toInt() == PlaylistListModel::Type_Playlist) { app_->playlist_manager()->SetCurrentOrOpen( - index.data(PlaylistListModel::Role_PlaylistId).toInt()); + index.data(PlaylistListModel::Role_PlaylistId).toInt()); } } @@ -291,30 +293,31 @@ void PlaylistListContainer::DeleteClicked() { QSet ids; QList folders_to_delete; - foreach (const QModelIndex& proxy_index, - ui_->tree->selectionModel()->selectedRows(0)) { + for (const QModelIndex& proxy_index : + ui_->tree->selectionModel()->selectedRows(0)) { const QModelIndex& index = proxy_->mapToSource(proxy_index); // Is it a playlist? switch (index.data(PlaylistListModel::Role_Type).toInt()) { - case PlaylistListModel::Type_Playlist: - ids << index.data(PlaylistListModel::Role_PlaylistId).toInt(); - break; + case PlaylistListModel::Type_Playlist: + ids << index.data(PlaylistListModel::Role_PlaylistId).toInt(); + break; - case PlaylistListModel::Type_Folder: - // Find all the playlists inside. - RecursivelyFindPlaylists(index, &ids); - folders_to_delete << index; - break; + case PlaylistListModel::Type_Folder: + // Find all the playlists inside. + RecursivelyFindPlaylists(index, &ids); + folders_to_delete << index; + break; } } // Make sure the user really wants to unfavorite all these playlists. if (ids.count() > 1) { - const int button = - QMessageBox::question(this, tr("Remove playlists"), - tr("You are about to remove %1 playlists from your favorites, are you sure?").arg(ids.count()), - QMessageBox::Yes, QMessageBox::Cancel); + const int button = QMessageBox::question( + this, tr("Remove playlists"), + tr("You are about to remove %1 playlists from your favorites, are you " + "sure?").arg(ids.count()), + QMessageBox::Yes, QMessageBox::Cancel); if (button != QMessageBox::Yes) { return; @@ -322,30 +325,30 @@ void PlaylistListContainer::DeleteClicked() { } // Unfavorite the playlists - foreach (int id, ids) { + for (int id : ids) { app_->playlist_manager()->Favorite(id, false); } // Delete the top-level folders. - foreach (const QPersistentModelIndex& index, folders_to_delete) { + for (const QPersistentModelIndex& index : folders_to_delete) { if (index.isValid()) { model_->removeRow(index.row(), index.parent()); } } } -void PlaylistListContainer::RecursivelyFindPlaylists( - const QModelIndex& parent, QSet* ids) const { +void PlaylistListContainer::RecursivelyFindPlaylists(const QModelIndex& parent, + QSet* ids) const { switch (parent.data(PlaylistListModel::Role_Type).toInt()) { - case PlaylistListModel::Type_Playlist: - ids->insert(parent.data(PlaylistListModel::Role_PlaylistId).toInt()); - break; + case PlaylistListModel::Type_Playlist: + ids->insert(parent.data(PlaylistListModel::Role_PlaylistId).toInt()); + break; - case PlaylistListModel::Type_Folder: - for (int i=0 ; irowCount(parent) ; ++i) { - RecursivelyFindPlaylists(parent.child(i, 0), ids); - } - break; + case PlaylistListModel::Type_Folder: + for (int i = 0; i < parent.model()->rowCount(parent); ++i) { + RecursivelyFindPlaylists(parent.child(i, 0), ids); + } + break; } } @@ -367,8 +370,8 @@ void PlaylistListContainer::ActivePlaying() { new_pixmap.fill(Qt::transparent); QPainter p(&new_pixmap); - p.drawPixmap((new_pixmap.width() - pixmap.width()) / 2, 0, - pixmap.width(), pixmap.height(), pixmap); + p.drawPixmap((new_pixmap.width() - pixmap.width()) / 2, 0, pixmap.width(), + pixmap.height(), pixmap); p.end(); padded_play_icon_.addPixmap(new_pixmap); diff --git a/src/playlist/playlistlistcontainer.h b/src/playlist/playlistlistcontainer.h index ecebb073d..2c1cc8486 100644 --- a/src/playlist/playlistlistcontainer.h +++ b/src/playlist/playlistlistcontainer.h @@ -34,17 +34,17 @@ class Ui_PlaylistListContainer; class PlaylistListContainer : public QWidget { Q_OBJECT -public: - PlaylistListContainer(QWidget* parent = 0); + public: + PlaylistListContainer(QWidget* parent = nullptr); ~PlaylistListContainer(); void SetApplication(Application* app); -protected: + protected: void showEvent(QShowEvent* e); void contextMenuEvent(QContextMenuEvent* e); -private slots: + private slots: // From the UI void NewFolderClicked(); void DeleteClicked(); @@ -68,12 +68,13 @@ private slots: void ActivePaused(); void ActiveStopped(); -private: + private: QStandardItem* ItemForPlaylist(const QString& name, int id); QStandardItem* ItemForFolder(const QString& name) const; void RecursivelySetIcons(QStandardItem* parent) const; - void RecursivelyFindPlaylists(const QModelIndex& parent, QSet* ids) const; + void RecursivelyFindPlaylists(const QModelIndex& parent, + QSet* ids) const; void UpdateActiveIcon(int id, const QIcon& icon); @@ -94,4 +95,4 @@ private: int active_playlist_id_; }; -#endif // PLAYLISTLISTCONTAINER_H +#endif // PLAYLISTLISTCONTAINER_H diff --git a/src/playlist/playlistlistmodel.cpp b/src/playlist/playlistlistmodel.cpp index acfb9dda3..89a5326d9 100644 --- a/src/playlist/playlistlistmodel.cpp +++ b/src/playlist/playlistlistmodel.cpp @@ -3,16 +3,14 @@ #include -PlaylistListModel::PlaylistListModel(QObject *parent) : - QStandardItemModel(parent), - dropping_rows_(false) -{ - connect(this, SIGNAL(dataChanged(QModelIndex,QModelIndex)), - SLOT(RowsChanged(QModelIndex,QModelIndex))); - connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), - SLOT(RowsInserted(QModelIndex,int,int))); +PlaylistListModel::PlaylistListModel(QObject* parent) + : QStandardItemModel(parent), dropping_rows_(false) { + connect(this, SIGNAL(dataChanged(QModelIndex, QModelIndex)), + SLOT(RowsChanged(QModelIndex, QModelIndex))); + connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), + SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + connect(this, SIGNAL(rowsInserted(QModelIndex, int, int)), + SLOT(RowsInserted(QModelIndex, int, int))); } void PlaylistListModel::SetIcons(const QIcon& playlist_icon, @@ -25,7 +23,8 @@ bool PlaylistListModel::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) { dropping_rows_ = true; - bool ret = QStandardItemModel::dropMimeData(data, action, row, column, parent); + bool ret = + QStandardItemModel::dropMimeData(data, action, row, column, parent); dropping_rows_ = false; return ret; @@ -50,8 +49,8 @@ void PlaylistListModel::RowsChanged(const QModelIndex& begin, AddRowMappings(begin, end); } -void PlaylistListModel::RowsInserted(const QModelIndex& parent, - int start, int end) { +void PlaylistListModel::RowsInserted(const QModelIndex& parent, int start, + int end) { // RowsChanged will take care of these when dropping. if (!dropping_rows_) { AddRowMappings(index(start, 0, parent), index(end, 0, parent)); @@ -62,52 +61,53 @@ void PlaylistListModel::AddRowMappings(const QModelIndex& begin, const QModelIndex& end) { const QString parent_path = ItemPath(itemFromIndex(begin)); - for (int i=begin.row() ; i<=end.row() ; ++i) { + for (int i = begin.row(); i <= end.row(); ++i) { const QModelIndex index = begin.sibling(i, 0); QStandardItem* item = itemFromIndex(index); AddRowItem(item, parent_path); } } -void PlaylistListModel::AddRowItem(QStandardItem* item, const QString& parent_path) { +void PlaylistListModel::AddRowItem(QStandardItem* item, + const QString& parent_path) { switch (item->data(Role_Type).toInt()) { - case Type_Playlist: { - const int id = item->data(Role_PlaylistId).toInt(); - playlists_by_id_[id] = item; - if (dropping_rows_) { - emit PlaylistPathChanged(id, parent_path); + case Type_Playlist: { + const int id = item->data(Role_PlaylistId).toInt(); + playlists_by_id_[id] = item; + if (dropping_rows_) { + emit PlaylistPathChanged(id, parent_path); + } + + break; } - break; - } - - case Type_Folder: - for (int j=0; jrowCount(); ++j) { - QStandardItem* child_item = item->child(j); - AddRowItem(child_item, parent_path); - } - break; + case Type_Folder: + for (int j = 0; j < item->rowCount(); ++j) { + QStandardItem* child_item = item->child(j); + AddRowItem(child_item, parent_path); + } + break; } } void PlaylistListModel::RowsAboutToBeRemoved(const QModelIndex& parent, int start, int end) { - for (int i=start ; i<=end ; ++i) { + for (int i = start; i <= end; ++i) { const QModelIndex idx = index(i, 0, parent); const QStandardItem* item = itemFromIndex(idx); switch (idx.data(Role_Type).toInt()) { - case Type_Playlist: { - const int id = idx.data(Role_PlaylistId).toInt(); - QMap::Iterator it = playlists_by_id_.find(id); - if (it != playlists_by_id_.end() && it.value() == item) { - playlists_by_id_.erase(it); + case Type_Playlist: { + const int id = idx.data(Role_PlaylistId).toInt(); + QMap::Iterator it = playlists_by_id_.find(id); + if (it != playlists_by_id_.end() && it.value() == item) { + playlists_by_id_.erase(it); + } + break; } - break; - } - case Type_Folder: - break; + case Type_Folder: + break; } } } @@ -126,11 +126,11 @@ QStandardItem* PlaylistListModel::FolderByPath(const QString& path) { QStandardItem* parent = invisibleRootItem(); const QStringList parts = path.split('/', QString::SkipEmptyParts); - foreach (const QString& part, parts) { - QStandardItem* matching_child = NULL; + for (const QString& part : parts) { + QStandardItem* matching_child = nullptr; const int child_count = parent->rowCount(); - for (int i=0 ; ichild(i)->data(Qt::DisplayRole).toString() == part) { matching_child = parent->child(i); break; @@ -160,33 +160,34 @@ QStandardItem* PlaylistListModel::NewFolder(const QString& name) const { return ret; } -QStandardItem* PlaylistListModel::NewPlaylist(const QString& name, int id) const { +QStandardItem* PlaylistListModel::NewPlaylist(const QString& name, + int id) const { QStandardItem* ret = new QStandardItem; ret->setText(name); ret->setData(PlaylistListModel::Type_Playlist, PlaylistListModel::Role_Type); ret->setData(id, PlaylistListModel::Role_PlaylistId); ret->setIcon(playlist_icon_); - ret->setFlags(Qt::ItemIsDragEnabled | - Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable); + ret->setFlags(Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | + Qt::ItemIsSelectable | Qt::ItemIsEditable); return ret; } -bool PlaylistListModel::setData(const QModelIndex& index, - const QVariant& value, int role) { +bool PlaylistListModel::setData(const QModelIndex& index, const QVariant& value, + int role) { if (!QStandardItemModel::setData(index, value, role)) { return false; } switch (index.data(Role_Type).toInt()) { - case Type_Playlist: - emit PlaylistRenamed(index.data(Role_PlaylistId).toInt(), - value.toString()); - break; + case Type_Playlist: + emit PlaylistRenamed(index.data(Role_PlaylistId).toInt(), + value.toString()); + break; - case Type_Folder: - // Walk all the children and modify their paths. - UpdatePathsRecursive(index); - break; + case Type_Folder: + // Walk all the children and modify their paths. + UpdatePathsRecursive(index); + break; } return true; @@ -194,15 +195,15 @@ bool PlaylistListModel::setData(const QModelIndex& index, void PlaylistListModel::UpdatePathsRecursive(const QModelIndex& parent) { switch (parent.data(Role_Type).toInt()) { - case Type_Playlist: - emit PlaylistPathChanged(parent.data(Role_PlaylistId).toInt(), - ItemPath(itemFromIndex(parent))); - break; + case Type_Playlist: + emit PlaylistPathChanged(parent.data(Role_PlaylistId).toInt(), + ItemPath(itemFromIndex(parent))); + break; - case Type_Folder: - for (int i=0 ; i folders_by_path_; }; -#endif // PLAYLISTLISTMODEL_H +#endif // PLAYLISTLISTMODEL_H diff --git a/src/playlist/playlistlistview.cpp b/src/playlist/playlistlistview.cpp index e0db25b20..411458d23 100644 --- a/src/playlist/playlistlistview.cpp +++ b/src/playlist/playlistlistview.cpp @@ -20,10 +20,7 @@ #include PlaylistListView::PlaylistListView(QWidget* parent) - : AutoExpandingTreeView(parent) -{ -} - + : AutoExpandingTreeView(parent) {} void PlaylistListView::paintEvent(QPaintEvent* event) { if (model()->rowCount() <= 0) { @@ -36,9 +33,11 @@ void PlaylistListView::paintEvent(QPaintEvent* event) { bold_font.setBold(true); p.setFont(bold_font); - p.drawText(rect, Qt::AlignHCenter | Qt::TextWordWrap, tr("\n\n" - "You can favorite playlists by clicking the star icon next to a playlist name\n\n" - "Favorited playlists will be saved here")); + p.drawText(rect, Qt::AlignHCenter | Qt::TextWordWrap, + tr("\n\n" + "You can favorite playlists by clicking the star icon next " + "to a playlist name\n\n" + "Favorited playlists will be saved here")); } else { AutoExpandingTreeView::paintEvent(event); } diff --git a/src/playlist/playlistlistview.h b/src/playlist/playlistlistview.h index d4e5fba3e..e5ac1c33a 100644 --- a/src/playlist/playlistlistview.h +++ b/src/playlist/playlistlistview.h @@ -21,7 +21,7 @@ class PlaylistListView : public AutoExpandingTreeView { Q_OBJECT public: - PlaylistListView(QWidget* parent = NULL); + PlaylistListView(QWidget* parent = nullptr); ~PlaylistListView() {} protected: diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index 1dcb35983..50cc2404b 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -38,16 +38,15 @@ using smart_playlists::GeneratorPtr; -PlaylistManager::PlaylistManager(Application* app, QObject *parent) - : PlaylistManagerInterface(app, parent), - app_(app), - playlist_backend_(NULL), - library_backend_(NULL), - sequence_(NULL), - parser_(NULL), - current_(-1), - active_(-1) -{ +PlaylistManager::PlaylistManager(Application* app, QObject* parent) + : PlaylistManagerInterface(app, parent), + app_(app), + playlist_backend_(nullptr), + library_backend_(nullptr), + sequence_(nullptr), + parser_(nullptr), + current_(-1), + active_(-1) { connect(app_->player(), SIGNAL(Paused()), SLOT(SetActivePaused())); connect(app_->player(), SIGNAL(Playing()), SLOT(SetActivePlaying())); connect(app_->player(), SIGNAL(Stopped()), SLOT(SetActiveStopped())); @@ -56,7 +55,7 @@ PlaylistManager::PlaylistManager(Application* app, QObject *parent) } PlaylistManager::~PlaylistManager() { - foreach (const Data& data, playlists_.values()) { + for (const Data& data : playlists_.values()) { delete data.p; } } @@ -71,17 +70,20 @@ void PlaylistManager::Init(LibraryBackend* library_backend, parser_ = new PlaylistParser(library_backend, this); playlist_container_ = playlist_container; - connect(library_backend_, SIGNAL(SongsDiscovered(SongList)), SLOT(SongsDiscovered(SongList))); - connect(library_backend_, SIGNAL(SongsStatisticsChanged(SongList)), SLOT(SongsDiscovered(SongList))); - connect(library_backend_, SIGNAL(SongsRatingChanged(SongList)), SLOT(SongsDiscovered(SongList))); + connect(library_backend_, SIGNAL(SongsDiscovered(SongList)), + SLOT(SongsDiscovered(SongList))); + connect(library_backend_, SIGNAL(SongsStatisticsChanged(SongList)), + SLOT(SongsDiscovered(SongList))); + connect(library_backend_, SIGNAL(SongsRatingChanged(SongList)), + SLOT(SongsDiscovered(SongList))); - foreach (const PlaylistBackend::Playlist& p, playlist_backend->GetAllOpenPlaylists()) { + for (const PlaylistBackend::Playlist& p : + playlist_backend->GetAllOpenPlaylists()) { AddPlaylist(p.id, p.name, p.special_type, p.ui_path, p.favorite); } // If no playlist exists then make a new one - if (playlists_.isEmpty()) - New(tr("Playlist")); + if (playlists_.isEmpty()) New(tr("Playlist")); emit PlaylistManagerInitialized(); } @@ -89,7 +91,7 @@ void PlaylistManager::Init(LibraryBackend* library_backend, QList PlaylistManager::GetAllPlaylists() const { QList result; - foreach(const Data& data, playlists_.values()) { + for (const Data& data : playlists_.values()) { result.append(data.p); } @@ -103,21 +105,24 @@ QItemSelection PlaylistManager::selection(int id) const { Playlist* PlaylistManager::AddPlaylist(int id, const QString& name, const QString& special_type, - const QString& ui_path, - bool favorite) { + const QString& ui_path, bool favorite) { Playlist* ret = new Playlist(playlist_backend_, app_->task_manager(), library_backend_, id, special_type, favorite); ret->set_sequence(sequence_); ret->set_ui_path(ui_path); - connect(ret, SIGNAL(CurrentSongChanged(Song)), SIGNAL(CurrentSongChanged(Song))); + connect(ret, SIGNAL(CurrentSongChanged(Song)), + SIGNAL(CurrentSongChanged(Song))); connect(ret, SIGNAL(PlaylistChanged()), SLOT(OneOfPlaylistsChanged())); connect(ret, SIGNAL(PlaylistChanged()), SLOT(UpdateSummaryText())); - connect(ret, SIGNAL(EditingFinished(QModelIndex)), SIGNAL(EditingFinished(QModelIndex))); + connect(ret, SIGNAL(EditingFinished(QModelIndex)), + SIGNAL(EditingFinished(QModelIndex))); connect(ret, SIGNAL(LoadTracksError(QString)), SIGNAL(Error(QString))); - connect(ret, SIGNAL(PlayRequested(QModelIndex)), SIGNAL(PlayRequested(QModelIndex))); - connect(playlist_container_->view(), SIGNAL(ColumnAlignmentChanged(ColumnAlignmentMap)), - ret, SLOT(SetColumnAlignment(ColumnAlignmentMap))); + connect(ret, SIGNAL(PlayRequested(QModelIndex)), + SIGNAL(PlayRequested(QModelIndex))); + connect(playlist_container_->view(), + SIGNAL(ColumnAlignmentChanged(ColumnAlignmentMap)), ret, + SLOT(SetColumnAlignment(ColumnAlignmentMap))); playlists_[id] = Data(ret, name); @@ -135,13 +140,11 @@ Playlist* PlaylistManager::AddPlaylist(int id, const QString& name, void PlaylistManager::New(const QString& name, const SongList& songs, const QString& special_type) { - if (name.isNull()) - return; + if (name.isNull()) return; int id = playlist_backend_->CreatePlaylist(name, special_type); - if (id == -1) - qFatal("Couldn't create playlist"); + if (id == -1) qFatal("Couldn't create playlist"); Playlist* playlist = AddPlaylist(id, name, special_type, QString(), false); playlist->InsertSongsOrLibraryItems(songs); @@ -155,57 +158,40 @@ void PlaylistManager::New(const QString& name, const SongList& songs, } void PlaylistManager::Load(const QString& filename) { - QUrl url = QUrl::fromLocalFile(filename); - SongLoader* loader = new SongLoader(library_backend_, app_->player(), this); - connect(loader, SIGNAL(LoadFinished(bool)), SLOT(LoadFinished(bool))); - SongLoader::Result result = loader->Load(url); QFileInfo info(filename); - if (result == SongLoader::Error || - (result == SongLoader::Success && loader->songs().isEmpty())) { - app_->AddError(tr("The playlist '%1' was empty or could not be loaded.").arg( - info.completeBaseName())); - delete loader; + int id = playlist_backend_->CreatePlaylist(info.baseName(), QString()); + + if (id == -1) { + emit Error(tr("Couldn't create playlist")); return; } - if (result == SongLoader::Success) { - New(info.baseName(), loader->songs()); - delete loader; - } -} + Playlist* playlist = AddPlaylist(id, info.baseName(), QString(), QString(), false); -void PlaylistManager::LoadFinished(bool success) { - SongLoader* loader = qobject_cast(sender()); - loader->deleteLater(); - QString localfile = loader->url().toLocalFile(); - QFileInfo info(localfile); - if (!success || loader->songs().isEmpty()) { - app_->AddError(tr("The playlist '%1' was empty or could not be loaded.").arg( - info.completeBaseName())); - } - - New(info.baseName(), loader->songs()); + QList urls; + playlist->InsertUrls(urls << QUrl::fromLocalFile(filename)); } void PlaylistManager::Save(int id, const QString& filename) { if (playlists_.contains(id)) { parser_->Save(playlist(id)->GetAllSongs(), filename); } else { - // Playlist is not in the playlist manager: probably save action was triggered + // Playlist is not in the playlist manager: probably save action was + // triggered // from the left side bar and the playlist isn't loaded. QFuture future = playlist_backend_->GetPlaylistSongs(id); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); - NewClosure(watcher, SIGNAL(finished()), - this, SLOT(ItemsLoadedForSavePlaylist(QFutureWatcher*, QString)), watcher, filename); + NewClosure(watcher, SIGNAL(finished()), this, + SLOT(ItemsLoadedForSavePlaylist(QFutureWatcher*, QString)), + watcher, filename); } } -void PlaylistManager::ItemsLoadedForSavePlaylist( - QFutureWatcher* watcher, - const QString& filename) { +void PlaylistManager::ItemsLoadedForSavePlaylist(QFutureWatcher* watcher, + const QString& filename) { SongList song_list = watcher->future().results(); parser_->Save(song_list, filename); @@ -220,35 +206,30 @@ void PlaylistManager::SaveWithUI(int id, const QString& suggested_filename) { // Strip off filename components until we find something that's a folder forever { QFileInfo fileinfo(filename); - if (filename.isEmpty() || fileinfo.isDir()) - break; + if (filename.isEmpty() || fileinfo.isDir()) break; filename = filename.section('/', 0, -2); } // Use the home directory as a fallback in case the path is empty. - if (filename.isEmpty()) - filename = QDir::homePath(); + if (filename.isEmpty()) filename = QDir::homePath(); // Add the suggested filename - filename += "/" + suggested_filename + - "." + parser()->default_extension(); + filename += "/" + suggested_filename + "." + parser()->default_extension(); QString default_filter = parser()->default_filter(); filename = QFileDialog::getSaveFileName( - NULL, tr("Save playlist", "Title of the playlist save dialog."), filename, - parser()->filters(), &default_filter); + nullptr, tr("Save playlist", "Title of the playlist save dialog."), + filename, parser()->filters(), &default_filter); - if (filename.isNull()) - return; + if (filename.isNull()) return; settings_.setValue("last_save_playlist", filename); Save(id == -1 ? current_id() : id, filename); } - void PlaylistManager::Rename(int id, const QString& new_name) { Q_ASSERT(playlists_.contains(id)); @@ -261,12 +242,14 @@ void PlaylistManager::Rename(int id, const QString& new_name) { void PlaylistManager::Favorite(int id, bool favorite) { if (playlists_.contains(id)) { - // If playlists_ contains this playlist, its means it's opened: star or unstar it. + // If playlists_ contains this playlist, its means it's opened: star or + // unstar it. playlist_backend_->FavoritePlaylist(id, favorite); playlists_[id].p->set_favorite(favorite); } else { Q_ASSERT(!favorite); - // Otherwise it means user wants to remove this playlist from the left panel, + // Otherwise it means user wants to remove this playlist from the left + // panel, // while it's not visible in the playlist tabbar either, because it has been // closed: delete it. playlist_backend_->RemovePlaylist(id); @@ -276,23 +259,19 @@ void PlaylistManager::Favorite(int id, bool favorite) { bool PlaylistManager::Close(int id) { // Won't allow removing the last playlist - if (playlists_.count() <= 1 || !playlists_.contains(id)) - return false; + if (playlists_.count() <= 1 || !playlists_.contains(id)) return false; int next_id = -1; - foreach (int possible_next_id, playlists_.keys()) { + for (int possible_next_id : playlists_.keys()) { if (possible_next_id != id) { next_id = possible_next_id; break; } } - if (next_id == -1) - return false; + if (next_id == -1) return false; - if (id == active_) - SetActivePlaylist(next_id); - if (id == current_) - SetCurrentPlaylist(next_id); + if (id == active_) SetActivePlaylist(next_id); + if (id == current_) SetCurrentPlaylist(next_id); Data data = playlists_.take(id); emit PlaylistClosed(id); @@ -331,8 +310,7 @@ void PlaylistManager::SetActivePlaylist(int id) { // Kinda a hack: unset the current item from the old active playlist before // setting the new one - if (active_ != -1 && active_ != id) - active()->set_current_row(-1); + if (active_ != -1 && active_ != id) active()->set_current_row(-1); active_ = id; emit ActiveChanged(active()); @@ -350,31 +328,22 @@ void PlaylistManager::SetActiveToCurrent() { } } -void PlaylistManager::ClearCurrent() { - current()->Clear(); -} +void PlaylistManager::ClearCurrent() { current()->Clear(); } -void PlaylistManager::ShuffleCurrent() { - current()->Shuffle(); -} +void PlaylistManager::ShuffleCurrent() { current()->Shuffle(); } void PlaylistManager::RemoveDuplicatesCurrent() { current()->RemoveDuplicateSongs(); } -void PlaylistManager::SetActivePlaying() { - active()->Playing(); -} +void PlaylistManager::SetActivePlaying() { active()->Playing(); } -void PlaylistManager::SetActivePaused() { - active()->Paused(); -} +void PlaylistManager::SetActivePaused() { active()->Paused(); } -void PlaylistManager::SetActiveStopped() { - active()->Stopped(); -} +void PlaylistManager::SetActiveStopped() { active()->Stopped(); } -void PlaylistManager::SetActiveStreamMetadata(const QUrl &url, const Song &song) { +void PlaylistManager::SetActiveStreamMetadata(const QUrl& url, + const Song& song) { active()->SetStreamMetadata(url, song); } @@ -396,15 +365,14 @@ void PlaylistManager::UpdateSummaryText() { int selected = 0; // Get the length of the selected tracks - foreach (const QItemSelectionRange& range, playlists_[current_id()].selection) { - if (!range.isValid()) - continue; + for (const QItemSelectionRange& range : playlists_[current_id()].selection) { + if (!range.isValid()) continue; selected += range.bottom() - range.top() + 1; - for (int i=range.top() ; i<=range.bottom() ; ++i) { - qint64 length = range.model()->index(i, Playlist::Column_Length).data().toLongLong(); - if (length > 0) - nanoseconds += length; + for (int i = range.top(); i <= range.bottom(); ++i) { + qint64 length = + range.model()->index(i, Playlist::Column_Length).data().toLongLong(); + if (length > 0) nanoseconds += length; } } @@ -433,12 +401,11 @@ void PlaylistManager::SongsDiscovered(const SongList& songs) { // Some songs might've changed in the library, let's update any playlist // items we have that match those songs - foreach (const Song& song, songs) { - foreach (const Data& data, playlists_) { + for (const Song& song : songs) { + for (const Data& data : playlists_) { PlaylistItemList items = data.p->library_items_by_id(song.id()); - foreach (PlaylistItemPtr item, items) { - if (item->Metadata().directory_id() != song.directory_id()) - continue; + for (PlaylistItemPtr item : items) { + if (item->Metadata().directory_id() != song.directory_id()) continue; static_cast(item.get())->SetMetadata(song); data.p->ItemChanged(item); } @@ -446,7 +413,8 @@ void PlaylistManager::SongsDiscovered(const SongList& songs) { } } -void PlaylistManager::PlaySmartPlaylist(GeneratorPtr generator, bool as_new, bool clear) { +void PlaylistManager::PlaySmartPlaylist(GeneratorPtr generator, bool as_new, + bool clear) { if (as_new) { New(generator->name()); } @@ -460,34 +428,35 @@ void PlaylistManager::PlaySmartPlaylist(GeneratorPtr generator, bool as_new, boo // When Player has processed the new song chosen by the user... void PlaylistManager::SongChangeRequestProcessed(const QUrl& url, bool valid) { - foreach(Playlist* playlist, GetAllPlaylists()) { - if(playlist->ApplyValidityOnCurrentSong(url, valid)) { + for (Playlist* playlist : GetAllPlaylists()) { + if (playlist->ApplyValidityOnCurrentSong(url, valid)) { return; } } } -void PlaylistManager::InsertUrls(int id, const QList &urls, int pos, +void PlaylistManager::InsertUrls(int id, const QList& urls, int pos, bool play_now, bool enqueue) { Q_ASSERT(playlists_.contains(id)); playlists_[id].p->InsertUrls(urls, pos, play_now, enqueue); } -void PlaylistManager::RemoveItemsWithoutUndo(int id, const QList &indices) { +void PlaylistManager::RemoveItemsWithoutUndo(int id, + const QList& indices) { Q_ASSERT(playlists_.contains(id)); playlists_[id].p->RemoveItemsWithoutUndo(indices); } void PlaylistManager::InvalidateDeletedSongs() { - foreach(Playlist* playlist, GetAllPlaylists()) { + for (Playlist* playlist : GetAllPlaylists()) { playlist->InvalidateDeletedSongs(); } } void PlaylistManager::RemoveDeletedSongs() { - foreach(Playlist* playlist, GetAllPlaylists()) { + for (Playlist* playlist : GetAllPlaylists()) { playlist->RemoveDeletedSongs(); } } @@ -500,15 +469,11 @@ QString PlaylistManager::GetNameForNewPlaylist(const SongList& songs) { QSet artists; QSet albums; - foreach(const Song& song, songs) { - artists << (song.artist().isEmpty() - ? tr("Unknown") - : song.artist()); - albums << (song.album().isEmpty() - ? tr("Unknown") - : song.album()); + for (const Song& song : songs) { + artists << (song.artist().isEmpty() ? tr("Unknown") : song.artist()); + albums << (song.album().isEmpty() ? tr("Unknown") : song.album()); - if(artists.size() > 1) { + if (artists.size() > 1) { break; } } @@ -516,13 +481,13 @@ QString PlaylistManager::GetNameForNewPlaylist(const SongList& songs) { bool various_artists = artists.size() > 1; QString result; - if(various_artists) { + if (various_artists) { result = tr("Various artists"); } else { result = artists.values().first(); } - if(!various_artists && albums.size() == 1) { + if (!various_artists && albums.size() == 1) { result += " - " + albums.toList().first(); } @@ -547,6 +512,4 @@ void PlaylistManager::SetCurrentOrOpen(int id) { SetCurrentPlaylist(id); } -bool PlaylistManager::IsPlaylistOpen(int id) { - return playlists_.contains(id); -} +bool PlaylistManager::IsPlaylistOpen(int id) { return playlists_.contains(id); } diff --git a/src/playlist/playlistmanager.h b/src/playlist/playlistmanager.h index 6be882f7f..a9b5a9af4 100644 --- a/src/playlist/playlistmanager.h +++ b/src/playlist/playlistmanager.h @@ -42,9 +42,9 @@ class QUrl; class PlaylistManagerInterface : public QObject { Q_OBJECT -public: + public: PlaylistManagerInterface(Application* app, QObject* parent) - : QObject(parent) {} + : QObject(parent) {} virtual int current_id() const = 0; virtual int active_id() const = 0; @@ -72,7 +72,7 @@ public: virtual PlaylistParser* parser() const = 0; virtual PlaylistContainer* playlist_container() const = 0; -public slots: + public slots: virtual void New(const QString& name, const SongList& songs = SongList(), const QString& special_type = QString()) = 0; virtual void Load(const QString& filename) = 0; @@ -104,7 +104,8 @@ public slots: // Rate current song using 0 - 5 scale. virtual void RateCurrentSong(int rating) = 0; - virtual void PlaySmartPlaylist(smart_playlists::GeneratorPtr generator, bool as_new, bool clear) = 0; + virtual void PlaySmartPlaylist(smart_playlists::GeneratorPtr generator, + bool as_new, bool clear) = 0; signals: void PlaylistManagerInitialized(); @@ -133,8 +134,8 @@ signals: class PlaylistManager : public PlaylistManagerInterface { Q_OBJECT -public: - PlaylistManager(Application* app, QObject *parent = 0); + public: + PlaylistManager(Application* app, QObject* parent = nullptr); ~PlaylistManager(); int current_id() const { return current_; } @@ -162,7 +163,9 @@ public: QItemSelection active_selection() const { return selection(active_id()); } QString GetPlaylistName(int index) const { return playlists_[index].name; } - bool IsPlaylistFavorite(int index) const { return playlists_[index].p->is_favorite(); } + bool IsPlaylistFavorite(int index) const { + return playlists_[index].p->is_favorite(); + } void Init(LibraryBackend* library_backend, PlaylistBackend* playlist_backend, PlaylistSequence* sequence, PlaylistContainer* playlist_container); @@ -173,7 +176,7 @@ public: PlaylistParser* parser() const { return parser_; } PlaylistContainer* playlist_container() const { return playlist_container_; } -public slots: + public slots: void New(const QString& name, const SongList& songs = SongList(), const QString& special_type = QString()); void Load(const QString& filename); @@ -207,15 +210,18 @@ public slots: // Rate current song using 0 - 5 scale. void RateCurrentSong(int rating); - void PlaySmartPlaylist(smart_playlists::GeneratorPtr generator, bool as_new, bool clear); + void PlaySmartPlaylist(smart_playlists::GeneratorPtr generator, bool as_new, + bool clear); void SongChangeRequestProcessed(const QUrl& url, bool valid); - void InsertUrls(int id, const QList& urls, int pos = -1, bool play_now = false, bool enqueue = false); - // Removes items with given indices from the playlist. This operation is not undoable. + void InsertUrls(int id, const QList& urls, int pos = -1, + bool play_now = false, bool enqueue = false); + // Removes items with given indices from the playlist. This operation is not + // undoable. void RemoveItemsWithoutUndo(int id, const QList& indices); -private slots: + private slots: void SetActivePlaying(); void SetActivePaused(); void SetActiveStopped(); @@ -223,16 +229,18 @@ private slots: void OneOfPlaylistsChanged(); void UpdateSummaryText(); void SongsDiscovered(const SongList& songs); - void LoadFinished(bool success); - void ItemsLoadedForSavePlaylist(QFutureWatcher* watcher, const QString& filename); + void ItemsLoadedForSavePlaylist(QFutureWatcher* watcher, + const QString& filename); -private: - Playlist* AddPlaylist(int id, const QString& name, const QString& special_type, - const QString& ui_path, bool favorite); + private: + Playlist* AddPlaylist(int id, const QString& name, + const QString& special_type, const QString& ui_path, + bool favorite); -private: + private: struct Data { - Data(Playlist* _p = NULL, const QString& _name = QString()) : p(_p), name(_name) {} + Data(Playlist* _p = nullptr, const QString& _name = QString()) + : p(_p), name(_name) {} Playlist* p; QString name; QItemSelection selection; @@ -254,4 +262,4 @@ private: int active_; }; -#endif // PLAYLISTMANAGER_H +#endif // PLAYLISTMANAGER_H diff --git a/src/playlist/playlistsequence.cpp b/src/playlist/playlistsequence.cpp index 225a1dbde..d93c43b40 100644 --- a/src/playlist/playlistsequence.cpp +++ b/src/playlist/playlistsequence.cpp @@ -27,22 +27,23 @@ const char* PlaylistSequence::kSettingsGroup = "PlaylistSequence"; -PlaylistSequence::PlaylistSequence(QWidget *parent, SettingsProvider *settings) - : QWidget(parent), - ui_(new Ui_PlaylistSequence), - settings_(settings ? settings : new DefaultSettingsProvider), - repeat_menu_(new QMenu(this)), - shuffle_menu_(new QMenu(this)), - loading_(false), - repeat_mode_(Repeat_Off), - shuffle_mode_(Shuffle_Off), - dynamic_(false) -{ +PlaylistSequence::PlaylistSequence(QWidget* parent, SettingsProvider* settings) + : QWidget(parent), + ui_(new Ui_PlaylistSequence), + settings_(settings ? settings : new DefaultSettingsProvider), + repeat_menu_(new QMenu(this)), + shuffle_menu_(new QMenu(this)), + loading_(false), + repeat_mode_(Repeat_Off), + shuffle_mode_(Shuffle_Off), + dynamic_(false) { ui_->setupUi(this); // Icons - ui_->repeat->setIcon(AddDesaturatedIcon(IconLoader::Load("media-playlist-repeat"))); - ui_->shuffle->setIcon(AddDesaturatedIcon(IconLoader::Load("media-playlist-shuffle"))); + ui_->repeat->setIcon( + AddDesaturatedIcon(IconLoader::Load("media-playlist-repeat"))); + ui_->shuffle->setIcon( + AddDesaturatedIcon(IconLoader::Load("media-playlist-shuffle"))); settings_->set_group(kSettingsGroup); @@ -62,20 +63,22 @@ PlaylistSequence::PlaylistSequence(QWidget *parent, SettingsProvider *settings) shuffle_menu_->addActions(shuffle_group->actions()); ui_->shuffle->setMenu(shuffle_menu_); - connect(repeat_group, SIGNAL(triggered(QAction*)), SLOT(RepeatActionTriggered(QAction*))); - connect(shuffle_group, SIGNAL(triggered(QAction*)), SLOT(ShuffleActionTriggered(QAction*))); + connect(repeat_group, SIGNAL(triggered(QAction*)), + SLOT(RepeatActionTriggered(QAction*))); + connect(shuffle_group, SIGNAL(triggered(QAction*)), + SLOT(ShuffleActionTriggered(QAction*))); Load(); } -PlaylistSequence::~PlaylistSequence() { - delete ui_; -} +PlaylistSequence::~PlaylistSequence() { delete ui_; } void PlaylistSequence::Load() { - loading_ = true; // Stops these setter functions calling Save() - SetShuffleMode(ShuffleMode(settings_->value("shuffle_mode", Shuffle_Off).toInt())); - SetRepeatMode(RepeatMode(settings_->value("repeat_mode", Repeat_Off).toInt())); + loading_ = true; // Stops these setter functions calling Save() + SetShuffleMode( + ShuffleMode(settings_->value("shuffle_mode", Shuffle_Off).toInt())); + SetRepeatMode( + RepeatMode(settings_->value("repeat_mode", Repeat_Off).toInt())); loading_ = false; } @@ -88,7 +91,7 @@ void PlaylistSequence::Save() { QIcon PlaylistSequence::AddDesaturatedIcon(const QIcon& icon) { QIcon ret; - foreach (const QSize& size, icon.availableSizes()) { + for (const QSize& size : icon.availableSizes()) { QPixmap on(icon.pixmap(size)); QPixmap off(DesaturatedPixmap(on)); @@ -112,8 +115,8 @@ QPixmap PlaylistSequence::DesaturatedPixmap(const QPixmap& pixmap) { void PlaylistSequence::RepeatActionTriggered(QAction* action) { RepeatMode mode = Repeat_Off; - if (action == ui_->action_repeat_track) mode = Repeat_Track; - if (action == ui_->action_repeat_album) mode = Repeat_Album; + if (action == ui_->action_repeat_track) mode = Repeat_Track; + if (action == ui_->action_repeat_album) mode = Repeat_Album; if (action == ui_->action_repeat_playlist) mode = Repeat_Playlist; SetRepeatMode(mode); @@ -121,9 +124,9 @@ void PlaylistSequence::RepeatActionTriggered(QAction* action) { void PlaylistSequence::ShuffleActionTriggered(QAction* action) { ShuffleMode mode = Shuffle_Off; - if (action == ui_->action_shuffle_all) mode = Shuffle_All; + if (action == ui_->action_shuffle_all) mode = Shuffle_All; if (action == ui_->action_shuffle_inside_album) mode = Shuffle_InsideAlbum; - if (action == ui_->action_shuffle_albums) mode = Shuffle_Albums; + if (action == ui_->action_shuffle_albums) mode = Shuffle_Albums; SetShuffleMode(mode); } @@ -131,11 +134,19 @@ void PlaylistSequence::ShuffleActionTriggered(QAction* action) { void PlaylistSequence::SetRepeatMode(RepeatMode mode) { ui_->repeat->setChecked(mode != Repeat_Off); - switch(mode) { - case Repeat_Off: ui_->action_repeat_off->setChecked(true); break; - case Repeat_Track: ui_->action_repeat_track->setChecked(true); break; - case Repeat_Album: ui_->action_repeat_album->setChecked(true); break; - case Repeat_Playlist: ui_->action_repeat_playlist->setChecked(true); break; + switch (mode) { + case Repeat_Off: + ui_->action_repeat_off->setChecked(true); + break; + case Repeat_Track: + ui_->action_repeat_track->setChecked(true); + break; + case Repeat_Album: + ui_->action_repeat_album->setChecked(true); + break; + case Repeat_Playlist: + ui_->action_repeat_playlist->setChecked(true); + break; } if (mode != repeat_mode_) { @@ -150,13 +161,20 @@ void PlaylistSequence::SetShuffleMode(ShuffleMode mode) { ui_->shuffle->setChecked(mode != Shuffle_Off); switch (mode) { - case Shuffle_Off: ui_->action_shuffle_off->setChecked(true); break; - case Shuffle_All: ui_->action_shuffle_all->setChecked(true); break; - case Shuffle_InsideAlbum: ui_->action_shuffle_inside_album->setChecked(true); break; - case Shuffle_Albums: ui_->action_shuffle_albums->setChecked(true); break; + case Shuffle_Off: + ui_->action_shuffle_off->setChecked(true); + break; + case Shuffle_All: + ui_->action_shuffle_all->setChecked(true); + break; + case Shuffle_InsideAlbum: + ui_->action_shuffle_inside_album->setChecked(true); + break; + case Shuffle_Albums: + ui_->action_shuffle_albums->setChecked(true); + break; } - if (mode != shuffle_mode_) { shuffle_mode_ = mode; emit ShuffleModeChanged(mode); @@ -167,7 +185,8 @@ void PlaylistSequence::SetShuffleMode(ShuffleMode mode) { void PlaylistSequence::SetUsingDynamicPlaylist(bool dynamic) { dynamic_ = dynamic; - const QString not_available(tr("Not available while using a dynamic playlist")); + const QString not_available( + tr("Not available while using a dynamic playlist")); setEnabled(!dynamic); ui_->shuffle->setToolTip(dynamic ? not_available : tr("Shuffle")); @@ -182,29 +201,43 @@ PlaylistSequence::RepeatMode PlaylistSequence::repeat_mode() const { return dynamic_ ? Repeat_Off : repeat_mode_; } -//called from global shortcut +// called from global shortcut void PlaylistSequence::CycleShuffleMode() { ShuffleMode mode = Shuffle_Off; - //we cycle through the shuffle modes + // we cycle through the shuffle modes switch (shuffle_mode()) { - case Shuffle_Off: mode = Shuffle_All; break; - case Shuffle_All: mode = Shuffle_InsideAlbum; break; - case Shuffle_InsideAlbum: mode = Shuffle_Albums; break; - case Shuffle_Albums: break; + case Shuffle_Off: + mode = Shuffle_All; + break; + case Shuffle_All: + mode = Shuffle_InsideAlbum; + break; + case Shuffle_InsideAlbum: + mode = Shuffle_Albums; + break; + case Shuffle_Albums: + break; } SetShuffleMode(mode); } -//called from global shortcut +// called from global shortcut void PlaylistSequence::CycleRepeatMode() { RepeatMode mode = Repeat_Off; - //we cycle through the repeat modes + // we cycle through the repeat modes switch (repeat_mode()) { - case Repeat_Off: mode = Repeat_Track; break; - case Repeat_Track: mode = Repeat_Album; break; - case Repeat_Album: mode = Repeat_Playlist; break; - case Repeat_Playlist: break; + case Repeat_Off: + mode = Repeat_Track; + break; + case Repeat_Track: + mode = Repeat_Album; + break; + case Repeat_Album: + mode = Repeat_Playlist; + break; + case Repeat_Playlist: + break; } SetRepeatMode(mode); diff --git a/src/playlist/playlistsequence.h b/src/playlist/playlistsequence.h index cfdae520d..a5b841a78 100644 --- a/src/playlist/playlistsequence.h +++ b/src/playlist/playlistsequence.h @@ -18,12 +18,12 @@ #ifndef PLAYLISTSEQUENCE_H #define PLAYLISTSEQUENCE_H +#include + #include #include "core/settingsprovider.h" -#include - class QMenu; class Ui_PlaylistSequence; @@ -32,7 +32,7 @@ class PlaylistSequence : public QWidget { Q_OBJECT public: - PlaylistSequence(QWidget *parent = 0, SettingsProvider* settings = 0); + PlaylistSequence(QWidget* parent = nullptr, SettingsProvider* settings = 0); ~PlaylistSequence(); enum RepeatMode { @@ -63,7 +63,7 @@ class PlaylistSequence : public QWidget { void CycleRepeatMode(); void SetUsingDynamicPlaylist(bool dynamic); - signals: +signals: void RepeatModeChanged(PlaylistSequence::RepeatMode mode); void ShuffleModeChanged(PlaylistSequence::ShuffleMode mode); @@ -79,7 +79,7 @@ class PlaylistSequence : public QWidget { private: Ui_PlaylistSequence* ui_; - boost::scoped_ptr settings_; + std::unique_ptr settings_; QMenu* repeat_menu_; QMenu* shuffle_menu_; @@ -90,4 +90,4 @@ class PlaylistSequence : public QWidget { bool dynamic_; }; -#endif // PLAYLISTSEQUENCE_H +#endif // PLAYLISTSEQUENCE_H diff --git a/src/playlist/playlisttabbar.cpp b/src/playlist/playlisttabbar.cpp index 48c16698c..341100873 100644 --- a/src/playlist/playlisttabbar.cpp +++ b/src/playlist/playlisttabbar.cpp @@ -38,22 +38,24 @@ const char* PlaylistTabBar::kSettingsGroup = "PlaylistTabBar"; -PlaylistTabBar::PlaylistTabBar(QWidget *parent) - : QTabBar(parent), - manager_(NULL), - menu_(new QMenu(this)), - menu_index_(-1), - suppress_current_changed_(false), - rename_editor_(new RenameTabLineEdit(this)) -{ +PlaylistTabBar::PlaylistTabBar(QWidget* parent) + : QTabBar(parent), + manager_(nullptr), + menu_(new QMenu(this)), + menu_index_(-1), + suppress_current_changed_(false), + rename_editor_(new RenameTabLineEdit(this)) { setAcceptDrops(true); setElideMode(Qt::ElideRight); setUsesScrollButtons(true); setTabsClosable(true); - close_ = menu_->addAction(IconLoader::Load("list-remove"), tr("Close playlist"), this, SLOT(Close())); - rename_ = menu_->addAction(IconLoader::Load("edit-rename"), tr("Rename playlist..."), this, SLOT(Rename())); - save_ = menu_->addAction(IconLoader::Load("document-save"), tr("Save playlist..."), this, SLOT(Save())); + close_ = menu_->addAction(IconLoader::Load("list-remove"), + tr("Close playlist"), this, SLOT(Close())); + rename_ = menu_->addAction(IconLoader::Load("edit-rename"), + tr("Rename playlist..."), this, SLOT(Rename())); + save_ = menu_->addAction(IconLoader::Load("document-save"), + tr("Save playlist..."), this, SLOT(Save())); menu_->addSeparator(); rename_editor_->setVisible(false); @@ -61,29 +63,28 @@ PlaylistTabBar::PlaylistTabBar(QWidget *parent) connect(rename_editor_, SIGNAL(EditingCanceled()), SLOT(HideEditor())); connect(this, SIGNAL(currentChanged(int)), SLOT(CurrentIndexChanged(int))); - connect(this, SIGNAL(tabMoved(int,int)), SLOT(TabMoved())); + connect(this, SIGNAL(tabMoved(int, int)), SLOT(TabMoved())); // We can't just emit Close signal, we need to extract the playlist id first connect(this, SIGNAL(tabCloseRequested(int)), SLOT(CloseFromTabIndex(int))); } -void PlaylistTabBar::SetActions( - QAction* new_playlist, QAction* load_playlist) { +void PlaylistTabBar::SetActions(QAction* new_playlist, QAction* load_playlist) { menu_->insertAction(0, new_playlist); menu_->insertAction(0, load_playlist); new_ = new_playlist; } -void PlaylistTabBar::SetManager(PlaylistManager *manager) { +void PlaylistTabBar::SetManager(PlaylistManager* manager) { manager_ = manager; connect(manager_, SIGNAL(PlaylistFavorited(int, bool)), - SLOT(PlaylistFavoritedSlot(int, bool))); + SLOT(PlaylistFavoritedSlot(int, bool))); } void PlaylistTabBar::contextMenuEvent(QContextMenuEvent* e) { - //we need to finish the renaming action before showing context menu + // we need to finish the renaming action before showing context menu if (rename_editor_->isVisible()) { - //discard any change + // discard any change HideEditor(); } @@ -105,19 +106,18 @@ void PlaylistTabBar::mouseReleaseEvent(QMouseEvent* e) { QTabBar::mouseReleaseEvent(e); } -void PlaylistTabBar::mouseDoubleClickEvent(QMouseEvent *e) { +void PlaylistTabBar::mouseDoubleClickEvent(QMouseEvent* e) { int index = tabAt(e->pos()); - //discard a double click with the middle button + // discard a double click with the middle button if (e->button() != Qt::MidButton) { if (index == -1) { new_->activate(QAction::Trigger); - } - else { - //update current tab + } else { + // update current tab menu_index_ = index; - //set position + // set position rename_editor_->setGeometry(tabRect(index)); rename_editor_->setText(tabText(index)); rename_editor_->setVisible(true); @@ -129,16 +129,14 @@ void PlaylistTabBar::mouseDoubleClickEvent(QMouseEvent *e) { } void PlaylistTabBar::Rename() { - if (menu_index_ == -1) - return; + if (menu_index_ == -1) return; QString name = tabText(menu_index_); - name = QInputDialog::getText( - this, tr("Rename playlist"), tr("Enter a new name for this playlist"), - QLineEdit::Normal, name); + name = QInputDialog::getText(this, tr("Rename playlist"), + tr("Enter a new name for this playlist"), + QLineEdit::Normal, name); - if (name.isNull()) - return; + if (name.isNull()) return; emit Rename(tabData(menu_index_).toInt(), name); } @@ -149,16 +147,16 @@ void PlaylistTabBar::RenameInline() { } void PlaylistTabBar::HideEditor() { - //editingFinished() will be called twice due to Qt bug #40, so we reuse the same instance, don't delete it + // editingFinished() will be called twice due to Qt bug #40, so we reuse the + // same instance, don't delete it rename_editor_->setVisible(false); - //hack to give back focus to playlist view + // hack to give back focus to playlist view manager_->SetCurrentPlaylist(manager_->current()->id()); } void PlaylistTabBar::Close() { - if (menu_index_ == -1) - return; + if (menu_index_ == -1) return; const int playlist_id = tabData(menu_index_).toInt(); @@ -174,12 +172,14 @@ void PlaylistTabBar::Close() { confirmation_box.setWindowTitle(tr("Remove playlist")); confirmation_box.setIcon(QMessageBox::Question); confirmation_box.setText( - tr("You are about to remove a playlist which is not part of your favorite playlists: " + tr("You are about to remove a playlist which is not part of your " + "favorite playlists: " "the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?")); confirmation_box.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); - QCheckBox dont_prompt_again(tr("Warn me when closing a playlist tab"), &confirmation_box); + QCheckBox dont_prompt_again(tr("Warn me when closing a playlist tab"), + &confirmation_box); dont_prompt_again.setChecked(ask_for_delete); dont_prompt_again.blockSignals(true); dont_prompt_again.setToolTip( @@ -188,13 +188,13 @@ void PlaylistTabBar::Close() { QGridLayout* grid = qobject_cast(confirmation_box.layout()); QDialogButtonBox* buttons = confirmation_box.findChild(); if (grid && buttons) { - const int index = grid->indexOf(buttons); - int row, column, row_span, column_span = 0; - grid->getItemPosition(index, &row, &column, &row_span, &column_span); - QLayoutItem* buttonsItem = grid->takeAt(index); - grid->addWidget(&dont_prompt_again, row, column, row_span, column_span, - Qt::AlignLeft | Qt::AlignTop); - grid->addItem(buttonsItem, ++row, column, row_span, column_span); + const int index = grid->indexOf(buttons); + int row, column, row_span, column_span = 0; + grid->getItemPosition(index, &row, &column, &row_span, &column_span); + QLayoutItem* buttonsItem = grid->takeAt(index); + grid->addWidget(&dont_prompt_again, row, column, row_span, column_span, + Qt::AlignLeft | Qt::AlignTop); + grid->addItem(buttonsItem, ++row, column, row_span, column_span); } else { confirmation_box.addButton(&dont_prompt_again, QMessageBox::ActionRole); } @@ -231,21 +231,18 @@ void PlaylistTabBar::CloseFromTabIndex(int index) { } void PlaylistTabBar::Save() { - if (menu_index_ == -1) - return; + if (menu_index_ == -1) return; emit Save(tabData(menu_index_).toInt()); } int PlaylistTabBar::current_id() const { - if (currentIndex() == -1) - return -1; + if (currentIndex() == -1) return -1; return tabData(currentIndex()).toInt(); } - int PlaylistTabBar::index_of(int id) const { - for (int i=0 ; i= count()) { @@ -265,40 +260,38 @@ int PlaylistTabBar::id_of(int index) const { return tabData(index).toInt(); } -void PlaylistTabBar::set_icon_by_id(int id, const QIcon &icon) { +void PlaylistTabBar::set_icon_by_id(int id, const QIcon& icon) { setTabIcon(index_of(id), icon); } -void PlaylistTabBar::RemoveTab(int id) { - removeTab(index_of(id)); -} +void PlaylistTabBar::RemoveTab(int id) { removeTab(index_of(id)); } -void PlaylistTabBar::set_text_by_id(int id, const QString &text) { +void PlaylistTabBar::set_text_by_id(int id, const QString& text) { setTabText(index_of(id), text); setTabToolTip(index_of(id), text); } void PlaylistTabBar::CurrentIndexChanged(int index) { - if (!suppress_current_changed_) - emit CurrentIdChanged(tabData(index).toInt()); + if (!suppress_current_changed_) emit CurrentIdChanged(tabData(index).toInt()); } -void PlaylistTabBar::InsertTab(int id, int index, const QString& text, bool favorite) { +void PlaylistTabBar::InsertTab(int id, int index, const QString& text, + bool favorite) { suppress_current_changed_ = true; insertTab(index, text); setTabData(index, id); setTabToolTip(index, text); FavoriteWidget* widget = new FavoriteWidget(id, favorite); - widget->setToolTip(tr( - "Click here to favorite this playlist so it will be saved and remain accessible " - "through the \"Playlists\" panel on the left side bar")); + widget->setToolTip( + tr("Click here to favorite this playlist so it will be saved and remain " + "accessible " + "through the \"Playlists\" panel on the left side bar")); connect(widget, SIGNAL(FavoriteStateChanged(int, bool)), - SIGNAL(PlaylistFavorited(int, bool))); + SIGNAL(PlaylistFavorited(int, bool))); setTabButton(index, QTabBar::LeftSide, widget); suppress_current_changed_ = false; - if (currentIndex() == index) - emit CurrentIdChanged(id); + if (currentIndex() == index) emit CurrentIdChanged(id); // Update playlist tab order/visibility TabMoved(); @@ -306,7 +299,7 @@ void PlaylistTabBar::InsertTab(int id, int index, const QString& text, bool favo void PlaylistTabBar::TabMoved() { QList ids; - for (int i=0 ; itimerId() == drag_hover_timer_.timerId()) { drag_hover_timer_.stop(); - if (drag_hover_tab_ != -1) - setCurrentIndex(drag_hover_tab_); + if (drag_hover_tab_ != -1) setCurrentIndex(drag_hover_tab_); } } void PlaylistTabBar::dropEvent(QDropEvent* e) { if (drag_hover_tab_ == -1) { - const MimeData *mime_data = qobject_cast(e->mimeData()); - if(mime_data && !mime_data->name_for_new_playlist_.isEmpty()) { + const MimeData* mime_data = qobject_cast(e->mimeData()); + if (mime_data && !mime_data->name_for_new_playlist_.isEmpty()) { manager_->New(mime_data->name_for_new_playlist_); } else { manager_->New(tr("Playlist")); @@ -361,13 +353,14 @@ void PlaylistTabBar::dropEvent(QDropEvent* e) { setCurrentIndex(drag_hover_tab_); } - manager_->current()->dropMimeData(e->mimeData(), e->proposedAction(), -1, 0, QModelIndex()); + manager_->current()->dropMimeData(e->mimeData(), e->proposedAction(), -1, 0, + QModelIndex()); } bool PlaylistTabBar::event(QEvent* e) { switch (e->type()) { case QEvent::ToolTip: { - QHelpEvent *he = static_cast(e); + QHelpEvent* he = static_cast(e); QRect displayed_tab; QSize real_tab; @@ -377,7 +370,7 @@ bool PlaylistTabBar::event(QEvent* e) { displayed_tab = tabRect(tabAt(he->pos())); // Check whether the tab is elided or not is_elided = displayed_tab.width() < real_tab.width(); - if(!is_elided) { + if (!is_elided) { // If it's not elided, don't show the tooltip QToolTip::hideText(); } else { @@ -392,7 +385,8 @@ bool PlaylistTabBar::event(QEvent* e) { void PlaylistTabBar::PlaylistFavoritedSlot(int id, bool favorite) { const int index = index_of(id); - FavoriteWidget* favorite_widget = qobject_cast(tabButton(index, QTabBar::LeftSide)); + FavoriteWidget* favorite_widget = + qobject_cast(tabButton(index, QTabBar::LeftSide)); if (favorite_widget) { favorite_widget->SetFavorite(favorite); } diff --git a/src/playlist/playlisttabbar.h b/src/playlist/playlisttabbar.h index 63ad8146e..3b795367c 100644 --- a/src/playlist/playlisttabbar.h +++ b/src/playlist/playlisttabbar.h @@ -30,8 +30,8 @@ class QMenu; class PlaylistTabBar : public QTabBar { Q_OBJECT -public: - PlaylistTabBar(QWidget *parent = 0); + public: + PlaylistTabBar(QWidget* parent = nullptr); static const int kDragHoverTimeout = 500; static const char* kSettingsGroup; @@ -61,7 +61,7 @@ signals: void PlaylistOrderChanged(const QList& ids); void PlaylistFavorited(int id, bool favorite); -protected: + protected: void contextMenuEvent(QContextMenuEvent* e); void mouseReleaseEvent(QMouseEvent* e); void mouseDoubleClickEvent(QMouseEvent* e); @@ -72,7 +72,7 @@ protected: void timerEvent(QTimerEvent* e); bool event(QEvent* e); -private slots: + private slots: void CurrentIndexChanged(int index); void Rename(); void RenameInline(); @@ -85,7 +85,7 @@ private slots: void TabMoved(); void Save(); -private: + private: PlaylistManager* manager_; QMenu* menu_; @@ -104,4 +104,4 @@ private: RenameTabLineEdit* rename_editor_; }; -#endif // PLAYLISTTABBAR_H +#endif // PLAYLISTTABBAR_H diff --git a/src/playlist/playlistundocommands.cpp b/src/playlist/playlistundocommands.cpp index e505489b4..8e70ef4c3 100644 --- a/src/playlist/playlistundocommands.cpp +++ b/src/playlist/playlistundocommands.cpp @@ -20,20 +20,11 @@ namespace PlaylistUndoCommands { -Base::Base(Playlist *playlist) - : QUndoCommand(0), - playlist_(playlist) -{ -} +Base::Base(Playlist* playlist) : QUndoCommand(0), playlist_(playlist) {} - -InsertItems::InsertItems(Playlist *playlist, const PlaylistItemList& items, +InsertItems::InsertItems(Playlist* playlist, const PlaylistItemList& items, int pos, bool enqueue) - : Base(playlist), - items_(items), - pos_(pos), - enqueue_(enqueue) -{ + : Base(playlist), items_(items), pos_(pos), enqueue_(enqueue) { setText(tr("add %n songs", "", items_.count())); } @@ -42,13 +33,12 @@ void InsertItems::redo() { } void InsertItems::undo() { - const int start = pos_ == -1 ? - playlist_->rowCount() - items_.count() : pos_; + const int start = pos_ == -1 ? playlist_->rowCount() - items_.count() : pos_; playlist_->RemoveItemsWithoutUndo(start, items_.count()); } bool InsertItems::UpdateItem(const PlaylistItemPtr& updated_item) { - for (int i=0; iMetadata().url() == updated_item->Metadata().url()) { items_[i] = updated_item; @@ -58,84 +48,62 @@ bool InsertItems::UpdateItem(const PlaylistItemPtr& updated_item) { return false; } - -RemoveItems::RemoveItems(Playlist *playlist, int pos, int count) - : Base(playlist) -{ +RemoveItems::RemoveItems(Playlist* playlist, int pos, int count) + : Base(playlist) { setText(tr("remove %n songs", "", count)); ranges_ << Range(pos, count); } void RemoveItems::redo() { - for (int i=0 ; iRemoveItemsWithoutUndo( - ranges_[i].pos_, ranges_[i].count_); + for (int i = 0; i < ranges_.count(); ++i) + ranges_[i].items_ = + playlist_->RemoveItemsWithoutUndo(ranges_[i].pos_, ranges_[i].count_); } void RemoveItems::undo() { - for (int i=ranges_.count()-1 ; i>=0 ; --i) + for (int i = ranges_.count() - 1; i >= 0; --i) playlist_->InsertItemsWithoutUndo(ranges_[i].items_, ranges_[i].pos_); } -bool RemoveItems::mergeWith(const QUndoCommand *other) { +bool RemoveItems::mergeWith(const QUndoCommand* other) { const RemoveItems* remove_command = static_cast(other); ranges_.append(remove_command->ranges_); int sum = 0; - foreach (const Range& range, ranges_) - sum += range.count_; + for (const Range& range : ranges_) sum += range.count_; setText(tr("remove %n songs", "", sum)); return true; } - -MoveItems::MoveItems(Playlist *playlist, const QList &source_rows, int pos) - : Base(playlist), - source_rows_(source_rows), - pos_(pos) -{ +MoveItems::MoveItems(Playlist* playlist, const QList& source_rows, int pos) + : Base(playlist), source_rows_(source_rows), pos_(pos) { setText(tr("move %n songs", "", source_rows.count())); } -void MoveItems::redo() { - playlist_->MoveItemsWithoutUndo(source_rows_, pos_); -} +void MoveItems::redo() { playlist_->MoveItemsWithoutUndo(source_rows_, pos_); } -void MoveItems::undo() { - playlist_->MoveItemsWithoutUndo(pos_, source_rows_); -} +void MoveItems::undo() { playlist_->MoveItemsWithoutUndo(pos_, source_rows_); } +ReOrderItems::ReOrderItems(Playlist* playlist, + const PlaylistItemList& new_items) + : Base(playlist), old_items_(playlist->items_), new_items_(new_items) {} -ReOrderItems::ReOrderItems(Playlist* playlist, const PlaylistItemList& new_items) - : Base(playlist), - old_items_(playlist->items_), - new_items_(new_items) { } +void ReOrderItems::undo() { playlist_->ReOrderWithoutUndo(old_items_); } -void ReOrderItems::undo() { - playlist_->ReOrderWithoutUndo(old_items_); -} +void ReOrderItems::redo() { playlist_->ReOrderWithoutUndo(new_items_); } -void ReOrderItems::redo() { - playlist_->ReOrderWithoutUndo(new_items_); -} - - -SortItems::SortItems(Playlist* playlist, int column, Qt::SortOrder order, +SortItems::SortItems(Playlist* playlist, int column, Qt::SortOrder order, const PlaylistItemList& new_items) - : ReOrderItems(playlist, new_items), - column_(column), - order_(order) -{ + : ReOrderItems(playlist, new_items), column_(column), order_(order) { setText(tr("sort songs")); } - -ShuffleItems::ShuffleItems(Playlist* playlist, const PlaylistItemList& new_items) - : ReOrderItems(playlist, new_items) -{ +ShuffleItems::ShuffleItems(Playlist* playlist, + const PlaylistItemList& new_items) + : ReOrderItems(playlist, new_items) { setText(tr("shuffle songs")); } -} // namespace +} // namespace diff --git a/src/playlist/playlistundocommands.h b/src/playlist/playlistundocommands.h index 0a0f9fe47..f2860e9a6 100644 --- a/src/playlist/playlistundocommands.h +++ b/src/playlist/playlistundocommands.h @@ -26,98 +26,97 @@ class Playlist; namespace PlaylistUndoCommands { - enum Types { - Type_RemoveItems = 0, - }; +enum Types { Type_RemoveItems = 0, }; - class Base : public QUndoCommand { - Q_DECLARE_TR_FUNCTIONS(PlaylistUndoCommands); +class Base : public QUndoCommand { + Q_DECLARE_TR_FUNCTIONS(PlaylistUndoCommands); - public: - Base(Playlist* playlist); + public: + Base(Playlist* playlist); - protected: - Playlist* playlist_; - }; + protected: + Playlist* playlist_; +}; - class InsertItems : public Base { - public: - InsertItems(Playlist* playlist, const PlaylistItemList& items, int pos, - bool enqueue = false); +class InsertItems : public Base { + public: + InsertItems(Playlist* playlist, const PlaylistItemList& items, int pos, + bool enqueue = false); - void undo(); - void redo(); - // When load is async, items have already been pushed, so we need to update them. - // This function try to find the equivalent item, and replace it with the - // new (completely loaded) one. - // return true if the was found (and updated), false otherwise - bool UpdateItem(const PlaylistItemPtr& updated_item); + void undo(); + void redo(); + // When load is async, items have already been pushed, so we need to update + // them. + // This function try to find the equivalent item, and replace it with the + // new (completely loaded) one. + // return true if the was found (and updated), false otherwise + bool UpdateItem(const PlaylistItemPtr& updated_item); - private: + private: + PlaylistItemList items_; + int pos_; + bool enqueue_; +}; + +class RemoveItems : public Base { + public: + RemoveItems(Playlist* playlist, int pos, int count); + + int id() const { return Type_RemoveItems; } + + void undo(); + void redo(); + bool mergeWith(const QUndoCommand* other); + + private: + struct Range { + Range(int pos, int count) : pos_(pos), count_(count) {} + int pos_; + int count_; PlaylistItemList items_; - int pos_; - bool enqueue_; }; - class RemoveItems : public Base { - public: - RemoveItems(Playlist* playlist, int pos, int count); + QList ranges_; +}; - int id() const { return Type_RemoveItems; } +class MoveItems : public Base { + public: + MoveItems(Playlist* playlist, const QList& source_rows, int pos); - void undo(); - void redo(); - bool mergeWith(const QUndoCommand *other); + void undo(); + void redo(); - private: - struct Range { - Range(int pos, int count) : pos_(pos), count_(count) {} - int pos_; - int count_; - PlaylistItemList items_; - }; + private: + QList source_rows_; + int pos_; +}; - QList ranges_; - }; +class ReOrderItems : public Base { + public: + ReOrderItems(Playlist* playlist, const PlaylistItemList& new_items); - class MoveItems : public Base { - public: - MoveItems(Playlist* playlist, const QList& source_rows, int pos); + void undo(); + void redo(); - void undo(); - void redo(); + private: + PlaylistItemList old_items_; + PlaylistItemList new_items_; +}; - private: - QList source_rows_; - int pos_; - }; +class SortItems : public ReOrderItems { + public: + SortItems(Playlist* playlist, int column, Qt::SortOrder order, + const PlaylistItemList& new_items); - class ReOrderItems : public Base { - public: - ReOrderItems(Playlist* playlist, const PlaylistItemList& new_items); + private: + int column_; + Qt::SortOrder order_; +}; - void undo(); - void redo(); +class ShuffleItems : public ReOrderItems { + public: + ShuffleItems(Playlist* playlist, const PlaylistItemList& new_items); +}; +} // namespace - private: - PlaylistItemList old_items_; - PlaylistItemList new_items_; - }; - - class SortItems : public ReOrderItems { - public: - SortItems(Playlist* playlist, int column, Qt::SortOrder order, - const PlaylistItemList& new_items); - - private: - int column_; - Qt::SortOrder order_; - }; - - class ShuffleItems : public ReOrderItems { - public: - ShuffleItems(Playlist* playlist, const PlaylistItemList& new_items); - }; -} //namespace - -#endif // PLAYLISTUNDOCOMMANDS_H +#endif // PLAYLISTUNDOCOMMANDS_H diff --git a/src/playlist/playlistview.cpp b/src/playlist/playlistview.cpp index e3e97782b..855c4b0e6 100644 --- a/src/playlist/playlistview.cpp +++ b/src/playlist/playlistview.cpp @@ -43,38 +43,40 @@ #include #ifdef HAVE_MOODBAR -# include "moodbar/moodbaritemdelegate.h" +#include "moodbar/moodbaritemdelegate.h" #endif const int PlaylistView::kStateVersion = 6; const int PlaylistView::kGlowIntensitySteps = 24; -const int PlaylistView::kAutoscrollGraceTimeout = 30; // seconds +const int PlaylistView::kAutoscrollGraceTimeout = 30; // seconds const int PlaylistView::kDropIndicatorWidth = 2; const int PlaylistView::kDropIndicatorGradientWidth = 5; -const char* PlaylistView::kSettingBackgroundImageType = "playlistview_background_type"; -const char* PlaylistView::kSettingBackgroundImageFilename = "playlistview_background_image_file"; +const char* PlaylistView::kSettingBackgroundImageType = + "playlistview_background_type"; +const char* PlaylistView::kSettingBackgroundImageFilename = + "playlistview_background_image_file"; const int PlaylistView::kDefaultBlurRadius = 0; const int PlaylistView::kDefaultOpacityLevel = 40; - PlaylistProxyStyle::PlaylistProxyStyle(QStyle* base) - : QProxyStyle(base), - cleanlooks_(new QCleanlooksStyle){ -} + : QProxyStyle(base), cleanlooks_(new QCleanlooksStyle) {} -void PlaylistProxyStyle::drawControl( - ControlElement element, const QStyleOption* option, QPainter* painter, - const QWidget* widget) const { +void PlaylistProxyStyle::drawControl(ControlElement element, + const QStyleOption* option, + QPainter* painter, + const QWidget* widget) const { if (element == CE_Header) { - const QStyleOptionHeader* header_option = qstyleoption_cast(option); + const QStyleOptionHeader* header_option = + qstyleoption_cast(option); const QRect& rect = header_option->rect; const QString& text = header_option->text; const QFontMetrics& font_metrics = header_option->fontMetrics; // spaces added to make transition less abrupt if (rect.width() < font_metrics.width(text + " ")) { - const Playlist::Column column = static_cast(header_option->section); + const Playlist::Column column = + static_cast(header_option->section); QStyleOptionHeader new_option(*header_option); new_option.text = Playlist::abbreviated_column_name(column); QProxyStyle::drawControl(element, &new_option, painter, widget); @@ -88,7 +90,10 @@ void PlaylistProxyStyle::drawControl( QProxyStyle::drawControl(element, option, painter, widget); } -void PlaylistProxyStyle::drawPrimitive(PrimitiveElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const { +void PlaylistProxyStyle::drawPrimitive(PrimitiveElement element, + const QStyleOption* option, + QPainter* painter, + const QWidget* widget) const { if (element == QStyle::PE_PanelItemViewRow || element == QStyle::PE_PanelItemViewItem) cleanlooks_->drawPrimitive(element, option, painter, widget); @@ -96,57 +101,62 @@ void PlaylistProxyStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt QProxyStyle::drawPrimitive(element, option, painter, widget); } - -PlaylistView::PlaylistView(QWidget *parent) - : QTreeView(parent), - app_(NULL), - style_(new PlaylistProxyStyle(style())), - playlist_(NULL), - header_(new PlaylistHeader(Qt::Horizontal, this, this)), - setting_initial_header_layout_(false), - upgrading_from_qheaderview_(false), - read_only_settings_(true), - upgrading_from_version_(-1), - background_image_type_(Default), - previous_background_image_opacity_(0.0), - fade_animation_(new QTimeLine(1000, this)), - last_height_(-1), - last_width_(-1), - force_background_redraw_(false), - glow_enabled_(true), - currently_glowing_(false), - glow_intensity_step_(0), - rating_delegate_(NULL), - inhibit_autoscroll_timer_(new QTimer(this)), - inhibit_autoscroll_(false), - currently_autoscrolling_(false), - row_height_(-1), - currenttrack_play_(":currenttrack_play.png"), - currenttrack_pause_(":currenttrack_pause.png"), - cached_current_row_row_(-1), - drop_indicator_row_(-1), - drag_over_(false), - dynamic_controls_(new DynamicPlaylistControls(this)) -{ +PlaylistView::PlaylistView(QWidget* parent) + : QTreeView(parent), + app_(nullptr), + style_(new PlaylistProxyStyle(style())), + playlist_(nullptr), + header_(new PlaylistHeader(Qt::Horizontal, this, this)), + setting_initial_header_layout_(false), + upgrading_from_qheaderview_(false), + read_only_settings_(true), + upgrading_from_version_(-1), + background_image_type_(Default), + previous_background_image_opacity_(0.0), + fade_animation_(new QTimeLine(1000, this)), + last_height_(-1), + last_width_(-1), + force_background_redraw_(false), + glow_enabled_(true), + currently_glowing_(false), + glow_intensity_step_(0), + rating_delegate_(nullptr), + inhibit_autoscroll_timer_(new QTimer(this)), + inhibit_autoscroll_(false), + currently_autoscrolling_(false), + row_height_(-1), + currenttrack_play_(":currenttrack_play.png"), + currenttrack_pause_(":currenttrack_pause.png"), + cached_current_row_row_(-1), + drop_indicator_row_(-1), + drag_over_(false), + dynamic_controls_(new DynamicPlaylistControls(this)) { setHeader(header_); header_->setMovable(true); setStyle(style_); setMouseTracking(true); - connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(SaveGeometry())); - connect(header_, SIGNAL(sectionMoved(int,int,int)), SLOT(SaveGeometry())); - connect(header_, SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), SLOT(SaveGeometry())); - connect(header_, SIGNAL(SectionVisibilityChanged(int,bool)), SLOT(SaveGeometry())); - connect(header_, SIGNAL(sectionResized(int,int,int)), SLOT(InvalidateCachedCurrentPixmap())); - connect(header_, SIGNAL(sectionMoved(int,int,int)), SLOT(InvalidateCachedCurrentPixmap())); - connect(header_, SIGNAL(SectionVisibilityChanged(int,bool)), SLOT(InvalidateCachedCurrentPixmap())); + connect(header_, SIGNAL(sectionResized(int, int, int)), SLOT(SaveGeometry())); + connect(header_, SIGNAL(sectionMoved(int, int, int)), SLOT(SaveGeometry())); + connect(header_, SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)), + SLOT(SaveGeometry())); + connect(header_, SIGNAL(SectionVisibilityChanged(int, bool)), + SLOT(SaveGeometry())); + connect(header_, SIGNAL(sectionResized(int, int, int)), + SLOT(InvalidateCachedCurrentPixmap())); + connect(header_, SIGNAL(sectionMoved(int, int, int)), + SLOT(InvalidateCachedCurrentPixmap())); + connect(header_, SIGNAL(SectionVisibilityChanged(int, bool)), + SLOT(InvalidateCachedCurrentPixmap())); connect(header_, SIGNAL(StretchEnabledChanged(bool)), SLOT(SaveSettings())); - connect(header_, SIGNAL(StretchEnabledChanged(bool)), SLOT(StretchChanged(bool))); + connect(header_, SIGNAL(StretchEnabledChanged(bool)), + SLOT(StretchChanged(bool))); connect(header_, SIGNAL(MouseEntered()), SLOT(RatingHoverOut())); inhibit_autoscroll_timer_->setInterval(kAutoscrollGraceTimeout * 1000); inhibit_autoscroll_timer_->setSingleShot(true); - connect(inhibit_autoscroll_timer_, SIGNAL(timeout()), SLOT(InhibitAutoscrollTimeout())); + connect(inhibit_autoscroll_timer_, SIGNAL(timeout()), + SLOT(InhibitAutoscrollTimeout())); horizontalScrollBar()->installEventFilter(this); verticalScrollBar()->installEventFilter(this); @@ -161,11 +171,12 @@ PlaylistView::PlaylistView(QWidget *parent) setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); #endif // For fading - connect(fade_animation_, SIGNAL(valueChanged(qreal)), SLOT(FadePreviousBackgroundImage(qreal))); - fade_animation_->setDirection(QTimeLine::Backward); // 1.0 -> 0.0 + connect(fade_animation_, SIGNAL(valueChanged(qreal)), + SLOT(FadePreviousBackgroundImage(qreal))); + fade_animation_->setDirection(QTimeLine::Backward); // 1.0 -> 0.0 } -void PlaylistView::SetApplication(Application *app) { +void PlaylistView::SetApplication(Application* app) { Q_ASSERT(app); app_ = app; connect(app_->current_art_loader(), @@ -182,38 +193,57 @@ void PlaylistView::SetItemDelegates(LibraryBackend* backend) { setItemDelegate(new PlaylistDelegateBase(this)); setItemDelegateForColumn(Playlist::Column_Title, new TextItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_Album, + setItemDelegateForColumn( + Playlist::Column_Album, new TagCompletionItemDelegate(this, backend, Playlist::Column_Album)); - setItemDelegateForColumn(Playlist::Column_Artist, + setItemDelegateForColumn( + Playlist::Column_Artist, new TagCompletionItemDelegate(this, backend, Playlist::Column_Artist)); setItemDelegateForColumn(Playlist::Column_AlbumArtist, - new TagCompletionItemDelegate(this, backend, Playlist::Column_AlbumArtist)); - setItemDelegateForColumn(Playlist::Column_Genre, + new TagCompletionItemDelegate( + this, backend, Playlist::Column_AlbumArtist)); + setItemDelegateForColumn( + Playlist::Column_Genre, new TagCompletionItemDelegate(this, backend, Playlist::Column_Genre)); - setItemDelegateForColumn(Playlist::Column_Composer, + setItemDelegateForColumn( + Playlist::Column_Composer, new TagCompletionItemDelegate(this, backend, Playlist::Column_Composer)); - setItemDelegateForColumn(Playlist::Column_Performer, + setItemDelegateForColumn( + Playlist::Column_Performer, new TagCompletionItemDelegate(this, backend, Playlist::Column_Performer)); - setItemDelegateForColumn(Playlist::Column_Grouping, + setItemDelegateForColumn( + Playlist::Column_Grouping, new TagCompletionItemDelegate(this, backend, Playlist::Column_Grouping)); - setItemDelegateForColumn(Playlist::Column_Length, new LengthItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_Filesize, new SizeItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_Filetype, new FileTypeItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_DateCreated, new DateItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_DateModified, new DateItemDelegate(this)); - setItemDelegateForColumn(Playlist::Column_BPM, new PlaylistDelegateBase(this, tr("bpm"))); - setItemDelegateForColumn(Playlist::Column_Samplerate, new PlaylistDelegateBase(this, ("Hz"))); - setItemDelegateForColumn(Playlist::Column_Bitrate, new PlaylistDelegateBase(this, tr("kbps"))); - setItemDelegateForColumn(Playlist::Column_Filename, new NativeSeparatorsDelegate(this)); + setItemDelegateForColumn(Playlist::Column_Length, + new LengthItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_Filesize, + new SizeItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_Filetype, + new FileTypeItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_DateCreated, + new DateItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_DateModified, + new DateItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_BPM, + new PlaylistDelegateBase(this, tr("bpm"))); + setItemDelegateForColumn(Playlist::Column_Samplerate, + new PlaylistDelegateBase(this, ("Hz"))); + setItemDelegateForColumn(Playlist::Column_Bitrate, + new PlaylistDelegateBase(this, tr("kbps"))); + setItemDelegateForColumn(Playlist::Column_Filename, + new NativeSeparatorsDelegate(this)); setItemDelegateForColumn(Playlist::Column_Rating, rating_delegate_); - setItemDelegateForColumn(Playlist::Column_LastPlayed, new LastPlayedItemDelegate(this)); + setItemDelegateForColumn(Playlist::Column_LastPlayed, + new LastPlayedItemDelegate(this)); #ifdef HAVE_MOODBAR - setItemDelegateForColumn(Playlist::Column_Mood, new MoodbarItemDelegate(app_, this, this)); + setItemDelegateForColumn(Playlist::Column_Mood, + new MoodbarItemDelegate(app_, this, this)); #endif if (app_ && app_->player()) { - setItemDelegateForColumn(Playlist::Column_Source, new SongSourceDelegate(this, app_->player())); + setItemDelegateForColumn(Playlist::Column_Source, + new SongSourceDelegate(this, app_->player())); } else { header_->HideSection(Playlist::Column_Source); } @@ -221,18 +251,18 @@ void PlaylistView::SetItemDelegates(LibraryBackend* backend) { void PlaylistView::SetPlaylist(Playlist* playlist) { if (playlist_) { - disconnect(playlist_, SIGNAL(CurrentSongChanged(Song)), - this, SLOT(MaybeAutoscroll())); - disconnect(playlist_, SIGNAL(DynamicModeChanged(bool)), - this, SLOT(DynamicModeChanged(bool))); + disconnect(playlist_, SIGNAL(CurrentSongChanged(Song)), this, + SLOT(MaybeAutoscroll())); + disconnect(playlist_, SIGNAL(DynamicModeChanged(bool)), this, + SLOT(DynamicModeChanged(bool))); disconnect(playlist_, SIGNAL(destroyed()), this, SLOT(PlaylistDestroyed())); - disconnect(dynamic_controls_, SIGNAL(Expand()), - playlist_, SLOT(ExpandDynamicPlaylist())); - disconnect(dynamic_controls_, SIGNAL(Repopulate()), - playlist_, SLOT(RepopulateDynamicPlaylist())); - disconnect(dynamic_controls_, SIGNAL(TurnOff()), - playlist_, SLOT(TurnOffDynamicPlaylist())); + disconnect(dynamic_controls_, SIGNAL(Expand()), playlist_, + SLOT(ExpandDynamicPlaylist())); + disconnect(dynamic_controls_, SIGNAL(Repopulate()), playlist_, + SLOT(RepopulateDynamicPlaylist())); + disconnect(dynamic_controls_, SIGNAL(TurnOff()), playlist_, + SLOT(TurnOffDynamicPlaylist())); } playlist_ = playlist; @@ -245,19 +275,23 @@ void PlaylistView::SetPlaylist(Playlist* playlist) { connect(playlist_, SIGNAL(RestoreFinished()), SLOT(JumpToLastPlayedTrack())); connect(playlist_, SIGNAL(CurrentSongChanged(Song)), SLOT(MaybeAutoscroll())); - connect(playlist_, SIGNAL(DynamicModeChanged(bool)), SLOT(DynamicModeChanged(bool))); + connect(playlist_, SIGNAL(DynamicModeChanged(bool)), + SLOT(DynamicModeChanged(bool))); connect(playlist_, SIGNAL(destroyed()), SLOT(PlaylistDestroyed())); - connect(dynamic_controls_, SIGNAL(Expand()), playlist_, SLOT(ExpandDynamicPlaylist())); - connect(dynamic_controls_, SIGNAL(Repopulate()), playlist_, SLOT(RepopulateDynamicPlaylist())); - connect(dynamic_controls_, SIGNAL(TurnOff()), playlist_, SLOT(TurnOffDynamicPlaylist())); + connect(dynamic_controls_, SIGNAL(Expand()), playlist_, + SLOT(ExpandDynamicPlaylist())); + connect(dynamic_controls_, SIGNAL(Repopulate()), playlist_, + SLOT(RepopulateDynamicPlaylist())); + connect(dynamic_controls_, SIGNAL(TurnOff()), playlist_, + SLOT(TurnOffDynamicPlaylist())); } -void PlaylistView::setModel(QAbstractItemModel *m) { +void PlaylistView::setModel(QAbstractItemModel* m) { if (model()) { - disconnect(model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(InvalidateCachedCurrentPixmap())); - disconnect(model(), SIGNAL(layoutAboutToBeChanged()), - this, SLOT(RatingHoverOut())); + disconnect(model(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(InvalidateCachedCurrentPixmap())); + disconnect(model(), SIGNAL(layoutAboutToBeChanged()), this, + SLOT(RatingHoverOut())); // When changing the model, always invalidate the current pixmap. // If a remote client uses "stop after", without invaliding the stop // mark would not appear. @@ -266,10 +300,10 @@ void PlaylistView::setModel(QAbstractItemModel *m) { QTreeView::setModel(m); - connect(model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), - this, SLOT(InvalidateCachedCurrentPixmap())); - connect(model(), SIGNAL(layoutAboutToBeChanged()), - this, SLOT(RatingHoverOut())); + connect(model(), SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(InvalidateCachedCurrentPixmap())); + connect(model(), SIGNAL(layoutAboutToBeChanged()), this, + SLOT(RatingHoverOut())); } void PlaylistView::LoadGeometry() { @@ -335,7 +369,7 @@ void PlaylistView::LoadGeometry() { // Make sure at least one column is visible bool all_hidden = true; - for (int i=0 ; icount() ; ++i) { + for (int i = 0; i < header_->count(); ++i) { if (!header_->isSectionHidden(i) && header_->sectionSize(i) > 0) { all_hidden = false; break; @@ -347,8 +381,7 @@ void PlaylistView::LoadGeometry() { } void PlaylistView::SaveGeometry() { - if (read_only_settings_) - return; + if (read_only_settings_) return; QSettings settings; settings.beginGroup(Playlist::kSettingsGroup); @@ -375,11 +408,11 @@ QList PlaylistView::LoadBarPixmap(const QString& filename) { // Animation steps QList ret; - for(int i=0 ; i(this)->current_paint_region_ = QRegion(); } -void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { +void PlaylistView::drawRow(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { QStyleOptionViewItemV4 opt(option); bool is_current = index.data(Playlist::Role_IsCurrent).toBool(); @@ -406,7 +441,7 @@ void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option int step = glow_intensity_step_; if (step >= kGlowIntensitySteps) - step = 2*(kGlowIntensitySteps-1) - step + 1; + step = 2 * (kGlowIntensitySteps - 1) - step + 1; int row_height = opt.rect.height(); if (row_height != row_height_) { @@ -425,7 +460,9 @@ void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option // Draw the bar painter->drawPixmap(opt.rect.topLeft(), currenttrack_bar_left_[step]); - painter->drawPixmap(opt.rect.topRight() - currenttrack_bar_right_[0].rect().topRight(), currenttrack_bar_right_[step]); + painter->drawPixmap( + opt.rect.topRight() - currenttrack_bar_right_[0].rect().topRight(), + currenttrack_bar_right_[step]); painter->drawPixmap(middle, currenttrack_bar_mid_[step]); // Draw the play icon @@ -435,11 +472,11 @@ void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option is_paused ? currenttrack_pause_ : currenttrack_play_); // Set the font - opt.palette.setColor(QPalette::Text, QApplication::palette().color(QPalette::HighlightedText)); + opt.palette.setColor(QPalette::Text, QApplication::palette().color( + QPalette::HighlightedText)); opt.palette.setColor(QPalette::Highlight, Qt::transparent); opt.palette.setColor(QPalette::AlternateBase, Qt::transparent); - opt.font.setItalic(true); - opt.decorationSize = QSize(20,20); + opt.decorationSize = QSize(20, 20); // Draw the actual row data on top. We cache this, because it's fairly // expensive (1-2ms), and we do it many times per second. @@ -457,7 +494,8 @@ void PlaylistView::drawRow(QPainter* painter, const QStyleOptionViewItem& option painter->drawPixmap(opt.rect, cached_current_row_); } else { if (whole_region) { - const_cast(this)->UpdateCachedCurrentRowPixmap(opt, index); + const_cast(this) + ->UpdateCachedCurrentRowPixmap(opt, index); painter->drawPixmap(opt.rect, cached_current_row_); } else { QTreeView::drawRow(painter, opt, index); @@ -487,8 +525,7 @@ void PlaylistView::InvalidateCachedCurrentPixmap() { void PlaylistView::timerEvent(QTimerEvent* event) { QTreeView::timerEvent(event); - if (event->timerId() == glow_timer_.timerId()) - GlowIntensityChanged(); + if (event->timerId() == glow_timer_.timerId()) GlowIntensityChanged(); } void PlaylistView::GlowIntensityChanged() { @@ -509,9 +546,7 @@ void PlaylistView::StartGlowing() { glow_timer_.start(1500 / kGlowIntensitySteps, this); } -void PlaylistView::hideEvent(QHideEvent*) { - glow_timer_.stop(); -} +void PlaylistView::hideEvent(QHideEvent*) { glow_timer_.stop(); } void PlaylistView::showEvent(QShowEvent*) { if (currently_glowing_ && glow_enabled_) @@ -519,7 +554,8 @@ void PlaylistView::showEvent(QShowEvent*) { MaybeAutoscroll(); } -bool CompareSelectionRanges(const QItemSelectionRange& a, const QItemSelectionRange& b) { +bool CompareSelectionRanges(const QItemSelectionRange& a, + const QItemSelectionRange& b) { return b.bottom() < a.bottom(); } @@ -536,26 +572,27 @@ void PlaylistView::keyPressEvent(QKeyEvent* event) { #endif } else if (event == QKeySequence::Copy) { CopyCurrentSongToClipboard(); - } else if (event->key() == Qt::Key_Enter || - event->key() == Qt::Key_Return) { - if (currentIndex().isValid()) - emit PlayItem(currentIndex()); + } else if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) { + if (currentIndex().isValid()) emit PlayItem(currentIndex()); event->accept(); - } else if(event->modifiers() != Qt::ControlModifier //Ctrl+Space selects the item - && event->key() == Qt::Key_Space) { + } else if (event->modifiers() != Qt::ControlModifier // Ctrl+Space selects + // the item + && event->key() == Qt::Key_Space) { emit PlayPause(); event->accept(); - } else if(event->key() == Qt::Key_Left) { + } else if (event->key() == Qt::Key_Left) { emit SeekTrack(-1); event->accept(); - } else if(event->key() == Qt::Key_Right) { + } else if (event->key() == Qt::Key_Right) { emit SeekTrack(1); event->accept(); - } else if(event->modifiers() == Qt::NoModifier // No modifier keys currently pressed... - // ... and key pressed is something related to text - && ( (event->key() >= Qt::Key_A && event->key() <= Qt::Key_Z) - || event->key() == Qt::Key_Backspace - || event->key() == Qt::Key_Escape)) { + } else if (event->modifiers() == + Qt::NoModifier // No modifier keys currently pressed... + // ... and key pressed is something related to text + && + ((event->key() >= Qt::Key_A && event->key() <= Qt::Key_Z) || + event->key() == Qt::Key_Backspace || + event->key() == Qt::Key_Escape)) { emit FocusOnFilterSignal(event); event->accept(); } else { @@ -576,15 +613,15 @@ void PlaylistView::RemoveSelected() { return; } + // Store the last selected row, which is the last in the list + int last_row = selection.last().top(); + // Sort the selection so we remove the items at the *bottom* first, ensuring // we don't have to mess around with changing row numbers qSort(selection.begin(), selection.end(), CompareSelectionRanges); - // Store the last selected row, which is the first in the list - int last_row = selection.first().bottom(); - - foreach (const QItemSelectionRange& range, selection) { - rows_removed += range.height(); + for (const QItemSelectionRange& range : selection) { + if (range.top() < last_row) rows_removed += range.height(); model()->removeRows(range.top(), range.height(), range.parent()); } @@ -592,31 +629,32 @@ void PlaylistView::RemoveSelected() { // Index of the first column for the row to select QModelIndex new_index = model()->index(new_row, 0); - // Select the new current item, we want always the item after the last selected + // Select the new current item, we want always the item after the last + // selected if (new_index.isValid()) { - // Update visual selection with the entire row - selectionModel()->select(QItemSelection(new_index, model()->index(new_row, model()->columnCount()-1)), - QItemSelectionModel::Select); - // Update keyboard selected row, if it's not the first row + // Workaround to update keyboard selected row, if it's not the first row + // (this also triggers selection) if (new_row != 0) - keyPressEvent(new QKeyEvent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier)); + keyPressEvent( + new QKeyEvent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier)); + // Update visual selection with the entire row + selectionModel()->select(new_index, QItemSelectionModel::ClearAndSelect | + QItemSelectionModel::Rows); } else { // We're removing the last item, select the new last row - selectionModel()->select(QItemSelection(model()->index(model()->rowCount()-1, 0), - model()->index(model()->rowCount()-1, model()->columnCount()-1)), - QItemSelectionModel::Select); + selectionModel()->select( + model()->index(model()->rowCount() - 1, 0), + QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); } } QList PlaylistView::GetEditableColumns() { QList columns; QHeaderView* h = header(); - for (int col=0; colcount(); col++) { - if (h->isSectionHidden(col)) - continue; + for (int col = 0; col < h->count(); col++) { + if (h->isSectionHidden(col)) continue; QModelIndex index = model()->index(0, col); - if (index.flags() & Qt::ItemIsEditable) - columns << h->visualIndex(col); + if (index.flags() & Qt::ItemIsEditable) columns << h->visualIndex(col); } qSort(columns); return columns; @@ -627,10 +665,10 @@ QModelIndex PlaylistView::NextEditableIndex(const QModelIndex& current) { QHeaderView* h = header(); int index = columns.indexOf(h->visualIndex(current.column())); - if(index+1 >= columns.size()) - return model()->index(current.row()+1, h->logicalIndex(columns.first())); + if (index + 1 >= columns.size()) + return model()->index(current.row() + 1, h->logicalIndex(columns.first())); - return model()->index(current.row(), h->logicalIndex(columns[index+1])); + return model()->index(current.row(), h->logicalIndex(columns[index + 1])); } QModelIndex PlaylistView::PrevEditableIndex(const QModelIndex& current) { @@ -638,13 +676,14 @@ QModelIndex PlaylistView::PrevEditableIndex(const QModelIndex& current) { QHeaderView* h = header(); int index = columns.indexOf(h->visualIndex(current.column())); - if(index-1 < 0) - return model()->index(current.row()-1, h->logicalIndex(columns.last())); + if (index - 1 < 0) + return model()->index(current.row() - 1, h->logicalIndex(columns.last())); - return model()->index(current.row(), h->logicalIndex(columns[index-1])); + return model()->index(current.row(), h->logicalIndex(columns[index - 1])); } -void PlaylistView::closeEditor(QWidget* editor, QAbstractItemDelegate::EndEditHint hint) { +void PlaylistView::closeEditor(QWidget* editor, + QAbstractItemDelegate::EndEditHint hint) { if (hint == QAbstractItemDelegate::NoHint) { QTreeView::closeEditor(editor, QAbstractItemDelegate::SubmitModelCache); } else if (hint == QAbstractItemDelegate::EditNextItem || @@ -698,7 +737,7 @@ void PlaylistView::RatingHoverIn(const QModelIndex& index, const QPoint& pos) { update(index); update(old_index); - foreach (const QModelIndex& index, selectedIndexes()) { + for (const QModelIndex& index : selectedIndexes()) { if (index.column() == Playlist::Column_Rating) { update(index); } @@ -720,7 +759,7 @@ void PlaylistView::RatingHoverOut() { setCursor(QCursor()); update(old_index); - foreach (const QModelIndex& index, selectedIndexes()) { + for (const QModelIndex& index : selectedIndexes()) { if (index.column() == Playlist::Column_Rating) { update(index); } @@ -741,14 +780,15 @@ void PlaylistView::mousePressEvent(QMouseEvent* event) { if (event->button() == Qt::LeftButton && index.isValid() && index.data(Playlist::Role_CanSetRating).toBool()) { // Calculate which star was clicked - double new_rating = RatingPainter::RatingForPos( - event->pos(), visualRect(index)); + double new_rating = + RatingPainter::RatingForPos(event->pos(), visualRect(index)); if (selectedIndexes().contains(index)) { // Update all the selected items - foreach (const QModelIndex& index, selectedIndexes()) { + for (const QModelIndex& index : selectedIndexes()) { if (index.data(Playlist::Role_CanSetRating).toBool()) { - playlist_->RateSong(playlist_->proxy()->mapToSource(index), new_rating); + playlist_->RateSong(playlist_->proxy()->mapToSource(index), + new_rating); } } } else { @@ -785,23 +825,21 @@ void PlaylistView::InhibitAutoscrollTimeout() { } void PlaylistView::MaybeAutoscroll() { - if (!inhibit_autoscroll_) - JumpToCurrentlyPlayingTrack(); + if (!inhibit_autoscroll_) JumpToCurrentlyPlayingTrack(); } void PlaylistView::JumpToCurrentlyPlayingTrack() { Q_ASSERT(playlist_); - // Usage of the "Jump to the currently playing track" action shall enable autoscroll + // Usage of the "Jump to the currently playing track" action shall enable + // autoscroll inhibit_autoscroll_ = false; - if (playlist_->current_row() == -1) - return; + if (playlist_->current_row() == -1) return; QModelIndex current = playlist_->proxy()->mapFromSource( playlist_->index(playlist_->current_row(), 0)); - if (!current.isValid()) - return; + if (!current.isValid()) return; currently_autoscrolling_ = true; @@ -814,13 +852,11 @@ void PlaylistView::JumpToCurrentlyPlayingTrack() { void PlaylistView::JumpToLastPlayedTrack() { Q_ASSERT(playlist_); - if (playlist_->last_played_row() == -1) - return; + if (playlist_->last_played_row() == -1) return; QModelIndex last_played = playlist_->proxy()->mapFromSource( playlist_->index(playlist_->last_played_row(), 0)); - if (!last_played.isValid()) - return; + if (!last_played.isValid()) return; // Select last played song last_current_item_ = last_played; @@ -844,26 +880,26 @@ void PlaylistView::paintEvent(QPaintEvent* event) { // dragLeaveEvent, dropEvent and scrollContentsBy. // Draw background - if (background_image_type_ == Custom || background_image_type_ == AlbumCover) { + if (background_image_type_ == Custom || + background_image_type_ == AlbumCover) { if (!background_image_.isNull() || !previous_background_image_.isNull()) { QPainter background_painter(viewport()); // Check if we should recompute the background image - if (height() != last_height_ || width() != last_width_ - || force_background_redraw_) { + if (height() != last_height_ || width() != last_width_ || + force_background_redraw_) { if (background_image_.isNull()) { cached_scaled_background_image_ = QPixmap(); } else { - cached_scaled_background_image_ = QPixmap::fromImage( - background_image_.scaled( - width(), height(), - Qt::KeepAspectRatioByExpanding, + cached_scaled_background_image_ = + QPixmap::fromImage(background_image_.scaled( + width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation)); } last_height_ = height(); - last_width_ = width(); + last_width_ = width(); force_background_redraw_ = false; } @@ -871,18 +907,21 @@ void PlaylistView::paintEvent(QPaintEvent* event) { if (!cached_scaled_background_image_.isNull()) { // Set opactiy only if needed, as this deactivate hardware acceleration if (!qFuzzyCompare(previous_background_image_opacity_, qreal(0.0))) { - background_painter.setOpacity(1.0 - previous_background_image_opacity_); + background_painter.setOpacity(1.0 - + previous_background_image_opacity_); } - background_painter.drawPixmap((width() - cached_scaled_background_image_.width()) / 2, - (height() - cached_scaled_background_image_.height()) / 2, - cached_scaled_background_image_); + background_painter.drawPixmap( + (width() - cached_scaled_background_image_.width()) / 2, + (height() - cached_scaled_background_image_.height()) / 2, + cached_scaled_background_image_); } // Draw the previous background image if we're fading if (!previous_background_image_.isNull()) { background_painter.setOpacity(previous_background_image_opacity_); - background_painter.drawPixmap((width() - previous_background_image_.width()) / 2, - (height() - previous_background_image_.height()) / 2, - previous_background_image_); + background_painter.drawPixmap( + (width() - previous_background_image_.width()) / 2, + (height() - previous_background_image_.height()) / 2, + previous_background_image_); } } } @@ -911,7 +950,7 @@ void PlaylistView::paintEvent(QPaintEvent* event) { int drop_pos = -1; switch (dropIndicatorPosition()) { case QAbstractItemView::OnItem: - return; // Don't draw anything + return; // Don't draw anything case QAbstractItemView::AboveItem: drop_pos = visualRect(drop_index).top(); @@ -925,8 +964,8 @@ void PlaylistView::paintEvent(QPaintEvent* event) { if (model()->rowCount() == 0) drop_pos = 1; else - drop_pos = 1 + visualRect( - model()->index(model()->rowCount() - 1, first_column)).bottom(); + drop_pos = 1 + visualRect(model()->index(model()->rowCount() - 1, + first_column)).bottom(); break; } @@ -944,37 +983,35 @@ void PlaylistView::paintEvent(QPaintEvent* event) { gradient.setColorAt(1.0, shadow_fadeout_color); QPen gradient_pen(QBrush(gradient), kDropIndicatorGradientWidth * 2); p.setPen(gradient_pen); - p.drawLine(QPoint(0, drop_pos), - QPoint(width(), drop_pos)); + p.drawLine(QPoint(0, drop_pos), QPoint(width(), drop_pos)); // Now draw the line on top QPen line_pen(line_color, kDropIndicatorWidth); p.setPen(line_pen); - p.drawLine(QPoint(0, drop_pos), - QPoint(width(), drop_pos)); + p.drawLine(QPoint(0, drop_pos), QPoint(width(), drop_pos)); } -void PlaylistView::dragMoveEvent(QDragMoveEvent *event) { +void PlaylistView::dragMoveEvent(QDragMoveEvent* event) { QTreeView::dragMoveEvent(event); QModelIndex index(indexAt(event->pos())); drop_indicator_row_ = index.isValid() ? index.row() : 0; } -void PlaylistView::dragEnterEvent(QDragEnterEvent *event) { +void PlaylistView::dragEnterEvent(QDragEnterEvent* event) { QTreeView::dragEnterEvent(event); cached_tree_ = QPixmap(); drag_over_ = true; } -void PlaylistView::dragLeaveEvent(QDragLeaveEvent *event) { +void PlaylistView::dragLeaveEvent(QDragLeaveEvent* event) { QTreeView::dragLeaveEvent(event); cached_tree_ = QPixmap(); drag_over_ = false; drop_indicator_row_ = -1; } -void PlaylistView::dropEvent(QDropEvent *event) { +void PlaylistView::dropEvent(QDropEvent* event) { QTreeView::dropEvent(event); cached_tree_ = QPixmap(); drop_indicator_row_ = -1; @@ -982,7 +1019,7 @@ void PlaylistView::dropEvent(QDropEvent *event) { } void PlaylistView::PlaylistDestroyed() { - playlist_ = NULL; + playlist_ = nullptr; // We'll get a SetPlaylist() soon } @@ -996,10 +1033,8 @@ void PlaylistView::ReloadSettings() { upgrading_from_qheaderview_ = false; } - if (currently_glowing_ && glow_enabled_ && isVisible()) - StartGlowing(); - if (!glow_enabled_) - StopGlowing(); + if (currently_glowing_ && glow_enabled_ && isVisible()) StartGlowing(); + if (!glow_enabled_) StopGlowing(); if (setting_initial_header_layout_) { header_->SetColumnWidth(Playlist::Column_Length, 0.06); @@ -1022,13 +1057,15 @@ void PlaylistView::ReloadSettings() { emit ColumnAlignmentChanged(column_alignment_); // Background: - QVariant q_playlistview_background_type = s.value(kSettingBackgroundImageType); + QVariant q_playlistview_background_type = + s.value(kSettingBackgroundImageType); BackgroundImageType background_type(Default); // bg_enabled should also be checked for backward compatibility (in releases // <= 1.0, there was just a boolean to activate/deactivate the background) QVariant bg_enabled = s.value("bg_enabled"); if (q_playlistview_background_type.isValid()) { - background_type = static_cast(q_playlistview_background_type.toInt()); + background_type = static_cast( + q_playlistview_background_type.toInt()); } else if (bg_enabled.isValid()) { if (bg_enabled.toBool()) { background_type = Default; @@ -1036,7 +1073,8 @@ void PlaylistView::ReloadSettings() { background_type = None; } } - QString background_image_filename = s.value(kSettingBackgroundImageFilename).toString(); + QString background_image_filename = + s.value(kSettingBackgroundImageFilename).toString(); int blur_radius = s.value("blur_radius", kDefaultBlurRadius).toInt(); int opacity_level = s.value("opacity_level", kDefaultOpacityLevel).toInt(); // Check if background properties have changed. @@ -1046,8 +1084,7 @@ void PlaylistView::ReloadSettings() { // "force_background_redraw". if (background_image_filename != background_image_filename_ || background_type != background_image_type_ || - blur_radius_ != blur_radius || - opacity_level_ != opacity_level) { + blur_radius_ != blur_radius || opacity_level_ != opacity_level) { // Store background properties background_image_type_ = background_type; background_image_filename_ = background_image_filename; @@ -1066,15 +1103,15 @@ void PlaylistView::ReloadSettings() { cached_scaled_background_image_ = QPixmap(); previous_background_image_ = QPixmap(); } - setProperty("default_background_enabled", background_image_type_ == Default); + setProperty("default_background_enabled", + background_image_type_ == Default); emit BackgroundPropertyChanged(); force_background_redraw_ = true; } } void PlaylistView::SaveSettings() { - if (read_only_settings_) - return; + if (read_only_settings_) return; QSettings s; s.beginGroup(Playlist::kSettingsGroup); @@ -1084,7 +1121,8 @@ void PlaylistView::SaveSettings() { } void PlaylistView::StretchChanged(bool stretch) { - setHorizontalScrollBarPolicy(stretch ? Qt::ScrollBarAlwaysOff : Qt::ScrollBarAsNeeded); + setHorizontalScrollBarPolicy(stretch ? Qt::ScrollBarAlwaysOff + : Qt::ScrollBarAsNeeded); SaveGeometry(); } @@ -1127,31 +1165,29 @@ void PlaylistView::rowsInserted(const QModelIndex& parent, int start, int end) { if (at_end) { // If the rows were inserted at the end of the playlist then let's scroll // the view so the user can see. - scrollTo(model()->index(start, 0, parent), QAbstractItemView::PositionAtTop); + scrollTo(model()->index(start, 0, parent), + QAbstractItemView::PositionAtTop); } } ColumnAlignmentMap PlaylistView::DefaultColumnAlignment() { ColumnAlignmentMap ret; - ret[Playlist::Column_Length] = - ret[Playlist::Column_Track] = - ret[Playlist::Column_Disc] = - ret[Playlist::Column_Year] = - ret[Playlist::Column_BPM] = - ret[Playlist::Column_Bitrate] = - ret[Playlist::Column_Samplerate] = - ret[Playlist::Column_Filesize] = - ret[Playlist::Column_PlayCount] = - ret[Playlist::Column_SkipCount] = (Qt::AlignRight | Qt::AlignVCenter); - ret[Playlist::Column_Score] = (Qt::AlignCenter); + ret[Playlist::Column_Length] = ret[Playlist::Column_Track] = + ret[Playlist::Column_Disc] = ret[Playlist::Column_Year] = + ret[Playlist::Column_BPM] = ret[Playlist::Column_Bitrate] = + ret[Playlist::Column_Samplerate] = + ret[Playlist::Column_Filesize] = + ret[Playlist::Column_PlayCount] = + ret[Playlist::Column_SkipCount] = + (Qt::AlignRight | Qt::AlignVCenter); + ret[Playlist::Column_Score] = (Qt::AlignCenter); return ret; } void PlaylistView::SetColumnAlignment(int section, Qt::Alignment alignment) { - if (section < 0) - return; + if (section < 0) return; column_alignment_[section] = alignment; emit ColumnAlignmentChanged(column_alignment_); @@ -1166,21 +1202,23 @@ void PlaylistView::CopyCurrentSongToClipboard() const { // Get the display text of all visible columns. QStringList columns; - for (int i=0 ; icount() ; ++i) { + for (int i = 0; i < header()->count(); ++i) { if (header()->isSectionHidden(i)) { continue; } - const QVariant data = model()->data( - currentIndex().sibling(currentIndex().row(), i)); + const QVariant data = + model()->data(currentIndex().sibling(currentIndex().row(), i)); if (data.type() == QVariant::String) { columns << data.toString(); } } // Get the song's URL - const QUrl url = model()->data(currentIndex().sibling( - currentIndex().row(), Playlist::Column_Filename)).toUrl(); + const QUrl url = model() + ->data(currentIndex().sibling(currentIndex().row(), + Playlist::Column_Filename)) + .toUrl(); QMimeData* mime_data = new QMimeData; mime_data->setUrls(QList() << url); @@ -1189,11 +1227,9 @@ void PlaylistView::CopyCurrentSongToClipboard() const { QApplication::clipboard()->setMimeData(mime_data); } -void PlaylistView::CurrentSongChanged(const Song& song, - const QString& uri, +void PlaylistView::CurrentSongChanged(const Song& song, const QString& uri, const QImage& song_art) { - if (current_song_cover_art_ == song_art) - return; + if (current_song_cover_art_ == song_art) return; current_song_cover_art_ = song_art; if (background_image_type_ == AlbumCover) { @@ -1220,12 +1256,15 @@ void PlaylistView::set_background_image(const QImage& image) { if (!background_image_.isNull()) { // Apply opacity filter uchar* bits = background_image_.bits(); - for (int i = 0; i < background_image_.height() * background_image_.bytesPerLine(); i+=4) { - bits[i+3] = (opacity_level_ / 100.0) * 255; + for (int i = 0; + i < background_image_.height() * background_image_.bytesPerLine(); + i += 4) { + bits[i + 3] = (opacity_level_ / 100.0) * 255; } if (blur_radius_ != 0) { - QImage blurred(background_image_.size(), QImage::Format_ARGB32_Premultiplied); + QImage blurred(background_image_.size(), + QImage::Format_ARGB32_Premultiplied); blurred.fill(Qt::transparent); QPainter blur_painter(&blurred); qt_blurImage(&blur_painter, background_image_, blur_radius_, true, false); @@ -1265,8 +1304,7 @@ void PlaylistView::focusInEvent(QFocusEvent* event) { // only 1 item in the view it is now impossible to select that item without // using the mouse. const QModelIndex& current = selectionModel()->currentIndex(); - if (current.isValid() && - selectionModel()->selectedIndexes().isEmpty()) { + if (current.isValid() && selectionModel()->selectedIndexes().isEmpty()) { QItemSelection new_selection( current.sibling(current.row(), 0), current.sibling(current.row(), diff --git a/src/playlist/playlistview.h b/src/playlist/playlistview.h index 8fdc1a6c8..fedc207e0 100644 --- a/src/playlist/playlistview.h +++ b/src/playlist/playlistview.h @@ -18,13 +18,13 @@ #ifndef PLAYLISTVIEW_H #define PLAYLISTVIEW_H -#include "playlist.h" +#include #include #include #include -#include +#include "playlist.h" class QCleanlooksStyle; @@ -36,7 +36,6 @@ class RadioLoadingIndicator; class RatingItemDelegate; class QTimeLine; - // This proxy style works around a bug/feature introduced in Qt 4.7's QGtkStyle // that uses Gtk to paint row backgrounds, ignoring any custom brush or palette // the caller set in the QStyleOption. That breaks our currently playing track @@ -44,29 +43,23 @@ class QTimeLine; // This proxy style uses QCleanlooksStyle to paint the affected elements. // This class is used by the global search view as well. class PlaylistProxyStyle : public QProxyStyle { -public: + public: PlaylistProxyStyle(QStyle* base); void drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const; void drawPrimitive(PrimitiveElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const; -private: - boost::scoped_ptr cleanlooks_; + private: + std::unique_ptr cleanlooks_; }; - class PlaylistView : public QTreeView { Q_OBJECT public: - enum BackgroundImageType { - Default, - None, - Custom, - AlbumCover - }; + enum BackgroundImageType { Default, None, Custom, AlbumCover }; - PlaylistView(QWidget* parent = 0); + PlaylistView(QWidget* parent = nullptr); static const int kStateVersion; // Constants for settings: are persistent, values should not be changed @@ -86,12 +79,15 @@ class PlaylistView : public QTreeView { void SetReadOnlySettings(bool read_only) { read_only_settings_ = read_only; } Playlist* playlist() const { return playlist_; } - BackgroundImageType background_image_type() const { return background_image_type_; } + BackgroundImageType background_image_type() const { + return background_image_type_; + } Qt::Alignment column_alignment(int section) const; // QTreeView void drawTree(QPainter* painter, const QRegion& region) const; - void drawRow(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; + void drawRow(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; void setModel(QAbstractItemModel* model); public slots: @@ -105,15 +101,16 @@ class PlaylistView : public QTreeView { void SetColumnAlignment(int section, Qt::Alignment alignment); void CopyCurrentSongToClipboard() const; - void CurrentSongChanged(const Song& new_song, const QString& uri, const QImage& cover_art); + void CurrentSongChanged(const Song& new_song, const QString& uri, + const QImage& cover_art); void PlayerStopped(); - signals: +signals: void PlayItem(const QModelIndex& index); void PlayPause(); void RightClicked(const QPoint& global_pos, const QModelIndex& index); void SeekTrack(int gap); - void FocusOnFilterSignal(QKeyEvent *event); + void FocusOnFilterSignal(QKeyEvent* event); void BackgroundPropertyChanged(); void ColumnAlignmentChanged(const ColumnAlignmentMap& alignment); @@ -127,11 +124,11 @@ class PlaylistView : public QTreeView { void mouseMoveEvent(QMouseEvent* event); void mousePressEvent(QMouseEvent* event); void leaveEvent(QEvent*); - void paintEvent(QPaintEvent *event); - void dragMoveEvent(QDragMoveEvent *event); - void dragEnterEvent(QDragEnterEvent *event); - void dragLeaveEvent(QDragLeaveEvent *event); - void dropEvent(QDropEvent *event); + void paintEvent(QPaintEvent* event); + void dragMoveEvent(QDragMoveEvent* event); + void dragEnterEvent(QDragEnterEvent* event); + void dragLeaveEvent(QDragLeaveEvent* event); + void dropEvent(QDropEvent* event); void resizeEvent(QResizeEvent* event); bool eventFilter(QObject* object, QEvent* event); void focusInEvent(QFocusEvent* event); @@ -165,8 +162,12 @@ class PlaylistView : public QTreeView { void UpdateCachedCurrentRowPixmap(QStyleOptionViewItemV4 option, const QModelIndex& index); - void set_background_image_type(BackgroundImageType bg) { background_image_type_ = bg; emit BackgroundPropertyChanged(); } - // Save image as the background_image_ after applying some modifications (opacity, ...). + void set_background_image_type(BackgroundImageType bg) { + background_image_type_ = bg; + emit BackgroundPropertyChanged(); + } + // Save image as the background_image_ after applying some modifications + // (opacity, ...). // Should be used instead of modifying background_image_ directly void set_background_image(const QImage& image); @@ -226,7 +227,7 @@ class PlaylistView : public QTreeView { bool inhibit_autoscroll_; bool currently_autoscrolling_; - int row_height_; // Used to invalidate the currenttrack_bar pixmaps + int row_height_; // Used to invalidate the currenttrack_bar pixmaps QList currenttrack_bar_left_; QList currenttrack_bar_mid_; QList currenttrack_bar_right_; @@ -247,4 +248,4 @@ class PlaylistView : public QTreeView { ColumnAlignmentMap column_alignment_; }; -#endif // PLAYLISTVIEW_H +#endif // PLAYLISTVIEW_H diff --git a/src/playlist/queue.cpp b/src/playlist/queue.cpp index 691402dd2..76d620a73 100644 --- a/src/playlist/queue.cpp +++ b/src/playlist/queue.cpp @@ -23,17 +23,13 @@ const char* Queue::kRowsMimetype = "application/x-clementine-queue-rows"; -Queue::Queue(QObject* parent) - : QAbstractProxyModel(parent) -{ -} +Queue::Queue(QObject* parent) : QAbstractProxyModel(parent) {} QModelIndex Queue::mapFromSource(const QModelIndex& source_index) const { - if (!source_index.isValid()) - return QModelIndex(); + if (!source_index.isValid()) return QModelIndex(); const int source_row = source_index.row(); - for (int i=0 ; iindex(row, 0)); - if (!proxy_index.isValid()) - continue; + if (!proxy_index.isValid()) continue; emit dataChanged(proxy_index, proxy_index); } } void Queue::SourceLayoutChanged() { - for (int i=0 ; i& proxy_rows, int pos) { // Take the items out of the list first, keeping track of whether the // insertion point changes int offset = 0; - foreach (int row, proxy_rows) { - moved_items << source_indexes_.takeAt(row-offset); - if (pos != -1 && pos >= row) - pos --; + for (int row : proxy_rows) { + moved_items << source_indexes_.takeAt(row - offset); + if (pos != -1 && pos >= row) pos--; offset++; } // Put the items back in const int start = pos == -1 ? source_indexes_.count() : pos; - for (int i=start ; i row) - d --; + for (int row : proxy_rows) { + if (pidx.row() > row) d--; } - if (pidx.row() + d >= start) - d += proxy_rows.count(); + if (pidx.row() + d >= start) d += proxy_rows.count(); - changePersistentIndex(pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); + changePersistentIndex( + pidx, index(pidx.row() + d, pidx.column(), QModelIndex())); } } layoutChanged(); } -void Queue::MoveUp(int row) { - Move(QList() << row, row - 1); -} +void Queue::MoveUp(int row) { Move(QList() << row, row - 1); } -void Queue::MoveDown(int row) { - Move(QList() << row, row + 2); -} +void Queue::MoveDown(int row) { Move(QList() << row, row + 2); } QStringList Queue::mimeTypes() const { return QStringList() << kRowsMimetype << Playlist::kRowsMimetype; @@ -235,9 +222,8 @@ QMimeData* Queue::mimeData(const QModelIndexList& indexes) const { QMimeData* data = new QMimeData; QList rows; - foreach (const QModelIndex& index, indexes) { - if (index.column() != 0) - continue; + for (const QModelIndex& index : indexes) { + if (index.column() != 0) continue; rows << index.row(); } @@ -253,9 +239,9 @@ QMimeData* Queue::mimeData(const QModelIndexList& indexes) const { return data; } -bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int, const QModelIndex&) { - if (action == Qt::IgnoreAction) - return false; +bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int, const QModelIndex&) { + if (action == Qt::IgnoreAction) return false; if (data->hasFormat(kRowsMimetype)) { // Dragged from the queue @@ -263,20 +249,20 @@ bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, QList proxy_rows; QDataStream stream(data->data(kRowsMimetype)); stream >> proxy_rows; - qStableSort(proxy_rows); // Make sure we take them in order + qStableSort(proxy_rows); // Make sure we take them in order Move(proxy_rows, row); } else if (data->hasFormat(Playlist::kRowsMimetype)) { // Dragged from the playlist - Playlist* playlist = NULL; + Playlist* playlist = nullptr; QList source_rows; QDataStream stream(data->data(Playlist::kRowsMimetype)); stream.readRawData(reinterpret_cast(&playlist), sizeof(playlist)); stream >> source_rows; QModelIndexList source_indexes; - foreach (int source_row, source_rows) { + for (int source_row : source_rows) { const QModelIndex source_index = sourceModel()->index(source_row, 0); const QModelIndex proxy_index = mapFromSource(source_index); if (proxy_index.isValid()) { @@ -289,8 +275,9 @@ bool Queue::dropMimeData(const QMimeData* data, Qt::DropAction action, int row, if (!source_indexes.isEmpty()) { const int insert_point = row == -1 ? source_indexes_.count() : row; - beginInsertRows(QModelIndex(), insert_point, insert_point + source_indexes.count() - 1); - for (int i=0 ; i& proxy_rows) { - //order the rows + // order the rows qStableSort(proxy_rows); - //reflects immediately changes in the playlist + // reflects immediately changes in the playlist layoutAboutToBeChanged(); int removed_rows = 0; - foreach (int row, proxy_rows) { - //after the first row, the row number needs to be updated - const int real_row = row-removed_rows; + for (int row : proxy_rows) { + // after the first row, the row number needs to be updated + const int real_row = row - removed_rows; beginRemoveRows(QModelIndex(), real_row, real_row); source_indexes_.removeAt(real_row); endRemoveRows(); diff --git a/src/playlist/queue.h b/src/playlist/queue.h index 67fa1f6a1..de1edefd2 100644 --- a/src/playlist/queue.h +++ b/src/playlist/queue.h @@ -25,8 +25,8 @@ class Queue : public QAbstractProxyModel { Q_OBJECT -public: - Queue(QObject* parent = 0); + public: + Queue(QObject* parent = nullptr); static const char* kRowsMimetype; @@ -51,24 +51,27 @@ public: QModelIndex mapToSource(const QModelIndex& proxy_index) const; // QAbstractItemModel - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; - QModelIndex parent(const QModelIndex &child) const; - int rowCount(const QModelIndex &parent = QModelIndex()) const; - int columnCount(const QModelIndex &parent = QModelIndex()) const; + QModelIndex index(int row, int column, + const QModelIndex& parent = QModelIndex()) const; + QModelIndex parent(const QModelIndex& child) const; + int rowCount(const QModelIndex& parent = QModelIndex()) const; + int columnCount(const QModelIndex& parent = QModelIndex()) const; QVariant data(const QModelIndex& proxy_index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; QStringList mimeTypes() const; Qt::DropActions supportedDropActions() const; QMimeData* mimeData(const QModelIndexList& indexes) const; - bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent); - Qt::ItemFlags flags(const QModelIndex &index) const; + bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, + int column, const QModelIndex& parent); + Qt::ItemFlags flags(const QModelIndex& index) const; -private slots: - void SourceDataChanged(const QModelIndex& top_left, const QModelIndex& bottom_right); + private slots: + void SourceDataChanged(const QModelIndex& top_left, + const QModelIndex& bottom_right); void SourceLayoutChanged(); -private: + private: QList source_indexes_; }; -#endif // QUEUE_H +#endif // QUEUE_H diff --git a/src/playlist/queuemanager.cpp b/src/playlist/queuemanager.cpp index 63b513093..7462a2ec6 100644 --- a/src/playlist/queuemanager.cpp +++ b/src/playlist/queuemanager.cpp @@ -26,12 +26,11 @@ #include #include -QueueManager::QueueManager(QWidget *parent) - : QDialog(parent), - ui_(new Ui_QueueManager), - playlists_(NULL), - current_playlist_(NULL) -{ +QueueManager::QueueManager(QWidget* parent) + : QDialog(parent), + ui_(new Ui_QueueManager), + playlists_(nullptr), + current_playlist_(nullptr) { ui_->setupUi(this); ui_->list->setItemDelegate(new QueuedItemDelegate(this, 0)); @@ -41,7 +40,7 @@ QueueManager::QueueManager(QWidget *parent) ui_->remove->setIcon(IconLoader::Load("edit-delete")); ui_->clear->setIcon(IconLoader::Load("edit-clear-list")); - //Set a standard shortcut + // Set a standard shortcut ui_->remove->setShortcut(QKeySequence::Delete); // Button connections @@ -54,43 +53,47 @@ QueueManager::QueueManager(QWidget *parent) connect(close, SIGNAL(activated()), SLOT(close())); } -QueueManager::~QueueManager() { - delete ui_; -} +QueueManager::~QueueManager() { delete ui_; } void QueueManager::SetPlaylistManager(PlaylistManager* manager) { playlists_ = manager; - connect(playlists_, SIGNAL(CurrentChanged(Playlist*)), SLOT(CurrentPlaylistChanged(Playlist*))); + connect(playlists_, SIGNAL(CurrentChanged(Playlist*)), + SLOT(CurrentPlaylistChanged(Playlist*))); CurrentPlaylistChanged(playlists_->current()); } void QueueManager::CurrentPlaylistChanged(Playlist* playlist) { if (current_playlist_) { - disconnect(current_playlist_->queue(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(UpdateButtonState())); - disconnect(current_playlist_->queue(), SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(UpdateButtonState())); - disconnect(current_playlist_->queue(), SIGNAL(layoutChanged()), - this, SLOT(UpdateButtonState())); - disconnect(current_playlist_, SIGNAL(destroyed()), - this, SLOT(PlaylistDestroyed())); + disconnect(current_playlist_->queue(), + SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(UpdateButtonState())); + disconnect(current_playlist_->queue(), + SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(UpdateButtonState())); + disconnect(current_playlist_->queue(), SIGNAL(layoutChanged()), this, + SLOT(UpdateButtonState())); + disconnect(current_playlist_, SIGNAL(destroyed()), this, + SLOT(PlaylistDestroyed())); } current_playlist_ = playlist; - connect(current_playlist_->queue(), SIGNAL(rowsInserted(QModelIndex,int,int)), - this, SLOT(UpdateButtonState())); - connect(current_playlist_->queue(), SIGNAL(rowsRemoved(QModelIndex,int,int)), - this, SLOT(UpdateButtonState())); - connect(current_playlist_->queue(), SIGNAL(layoutChanged()), - this, SLOT(UpdateButtonState())); - connect(current_playlist_, SIGNAL(destroyed()), - this, SLOT(PlaylistDestroyed())); + connect(current_playlist_->queue(), + SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(UpdateButtonState())); + connect(current_playlist_->queue(), + SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(UpdateButtonState())); + connect(current_playlist_->queue(), SIGNAL(layoutChanged()), this, + SLOT(UpdateButtonState())); + connect(current_playlist_, SIGNAL(destroyed()), this, + SLOT(PlaylistDestroyed())); ui_->list->setModel(current_playlist_->queue()); - connect(ui_->list->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), + connect(ui_->list->selectionModel(), + SIGNAL(currentChanged(QModelIndex, QModelIndex)), SLOT(UpdateButtonState())); } @@ -98,10 +101,9 @@ void QueueManager::MoveUp() { QModelIndexList indexes = ui_->list->selectionModel()->selectedRows(); qStableSort(indexes); - if (indexes.isEmpty() || indexes.first().row() == 0) - return; + if (indexes.isEmpty() || indexes.first().row() == 0) return; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { current_playlist_->queue()->MoveUp(index.row()); } } @@ -110,24 +112,22 @@ void QueueManager::MoveDown() { QModelIndexList indexes = ui_->list->selectionModel()->selectedRows(); qStableSort(indexes); - if (indexes.isEmpty() || indexes.last().row() == current_playlist_->queue()->rowCount()-1) + if (indexes.isEmpty() || + indexes.last().row() == current_playlist_->queue()->rowCount() - 1) return; - for (int i=indexes.count()-1 ; i>=0 ; --i) { + for (int i = indexes.count() - 1; i >= 0; --i) { current_playlist_->queue()->MoveDown(indexes[i].row()); } } -void QueueManager::Clear() { - current_playlist_->queue()->Clear(); -} +void QueueManager::Clear() { current_playlist_->queue()->Clear(); } void QueueManager::Remove() { - //collect the rows to be removed + // collect the rows to be removed QList row_list; - foreach (const QModelIndex& index, ui_->list->selectionModel()->selectedRows()) { - if (index.isValid()) - row_list << index.row(); + for (const QModelIndex& index : ui_->list->selectionModel()->selectedRows()) { + if (index.isValid()) row_list << index.row(); } current_playlist_->queue()->Remove(row_list); @@ -138,7 +138,8 @@ void QueueManager::UpdateButtonState() { if (current.isValid()) { ui_->move_up->setEnabled(current.row() != 0); - ui_->move_down->setEnabled(current.row() != current_playlist_->queue()->rowCount()-1); + ui_->move_down->setEnabled(current.row() != + current_playlist_->queue()->rowCount() - 1); ui_->remove->setEnabled(true); } else { ui_->move_up->setEnabled(false); @@ -150,6 +151,6 @@ void QueueManager::UpdateButtonState() { } void QueueManager::PlaylistDestroyed() { - current_playlist_ = NULL; + current_playlist_ = nullptr; // We'll get another CurrentPlaylistChanged() soon } diff --git a/src/playlist/queuemanager.h b/src/playlist/queuemanager.h index a136f2c33..34643d964 100644 --- a/src/playlist/queuemanager.h +++ b/src/playlist/queuemanager.h @@ -29,13 +29,13 @@ class QModelIndex; class QueueManager : public QDialog { Q_OBJECT -public: - QueueManager(QWidget* parent = 0); + public: + QueueManager(QWidget* parent = nullptr); ~QueueManager(); void SetPlaylistManager(PlaylistManager* manager); -private slots: + private slots: void CurrentPlaylistChanged(Playlist* playlist); void PlaylistDestroyed(); void UpdateButtonState(); @@ -45,11 +45,11 @@ private slots: void Remove(); void Clear(); -private: + private: Ui_QueueManager* ui_; PlaylistManager* playlists_; Playlist* current_playlist_; }; -#endif // QUEUEMANAGER_H +#endif // QUEUEMANAGER_H diff --git a/src/playlist/songloaderinserter.cpp b/src/playlist/songloaderinserter.cpp index 2a22738ec..b11114d4e 100644 --- a/src/playlist/songloaderinserter.cpp +++ b/src/playlist/songloaderinserter.cpp @@ -27,43 +27,34 @@ SongLoaderInserter::SongLoaderInserter(TaskManager* task_manager, LibraryBackendInterface* library, const Player* player) : task_manager_(task_manager), - destination_(NULL), + destination_(nullptr), row_(-1), play_now_(true), enqueue_(false), - async_load_id_(0), - async_progress_(0), library_(library), - player_(player) { -} + player_(player) {} -SongLoaderInserter::~SongLoaderInserter() { - qDeleteAll(pending_); - qDeleteAll(pending_async_); -} +SongLoaderInserter::~SongLoaderInserter() { qDeleteAll(pending_); } -void SongLoaderInserter::Load(Playlist *destination, - int row, bool play_now, bool enqueue, - const QList &urls) { +void SongLoaderInserter::Load(Playlist* destination, int row, bool play_now, + bool enqueue, const QList& urls) { destination_ = destination; row_ = row; play_now_ = play_now; enqueue_ = enqueue; connect(destination, SIGNAL(destroyed()), SLOT(DestinationDestroyed())); - connect(this, SIGNAL(EffectiveLoadFinished(const SongList&)), - destination, SLOT(UpdateItems(const SongList&))); + connect(this, SIGNAL(PreloadFinished()), SLOT(InsertSongs())); + connect(this, SIGNAL(EffectiveLoadFinished(const SongList&)), destination, + SLOT(UpdateItems(const SongList&))); - foreach (const QUrl& url, urls) { + for (const QUrl& url : urls) { SongLoader* loader = new SongLoader(library_, player_, this); - // we're connecting this before we're even sure if this is an async load - // to avoid race conditions (signal emission before we're listening to it) - connect(loader, SIGNAL(LoadFinished(bool)), SLOT(PendingLoadFinished(bool))); SongLoader::Result ret = loader->Load(url); - if (ret == SongLoader::WillLoadAsync) { - pending_.insert(loader); + if (ret == SongLoader::BlockingLoadRequired) { + pending_.append(loader); continue; } @@ -74,46 +65,43 @@ void SongLoaderInserter::Load(Playlist *destination, delete loader; } - if (pending_.isEmpty()) - Finished(); - else { - async_progress_ = 0; - async_load_id_ = task_manager_->StartTask(tr("Loading tracks")); - task_manager_->SetTaskProgress(async_load_id_, async_progress_, pending_.count()); + if (pending_.isEmpty()) { + InsertSongs(); + deleteLater(); + } else { + QtConcurrent::run(this, &SongLoaderInserter::AsyncLoad); } } // Load audio CD tracks: // First, we add tracks (without metadata) into the playlist -// In the meantine, MusicBrainz will be queried to get songs' metadata. +// In the meantime, MusicBrainz will be queried to get songs' metadata. // AudioCDTagsLoaded will be called next, and playlist's items will be updated. -void SongLoaderInserter::LoadAudioCD(Playlist *destination, - int row, bool play_now, bool enqueue) { +void SongLoaderInserter::LoadAudioCD(Playlist* destination, int row, + bool play_now, bool enqueue) { destination_ = destination; row_ = row; play_now_ = play_now; enqueue_ = enqueue; SongLoader* loader = new SongLoader(library_, player_, this); - connect(loader, SIGNAL(LoadFinished(bool)), SLOT(AudioCDTagsLoaded(bool))); + connect(loader, SIGNAL(LoadAudioCDFinished(bool)), SLOT(AudioCDTagsLoaded(bool))); qLog(Info) << "Loading audio CD..."; SongLoader::Result ret = loader->LoadAudioCD(); if (ret == SongLoader::Error) { emit Error(tr("Error while loading audio CD")); delete loader; + } else { + songs_ = loader->songs(); + InsertSongs(); } - songs_ = loader->songs(); - PartiallyFinished(); } -void SongLoaderInserter::DestinationDestroyed() { - destination_ = NULL; -} +void SongLoaderInserter::DestinationDestroyed() { destination_ = nullptr; } void SongLoaderInserter::AudioCDTagsLoaded(bool success) { SongLoader* loader = qobject_cast(sender()); - if (!loader || !destination_) - return; + if (!loader || !destination_) return; if (success) destination_->UpdateItems(loader->songs()); @@ -122,30 +110,7 @@ void SongLoaderInserter::AudioCDTagsLoaded(bool success) { deleteLater(); } -void SongLoaderInserter::PendingLoadFinished(bool success) { - SongLoader* loader = qobject_cast(sender()); - if (!loader || !pending_.contains(loader)) - return; - pending_.remove(loader); - pending_async_.insert(loader); - - if (success) - songs_ << loader->songs(); - else - emit Error(tr("Error loading %1").arg(loader->url().toString())); - - task_manager_->SetTaskProgress(async_load_id_, ++async_progress_); - if (pending_.isEmpty()) { - task_manager_->SetTaskFinished(async_load_id_); - async_progress_ = 0; - async_load_id_ = task_manager_->StartTask(tr("Loading tracks info")); - task_manager_->SetTaskProgress(async_load_id_, async_progress_, pending_async_.count()); - PartiallyFinished(); - QtConcurrent::run(this, &SongLoaderInserter::EffectiveLoad); - } -} - -void SongLoaderInserter::PartiallyFinished() { +void SongLoaderInserter::InsertSongs() { // Insert songs (that haven't been completelly loaded) to allow user to see // and play them while not loaded completely if (destination_) { @@ -153,21 +118,45 @@ void SongLoaderInserter::PartiallyFinished() { } } -void SongLoaderInserter::EffectiveLoad() { - foreach (SongLoader* loader, pending_async_) { - loader->EffectiveSongsLoad(); - task_manager_->SetTaskProgress(async_load_id_, ++async_progress_); - emit EffectiveLoadFinished(loader->songs()); - } - task_manager_->SetTaskFinished(async_load_id_); - - deleteLater(); -} - -void SongLoaderInserter::Finished() { - if (destination_) { - destination_->InsertSongsOrLibraryItems(songs_, row_, play_now_, enqueue_); +void SongLoaderInserter::AsyncLoad() { + // First, quick load raw songs. + int async_progress = 0; + int async_load_id = task_manager_->StartTask(tr("Loading tracks")); + task_manager_->SetTaskProgress(async_load_id, async_progress, + pending_.count()); + for (int i = 0; i < pending_.count(); ++i) { + SongLoader* loader = pending_[i]; + loader->LoadFilenamesBlocking(); + task_manager_->SetTaskProgress(async_load_id, ++async_progress); + if (i == 0) { + // Load everything from the first song. It'll start playing as soon as + // we emit PreloadFinished, so it needs to have the duration set to show + // properly in the UI. + loader->LoadMetadataBlocking(); + } + songs_ << loader->songs(); } + task_manager_->SetTaskFinished(async_load_id); + emit PreloadFinished(); + + // Songs are inserted in playlist, now load them completely. + async_progress = 0; + async_load_id = task_manager_->StartTask(tr("Loading tracks info")); + task_manager_->SetTaskProgress(async_load_id, async_progress, songs_.count()); + SongList songs; + for (int i = 0; i < pending_.count(); ++i) { + SongLoader* loader = pending_[i]; + if (i != 0) { + // We already did this earlier for the first song. + loader->LoadMetadataBlocking(); + } + songs << loader->songs(); + task_manager_->SetTaskProgress(async_load_id, songs.count()); + } + task_manager_->SetTaskFinished(async_load_id); + + // Replace the partially-loaded items by the new ones, fully loaded. + emit EffectiveLoadFinished(songs); deleteLater(); } diff --git a/src/playlist/songloaderinserter.h b/src/playlist/songloaderinserter.h index 01f6e8c9a..8ed6001ab 100644 --- a/src/playlist/songloaderinserter.h +++ b/src/playlist/songloaderinserter.h @@ -18,8 +18,8 @@ #ifndef SONGLOADERINSERTER_H #define SONGLOADERINSERTER_H +#include #include -#include #include #include "core/song.h" @@ -34,10 +34,9 @@ class QModelIndex; class SongLoaderInserter : public QObject { Q_OBJECT -public: + public: SongLoaderInserter(TaskManager* task_manager, - LibraryBackendInterface* library, - const Player* player); + LibraryBackendInterface* library, const Player* player); ~SongLoaderInserter(); void Load(Playlist* destination, int row, bool play_now, bool enqueue, @@ -46,19 +45,18 @@ public: signals: void Error(const QString& message); + void PreloadFinished(); void EffectiveLoadFinished(const SongList& songs); -private slots: - void PendingLoadFinished(bool success); + private slots: void DestinationDestroyed(); void AudioCDTagsLoaded(bool success); + void InsertSongs(); -private: - void PartiallyFinished(); - void EffectiveLoad(); - void Finished(); + private: + void AsyncLoad(); -private: + private: TaskManager* task_manager_; Playlist* destination_; @@ -68,12 +66,9 @@ private: SongList songs_; - QSet pending_; - QSet pending_async_; - int async_load_id_; - int async_progress_; + QList pending_; LibraryBackendInterface* library_; const Player* player_; }; -#endif // SONGLOADERINSERTER_H +#endif // SONGLOADERINSERTER_H diff --git a/src/playlist/songmimedata.h b/src/playlist/songmimedata.h index f35d6a265..182709bd6 100644 --- a/src/playlist/songmimedata.h +++ b/src/playlist/songmimedata.h @@ -28,12 +28,11 @@ class LibraryBackendInterface; class SongMimeData : public MimeData { Q_OBJECT -public: - SongMimeData() - : backend(NULL) {} + public: + SongMimeData() : backend(nullptr) {} LibraryBackendInterface* backend; SongList songs; }; -#endif // SONGMIMEDATA_H +#endif // SONGMIMEDATA_H diff --git a/src/playlist/songplaylistitem.cpp b/src/playlist/songplaylistitem.cpp index ac0bc103b..446147f1b 100644 --- a/src/playlist/songplaylistitem.cpp +++ b/src/playlist/songplaylistitem.cpp @@ -25,16 +25,10 @@ #include #include -SongPlaylistItem::SongPlaylistItem(const QString& type) - : PlaylistItem(type) -{ -} +SongPlaylistItem::SongPlaylistItem(const QString& type) : PlaylistItem(type) {} SongPlaylistItem::SongPlaylistItem(const Song& song) - : PlaylistItem(song.is_stream() ? "Stream" : "File"), - song_(song) -{ -} + : PlaylistItem(song.is_stream() ? "Stream" : "File"), song_(song) {} bool SongPlaylistItem::InitFromQuery(const SqlRow& query) { song_.InitFromQuery(query, false, (Song::kColumns.count() + 1) * 3); @@ -46,21 +40,16 @@ bool SongPlaylistItem::InitFromQuery(const SqlRow& query) { return true; } -QUrl SongPlaylistItem::Url() const { - return song_.url(); -} +QUrl SongPlaylistItem::Url() const { return song_.url(); } void SongPlaylistItem::Reload() { - if (song_.url().scheme() != "file") - return; + if (song_.url().scheme() != "file") return; - TagReaderClient::Instance()->ReadFileBlocking(song_.url().toLocalFile(), &song_); + TagReaderClient::Instance()->ReadFileBlocking(song_.url().toLocalFile(), + &song_); } Song SongPlaylistItem::Metadata() const { - if (HasTemporaryMetadata()) - return temp_metadata_; + if (HasTemporaryMetadata()) return temp_metadata_; return song_; } - - diff --git a/src/playlist/songplaylistitem.h b/src/playlist/songplaylistitem.h index 9ad0b42da..36861c8f8 100644 --- a/src/playlist/songplaylistitem.h +++ b/src/playlist/songplaylistitem.h @@ -43,4 +43,4 @@ class SongPlaylistItem : public PlaylistItem { Song song_; }; -#endif // SONGPLAYLISTITEM_H +#endif // SONGPLAYLISTITEM_H diff --git a/src/playlistparsers/asxiniparser.cpp b/src/playlistparsers/asxiniparser.cpp index 79e5a155c..343ae1310 100644 --- a/src/playlistparsers/asxiniparser.cpp +++ b/src/playlistparsers/asxiniparser.cpp @@ -22,15 +22,14 @@ #include AsxIniParser::AsxIniParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) -{ -} + : ParserBase(library, parent) {} -bool AsxIniParser::TryMagic(const QByteArray &data) const { +bool AsxIniParser::TryMagic(const QByteArray& data) const { return data.toLower().contains("[reference]"); } -SongList AsxIniParser::Load(QIODevice *device, const QString& playlist_path, const QDir &dir) const { +SongList AsxIniParser::Load(QIODevice* device, const QString& playlist_path, + const QDir& dir) const { SongList ret; while (!device->atEnd()) { @@ -50,12 +49,13 @@ SongList AsxIniParser::Load(QIODevice *device, const QString& playlist_path, con return ret; } -void AsxIniParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { +void AsxIniParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { QTextStream s(device); s << "[Reference]" << endl; int n = 1; - foreach (const Song& song, songs) { + for (const Song& song : songs) { s << "Ref" << n << "=" << URLOrRelativeFilename(song.url(), dir) << endl; ++n; } diff --git a/src/playlistparsers/asxiniparser.h b/src/playlistparsers/asxiniparser.h index fe2264178..cb15e52ef 100644 --- a/src/playlistparsers/asxiniparser.h +++ b/src/playlistparsers/asxiniparser.h @@ -23,16 +23,18 @@ class AsxIniParser : public ParserBase { Q_OBJECT -public: - AsxIniParser(LibraryBackendInterface* library, QObject* parent = 0); + public: + AsxIniParser(LibraryBackendInterface* library, QObject* parent = nullptr); QString name() const { return "ASX/INI"; } QStringList file_extensions() const { return QStringList() << "asxini"; } - bool TryMagic(const QByteArray &data) const; + bool TryMagic(const QByteArray& data) const; - SongList Load(QIODevice *device, const QString& playlist_path = "", const QDir &dir = QDir()) const; - void Save(const SongList &songs, QIODevice *device, const QDir &dir = QDir()) const; + SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const; + void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const; }; -#endif // ASXINIPARSER_H +#endif // ASXINIPARSER_H diff --git a/src/playlistparsers/asxparser.cpp b/src/playlistparsers/asxparser.cpp index 6d714b798..eb99e2082 100644 --- a/src/playlistparsers/asxparser.cpp +++ b/src/playlistparsers/asxparser.cpp @@ -28,11 +28,9 @@ #include ASXParser::ASXParser(LibraryBackendInterface* library, QObject* parent) - : XMLParser(library, parent) -{ -} + : XMLParser(library, parent) {} -SongList ASXParser::Load(QIODevice *device, const QString& playlist_path, +SongList ASXParser::Load(QIODevice* device, const QString& playlist_path, const QDir& dir) const { // We have to load everything first so we can munge the "XML". QByteArray data = device->readAll(); @@ -80,7 +78,6 @@ SongList ASXParser::Load(QIODevice *device, const QString& playlist_path, return ret; } - Song ASXParser::ParseTrack(QXmlStreamReader* reader, const QDir& dir) const { QString title, artist, album, ref; @@ -120,7 +117,8 @@ return_song: return song; } -void ASXParser::Save(const SongList& songs, QIODevice* device, const QDir&) const { +void ASXParser::Save(const SongList& songs, QIODevice* device, + const QDir&) const { QXmlStreamWriter writer(device); writer.setAutoFormatting(true); writer.setAutoFormattingIndent(2); @@ -128,7 +126,7 @@ void ASXParser::Save(const SongList& songs, QIODevice* device, const QDir&) cons { StreamElement asx("asx", &writer); writer.writeAttribute("version", "3.0"); - foreach (const Song& song, songs) { + for (const Song& song : songs) { StreamElement entry("entry", &writer); writer.writeTextElement("title", song.title()); { @@ -143,6 +141,6 @@ void ASXParser::Save(const SongList& songs, QIODevice* device, const QDir&) cons writer.writeEndDocument(); } -bool ASXParser::TryMagic(const QByteArray &data) const { +bool ASXParser::TryMagic(const QByteArray& data) const { return data.toLower().contains(" #include -const char* CueParser::kFileLineRegExp = "(\\S+)\\s+(?:\"([^\"]+)\"|(\\S+))\\s*(?:\"([^\"]+)\"|(\\S+))?"; +const char* CueParser::kFileLineRegExp = + "(\\S+)\\s+(?:\"([^\"]+)\"|(\\S+))\\s*(?:\"([^\"]+)\"|(\\S+))?"; const char* CueParser::kIndexRegExp = "(\\d{2,3}):(\\d{2}):(\\d{2})"; const char* CueParser::kPerformer = "performer"; @@ -43,15 +44,15 @@ const char* CueParser::kGenre = "genre"; const char* CueParser::kDate = "date"; CueParser::CueParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) -{ -} + : ParserBase(library, parent) {} -SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const QDir& dir) const { +SongList CueParser::Load(QIODevice* device, const QString& playlist_path, + const QDir& dir) const { SongList ret; QTextStream text_stream(device); - text_stream.setCodec(QTextCodec::codecForUtfText(device->peek(1024), QTextCodec::codecForName("UTF-8"))); + text_stream.setCodec(QTextCodec::codecForUtfText( + device->peek(1024), QTextCodec::codecForName("UTF-8"))); QString dir_path = dir.absolutePath(); // read the first line already @@ -76,7 +77,7 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const QStringList splitted = SplitCueLine(line); // uninteresting or incorrect line - if(splitted.size() < 2) { + if (splitted.size() < 2) { continue; } @@ -84,59 +85,59 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const QString line_value = splitted[1]; // PERFORMER - if(line_name == kPerformer) { + if (line_name == kPerformer) { album_artist = line_value; - // TITLE - } else if(line_name == kTitle) { + // TITLE + } else if (line_name == kTitle) { album = line_value; - // SONGWRITER - } else if(line_name == kSongWriter) { + // SONGWRITER + } else if (line_name == kSongWriter) { album_composer = line_value; - // FILE - } else if(line_name == kFile) { + // FILE + } else if (line_name == kFile) { file = QDir::isAbsolutePath(line_value) - ? line_value - : dir.absoluteFilePath(line_value); + ? line_value + : dir.absoluteFilePath(line_value); - if(splitted.size() > 2) { + if (splitted.size() > 2) { file_type = splitted[2]; } - // REM - } else if(line_name == kRem) { - if(splitted.size() < 3) { - break; - } + // REM + } else if (line_name == kRem) { + if (splitted.size() < 3) { + break; + } - // REM GENRE - if (line_value.toLower() == kGenre) { - genre = splitted[2]; + // REM GENRE + if (line_value.toLower() == kGenre) { + genre = splitted[2]; // REM DATE - } else if(line_value.toLower() == kDate) { - date = splitted[2]; - } + } else if (line_value.toLower() == kDate) { + date = splitted[2]; + } - // end of the header -> go into the track mode - } else if(line_name == kTrack) { + // end of the header -> go into the track mode + } else if (line_name == kTrack) { files++; break; - } // just ignore the rest of possible field types for now... - } while(!(line = text_stream.readLine()).isNull()); + } while (!(line = text_stream.readLine()).isNull()); - if(line.isNull()) { - qLog(Warning) << "the .cue file from " << dir_path << " defines no tracks!"; + if (line.isNull()) { + qLog(Warning) << "the .cue file from " << dir_path + << " defines no tracks!"; return ret; } @@ -155,83 +156,88 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const QStringList splitted = SplitCueLine(line); // uninteresting or incorrect line - if(splitted.size() < 2) { + if (splitted.size() < 2) { continue; } QString line_name = splitted[0].toLower(); QString line_value = splitted[1]; - QString line_additional = splitted.size() > 2 ? splitted[2].toLower() : ""; + QString line_additional = + splitted.size() > 2 ? splitted[2].toLower() : ""; - if(line_name == kTrack) { + if (line_name == kTrack) { - // the beginning of another track's definition - we're saving the current one + // the beginning of another track's definition - we're saving the + // current one // for later (if it's valid of course) - // please note that the same code is repeated just after this 'do-while' loop - if(valid_file && !index.isEmpty() && (track_type.isEmpty() || track_type == kAudioTrackType)) { - entries.append(CueEntry(file, index, title, artist, album_artist, album, composer, album_composer, genre, date)); + // please note that the same code is repeated just after this 'do-while' + // loop + if (valid_file && !index.isEmpty() && + (track_type.isEmpty() || track_type == kAudioTrackType)) { + entries.append(CueEntry(file, index, title, artist, album_artist, + album, composer, album_composer, genre, + date)); } // clear the state track_type = index = artist = title = ""; - if(!line_additional.isEmpty()) { + if (!line_additional.isEmpty()) { track_type = line_additional; } - } else if(line_name == kIndex) { + } else if (line_name == kIndex) { // we need the index's position field - if(!line_additional.isEmpty()) { + if (!line_additional.isEmpty()) { // if there's none "01" index, we'll just take the first one // also, we'll take the "01" index even if it's the last one - if(line_value == "01" || index.isEmpty()) { + if (line_value == "01" || index.isEmpty()) { index = line_additional; - } - } - } else if(line_name == kPerformer) { + } else if (line_name == kPerformer) { artist = line_value; - } else if(line_name == kTitle) { + } else if (line_name == kTitle) { title = line_value; - } else if(line_name == kSongWriter) { + } else if (line_name == kSongWriter) { composer = line_value; - // end of track's for the current file -> parse next one - } else if(line_name == kFile) { + // end of track's for the current file -> parse next one + } else if (line_name == kFile) { break; - } // just ignore the rest of possible field types for now... - } while(!(line = text_stream.readLine()).isNull()); + } while (!(line = text_stream.readLine()).isNull()); // we didn't add the last song yet... - if(valid_file && !index.isEmpty() && (track_type.isEmpty() || track_type == kAudioTrackType)) { - entries.append(CueEntry(file, index, title, artist, album_artist, album, composer, album_composer, genre, date)); + if (valid_file && !index.isEmpty() && + (track_type.isEmpty() || track_type == kAudioTrackType)) { + entries.append(CueEntry(file, index, title, artist, album_artist, album, + composer, album_composer, genre, date)); } } QDateTime cue_mtime = QFileInfo(playlist_path).lastModified(); // finalize parsing songs - for(int i = 0; i < entries.length(); i++) { + for (int i = 0; i < entries.length(); i++) { CueEntry entry = entries.at(i); Song song = LoadSong(entry.file, IndexToMarker(entry.index), dir); // cue song has mtime equal to qMax(media_file_mtime, cue_sheet_mtime) - if(cue_mtime.isValid()) { + if (cue_mtime.isValid()) { song.set_mtime(qMax(cue_mtime.toTime_t(), song.mtime())); } song.set_cue_path(playlist_path); @@ -240,20 +246,22 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const // the current .cue metadata // set track number only in single-file mode - if(files == 1) { + if (files == 1) { song.set_track(i + 1); } - // the last TRACK for every FILE gets it's 'end' marker from the media file's + // the last TRACK for every FILE gets it's 'end' marker from the media + // file's // length - if(i + 1 < entries.size() && entries.at(i).file == entries.at(i + 1).file) { + if (i + 1 < entries.size() && + entries.at(i).file == entries.at(i + 1).file) { // incorrect indices? - if(!UpdateSong(entry, entries.at(i + 1).index, &song)) { + if (!UpdateSong(entry, entries.at(i + 1).index, &song)) { continue; } } else { // incorrect index? - if(!UpdateLastSong(entry, &song)) { + if (!UpdateLastSong(entry, &song)) { continue; } } @@ -264,11 +272,13 @@ SongList CueParser::Load(QIODevice* device, const QString& playlist_path, const return ret; } -// This and the kFileLineRegExp do most of the "dirty" work, namely: splitting the raw .cue -// line into logical parts and getting rid of all the unnecessary whitespaces and quoting. +// This and the kFileLineRegExp do most of the "dirty" work, namely: splitting +// the raw .cue +// line into logical parts and getting rid of all the unnecessary whitespaces +// and quoting. QStringList CueParser::SplitCueLine(const QString& line) const { QRegExp line_regexp(kFileLineRegExp); - if(!line_regexp.exactMatch(line.trimmed())) { + if (!line_regexp.exactMatch(line.trimmed())) { return QStringList(); } @@ -276,20 +286,21 @@ QStringList CueParser::SplitCueLine(const QString& line) const { return line_regexp.capturedTexts().filter(QRegExp(".+")).mid(1, -1); } -// Updates the song with data from the .cue entry. This one mustn't be used for the +// Updates the song with data from the .cue entry. This one mustn't be used for +// the // last song in the .cue file. -bool CueParser::UpdateSong(const CueEntry& entry, const QString& next_index, Song* song) const { +bool CueParser::UpdateSong(const CueEntry& entry, const QString& next_index, + Song* song) const { qint64 beginning = IndexToMarker(entry.index); qint64 end = IndexToMarker(next_index); // incorrect indices (we won't be able to calculate beginning or end) - if(beginning == -1 || end == -1) { + if (beginning == -1 || end == -1) { return false; } // believe the CUE: Init() forces validity - song->Init(entry.title, entry.PrettyArtist(), - entry.album, beginning, end); + song->Init(entry.title, entry.PrettyArtist(), entry.album, beginning, end); song->set_albumartist(entry.album_artist); song->set_composer(entry.PrettyComposer()); song->set_genre(entry.genre); @@ -298,13 +309,14 @@ bool CueParser::UpdateSong(const CueEntry& entry, const QString& next_index, Son return true; } -// Updates the song with data from the .cue entry. This one must be used only for the +// Updates the song with data from the .cue entry. This one must be used only +// for the // last song in the .cue file. bool CueParser::UpdateLastSong(const CueEntry& entry, Song* song) const { qint64 beginning = IndexToMarker(entry.index); // incorrect index (we won't be able to calculate beginning) - if(beginning == -1) { + if (beginning == -1) { return false; } @@ -328,30 +340,32 @@ bool CueParser::UpdateLastSong(const CueEntry& entry, Song* song) const { qint64 CueParser::IndexToMarker(const QString& index) const { QRegExp index_regexp(kIndexRegExp); - if(!index_regexp.exactMatch(index)) { + if (!index_regexp.exactMatch(index)) { return -1; } QStringList splitted = index_regexp.capturedTexts().mid(1, -1); - qlonglong frames = splitted.at(0).toLongLong() * 60 * 75 + splitted.at(1).toLongLong() * 75 + + qlonglong frames = splitted.at(0).toLongLong() * 60 * 75 + + splitted.at(1).toLongLong() * 75 + splitted.at(2).toLongLong(); return (frames * kNsecPerSec) / 75; } -void CueParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { +void CueParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { // TODO } // Looks for a track starting with one of the .cue's keywords. -bool CueParser::TryMagic(const QByteArray &data) const { +bool CueParser::TryMagic(const QByteArray& data) const { QStringList splitted = QString::fromUtf8(data.constData()).split('\n'); - for(int i = 0; i < splitted.length(); i++) { + for (int i = 0; i < splitted.length(); i++) { QString line = splitted.at(i).trimmed(); - if(line.startsWith(kPerformer, Qt::CaseInsensitive) || - line.startsWith(kTitle, Qt::CaseInsensitive) || - line.startsWith(kFile, Qt::CaseInsensitive) || - line.startsWith(kTrack, Qt::CaseInsensitive)) { + if (line.startsWith(kPerformer, Qt::CaseInsensitive) || + line.startsWith(kTitle, Qt::CaseInsensitive) || + line.startsWith(kFile, Qt::CaseInsensitive) || + line.startsWith(kTrack, Qt::CaseInsensitive)) { return true; } } diff --git a/src/playlistparsers/cueparser.h b/src/playlistparsers/cueparser.h index f3c773a70..0f07b0b11 100644 --- a/src/playlistparsers/cueparser.h +++ b/src/playlistparsers/cueparser.h @@ -43,7 +43,7 @@ class CueParser : public ParserBase { static const char* kGenre; static const char* kDate; - CueParser(LibraryBackendInterface* library, QObject* parent = 0); + CueParser(LibraryBackendInterface* library, QObject* parent = nullptr); QString name() const { return "CUE"; } QStringList file_extensions() const { return QStringList() << "cue"; } @@ -51,8 +51,10 @@ class CueParser : public ParserBase { bool TryMagic(const QByteArray& data) const; - SongList Load(QIODevice* device, const QString& playlist_path = "", const QDir& dir = QDir()) const; - void Save(const SongList& songs, QIODevice* device, const QDir& dir = QDir()) const; + SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const; + void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const; private: // A single TRACK entry in .cue file. @@ -72,12 +74,16 @@ class CueParser : public ParserBase { QString genre; QString date; - QString PrettyArtist() const { return artist.isEmpty() ? album_artist : artist; } - QString PrettyComposer() const { return composer.isEmpty() ? album_composer : composer; } + QString PrettyArtist() const { + return artist.isEmpty() ? album_artist : artist; + } + QString PrettyComposer() const { + return composer.isEmpty() ? album_composer : composer; + } CueEntry(QString& file, QString& index, QString& title, QString& artist, - QString& album_artist, QString& album, QString& composer, QString& album_composer, - QString& genre, QString& date) { + QString& album_artist, QString& album, QString& composer, + QString& album_composer, QString& genre, QString& date) { this->file = file; this->index = index; this->title = title; @@ -91,7 +97,8 @@ class CueParser : public ParserBase { } }; - bool UpdateSong(const CueEntry& entry, const QString& next_index, Song* song) const; + bool UpdateSong(const CueEntry& entry, const QString& next_index, + Song* song) const; bool UpdateLastSong(const CueEntry& entry, Song* song) const; QStringList SplitCueLine(const QString& line) const; diff --git a/src/playlistparsers/m3uparser.cpp b/src/playlistparsers/m3uparser.cpp index 53807b379..fd2bf753b 100644 --- a/src/playlistparsers/m3uparser.cpp +++ b/src/playlistparsers/m3uparser.cpp @@ -23,11 +23,10 @@ #include M3UParser::M3UParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) -{ -} + : ParserBase(library, parent) {} -SongList M3UParser::Load(QIODevice* device, const QString& playlist_path, const QDir& dir) const { +SongList M3UParser::Load(QIODevice* device, const QString& playlist_path, + const QDir& dir) const { SongList ret; M3UType type = STANDARD; @@ -79,7 +78,8 @@ SongList M3UParser::Load(QIODevice* device, const QString& playlist_path, const return ret; } -bool M3UParser::ParseMetadata(const QString& line, M3UParser::Metadata* metadata) const { +bool M3UParser::ParseMetadata(const QString& line, + M3UParser::Metadata* metadata) const { // Extended info, eg. // #EXTINF:123,Sample Artist - Sample title QString info = line.section(':', 1); @@ -102,21 +102,23 @@ bool M3UParser::ParseMetadata(const QString& line, M3UParser::Metadata* metadata return true; } -void M3UParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { +void M3UParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { device->write("#EXTM3U\n"); - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (song.url().isEmpty()) { continue; } QString meta = QString("#EXTINF:%1,%2 - %3\n") - .arg(song.length_nanosec() / kNsecPerSec) - .arg(song.artist()).arg(song.title()); + .arg(song.length_nanosec() / kNsecPerSec) + .arg(song.artist()) + .arg(song.title()); device->write(meta.toUtf8()); device->write(URLOrRelativeFilename(song.url(), dir).toUtf8()); device->write("\n"); } } -bool M3UParser::TryMagic(const QByteArray &data) const { +bool M3UParser::TryMagic(const QByteArray& data) const { return data.contains("#EXTM3U") || data.contains("#EXTINF"); } diff --git a/src/playlistparsers/m3uparser.h b/src/playlistparsers/m3uparser.h index 28008007f..431e5728b 100644 --- a/src/playlistparsers/m3uparser.h +++ b/src/playlistparsers/m3uparser.h @@ -28,16 +28,21 @@ class M3UParser : public ParserBase { Q_OBJECT public: - M3UParser(LibraryBackendInterface* library, QObject* parent = 0); + M3UParser(LibraryBackendInterface* library, QObject* parent = nullptr); QString name() const { return "M3U"; } - QStringList file_extensions() const { return QStringList() << "m3u" << "m3u8"; } + QStringList file_extensions() const { + return QStringList() << "m3u" + << "m3u8"; + } QString mime_type() const { return "text/uri-list"; } - bool TryMagic(const QByteArray &data) const; + bool TryMagic(const QByteArray& data) const; - SongList Load(QIODevice* device, const QString& playlist_path = "", const QDir& dir = QDir()) const; - void Save(const SongList &songs, QIODevice* device, const QDir& dir = QDir()) const; + SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const; + void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const; private: enum M3UType { diff --git a/src/playlistparsers/parserbase.cpp b/src/playlistparsers/parserbase.cpp index 7c57fe476..578dbbfd5 100644 --- a/src/playlistparsers/parserbase.cpp +++ b/src/playlistparsers/parserbase.cpp @@ -23,11 +23,8 @@ #include -ParserBase::ParserBase(LibraryBackendInterface* library, QObject *parent) - : QObject(parent), - library_(library) -{ -} +ParserBase::ParserBase(LibraryBackendInterface* library, QObject* parent) + : QObject(parent), library_(library) {} void ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning, const QDir& dir, Song* song) const { @@ -79,22 +76,22 @@ void ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning, } } -Song ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning, const QDir& dir) const { +Song ParserBase::LoadSong(const QString& filename_or_url, qint64 beginning, + const QDir& dir) const { Song song; LoadSong(filename_or_url, beginning, dir, &song); return song; } -QString ParserBase::URLOrRelativeFilename(const QUrl& url, const QDir& dir) const { - if (url.scheme() != "file") - return url.toString(); +QString ParserBase::URLOrRelativeFilename(const QUrl& url, + const QDir& dir) const { + if (url.scheme() != "file") return url.toString(); const QString filename = url.toLocalFile(); if (QDir::isAbsolutePath(filename)) { const QString relative = dir.relativeFilePath(filename); - if (!relative.contains("..")) - return relative; + if (!relative.contains("..")) return relative; } return filename; } diff --git a/src/playlistparsers/parserbase.h b/src/playlistparsers/parserbase.h index cf141a5b3..9b01dd546 100644 --- a/src/playlistparsers/parserbase.h +++ b/src/playlistparsers/parserbase.h @@ -28,8 +28,8 @@ class LibraryBackendInterface; class ParserBase : public QObject { Q_OBJECT -public: - ParserBase(LibraryBackendInterface* library, QObject* parent = 0); + public: + ParserBase(LibraryBackendInterface* library, QObject* parent = nullptr); virtual QString name() const = 0; virtual QStringList file_extensions() const = 0; @@ -37,33 +37,41 @@ public: virtual bool TryMagic(const QByteArray& data) const = 0; - // Loads all songs from playlist found at path 'playlist_path' in directory 'dir'. + // Loads all songs from playlist found at path 'playlist_path' in directory + // 'dir'. // The 'device' argument is an opened and ready to read from represantation of // this playlist. - // This method might not return all of the songs found in the playlist. Any playlist - // parser may decide to leave out some entries if it finds them incomplete or invalid. - // This means that the final resulting SongList should be considered valid (at least + // This method might not return all of the songs found in the playlist. Any + // playlist + // parser may decide to leave out some entries if it finds them incomplete or + // invalid. + // This means that the final resulting SongList should be considered valid (at + // least // from the parser's point of view). - virtual SongList Load(QIODevice* device, const QString& playlist_path = "", const QDir& dir = QDir()) const = 0; - virtual void Save(const SongList& songs, QIODevice* device, const QDir& dir = QDir()) const = 0; + virtual SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const = 0; + virtual void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const = 0; -protected: + protected: // Loads a song. If filename_or_url is a URL (with a scheme other than // "file") then it is set on the song and the song marked as a stream. // If it is a filename or a file:// URL then it is made absolute and canonical // and set as a file:// url on the song. Also sets the song's metadata by // searching in the Library, or loading from the file as a fallback. // This function should always be used when loading a playlist. - Song LoadSong(const QString& filename_or_url, qint64 beginning, const QDir& dir) const; - void LoadSong(const QString& filename_or_url, qint64 beginning, const QDir& dir, Song* song) const; + Song LoadSong(const QString& filename_or_url, qint64 beginning, + const QDir& dir) const; + void LoadSong(const QString& filename_or_url, qint64 beginning, + const QDir& dir, Song* song) const; // If the URL is a file:// URL then returns its path relative to the // directory. Otherwise returns the URL as is. // This function should always be used when saving a playlist. QString URLOrRelativeFilename(const QUrl& url, const QDir& dir) const; -private: + private: LibraryBackendInterface* library_; }; -#endif // PARSERBASE_H +#endif // PARSERBASE_H diff --git a/src/playlistparsers/playlistparser.cpp b/src/playlistparsers/playlistparser.cpp index 5b2f59dab..77d4573f7 100644 --- a/src/playlistparsers/playlistparser.cpp +++ b/src/playlistparsers/playlistparser.cpp @@ -29,9 +29,9 @@ const int PlaylistParser::kMagicSize = 512; -PlaylistParser::PlaylistParser(LibraryBackendInterface* library, QObject *parent) - : QObject(parent) -{ +PlaylistParser::PlaylistParser(LibraryBackendInterface* library, + QObject* parent) + : QObject(parent) { default_parser_ = new XSPFParser(library, this); parsers_ << new M3UParser(library, this); parsers_ << default_parser_; @@ -45,7 +45,7 @@ PlaylistParser::PlaylistParser(LibraryBackendInterface* library, QObject *parent QStringList PlaylistParser::file_extensions() const { QStringList ret; - foreach (ParserBase* parser, parsers_) { + for (ParserBase* parser : parsers_) { ret << parser->file_extensions(); } @@ -56,7 +56,7 @@ QStringList PlaylistParser::file_extensions() const { QString PlaylistParser::filters() const { QStringList filters; QStringList all_extensions; - foreach (ParserBase* parser, parsers_) { + for (ParserBase* parser : parsers_) { filters << FilterForParser(parser, &all_extensions); } @@ -65,13 +65,13 @@ QString PlaylistParser::filters() const { return filters.join(";;"); } -QString PlaylistParser::FilterForParser(const ParserBase *parser, QStringList *all_extensions) const { +QString PlaylistParser::FilterForParser(const ParserBase* parser, + QStringList* all_extensions) const { QStringList extensions; - foreach (const QString& extension, parser->file_extensions()) + for (const QString& extension : parser->file_extensions()) extensions << "*." + extension; - if (all_extensions) - *all_extensions << extensions; + if (all_extensions) *all_extensions << extensions; return tr("%1 playlists (%2)").arg(parser->name(), extensions.join(" ")); } @@ -85,21 +85,20 @@ QString PlaylistParser::default_filter() const { } ParserBase* PlaylistParser::ParserForExtension(const QString& suffix) const { - foreach (ParserBase* p, parsers_) { - if (p->file_extensions().contains(suffix)) - return p; + for (ParserBase* p : parsers_) { + if (p->file_extensions().contains(suffix)) return p; } - return NULL; + return nullptr; } ParserBase* PlaylistParser::ParserForMagic(const QByteArray& data, const QString& mime_type) const { - foreach (ParserBase* p, parsers_) { + for (ParserBase* p : parsers_) { if ((!mime_type.isEmpty() && mime_type == p->mime_type()) || p->TryMagic(data)) return p; } - return NULL; + return nullptr; } SongList PlaylistParser::LoadFromFile(const QString& filename) const { @@ -131,7 +130,8 @@ SongList PlaylistParser::LoadFromDevice(QIODevice* device, return parser->Load(device, path_hint, dir_hint); } -void PlaylistParser::Save(const SongList& songs, const QString& filename) const { +void PlaylistParser::Save(const SongList& songs, + const QString& filename) const { QFileInfo info(filename); // Find a parser that supports this file extension diff --git a/src/playlistparsers/playlistparser.h b/src/playlistparsers/playlistparser.h index b987b8faa..455afb087 100644 --- a/src/playlistparsers/playlistparser.h +++ b/src/playlistparsers/playlistparser.h @@ -29,8 +29,8 @@ class LibraryBackendInterface; class PlaylistParser : public QObject { Q_OBJECT -public: - PlaylistParser(LibraryBackendInterface* library, QObject* parent = 0); + public: + PlaylistParser(LibraryBackendInterface* library, QObject* parent = nullptr); static const int kMagicSize; @@ -45,17 +45,18 @@ public: ParserBase* ParserForExtension(const QString& suffix) const; SongList LoadFromFile(const QString& filename) const; - SongList LoadFromDevice(QIODevice* device, const QString& path_hint = QString(), + SongList LoadFromDevice(QIODevice* device, + const QString& path_hint = QString(), const QDir& dir_hint = QDir()) const; void Save(const SongList& songs, const QString& filename) const; -private: + private: QString FilterForParser(const ParserBase* parser, - QStringList* all_extensions = NULL) const; + QStringList* all_extensions = nullptr) const; -private: + private: QList parsers_; ParserBase* default_parser_; }; -#endif // PLAYLISTPARSER_H +#endif // PLAYLISTPARSER_H diff --git a/src/playlistparsers/plsparser.cpp b/src/playlistparsers/plsparser.cpp index 0c105a89e..f5eb2ce4c 100644 --- a/src/playlistparsers/plsparser.cpp +++ b/src/playlistparsers/plsparser.cpp @@ -23,11 +23,10 @@ #include PLSParser::PLSParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) -{ -} + : ParserBase(library, parent) {} -SongList PLSParser::Load(QIODevice *device, const QString& playlist_path, const QDir &dir) const { +SongList PLSParser::Load(QIODevice* device, const QString& playlist_path, + const QDir& dir) const { QMap songs; QRegExp n_re("\\d+$"); @@ -44,8 +43,7 @@ SongList PLSParser::Load(QIODevice *device, const QString& playlist_path, const Song song = LoadSong(value, 0, dir); // Use the title and length we've already loaded if any - if (!songs[n].title().isEmpty()) - song.set_title(songs[n].title()); + if (!songs[n].title().isEmpty()) song.set_title(songs[n].title()); if (songs[n].length_nanosec() != -1) song.set_length_nanosec(songs[n].length_nanosec()); @@ -63,14 +61,15 @@ SongList PLSParser::Load(QIODevice *device, const QString& playlist_path, const return songs.values(); } -void PLSParser::Save(const SongList &songs, QIODevice *device, const QDir &dir) const { +void PLSParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { QTextStream s(device); s << "[playlist]" << endl; s << "Version=2" << endl; s << "NumberOfEntries=" << songs.count() << endl; int n = 1; - foreach (const Song& song, songs) { + for (const Song& song : songs) { s << "File" << n << "=" << URLOrRelativeFilename(song.url(), dir) << endl; s << "Title" << n << "=" << song.title() << endl; s << "Length" << n << "=" << song.length_nanosec() / kNsecPerSec << endl; diff --git a/src/playlistparsers/plsparser.h b/src/playlistparsers/plsparser.h index 1867baffb..4fc10b6aa 100644 --- a/src/playlistparsers/plsparser.h +++ b/src/playlistparsers/plsparser.h @@ -23,16 +23,18 @@ class PLSParser : public ParserBase { Q_OBJECT -public: - PLSParser(LibraryBackendInterface* library, QObject* parent = 0); + public: + PLSParser(LibraryBackendInterface* library, QObject* parent = nullptr); QString name() const { return "PLS"; } QStringList file_extensions() const { return QStringList() << "pls"; } - bool TryMagic(const QByteArray &data) const; + bool TryMagic(const QByteArray& data) const; - SongList Load(QIODevice* device, const QString& playlist_path = "", const QDir& dir = QDir()) const; - void Save(const SongList& songs, QIODevice* device, const QDir& dir = QDir()) const; + SongList Load(QIODevice* device, const QString& playlist_path = "", + const QDir& dir = QDir()) const; + void Save(const SongList& songs, QIODevice* device, + const QDir& dir = QDir()) const; }; -#endif // PLSPARSER_H +#endif // PLSPARSER_H diff --git a/src/playlistparsers/wplparser.cpp b/src/playlistparsers/wplparser.cpp index 8f53fd181..d4b9ea351 100644 --- a/src/playlistparsers/wplparser.cpp +++ b/src/playlistparsers/wplparser.cpp @@ -22,9 +22,7 @@ #include WplParser::WplParser(LibraryBackendInterface* library, QObject* parent) - : XMLParser(library, parent) -{ -} + : XMLParser(library, parent) {} bool WplParser::TryMagic(const QByteArray& data) const { return data.contains(""); @@ -89,7 +87,8 @@ void WplParser::Save(const SongList& songs, QIODevice* device, { StreamElement head("head", &writer); - WriteMeta("Generator", "Clementine -- " CLEMENTINE_VERSION_DISPLAY, &writer); + WriteMeta("Generator", "Clementine -- " CLEMENTINE_VERSION_DISPLAY, + &writer); WriteMeta("ItemCount", QString::number(songs.count()), &writer); } @@ -97,7 +96,7 @@ void WplParser::Save(const SongList& songs, QIODevice* device, StreamElement body("body", &writer); { StreamElement seq("seq", &writer); - foreach (const Song& song, songs) { + for (const Song& song : songs) { writer.writeStartElement("media"); writer.writeAttribute("src", URLOrRelativeFilename(song.url(), dir)); writer.writeEndElement(); diff --git a/src/playlistparsers/wplparser.h b/src/playlistparsers/wplparser.h index 54d02d5ca..2b0bd3ec1 100644 --- a/src/playlistparsers/wplparser.h +++ b/src/playlistparsers/wplparser.h @@ -22,7 +22,7 @@ class WplParser : public XMLParser { public: - WplParser(LibraryBackendInterface* library, QObject* parent = 0); + WplParser(LibraryBackendInterface* library, QObject* parent = nullptr); QString name() const { return "WPL"; } QStringList file_extensions() const { return QStringList() << "wpl"; } @@ -34,11 +34,11 @@ class WplParser : public XMLParser { const QDir& dir) const; void Save(const SongList& songs, QIODevice* device, const QDir& dir) const; -private: + private: void ParseSeq(const QDir& dir, QXmlStreamReader* reader, SongList* songs) const; void WriteMeta(const QString& name, const QString& content, QXmlStreamWriter* writer) const; }; -#endif // WPLPARSER_H +#endif // WPLPARSER_H diff --git a/src/playlistparsers/xmlparser.cpp b/src/playlistparsers/xmlparser.cpp index 68d4d59d5..791869eb9 100644 --- a/src/playlistparsers/xmlparser.cpp +++ b/src/playlistparsers/xmlparser.cpp @@ -25,5 +25,4 @@ #include XMLParser::XMLParser(LibraryBackendInterface* library, QObject* parent) - : ParserBase(library, parent) { -} + : ParserBase(library, parent) {} diff --git a/src/playlistparsers/xmlparser.h b/src/playlistparsers/xmlparser.h index ee1081f85..193e4d27c 100644 --- a/src/playlistparsers/xmlparser.h +++ b/src/playlistparsers/xmlparser.h @@ -23,8 +23,6 @@ #include #include -#include - class QDomDocument; class QDomNode; @@ -32,18 +30,18 @@ class XMLParser : public ParserBase { protected: XMLParser(LibraryBackendInterface* library, QObject* parent); - class StreamElement : public boost::noncopyable { + class StreamElement { public: - StreamElement(const QString& name, QXmlStreamWriter* stream) : stream_(stream) { + StreamElement(const QString& name, QXmlStreamWriter* stream) + : stream_(stream) { stream->writeStartElement(name); } - ~StreamElement() { - stream_->writeEndElement(); - } + ~StreamElement() { stream_->writeEndElement(); } private: QXmlStreamWriter* stream_; + Q_DISABLE_COPY(StreamElement); }; }; diff --git a/src/playlistparsers/xspfparser.cpp b/src/playlistparsers/xspfparser.cpp index f394dce84..f40ce8e32 100644 --- a/src/playlistparsers/xspfparser.cpp +++ b/src/playlistparsers/xspfparser.cpp @@ -27,11 +27,9 @@ #include XSPFParser::XSPFParser(LibraryBackendInterface* library, QObject* parent) - : XMLParser(library, parent) -{ -} + : XMLParser(library, parent) {} -SongList XSPFParser::Load(QIODevice *device, const QString& playlist_path, +SongList XSPFParser::Load(QIODevice* device, const QString& playlist_path, const QDir& dir) const { SongList ret; @@ -102,7 +100,9 @@ return_song: return song; } -void XSPFParser::Save(const SongList& songs, QIODevice* device, const QDir&) const { +void XSPFParser::Save(const SongList& songs, QIODevice* device, + const QDir& dir) const { + QFileInfo file; QXmlStreamWriter writer(device); writer.setAutoFormatting(true); writer.setAutoFormattingIndent(2); @@ -112,9 +112,18 @@ void XSPFParser::Save(const SongList& songs, QIODevice* device, const QDir&) con writer.writeDefaultNamespace("http://xspf.org/ns/0/"); StreamElement tracklist("trackList", &writer); - foreach (const Song& song, songs) { + for (const Song& song : songs) { + QString filename_or_url; + if (song.url().scheme() == "file") { + // Make the filename relative to the directory we're saving the playlist. + filename_or_url = dir.relativeFilePath( + QFileInfo(song.url().toLocalFile()).absoluteFilePath()); + } else { + filename_or_url = song.url().toEncoded(); + } + StreamElement track("track", &writer); - writer.writeTextElement("location", song.url().toString()); + writer.writeTextElement("location", filename_or_url); writer.writeTextElement("title", song.title()); if (!song.artist().isEmpty()) { writer.writeTextElement("creator", song.artist()); @@ -123,22 +132,37 @@ void XSPFParser::Save(const SongList& songs, QIODevice* device, const QDir&) con writer.writeTextElement("album", song.album()); } if (song.length_nanosec() != -1) { - writer.writeTextElement("duration", QString::number(song.length_nanosec() / kNsecPerMsec)); + writer.writeTextElement( + "duration", QString::number(song.length_nanosec() / kNsecPerMsec)); } - QString art = song.art_manual().isEmpty() ? song.art_automatic() : song.art_manual(); + QString art = + song.art_manual().isEmpty() ? song.art_automatic() : song.art_manual(); // Ignore images that are in our resource bundle. if (!art.startsWith(":") && !art.isEmpty()) { - // Convert local files to URLs. + QString art_filename; if (!art.contains("://")) { - art = QUrl::fromLocalFile(art).toString(); + art_filename = art; + } else if (QUrl(art).scheme() == "file") { + art_filename = QUrl(art).toLocalFile(); } - writer.writeTextElement("image", art); + + if (!art_filename.isEmpty()) { + // Make this filename relative to the directory we're saving the + // playlist. + art_filename = dir.relativeFilePath( + QFileInfo(art_filename).absoluteFilePath()); + } else { + // Just use whatever URL was in the Song. + art_filename = art; + } + + writer.writeTextElement("image", art_filename); } } writer.writeEndDocument(); } -bool XSPFParser::TryMagic(const QByteArray &data) const { +bool XSPFParser::TryMagic(const QByteArray& data) const { return data.contains(" - + 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 . */ @@ -26,17 +26,14 @@ #include AddPodcastByUrl::AddPodcastByUrl(Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - ui_(new Ui_AddPodcastByUrl), - loader_(new PodcastUrlLoader(this)) -{ + : AddPodcastPage(app, parent), + ui_(new Ui_AddPodcastByUrl), + loader_(new PodcastUrlLoader(this)) { ui_->setupUi(this); connect(ui_->go, SIGNAL(clicked()), SLOT(GoClicked())); } -AddPodcastByUrl::~AddPodcastByUrl() { - delete ui_; -} +AddPodcastByUrl::~AddPodcastByUrl() { delete ui_; } void AddPodcastByUrl::SetUrlAndGo(const QUrl& url) { ui_->url->setText(url.toString()); @@ -56,9 +53,8 @@ void AddPodcastByUrl::GoClicked() { PodcastUrlLoaderReply* reply = loader_->Load(ui_->url->text()); ui_->url->setText(reply->url().toString()); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(RequestFinished(PodcastUrlLoaderReply*)), - reply); + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(RequestFinished(PodcastUrlLoaderReply*)), reply); } void AddPodcastByUrl::RequestFinished(PodcastUrlLoaderReply* reply) { @@ -73,29 +69,30 @@ void AddPodcastByUrl::RequestFinished(PodcastUrlLoaderReply* reply) { } switch (reply->result_type()) { - case PodcastUrlLoaderReply::Type_Podcast: - foreach (const Podcast& podcast, reply->podcast_results()) { - model()->appendRow(model()->CreatePodcastItem(podcast)); - } - break; + case PodcastUrlLoaderReply::Type_Podcast: + for (const Podcast& podcast : reply->podcast_results()) { + model()->appendRow(model()->CreatePodcastItem(podcast)); + } + break; - case PodcastUrlLoaderReply::Type_Opml: - model()->CreateOpmlContainerItems(reply->opml_results(), model()->invisibleRootItem()); - break; + case PodcastUrlLoaderReply::Type_Opml: + model()->CreateOpmlContainerItems(reply->opml_results(), + model()->invisibleRootItem()); + break; } } void AddPodcastByUrl::Show() { ui_->url->setFocus(); - if (!ui_->url->text().isEmpty()) { - return; - } const QClipboard* clipboard = QApplication::clipboard(); - foreach (const QString& contents, QStringList() << clipboard->text(QClipboard::Clipboard) - << clipboard->text(QClipboard::Selection)) { - if (contents.contains("://")) { - ui_->url->setText(contents); + QStringList contents; + contents << clipboard->text(QClipboard::Selection) + << clipboard->text(QClipboard::Clipboard); + + for (const QString& content : contents) { + if (content.contains("://")) { + ui_->url->setText(content); return; } } diff --git a/src/podcasts/addpodcastbyurl.h b/src/podcasts/addpodcastbyurl.h index 2da080874..a9a3e2fbc 100644 --- a/src/podcasts/addpodcastbyurl.h +++ b/src/podcasts/addpodcastbyurl.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef ADDPODCASTBYURL_H -#define ADDPODCASTBYURL_H +#ifndef PODCASTS_ADDPODCASTBYURL_H_ +#define PODCASTS_ADDPODCASTBYURL_H_ #include "addpodcastpage.h" @@ -30,9 +30,9 @@ class QUrl; class AddPodcastByUrl : public AddPodcastPage { Q_OBJECT - -public: - AddPodcastByUrl(Application* app, QWidget* parent = 0); + + public: + AddPodcastByUrl(Application* app, QWidget* parent = nullptr); ~AddPodcastByUrl(); void Show(); @@ -40,13 +40,13 @@ public: void SetOpml(const OpmlContainer& opml); void SetUrlAndGo(const QUrl& url); -private slots: + private slots: void GoClicked(); void RequestFinished(PodcastUrlLoaderReply* reply); -private: + private: Ui_AddPodcastByUrl* ui_; PodcastUrlLoader* loader_; }; -#endif // ADDPODCASTBYURL_H +#endif // PODCASTS_ADDPODCASTBYURL_H_ diff --git a/src/podcasts/addpodcastdialog.cpp b/src/podcasts/addpodcastdialog.cpp index 97677e980..b18b4e51c 100644 --- a/src/podcasts/addpodcastdialog.cpp +++ b/src/podcasts/addpodcastdialog.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -32,14 +32,14 @@ #include #include -const char* AddPodcastDialog::kBbcOpmlUrl = "http://www.bbc.co.uk/podcasts.opml"; +const char* AddPodcastDialog::kBbcOpmlUrl = + "http://www.bbc.co.uk/podcasts.opml"; AddPodcastDialog::AddPodcastDialog(Application* app, QWidget* parent) - : QDialog(parent), - app_(app), - ui_(new Ui_AddPodcastDialog), - last_opml_path_(QDir::homePath()) -{ + : QDialog(parent), + app_(app), + ui_(new Ui_AddPodcastDialog), + last_opml_path_(QDir::homePath()) { ui_->setupUi(this); ui_->details->SetApplication(app); ui_->results->SetExpandOnReset(false); @@ -48,29 +48,33 @@ AddPodcastDialog::AddPodcastDialog(Application* app, QWidget* parent) fader_ = new WidgetFadeHelper(ui_->details_scroll_area); - connect(ui_->provider_list, SIGNAL(currentRowChanged(int)), SLOT(ChangePage(int))); + connect(ui_->provider_list, SIGNAL(currentRowChanged(int)), + SLOT(ChangePage(int))); connect(ui_->details, SIGNAL(LoadingFinished()), fader_, SLOT(StartFade())); - connect(ui_->results, SIGNAL(doubleClicked(QModelIndex)), SLOT(PodcastDoubleClicked(QModelIndex))); + connect(ui_->results, SIGNAL(doubleClicked(QModelIndex)), + SLOT(PodcastDoubleClicked(QModelIndex))); // Create Add and Remove Podcast buttons - add_button_ = new QPushButton(IconLoader::Load("list-add"), tr("Add Podcast"), this); + add_button_ = + new QPushButton(IconLoader::Load("list-add"), tr("Add Podcast"), this); add_button_->setEnabled(false); connect(add_button_, SIGNAL(clicked()), SLOT(AddPodcast())); ui_->button_box->addButton(add_button_, QDialogButtonBox::ActionRole); - remove_button_ = new QPushButton(IconLoader::Load("list-remove"), tr("Unsubscribe"), this); + remove_button_ = + new QPushButton(IconLoader::Load("list-remove"), tr("Unsubscribe"), this); remove_button_->setEnabled(false); connect(remove_button_, SIGNAL(clicked()), SLOT(RemovePodcast())); ui_->button_box->addButton(remove_button_, QDialogButtonBox::ActionRole); QPushButton* settings_button = new QPushButton( - IconLoader::Load("configure"), tr("Configure podcasts..."), this); + IconLoader::Load("configure"), tr("Configure podcasts..."), this); connect(settings_button, SIGNAL(clicked()), SLOT(OpenSettingsPage())); ui_->button_box->addButton(settings_button, QDialogButtonBox::ResetRole); // Create an Open OPML file button QPushButton* open_opml_button = new QPushButton( - IconLoader::Load("document-open"), tr("Open OPML file..."), this); + IconLoader::Load("document-open"), tr("Open OPML file..."), this); connect(open_opml_button, SIGNAL(clicked()), this, SLOT(OpenOPMLFile())); ui_->button_box->addButton(open_opml_button, QDialogButtonBox::ResetRole); @@ -86,9 +90,7 @@ AddPodcastDialog::AddPodcastDialog(Application* app, QWidget* parent) ui_->provider_list->setCurrentRow(0); } -AddPodcastDialog::~AddPodcastDialog() { - delete ui_; -} +AddPodcastDialog::~AddPodcastDialog() { delete ui_; } void AddPodcastDialog::ShowWithUrl(const QUrl& url) { by_url_page_->SetUrlAndGo(url); @@ -107,7 +109,8 @@ void AddPodcastDialog::AddPage(AddPodcastPage* page) { page_is_busy_.append(false); ui_->stack->addWidget(page); - new QListWidgetItem(page->windowIcon(), page->windowTitle(), ui_->provider_list); + new QListWidgetItem(page->windowIcon(), page->windowTitle(), + ui_->provider_list); connect(page, SIGNAL(Busy(bool)), SLOT(PageBusyChanged(bool))); } @@ -120,9 +123,10 @@ void AddPodcastDialog::ChangePage(int index) { ui_->results->setModel(page->model()); ui_->results_stack->setCurrentWidget( - page_is_busy_[index] ? ui_->busy_page : ui_->results_page); + page_is_busy_[index] ? ui_->busy_page : ui_->results_page); - connect(ui_->results->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), + connect(ui_->results->selectionModel(), + SIGNAL(currentRowChanged(QModelIndex, QModelIndex)), SLOT(ChangePodcast(QModelIndex))); ChangePodcast(QModelIndex()); CurrentPageBusyChanged(page_is_busy_[index]); @@ -169,8 +173,7 @@ void AddPodcastDialog::ChangePodcast(const QModelIndex& current) { void AddPodcastDialog::PageBusyChanged(bool busy) { const int index = pages_.indexOf(qobject_cast(sender())); - if (index == -1) - return; + if (index == -1) return; page_is_busy_[index] = busy; @@ -180,7 +183,8 @@ void AddPodcastDialog::PageBusyChanged(bool busy) { } void AddPodcastDialog::CurrentPageBusyChanged(bool busy) { - ui_->results_stack->setCurrentWidget(busy ? ui_->busy_page : ui_->results_page); + ui_->results_stack->setCurrentWidget(busy ? ui_->busy_page + : ui_->results_page); ui_->stack->setDisabled(busy); QTimer::singleShot(0, this, SLOT(SelectFirstPodcast())); @@ -188,10 +192,11 @@ void AddPodcastDialog::CurrentPageBusyChanged(bool busy) { void AddPodcastDialog::SelectFirstPodcast() { // Select the first item if there was one. - const PodcastDiscoveryModel* model = pages_[ui_->provider_list->currentRow()]->model(); + const PodcastDiscoveryModel* model = + pages_[ui_->provider_list->currentRow()]->model(); if (model->rowCount() > 0) { ui_->results->selectionModel()->setCurrentIndex( - model->index(0, 0), QItemSelectionModel::ClearAndSelect); + model->index(0, 0), QItemSelectionModel::ClearAndSelect); } } @@ -209,7 +214,7 @@ void AddPodcastDialog::PodcastDoubleClicked(const QModelIndex& index) { current_podcast_ = podcast_variant.value(); app_->podcast_backend()->Subscribe(¤t_podcast_); - + add_button_->setEnabled(false); remove_button_->setEnabled(true); } @@ -227,7 +232,7 @@ void AddPodcastDialog::OpenSettingsPage() { void AddPodcastDialog::OpenOPMLFile() { const QString filename = QFileDialog::getOpenFileName( - this, tr("Open OPML file"), last_opml_path_, "OPML files (*.opml)"); + this, tr("Open OPML file"), last_opml_path_, "OPML files (*.opml)"); if (filename.isEmpty()) { return; diff --git a/src/podcasts/addpodcastdialog.h b/src/podcasts/addpodcastdialog.h index fbbf1fc18..283abac72 100644 --- a/src/podcasts/addpodcastdialog.h +++ b/src/podcasts/addpodcastdialog.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef ADDPODCASTDIALOG_H -#define ADDPODCASTDIALOG_H +#ifndef PODCASTS_ADDPODCASTDIALOG_H_ +#define PODCASTS_ADDPODCASTDIALOG_H_ #include "podcast.h" @@ -33,9 +33,9 @@ class QModelIndex; class AddPodcastDialog : public QDialog { Q_OBJECT - -public: - AddPodcastDialog(Application* app, QWidget* parent = 0); + + public: + AddPodcastDialog(Application* app, QWidget* parent = nullptr); ~AddPodcastDialog(); static const char* kBbcOpmlUrl; @@ -46,7 +46,7 @@ public: void ShowWithUrl(const QUrl& url); void ShowWithOpml(const OpmlContainer& opml); -private slots: + private slots: void OpenSettingsPage(); void AddPodcast(); void PodcastDoubleClicked(const QModelIndex& index); @@ -61,10 +61,10 @@ private slots: void OpenOPMLFile(); -private: + private: void AddPage(AddPodcastPage* page); - -private: + + private: Application* app_; Ui_AddPodcastDialog* ui_; @@ -82,4 +82,4 @@ private: QString last_opml_path_; }; -#endif // ADDPODCASTDIALOG_H +#endif // PODCASTS_ADDPODCASTDIALOG_H_ diff --git a/src/podcasts/addpodcastpage.cpp b/src/podcasts/addpodcastpage.cpp index f9076dfed..d27eb01fa 100644 --- a/src/podcasts/addpodcastpage.cpp +++ b/src/podcasts/addpodcastpage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -19,10 +19,7 @@ #include "podcastdiscoverymodel.h" AddPodcastPage::AddPodcastPage(Application* app, QWidget* parent) - : QWidget(parent), - model_(new PodcastDiscoveryModel(app, this)) -{ -} + : QWidget(parent), model_(new PodcastDiscoveryModel(app, this)) {} void AddPodcastPage::SetModel(PodcastDiscoveryModel* model) { delete model_; diff --git a/src/podcasts/addpodcastpage.h b/src/podcasts/addpodcastpage.h index 79736545b..083c33335 100644 --- a/src/podcasts/addpodcastpage.h +++ b/src/podcasts/addpodcastpage.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef ADDPODCASTPAGE_H -#define ADDPODCASTPAGE_H +#ifndef PODCASTS_ADDPODCASTPAGE_H_ +#define PODCASTS_ADDPODCASTPAGE_H_ #include @@ -26,22 +26,22 @@ class PodcastDiscoveryModel; class AddPodcastPage : public QWidget { Q_OBJECT -public: - AddPodcastPage(Application* app, QWidget* parent = 0); + public: + AddPodcastPage(Application* app, QWidget* parent = nullptr); PodcastDiscoveryModel* model() const { return model_; } virtual bool has_visible_widget() const { return true; } virtual void Show() {} -signals: + signals: void Busy(bool busy); -protected: + protected: void SetModel(PodcastDiscoveryModel* model); -private: + private: PodcastDiscoveryModel* model_; }; -#endif // ADDPODCASTPAGE_H +#endif // PODCASTS_ADDPODCASTPAGE_H_ diff --git a/src/podcasts/fixedopmlpage.cpp b/src/podcasts/fixedopmlpage.cpp index 6ec42b041..df750d9a6 100644 --- a/src/podcasts/fixedopmlpage.cpp +++ b/src/podcasts/fixedopmlpage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,11 +25,10 @@ FixedOpmlPage::FixedOpmlPage(const QUrl& opml_url, const QString& title, const QIcon& icon, Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - loader_(new PodcastUrlLoader(this)), - opml_url_(opml_url), - done_initial_load_(false) -{ + : AddPodcastPage(app, parent), + loader_(new PodcastUrlLoader(this)), + opml_url_(opml_url), + done_initial_load_(false) { setWindowTitle(title); setWindowIcon(icon); } @@ -40,9 +39,8 @@ void FixedOpmlPage::Show() { done_initial_load_ = true; PodcastUrlLoaderReply* reply = loader_->Load(opml_url_); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(LoadFinished(PodcastUrlLoaderReply*)), - reply); + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(LoadFinished(PodcastUrlLoaderReply*)), reply); } } @@ -57,14 +55,15 @@ void FixedOpmlPage::LoadFinished(PodcastUrlLoaderReply* reply) { } switch (reply->result_type()) { - case PodcastUrlLoaderReply::Type_Podcast: - foreach (const Podcast& podcast, reply->podcast_results()) { - model()->appendRow(model()->CreatePodcastItem(podcast)); - } - break; + case PodcastUrlLoaderReply::Type_Podcast: + for (const Podcast& podcast : reply->podcast_results()) { + model()->appendRow(model()->CreatePodcastItem(podcast)); + } + break; - case PodcastUrlLoaderReply::Type_Opml: - model()->CreateOpmlContainerItems(reply->opml_results(), model()->invisibleRootItem()); - break; + case PodcastUrlLoaderReply::Type_Opml: + model()->CreateOpmlContainerItems(reply->opml_results(), + model()->invisibleRootItem()); + break; } } diff --git a/src/podcasts/fixedopmlpage.h b/src/podcasts/fixedopmlpage.h index af0315079..aa91aa5bc 100644 --- a/src/podcasts/fixedopmlpage.h +++ b/src/podcasts/fixedopmlpage.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef FIXEDOPMLPAGE_H -#define FIXEDOPMLPAGE_H +#ifndef PODCASTS_FIXEDOPMLPAGE_H_ +#define PODCASTS_FIXEDOPMLPAGE_H_ #include "addpodcastpage.h" @@ -28,21 +28,21 @@ class PodcastUrlLoaderReply; class FixedOpmlPage : public AddPodcastPage { Q_OBJECT -public: + public: FixedOpmlPage(const QUrl& opml_url, const QString& title, const QIcon& icon, - Application* app, QWidget* parent = 0); + Application* app, QWidget* parent = nullptr); bool has_visible_widget() const { return false; } void Show(); -private slots: + private slots: void LoadFinished(PodcastUrlLoaderReply* reply); -private: + private: PodcastUrlLoader* loader_; QUrl opml_url_; bool done_initial_load_; }; -#endif // FIXEDOPMLPAGE_H +#endif // PODCASTS_FIXEDOPMLPAGE_H_ diff --git a/src/podcasts/gpoddersearchpage.cpp b/src/podcasts/gpoddersearchpage.cpp index bf9f430e6..58e75eedc 100644 --- a/src/podcasts/gpoddersearchpage.cpp +++ b/src/podcasts/gpoddersearchpage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -25,11 +25,10 @@ #include GPodderSearchPage::GPodderSearchPage(Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - ui_(new Ui_GPodderSearchPage), - network_(new NetworkAccessManager(this)), - api_(new mygpo::ApiRequest(network_)) -{ + : AddPodcastPage(app, parent), + ui_(new Ui_GPodderSearchPage), + network_(new NetworkAccessManager(this)), + api_(new mygpo::ApiRequest(network_)) { ui_->setupUi(this); connect(ui_->search, SIGNAL(clicked()), SLOT(SearchClicked())); } @@ -43,15 +42,12 @@ void GPodderSearchPage::SearchClicked() { emit Busy(true); mygpo::PodcastListPtr list(api_->search(ui_->query->text())); - NewClosure(list, SIGNAL(finished()), - this, SLOT(SearchFinished(mygpo::PodcastListPtr)), - list); - NewClosure(list, SIGNAL(parseError()), - this, SLOT(SearchFailed(mygpo::PodcastListPtr)), - list); - NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(SearchFailed(mygpo::PodcastListPtr)), - list); + NewClosure(list, SIGNAL(finished()), this, + SLOT(SearchFinished(mygpo::PodcastListPtr)), list); + NewClosure(list, SIGNAL(parseError()), this, + SLOT(SearchFailed(mygpo::PodcastListPtr)), list); + NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)), this, + SLOT(SearchFailed(mygpo::PodcastListPtr)), list); } void GPodderSearchPage::SearchFinished(mygpo::PodcastListPtr list) { @@ -59,7 +55,7 @@ void GPodderSearchPage::SearchFinished(mygpo::PodcastListPtr list) { model()->clear(); - foreach (mygpo::PodcastPtr gpo_podcast, list->list()) { + for (mygpo::PodcastPtr gpo_podcast : list->list()) { Podcast podcast; podcast.InitFromGpo(gpo_podcast.data()); @@ -73,10 +69,10 @@ void GPodderSearchPage::SearchFailed(mygpo::PodcastListPtr list) { model()->clear(); if (QMessageBox::warning( - NULL, tr("Failed to fetch podcasts"), - tr("There was a problem communicating with gpodder.net"), - QMessageBox::Retry | QMessageBox::Close, - QMessageBox::Retry) != QMessageBox::Retry) { + nullptr, tr("Failed to fetch podcasts"), + tr("There was a problem communicating with gpodder.net"), + QMessageBox::Retry | QMessageBox::Close, + QMessageBox::Retry) != QMessageBox::Retry) { return; } @@ -84,6 +80,4 @@ void GPodderSearchPage::SearchFailed(mygpo::PodcastListPtr list) { SearchClicked(); } -void GPodderSearchPage::Show() { - ui_->query->setFocus(); -} +void GPodderSearchPage::Show() { ui_->query->setFocus(); } diff --git a/src/podcasts/gpoddersearchpage.h b/src/podcasts/gpoddersearchpage.h index 02dc750a2..b3a477d64 100644 --- a/src/podcasts/gpoddersearchpage.h +++ b/src/podcasts/gpoddersearchpage.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef GPODDERSEARCHPAGE_H -#define GPODDERSEARCHPAGE_H +#ifndef PODCASTS_GPODDERSEARCHPAGE_H_ +#define PODCASTS_GPODDERSEARCHPAGE_H_ #include "addpodcastpage.h" @@ -29,23 +29,22 @@ class Ui_GPodderSearchPage; class GPodderSearchPage : public AddPodcastPage { Q_OBJECT -public: - GPodderSearchPage(Application* app, QWidget* parent = 0); + public: + GPodderSearchPage(Application* app, QWidget* parent = nullptr); ~GPodderSearchPage(); void Show(); -private slots: + private slots: void SearchClicked(); void SearchFinished(mygpo::PodcastListPtr list); void SearchFailed(mygpo::PodcastListPtr list); -private: + private: Ui_GPodderSearchPage* ui_; QNetworkAccessManager* network_; mygpo::ApiRequest* api_; - }; -#endif // GPODDERSEARCHPAGE_H +#endif // PODCASTS_GPODDERSEARCHPAGE_H_ diff --git a/src/podcasts/gpoddersync.cpp b/src/podcasts/gpoddersync.cpp index 4110f56cb..fb6b71cf1 100644 --- a/src/podcasts/gpoddersync.cpp +++ b/src/podcasts/gpoddersync.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -33,25 +33,27 @@ #include const char* GPodderSync::kSettingsGroup = "Podcasts"; -const int GPodderSync::kFlushUpdateQueueDelay = 30 * kMsecPerSec; // 30 seconds -const int GPodderSync::kGetUpdatesInterval = 30*60 * kMsecPerSec; // 30 minutes +const int GPodderSync::kFlushUpdateQueueDelay = 30 * kMsecPerSec; // 30 seconds +const int GPodderSync::kGetUpdatesInterval = + 30 * 60 * kMsecPerSec; // 30 minutes GPodderSync::GPodderSync(Application* app, QObject* parent) - : QObject(parent), - app_(app), - network_(new NetworkAccessManager(this)), - backend_(app_->podcast_backend()), - loader_(new PodcastUrlLoader(this)), - get_updates_timer_(new QTimer(this)), - flush_queue_timer_(new QTimer(this)), - flushing_queue_(false) -{ + : QObject(parent), + app_(app), + network_(new NetworkAccessManager(this)), + backend_(app_->podcast_backend()), + loader_(new PodcastUrlLoader(this)), + get_updates_timer_(new QTimer(this)), + flush_queue_timer_(new QTimer(this)), + flushing_queue_(false) { ReloadSettings(); LoadQueue(); connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); - connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), SLOT(SubscriptionAdded(Podcast))); - connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), SLOT(SubscriptionRemoved(Podcast))); + connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), + SLOT(SubscriptionAdded(Podcast))); + connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), + SLOT(SubscriptionRemoved(Podcast))); get_updates_timer_->setInterval(kGetUpdatesInterval); connect(get_updates_timer_, SIGNAL(timeout()), SLOT(GetUpdatesNow())); @@ -67,17 +69,17 @@ GPodderSync::GPodderSync(Application* app, QObject* parent) } } -GPodderSync::~GPodderSync() { -} +GPodderSync::~GPodderSync() {} QString GPodderSync::DeviceId() { - return QString("%1-%2").arg(qApp->applicationName(), - QHostInfo::localHostName()).toLower(); + return QString("%1-%2") + .arg(qApp->applicationName(), QHostInfo::localHostName()) + .toLower(); } QString GPodderSync::DefaultDeviceName() { - return tr("%1 on %2").arg(qApp->applicationName(), - QHostInfo::localHostName()); + return tr("%1 on %2") + .arg(qApp->applicationName(), QHostInfo::localHostName()); } bool GPodderSync::is_logged_in() const { @@ -97,22 +99,22 @@ void GPodderSync::ReloadSettings() { } } -QNetworkReply* GPodderSync::Login(const QString& username, const QString& password, +QNetworkReply* GPodderSync::Login(const QString& username, + const QString& password, const QString& device_name) { api_.reset(new mygpo::ApiRequest(username, password, network_)); QNetworkReply* reply = api_->renameDevice( - username, DeviceId(), device_name, - Utilities::IsLaptop() ? mygpo::Device::LAPTOP - : mygpo::Device::DESKTOP); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(LoginFinished(QNetworkReply*,QString,QString)), - reply, username, password); + username, DeviceId(), device_name, + Utilities::IsLaptop() ? mygpo::Device::LAPTOP : mygpo::Device::DESKTOP); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(LoginFinished(QNetworkReply*, QString, QString)), reply, + username, password); return reply; } -void GPodderSync::LoginFinished(QNetworkReply* reply, - const QString& username, const QString& password) { +void GPodderSync::LoginFinished(QNetworkReply* reply, const QString& username, + const QString& password) { reply->deleteLater(); if (reply->error() == QNetworkReply::NoError) { @@ -141,24 +143,21 @@ void GPodderSync::Logout() { } void GPodderSync::GetUpdatesNow() { - if (!is_logged_in()) - return; + if (!is_logged_in()) return; qlonglong timestamp = 0; if (last_successful_get_.isValid()) { timestamp = last_successful_get_.toTime_t(); } - mygpo::DeviceUpdatesPtr reply(api_->deviceUpdates(username_, DeviceId(), timestamp)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr)), - reply); - NewClosure(reply, SIGNAL(parseError()), - this, SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr)), - reply); - NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr)), - reply); + mygpo::DeviceUpdatesPtr reply( + api_->deviceUpdates(username_, DeviceId(), timestamp)); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr)), reply); + NewClosure(reply, SIGNAL(parseError()), this, + SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr)), reply); + NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)), this, + SLOT(DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr)), reply); } void GPodderSync::DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr reply) { @@ -169,18 +168,19 @@ void GPodderSync::DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr reply) { // Remember episode actions for each podcast, so when we add a new podcast // we can apply the actions immediately. QMap > episodes_by_podcast; - foreach (mygpo::EpisodePtr episode, reply->updateList()) { + for (mygpo::EpisodePtr episode : reply->updateList()) { episodes_by_podcast[episode->podcastUrl()].append(episode); } - foreach (mygpo::PodcastPtr podcast, reply->addList()) { + for (mygpo::PodcastPtr podcast : reply->addList()) { const QUrl url(podcast->url()); // Are we subscribed to this podcast already? Podcast existing_podcast = backend_->GetSubscriptionByUrl(url); if (existing_podcast.is_valid()) { // Just apply actions to this existing podcast - ApplyActions(episodes_by_podcast[url], existing_podcast.mutable_episodes()); + ApplyActions(episodes_by_podcast[url], + existing_podcast.mutable_episodes()); backend_->UpdateEpisodes(existing_podcast.episodes()); continue; } @@ -188,13 +188,14 @@ void GPodderSync::DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr reply) { // Start loading the podcast. Remember actions and apply them after we // have a list of the episodes. PodcastUrlLoaderReply* loader_reply = loader_->Load(url); - NewClosure(loader_reply, SIGNAL(Finished(bool)), - this, SLOT(NewPodcastLoaded(PodcastUrlLoaderReply*,QUrl,QList)), + NewClosure(loader_reply, SIGNAL(Finished(bool)), this, + SLOT(NewPodcastLoaded(PodcastUrlLoaderReply*, QUrl, + QList)), loader_reply, url, episodes_by_podcast[url]); } // Unsubscribe from podcasts that were removed. - foreach (const QUrl& url, reply->removeList()) { + for (const QUrl& url : reply->removeList()) { backend_->Unsubscribe(backend_->GetSubscriptionByUrl(url)); } @@ -205,7 +206,8 @@ void GPodderSync::DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr reply) { s.setValue("gpodder_last_get", last_successful_get_); } -void GPodderSync::NewPodcastLoaded(PodcastUrlLoaderReply* reply, const QUrl& url, +void GPodderSync::NewPodcastLoaded(PodcastUrlLoaderReply* reply, + const QUrl& url, const QList& actions) { reply->deleteLater(); @@ -221,7 +223,7 @@ void GPodderSync::NewPodcastLoaded(PodcastUrlLoaderReply* reply, const QUrl& url } // Apply the actions to the episodes in the podcast. - foreach (Podcast podcast, reply->podcast_results()) { + for (Podcast podcast : reply->podcast_results()) { ApplyActions(actions, podcast.mutable_episodes()); // Add the subscription @@ -229,23 +231,23 @@ void GPodderSync::NewPodcastLoaded(PodcastUrlLoaderReply* reply, const QUrl& url } } -void GPodderSync::ApplyActions(const QList >& actions, - PodcastEpisodeList* episodes) { - for (PodcastEpisodeList::iterator it = episodes->begin() ; - it != episodes->end() ; ++it) { +void GPodderSync::ApplyActions( + const QList >& actions, + PodcastEpisodeList* episodes) { + for (PodcastEpisodeList::iterator it = episodes->begin(); + it != episodes->end(); ++it) { // Find an action for this episode - foreach (mygpo::EpisodePtr action, actions) { - if (action->url() != it->url()) - continue; + for (mygpo::EpisodePtr action : actions) { + if (action->url() != it->url()) continue; switch (action->status()) { - case mygpo::Episode::PLAY: - case mygpo::Episode::DOWNLOAD: - it->set_listened(true); - break; + case mygpo::Episode::PLAY: + case mygpo::Episode::DOWNLOAD: + it->set_listened(true); + break; - default: - break; + default: + break; } break; } @@ -253,8 +255,7 @@ void GPodderSync::ApplyActions(const QList >& act } void GPodderSync::SubscriptionAdded(const Podcast& podcast) { - if (!is_logged_in()) - return; + if (!is_logged_in()) return; const QUrl& url = podcast.url(); @@ -266,8 +267,7 @@ void GPodderSync::SubscriptionAdded(const Podcast& podcast) { } void GPodderSync::SubscriptionRemoved(const Podcast& podcast) { - if (!is_logged_in()) - return; + if (!is_logged_in()) return; const QUrl& url = podcast.url(); @@ -279,72 +279,72 @@ void GPodderSync::SubscriptionRemoved(const Podcast& podcast) { } namespace { - template - void WriteContainer(const T& container, QSettings* s, const char* array_name, - const char* item_name) { - s->beginWriteArray(array_name, container.count()); - int index = 0; - foreach (const typename T::value_type& item, container) { - s->setArrayIndex(index ++); - s->setValue(item_name, item); - } - s->endArray(); - } - - template - void ReadContainer(T* container, QSettings* s, const char* array_name, - const char* item_name) { - container->clear(); - const int count = s->beginReadArray(array_name); - for (int i=0 ; isetArrayIndex(i); - *container << s->value(item_name).value(); - } - s->endArray(); +template +void WriteContainer(const T& container, QSettings* s, const char* array_name, + const char* item_name) { + s->beginWriteArray(array_name, container.count()); + int index = 0; + for (const auto& item : container) { + s->setArrayIndex(index++); + s->setValue(item_name, item); } + s->endArray(); } +template +void ReadContainer(T* container, QSettings* s, const char* array_name, + const char* item_name) { + container->clear(); + const int count = s->beginReadArray(array_name); + for (int i = 0; i < count; ++i) { + s->setArrayIndex(i); + *container << s->value(item_name).value(); + } + s->endArray(); +} +} // namespace + void GPodderSync::SaveQueue() { QSettings s; s.beginGroup(kSettingsGroup); - WriteContainer(queued_add_subscriptions_, &s, "gpodder_queued_add_subscriptions", "url"); - WriteContainer(queued_remove_subscriptions_, &s, "gpodder_queued_remove_subscriptions", "url"); + WriteContainer(queued_add_subscriptions_, &s, + "gpodder_queued_add_subscriptions", "url"); + WriteContainer(queued_remove_subscriptions_, &s, + "gpodder_queued_remove_subscriptions", "url"); } void GPodderSync::LoadQueue() { QSettings s; s.beginGroup(kSettingsGroup); - ReadContainer(&queued_add_subscriptions_, &s, "gpodder_queued_add_subscriptions", "url"); - ReadContainer(&queued_remove_subscriptions_, &s, "gpodder_queued_remove_subscriptions", "url"); + ReadContainer(&queued_add_subscriptions_, &s, + "gpodder_queued_add_subscriptions", "url"); + ReadContainer(&queued_remove_subscriptions_, &s, + "gpodder_queued_remove_subscriptions", "url"); } void GPodderSync::FlushUpdateQueue() { - if (!is_logged_in() || flushing_queue_) - return; + if (!is_logged_in() || flushing_queue_) return; - QSet all_urls = queued_add_subscriptions_ + queued_remove_subscriptions_; - if (all_urls.isEmpty()) - return; + QSet all_urls = + queued_add_subscriptions_ + queued_remove_subscriptions_; + if (all_urls.isEmpty()) return; flushing_queue_ = true; - mygpo::AddRemoveResultPtr reply( - api_->addRemoveSubscriptions(username_, DeviceId(), - queued_add_subscriptions_.toList(), - queued_remove_subscriptions_.toList())); + mygpo::AddRemoveResultPtr reply(api_->addRemoveSubscriptions( + username_, DeviceId(), queued_add_subscriptions_.toList(), + queued_remove_subscriptions_.toList())); qLog(Info) << "Sending" << all_urls.count() << "changes to gpodder.net"; - NewClosure(reply, SIGNAL(finished()), - this, SLOT(AddRemoveFinished(mygpo::AddRemoveResultPtr,QList)), + NewClosure(reply, SIGNAL(finished()), this, + SLOT(AddRemoveFinished(mygpo::AddRemoveResultPtr, QList)), reply, all_urls.toList()); - NewClosure(reply, SIGNAL(parseError()), - this, SLOT(AddRemoveFailed(mygpo::AddRemoveResultPtr)), - reply); - NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(AddRemoveFailed(mygpo::AddRemoveResultPtr)), - reply); + NewClosure(reply, SIGNAL(parseError()), this, + SLOT(AddRemoveFailed(mygpo::AddRemoveResultPtr)), reply); + NewClosure(reply, SIGNAL(requestError(QNetworkReply::NetworkError)), this, + SLOT(AddRemoveFailed(mygpo::AddRemoveResultPtr)), reply); } void GPodderSync::AddRemoveFailed(mygpo::AddRemoveResultPtr reply) { @@ -357,7 +357,7 @@ void GPodderSync::AddRemoveFinished(mygpo::AddRemoveResultPtr reply, flushing_queue_ = false; // Remove the URLs from the queue. - foreach (const QUrl& url, affected_urls) { + for (const QUrl& url : affected_urls) { queued_add_subscriptions_.remove(url); queued_remove_subscriptions_.remove(url); } @@ -365,7 +365,8 @@ void GPodderSync::AddRemoveFinished(mygpo::AddRemoveResultPtr reply, SaveQueue(); // Did more change in the mean time? - if (!queued_add_subscriptions_.isEmpty() || !queued_remove_subscriptions_.isEmpty()) { + if (!queued_add_subscriptions_.isEmpty() || + !queued_remove_subscriptions_.isEmpty()) { flush_queue_timer_->start(); } } @@ -378,7 +379,7 @@ void GPodderSync::DoInitialSync() { // Send our complete list of subscriptions queued_remove_subscriptions_.clear(); queued_add_subscriptions_.clear(); - foreach (const Podcast& podcast, backend_->GetAllSubscriptions()) { + for (const Podcast& podcast : backend_->GetAllSubscriptions()) { queued_add_subscriptions_.insert(podcast.url()); } diff --git a/src/podcasts/gpoddersync.h b/src/podcasts/gpoddersync.h index 9ba6b1e6e..529fdf2c9 100644 --- a/src/podcasts/gpoddersync.h +++ b/src/podcasts/gpoddersync.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef GPODDERSYNC_H -#define GPODDERSYNC_H +#ifndef PODCASTS_GPODDERSYNC_H_ +#define PODCASTS_GPODDERSYNC_H_ #include "podcastepisode.h" @@ -42,8 +42,8 @@ class QTimer; class GPodderSync : public QObject { Q_OBJECT -public: - GPodderSync(Application* app, QObject* parent = 0); + public: + GPodderSync(Application* app, QObject* parent = nullptr); ~GPodderSync(); static const char* kSettingsGroup; @@ -65,13 +65,13 @@ public: // Clears any saved username and password from QSettings. void Logout(); -public slots: + public slots: void GetUpdatesNow(); -private slots: + private slots: void ReloadSettings(); - void LoginFinished(QNetworkReply* reply, - const QString& username, const QString& password); + void LoginFinished(QNetworkReply* reply, const QString& username, + const QString& password); void DeviceUpdatesFinished(mygpo::DeviceUpdatesPtr reply); void DeviceUpdatesFailed(mygpo::DeviceUpdatesPtr reply); @@ -90,13 +90,13 @@ private slots: const QList& affected_urls); void AddRemoveFailed(mygpo::AddRemoveResultPtr reply); -private: + private: void LoadQueue(); void SaveQueue(); void DoInitialSync(); -private: + private: Application* app_; QNetworkAccessManager* network_; QScopedPointer api_; @@ -115,4 +115,4 @@ private: bool flushing_queue_; }; -#endif // GPODDERSYNC_H +#endif // PODCASTS_GPODDERSYNC_H_ diff --git a/src/podcasts/gpoddertoptagsmodel.cpp b/src/podcasts/gpoddertoptagsmodel.cpp index af41f7e2d..ddaccac4c 100644 --- a/src/podcasts/gpoddertoptagsmodel.cpp +++ b/src/podcasts/gpoddertoptagsmodel.cpp @@ -24,16 +24,12 @@ #include -GPodderTopTagsModel::GPodderTopTagsModel(mygpo::ApiRequest* api, Application* app, - QObject* parent) - : PodcastDiscoveryModel(app, parent), - api_(api) -{ -} +GPodderTopTagsModel::GPodderTopTagsModel(mygpo::ApiRequest* api, + Application* app, QObject* parent) + : PodcastDiscoveryModel(app, parent), api_(api) {} bool GPodderTopTagsModel::hasChildren(const QModelIndex& parent) const { - if (parent.isValid() && - parent.data(Role_Type).toInt() == Type_Folder) { + if (parent.isValid() && parent.data(Role_Type).toInt() == Type_Folder) { return true; } @@ -41,8 +37,7 @@ bool GPodderTopTagsModel::hasChildren(const QModelIndex& parent) const { } bool GPodderTopTagsModel::canFetchMore(const QModelIndex& parent) const { - if (parent.isValid() && - parent.data(Role_Type).toInt() == Type_Folder && + if (parent.isValid() && parent.data(Role_Type).toInt() == Type_Folder && parent.data(Role_HasLazyLoaded).toBool() == false) { return true; } @@ -51,8 +46,7 @@ bool GPodderTopTagsModel::canFetchMore(const QModelIndex& parent) const { } void GPodderTopTagsModel::fetchMore(const QModelIndex& parent) { - if (!parent.isValid() || - parent.data(Role_Type).toInt() != Type_Folder || + if (!parent.isValid() || parent.data(Role_Type).toInt() != Type_Folder || parent.data(Role_HasLazyLoaded).toBool()) { return; } @@ -61,32 +55,31 @@ void GPodderTopTagsModel::fetchMore(const QModelIndex& parent) { // Create a little Loading... item. itemFromIndex(parent)->appendRow(CreateLoadingIndicator()); - mygpo::PodcastListPtr list( - api_->podcastsOfTag(GPodderTopTagsPage::kMaxTagCount, parent.data().toString())); + mygpo::PodcastListPtr list(api_->podcastsOfTag( + GPodderTopTagsPage::kMaxTagCount, parent.data().toString())); - NewClosure(list, SIGNAL(finished()), - this, SLOT(PodcastsOfTagFinished(QModelIndex,mygpo::PodcastList*)), + NewClosure(list, SIGNAL(finished()), this, + SLOT(PodcastsOfTagFinished(QModelIndex, mygpo::PodcastList*)), parent, list.data()); - NewClosure(list, SIGNAL(parseError()), - this, SLOT(PodcastsOfTagFailed(QModelIndex,mygpo::PodcastList*)), + NewClosure(list, SIGNAL(parseError()), this, + SLOT(PodcastsOfTagFailed(QModelIndex, mygpo::PodcastList*)), parent, list.data()); - NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(PodcastsOfTagFailed(QModelIndex,mygpo::PodcastList*)), + NewClosure(list, SIGNAL(requestError(QNetworkReply::NetworkError)), this, + SLOT(PodcastsOfTagFailed(QModelIndex, mygpo::PodcastList*)), parent, list.data()); } void GPodderTopTagsModel::PodcastsOfTagFinished(const QModelIndex& parent, mygpo::PodcastList* list) { QStandardItem* parent_item = itemFromIndex(parent); - if (!parent_item) - return; + if (!parent_item) return; // Remove the Loading... item. while (parent_item->hasChildren()) { parent_item->removeRow(0); } - foreach (mygpo::PodcastPtr gpo_podcast, list->list()) { + for (mygpo::PodcastPtr gpo_podcast : list->list()) { Podcast podcast; podcast.InitFromGpo(gpo_podcast.data()); @@ -97,8 +90,7 @@ void GPodderTopTagsModel::PodcastsOfTagFinished(const QModelIndex& parent, void GPodderTopTagsModel::PodcastsOfTagFailed(const QModelIndex& parent, mygpo::PodcastList* list) { QStandardItem* parent_item = itemFromIndex(parent); - if (!parent_item) - return; + if (!parent_item) return; // Remove the Loading... item. while (parent_item->hasChildren()) { @@ -106,10 +98,10 @@ void GPodderTopTagsModel::PodcastsOfTagFailed(const QModelIndex& parent, } if (QMessageBox::warning( - NULL, tr("Failed to fetch podcasts"), - tr("There was a problem communicating with gpodder.net"), - QMessageBox::Retry | QMessageBox::Close, - QMessageBox::Retry) != QMessageBox::Retry) { + nullptr, tr("Failed to fetch podcasts"), + tr("There was a problem communicating with gpodder.net"), + QMessageBox::Retry | QMessageBox::Close, + QMessageBox::Retry) != QMessageBox::Retry) { return; } diff --git a/src/podcasts/gpoddertoptagsmodel.h b/src/podcasts/gpoddertoptagsmodel.h index a3794b660..e3bd4b730 100644 --- a/src/podcasts/gpoddertoptagsmodel.h +++ b/src/podcasts/gpoddertoptagsmodel.h @@ -1,40 +1,39 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef GPODDERTOPTAGSMODEL_H -#define GPODDERTOPTAGSMODEL_H +#ifndef PODCASTS_GPODDERTOPTAGSMODEL_H_ +#define PODCASTS_GPODDERTOPTAGSMODEL_H_ #include "podcastdiscoverymodel.h" namespace mygpo { - class ApiRequest; - class PodcastList; +class ApiRequest; +class PodcastList; } class GPodderTopTagsModel : public PodcastDiscoveryModel { Q_OBJECT -public: + public: GPodderTopTagsModel(mygpo::ApiRequest* api, Application* app, - QObject* parent = 0); + QObject* parent = nullptr); enum Role { Role_HasLazyLoaded = PodcastDiscoveryModel::RoleCount, - RoleCount }; @@ -42,12 +41,13 @@ public: bool canFetchMore(const QModelIndex& parent) const; void fetchMore(const QModelIndex& parent); -private slots: - void PodcastsOfTagFinished(const QModelIndex& parent, mygpo::PodcastList* list); + private slots: + void PodcastsOfTagFinished(const QModelIndex& parent, + mygpo::PodcastList* list); void PodcastsOfTagFailed(const QModelIndex& parent, mygpo::PodcastList* list); -private: + private: mygpo::ApiRequest* api_; }; -#endif // GPODDERTOPTAGSMODEL_H +#endif // PODCASTS_GPODDERTOPTAGSMODEL_H_ diff --git a/src/podcasts/gpoddertoptagspage.cpp b/src/podcasts/gpoddertoptagspage.cpp index 1fda03164..699683437 100644 --- a/src/podcasts/gpoddertoptagspage.cpp +++ b/src/podcasts/gpoddertoptagspage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -24,22 +24,18 @@ const int GPodderTopTagsPage::kMaxTagCount = 100; - GPodderTopTagsPage::GPodderTopTagsPage(Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - network_(new NetworkAccessManager(this)), - api_(new mygpo::ApiRequest(network_)), - done_initial_load_(false) -{ + : AddPodcastPage(app, parent), + network_(new NetworkAccessManager(this)), + api_(new mygpo::ApiRequest(network_)), + done_initial_load_(false) { setWindowTitle(tr("gpodder.net directory")); setWindowIcon(QIcon(":providers/mygpo32.png")); SetModel(new GPodderTopTagsModel(api_, app, this)); } -GPodderTopTagsPage::~GPodderTopTagsPage() { - delete api_; -} +GPodderTopTagsPage::~GPodderTopTagsPage() { delete api_; } void GPodderTopTagsPage::Show() { if (!done_initial_load_) { @@ -48,22 +44,19 @@ void GPodderTopTagsPage::Show() { done_initial_load_ = true; mygpo::TagListPtr tag_list(api_->topTags(kMaxTagCount)); - NewClosure(tag_list, SIGNAL(finished()), - this, SLOT(TagListLoaded(mygpo::TagListPtr)), - tag_list); - NewClosure(tag_list, SIGNAL(parseError()), - this, SLOT(TagListFailed(mygpo::TagListPtr)), - tag_list); + NewClosure(tag_list, SIGNAL(finished()), this, + SLOT(TagListLoaded(mygpo::TagListPtr)), tag_list); + NewClosure(tag_list, SIGNAL(parseError()), this, + SLOT(TagListFailed(mygpo::TagListPtr)), tag_list); NewClosure(tag_list, SIGNAL(requestError(QNetworkReply::NetworkError)), - this, SLOT(TagListFailed(mygpo::TagListPtr)), - tag_list); + this, SLOT(TagListFailed(mygpo::TagListPtr)), tag_list); } } void GPodderTopTagsPage::TagListLoaded(mygpo::TagListPtr tag_list) { emit Busy(false); - foreach (mygpo::TagPtr tag, tag_list->list()) { + for (mygpo::TagPtr tag : tag_list->list()) { model()->appendRow(model()->CreateFolder(tag->tag())); } } @@ -73,10 +66,10 @@ void GPodderTopTagsPage::TagListFailed(mygpo::TagListPtr list) { done_initial_load_ = false; if (QMessageBox::warning( - NULL, tr("Failed to fetch directory"), - tr("There was a problem communicating with gpodder.net"), - QMessageBox::Retry | QMessageBox::Close, - QMessageBox::Retry) != QMessageBox::Retry) { + nullptr, tr("Failed to fetch directory"), + tr("There was a problem communicating with gpodder.net"), + QMessageBox::Retry | QMessageBox::Close, + QMessageBox::Retry) != QMessageBox::Retry) { return; } diff --git a/src/podcasts/gpoddertoptagspage.h b/src/podcasts/gpoddertoptagspage.h index 320297945..df337ad07 100644 --- a/src/podcasts/gpoddertoptagspage.h +++ b/src/podcasts/gpoddertoptagspage.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef GPODDERTOPTAGSPAGE_H -#define GPODDERTOPTAGSPAGE_H +#ifndef PODCASTS_GPODDERTOPTAGSPAGE_H_ +#define PODCASTS_GPODDERTOPTAGSPAGE_H_ #include @@ -29,8 +29,8 @@ class QNetworkAccessManager; class GPodderTopTagsPage : public AddPodcastPage { Q_OBJECT -public: - GPodderTopTagsPage(Application* app, QWidget* parent = 0); + public: + GPodderTopTagsPage(Application* app, QWidget* parent = nullptr); ~GPodderTopTagsPage(); static const int kMaxTagCount; @@ -38,15 +38,15 @@ public: virtual bool has_visible_widget() const { return false; } virtual void Show(); -private slots: + private slots: void TagListLoaded(mygpo::TagListPtr tag_list); void TagListFailed(mygpo::TagListPtr tag_list); -private: + private: QNetworkAccessManager* network_; mygpo::ApiRequest* api_; bool done_initial_load_; }; -#endif // GPODDERTOPTAGSPAGE_H +#endif // PODCASTS_GPODDERTOPTAGSPAGE_H_ diff --git a/src/podcasts/itunessearchpage.cpp b/src/podcasts/itunessearchpage.cpp index 4c4a92e8c..d5d24d542 100644 --- a/src/podcasts/itunessearchpage.cpp +++ b/src/podcasts/itunessearchpage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -28,20 +28,18 @@ #include const char* ITunesSearchPage::kUrlBase = - "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wa/wsSearch?country=US&media=podcast"; + "http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/" + "wa/wsSearch?country=US&media=podcast"; ITunesSearchPage::ITunesSearchPage(Application* app, QWidget* parent) - : AddPodcastPage(app, parent), - ui_(new Ui_ITunesSearchPage), - network_(new NetworkAccessManager(this)) -{ + : AddPodcastPage(app, parent), + ui_(new Ui_ITunesSearchPage), + network_(new NetworkAccessManager(this)) { ui_->setupUi(this); connect(ui_->search, SIGNAL(clicked()), SLOT(SearchClicked())); } -ITunesSearchPage::~ITunesSearchPage() { - delete ui_; -} +ITunesSearchPage::~ITunesSearchPage() { delete ui_; } void ITunesSearchPage::SearchClicked() { emit Busy(true); @@ -50,9 +48,8 @@ void ITunesSearchPage::SearchClicked() { url.addQueryItem("term", ui_->query->text()); QNetworkReply* reply = network_->get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(SearchFinished(QNetworkReply*)), - reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(SearchFinished(QNetworkReply*)), reply); } void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { @@ -63,7 +60,8 @@ void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { // Was there a network error? if (reply->error() != QNetworkReply::NoError) { - QMessageBox::warning(this, tr("Failed to fetch podcasts"), reply->errorString()); + QMessageBox::warning(this, tr("Failed to fetch podcasts"), + reply->errorString()); return; } @@ -72,8 +70,9 @@ void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { // Was it valid JSON? if (data.isNull()) { - QMessageBox::warning(this, tr("Failed to fetch podcasts"), - tr("There was a problem parsing the response from the iTunes Store")); + QMessageBox::warning( + this, tr("Failed to fetch podcasts"), + tr("There was a problem parsing the response from the iTunes Store")); return; } @@ -84,7 +83,7 @@ void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { return; } - foreach (const QVariant& result_variant, data.toMap()["results"].toList()) { + for (const QVariant& result_variant : data.toMap()["results"].toList()) { QVariantMap result(result_variant.toMap()); if (result["kind"].toString() != "podcast") { continue; @@ -102,6 +101,4 @@ void ITunesSearchPage::SearchFinished(QNetworkReply* reply) { } } -void ITunesSearchPage::Show() { - ui_->query->setFocus(); -} +void ITunesSearchPage::Show() { ui_->query->setFocus(); } diff --git a/src/podcasts/itunessearchpage.h b/src/podcasts/itunessearchpage.h index d898138c7..05e9cd279 100644 --- a/src/podcasts/itunessearchpage.h +++ b/src/podcasts/itunessearchpage.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef ITUNESSEARCHPAGE_H -#define ITUNESSEARCHPAGE_H +#ifndef PODCASTS_ITUNESSEARCHPAGE_H_ +#define PODCASTS_ITUNESSEARCHPAGE_H_ #include "addpodcastpage.h" @@ -28,7 +28,7 @@ class QNetworkReply; class ITunesSearchPage : public AddPodcastPage { Q_OBJECT -public: + public: ITunesSearchPage(Application* app, QWidget* parent); ~ITunesSearchPage(); @@ -36,14 +36,14 @@ public: static const char* kUrlBase; -private slots: + private slots: void SearchClicked(); void SearchFinished(QNetworkReply* reply); -private: + private: Ui_ITunesSearchPage* ui_; QNetworkAccessManager* network_; }; -#endif // ITUNESSEARCHPAGE_H +#endif // PODCASTS_ITUNESSEARCHPAGE_H_ diff --git a/src/podcasts/opmlcontainer.h b/src/podcasts/opmlcontainer.h index 425542352..0aa21ddc6 100644 --- a/src/podcasts/opmlcontainer.h +++ b/src/podcasts/opmlcontainer.h @@ -1,27 +1,27 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef OPMLCONTAINER_H -#define OPMLCONTAINER_H +#ifndef PODCASTS_OPMLCONTAINER_H_ +#define PODCASTS_OPMLCONTAINER_H_ #include "podcast.h" class OpmlContainer { -public: + public: // Only set for the top-level container QUrl url; @@ -32,4 +32,4 @@ public: Q_DECLARE_METATYPE(OpmlContainer) -#endif // OPMLCONTAINER_H +#endif // PODCASTS_OPMLCONTAINER_H_ diff --git a/src/podcasts/podcast.cpp b/src/podcasts/podcast.cpp index e666a499d..ee277d296 100644 --- a/src/podcasts/podcast.cpp +++ b/src/podcasts/podcast.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -23,16 +23,27 @@ #include -const QStringList Podcast::kColumns = QStringList() - << "url" << "title" << "description" << "copyright" << "link" - << "image_url_large" << "image_url_small" << "author" << "owner_name" - << "owner_email" << "last_updated" << "last_update_error" << "extra"; +const QStringList Podcast::kColumns = QStringList() << "url" + << "title" + << "description" + << "copyright" + << "link" + << "image_url_large" + << "image_url_small" + << "author" + << "owner_name" + << "owner_email" + << "last_updated" + << "last_update_error" + << "extra"; const QString Podcast::kColumnSpec = Podcast::kColumns.join(", "); -const QString Podcast::kJoinSpec = Utilities::Prepend("p.", Podcast::kColumns).join(", "); -const QString Podcast::kBindSpec = Utilities::Prepend(":", Podcast::kColumns).join(", "); -const QString Podcast::kUpdateSpec = Utilities::Updateify(Podcast::kColumns).join(", "); - +const QString Podcast::kJoinSpec = + Utilities::Prepend("p.", Podcast::kColumns).join(", "); +const QString Podcast::kBindSpec = + Utilities::Prepend(":", Podcast::kColumns).join(", "); +const QString Podcast::kUpdateSpec = + Utilities::Updateify(Podcast::kColumns).join(", "); struct Podcast::Private : public QSharedData { Private(); @@ -61,26 +72,15 @@ struct Podcast::Private : public QSharedData { PodcastEpisodeList episodes_; }; -Podcast::Private::Private() - : database_id_(-1) -{ -} +Podcast::Private::Private() : database_id_(-1) {} +Podcast::Podcast() : d(new Private) {} -Podcast::Podcast() - : d(new Private) -{ -} +Podcast::Podcast(const Podcast& other) : d(other.d) {} -Podcast::Podcast(const Podcast& other) - : d(other.d) -{ -} +Podcast::~Podcast() {} -Podcast::~Podcast() { -} - -Podcast& Podcast::operator =(const Podcast& other) { +Podcast& Podcast::operator=(const Podcast& other) { d = other.d; return *this; } @@ -97,7 +97,9 @@ const QString& Podcast::author() const { return d->author_; } const QString& Podcast::owner_name() const { return d->owner_name_; } const QString& Podcast::owner_email() const { return d->owner_email_; } const QDateTime& Podcast::last_updated() const { return d->last_updated_; } -const QString& Podcast::last_update_error() const { return d->last_update_error_; } +const QString& Podcast::last_update_error() const { + return d->last_update_error_; +} const QVariantMap& Podcast::extra() const { return d->extra_; } QVariant Podcast::extra(const QString& key) const { return d->extra_[key]; } @@ -113,14 +115,20 @@ void Podcast::set_author(const QString& v) { d->author_ = v; } void Podcast::set_owner_name(const QString& v) { d->owner_name_ = v; } void Podcast::set_owner_email(const QString& v) { d->owner_email_ = v; } void Podcast::set_last_updated(const QDateTime& v) { d->last_updated_ = v; } -void Podcast::set_last_update_error(const QString& v) { d->last_update_error_ = v; } +void Podcast::set_last_update_error(const QString& v) { + d->last_update_error_ = v; +} void Podcast::set_extra(const QVariantMap& v) { d->extra_ = v; } -void Podcast::set_extra(const QString& key, const QVariant& value) { d->extra_[key] = value; } +void Podcast::set_extra(const QString& key, const QVariant& value) { + d->extra_[key] = value; +} const PodcastEpisodeList& Podcast::episodes() const { return d->episodes_; } PodcastEpisodeList* Podcast::mutable_episodes() { return &d->episodes_; } void Podcast::set_episodes(const PodcastEpisodeList& v) { d->episodes_ = v; } -void Podcast::add_episode(const PodcastEpisode& episode) { d->episodes_.append(episode); } +void Podcast::add_episode(const PodcastEpisode& episode) { + d->episodes_.append(episode); +} void Podcast::InitFromQuery(const QSqlQuery& query) { d->database_id_ = query.value(0).toInt(); diff --git a/src/podcasts/podcast.h b/src/podcasts/podcast.h index e793af409..862a377b8 100644 --- a/src/podcasts/podcast.h +++ b/src/podcasts/podcast.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCAST_H -#define PODCAST_H +#ifndef PODCASTS_PODCAST_H_ +#define PODCASTS_PODCAST_H_ #include "podcastepisode.h" @@ -26,11 +26,11 @@ #include namespace mygpo { - class Podcast; +class Podcast; } class Podcast { -public: + public: Podcast(); Podcast(const Podcast& other); ~Podcast(); @@ -82,8 +82,12 @@ public: // Small images are suitable for 16x16 icons in lists. Large images are // used in detailed information displays. - const QUrl& ImageUrlLarge() const { return image_url_large().isValid() ? image_url_large() : image_url_small(); } - const QUrl& ImageUrlSmall() const { return image_url_small().isValid() ? image_url_small() : image_url_large(); } + const QUrl& ImageUrlLarge() const { + return image_url_large().isValid() ? image_url_large() : image_url_small(); + } + const QUrl& ImageUrlSmall() const { + return image_url_small().isValid() ? image_url_small() : image_url_large(); + } // These are stored in a different database table, and aren't loaded or // persisted by InitFromQuery or BindToQuery. @@ -92,9 +96,9 @@ public: void set_episodes(const PodcastEpisodeList& v); void add_episode(const PodcastEpisode& episode); - Podcast& operator =(const Podcast& other); + Podcast& operator=(const Podcast& other); -private: + private: struct Private; QSharedDataPointer d; }; @@ -103,4 +107,4 @@ Q_DECLARE_METATYPE(Podcast) typedef QList PodcastList; Q_DECLARE_METATYPE(QList) -#endif // PODCAST_H +#endif // PODCASTS_PODCAST_H_ diff --git a/src/podcasts/podcastbackend.cpp b/src/podcasts/podcastbackend.cpp index cd3b13578..18dc23cb5 100644 --- a/src/podcasts/podcastbackend.cpp +++ b/src/podcasts/podcastbackend.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -24,11 +24,7 @@ #include PodcastBackend::PodcastBackend(Application* app, QObject* parent) - : QObject(parent), - app_(app), - db_(app->database()) -{ -} + : QObject(parent), app_(app), db_(app->database()) {} void PodcastBackend::Subscribe(Podcast* podcast) { // If this podcast is already in the database, do nothing @@ -48,13 +44,15 @@ void PodcastBackend::Subscribe(Podcast* podcast) { ScopedTransaction t(&db); // Insert the podcast. - QSqlQuery q("INSERT INTO podcasts (" + Podcast::kColumnSpec + ")" - " VALUES (" + Podcast::kBindSpec + ")", db); + QSqlQuery q("INSERT INTO podcasts (" + Podcast::kColumnSpec + + ")" + " VALUES (" + + Podcast::kBindSpec + ")", + db); podcast->BindToQuery(&q); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; // Update the database ID. const int database_id = q.lastInsertId().toInt(); @@ -62,7 +60,7 @@ void PodcastBackend::Subscribe(Podcast* podcast) { // Update the IDs of any episodes. PodcastEpisodeList* episodes = podcast->mutable_episodes(); - for (auto it = episodes->begin() ; it != episodes->end() ; ++it) { + for (auto it = episodes->begin(); it != episodes->end(); ++it) { it->set_podcast_database_id(database_id); } @@ -88,30 +86,31 @@ void PodcastBackend::Unsubscribe(const Podcast& podcast) { QSqlQuery q("DELETE FROM podcasts WHERE ROWID = :id", db); q.bindValue(":id", podcast.database_id()); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; // Remove all episodes in the podcast q = QSqlQuery("DELETE FROM podcast_episodes WHERE podcast_id = :id", db); q.bindValue(":id", podcast.database_id()); q.exec(); - if (db_->CheckErrors(q)) - return; + if (db_->CheckErrors(q)) return; t.Commit(); emit SubscriptionRemoved(podcast); } -void PodcastBackend::AddEpisodes(PodcastEpisodeList* episodes, QSqlDatabase* db) { - QSqlQuery q("INSERT INTO podcast_episodes (" + PodcastEpisode::kColumnSpec + ")" - " VALUES (" + PodcastEpisode::kBindSpec + ")", *db); +void PodcastBackend::AddEpisodes(PodcastEpisodeList* episodes, + QSqlDatabase* db) { + QSqlQuery q("INSERT INTO podcast_episodes (" + PodcastEpisode::kColumnSpec + + ")" + " VALUES (" + + PodcastEpisode::kBindSpec + ")", + *db); - for (auto it = episodes->begin() ; it != episodes->end() ; ++it) { + for (auto it = episodes->begin(); it != episodes->end(); ++it) { it->BindToQuery(&q); q.exec(); - if (db_->CheckErrors(q)) - continue; + if (db_->CheckErrors(q)) continue; const int database_id = q.lastInsertId().toInt(); it->set_database_id(database_id); @@ -134,12 +133,14 @@ void PodcastBackend::UpdateEpisodes(const PodcastEpisodeList& episodes) { QSqlDatabase db(db_->Connect()); ScopedTransaction t(&db); - QSqlQuery q("UPDATE podcast_episodes" - " SET listened = :listened," - " listened_date = :listened_date," - " downloaded = :downloaded," - " local_url = :local_url" - " WHERE ROWID = :id", db); + QSqlQuery q( + "UPDATE podcast_episodes" + " SET listened = :listened," + " listened_date = :listened_date," + " downloaded = :downloaded," + " local_url = :local_url" + " WHERE ROWID = :id", + db); for (const PodcastEpisode& episode : episodes) { q.bindValue(":listened", episode.listened()); @@ -164,8 +165,7 @@ PodcastList PodcastBackend::GetAllSubscriptions() { QSqlQuery q("SELECT ROWID, " + Podcast::kColumnSpec + " FROM podcasts", db); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { Podcast podcast; @@ -183,8 +183,9 @@ Podcast PodcastBackend::GetSubscriptionById(int id) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + Podcast::kColumnSpec + - " FROM podcasts" - " WHERE ROWID = :id", db); + " FROM podcasts" + " WHERE ROWID = :id", + db); q.bindValue(":id", id); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -201,8 +202,9 @@ Podcast PodcastBackend::GetSubscriptionByUrl(const QUrl& url) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + Podcast::kColumnSpec + - " FROM podcasts" - " WHERE url = :url", db); + " FROM podcasts" + " WHERE url = :url", + db); q.bindValue(":url", url.toEncoded()); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -219,12 +221,12 @@ PodcastEpisodeList PodcastBackend::GetEpisodes(int podcast_id) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE podcast_id = :id", db); + " FROM podcast_episodes" + " WHERE podcast_id = :id", + db); q.bindValue(":db", podcast_id); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { PodcastEpisode episode; @@ -242,8 +244,9 @@ PodcastEpisode PodcastBackend::GetEpisodeById(int id) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE ROWID = :id", db); + " FROM podcast_episodes" + " WHERE ROWID = :id", + db); q.bindValue(":db", id); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -260,8 +263,9 @@ PodcastEpisode PodcastBackend::GetEpisodeByUrl(const QUrl& url) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE url = :url", db); + " FROM podcast_episodes" + " WHERE url = :url", + db); q.bindValue(":url", url.toEncoded()); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -278,9 +282,10 @@ PodcastEpisode PodcastBackend::GetEpisodeByUrlOrLocalUrl(const QUrl& url) { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE url = :url" - " OR local_url = :url", db); + " FROM podcast_episodes" + " WHERE url = :url" + " OR local_url = :url", + db); q.bindValue(":url", url.toEncoded()); q.exec(); if (!db_->CheckErrors(q) && q.next()) { @@ -290,20 +295,21 @@ PodcastEpisode PodcastBackend::GetEpisodeByUrlOrLocalUrl(const QUrl& url) { return ret; } -PodcastEpisodeList PodcastBackend::GetOldDownloadedEpisodes(const QDateTime& max_listened_date) { +PodcastEpisodeList PodcastBackend::GetOldDownloadedEpisodes( + const QDateTime& max_listened_date) { PodcastEpisodeList ret; QMutexLocker l(db_->Mutex()); QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE downloaded = 'true'" - " AND listened_date <= :max_listened_date", db); + " FROM podcast_episodes" + " WHERE downloaded = 'true'" + " AND listened_date <= :max_listened_date", + db); q.bindValue(":max_listened_date", max_listened_date.toTime_t()); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { PodcastEpisode episode; @@ -321,12 +327,12 @@ PodcastEpisodeList PodcastBackend::GetNewDownloadedEpisodes() { QSqlDatabase db(db_->Connect()); QSqlQuery q("SELECT ROWID, " + PodcastEpisode::kColumnSpec + - " FROM podcast_episodes" - " WHERE downloaded = 'true'" - " AND listened = 'false'", db); + " FROM podcast_episodes" + " WHERE downloaded = 'true'" + " AND listened = 'false'", + db); q.exec(); - if (db_->CheckErrors(q)) - return ret; + if (db_->CheckErrors(q)) return ret; while (q.next()) { PodcastEpisode episode; diff --git a/src/podcasts/podcastbackend.h b/src/podcasts/podcastbackend.h index 87f5264a0..28b80bf50 100644 --- a/src/podcasts/podcastbackend.h +++ b/src/podcasts/podcastbackend.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTBACKEND_H -#define PODCASTBACKEND_H +#ifndef PODCASTS_PODCASTBACKEND_H_ +#define PODCASTS_PODCASTBACKEND_H_ #include @@ -28,8 +28,8 @@ class Database; class PodcastBackend : public QObject { Q_OBJECT -public: - PodcastBackend(Application* app, QObject* parent = 0); + public: + PodcastBackend(Application* app, QObject* parent = nullptr); // Adds the podcast and any included Episodes to the database. Updates the // podcast with a database ID. If this podcast already has an ID set, this @@ -58,7 +58,8 @@ public: // Returns a list of episodes that have local data (downloaded=true) but were // last listened to before the given QDateTime. This query is NOT indexed so // it involves a full search of the table. - PodcastEpisodeList GetOldDownloadedEpisodes(const QDateTime& max_listened_date); + PodcastEpisodeList GetOldDownloadedEpisodes( + const QDateTime& max_listened_date); PodcastEpisodeList GetNewDownloadedEpisodes(); // Adds episodes to the database. Every episode must have a valid @@ -68,8 +69,8 @@ public: // Updates the editable fields (listened, listened_date, downloaded, and // local_url) on episodes that must already exist in the database. void UpdateEpisodes(const PodcastEpisodeList& episodes); - -signals: + + signals: void SubscriptionAdded(const Podcast& podcast); void SubscriptionRemoved(const Podcast& podcast); @@ -79,14 +80,14 @@ signals: // Emitted when existing episodes are updated. void EpisodesUpdated(const PodcastEpisodeList& episodes); -private: + private: // Adds each episode to the database, setting their IDs after inserting each // one. void AddEpisodes(PodcastEpisodeList* episodes, QSqlDatabase* db); -private: + private: Application* app_; Database* db_; }; -#endif // PODCASTBACKEND_H +#endif // PODCASTS_PODCASTBACKEND_H_ diff --git a/src/podcasts/podcastdiscoverymodel.cpp b/src/podcasts/podcastdiscoverymodel.cpp index 1283674bd..9d9fe2f38 100644 --- a/src/podcasts/podcastdiscoverymodel.cpp +++ b/src/podcasts/podcastdiscoverymodel.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -26,18 +26,19 @@ #include PodcastDiscoveryModel::PodcastDiscoveryModel(Application* app, QObject* parent) - : QStandardItemModel(parent), - app_(app), - icon_loader_(new StandardItemIconLoader(app->album_cover_loader(), this)), - default_icon_(":providers/podcast16.png") -{ + : QStandardItemModel(parent), + app_(app), + icon_loader_(new StandardItemIconLoader(app->album_cover_loader(), this)), + default_icon_(":providers/podcast16.png") { icon_loader_->SetModel(this); } QVariant PodcastDiscoveryModel::data(const QModelIndex& index, int role) const { if (index.isValid() && role == Qt::DecorationRole && - QStandardItemModel::data(index, Role_StartedLoadingImage).toBool() == false) { - const QUrl image_url = QStandardItemModel::data(index, Role_ImageUrl).toUrl(); + QStandardItemModel::data(index, Role_StartedLoadingImage).toBool() == + false) { + const QUrl image_url = + QStandardItemModel::data(index, Role_ImageUrl).toUrl(); if (image_url.isValid()) { const_cast(this)->LazyLoadImage(image_url, index); } @@ -46,7 +47,8 @@ QVariant PodcastDiscoveryModel::data(const QModelIndex& index, int role) const { return QStandardItemModel::data(index, role); } -QStandardItem* PodcastDiscoveryModel::CreatePodcastItem(const Podcast& podcast) { +QStandardItem* PodcastDiscoveryModel::CreatePodcastItem( + const Podcast& podcast) { QStandardItem* item = new QStandardItem; item->setIcon(default_icon_); item->setText(podcast.title()); @@ -68,25 +70,28 @@ QStandardItem* PodcastDiscoveryModel::CreateFolder(const QString& name) { return item; } -QStandardItem* PodcastDiscoveryModel::CreateOpmlContainerItem(const OpmlContainer& container) { +QStandardItem* PodcastDiscoveryModel::CreateOpmlContainerItem( + const OpmlContainer& container) { QStandardItem* item = CreateFolder(container.name); CreateOpmlContainerItems(container, item); return item; } -void PodcastDiscoveryModel::CreateOpmlContainerItems(const OpmlContainer& container, QStandardItem* parent) { - foreach (const OpmlContainer& child, container.containers) { +void PodcastDiscoveryModel::CreateOpmlContainerItems( + const OpmlContainer& container, QStandardItem* parent) { + for (const OpmlContainer& child : container.containers) { QStandardItem* child_item = CreateOpmlContainerItem(child); parent->appendRow(child_item); } - foreach (const Podcast& child, container.feeds) { + for (const Podcast& child : container.feeds) { QStandardItem* child_item = CreatePodcastItem(child); parent->appendRow(child_item); } } -void PodcastDiscoveryModel::LazyLoadImage(const QUrl& url, const QModelIndex& index) { +void PodcastDiscoveryModel::LazyLoadImage(const QUrl& url, + const QModelIndex& index) { QStandardItem* item = itemFromIndex(index); item->setData(true, Role_StartedLoadingImage); icon_loader_->LoadIcon(url.toString(), QString(), item); diff --git a/src/podcasts/podcastdiscoverymodel.h b/src/podcasts/podcastdiscoverymodel.h index c791c9c46..7d55b9496 100644 --- a/src/podcasts/podcastdiscoverymodel.h +++ b/src/podcasts/podcastdiscoverymodel.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTDISCOVERYMODEL_H -#define PODCASTDISCOVERYMODEL_H +#ifndef PODCASTS_PODCASTDISCOVERYMODEL_H_ +#define PODCASTS_PODCASTDISCOVERYMODEL_H_ #include "covers/albumcoverloaderoptions.h" @@ -31,25 +31,21 @@ class StandardItemIconLoader; class PodcastDiscoveryModel : public QStandardItemModel { Q_OBJECT -public: - PodcastDiscoveryModel(Application* app, QObject* parent = 0); + public: + PodcastDiscoveryModel(Application* app, QObject* parent = nullptr); - enum Type { - Type_Folder, - Type_Podcast, - Type_LoadingIndicator - }; + enum Type { Type_Folder, Type_Podcast, Type_LoadingIndicator }; enum Role { Role_Podcast = Qt::UserRole, Role_Type, Role_ImageUrl, Role_StartedLoadingImage, - RoleCount }; - void CreateOpmlContainerItems(const OpmlContainer& container, QStandardItem* parent); + void CreateOpmlContainerItems(const OpmlContainer& container, + QStandardItem* parent); QStandardItem* CreateOpmlContainerItem(const OpmlContainer& container); QStandardItem* CreatePodcastItem(const Podcast& podcast); QStandardItem* CreateFolder(const QString& name); @@ -57,10 +53,10 @@ public: QVariant data(const QModelIndex& index, int role) const; -private: + private: void LazyLoadImage(const QUrl& url, const QModelIndex& index); - -private: + + private: Application* app_; StandardItemIconLoader* icon_loader_; @@ -68,4 +64,4 @@ private: QIcon folder_icon_; }; -#endif // PODCASTDISCOVERYMODEL_H +#endif // PODCASTS_PODCASTDISCOVERYMODEL_H_ diff --git a/src/podcasts/podcastdownloader.cpp b/src/podcasts/podcastdownloader.cpp index be281a0f7..c2982404c 100644 --- a/src/podcasts/podcastdownloader.cpp +++ b/src/podcasts/podcastdownloader.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -34,10 +34,11 @@ #include const char* PodcastDownloader::kSettingsGroup = "Podcasts"; -const int PodcastDownloader::kAutoDeleteCheckIntervalMsec = 15 * 60 * kMsecPerSec; // 15 minutes +const int PodcastDownloader::kAutoDeleteCheckIntervalMsec = + 15 * 60 * kMsecPerSec; // 15 minutes struct PodcastDownloader::Task { - Task() : file(NULL) {} + Task() : file(nullptr) {} ~Task() { delete file; } PodcastEpisode episode; @@ -45,17 +46,16 @@ struct PodcastDownloader::Task { }; PodcastDownloader::PodcastDownloader(Application* app, QObject* parent) - : QObject(parent), - app_(app), - backend_(app_->podcast_backend()), - network_(new NetworkAccessManager(this)), - disallowed_filename_characters_("[^a-zA-Z0-9_~ -]"), - auto_download_(false), - delete_after_secs_(0), - current_task_(NULL), - last_progress_signal_(0), - auto_delete_timer_(new QTimer(this)) -{ + : QObject(parent), + app_(app), + backend_(app_->podcast_backend()), + network_(new NetworkAccessManager(this)), + disallowed_filename_characters_("[^a-zA-Z0-9_~ -]"), + auto_download_(false), + delete_after_secs_(0), + current_task_(nullptr), + last_progress_signal_(0), + auto_delete_timer_(new QTimer(this)) { connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), SLOT(EpisodesAdded(PodcastEpisodeList))); connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), @@ -91,8 +91,7 @@ void PodcastDownloader::ReloadSettings() { } void PodcastDownloader::DownloadEpisode(const PodcastEpisode& episode) { - if (downloading_episode_ids_.contains(episode.database_id())) - return; + if (downloading_episode_ids_.contains(episode.database_id())) return; downloading_episode_ids_.insert(episode.database_id()); Task* task = new Task; @@ -109,7 +108,8 @@ void PodcastDownloader::DownloadEpisode(const PodcastEpisode& episode) { } void PodcastDownloader::DeleteEpisode(const PodcastEpisode& episode) { - if (!episode.downloaded() || downloading_episode_ids_.contains(episode.database_id())) + if (!episode.downloaded() || + downloading_episode_ids_.contains(episode.database_id())) return; // Delete the local file @@ -127,7 +127,7 @@ void PodcastDownloader::DeleteEpisode(const PodcastEpisode& episode) { void PodcastDownloader::FinishAndDelete(Task* task) { Podcast podcast = - backend_->GetSubscriptionById(task->episode.podcast_database_id()); + backend_->GetSubscriptionById(task->episode.podcast_database_id()); Song song = task->episode.ToSong(podcast); downloading_episode_ids_.remove(task->episode.database_id()); @@ -140,13 +140,13 @@ void PodcastDownloader::FinishAndDelete(Task* task) { NextTask(); } -QString PodcastDownloader::FilenameForEpisode(const QString& directory, - const PodcastEpisode& episode) const { +QString PodcastDownloader::FilenameForEpisode( + const QString& directory, const PodcastEpisode& episode) const { const QString file_extension = QFileInfo(episode.url().path()).suffix(); int count = 0; // The file name contains the publication date and episode title - QString base_filename = + QString base_filename = episode.publication_date().date().toString(Qt::ISODate) + "-" + SanitiseFilenameComponent(episode.title()); @@ -156,11 +156,11 @@ QString PodcastDownloader::FilenameForEpisode(const QString& directory, QString filename; if (count == 0) { - filename = QString("%1/%2.%3").arg( - directory, base_filename, file_extension); + filename = + QString("%1/%2.%3").arg(directory, base_filename, file_extension); } else { filename = QString("%1/%2 (%3).%4").arg( - directory, base_filename, QString::number(count), file_extension); + directory, base_filename, QString::number(count), file_extension); } if (!QFile::exists(filename)) { @@ -184,8 +184,8 @@ void PodcastDownloader::StartDownloading(Task* task) { return; } - const QString directory = download_dir_ + "/" + - SanitiseFilenameComponent(podcast.title()); + const QString directory = + download_dir_ + "/" + SanitiseFilenameComponent(podcast.title()); const QString filepath = FilenameForEpisode(directory, task->episode); // Open the output file @@ -211,7 +211,7 @@ void PodcastDownloader::StartDownloading(Task* task) { } void PodcastDownloader::NextTask() { - current_task_ = NULL; + current_task_ = nullptr; if (!queued_tasks_.isEmpty()) { StartDownloading(queued_tasks_.dequeue()); @@ -220,25 +220,21 @@ void PodcastDownloader::NextTask() { void PodcastDownloader::ReplyReadyRead() { QNetworkReply* reply = qobject_cast(sender())->reply(); - if (!reply || !current_task_ || !current_task_->file) - return; + if (!reply || !current_task_ || !current_task_->file) return; forever { const qint64 bytes = reply->bytesAvailable(); - if (bytes <= 0) - break; + if (bytes <= 0) break; current_task_->file->write(reply->read(bytes)); } } void PodcastDownloader::ReplyDownloadProgress(qint64 received, qint64 total) { - if (!current_task_ || !current_task_->file || total < 1024) - return; + if (!current_task_ || !current_task_->file || total < 1024) return; const time_t current_time = QDateTime::currentDateTime().toTime_t(); - if (last_progress_signal_ == current_time) - return; + if (last_progress_signal_ == current_time) return; last_progress_signal_ = current_time; emit ProgressChanged(current_task_->episode, Downloading, @@ -247,8 +243,7 @@ void PodcastDownloader::ReplyDownloadProgress(qint64 received, qint64 total) { void PodcastDownloader::ReplyFinished() { RedirectFollower* reply = qobject_cast(sender()); - if (!reply || !current_task_ || !current_task_->file) - return; + if (!reply || !current_task_ || !current_task_->file) return; reply->deleteLater(); @@ -266,7 +261,8 @@ void PodcastDownloader::ReplyFinished() { // Tell the database the episode has been updated. Get it from the DB again // in case the listened field changed in the mean time. - PodcastEpisode episode = backend_->GetEpisodeById(current_task_->episode.database_id()); + PodcastEpisode episode = + backend_->GetEpisodeById(current_task_->episode.database_id()); episode.set_downloaded(true); episode.set_local_url(QUrl::fromLocalFile(current_task_->file->fileName())); backend_->UpdateEpisodes(PodcastEpisodeList() << episode); @@ -274,8 +270,11 @@ void PodcastDownloader::ReplyFinished() { FinishAndDelete(current_task_); } -QString PodcastDownloader::SanitiseFilenameComponent(const QString& text) const { - return QString(text).replace(disallowed_filename_characters_, " ").simplified(); +QString PodcastDownloader::SanitiseFilenameComponent(const QString& text) + const { + return QString(text) + .replace(disallowed_filename_characters_, " ") + .simplified(); } void PodcastDownloader::SubscriptionAdded(const Podcast& podcast) { @@ -298,14 +297,13 @@ void PodcastDownloader::AutoDelete() { QDateTime max_date = QDateTime::currentDateTime(); max_date.addSecs(-delete_after_secs_); - PodcastEpisodeList old_episodes = backend_->GetOldDownloadedEpisodes(max_date); - if (old_episodes.isEmpty()) - return; + PodcastEpisodeList old_episodes = + backend_->GetOldDownloadedEpisodes(max_date); + if (old_episodes.isEmpty()) return; qLog(Info) << "Deleting" << old_episodes.count() << "episodes because they were last listened to" - << (delete_after_secs_ / kSecsPerDay) - << "days ago"; + << (delete_after_secs_ / kSecsPerDay) << "days ago"; for (const PodcastEpisode& episode : old_episodes) { DeleteEpisode(episode); diff --git a/src/podcasts/podcastdownloader.h b/src/podcasts/podcastdownloader.h index 8e66da260..500e42876 100644 --- a/src/podcasts/podcastdownloader.h +++ b/src/podcasts/podcastdownloader.h @@ -15,8 +15,8 @@ along with Clementine. If not, see . */ -#ifndef PODCASTDOWNLOADER_H -#define PODCASTDOWNLOADER_H +#ifndef PODCASTS_PODCASTDOWNLOADER_H_ +#define PODCASTS_PODCASTDOWNLOADER_H_ #include "podcast.h" #include "podcastepisode.h" @@ -41,37 +41,32 @@ class QNetworkAccessManager; class PodcastDownloader : public QObject { Q_OBJECT -public: - PodcastDownloader(Application* app, QObject* parent = 0); + public: + PodcastDownloader(Application* app, QObject* parent = nullptr); - enum State { - NotDownloading, - Queued, - Downloading, - Finished - }; + enum State { NotDownloading, Queued, Downloading, Finished }; static const char* kSettingsGroup; static const int kAutoDeleteCheckIntervalMsec; QString DefaultDownloadDir() const; -public slots: + public slots: // Adds the episode to the download queue void DownloadEpisode(const PodcastEpisode& episode); // Deletes downloaded data for this episode void DeleteEpisode(const PodcastEpisode& episode); -signals: + signals: void ProgressChanged(const PodcastEpisode& episode, PodcastDownloader::State state, int percent); -private slots: + private slots: void ReloadSettings(); void SubscriptionAdded(const Podcast& podcast); - void EpisodesAdded(const QList& episodes); + void EpisodesAdded(const PodcastEpisodeList& episodes); void ReplyReadyRead(); void ReplyFinished(); @@ -79,7 +74,7 @@ private slots: void AutoDelete(); -private: + private: struct Task; void StartDownloading(Task* task); @@ -90,7 +85,7 @@ private: const PodcastEpisode& episode) const; QString SanitiseFilenameComponent(const QString& text) const; -private: + private: Application* app_; PodcastBackend* backend_; QNetworkAccessManager* network_; @@ -110,4 +105,4 @@ private: QTimer* auto_delete_timer_; }; -#endif // PODCASTDOWNLOADER_H +#endif // PODCASTS_PODCASTDOWNLOADER_H_ diff --git a/src/podcasts/podcastepisode.cpp b/src/podcasts/podcastepisode.cpp index 4924a7810..b4e806e57 100644 --- a/src/podcasts/podcastepisode.cpp +++ b/src/podcasts/podcastepisode.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -26,15 +26,26 @@ #include #include -const QStringList PodcastEpisode::kColumns = QStringList() - << "podcast_id" << "title" << "description" << "author" - << "publication_date" << "duration_secs" << "url" << "listened" - << "listened_date" << "downloaded" << "local_url" << "extra"; +const QStringList PodcastEpisode::kColumns = QStringList() << "podcast_id" + << "title" + << "description" + << "author" + << "publication_date" + << "duration_secs" + << "url" + << "listened" + << "listened_date" + << "downloaded" + << "local_url" + << "extra"; const QString PodcastEpisode::kColumnSpec = PodcastEpisode::kColumns.join(", "); -const QString PodcastEpisode::kJoinSpec = Utilities::Prepend("e.", PodcastEpisode::kColumns).join(", "); -const QString PodcastEpisode::kBindSpec = Utilities::Prepend(":", PodcastEpisode::kColumns).join(", "); -const QString PodcastEpisode::kUpdateSpec = Utilities::Updateify(PodcastEpisode::kColumns).join(", "); +const QString PodcastEpisode::kJoinSpec = + Utilities::Prepend("e.", PodcastEpisode::kColumns).join(", "); +const QString PodcastEpisode::kBindSpec = + Utilities::Prepend(":", PodcastEpisode::kColumns).join(", "); +const QString PodcastEpisode::kUpdateSpec = + Utilities::Updateify(PodcastEpisode::kColumns).join(", "); struct PodcastEpisode::Private : public QSharedData { Private(); @@ -59,61 +70,68 @@ struct PodcastEpisode::Private : public QSharedData { }; PodcastEpisode::Private::Private() - : database_id_(-1), - podcast_database_id_(-1), - duration_secs_(-1), - listened_(false), - downloaded_(false) -{ -} + : database_id_(-1), + podcast_database_id_(-1), + duration_secs_(-1), + listened_(false), + downloaded_(false) {} -PodcastEpisode::PodcastEpisode() - : d(new Private) -{ -} +PodcastEpisode::PodcastEpisode() : d(new Private) {} -PodcastEpisode::PodcastEpisode(const PodcastEpisode& other) - : d(other.d) -{ -} +PodcastEpisode::PodcastEpisode(const PodcastEpisode& other) : d(other.d) {} -PodcastEpisode::~PodcastEpisode() { -} +PodcastEpisode::~PodcastEpisode() {} -PodcastEpisode& PodcastEpisode::operator =(const PodcastEpisode& other) { +PodcastEpisode& PodcastEpisode::operator=(const PodcastEpisode& other) { d = other.d; return *this; } int PodcastEpisode::database_id() const { return d->database_id_; } -int PodcastEpisode::podcast_database_id() const { return d->podcast_database_id_; } +int PodcastEpisode::podcast_database_id() const { + return d->podcast_database_id_; +} const QString& PodcastEpisode::title() const { return d->title_; } const QString& PodcastEpisode::description() const { return d->description_; } const QString& PodcastEpisode::author() const { return d->author_; } -const QDateTime& PodcastEpisode::publication_date() const { return d->publication_date_; } +const QDateTime& PodcastEpisode::publication_date() const { + return d->publication_date_; +} int PodcastEpisode::duration_secs() const { return d->duration_secs_; } const QUrl& PodcastEpisode::url() const { return d->url_; } bool PodcastEpisode::listened() const { return d->listened_; } -const QDateTime& PodcastEpisode::listened_date() const { return d->listened_date_; } +const QDateTime& PodcastEpisode::listened_date() const { + return d->listened_date_; +} bool PodcastEpisode::downloaded() const { return d->downloaded_; } const QUrl& PodcastEpisode::local_url() const { return d->local_url_; } const QVariantMap& PodcastEpisode::extra() const { return d->extra_; } -QVariant PodcastEpisode::extra(const QString& key) const { return d->extra_[key]; } +QVariant PodcastEpisode::extra(const QString& key) const { + return d->extra_[key]; +} void PodcastEpisode::set_database_id(int v) { d->database_id_ = v; } -void PodcastEpisode::set_podcast_database_id(int v) { d->podcast_database_id_ = v; } +void PodcastEpisode::set_podcast_database_id(int v) { + d->podcast_database_id_ = v; +} void PodcastEpisode::set_title(const QString& v) { d->title_ = v; } void PodcastEpisode::set_description(const QString& v) { d->description_ = v; } void PodcastEpisode::set_author(const QString& v) { d->author_ = v; } -void PodcastEpisode::set_publication_date(const QDateTime& v) { d->publication_date_ = v; } +void PodcastEpisode::set_publication_date(const QDateTime& v) { + d->publication_date_ = v; +} void PodcastEpisode::set_duration_secs(int v) { d->duration_secs_ = v; } void PodcastEpisode::set_url(const QUrl& v) { d->url_ = v; } void PodcastEpisode::set_listened(bool v) { d->listened_ = v; } -void PodcastEpisode::set_listened_date(const QDateTime& v) { d->listened_date_ = v; } +void PodcastEpisode::set_listened_date(const QDateTime& v) { + d->listened_date_ = v; +} void PodcastEpisode::set_downloaded(bool v) { d->downloaded_ = v; } void PodcastEpisode::set_local_url(const QUrl& v) { d->local_url_ = v; } void PodcastEpisode::set_extra(const QVariantMap& v) { d->extra_ = v; } -void PodcastEpisode::set_extra(const QString& key, const QVariant& value) { d->extra_[key] = value; } +void PodcastEpisode::set_extra(const QString& key, const QVariant& value) { + d->extra_[key] = value; +} void PodcastEpisode::InitFromQuery(const QSqlQuery& query) { d->database_id_ = query.value(0).toInt(); @@ -175,8 +193,7 @@ Song PodcastEpisode::ToSong(const Podcast& podcast) const { ret.set_album(podcast.title().simplified()); ret.set_art_automatic(podcast.ImageUrlLarge().toString()); - if (author().isEmpty()) - ret.set_artist(podcast.title().simplified()); + if (author().isEmpty()) ret.set_artist(podcast.title().simplified()); } return ret; } diff --git a/src/podcasts/podcastepisode.h b/src/podcasts/podcastepisode.h index 92505f98c..2539e6be7 100644 --- a/src/podcasts/podcastepisode.h +++ b/src/podcasts/podcastepisode.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTEPISODE_H -#define PODCASTEPISODE_H +#ifndef PODCASTS_PODCASTEPISODE_H_ +#define PODCASTS_PODCASTEPISODE_H_ #include "core/song.h" @@ -28,7 +28,7 @@ class Podcast; class PodcastEpisode { -public: + public: PodcastEpisode(); PodcastEpisode(const PodcastEpisode& other); ~PodcastEpisode(); @@ -76,9 +76,9 @@ public: void set_extra(const QVariantMap& v); void set_extra(const QString& key, const QVariant& value); - PodcastEpisode& operator =(const PodcastEpisode& other); + PodcastEpisode& operator=(const PodcastEpisode& other); -private: + private: struct Private; QSharedDataPointer d; }; @@ -87,4 +87,4 @@ Q_DECLARE_METATYPE(PodcastEpisode) typedef QList PodcastEpisodeList; Q_DECLARE_METATYPE(QList) -#endif // PODCASTEPISODE_H +#endif // PODCASTS_PODCASTEPISODE_H_ diff --git a/src/podcasts/podcastinfowidget.cpp b/src/podcasts/podcastinfowidget.cpp index 2669aad14..dd6559ac4 100644 --- a/src/podcasts/podcastinfowidget.cpp +++ b/src/podcasts/podcastinfowidget.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -21,11 +21,10 @@ #include "covers/albumcoverloader.h" PodcastInfoWidget::PodcastInfoWidget(QWidget* parent) - : QWidget(parent), - ui_(new Ui_PodcastInfoWidget), - app_(NULL), - image_id_(0) -{ + : QWidget(parent), + ui_(new Ui_PodcastInfoWidget), + app_(nullptr), + image_id_(0) { ui_->setupUi(this); cover_options_.desired_height_ = 180; @@ -36,39 +35,39 @@ PodcastInfoWidget::PodcastInfoWidget(QWidget* parent) const bool light = palette().color(QPalette::Base).value() > 128; const QColor color = palette().color(QPalette::Dark); QPalette label_palette(palette()); - label_palette.setColor(QPalette::WindowText, light ? color.darker(150) : color.lighter(125)); + label_palette.setColor(QPalette::WindowText, + light ? color.darker(150) : color.lighter(125)); - foreach (QLabel* label, findChildren()) { + for (QLabel* label : findChildren()) { if (label->property("field_label").toBool()) { label->setPalette(label_palette); } } } -PodcastInfoWidget::~PodcastInfoWidget() { -} +PodcastInfoWidget::~PodcastInfoWidget() {} void PodcastInfoWidget::SetApplication(Application* app) { app_ = app; - connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(ImageLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(ImageLoaded(quint64, QImage))); } namespace { - template - void SetText(const QString& value, T* label, QLabel* buddy_label = NULL) { - const bool visible = !value.isEmpty(); +template +void SetText(const QString& value, T* label, QLabel* buddy_label = nullptr) { + const bool visible = !value.isEmpty(); - label->setVisible(visible); - if (buddy_label) { - buddy_label->setVisible(visible); - } + label->setVisible(visible); + if (buddy_label) { + buddy_label->setVisible(visible); + } - if (visible) { - label->setText(value); - } + if (visible) { + label->setText(value); } } +} // namespace void PodcastInfoWidget::SetPodcast(const Podcast& podcast) { if (image_id_) { @@ -81,7 +80,7 @@ void PodcastInfoWidget::SetPodcast(const Podcast& podcast) { if (podcast.ImageUrlLarge().isValid()) { // Start loading an image for this item. image_id_ = app_->album_cover_loader()->LoadImageAsync( - cover_options_, podcast.ImageUrlLarge().toString(), QString()); + cover_options_, podcast.ImageUrlLarge().toString(), QString()); } ui_->image->hide(); @@ -92,7 +91,8 @@ void PodcastInfoWidget::SetPodcast(const Podcast& podcast) { SetText(podcast.author(), ui_->author, ui_->author_label); SetText(podcast.owner_name(), ui_->owner, ui_->owner_label); SetText(podcast.link().toString(), ui_->website, ui_->website_label); - SetText(podcast.extra("gpodder:subscribers").toString(), ui_->subscribers, ui_->subscribers_label); + SetText(podcast.extra("gpodder:subscribers").toString(), ui_->subscribers, + ui_->subscribers_label); if (!image_id_) { emit LoadingFinished(); diff --git a/src/podcasts/podcastinfowidget.h b/src/podcasts/podcastinfowidget.h index c5ade4750..375d700ac 100644 --- a/src/podcasts/podcastinfowidget.h +++ b/src/podcasts/podcastinfowidget.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTINFOWIDGET_H -#define PODCASTINFOWIDGET_H +#ifndef PODCASTS_PODCASTINFOWIDGET_H_ +#define PODCASTS_PODCASTINFOWIDGET_H_ #include "podcast.h" #include "covers/albumcoverloaderoptions.h" @@ -31,21 +31,21 @@ class QLabel; class PodcastInfoWidget : public QWidget { Q_OBJECT -public: - PodcastInfoWidget(QWidget* parent = 0); + public: + explicit PodcastInfoWidget(QWidget* parent = nullptr); ~PodcastInfoWidget(); void SetApplication(Application* app); void SetPodcast(const Podcast& podcast); -signals: + signals: void LoadingFinished(); -private slots: + private slots: void ImageLoaded(quint64 id, const QImage& image); -private: + private: Ui_PodcastInfoWidget* ui_; AlbumCoverLoaderOptions cover_options_; @@ -55,4 +55,4 @@ private: quint64 image_id_; }; -#endif // PODCASTINFOWIDGET_H +#endif // PODCASTS_PODCASTINFOWIDGET_H_ diff --git a/src/podcasts/podcastparser.cpp b/src/podcasts/podcastparser.cpp index 4cb5afe32..a0333b0ec 100644 --- a/src/podcasts/podcastparser.cpp +++ b/src/podcasts/podcastparser.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -24,7 +24,8 @@ #include const char* PodcastParser::kAtomNamespace = "http://www.w3.org/2005/Atom"; -const char* PodcastParser::kItunesNamespace = "http://www.itunes.com/dtds/podcast-1.0.dtd"; +const char* PodcastParser::kItunesNamespace = + "http://www.itunes.com/dtds/podcast-1.0.dtd"; PodcastParser::PodcastParser() { supported_mime_types_ << "application/rss+xml" @@ -39,7 +40,7 @@ bool PodcastParser::SupportsContentType(const QString& content_type) const { return true; } - foreach (const QString& mime_type, supported_mime_types()) { + for (const QString& mime_type : supported_mime_types()) { if (content_type.contains(mime_type)) { return true; } @@ -49,8 +50,7 @@ bool PodcastParser::SupportsContentType(const QString& content_type) const { bool PodcastParser::TryMagic(const QByteArray& data) const { QString str(QString::fromUtf8(data)); - return str.contains(QRegExp("atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name == "title") { - ret->set_title(reader->readElementText()); - } else if (name == "link" && reader->namespaceUri().isEmpty()) { - ret->set_link(QUrl::fromEncoded(reader->readElementText().toAscii())); - } else if (name == "description") { - ret->set_description(reader->readElementText()); - } else if (name == "owner" && reader->namespaceUri() == kItunesNamespace) { - ParseItunesOwner(reader, ret); - } else if (name == "image") { - ParseImage(reader, ret); - } else if (name == "copyright") { - ret->set_copyright(reader->readElementText()); - } else if (name == "link" && reader->namespaceUri() == kAtomNamespace && - ret->url().isEmpty() && reader->attributes().value("rel") == "self") { - ret->set_url(QUrl::fromEncoded(reader->readElementText().toAscii())); - } else if (name == "item") { - ParseItem(reader, ret); - } else { - Utilities::ConsumeCurrentElement(reader); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name == "title") { + ret->set_title(reader->readElementText()); + } else if (name == "link" && reader->namespaceUri().isEmpty()) { + ret->set_link(QUrl::fromEncoded(reader->readElementText().toAscii())); + } else if (name == "description") { + ret->set_description(reader->readElementText()); + } else if (name == "owner" && + reader->namespaceUri() == kItunesNamespace) { + ParseItunesOwner(reader, ret); + } else if (name == "image") { + ParseImage(reader, ret); + } else if (name == "copyright") { + ret->set_copyright(reader->readElementText()); + } else if (name == "link" && reader->namespaceUri() == kAtomNamespace && + ret->url().isEmpty() && + reader->attributes().value("rel") == "self") { + ret->set_url(QUrl::fromEncoded(reader->readElementText().toAscii())); + } else if (name == "item") { + ParseItem(reader, ret); + } else { + Utilities::ConsumeCurrentElement(reader); + } + break; } - break; - } - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } @@ -140,46 +142,48 @@ void PodcastParser::ParseImage(QXmlStreamReader* reader, Podcast* ret) const { while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name == "url") { - ret->set_image_url_large(QUrl::fromEncoded(reader->readElementText().toAscii())); - } else { - Utilities::ConsumeCurrentElement(reader); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name == "url") { + ret->set_image_url_large( + QUrl::fromEncoded(reader->readElementText().toAscii())); + } else { + Utilities::ConsumeCurrentElement(reader); + } + break; } - break; - } - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } -void PodcastParser::ParseItunesOwner(QXmlStreamReader* reader, Podcast* ret) const { +void PodcastParser::ParseItunesOwner(QXmlStreamReader* reader, + Podcast* ret) const { while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name == "name") { - ret->set_owner_name(reader->readElementText()); - } else if (name == "email") { - ret->set_owner_email(reader->readElementText()); - } else { - Utilities::ConsumeCurrentElement(reader); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name == "name") { + ret->set_owner_name(reader->readElementText()); + } else if (name == "email") { + ret->set_owner_email(reader->readElementText()); + } else { + Utilities::ConsumeCurrentElement(reader); + } + break; } - break; - } - case QXmlStreamReader::EndElement: - return; + case QXmlStreamReader::EndElement: + return; - default: - break; + default: + break; } } } @@ -190,52 +194,55 @@ void PodcastParser::ParseItem(QXmlStreamReader* reader, Podcast* ret) const { while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name == "title") { - episode.set_title(reader->readElementText()); - } else if (name == "description") { - episode.set_description(reader->readElementText()); - } else if (name == "pubDate") { - episode.set_publication_date(Utilities::ParseRFC822DateTime(reader->readElementText())); - } else if (name == "duration" && reader->namespaceUri() == kItunesNamespace) { - // http://www.apple.com/itunes/podcasts/specs.html - QStringList parts = reader->readElementText().split(':'); - if (parts.count() == 2) { - episode.set_duration_secs(parts[0].toInt() * 60 + - parts[1].toInt()); - } else if (parts.count() >= 3) { - episode.set_duration_secs(parts[0].toInt() * 60*60 + - parts[1].toInt() * 60 + - parts[2].toInt()); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name == "title") { + episode.set_title(reader->readElementText()); + } else if (name == "description") { + episode.set_description(reader->readElementText()); + } else if (name == "pubDate") { + episode.set_publication_date( + Utilities::ParseRFC822DateTime(reader->readElementText())); + } else if (name == "duration" && + reader->namespaceUri() == kItunesNamespace) { + // http://www.apple.com/itunes/podcasts/specs.html + QStringList parts = reader->readElementText().split(':'); + if (parts.count() == 2) { + episode.set_duration_secs(parts[0].toInt() * 60 + parts[1].toInt()); + } else if (parts.count() >= 3) { + episode.set_duration_secs(parts[0].toInt() * 60 * 60 + + parts[1].toInt() * 60 + parts[2].toInt()); + } + } else if (name == "enclosure") { + const QString type = reader->attributes().value("type").toString(); + if (type.startsWith("audio/") || type.startsWith("x-audio/")) { + episode.set_url(QUrl::fromEncoded( + reader->attributes().value("url").toString().toAscii())); + } + Utilities::ConsumeCurrentElement(reader); + } else if (name == "author" && + reader->namespaceUri() == kItunesNamespace) { + episode.set_author(reader->readElementText()); + } else { + Utilities::ConsumeCurrentElement(reader); } - } else if (name == "enclosure") { - const QString type = reader->attributes().value("type").toString(); - if (type.startsWith("audio/") || type.startsWith("x-audio/")) { - episode.set_url(QUrl::fromEncoded(reader->attributes().value("url").toString().toAscii())); + break; + } + + case QXmlStreamReader::EndElement: + if (!episode.url().isEmpty()) { + ret->add_episode(episode); } - Utilities::ConsumeCurrentElement(reader); - } else if (name == "author" && reader->namespaceUri() == kItunesNamespace) { - episode.set_author(reader->readElementText()); - } else { - Utilities::ConsumeCurrentElement(reader); - } - break; - } + return; - case QXmlStreamReader::EndElement: - if (!episode.url().isEmpty()) { - ret->add_episode(episode); - } - return; - - default: - break; + default: + break; } } } -bool PodcastParser::ParseOpml(QXmlStreamReader* reader, OpmlContainer* ret) const { +bool PodcastParser::ParseOpml(QXmlStreamReader* reader, + OpmlContainer* ret) const { if (!Utilities::ParseUntilElement(reader, "body")) { return false; } @@ -243,61 +250,63 @@ bool PodcastParser::ParseOpml(QXmlStreamReader* reader, OpmlContainer* ret) cons ParseOutline(reader, ret); // OPML files sometimes consist of a single top level container. - while (ret->feeds.count() == 0 && - ret->containers.count() == 1) { + while (ret->feeds.count() == 0 && ret->containers.count() == 1) { *ret = ret->containers[0]; } return true; } -void PodcastParser::ParseOutline(QXmlStreamReader* reader, OpmlContainer* ret) const { +void PodcastParser::ParseOutline(QXmlStreamReader* reader, + OpmlContainer* ret) const { while (!reader->atEnd()) { QXmlStreamReader::TokenType type = reader->readNext(); switch (type) { - case QXmlStreamReader::StartElement: { - const QStringRef name = reader->name(); - if (name != "outline") { - Utilities::ConsumeCurrentElement(reader); - continue; - } - - QXmlStreamAttributes attributes = reader->attributes(); - - if (attributes.value("type").toString() == "rss") { - // Parse the feed and add it to this container - Podcast podcast; - podcast.set_description(attributes.value("description").toString()); - podcast.set_title(attributes.value("text").toString()); - podcast.set_image_url_large(QUrl::fromEncoded(attributes.value("imageHref").toString().toAscii())); - podcast.set_url(QUrl::fromEncoded(attributes.value("xmlUrl").toString().toAscii())); - ret->feeds.append(podcast); - - // Consume any children and the EndElement. - Utilities::ConsumeCurrentElement(reader); - } else { - // Create a new child container - OpmlContainer child; - - // Take the name from the fullname attribute first if it exists. - child.name = attributes.value("fullname").toString(); - if (child.name.isEmpty()) { - child.name = attributes.value("text").toString(); + case QXmlStreamReader::StartElement: { + const QStringRef name = reader->name(); + if (name != "outline") { + Utilities::ConsumeCurrentElement(reader); + continue; } - // Parse its contents and add it to this container - ParseOutline(reader, &child); - ret->containers.append(child); + QXmlStreamAttributes attributes = reader->attributes(); + + if (attributes.value("type").toString() == "rss") { + // Parse the feed and add it to this container + Podcast podcast; + podcast.set_description(attributes.value("description").toString()); + podcast.set_title(attributes.value("text").toString()); + podcast.set_image_url_large(QUrl::fromEncoded( + attributes.value("imageHref").toString().toAscii())); + podcast.set_url(QUrl::fromEncoded( + attributes.value("xmlUrl").toString().toAscii())); + ret->feeds.append(podcast); + + // Consume any children and the EndElement. + Utilities::ConsumeCurrentElement(reader); + } else { + // Create a new child container + OpmlContainer child; + + // Take the name from the fullname attribute first if it exists. + child.name = attributes.value("fullname").toString(); + if (child.name.isEmpty()) { + child.name = attributes.value("text").toString(); + } + + // Parse its contents and add it to this container + ParseOutline(reader, &child); + ret->containers.append(child); + } + + break; } - break; - } + case QXmlStreamReader::EndElement: + return; - case QXmlStreamReader::EndElement: - return; - - default: - break; + default: + break; } } } diff --git a/src/podcasts/podcastparser.h b/src/podcasts/podcastparser.h index b5273e544..b70623962 100644 --- a/src/podcasts/podcastparser.h +++ b/src/podcasts/podcastparser.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTPARSER_H -#define PODCASTPARSER_H +#ifndef PODCASTS_PODCASTPARSER_H_ +#define PODCASTS_PODCASTPARSER_H_ #include @@ -30,13 +30,15 @@ class QXmlStreamReader; // Returns either a Podcast or an OpmlContainer depending on what was inside // the XML document. class PodcastParser { -public: + public: PodcastParser(); static const char* kAtomNamespace; static const char* kItunesNamespace; - const QStringList& supported_mime_types() const { return supported_mime_types_; } + const QStringList& supported_mime_types() const { + return supported_mime_types_; + } bool SupportsContentType(const QString& content_type) const; // You should check the type of the returned QVariant to see whether it @@ -48,7 +50,7 @@ public: // still return a null QVariant. bool TryMagic(const QByteArray& data) const; -private: + private: bool ParseRss(QXmlStreamReader* reader, Podcast* ret) const; void ParseChannel(QXmlStreamReader* reader, Podcast* ret) const; void ParseImage(QXmlStreamReader* reader, Podcast* ret) const; @@ -58,8 +60,8 @@ private: bool ParseOpml(QXmlStreamReader* reader, OpmlContainer* ret) const; void ParseOutline(QXmlStreamReader* reader, OpmlContainer* ret) const; -private: + private: QStringList supported_mime_types_; }; -#endif // PODCASTPARSER_H +#endif // PODCASTS_PODCASTPARSER_H_ diff --git a/src/podcasts/podcastservice.cpp b/src/podcasts/podcastservice.cpp index 72d92c643..32d693d72 100644 --- a/src/podcasts/podcastservice.cpp +++ b/src/podcasts/podcastservice.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -41,49 +41,50 @@ const char* PodcastService::kServiceName = "Podcasts"; const char* PodcastService::kSettingsGroup = "Podcasts"; - class PodcastSortProxyModel : public QSortFilterProxyModel { -public: - PodcastSortProxyModel(QObject* parent = NULL); + public: + explicit PodcastSortProxyModel(QObject* parent = nullptr); -protected: + protected: bool lessThan(const QModelIndex& left, const QModelIndex& right) const; }; - PodcastService::PodcastService(Application* app, InternetModel* parent) - : InternetService(kServiceName, app, parent, parent), - use_pretty_covers_(true), - icon_loader_(new StandardItemIconLoader(app->album_cover_loader(), this)), - backend_(app->podcast_backend()), - model_(new PodcastServiceModel(this)), - proxy_(new PodcastSortProxyModel(this)), - context_menu_(NULL), - root_(NULL), - organise_dialog_(new OrganiseDialog(app_->task_manager())) -{ + : InternetService(kServiceName, app, parent, parent), + use_pretty_covers_(true), + icon_loader_(new StandardItemIconLoader(app->album_cover_loader(), this)), + backend_(app->podcast_backend()), + model_(new PodcastServiceModel(this)), + proxy_(new PodcastSortProxyModel(this)), + context_menu_(nullptr), + root_(nullptr), + organise_dialog_(new OrganiseDialog(app_->task_manager())) { icon_loader_->SetModel(model_); proxy_->setSourceModel(model_); proxy_->setDynamicSortFilter(true); proxy_->sort(0); - connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), SLOT(SubscriptionAdded(Podcast))); - connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), SLOT(SubscriptionRemoved(Podcast))); - connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), SLOT(EpisodesAdded(PodcastEpisodeList))); - connect(backend_, SIGNAL(EpisodesUpdated(PodcastEpisodeList)), SLOT(EpisodesUpdated(PodcastEpisodeList))); + connect(backend_, SIGNAL(SubscriptionAdded(Podcast)), + SLOT(SubscriptionAdded(Podcast))); + connect(backend_, SIGNAL(SubscriptionRemoved(Podcast)), + SLOT(SubscriptionRemoved(Podcast))); + connect(backend_, SIGNAL(EpisodesAdded(PodcastEpisodeList)), + SLOT(EpisodesAdded(PodcastEpisodeList))); + connect(backend_, SIGNAL(EpisodesUpdated(PodcastEpisodeList)), + SLOT(EpisodesUpdated(PodcastEpisodeList))); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(CurrentSongChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + SLOT(CurrentSongChanged(Song))); } -PodcastService::~PodcastService() { -} +PodcastService::~PodcastService() {} PodcastSortProxyModel::PodcastSortProxyModel(QObject* parent) - : QSortFilterProxyModel(parent) { -} + : QSortFilterProxyModel(parent) {} -bool PodcastSortProxyModel::lessThan(const QModelIndex& left, const QModelIndex& right) const { - const int left_type = left.data(InternetModel::Role_Type).toInt(); +bool PodcastSortProxyModel::lessThan(const QModelIndex& left, + const QModelIndex& right) const { + const int left_type = left.data(InternetModel::Role_Type).toInt(); const int right_type = right.data(InternetModel::Role_Type).toInt(); // The special Add Podcast item comes first @@ -97,18 +98,21 @@ bool PodcastSortProxyModel::lessThan(const QModelIndex& left, const QModelIndex& return QSortFilterProxyModel::lessThan(left, right); switch (left_type) { - case PodcastService::Type_Podcast: - return left.data().toString().localeAwareCompare(right.data().toString()) < 0; + case PodcastService::Type_Podcast: + return left.data().toString().localeAwareCompare( + right.data().toString()) < 0; - case PodcastService::Type_Episode: { - const PodcastEpisode left_episode = left.data(PodcastService::Role_Episode).value(); - const PodcastEpisode right_episode = right.data(PodcastService::Role_Episode).value(); + case PodcastService::Type_Episode: { + const PodcastEpisode left_episode = + left.data(PodcastService::Role_Episode).value(); + const PodcastEpisode right_episode = + right.data(PodcastService::Role_Episode).value(); - return left_episode.publication_date() > right_episode.publication_date(); - } + return left_episode.publication_date() > right_episode.publication_date(); + } - default: - return QSortFilterProxyModel::lessThan(left, right); + default: + return QSortFilterProxyModel::lessThan(left, right); } } @@ -134,22 +138,21 @@ void PodcastService::CopyToDevice(const PodcastEpisodeList& episodes_list) { songs.append(episode.ToSong(podcast)); } - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); - if (organise_dialog_->SetSongs(songs)) - organise_dialog_->show(); + if (organise_dialog_->SetSongs(songs)) organise_dialog_->show(); } void PodcastService::CopyToDevice(const QModelIndexList& episode_indexes, - const QModelIndexList& podcast_indexes) { + const QModelIndexList& podcast_indexes) { PodcastEpisode episode_tmp; - SongList songs; + SongList songs; PodcastEpisodeList episodes; Podcast podcast; for (const QModelIndex& index : episode_indexes) { episode_tmp = index.data(Role_Episode).value(); - if (episode_tmp.downloaded()) - episodes << episode_tmp; + if (episode_tmp.downloaded()) episodes << episode_tmp; } for (const QModelIndex& podcast : podcast_indexes) { @@ -165,26 +168,28 @@ void PodcastService::CopyToDevice(const QModelIndexList& episode_indexes, songs.append(episode.ToSong(podcast)); } - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); - if (organise_dialog_->SetSongs(songs)) - organise_dialog_->show(); + if (organise_dialog_->SetSongs(songs)) organise_dialog_->show(); } void PodcastService::LazyPopulate(QStandardItem* parent) { switch (parent->data(InternetModel::Role_Type).toInt()) { - case InternetModel::Type_Service: - PopulatePodcastList(model_->invisibleRootItem()); - model()->merged_model()->AddSubModel(parent->index(), proxy_); - break; + case InternetModel::Type_Service: + PopulatePodcastList(model_->invisibleRootItem()); + model()->merged_model()->AddSubModel(parent->index(), proxy_); + break; } } void PodcastService::PopulatePodcastList(QStandardItem* parent) { // Do this here since the downloader won't be created yet in the ctor. - connect(app_->podcast_downloader(), - SIGNAL(ProgressChanged(PodcastEpisode, PodcastDownloader::State, int)), - SLOT(DownloadProgressChanged(PodcastEpisode, PodcastDownloader::State, int))); + connect( + app_->podcast_downloader(), + SIGNAL(ProgressChanged(PodcastEpisode, PodcastDownloader::State, int)), + SLOT(DownloadProgressChanged(PodcastEpisode, PodcastDownloader::State, + int))); if (default_icon_.isNull()) { default_icon_ = QIcon(":providers/podcast16.png"); @@ -195,7 +200,8 @@ void PodcastService::PopulatePodcastList(QStandardItem* parent) { } } -void PodcastService::UpdatePodcastText(QStandardItem* item, int unlistened_count) const { +void PodcastService::UpdatePodcastText(QStandardItem* item, + int unlistened_count) const { const Podcast podcast = item->data(Role_Podcast).value(); QString title = podcast.title().simplified(); @@ -216,7 +222,8 @@ void PodcastService::UpdatePodcastText(QStandardItem* item, int unlistened_count void PodcastService::UpdateEpisodeText(QStandardItem* item, PodcastDownloader::State state, int percent) { - const PodcastEpisode episode = item->data(Role_Episode).value(); + const PodcastEpisode episode = + item->data(Role_Episode).value(); QString title = episode.title().simplified(); QString tooltip; @@ -238,26 +245,27 @@ void PodcastService::UpdateEpisodeText(QStandardItem* item, // Queued or downloading episodes get icons, tooltips, and maybe a title. switch (state) { - case PodcastDownloader::Queued: - if (queued_icon_.isNull()) { - queued_icon_ = QIcon(":icons/22x22/user-away.png"); - } - icon = queued_icon_; - tooltip = tr("Download queued"); - break; + case PodcastDownloader::Queued: + if (queued_icon_.isNull()) { + queued_icon_ = QIcon(":icons/22x22/user-away.png"); + } + icon = queued_icon_; + tooltip = tr("Download queued"); + break; - case PodcastDownloader::Downloading: - if (downloading_icon_.isNull()) { - downloading_icon_ = IconLoader::Load("go-down"); - } - icon = downloading_icon_; - tooltip = tr("Downloading (%1%)...").arg(percent); - title = QString("[ %1% ] %2").arg(QString::number(percent), episode.title()); - break; + case PodcastDownloader::Downloading: + if (downloading_icon_.isNull()) { + downloading_icon_ = IconLoader::Load("go-down"); + } + icon = downloading_icon_; + tooltip = tr("Downloading (%1%)...").arg(percent); + title = + QString("[ %1% ] %2").arg(QString::number(percent), episode.title()); + break; - case PodcastDownloader::Finished: - case PodcastDownloader::NotDownloading: - break; + case PodcastDownloader::Finished: + case PodcastDownloader::NotDownloading: + break; } item->setFont(font); @@ -270,7 +278,8 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { // Add the episodes in this podcast and gather aggregate stats. int unlistened_count = 0; - for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast.database_id())) { + for (const PodcastEpisode& episode : + backend_->GetEpisodes(podcast.database_id())) { if (!episode.listened()) { unlistened_count++; } @@ -281,7 +290,8 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { item->setIcon(default_icon_); item->setData(Type_Podcast, InternetModel::Role_Type); item->setData(QVariant::fromValue(podcast), Role_Podcast); - item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsSelectable); + item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | + Qt::ItemIsSelectable); UpdatePodcastText(item, unlistened_count); // Load the podcast's image if it has one @@ -294,13 +304,16 @@ QStandardItem* PodcastService::CreatePodcastItem(const Podcast& podcast) { return item; } -QStandardItem* PodcastService::CreatePodcastEpisodeItem(const PodcastEpisode& episode) { +QStandardItem* PodcastService::CreatePodcastEpisodeItem( + const PodcastEpisode& episode) { QStandardItem* item = new QStandardItem; item->setText(episode.title().simplified()); item->setData(Type_Episode, InternetModel::Role_Type); item->setData(QVariant::fromValue(episode), Role_Episode); - item->setData(InternetModel::PlayBehaviour_UseSongLoader, InternetModel::Role_PlayBehaviour); - item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsSelectable); + item->setData(InternetModel::PlayBehaviour_UseSongLoader, + InternetModel::Role_PlayBehaviour); + item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | + Qt::ItemIsSelectable); UpdateEpisodeText(item); @@ -312,47 +325,48 @@ QStandardItem* PodcastService::CreatePodcastEpisodeItem(const PodcastEpisode& ep void PodcastService::ShowContextMenu(const QPoint& global_pos) { if (!context_menu_) { context_menu_ = new QMenu; - context_menu_->addAction( - IconLoader::Load("list-add"), tr("Add podcast..."), - this, SLOT(AddPodcast())); - context_menu_->addAction( - IconLoader::Load("view-refresh"), tr("Update all podcasts"), - app_->podcast_updater(), SLOT(UpdateAllPodcastsNow())); + context_menu_->addAction(IconLoader::Load("list-add"), tr("Add podcast..."), + this, SLOT(AddPodcast())); + context_menu_->addAction(IconLoader::Load("view-refresh"), + tr("Update all podcasts"), app_->podcast_updater(), + SLOT(UpdateAllPodcastsNow())); context_menu_->addSeparator(); context_menu_->addActions(GetPlaylistActions()); context_menu_->addSeparator(); update_selected_action_ = context_menu_->addAction( - IconLoader::Load("view-refresh"), tr("Update this podcast"), - this, SLOT(UpdateSelectedPodcast())); - download_selected_action_ = context_menu_->addAction( - IconLoader::Load("download"), "", - this, SLOT(DownloadSelectedEpisode())); + IconLoader::Load("view-refresh"), tr("Update this podcast"), this, + SLOT(UpdateSelectedPodcast())); + download_selected_action_ = + context_menu_->addAction(IconLoader::Load("download"), "", this, + SLOT(DownloadSelectedEpisode())); delete_downloaded_action_ = context_menu_->addAction( - IconLoader::Load("edit-delete"), tr("Delete downloaded data"), - this, SLOT(DeleteDownloadedData())); + IconLoader::Load("edit-delete"), tr("Delete downloaded data"), this, + SLOT(DeleteDownloadedData())); copy_to_device_ = context_menu_->addAction( - IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), - this, SLOT(CopyToDevice())); + IconLoader::Load("multimedia-player-ipod-mini-blue"), + tr("Copy to device..."), this, SLOT(CopyToDevice())); remove_selected_action_ = context_menu_->addAction( - IconLoader::Load("list-remove"), tr("Unsubscribe"), - this, SLOT(RemoveSelectedPodcast())); + IconLoader::Load("list-remove"), tr("Unsubscribe"), this, + SLOT(RemoveSelectedPodcast())); context_menu_->addSeparator(); - set_new_action_ = context_menu_->addAction( - tr("Mark as new"), this, SLOT(SetNew())); - set_listened_action_ = context_menu_->addAction( - tr("Mark as listened"), this, SLOT(SetListened())); + set_new_action_ = + context_menu_->addAction(tr("Mark as new"), this, SLOT(SetNew())); + set_listened_action_ = context_menu_->addAction(tr("Mark as listened"), + this, SLOT(SetListened())); context_menu_->addSeparator(); - context_menu_->addAction( - IconLoader::Load("configure"), tr("Configure podcasts..."), - this, SLOT(ShowConfig())); + context_menu_->addAction(IconLoader::Load("configure"), + tr("Configure podcasts..."), this, + SLOT(ShowConfig())); - copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); - connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), - copy_to_device_, SLOT(setDisabled(bool))); + copy_to_device_->setDisabled( + app_->device_manager()->connected_devices_model()->rowCount() == 0); + connect(app_->device_manager()->connected_devices_model(), + SIGNAL(IsEmptyChanged(bool)), copy_to_device_, + SLOT(setDisabled(bool))); } selected_episodes_.clear(); @@ -362,28 +376,28 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { for (const QModelIndex& index : model()->selected_indexes()) { switch (index.data(InternetModel::Role_Type).toInt()) { - case Type_Podcast: { - const int id = index.data(Role_Podcast).value().database_id(); - if (!podcast_ids.contains(id)) { - selected_podcasts_.append(index); - explicitly_selected_podcasts_.append(index); - podcast_ids.insert(id); + case Type_Podcast: { + const int id = index.data(Role_Podcast).value().database_id(); + if (!podcast_ids.contains(id)) { + selected_podcasts_.append(index); + explicitly_selected_podcasts_.append(index); + podcast_ids.insert(id); + } + break; } - break; - } - case Type_Episode: { - selected_episodes_.append(index); + case Type_Episode: { + selected_episodes_.append(index); - // Add the parent podcast as well. - const QModelIndex parent = index.parent(); - const int id = parent.data(Role_Podcast).value().database_id(); - if (!podcast_ids.contains(id)) { - selected_podcasts_.append(parent); - podcast_ids.insert(id); + // Add the parent podcast as well. + const QModelIndex parent = index.parent(); + const int id = parent.data(Role_Podcast).value().database_id(); + if (!podcast_ids.contains(id)) { + selected_podcasts_.append(parent); + podcast_ids.insert(id); + } + break; } - break; - } } } @@ -396,7 +410,8 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { set_listened_action_->setEnabled(episodes || podcasts); if (selected_episodes_.count() == 1) { - const PodcastEpisode episode = selected_episodes_[0].data(Role_Episode).value(); + const PodcastEpisode episode = + selected_episodes_[0].data(Role_Episode).value(); const bool downloaded = episode.downloaded(); const bool listened = episode.listened(); @@ -418,7 +433,8 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { } if (selected_episodes_.count() > 1) { - download_selected_action_->setText(tr("Download %n episodes", "", selected_episodes_.count())); + download_selected_action_->setText( + tr("Download %n episodes", "", selected_episodes_.count())); } else { download_selected_action_->setText(tr("Download this episode")); } @@ -433,7 +449,7 @@ void PodcastService::ShowContextMenu(const QPoint& global_pos) { void PodcastService::UpdateSelectedPodcast() { for (const QModelIndex& index : selected_podcasts_) { app_->podcast_updater()->UpdatePodcastNow( - index.data(Role_Podcast).value()); + index.data(Role_Podcast).value()); } } @@ -448,13 +464,11 @@ void PodcastService::ReloadSettings() { s.beginGroup(LibraryView::kSettingsGroup); use_pretty_covers_ = s.value("pretty_covers", true).toBool(); - // TODO: reload the podcast icons that are already loaded? + // TODO(notme): reload the podcast icons that are already loaded? } void PodcastService::EnsureAddPodcastDialogCreated() { - if (!add_podcast_dialog_) { - add_podcast_dialog_.reset(new AddPodcastDialog(app_)); - } + add_podcast_dialog_.reset(new AddPodcastDialog(app_)); } void PodcastService::AddPodcast() { @@ -483,8 +497,9 @@ void PodcastService::SubscriptionRemoved(const Podcast& podcast) { // Remove any episode ID -> item mappings for the episodes in this podcast. for (int i = 0; i < item->rowCount(); ++i) { QStandardItem* episode_item = item->child(i); - const int episode_id = - episode_item->data(Role_Episode).value().database_id(); + const int episode_id = episode_item->data(Role_Episode) + .value() + .database_id(); episodes_by_database_id_.remove(episode_id); } @@ -500,8 +515,7 @@ void PodcastService::EpisodesAdded(const PodcastEpisodeList& episodes) { for (const PodcastEpisode& episode : episodes) { const int database_id = episode.podcast_database_id(); QStandardItem* parent = podcasts_by_database_id_[database_id]; - if (!parent) - continue; + if (!parent) continue; parent->appendRow(CreatePodcastEpisodeItem(episode)); @@ -527,8 +541,7 @@ void PodcastService::EpisodesUpdated(const PodcastEpisodeList& episodes) { const int podcast_database_id = episode.podcast_database_id(); QStandardItem* item = episodes_by_database_id_[episode.database_id()]; QStandardItem* parent = podcasts_by_database_id_[podcast_database_id]; - if (!item || !parent) - continue; + if (!item || !parent) continue; // Update the episode data on the item, and update the item's text. item->setData(QVariant::fromValue(episode), Role_Episode); @@ -538,7 +551,8 @@ void PodcastService::EpisodesUpdated(const PodcastEpisodeList& episodes) { if (!seen_podcast_ids.contains(podcast_database_id)) { // Update the unlistened count text once for each podcast int unlistened_count = 0; - for (const PodcastEpisode& episode : backend_->GetEpisodes(podcast_database_id)) { + for (const PodcastEpisode& episode : + backend_->GetEpisodes(podcast_database_id)) { if (!episode.listened()) { unlistened_count++; } @@ -553,14 +567,14 @@ void PodcastService::EpisodesUpdated(const PodcastEpisodeList& episodes) { void PodcastService::DownloadSelectedEpisode() { for (const QModelIndex& index : selected_episodes_) { app_->podcast_downloader()->DownloadEpisode( - index.data(Role_Episode).value()); + index.data(Role_Episode).value()); } } void PodcastService::DeleteDownloadedData() { for (const QModelIndex& index : selected_episodes_) { app_->podcast_downloader()->DeleteEpisode( - index.data(Role_Episode).value()); + index.data(Role_Episode).value()); } } @@ -568,8 +582,7 @@ void PodcastService::DownloadProgressChanged(const PodcastEpisode& episode, PodcastDownloader::State state, int percent) { QStandardItem* item = episodes_by_database_id_[episode.database_id()]; - if (!item) - return; + if (!item) return; UpdateEpisodeText(item, state, percent); } @@ -581,8 +594,7 @@ void PodcastService::ShowConfig() { void PodcastService::CurrentSongChanged(const Song& metadata) { // Check whether this song is one of our podcast episodes. PodcastEpisode episode = backend_->GetEpisodeByUrlOrLocalUrl(metadata.url()); - if (!episode.is_valid()) - return; + if (!episode.is_valid()) return; // Mark it as listened if it's not already if (!episode.listened()) { diff --git a/src/podcasts/podcastservice.h b/src/podcasts/podcastservice.h index 40e135748..925646db5 100644 --- a/src/podcasts/podcastservice.h +++ b/src/podcasts/podcastservice.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTSERVICE_H -#define PODCASTSERVICE_H +#ifndef PODCASTS_PODCASTSERVICE_H_ +#define PODCASTS_PODCASTSERVICE_H_ #include "podcastdownloader.h" #include "internet/internetmodel.h" @@ -37,7 +37,7 @@ class QSortFilterProxyModel; class PodcastService : public InternetService { Q_OBJECT -public: + public: PodcastService(Application* app, InternetModel* parent); ~PodcastService(); @@ -50,11 +50,8 @@ public: Type_Episode }; - enum Role { - Role_Podcast = InternetModel::RoleCount, - Role_Episode - }; - + enum Role { Role_Podcast = InternetModel::RoleCount, Role_Episode }; + QStandardItem* CreateRootItem(); void LazyPopulate(QStandardItem* parent); @@ -65,11 +62,11 @@ public: // subscription to the podcast and displays it in the UI. If the QVariant // contains an OPML file then this displays it in the Add Podcast dialog. void SubscribeAndShow(const QVariant& podcast_or_opml); - -public slots: + + public slots: void AddPodcast(); -private slots: + private slots: void UpdateSelectedPodcast(); void RemoveSelectedPodcast(); void DownloadSelectedEpisode(); @@ -84,24 +81,24 @@ private slots: void EpisodesUpdated(const PodcastEpisodeList& episodes); void DownloadProgressChanged(const PodcastEpisode& episode, - PodcastDownloader::State state, - int percent); + PodcastDownloader::State state, int percent); void CurrentSongChanged(const Song& metadata); void CopyToDevice(); void CopyToDevice(const PodcastEpisodeList& episodes_list); void CopyToDevice(const QModelIndexList& episode_indexes, - const QModelIndexList& podcast_indexes); + const QModelIndexList& podcast_indexes); -private: + private: void EnsureAddPodcastDialogCreated(); void PopulatePodcastList(QStandardItem* parent); void UpdatePodcastText(QStandardItem* item, int unlistened_count) const; - void UpdateEpisodeText(QStandardItem* item, - PodcastDownloader::State state = PodcastDownloader::NotDownloading, - int percent = 0); + void UpdateEpisodeText( + QStandardItem* item, + PodcastDownloader::State state = PodcastDownloader::NotDownloading, + int percent = 0); QStandardItem* CreatePodcastItem(const Podcast& podcast); QStandardItem* CreatePodcastEpisodeItem(const PodcastEpisode& episode); @@ -109,14 +106,12 @@ private: QModelIndex MapToMergedModel(const QModelIndex& index) const; void SetListened(const QModelIndexList& episode_indexes, - const QModelIndexList& podcast_indexes, - bool listened); - void SetListened(const PodcastEpisodeList& episodes_list, - bool listened); + const QModelIndexList& podcast_indexes, bool listened); + void SetListened(const PodcastEpisodeList& episodes_list, bool listened); void LazyLoadRoot(); -private: + private: bool use_pretty_covers_; StandardItemIconLoader* icon_loader_; @@ -150,7 +145,7 @@ private: QMap podcasts_by_database_id_; QMap episodes_by_database_id_; - QScopedPointer add_podcast_dialog_; + std::unique_ptr add_podcast_dialog_; }; -#endif // PODCASTSERVICE_H +#endif // PODCASTS_PODCASTSERVICE_H_ diff --git a/src/podcasts/podcastservicemodel.cpp b/src/podcasts/podcastservicemodel.cpp index 1aab9cb07..1110b4b4e 100644 --- a/src/podcasts/podcastservicemodel.cpp +++ b/src/podcasts/podcastservicemodel.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -20,23 +20,21 @@ #include "playlist/songmimedata.h" PodcastServiceModel::PodcastServiceModel(QObject* parent) - : QStandardItemModel(parent) -{ -} + : QStandardItemModel(parent) {} QMimeData* PodcastServiceModel::mimeData(const QModelIndexList& indexes) const { SongMimeData* data = new SongMimeData; QList urls; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { switch (index.data(InternetModel::Role_Type).toInt()) { - case PodcastService::Type_Episode: - MimeDataForEpisode(index, data, &urls); - break; + case PodcastService::Type_Episode: + MimeDataForEpisode(index, data, &urls); + break; - case PodcastService::Type_Podcast: - MimeDataForPodcast(index, data, &urls); - break; + case PodcastService::Type_Podcast: + MimeDataForPodcast(index, data, &urls); + break; } } @@ -45,10 +43,10 @@ QMimeData* PodcastServiceModel::mimeData(const QModelIndexList& indexes) const { } void PodcastServiceModel::MimeDataForEpisode(const QModelIndex& index, - SongMimeData* data, QList* urls) const { + SongMimeData* data, + QList* urls) const { QVariant episode_variant = index.data(PodcastService::Role_Episode); - if (!episode_variant.isValid()) - return; + if (!episode_variant.isValid()) return; PodcastEpisode episode(episode_variant.value()); @@ -66,7 +64,8 @@ void PodcastServiceModel::MimeDataForEpisode(const QModelIndex& index, } void PodcastServiceModel::MimeDataForPodcast(const QModelIndex& index, - SongMimeData* data, QList* urls) const { + SongMimeData* data, + QList* urls) const { // Get the podcast Podcast podcast; QVariant podcast_variant = index.data(PodcastService::Role_Podcast); @@ -76,10 +75,10 @@ void PodcastServiceModel::MimeDataForPodcast(const QModelIndex& index, // Add each child episode const int children = index.model()->rowCount(index); - for (int i=0 ; i()); Song song = episode.ToSong(podcast); diff --git a/src/podcasts/podcastservicemodel.h b/src/podcasts/podcastservicemodel.h index 463150f8b..eaa243c82 100644 --- a/src/podcasts/podcastservicemodel.h +++ b/src/podcasts/podcastservicemodel.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTSERVICEMODEL_H -#define PODCASTSERVICEMODEL_H +#ifndef PODCASTS_PODCASTSERVICEMODEL_H_ +#define PODCASTS_PODCASTSERVICEMODEL_H_ #include @@ -25,16 +25,16 @@ class SongMimeData; class PodcastServiceModel : public QStandardItemModel { Q_OBJECT -public: - PodcastServiceModel(QObject* parent = 0); - + public: + explicit PodcastServiceModel(QObject* parent = nullptr); + QMimeData* mimeData(const QModelIndexList& indexes) const; -private: - void MimeDataForPodcast(const QModelIndex& index, - SongMimeData* data, QList* urls) const; - void MimeDataForEpisode(const QModelIndex& index, - SongMimeData* data, QList* urls) const; + private: + void MimeDataForPodcast(const QModelIndex& index, SongMimeData* data, + QList* urls) const; + void MimeDataForEpisode(const QModelIndex& index, SongMimeData* data, + QList* urls) const; }; -#endif // PODCASTSERVICEMODEL_H +#endif // PODCASTS_PODCASTSERVICEMODEL_H_ diff --git a/src/podcasts/podcastsettingspage.cpp b/src/podcasts/podcastsettingspage.cpp index f8f92e029..778135d12 100644 --- a/src/podcasts/podcastsettingspage.cpp +++ b/src/podcasts/podcastsettingspage.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -33,40 +33,38 @@ const char* PodcastSettingsPage::kSettingsGroup = "Podcasts"; PodcastSettingsPage::PodcastSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_PodcastSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_PodcastSettingsPage) { ui_->setupUi(this); connect(ui_->login, SIGNAL(clicked()), SLOT(LoginClicked())); connect(ui_->login_state, SIGNAL(LoginClicked()), SLOT(LoginClicked())); connect(ui_->login_state, SIGNAL(LogoutClicked()), SLOT(LogoutClicked())); - connect(ui_->download_dir_browse, SIGNAL(clicked()), SLOT(DownloadDirBrowse())); + connect(ui_->download_dir_browse, SIGNAL(clicked()), + SLOT(DownloadDirBrowse())); ui_->login_state->AddCredentialField(ui_->username); ui_->login_state->AddCredentialField(ui_->device_name); ui_->login_state->AddCredentialField(ui_->password); ui_->login_state->AddCredentialGroup(ui_->login_group); - ui_->check_interval->setItemData(0, 0); // manually - ui_->check_interval->setItemData(1, 10*60); // 10 minutes - ui_->check_interval->setItemData(2, 20*60); // 20 minutes - ui_->check_interval->setItemData(3, 30*60); // 30 minutes - ui_->check_interval->setItemData(4, 60*60); // 1 hour - ui_->check_interval->setItemData(5, 2*60*60); // 2 hours - ui_->check_interval->setItemData(6, 6*60*60); // 6 hours - ui_->check_interval->setItemData(7, 12*60*60); // 12 hours + ui_->check_interval->setItemData(0, 0); // manually + ui_->check_interval->setItemData(1, 10 * 60); // 10 minutes + ui_->check_interval->setItemData(2, 20 * 60); // 20 minutes + ui_->check_interval->setItemData(3, 30 * 60); // 30 minutes + ui_->check_interval->setItemData(4, 60 * 60); // 1 hour + ui_->check_interval->setItemData(5, 2 * 60 * 60); // 2 hours + ui_->check_interval->setItemData(6, 6 * 60 * 60); // 6 hours + ui_->check_interval->setItemData(7, 12 * 60 * 60); // 12 hours } -PodcastSettingsPage::~PodcastSettingsPage() { - delete ui_; -} +PodcastSettingsPage::~PodcastSettingsPage() { delete ui_; } void PodcastSettingsPage::Load() { QSettings s; s.beginGroup(kSettingsGroup); const int update_interval = s.value("update_interval_secs", 0).toInt(); - ui_->check_interval->setCurrentIndex(ui_->check_interval->findData(update_interval)); + ui_->check_interval->setCurrentIndex( + ui_->check_interval->findData(update_interval)); const QString default_download_dir = dialog()->app()->podcast_downloader()->DefaultDownloadDir(); @@ -76,10 +74,13 @@ void PodcastSettingsPage::Load() { ui_->auto_download->setChecked(s.value("auto_download", false).toBool()); ui_->delete_after->setValue(s.value("delete_after", 0).toInt() / kSecsPerDay); ui_->username->setText(s.value("gpodder_username").toString()); - ui_->device_name->setText(s.value("gpodder_device_name", GPodderSync::DefaultDeviceName()).toString()); + ui_->device_name->setText( + s.value("gpodder_device_name", GPodderSync::DefaultDeviceName()) + .toString()); if (dialog()->app()->gpodder_sync()->is_logged_in()) { - ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, ui_->username->text()); + ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedIn, + ui_->username->text()); } else { ui_->login_state->SetLoggedIn(LoginStateWidget::LoggedOut); } @@ -89,9 +90,10 @@ void PodcastSettingsPage::Save() { QSettings s; s.beginGroup(kSettingsGroup); - s.setValue("update_interval_secs", - ui_->check_interval->itemData(ui_->check_interval->currentIndex())); - s.setValue("download_dir", QDir::fromNativeSeparators(ui_->download_dir->text())); + s.setValue("update_interval_secs", ui_->check_interval->itemData( + ui_->check_interval->currentIndex())); + s.setValue("download_dir", + QDir::fromNativeSeparators(ui_->download_dir->text())); s.setValue("auto_download", ui_->auto_download->isChecked()); s.setValue("delete_after", ui_->delete_after->value() * kSecsPerDay); s.setValue("gpodder_device_name", ui_->device_name->text()); @@ -101,18 +103,17 @@ void PodcastSettingsPage::LoginClicked() { ui_->login_state->SetLoggedIn(LoginStateWidget::LoginInProgress); QNetworkReply* reply = dialog()->app()->gpodder_sync()->Login( - ui_->username->text(), ui_->password->text(), ui_->device_name->text()); + ui_->username->text(), ui_->password->text(), ui_->device_name->text()); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(LoginFinished(QNetworkReply*)), - reply); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(LoginFinished(QNetworkReply*)), reply); } void PodcastSettingsPage::LoginFinished(QNetworkReply* reply) { const bool success = reply->error() == QNetworkReply::NoError; - ui_->login_state->SetLoggedIn(success ? LoginStateWidget::LoggedIn - : LoginStateWidget::LoggedOut, - ui_->username->text()); + ui_->login_state->SetLoggedIn( + success ? LoginStateWidget::LoggedIn : LoginStateWidget::LoggedOut, + ui_->username->text()); ui_->login_state->SetAccountTypeVisible(!success); if (!success) { @@ -129,9 +130,8 @@ void PodcastSettingsPage::LogoutClicked() { void PodcastSettingsPage::DownloadDirBrowse() { QString directory = QFileDialog::getExistingDirectory( - this, tr("Choose podcast download directory"), ui_->download_dir->text()); - if (directory.isEmpty()) - return; + this, tr("Choose podcast download directory"), ui_->download_dir->text()); + if (directory.isEmpty()) return; ui_->download_dir->setText(QDir::toNativeSeparators(directory)); } diff --git a/src/podcasts/podcastsettingspage.h b/src/podcasts/podcastsettingspage.h index 46f8cc850..f781c7e1b 100644 --- a/src/podcasts/podcastsettingspage.h +++ b/src/podcasts/podcastsettingspage.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTSETTINGSPAGE_H -#define PODCASTSETTINGSPAGE_H +#ifndef PODCASTS_PODCASTSETTINGSPAGE_H_ +#define PODCASTS_PODCASTSETTINGSPAGE_H_ #include "ui/settingspage.h" @@ -27,8 +27,8 @@ class QNetworkReply; class PodcastSettingsPage : public SettingsPage { Q_OBJECT -public: - PodcastSettingsPage(SettingsDialog* dialog); + public: + explicit PodcastSettingsPage(SettingsDialog* dialog); ~PodcastSettingsPage(); static const char* kSettingsGroup; @@ -36,15 +36,15 @@ public: void Load(); void Save(); -private slots: + private slots: void LoginClicked(); void LoginFinished(QNetworkReply* reply); void LogoutClicked(); void DownloadDirBrowse(); -private: + private: Ui_PodcastSettingsPage* ui_; }; -#endif // PODCASTSETTINGSPAGE_H +#endif // PODCASTS_PODCASTSETTINGSPAGE_H_ diff --git a/src/podcasts/podcastupdater.cpp b/src/podcasts/podcastupdater.cpp index 411009243..2406ce8d0 100644 --- a/src/podcasts/podcastupdater.cpp +++ b/src/podcasts/podcastupdater.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -30,13 +30,12 @@ const char* PodcastUpdater::kSettingsGroup = "Podcasts"; PodcastUpdater::PodcastUpdater(Application* app, QObject* parent) - : QObject(parent), - app_(app), - update_interval_secs_(0), - update_timer_(new QTimer(this)), - loader_(new PodcastUrlLoader(this)), - pending_replies_(0) -{ + : QObject(parent), + app_(app), + update_interval_secs_(0), + update_timer_(new QTimer(this)), + loader_(new PodcastUrlLoader(this)), + pending_replies_(0) { connect(app_, SIGNAL(SettingsChanged()), SLOT(ReloadSettings())); connect(update_timer_, SIGNAL(timeout()), SLOT(UpdateAllPodcastsNow())); connect(app_->podcast_backend(), SIGNAL(SubscriptionAdded(Podcast)), @@ -78,14 +77,18 @@ void PodcastUpdater::RestartTimer() { qLog(Info) << "Updating podcasts for the first time"; UpdateAllPodcastsNow(); } else { - const QDateTime next_update = last_full_update_.addSecs(update_interval_secs_); - const int secs_until_next_update = QDateTime::currentDateTime().secsTo(next_update); + const QDateTime next_update = + last_full_update_.addSecs(update_interval_secs_); + const int secs_until_next_update = + QDateTime::currentDateTime().secsTo(next_update); if (secs_until_next_update < 0) { - qLog(Info) << "Updating podcasts" << (-secs_until_next_update) << "seconds late"; + qLog(Info) << "Updating podcasts" << (-secs_until_next_update) + << "seconds late"; UpdateAllPodcastsNow(); } else { - qLog(Info) << "Updating podcasts at" << next_update << "(in" << secs_until_next_update << "seconds)"; + qLog(Info) << "Updating podcasts at" << next_update << "(in" + << secs_until_next_update << "seconds)"; update_timer_->start(secs_until_next_update * kMsecPerSec); } } @@ -103,24 +106,25 @@ void PodcastUpdater::SubscriptionAdded(const Podcast& podcast) { void PodcastUpdater::UpdatePodcastNow(const Podcast& podcast) { PodcastUrlLoaderReply* reply = loader_->Load(podcast.url()); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(PodcastLoaded(PodcastUrlLoaderReply*,Podcast,bool)), - reply, podcast, false); + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(PodcastLoaded(PodcastUrlLoaderReply*, Podcast, bool)), reply, + podcast, false); } void PodcastUpdater::UpdateAllPodcastsNow() { - foreach (const Podcast& podcast, app_->podcast_backend()->GetAllSubscriptions()) { + for (const Podcast& podcast : + app_->podcast_backend()->GetAllSubscriptions()) { PodcastUrlLoaderReply* reply = loader_->Load(podcast.url()); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(PodcastLoaded(PodcastUrlLoaderReply*,Podcast,bool)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(PodcastLoaded(PodcastUrlLoaderReply*, Podcast, bool)), reply, podcast, true); - pending_replies_ ++; + pending_replies_++; } } -void PodcastUpdater::PodcastLoaded(PodcastUrlLoaderReply* reply, const Podcast& podcast, - bool one_of_many) { +void PodcastUpdater::PodcastLoaded(PodcastUrlLoaderReply* reply, + const Podcast& podcast, bool one_of_many) { reply->deleteLater(); if (one_of_many) { @@ -140,21 +144,22 @@ void PodcastUpdater::PodcastLoaded(PodcastUrlLoaderReply* reply, const Podcast& } if (reply->result_type() != PodcastUrlLoaderReply::Type_Podcast) { - qLog(Warning) << "The URL" << podcast.url() << "no longer contains a podcast"; + qLog(Warning) << "The URL" << podcast.url() + << "no longer contains a podcast"; return; } // Get the episode URLs we had for this podcast already. QSet existing_urls; - foreach (const PodcastEpisode& episode, - app_->podcast_backend()->GetEpisodes(podcast.database_id())) { + for (const PodcastEpisode& episode : + app_->podcast_backend()->GetEpisodes(podcast.database_id())) { existing_urls.insert(episode.url()); } // Add any new episodes PodcastEpisodeList new_episodes; - foreach (const Podcast& reply_podcast, reply->podcast_results()) { - foreach (const PodcastEpisode& episode, reply_podcast.episodes()) { + for (const Podcast& reply_podcast : reply->podcast_results()) { + for (const PodcastEpisode& episode : reply_podcast.episodes()) { if (!existing_urls.contains(episode.url())) { PodcastEpisode episode_copy(episode); episode_copy.set_podcast_database_id(podcast.database_id()); @@ -164,5 +169,6 @@ void PodcastUpdater::PodcastLoaded(PodcastUrlLoaderReply* reply, const Podcast& } app_->podcast_backend()->AddEpisodes(&new_episodes); - qLog(Info) << "Added" << new_episodes.count() << "new episodes for" << podcast.url(); + qLog(Info) << "Added" << new_episodes.count() << "new episodes for" + << podcast.url(); } diff --git a/src/podcasts/podcastupdater.h b/src/podcasts/podcastupdater.h index feb5cd670..523f9d95d 100644 --- a/src/podcasts/podcastupdater.h +++ b/src/podcasts/podcastupdater.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTUPDATER_H -#define PODCASTUPDATER_H +#ifndef PODCASTS_PODCASTUPDATER_H_ +#define PODCASTS_PODCASTUPDATER_H_ #include #include @@ -33,27 +33,27 @@ class QTimer; class PodcastUpdater : public QObject { Q_OBJECT -public: - PodcastUpdater(Application* app, QObject* parent = 0); + public: + PodcastUpdater(Application* app, QObject* parent = nullptr); static const char* kSettingsGroup; -public slots: + public slots: void UpdateAllPodcastsNow(); void UpdatePodcastNow(const Podcast& podcast); -private slots: + private slots: void ReloadSettings(); void SubscriptionAdded(const Podcast& podcast); void PodcastLoaded(PodcastUrlLoaderReply* reply, const Podcast& podcast, bool one_of_many); -private: + private: void RestartTimer(); void SaveSettings(); -private: + private: Application* app_; QDateTime last_full_update_; @@ -64,4 +64,4 @@ private: int pending_replies_; }; -#endif // PODCASTUPDATER_H +#endif // PODCASTS_PODCASTUPDATER_H_ diff --git a/src/podcasts/podcasturlloader.cpp b/src/podcasts/podcasturlloader.cpp index 849fd409c..15247c077 100644 --- a/src/podcasts/podcasturlloader.cpp +++ b/src/podcasts/podcasturlloader.cpp @@ -27,38 +27,36 @@ const int PodcastUrlLoader::kMaxRedirects = 5; - PodcastUrlLoader::PodcastUrlLoader(QObject* parent) - : QObject(parent), - network_(new NetworkAccessManager(this)), - parser_(new PodcastParser), - html_link_re_(""), - html_link_rel_re_("rel\\s*=\\s*['\"]?\\s*alternate"), - html_link_type_re_("type\\s*=\\s*['\"]?([^'\" ]+)"), - html_link_href_re_("href\\s*=\\s*['\"]?([^'\" ]+)") -{ + : QObject(parent), + network_(new NetworkAccessManager(this)), + parser_(new PodcastParser), + html_link_re_(""), + html_link_rel_re_("rel\\s*=\\s*['\"]?\\s*alternate"), + html_link_type_re_("type\\s*=\\s*['\"]?([^'\" ]+)"), + html_link_href_re_("href\\s*=\\s*['\"]?([^'\" ]+)") { html_link_re_.setMinimal(true); html_link_re_.setCaseSensitivity(Qt::CaseInsensitive); } -PodcastUrlLoader::~PodcastUrlLoader() { - delete parser_; -} +PodcastUrlLoader::~PodcastUrlLoader() { delete parser_; } QUrl PodcastUrlLoader::FixPodcastUrl(const QString& url_text) { QString url_text_copy(url_text.trimmed()); // Thanks gpodder! - QuickPrefixList quick_prefixes = QuickPrefixList() + QuickPrefixList quick_prefixes = + QuickPrefixList() << QuickPrefix("fb:", "http://feeds.feedburner.com/%1") << QuickPrefix("yt:", "https://www.youtube.com/rss/user/%1/videos.rss") << QuickPrefix("sc:", "https://soundcloud.com/%1") << QuickPrefix("fm4od:", "http://onapp1.orf.at/webcam/fm4/fod/%1.xspf") - << QuickPrefix("ytpl:", "https://gdata.youtube.com/feeds/api/playlists/%1"); + << QuickPrefix("ytpl:", + "https://gdata.youtube.com/feeds/api/playlists/%1"); // Check if it matches one of the quick prefixes. - for (QuickPrefixList::const_iterator it = quick_prefixes.constBegin() ; - it != quick_prefixes.constEnd() ; ++it) { + for (QuickPrefixList::const_iterator it = quick_prefixes.constBegin(); + it != quick_prefixes.constEnd(); ++it) { if (url_text_copy.startsWith(it->first)) { url_text_copy = it->second.arg(url_text_copy.mid(it->first.length())); } @@ -105,7 +103,8 @@ PodcastUrlLoaderReply* PodcastUrlLoader::Load(const QUrl& url) { return reply; } -void PodcastUrlLoader::SendErrorAndDelete(const QString& error_text, RequestState* state) { +void PodcastUrlLoader::SendErrorAndDelete(const QString& error_text, + RequestState* state) { state->reply_->SetFinished(error_text); delete state; } @@ -120,20 +119,22 @@ void PodcastUrlLoader::NextRequest(const QUrl& url, RequestState* state) { qLog(Debug) << "Loading URL" << url; QNetworkRequest req(url); - req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); + req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, + QNetworkRequest::AlwaysNetwork); QNetworkReply* network_reply = network_->get(req); - NewClosure(network_reply, SIGNAL(finished()), - this, SLOT(RequestFinished(RequestState*, QNetworkReply*)), - state, network_reply); + NewClosure(network_reply, SIGNAL(finished()), this, + SLOT(RequestFinished(RequestState*, QNetworkReply*)), state, + network_reply); } -void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply) { +void PodcastUrlLoader::RequestFinished(RequestState* state, + QNetworkReply* reply) { reply->deleteLater(); if (reply->attribute(QNetworkRequest::RedirectionTargetAttribute).isValid()) { const QUrl next_url = reply->url().resolved( - reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); + reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl()); NextRequest(next_url, state); return; @@ -148,14 +149,19 @@ void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply const QVariant http_status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); if (http_status.isValid() && http_status.toInt() != 200) { - SendErrorAndDelete(QString("HTTP %1: %2").arg( - reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toString(), - reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString()), state); + SendErrorAndDelete( + QString("HTTP %1: %2") + .arg(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute) + .toString(), + reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute) + .toString()), + state); return; } // Check the mime type. - const QString content_type = reply->header(QNetworkRequest::ContentTypeHeader).toString(); + const QString content_type = + reply->header(QNetworkRequest::ContentTypeHeader).toString(); if (parser_->SupportsContentType(content_type)) { const QVariant ret = parser_->Load(reply, reply->url()); @@ -164,7 +170,8 @@ void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply } else if (ret.canConvert()) { state->reply_->SetFinished(ret.value()); } else { - SendErrorAndDelete(tr("Failed to parse the XML for this RSS feed"), state); + SendErrorAndDelete(tr("Failed to parse the XML for this RSS feed"), + state); return; } @@ -185,7 +192,8 @@ void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply } const QString link_type = html_link_type_re_.cap(1); - const QString href = Utilities::DecodeHtmlEntities(html_link_href_re_.cap(1)); + const QString href = + Utilities::DecodeHtmlEntities(html_link_href_re_.cap(1)); if (parser_->supported_mime_types().contains(link_type)) { NextRequest(QUrl(href), state); @@ -199,13 +207,8 @@ void PodcastUrlLoader::RequestFinished(RequestState* state, QNetworkReply* reply } } - PodcastUrlLoaderReply::PodcastUrlLoaderReply(const QUrl& url, QObject* parent) - : QObject(parent), - url_(url), - finished_(false) -{ -} + : QObject(parent), url_(url), finished_(false) {} void PodcastUrlLoaderReply::SetFinished(const PodcastList& results) { result_type_ = Type_Podcast; diff --git a/src/podcasts/podcasturlloader.h b/src/podcasts/podcasturlloader.h index 9f4e0ee91..bc104323d 100644 --- a/src/podcasts/podcasturlloader.h +++ b/src/podcasts/podcasturlloader.h @@ -1,22 +1,22 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ -#ifndef PODCASTURLLOADER_H -#define PODCASTURLLOADER_H +#ifndef PODCASTS_PODCASTURLLOADER_H_ +#define PODCASTS_PODCASTURLLOADER_H_ #include #include @@ -32,13 +32,10 @@ class QNetworkReply; class PodcastUrlLoaderReply : public QObject { Q_OBJECT -public: + public: PodcastUrlLoaderReply(const QUrl& url, QObject* parent); - enum ResultType { - Type_Podcast, - Type_Opml - }; + enum ResultType { Type_Podcast, Type_Opml }; const QUrl& url() const { return url_; } bool is_finished() const { return finished_; } @@ -53,10 +50,10 @@ public: void SetFinished(const PodcastList& results); void SetFinished(const OpmlContainer& results); -signals: + signals: void Finished(bool success); -private: + private: QUrl url_; bool finished_; QString error_text_; @@ -66,12 +63,11 @@ private: OpmlContainer opml_results_; }; - class PodcastUrlLoader : public QObject { Q_OBJECT -public: - PodcastUrlLoader(QObject* parent = 0); + public: + explicit PodcastUrlLoader(QObject* parent = nullptr); ~PodcastUrlLoader(); static const int kMaxRedirects; @@ -86,7 +82,7 @@ public: static QUrl FixPodcastUrl(const QString& url_text); static QUrl FixPodcastUrl(const QUrl& url); -private: + private: struct RequestState { int redirects_remaining_; PodcastUrlLoaderReply* reply_; @@ -95,14 +91,14 @@ private: typedef QPair QuickPrefix; typedef QList QuickPrefixList; -private slots: + private slots: void RequestFinished(RequestState* state, QNetworkReply* reply); -private: + private: void SendErrorAndDelete(const QString& error_text, RequestState* state); void NextRequest(const QUrl& url, RequestState* state); -private: + private: QNetworkAccessManager* network_; PodcastParser* parser_; @@ -113,4 +109,4 @@ private: QRegExp html_link_href_re_; }; -#endif // PODCASTURLLOADER_H +#endif // PODCASTS_PODCASTURLLOADER_H_ diff --git a/src/smartplaylists/generator.cpp b/src/smartplaylists/generator.cpp index 17385b47a..b8a935128 100644 --- a/src/smartplaylists/generator.cpp +++ b/src/smartplaylists/generator.cpp @@ -28,11 +28,7 @@ const int Generator::kDefaultLimit = 20; const int Generator::kDefaultDynamicHistory = 5; const int Generator::kDefaultDynamicFuture = 15; -Generator::Generator() - : QObject(NULL), - backend_(NULL) -{ -} +Generator::Generator() : QObject(nullptr), backend_(nullptr) {} GeneratorPtr Generator::Create(const QString& type) { if (type == "Query") @@ -44,5 +40,4 @@ GeneratorPtr Generator::Create(const QString& type) { return GeneratorPtr(); } -} // namespace - +} // namespace diff --git a/src/smartplaylists/generator.h b/src/smartplaylists/generator.h index 7046e87ec..52df8ac76 100644 --- a/src/smartplaylists/generator.h +++ b/src/smartplaylists/generator.h @@ -20,17 +20,17 @@ #include "playlist/playlistitem.h" -#include -#include +#include class LibraryBackend; namespace smart_playlists { -class Generator : public QObject, public boost::enable_shared_from_this { +class Generator : public QObject, + public std::enable_shared_from_this { Q_OBJECT -public: + public: Generator(); static const int kDefaultLimit; @@ -38,7 +38,7 @@ public: static const int kDefaultDynamicFuture; // Creates a new Generator of the given type - static boost::shared_ptr Create(const QString& type); + static std::shared_ptr Create(const QString& type); // Should be called before Load on a new Generator void set_library(LibraryBackend* backend) { backend_ = backend; } @@ -61,27 +61,30 @@ public: // If the generator can be used as a dynamic playlist then GenerateMore // should return the next tracks in the sequence. The subclass should - // remember the last GetDynamicHistory() + GetDynamicFuture() tracks and ensure that + // remember the last GetDynamicHistory() + GetDynamicFuture() tracks and + // ensure that // the tracks returned from this method are not in that set. virtual bool is_dynamic() const { return false; } virtual void set_dynamic(bool dynamic) {} // Called from non-UI thread. - virtual PlaylistItemList GenerateMore(int count) { return PlaylistItemList(); } + virtual PlaylistItemList GenerateMore(int count) { + return PlaylistItemList(); + } - virtual int GetDynamicHistory () { return kDefaultDynamicHistory; } - virtual int GetDynamicFuture () { return kDefaultDynamicFuture; } + virtual int GetDynamicHistory() { return kDefaultDynamicHistory; } + virtual int GetDynamicFuture() { return kDefaultDynamicFuture; } signals: void Error(const QString& message); -protected: + protected: LibraryBackend* backend_; -private: + private: QString name_; }; -} // namespace +} // namespace #include "generator_fwd.h" -#endif // PLAYLISTGENERATOR_H +#endif // PLAYLISTGENERATOR_H diff --git a/src/smartplaylists/generator_fwd.h b/src/smartplaylists/generator_fwd.h index db110b0bd..732168ccb 100644 --- a/src/smartplaylists/generator_fwd.h +++ b/src/smartplaylists/generator_fwd.h @@ -18,14 +18,14 @@ #ifndef PLAYLISTGENERATOR_FWD_H #define PLAYLISTGENERATOR_FWD_H -#include +#include namespace smart_playlists { class Generator; -typedef boost::shared_ptr GeneratorPtr; +typedef std::shared_ptr GeneratorPtr; -} // namespace +} // namespace -#endif // PLAYLISTGENERATOR_FWD_H +#endif // PLAYLISTGENERATOR_FWD_H diff --git a/src/smartplaylists/generatorinserter.cpp b/src/smartplaylists/generatorinserter.cpp index 4881c4c49..7fe511304 100644 --- a/src/smartplaylists/generatorinserter.cpp +++ b/src/smartplaylists/generatorinserter.cpp @@ -28,15 +28,13 @@ namespace smart_playlists { typedef QFuture Future; typedef QFutureWatcher FutureWatcher; -GeneratorInserter::GeneratorInserter( - TaskManager* task_manager, LibraryBackend* library, QObject* parent) - : QObject(parent), - task_manager_(task_manager), - library_(library), - task_id_(-1), - is_dynamic_(false) -{ -} +GeneratorInserter::GeneratorInserter(TaskManager* task_manager, + LibraryBackend* library, QObject* parent) + : QObject(parent), + task_manager_(task_manager), + library_(library), + task_id_(-1), + is_dynamic_(false) {} static PlaylistItemList Generate(GeneratorPtr generator, int dynamic_count) { if (dynamic_count) { @@ -46,9 +44,9 @@ static PlaylistItemList Generate(GeneratorPtr generator, int dynamic_count) { } } -void GeneratorInserter::Load( - Playlist* destination, int row, bool play_now, bool enqueue, - GeneratorPtr generator, int dynamic_count) { +void GeneratorInserter::Load(Playlist* destination, int row, bool play_now, + bool enqueue, GeneratorPtr generator, + int dynamic_count) { task_id_ = task_manager_->StartTask(tr("Loading smart playlist")); destination_ = destination; @@ -85,4 +83,4 @@ void GeneratorInserter::Finished() { deleteLater(); } -} // namespace +} // namespace diff --git a/src/smartplaylists/generatorinserter.h b/src/smartplaylists/generatorinserter.h index bbabc9608..693d35e51 100644 --- a/src/smartplaylists/generatorinserter.h +++ b/src/smartplaylists/generatorinserter.h @@ -33,9 +33,9 @@ namespace smart_playlists { class GeneratorInserter : public QObject { Q_OBJECT -public: - GeneratorInserter(TaskManager* task_manager, - LibraryBackend* library, QObject* parent); + public: + GeneratorInserter(TaskManager* task_manager, LibraryBackend* library, + QObject* parent); void Load(Playlist* destination, int row, bool play_now, bool enqueue, GeneratorPtr generator, int dynamic_count = 0); @@ -44,10 +44,10 @@ signals: void Error(const QString& message); void PlayRequested(const QModelIndex& index); -private slots: + private slots: void Finished(); -private: + private: TaskManager* task_manager_; LibraryBackend* library_; int task_id_; @@ -59,6 +59,6 @@ private: bool is_dynamic_; }; -} // namespace +} // namespace -#endif // PLAYLISTGENERATORINSERTER_H +#endif // PLAYLISTGENERATORINSERTER_H diff --git a/src/smartplaylists/generatormimedata.h b/src/smartplaylists/generatormimedata.h index 5285152de..7232b7b1f 100644 --- a/src/smartplaylists/generatormimedata.h +++ b/src/smartplaylists/generatormimedata.h @@ -28,13 +28,12 @@ namespace smart_playlists { class GeneratorMimeData : public MimeData { Q_OBJECT -public: - GeneratorMimeData(GeneratorPtr generator) - : generator_(generator) {} + public: + GeneratorMimeData(GeneratorPtr generator) : generator_(generator) {} GeneratorPtr generator_; }; -} // namespace +} // namespace -#endif // GENERATORMIMEDATA_H +#endif // GENERATORMIMEDATA_H diff --git a/src/smartplaylists/querygenerator.cpp b/src/smartplaylists/querygenerator.cpp index 4088dbf32..4506a8f7c 100644 --- a/src/smartplaylists/querygenerator.cpp +++ b/src/smartplaylists/querygenerator.cpp @@ -22,17 +22,11 @@ namespace smart_playlists { -QueryGenerator::QueryGenerator() - : dynamic_(false), - current_pos_(0) -{ -} +QueryGenerator::QueryGenerator() : dynamic_(false), current_pos_(0) {} -QueryGenerator::QueryGenerator(const QString& name, const Search& search, bool dynamic) - : search_(search), - dynamic_(dynamic), - current_pos_(0) -{ +QueryGenerator::QueryGenerator(const QString& name, const Search& search, + bool dynamic) + : search_(search), dynamic_(dynamic), current_pos_(0) { set_name(name); } @@ -77,9 +71,9 @@ PlaylistItemList QueryGenerator::GenerateMore(int count) { SongList songs = backend_->FindSongs(search_copy); PlaylistItemList items; - foreach (const Song& song, songs) { + for (const Song& song : songs) { items << PlaylistItemPtr(PlaylistItem::NewFromSongsTable( - backend_->songs_table(), song)); + backend_->songs_table(), song)); previous_ids_ << song.id(); if (previous_ids_.count() > GetDynamicFuture() + GetDynamicHistory()) @@ -88,4 +82,4 @@ PlaylistItemList QueryGenerator::GenerateMore(int count) { return items; } -} // namespace +} // namespace diff --git a/src/smartplaylists/querygenerator.h b/src/smartplaylists/querygenerator.h index 5c9922cf9..0dc633e3f 100644 --- a/src/smartplaylists/querygenerator.h +++ b/src/smartplaylists/querygenerator.h @@ -24,9 +24,10 @@ namespace smart_playlists { class QueryGenerator : public Generator { -public: + public: QueryGenerator(); - QueryGenerator(const QString& name, const Search& search, bool dynamic = false); + QueryGenerator(const QString& name, const Search& search, + bool dynamic = false); QString type() const { return "Query"; } @@ -40,9 +41,9 @@ public: void set_dynamic(bool dynamic) { dynamic_ = dynamic; } Search search() const { return search_; } - int GetDynamicFuture () { return search_.limit_; } + int GetDynamicFuture() { return search_.limit_; } -private: + private: Search search_; bool dynamic_; @@ -50,6 +51,6 @@ private: int current_pos_; }; -} // namespace +} // namespace -#endif // QUERYPLAYLISTGENERATOR_H +#endif // QUERYPLAYLISTGENERATOR_H diff --git a/src/smartplaylists/querysortpage.ui b/src/smartplaylists/querysortpage.ui index ebfc016ef..8ae19981d 100644 --- a/src/smartplaylists/querysortpage.ui +++ b/src/smartplaylists/querysortpage.ui @@ -46,7 +46,11 @@
- + + + QComboBox::AdjustToContents + +
diff --git a/src/smartplaylists/querywizardplugin.cpp b/src/smartplaylists/querywizardplugin.cpp index e0991a582..3941ebeb2 100644 --- a/src/smartplaylists/querywizardplugin.cpp +++ b/src/smartplaylists/querywizardplugin.cpp @@ -30,21 +30,18 @@ namespace smart_playlists { class QueryWizardPlugin::SearchPage : public QWizardPage { friend class QueryWizardPlugin; -public: + public: SearchPage(QWidget* parent = 0) - : QWizardPage(parent), - ui_(new Ui_SmartPlaylistQuerySearchPage) - { + : QWizardPage(parent), ui_(new Ui_SmartPlaylistQuerySearchPage) { ui_->setupUi(this); } bool isComplete() const { - if (ui_->type->currentIndex() == 2) // All songs + if (ui_->type->currentIndex() == 2) // All songs return true; - foreach (SearchTermWidget* widget, terms_) { - if (!widget->Term().is_valid()) - return false; + for (SearchTermWidget* widget : terms_) { + if (!widget->Term().is_valid()) return false; } return true; } @@ -55,13 +52,13 @@ public: SearchPreview* preview_; - boost::scoped_ptr ui_; + std::unique_ptr ui_; }; class QueryWizardPlugin::SortPage : public QWizardPage { -public: + public: SortPage(QueryWizardPlugin* plugin, QWidget* parent, int next_id) - : QWizardPage(parent), next_id_(next_id), plugin_(plugin) {} + : QWizardPage(parent), next_id_(next_id), plugin_(plugin) {} void showEvent(QShowEvent*) { plugin_->UpdateSortPreview(); } @@ -71,20 +68,15 @@ public: QueryWizardPlugin* plugin_; }; +QueryWizardPlugin::QueryWizardPlugin(Application* app, LibraryBackend* library, + QObject* parent) + : WizardPlugin(app, library, parent), + search_page_(nullptr), + previous_scrollarea_max_(0) {} -QueryWizardPlugin::QueryWizardPlugin(Application* app, LibraryBackend* library, QObject* parent) - : WizardPlugin(app, library, parent), - search_page_(NULL), - previous_scrollarea_max_(0) -{ -} +QueryWizardPlugin::~QueryWizardPlugin() {} -QueryWizardPlugin::~QueryWizardPlugin() { -} - -QString QueryWizardPlugin::name() const { - return tr("Library search"); -} +QString QueryWizardPlugin::name() const { return tr("Library search"); } QString QueryWizardPlugin::description() const { return tr("Find songs in your library that match the criteria you specify."); @@ -100,7 +92,8 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { sort_ui_->limit_value->setValue(Generator::kDefaultLimit); - connect(search_page_->ui_->type, SIGNAL(currentIndexChanged(int)), SLOT(SearchTypeChanged())); + connect(search_page_->ui_->type, SIGNAL(currentIndexChanged(int)), + SLOT(SearchTypeChanged())); // Create the new search term widget search_page_->new_term_ = new SearchTermWidget(library_, search_page_); @@ -108,15 +101,19 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { connect(search_page_->new_term_, SIGNAL(Clicked()), SLOT(AddSearchTerm())); // Add an empty initial term - search_page_->layout_ = static_cast(search_page_->ui_->terms_scroll_area_content->layout()); + search_page_->layout_ = static_cast( + search_page_->ui_->terms_scroll_area_content->layout()); search_page_->layout_->addWidget(search_page_->new_term_); AddSearchTerm(); // Ensure that the terms are scrolled to the bottom when a new one is added - connect(search_page_->ui_->terms_scroll_area->verticalScrollBar(), SIGNAL(rangeChanged(int,int)), this, SLOT(MoveTermListToBottom(int, int))); + connect(search_page_->ui_->terms_scroll_area->verticalScrollBar(), + SIGNAL(rangeChanged(int, int)), this, + SLOT(MoveTermListToBottom(int, int))); // Add the preview widget at the bottom of the search terms page - QVBoxLayout* terms_page_layout = static_cast(search_page_->layout()); + QVBoxLayout* terms_page_layout = + static_cast(search_page_->layout()); terms_page_layout->addStretch(); search_page_->preview_ = new SearchPreview(search_page_); search_page_->preview_->set_application(app_); @@ -124,12 +121,13 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { terms_page_layout->addWidget(search_page_->preview_); // Add sort field texts - for (int i=0 ; ifield_value->addItem(field_name); } - connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), SLOT(UpdateSortOrder())); + connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), + SLOT(UpdateSortOrder())); UpdateSortOrder(); // Set the sort and limit radio buttons back to their defaults - they would @@ -141,18 +139,26 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { sort_ui_->preview->set_application(app_); sort_ui_->preview->set_library(library_); connect(sort_ui_->field, SIGNAL(toggled(bool)), SLOT(UpdateSortPreview())); - connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), SLOT(UpdateSortPreview())); - connect(sort_ui_->limit_limit, SIGNAL(toggled(bool)), SLOT(UpdateSortPreview())); - connect(sort_ui_->limit_none, SIGNAL(toggled(bool)), SLOT(UpdateSortPreview())); - connect(sort_ui_->limit_value, SIGNAL(valueChanged(QString)), SLOT(UpdateSortPreview())); - connect(sort_ui_->order, SIGNAL(currentIndexChanged(int)), SLOT(UpdateSortPreview())); + connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), + SLOT(UpdateSortPreview())); + connect(sort_ui_->limit_limit, SIGNAL(toggled(bool)), + SLOT(UpdateSortPreview())); + connect(sort_ui_->limit_none, SIGNAL(toggled(bool)), + SLOT(UpdateSortPreview())); + connect(sort_ui_->limit_value, SIGNAL(valueChanged(QString)), + SLOT(UpdateSortPreview())); + connect(sort_ui_->order, SIGNAL(currentIndexChanged(int)), + SLOT(UpdateSortPreview())); connect(sort_ui_->random, SIGNAL(toggled(bool)), SLOT(UpdateSortPreview())); // Configure the page text search_page_->setTitle(tr("Search terms")); - search_page_->setSubTitle(tr("A song will be included in the playlist if it matches these conditions.")); + search_page_->setSubTitle( + tr("A song will be included in the playlist if it matches these " + "conditions.")); sort_page->setTitle(tr("Search options")); - sort_page->setSubTitle(tr("Choose how the playlist is sorted and how many songs it will contain.")); + sort_page->setSubTitle(tr( + "Choose how the playlist is sorted and how many songs it will contain.")); // Add the pages const int first_page = wizard->addPage(search_page_); @@ -161,10 +167,9 @@ int QueryWizardPlugin::CreatePages(QWizard* wizard, int finish_page_id) { } void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { - boost::shared_ptr gen = - boost::dynamic_pointer_cast(g); - if (!gen) - return; + std::shared_ptr gen = + std::dynamic_pointer_cast(g); + if (!gen) return; Search search = gen->search(); // Search type @@ -174,7 +179,7 @@ void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { qDeleteAll(search_page_->terms_); search_page_->terms_.clear(); - foreach (const SearchTerm& term, search.terms_) { + for (const SearchTerm& term : search.terms_) { AddSearchTerm(); search_page_->terms_.last()->SetTerm(term); } @@ -184,7 +189,8 @@ void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { sort_ui_->random->setChecked(true); } else { sort_ui_->field->setChecked(true); - sort_ui_->order->setCurrentIndex(search.sort_type_ == Search::Sort_FieldAsc ? 0 : 1); + sort_ui_->order->setCurrentIndex( + search.sort_type_ == Search::Sort_FieldAsc ? 0 : 1); sort_ui_->field_value->setCurrentIndex(search.sort_field_); } @@ -198,10 +204,10 @@ void QueryWizardPlugin::SetGenerator(GeneratorPtr g) { } GeneratorPtr QueryWizardPlugin::CreateGenerator() const { - boost::shared_ptr gen(new QueryGenerator); + std::shared_ptr gen(new QueryGenerator); gen->Load(MakeSearch()); - return boost::static_pointer_cast(gen); + return std::static_pointer_cast(gen); } void QueryWizardPlugin::UpdateSortOrder() { @@ -219,8 +225,7 @@ void QueryWizardPlugin::UpdateSortOrder() { } void QueryWizardPlugin::AddSearchTerm() { - SearchTermWidget* widget = - new SearchTermWidget(library_, search_page_); + SearchTermWidget* widget = new SearchTermWidget(library_, search_page_); connect(widget, SIGNAL(RemoveClicked()), SLOT(RemoveSearchTerm())); connect(widget, SIGNAL(Changed()), SLOT(UpdateTermPreview())); @@ -231,14 +236,11 @@ void QueryWizardPlugin::AddSearchTerm() { } void QueryWizardPlugin::RemoveSearchTerm() { - SearchTermWidget* widget = - qobject_cast(sender()); - if (!widget) - return; + SearchTermWidget* widget = qobject_cast(sender()); + if (!widget) return; const int index = search_page_->terms_.indexOf(widget); - if (index == -1) - return; + if (index == -1) return; search_page_->terms_.takeAt(index)->deleteLater(); UpdateTermPreview(); @@ -248,8 +250,7 @@ void QueryWizardPlugin::UpdateTermPreview() { Search search = MakeSearch(); emit search_page_->completeChanged(); // When removing last term, update anyway the search - if (!search.is_valid() && !search_page_->terms_.isEmpty()) - return; + if (!search.is_valid() && !search_page_->terms_.isEmpty()) return; // Don't apply limits in the term page search.limit_ = -1; @@ -259,8 +260,7 @@ void QueryWizardPlugin::UpdateTermPreview() { void QueryWizardPlugin::UpdateSortPreview() { Search search = MakeSearch(); - if (!search.is_valid()) - return; + if (!search.is_valid()) return; sort_ui_->preview->Update(search); } @@ -269,13 +269,13 @@ Search QueryWizardPlugin::MakeSearch() const { Search ret; // Search type - ret.search_type_ = Search::SearchType(search_page_->ui_->type->currentIndex()); + ret.search_type_ = + Search::SearchType(search_page_->ui_->type->currentIndex()); // Search terms - foreach (SearchTermWidget* widget, search_page_->terms_) { + for (SearchTermWidget* widget : search_page_->terms_) { SearchTerm term = widget->Term(); - if (term.is_valid()) - ret.terms_ << term; + if (term.is_valid()) ret.terms_ << term; } // Sort order @@ -283,8 +283,7 @@ Search QueryWizardPlugin::MakeSearch() const { ret.sort_type_ = Search::Sort_Random; } else { const bool ascending = sort_ui_->order->currentIndex() == 0; - ret.sort_type_ = ascending ? Search::Sort_FieldAsc : - Search::Sort_FieldDesc; + ret.sort_type_ = ascending ? Search::Sort_FieldAsc : Search::Sort_FieldDesc; ret.sort_field_ = SearchTerm::Field(sort_ui_->field_value->currentIndex()); } @@ -305,13 +304,12 @@ void QueryWizardPlugin::SearchTypeChanged() { } void QueryWizardPlugin::MoveTermListToBottom(int min, int max) { - Q_UNUSED(min); - // Only scroll to the bottom if a new term is added - if (previous_scrollarea_max_ < max) - search_page_->ui_->terms_scroll_area->verticalScrollBar()->setValue(max); + Q_UNUSED(min); + // Only scroll to the bottom if a new term is added + if (previous_scrollarea_max_ < max) + search_page_->ui_->terms_scroll_area->verticalScrollBar()->setValue(max); - previous_scrollarea_max_ = max; + previous_scrollarea_max_ = max; } - -} // namespace smart_playlists +} // namespace smart_playlists diff --git a/src/smartplaylists/querywizardplugin.h b/src/smartplaylists/querywizardplugin.h index 8213d945b..f1bdb216e 100644 --- a/src/smartplaylists/querywizardplugin.h +++ b/src/smartplaylists/querywizardplugin.h @@ -18,12 +18,13 @@ #ifndef QUERYWIZARDPLUGIN_H #define QUERYWIZARDPLUGIN_H -#include "search.h" #include "wizardplugin.h" +#include + #include -#include +#include "search.h" class Ui_SmartPlaylistQuerySearchPage; class Ui_SmartPlaylistQuerySortPage; @@ -38,7 +39,7 @@ class SearchTermWidget; class QueryWizardPlugin : public WizardPlugin { Q_OBJECT -public: + public: QueryWizardPlugin(Application* app, LibraryBackend* library, QObject* parent); ~QueryWizardPlugin(); @@ -51,7 +52,7 @@ public: void SetGenerator(GeneratorPtr); GeneratorPtr CreateGenerator() const; -private slots: + private slots: void AddSearchTerm(); void RemoveSearchTerm(); @@ -63,18 +64,18 @@ private slots: void MoveTermListToBottom(int min, int max); -private: + private: class SearchPage; class SortPage; Search MakeSearch() const; SearchPage* search_page_; - boost::scoped_ptr sort_ui_; + std::unique_ptr sort_ui_; int previous_scrollarea_max_; }; -} // namespace smart_playlists +} // namespace smart_playlists -#endif // QUERYWIZARDPLUGIN_H +#endif // QUERYWIZARDPLUGIN_H diff --git a/src/smartplaylists/search.cpp b/src/smartplaylists/search.cpp index a929ad432..cde48d7f8 100644 --- a/src/smartplaylists/search.cpp +++ b/src/smartplaylists/search.cpp @@ -23,21 +23,16 @@ namespace smart_playlists { -Search::Search() { - Reset(); -} +Search::Search() { Reset(); } -Search::Search( - SearchType type, TermList terms, SortType sort_type, - SearchTerm::Field sort_field, int limit) - : search_type_(type), - terms_(terms), - sort_type_(sort_type), - sort_field_(sort_field), - limit_(limit), - first_item_(0) -{ -} +Search::Search(SearchType type, TermList terms, SortType sort_type, + SearchTerm::Field sort_field, int limit) + : search_type_(type), + terms_(terms), + sort_type_(sort_type), + sort_field_(sort_field), + limit_(limit), + first_item_(0) {} void Search::Reset() { search_type_ = Type_And; @@ -54,7 +49,7 @@ QString Search::ToSql(const QString& songs_table) const { // Add search terms QStringList where_clauses; QStringList term_where_clauses; - foreach (const SearchTerm& term, terms_) { + for (const SearchTerm& term : terms_) { term_where_clauses << term.ToSql(); } @@ -66,7 +61,7 @@ QString Search::ToSql(const QString& songs_table) const { // Restrict the IDs of songs if we're making a dynamic playlist if (!id_not_in_.isEmpty()) { QString numbers; - foreach (int id, id_not_in_) { + for (int id : id_not_in_) { numbers += (numbers.isEmpty() ? "" : ",") + QString::number(id); } where_clauses << "(ROWID NOT IN (" + numbers + "))"; @@ -85,8 +80,8 @@ QString Search::ToSql(const QString& songs_table) const { if (sort_type_ == Sort_Random) { sql += " ORDER BY random()"; } else { - sql += " ORDER BY " + SearchTerm::FieldColumnName(sort_field_) - + (sort_type_ == Sort_FieldAsc ? " ASC" : " DESC"); + sql += " ORDER BY " + SearchTerm::FieldColumnName(sort_field_) + + (sort_type_ == Sort_FieldAsc ? " ASC" : " DESC"); } // Add limit @@ -101,22 +96,19 @@ QString Search::ToSql(const QString& songs_table) const { } bool Search::is_valid() const { - if (search_type_ == Type_All) - return true; + if (search_type_ == Type_All) return true; return !terms_.isEmpty(); } -bool Search::operator ==(const Search& other) const { - return search_type_ == other.search_type_ && - terms_ == other.terms_ && - sort_type_ == other.sort_type_ && - sort_field_ == other.sort_field_ && +bool Search::operator==(const Search& other) const { + return search_type_ == other.search_type_ && terms_ == other.terms_ && + sort_type_ == other.sort_type_ && sort_field_ == other.sort_field_ && limit_ == other.limit_; } -} // namespace +} // namespace -QDataStream& operator <<(QDataStream& s, const smart_playlists::Search& search) { +QDataStream& operator<<(QDataStream& s, const smart_playlists::Search& search) { s << search.terms_; s << quint8(search.sort_type_); s << quint8(search.sort_field_); @@ -125,7 +117,7 @@ QDataStream& operator <<(QDataStream& s, const smart_playlists::Search& search) return s; } -QDataStream& operator >>(QDataStream& s, smart_playlists::Search& search) { +QDataStream& operator>>(QDataStream& s, smart_playlists::Search& search) { quint8 sort_type, sort_field, search_type; qint32 limit; diff --git a/src/smartplaylists/search.h b/src/smartplaylists/search.h index cca1662b5..7c99fb5b6 100644 --- a/src/smartplaylists/search.h +++ b/src/smartplaylists/search.h @@ -24,31 +24,22 @@ namespace smart_playlists { class Search { -public: + public: typedef QList TermList; // These values are persisted, so add to the end of the enum only - enum SearchType { - Type_And = 0, - Type_Or, - Type_All, - }; + enum SearchType { Type_And = 0, Type_Or, Type_All, }; // These values are persisted, so add to the end of the enum only - enum SortType { - Sort_Random = 0, - Sort_FieldAsc, - Sort_FieldDesc, - }; + enum SortType { Sort_Random = 0, Sort_FieldAsc, Sort_FieldDesc, }; Search(); Search(SearchType type, TermList terms, SortType sort_type, - SearchTerm::Field sort_field, - int limit = Generator::kDefaultLimit); + SearchTerm::Field sort_field, int limit = Generator::kDefaultLimit); bool is_valid() const; - bool operator ==(const Search& other) const; - bool operator !=(const Search& other) const { return !(*this == other); } + bool operator==(const Search& other) const; + bool operator!=(const Search& other) const { return !(*this == other); } SearchType search_type_; TermList terms_; @@ -64,9 +55,9 @@ public: QString ToSql(const QString& songs_table) const; }; -} // namespace +} // namespace -QDataStream& operator <<(QDataStream& s, const smart_playlists::Search& search); -QDataStream& operator >>(QDataStream& s, smart_playlists::Search& search); +QDataStream& operator<<(QDataStream& s, const smart_playlists::Search& search); +QDataStream& operator>>(QDataStream& s, smart_playlists::Search& search); -#endif // SMARTPLAYLISTSEARCH_H +#endif // SMARTPLAYLISTSEARCH_H diff --git a/src/smartplaylists/searchpreview.cpp b/src/smartplaylists/searchpreview.cpp index 08c6065f0..7f29b09d7 100644 --- a/src/smartplaylists/searchpreview.cpp +++ b/src/smartplaylists/searchpreview.cpp @@ -15,27 +15,28 @@ along with Clementine. If not, see . */ -#include "querygenerator.h" #include "searchpreview.h" #include "ui_searchpreview.h" -#include "playlist/playlist.h" + +#include #include #include +#include "querygenerator.h" +#include "playlist/playlist.h" + namespace smart_playlists { typedef QFuture Future; typedef QFutureWatcher FutureWatcher; -SearchPreview::SearchPreview(QWidget *parent) - : QWidget(parent), - ui_(new Ui_SmartPlaylistSearchPreview), - model_(NULL) -{ +SearchPreview::SearchPreview(QWidget* parent) + : QWidget(parent), ui_(new Ui_SmartPlaylistSearchPreview), model_(nullptr) { ui_->setupUi(this); - // Prevent editing songs and saving settings (like header columns and geometry) + // Prevent editing songs and saving settings (like header columns and + // geometry) ui_->tree->setEditTriggers(QAbstractItemView::NoEditTriggers); ui_->tree->SetReadOnlySettings(true); @@ -45,9 +46,7 @@ SearchPreview::SearchPreview(QWidget *parent) ui_->busy_container->hide(); } -SearchPreview::~SearchPreview() { - delete ui_; -} +SearchPreview::~SearchPreview() { delete ui_; } void SearchPreview::set_application(Application* app) { ui_->tree->SetApplication(app); @@ -56,7 +55,7 @@ void SearchPreview::set_application(Application* app) { void SearchPreview::set_library(LibraryBackend* backend) { backend_ = backend; - model_ = new Playlist(NULL, NULL, backend_, -1, QString(), false, this); + model_ = new Playlist(nullptr, nullptr, backend_, -1, QString(), false, this); ui_->tree->setModel(model_); ui_->tree->SetPlaylist(model_); ui_->tree->SetItemDelegates(backend_); @@ -87,14 +86,12 @@ void SearchPreview::showEvent(QShowEvent* e) { QWidget::showEvent(e); } -PlaylistItemList DoRunSearch(GeneratorPtr gen) { - return gen->Generate(); -} +PlaylistItemList DoRunSearch(GeneratorPtr gen) { return gen->Generate(); } void SearchPreview::RunSearch(const Search& search) { generator_.reset(new QueryGenerator); generator_->set_library(backend_); - boost::dynamic_pointer_cast(generator_)->Load(search); + std::dynamic_pointer_cast(generator_)->Load(search); ui_->busy_container->show(); ui_->count_label->hide(); @@ -109,7 +106,8 @@ void SearchPreview::SearchFinished() { FutureWatcher* watcher = static_cast(sender()); watcher->deleteLater(); - last_search_ = boost::dynamic_pointer_cast(generator_)->search(); + last_search_ = + std::dynamic_pointer_cast(generator_)->search(); generator_.reset(); if (pending_search_.is_valid() && pending_search_ != last_search_) { @@ -128,7 +126,8 @@ void SearchPreview::SearchFinished() { if (displayed_items.count() < all_items.count()) { ui_->count_label->setText(tr("%1 songs found (showing %2)") - .arg(all_items.count()).arg(displayed_items.count())); + .arg(all_items.count()) + .arg(displayed_items.count())); } else { ui_->count_label->setText(tr("%1 songs found").arg(all_items.count())); } @@ -137,4 +136,4 @@ void SearchPreview::SearchFinished() { ui_->count_label->show(); } -} // namespace +} // namespace diff --git a/src/smartplaylists/searchpreview.h b/src/smartplaylists/searchpreview.h index 8f58eeecd..b7b84c3e9 100644 --- a/src/smartplaylists/searchpreview.h +++ b/src/smartplaylists/searchpreview.h @@ -33,8 +33,8 @@ namespace smart_playlists { class SearchPreview : public QWidget { Q_OBJECT -public: - SearchPreview(QWidget *parent = 0); + public: + SearchPreview(QWidget* parent = nullptr); ~SearchPreview(); void set_application(Application* app); @@ -42,16 +42,16 @@ public: void Update(const Search& search); -protected: + protected: void showEvent(QShowEvent*); -private: + private: void RunSearch(const Search& search); -private slots: + private slots: void SearchFinished(); -private: + private: Ui_SmartPlaylistSearchPreview* ui_; QList fields_; @@ -63,6 +63,6 @@ private: GeneratorPtr generator_; }; -} // namespace +} // namespace -#endif // SMARTPLAYLISTSEARCHPREVIEW_H +#endif // SMARTPLAYLISTSEARCHPREVIEW_H diff --git a/src/smartplaylists/searchterm.cpp b/src/smartplaylists/searchterm.cpp index ddc6b59fa..30a44c2ec 100644 --- a/src/smartplaylists/searchterm.cpp +++ b/src/smartplaylists/searchterm.cpp @@ -20,19 +20,10 @@ namespace smart_playlists { -SearchTerm::SearchTerm() - : field_(Field_Title), - operator_(Op_Equals) -{ -} +SearchTerm::SearchTerm() : field_(Field_Title), operator_(Op_Equals) {} -SearchTerm::SearchTerm( - Field field, Operator op, const QVariant& value) - : field_(field), - operator_(op), - value_(value) -{ -} +SearchTerm::SearchTerm(Field field, Operator op, const QVariant& value) + : field_(field), operator_(op), value_(value) {} QString SearchTerm::ToSql() const { QString col = FieldColumnName(field_); @@ -42,7 +33,8 @@ QString SearchTerm::ToSql() const { QString second_value; - bool special_date_query = (operator_ == SearchTerm::Op_NumericDate || operator_ == SearchTerm::Op_NumericDateNot || + bool special_date_query = (operator_ == SearchTerm::Op_NumericDate || + operator_ == SearchTerm::Op_NumericDateNot || operator_ == SearchTerm::Op_RelativeDate); // Floating point problems... @@ -69,8 +61,8 @@ QString SearchTerm::ToSql() const { if (date == "weeks") { // Sqlite doesn't know weeks, transform them to days date = "days"; - value = QString::number(value_.toInt()*7); - second_value = QString::number(second_value_.toInt()*7); + value = QString::number(value_.toInt() * 7); + second_value = QString::number(second_value_.toInt() * 7); } } } else if (TypeOf(field_) == Type_Time) { @@ -90,34 +82,34 @@ QString SearchTerm::ToSql() const { case Op_Equals: if (TypeOf(field_) == Type_Text) return col + " LIKE '" + value + "'"; - else if (TypeOf(field_) == Type_Rating || - TypeOf(field_) == Type_Date || + else if (TypeOf(field_) == Type_Rating || TypeOf(field_) == Type_Date || TypeOf(field_) == Type_Time) return col + " = " + value; else return col + " = '" + value + "'"; case Op_GreaterThan: - if (TypeOf(field_) == Type_Rating || - TypeOf(field_) == Type_Date || + if (TypeOf(field_) == Type_Rating || TypeOf(field_) == Type_Date || TypeOf(field_) == Type_Time) return col + " > " + value; else return col + " > '" + value + "'"; case Op_LessThan: - if (TypeOf(field_) == Type_Rating || - TypeOf(field_) == Type_Date || + if (TypeOf(field_) == Type_Rating || TypeOf(field_) == Type_Date || TypeOf(field_) == Type_Time) return col + " < " + value; else return col + " < '" + value + "'"; case Op_NumericDate: - return col + " > " + "DATETIME('now', '-" + value + " " + date +"', 'localtime')"; + return col + " > " + "DATETIME('now', '-" + value + " " + date + + "', 'localtime')"; case Op_NumericDateNot: - return col + " < " + "DATETIME('now', '-" + value + " " + date +"', 'localtime')"; + return col + " < " + "DATETIME('now', '-" + value + " " + date + + "', 'localtime')"; case Op_RelativeDate: // Consider the time range before the first date but after the second one - return "(" + col + " < " + "DATETIME('now', '-" + value + " " + date +"', 'localtime') AND " + - col + " > " + "DATETIME('now', '-" + second_value + " " + date +"', 'localtime'))"; + return "(" + col + " < " + "DATETIME('now', '-" + value + " " + date + + "', 'localtime') AND " + col + " > " + "DATETIME('now', '-" + + second_value + " " + date + "', 'localtime'))"; case Op_NotEquals: if (TypeOf(field_) == Type_Text) { return col + " <> '" + value + "'"; @@ -138,21 +130,25 @@ bool SearchTerm::is_valid() const { } switch (TypeOf(field_)) { - case Type_Text: return !value_.toString().isEmpty(); - case Type_Date: return value_.toInt() != 0; - case Type_Number: return value_.toInt() >= 0; - case Type_Rating: return value_.toFloat() >= 0.0; - case Type_Time: return true; - case Type_Invalid: return false; + case Type_Text: + return !value_.toString().isEmpty(); + case Type_Date: + return value_.toInt() != 0; + case Type_Number: + return value_.toInt() >= 0; + case Type_Rating: + return value_.toFloat() >= 0.0; + case Type_Time: + return true; + case Type_Invalid: + return false; } return false; } -bool SearchTerm::operator ==(const SearchTerm& other) const { - return field_ == other.field_ && - operator_ == other.operator_ && - value_ == other.value_ && - date_ == other.date_ && +bool SearchTerm::operator==(const SearchTerm& other) const { + return field_ == other.field_ && operator_ == other.operator_ && + value_ == other.value_ && date_ == other.date_ && second_value_ == other.second_value_; } @@ -192,37 +188,56 @@ OperatorList SearchTerm::OperatorsForType(Type type) { return OperatorList() << Op_Contains << Op_NotContains << Op_Equals << Op_NotEquals << Op_StartsWith << Op_EndsWith; case Type_Date: - return OperatorList() << Op_Equals << Op_NotEquals << Op_GreaterThan << Op_LessThan - << Op_NumericDate << Op_NumericDateNot << Op_RelativeDate; + return OperatorList() << Op_Equals << Op_NotEquals << Op_GreaterThan + << Op_LessThan << Op_NumericDate + << Op_NumericDateNot << Op_RelativeDate; default: - return OperatorList() << Op_Equals << Op_NotEquals << Op_GreaterThan << Op_LessThan; + return OperatorList() << Op_Equals << Op_NotEquals << Op_GreaterThan + << Op_LessThan; } } QString SearchTerm::OperatorText(Type type, Operator op) { if (type == Type_Date) { switch (op) { - case Op_GreaterThan: return QObject::tr("after"); - case Op_LessThan: return QObject::tr("before"); - case Op_Equals: return QObject::tr("on"); - case Op_NotEquals: return QObject::tr("not on"); - case Op_NumericDate: return QObject::tr("in the last"); - case Op_NumericDateNot: return QObject::tr("not in the last"); - case Op_RelativeDate: return QObject::tr("between"); - default: return QString(); + case Op_GreaterThan: + return QObject::tr("after"); + case Op_LessThan: + return QObject::tr("before"); + case Op_Equals: + return QObject::tr("on"); + case Op_NotEquals: + return QObject::tr("not on"); + case Op_NumericDate: + return QObject::tr("in the last"); + case Op_NumericDateNot: + return QObject::tr("not in the last"); + case Op_RelativeDate: + return QObject::tr("between"); + default: + return QString(); } } switch (op) { - case Op_Contains: return QObject::tr("contains"); - case Op_NotContains: return QObject::tr("does not contain"); - case Op_StartsWith: return QObject::tr("starts with"); - case Op_EndsWith: return QObject::tr("ends with"); - case Op_GreaterThan: return QObject::tr("greater than"); - case Op_LessThan: return QObject::tr("less than"); - case Op_Equals: return QObject::tr("equals"); - case Op_NotEquals: return QObject::tr("not equals"); - default: return QString(); + case Op_Contains: + return QObject::tr("contains"); + case Op_NotContains: + return QObject::tr("does not contain"); + case Op_StartsWith: + return QObject::tr("starts with"); + case Op_EndsWith: + return QObject::tr("ends with"); + case Op_GreaterThan: + return QObject::tr("greater than"); + case Op_LessThan: + return QObject::tr("less than"); + case Op_Equals: + return QObject::tr("equals"); + case Op_NotEquals: + return QObject::tr("not equals"); + default: + return QString(); } return QString(); @@ -230,76 +245,136 @@ QString SearchTerm::OperatorText(Type type, Operator op) { QString SearchTerm::FieldColumnName(Field field) { switch (field) { - case Field_Length: return "length"; - case Field_Track: return "track"; - case Field_Disc: return "disc"; - case Field_Year: return "year"; - case Field_BPM: return "bpm"; - case Field_Bitrate: return "bitrate"; - case Field_Samplerate: return "samplerate"; - case Field_Filesize: return "filesize"; - case Field_PlayCount: return "playcount"; - case Field_SkipCount: return "skipcount"; - case Field_LastPlayed: return "lastplayed"; - case Field_DateCreated: return "ctime"; - case Field_DateModified:return "mtime"; - case Field_Rating: return "rating"; - case Field_Score: return "score"; - case Field_Title: return "title"; - case Field_Artist: return "artist"; - case Field_Album: return "album"; - case Field_AlbumArtist: return "albumartist"; - case Field_Composer: return "composer"; - case Field_Performer: return "performer"; - case Field_Grouping: return "grouping"; - case Field_Genre: return "genre"; - case Field_Comment: return "comment"; - case Field_Filepath: return "filename"; - case FieldCount: Q_ASSERT(0); + case Field_Length: + return "length"; + case Field_Track: + return "track"; + case Field_Disc: + return "disc"; + case Field_Year: + return "year"; + case Field_BPM: + return "bpm"; + case Field_Bitrate: + return "bitrate"; + case Field_Samplerate: + return "samplerate"; + case Field_Filesize: + return "filesize"; + case Field_PlayCount: + return "playcount"; + case Field_SkipCount: + return "skipcount"; + case Field_LastPlayed: + return "lastplayed"; + case Field_DateCreated: + return "ctime"; + case Field_DateModified: + return "mtime"; + case Field_Rating: + return "rating"; + case Field_Score: + return "score"; + case Field_Title: + return "title"; + case Field_Artist: + return "artist"; + case Field_Album: + return "album"; + case Field_AlbumArtist: + return "albumartist"; + case Field_Composer: + return "composer"; + case Field_Performer: + return "performer"; + case Field_Grouping: + return "grouping"; + case Field_Genre: + return "genre"; + case Field_Comment: + return "comment"; + case Field_Filepath: + return "filename"; + case FieldCount: + Q_ASSERT(0); } return QString(); } QString SearchTerm::FieldName(Field field) { switch (field) { - case Field_Length: return Playlist::column_name(Playlist::Column_Length); - case Field_Track: return Playlist::column_name(Playlist::Column_Track); - case Field_Disc: return Playlist::column_name(Playlist::Column_Disc); - case Field_Year: return Playlist::column_name(Playlist::Column_Year); - case Field_BPM: return Playlist::column_name(Playlist::Column_BPM); - case Field_Bitrate: return Playlist::column_name(Playlist::Column_Bitrate); - case Field_Samplerate: return Playlist::column_name(Playlist::Column_Samplerate); - case Field_Filesize: return Playlist::column_name(Playlist::Column_Filesize); - case Field_PlayCount: return Playlist::column_name(Playlist::Column_PlayCount); - case Field_SkipCount: return Playlist::column_name(Playlist::Column_SkipCount); - case Field_LastPlayed: return Playlist::column_name(Playlist::Column_LastPlayed); - case Field_DateCreated: return Playlist::column_name(Playlist::Column_DateCreated); - case Field_DateModified:return Playlist::column_name(Playlist::Column_DateModified); - case Field_Rating: return Playlist::column_name(Playlist::Column_Rating); - case Field_Score: return Playlist::column_name(Playlist::Column_Score); - case Field_Title: return Playlist::column_name(Playlist::Column_Title); - case Field_Artist: return Playlist::column_name(Playlist::Column_Artist); - case Field_Album: return Playlist::column_name(Playlist::Column_Album); - case Field_AlbumArtist: return Playlist::column_name(Playlist::Column_AlbumArtist); - case Field_Composer: return Playlist::column_name(Playlist::Column_Composer); - case Field_Performer: return Playlist::column_name(Playlist::Column_Performer); - case Field_Grouping: return Playlist::column_name(Playlist::Column_Grouping); - case Field_Genre: return Playlist::column_name(Playlist::Column_Genre); - case Field_Comment: return QObject::tr("Comment"); - case Field_Filepath: return Playlist::column_name(Playlist::Column_Filename); - case FieldCount: Q_ASSERT(0); + case Field_Length: + return Playlist::column_name(Playlist::Column_Length); + case Field_Track: + return Playlist::column_name(Playlist::Column_Track); + case Field_Disc: + return Playlist::column_name(Playlist::Column_Disc); + case Field_Year: + return Playlist::column_name(Playlist::Column_Year); + case Field_BPM: + return Playlist::column_name(Playlist::Column_BPM); + case Field_Bitrate: + return Playlist::column_name(Playlist::Column_Bitrate); + case Field_Samplerate: + return Playlist::column_name(Playlist::Column_Samplerate); + case Field_Filesize: + return Playlist::column_name(Playlist::Column_Filesize); + case Field_PlayCount: + return Playlist::column_name(Playlist::Column_PlayCount); + case Field_SkipCount: + return Playlist::column_name(Playlist::Column_SkipCount); + case Field_LastPlayed: + return Playlist::column_name(Playlist::Column_LastPlayed); + case Field_DateCreated: + return Playlist::column_name(Playlist::Column_DateCreated); + case Field_DateModified: + return Playlist::column_name(Playlist::Column_DateModified); + case Field_Rating: + return Playlist::column_name(Playlist::Column_Rating); + case Field_Score: + return Playlist::column_name(Playlist::Column_Score); + case Field_Title: + return Playlist::column_name(Playlist::Column_Title); + case Field_Artist: + return Playlist::column_name(Playlist::Column_Artist); + case Field_Album: + return Playlist::column_name(Playlist::Column_Album); + case Field_AlbumArtist: + return Playlist::column_name(Playlist::Column_AlbumArtist); + case Field_Composer: + return Playlist::column_name(Playlist::Column_Composer); + case Field_Performer: + return Playlist::column_name(Playlist::Column_Performer); + case Field_Grouping: + return Playlist::column_name(Playlist::Column_Grouping); + case Field_Genre: + return Playlist::column_name(Playlist::Column_Genre); + case Field_Comment: + return QObject::tr("Comment"); + case Field_Filepath: + return Playlist::column_name(Playlist::Column_Filename); + case FieldCount: + Q_ASSERT(0); } return QString(); } QString SearchTerm::FieldSortOrderText(Type type, bool ascending) { switch (type) { - case Type_Text: return ascending ? QObject::tr("A-Z") : QObject::tr("Z-A"); - case Type_Date: return ascending ? QObject::tr("oldest first") : QObject::tr("newest first"); - case Type_Time: return ascending ? QObject::tr("shortest first") : QObject::tr("longest first"); + case Type_Text: + return ascending ? QObject::tr("A-Z") : QObject::tr("Z-A"); + case Type_Date: + return ascending ? QObject::tr("oldest first") + : QObject::tr("newest first"); + case Type_Time: + return ascending ? QObject::tr("shortest first") + : QObject::tr("longest first"); case Type_Number: - case Type_Rating: return ascending ? QObject::tr("smallest first") : QObject::tr("biggest first"); - case Type_Invalid: return QString(); + case Type_Rating: + return ascending ? QObject::tr("smallest first") + : QObject::tr("biggest first"); + case Type_Invalid: + return QString(); } return QString(); } @@ -307,18 +382,24 @@ QString SearchTerm::FieldSortOrderText(Type type, bool ascending) { QString SearchTerm::DateName(DateType date, bool forQuery) { // If forQuery is true, untranslated keywords are returned switch (date) { - case Date_Hour: return (forQuery ? "hours" : QObject::tr("Hours")); - case Date_Day: return (forQuery ? "days" : QObject::tr("Days")); - case Date_Week: return (forQuery ? "weeks" : QObject::tr("Weeks")); - case Date_Month: return (forQuery ? "months" : QObject::tr("Months")); - case Date_Year: return (forQuery ? "years" : QObject::tr("Years")); + case Date_Hour: + return (forQuery ? "hours" : QObject::tr("Hours")); + case Date_Day: + return (forQuery ? "days" : QObject::tr("Days")); + case Date_Week: + return (forQuery ? "weeks" : QObject::tr("Weeks")); + case Date_Month: + return (forQuery ? "months" : QObject::tr("Months")); + case Date_Year: + return (forQuery ? "years" : QObject::tr("Years")); } return QString(); } -} // namespace +} // namespace -QDataStream& operator <<(QDataStream& s, const smart_playlists::SearchTerm& term) { +QDataStream& operator<<(QDataStream& s, + const smart_playlists::SearchTerm& term) { s << quint8(term.field_); s << quint8(term.operator_); s << term.value_; @@ -327,7 +408,7 @@ QDataStream& operator <<(QDataStream& s, const smart_playlists::SearchTerm& term return s; } -QDataStream& operator >>(QDataStream& s, smart_playlists::SearchTerm& term) { +QDataStream& operator>>(QDataStream& s, smart_playlists::SearchTerm& term) { quint8 field, op, date; s >> field >> op >> term.value_ >> term.second_value_ >> date; term.field_ = smart_playlists::SearchTerm::Field(field); diff --git a/src/smartplaylists/searchterm.h b/src/smartplaylists/searchterm.h index f1ba69e4c..aaf8ef2a0 100644 --- a/src/smartplaylists/searchterm.h +++ b/src/smartplaylists/searchterm.h @@ -24,7 +24,7 @@ namespace smart_playlists { class SearchTerm { -public: + public: // These values are persisted, so add to the end of the enum only enum Field { Field_Title = 0, @@ -52,7 +52,6 @@ public: Field_Filepath, Field_Performer, Field_Grouping, - FieldCount }; @@ -89,18 +88,11 @@ public: Type_Time, Type_Number, Type_Rating, - Type_Invalid }; // These values are persisted, so add to the end of the enum only - enum DateType { - Date_Hour = 0, - Date_Day, - Date_Week, - Date_Month, - Date_Year, - }; + enum DateType { Date_Hour = 0, Date_Day, Date_Week, Date_Month, Date_Year, }; SearchTerm(); SearchTerm(Field field, Operator op, const QVariant& value); @@ -109,13 +101,14 @@ public: Operator operator_; QVariant value_; DateType date_; - // For relative dates, we need a second parameter, might be useful somewhere else + // For relative dates, we need a second parameter, might be useful somewhere + // else QVariant second_value_; QString ToSql() const; bool is_valid() const; - bool operator ==(const SearchTerm& other) const; - bool operator !=(const SearchTerm& other) const { return !(*this == other); } + bool operator==(const SearchTerm& other) const; + bool operator!=(const SearchTerm& other) const { return !(*this == other); } static Type TypeOf(Field field); static QList OperatorsForType(Type type); @@ -128,9 +121,10 @@ public: typedef QList OperatorList; -} // namespace +} // namespace -QDataStream& operator <<(QDataStream& s, const smart_playlists::SearchTerm& term); -QDataStream& operator >>(QDataStream& s, smart_playlists::SearchTerm& term); +QDataStream& operator<<(QDataStream& s, + const smart_playlists::SearchTerm& term); +QDataStream& operator>>(QDataStream& s, smart_playlists::SearchTerm& term); -#endif // SMARTPLAYLISTSEARCHTERM_H +#endif // SMARTPLAYLISTSEARCHTERM_H diff --git a/src/smartplaylists/searchtermwidget.cpp b/src/smartplaylists/searchtermwidget.cpp index b12c4ff6e..74bf64b07 100644 --- a/src/smartplaylists/searchtermwidget.cpp +++ b/src/smartplaylists/searchtermwidget.cpp @@ -31,12 +31,13 @@ #include // Exported by QtGui -void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0); +void qt_blurImage(QPainter* p, QImage& blurImage, qreal radius, bool quality, + bool alphaOnly, int transposed = 0); namespace smart_playlists { class SearchTermWidget::Overlay : public QWidget { -public: + public: Overlay(SearchTermWidget* parent); void Grab(); void SetOpacity(float opacity); @@ -45,11 +46,11 @@ public: static const int kSpacing; static const int kIconSize; -protected: + protected: void paintEvent(QPaintEvent*); void mouseReleaseEvent(QMouseEvent*); -private: + private: SearchTermWidget* parent_; float opacity_; @@ -61,19 +62,18 @@ private: const int SearchTermWidget::Overlay::kSpacing = 6; const int SearchTermWidget::Overlay::kIconSize = 22; - SearchTermWidget::SearchTermWidget(LibraryBackend* library, QWidget* parent) - : QWidget(parent), - ui_(new Ui_SmartPlaylistSearchTermWidget), - library_(library), - overlay_(NULL), - animation_(new QPropertyAnimation(this, "overlay_opacity", this)), - active_(true), - initialized_(false), - current_field_type_(SearchTerm::Type_Invalid) -{ + : QWidget(parent), + ui_(new Ui_SmartPlaylistSearchTermWidget), + library_(library), + overlay_(nullptr), + animation_(new QPropertyAnimation(this, "overlay_opacity", this)), + active_(true), + initialized_(false), + current_field_type_(SearchTerm::Type_Invalid) { ui_->setupUi(this); - connect(ui_->field, SIGNAL(currentIndexChanged(int)), SLOT(FieldChanged(int))); + connect(ui_->field, SIGNAL(currentIndexChanged(int)), + SLOT(FieldChanged(int))); connect(ui_->op, SIGNAL(currentIndexChanged(int)), SLOT(OpChanged(int))); connect(ui_->remove, SIGNAL(clicked()), SIGNAL(RemoveClicked())); @@ -82,27 +82,33 @@ SearchTermWidget::SearchTermWidget(LibraryBackend* library, QWidget* parent) connect(ui_->value_rating, SIGNAL(RatingChanged(float)), SIGNAL(Changed())); connect(ui_->value_text, SIGNAL(textChanged(QString)), SIGNAL(Changed())); connect(ui_->value_time, SIGNAL(timeChanged(QTime)), SIGNAL(Changed())); - connect(ui_->value_date_numeric, SIGNAL(valueChanged(int)), SIGNAL(Changed())); - connect(ui_->value_date_numeric1, SIGNAL(valueChanged(int)), SLOT(RelativeValueChanged())); - connect(ui_->value_date_numeric2, SIGNAL(valueChanged(int)), SLOT(RelativeValueChanged())); + connect(ui_->value_date_numeric, SIGNAL(valueChanged(int)), + SIGNAL(Changed())); + connect(ui_->value_date_numeric1, SIGNAL(valueChanged(int)), + SLOT(RelativeValueChanged())); + connect(ui_->value_date_numeric2, SIGNAL(valueChanged(int)), + SLOT(RelativeValueChanged())); connect(ui_->date_type, SIGNAL(currentIndexChanged(int)), SIGNAL(Changed())); - connect(ui_->date_type_relative, SIGNAL(currentIndexChanged(int)), SIGNAL(Changed())); + connect(ui_->date_type_relative, SIGNAL(currentIndexChanged(int)), + SIGNAL(Changed())); ui_->value_date->setDate(QDate::currentDate()); // Populate the combo boxes - for (int i=0; ifield->addItem(SearchTerm::FieldName(SearchTerm::Field(i))); ui_->field->setItemData(i, i); } ui_->field->model()->sort(0); // Populate the date type combo box - for (int i=0; i<5; ++i) { - ui_->date_type->addItem(SearchTerm::DateName(SearchTerm::DateType(i), false)); + for (int i = 0; i < 5; ++i) { + ui_->date_type->addItem( + SearchTerm::DateName(SearchTerm::DateType(i), false)); ui_->date_type->setItemData(i, i); - ui_->date_type_relative->addItem(SearchTerm::DateName(SearchTerm::DateType(i), false)); + ui_->date_type_relative->addItem( + SearchTerm::DateName(SearchTerm::DateType(i), false)); ui_->date_type_relative->setItemData(i, i); } @@ -115,25 +121,23 @@ SearchTermWidget::SearchTermWidget(LibraryBackend* library, QWidget* parent) QString stylesheet = QString::fromAscii(stylesheet_file.readAll()); const QColor base(222, 97, 97, 128); stylesheet.replace("%light2", Utilities::ColorToRgba(base.lighter(140))); - stylesheet.replace("%light", Utilities::ColorToRgba(base.lighter(120))); - stylesheet.replace("%dark", Utilities::ColorToRgba(base.darker(120))); - stylesheet.replace("%base", Utilities::ColorToRgba(base)); + stylesheet.replace("%light", Utilities::ColorToRgba(base.lighter(120))); + stylesheet.replace("%dark", Utilities::ColorToRgba(base.darker(120))); + stylesheet.replace("%base", Utilities::ColorToRgba(base)); setStyleSheet(stylesheet); } -SearchTermWidget::~SearchTermWidget() { - delete ui_; -} +SearchTermWidget::~SearchTermWidget() { delete ui_; } void SearchTermWidget::FieldChanged(int index) { - SearchTerm::Field field = SearchTerm::Field( - ui_->field->itemData(index).toInt()); + SearchTerm::Field field = + SearchTerm::Field(ui_->field->itemData(index).toInt()); SearchTerm::Type type = SearchTerm::TypeOf(field); // Populate the operator combo box if (type != current_field_type_) { ui_->op->clear(); - foreach (SearchTerm::Operator op, SearchTerm::OperatorsForType(type)) { + for (SearchTerm::Operator op : SearchTerm::OperatorsForType(type)) { const int i = ui_->op->count(); ui_->op->addItem(SearchTerm::OperatorText(type, op)); ui_->op->setItemData(i, op); @@ -142,29 +146,41 @@ void SearchTermWidget::FieldChanged(int index) { } // Show the correct value editor - QWidget* page = NULL; + QWidget* page = nullptr; switch (type) { - case SearchTerm::Type_Time: page = ui_->page_time; break; - case SearchTerm::Type_Number: page = ui_->page_number; break; - case SearchTerm::Type_Date: page = ui_->page_date; break; - case SearchTerm::Type_Rating: page = ui_->page_rating; break; - case SearchTerm::Type_Text: page = ui_->page_text; break; - case SearchTerm::Type_Invalid: page = NULL; break; + case SearchTerm::Type_Time: + page = ui_->page_time; + break; + case SearchTerm::Type_Number: + page = ui_->page_number; + break; + case SearchTerm::Type_Date: + page = ui_->page_date; + break; + case SearchTerm::Type_Rating: + page = ui_->page_rating; + break; + case SearchTerm::Type_Text: + page = ui_->page_text; + break; + case SearchTerm::Type_Invalid: + page = nullptr; + break; } ui_->value_stack->setCurrentWidget(page); // Maybe set a tag completer switch (field) { - case SearchTerm::Field_Artist: - new TagCompleter(library_, Playlist::Column_Artist, ui_->value_text); - break; + case SearchTerm::Field_Artist: + new TagCompleter(library_, Playlist::Column_Artist, ui_->value_text); + break; - case SearchTerm::Field_Album: - new TagCompleter(library_, Playlist::Column_Album, ui_->value_text); - break; + case SearchTerm::Field_Album: + new TagCompleter(library_, Playlist::Column_Album, ui_->value_text); + break; - default: - ui_->value_text->setCompleter(NULL); + default: + ui_->value_text->setCompleter(nullptr); } emit Changed(); @@ -172,17 +188,18 @@ void SearchTermWidget::FieldChanged(int index) { void SearchTermWidget::OpChanged(int index) { // We need to change the page only in the following case - if ((ui_->value_stack->currentWidget() == ui_->page_date) || (ui_->value_stack->currentWidget() == ui_->page_date_numeric) || + if ((ui_->value_stack->currentWidget() == ui_->page_date) || + (ui_->value_stack->currentWidget() == ui_->page_date_numeric) || (ui_->value_stack->currentWidget() == ui_->page_date_relative)) { - QWidget* page = NULL; - if (index == 4 || index == 5) { - page = ui_->page_date_numeric; - } else if (index == 6) { - page = ui_->page_date_relative; - } else { - page = ui_->page_date; - } - ui_->value_stack->setCurrentWidget(page); + QWidget* page = nullptr; + if (index == 4 || index == 5) { + page = ui_->page_date_numeric; + } else if (index == 6) { + page = ui_->page_date_relative; + } else { + page = ui_->page_date; + } + ui_->value_stack->setCurrentWidget(page); } emit Changed(); } @@ -190,7 +207,7 @@ void SearchTermWidget::OpChanged(int index) { void SearchTermWidget::SetActive(bool active) { active_ = active; delete overlay_; - overlay_ = NULL; + overlay_ = nullptr; if (!active) { overlay_ = new Overlay(this); @@ -198,8 +215,7 @@ void SearchTermWidget::SetActive(bool active) { } void SearchTermWidget::enterEvent(QEvent*) { - if (!overlay_ || !isEnabled()) - return; + if (!overlay_ || !isEnabled()) return; animation_->stop(); animation_->setEndValue(1.0); @@ -208,8 +224,7 @@ void SearchTermWidget::enterEvent(QEvent*) { } void SearchTermWidget::leaveEvent(QEvent*) { - if (!overlay_) - return; + if (!overlay_) return; animation_->stop(); animation_->setEndValue(0.0); @@ -231,13 +246,10 @@ void SearchTermWidget::showEvent(QShowEvent* e) { } } -void SearchTermWidget::Grab() { - overlay_->Grab(); -} +void SearchTermWidget::Grab() { overlay_->Grab(); } void SearchTermWidget::set_overlay_opacity(float opacity) { - if (overlay_) - overlay_->SetOpacity(opacity); + if (overlay_) overlay_->SetOpacity(opacity); } float SearchTermWidget::overlay_opacity() const { @@ -250,45 +262,44 @@ void SearchTermWidget::SetTerm(const SearchTerm& term) { // The value depends on the data type switch (SearchTerm::TypeOf(term.field_)) { - case SearchTerm::Type_Text: - ui_->value_text->setText(term.value_.toString()); - break; + case SearchTerm::Type_Text: + ui_->value_text->setText(term.value_.toString()); + break; - case SearchTerm::Type_Number: - ui_->value_number->setValue(term.value_.toInt()); - break; + case SearchTerm::Type_Number: + ui_->value_number->setValue(term.value_.toInt()); + break; - case SearchTerm::Type_Date: - if (ui_->value_stack->currentWidget() == ui_->page_date_numeric) { - ui_->value_date_numeric->setValue(term.value_.toInt()); - ui_->date_type->setCurrentIndex(term.date_); - } - else if (ui_->value_stack->currentWidget() == ui_->page_date_relative) { - ui_->value_date_numeric1->setValue(term.value_.toInt()); - ui_->value_date_numeric2->setValue(term.second_value_.toInt()); - ui_->date_type_relative->setCurrentIndex(term.date_); - } - else if (ui_->value_stack->currentWidget() == ui_->page_date) { - ui_->value_date->setDateTime(QDateTime::fromTime_t(term.value_.toInt())); - } - break; + case SearchTerm::Type_Date: + if (ui_->value_stack->currentWidget() == ui_->page_date_numeric) { + ui_->value_date_numeric->setValue(term.value_.toInt()); + ui_->date_type->setCurrentIndex(term.date_); + } else if (ui_->value_stack->currentWidget() == ui_->page_date_relative) { + ui_->value_date_numeric1->setValue(term.value_.toInt()); + ui_->value_date_numeric2->setValue(term.second_value_.toInt()); + ui_->date_type_relative->setCurrentIndex(term.date_); + } else if (ui_->value_stack->currentWidget() == ui_->page_date) { + ui_->value_date->setDateTime( + QDateTime::fromTime_t(term.value_.toInt())); + } + break; - case SearchTerm::Type_Time: - ui_->value_time->setTime(QTime(0,0).addSecs(term.value_.toInt())); - break; + case SearchTerm::Type_Time: + ui_->value_time->setTime(QTime(0, 0).addSecs(term.value_.toInt())); + break; - case SearchTerm::Type_Rating: - ui_->value_rating->set_rating(term.value_.toFloat()); - break; + case SearchTerm::Type_Rating: + ui_->value_rating->set_rating(term.value_.toFloat()); + break; - case SearchTerm::Type_Invalid: - break; + case SearchTerm::Type_Invalid: + break; } } SearchTerm SearchTermWidget::Term() const { const int field = ui_->field->itemData(ui_->field->currentIndex()).toInt(); - const int op = ui_->op->itemData(ui_->op->currentIndex()).toInt(); + const int op = ui_->op->itemData(ui_->op->currentIndex()).toInt(); SearchTerm ret; ret.field_ = SearchTerm::Field(field); @@ -303,7 +314,7 @@ SearchTerm SearchTermWidget::Term() const { } else if (value_page == ui_->page_date) { ret.value_ = ui_->value_date->dateTime().toTime_t(); } else if (value_page == ui_->page_time) { - ret.value_ = QTime(0,0).secsTo(ui_->value_time->time()); + ret.value_ = QTime(0, 0).secsTo(ui_->value_time->time()); } else if (value_page == ui_->page_rating) { ret.value_ = ui_->value_rating->rating(); } else if (value_page == ui_->page_date_numeric) { @@ -326,21 +337,20 @@ void SearchTermWidget::RelativeValueChanged() { } // Explain the user why he can't proceed if (ui_->value_date_numeric1->value() >= ui_->value_date_numeric2->value()) { - QMessageBox::warning(this, tr("Clementine"), - tr("The second value must be greater than the first one!")); + QMessageBox::warning( + this, tr("Clementine"), + tr("The second value must be greater than the first one!")); } // Emit the signal in any case, so the Next button will be disabled emit Changed(); } - SearchTermWidget::Overlay::Overlay(SearchTermWidget* parent) - : QWidget(parent), - parent_(parent), - opacity_(0.0), - text_(tr("Add search term")), - icon_(IconLoader::Load("list-add").pixmap(kIconSize)) -{ + : QWidget(parent), + parent_(parent), + opacity_(0.0), + text_(tr("Add search term")), + icon_(IconLoader::Load("list-add").pixmap(kIconSize)) { raise(); } @@ -395,8 +405,7 @@ void SearchTermWidget::Overlay::paintEvent(QPaintEvent*) { contents_size); const QRect icon(contents.topLeft(), QSize(kIconSize, kIconSize)); const QRect text(icon.right() + kSpacing, icon.top(), - contents.width() - kSpacing - kIconSize, - contents.height()); + contents.width() - kSpacing - kIconSize, contents.height()); // Icon and text p.setPen(palette().color(QPalette::Text)); @@ -408,4 +417,4 @@ void SearchTermWidget::Overlay::mouseReleaseEvent(QMouseEvent*) { emit parent_->Clicked(); } -} // namespace +} // namespace diff --git a/src/smartplaylists/searchtermwidget.h b/src/smartplaylists/searchtermwidget.h index 35d894201..7363b838f 100644 --- a/src/smartplaylists/searchtermwidget.h +++ b/src/smartplaylists/searchtermwidget.h @@ -32,11 +32,10 @@ namespace smart_playlists { class SearchTermWidget : public QWidget { Q_OBJECT - Q_PROPERTY(float overlay_opacity - READ overlay_opacity - WRITE set_overlay_opacity); + Q_PROPERTY(float overlay_opacity READ overlay_opacity WRITE + set_overlay_opacity); -public: + public: SearchTermWidget(LibraryBackend* library, QWidget* parent); ~SearchTermWidget(); @@ -54,19 +53,19 @@ signals: void Changed(); -protected: + protected: void showEvent(QShowEvent*); void enterEvent(QEvent*); void leaveEvent(QEvent*); void resizeEvent(QResizeEvent*); -private slots: + private slots: void FieldChanged(int index); void OpChanged(int index); void RelativeValueChanged(); void Grab(); -private: + private: class Overlay; friend class Overlay; @@ -81,6 +80,6 @@ private: SearchTerm::Type current_field_type_; }; -} // namespace +} // namespace -#endif // SMARTPLAYLISTSEARCHTERMWIDGET_H +#endif // SMARTPLAYLISTSEARCHTERMWIDGET_H diff --git a/src/smartplaylists/wizard.cpp b/src/smartplaylists/wizard.cpp index 4167d634d..efce81ccc 100644 --- a/src/smartplaylists/wizard.cpp +++ b/src/smartplaylists/wizard.cpp @@ -28,26 +28,22 @@ namespace smart_playlists { class Wizard::TypePage : public QWizardPage { -public: - TypePage(QWidget* parent) - : QWizardPage(parent), next_id_(-1) {} + public: + TypePage(QWidget* parent) : QWizardPage(parent), next_id_(-1) {} int nextId() const { return next_id_; } int next_id_; }; class Wizard::FinishPage : public QWizardPage { -public: + public: FinishPage(QWidget* parent) - : QWizardPage(parent), - ui_(new Ui_SmartPlaylistWizardFinishPage) { + : QWizardPage(parent), ui_(new Ui_SmartPlaylistWizardFinishPage) { ui_->setupUi(this); connect(ui_->name, SIGNAL(textChanged(QString)), SIGNAL(completeChanged())); } - ~FinishPage() { - delete ui_; - } + ~FinishPage() { delete ui_; } int nextId() const { return -1; } bool isComplete() const { return !ui_->name->text().isEmpty(); } @@ -56,14 +52,13 @@ public: }; Wizard::Wizard(Application* app, LibraryBackend* library, QWidget* parent) - : QWizard(parent), - app_(app), - library_(library), - type_page_(new TypePage(this)), - finish_page_(new FinishPage(this)), - type_index_(-1), - type_mapper_(new QSignalMapper(this)) -{ + : QWizard(parent), + app_(app), + library_(library), + type_page_(new TypePage(this)), + finish_page_(new FinishPage(this)), + type_index_(-1), + type_mapper_(new QSignalMapper(this)) { setWindowIcon(QIcon(":/icon.png")); setWindowTitle(tr("Smart playlist")); resize(788, 628); @@ -71,14 +66,17 @@ Wizard::Wizard(Application* app, LibraryBackend* library, QWidget* parent) #ifdef Q_OS_MAC // MacStyle leaves an ugly empty space on the left side of the dialog. setWizardStyle(QWizard::ClassicStyle); -#endif // Q_OS_MAC +#endif // Q_OS_MAC // Type page type_page_->setTitle(tr("Playlist type")); - type_page_->setSubTitle(tr("A smart playlist is a dynamic list of songs that come from your library. There are different types of smart playlist that offer different ways of selecting songs.")); + type_page_->setSubTitle( + tr("A smart playlist is a dynamic list of songs that come from your " + "library. There are different types of smart playlist that offer " + "different ways of selecting songs.")); type_page_->setStyleSheet( - "QRadioButton { font-weight: bold; }" - "QLabel { margin-bottom: 1em; margin-left: 24px; }"); + "QRadioButton { font-weight: bold; }" + "QLabel { margin-bottom: 1em; margin-left: 24px; }"); addPage(type_page_); // Finish page @@ -95,13 +93,11 @@ Wizard::Wizard(Application* app, LibraryBackend* library, QWidget* parent) setStartId(2); } -Wizard::~Wizard() { - qDeleteAll(plugins_); -} +Wizard::~Wizard() { qDeleteAll(plugins_); } void Wizard::SetGenerator(GeneratorPtr gen) { // Find the right type and jump to the start page - for (int i=0 ; itype() == gen->type()) { TypeChanged(i); // TODO: Put this back in when the setStartId is removed from the ctor @@ -145,12 +141,10 @@ void Wizard::TypeChanged(int index) { GeneratorPtr Wizard::CreateGenerator() const { GeneratorPtr ret; - if (type_index_ == -1) - return ret; + if (type_index_ == -1) return ret; ret = plugins_[type_index_]->CreateGenerator(); - if (!ret) - return ret; + if (!ret) return ret; ret->set_name(finish_page_->ui_->name->text()); ret->set_dynamic(finish_page_->ui_->dynamic->isChecked()); @@ -160,9 +154,9 @@ GeneratorPtr Wizard::CreateGenerator() const { void Wizard::initializePage(int id) { if (id == finish_id_) { finish_page_->ui_->dynamic_container->setEnabled( - plugins_[type_index_]->is_dynamic()); + plugins_[type_index_]->is_dynamic()); } QWizard::initializePage(id); } -} // namespace +} // namespace diff --git a/src/smartplaylists/wizard.h b/src/smartplaylists/wizard.h index f8599ce54..0d4f07fff 100644 --- a/src/smartplaylists/wizard.h +++ b/src/smartplaylists/wizard.h @@ -35,26 +35,26 @@ class WizardPlugin; class Wizard : public QWizard { Q_OBJECT -public: + public: Wizard(Application* app, LibraryBackend* library, QWidget* parent); ~Wizard(); void SetGenerator(GeneratorPtr gen); GeneratorPtr CreateGenerator() const; -protected: + protected: void initializePage(int id); -private: + private: class TypePage; class FinishPage; void AddPlugin(WizardPlugin* plugin); -private slots: + private slots: void TypeChanged(int index); -private: + private: Application* app_; LibraryBackend* library_; TypePage* type_page_; @@ -66,6 +66,6 @@ private: QSignalMapper* type_mapper_; }; -} // namespace +} // namespace -#endif // SMARTPLAYLISTWIZARD_H +#endif // SMARTPLAYLISTWIZARD_H diff --git a/src/smartplaylists/wizardplugin.cpp b/src/smartplaylists/wizardplugin.cpp index 6f4eacdb5..8405e626e 100644 --- a/src/smartplaylists/wizardplugin.cpp +++ b/src/smartplaylists/wizardplugin.cpp @@ -19,16 +19,12 @@ namespace smart_playlists { -WizardPlugin::WizardPlugin(Application* app, LibraryBackend* library, QObject* parent) - : QObject(parent), - app_(app), - library_(library), - start_page_(-1) -{ -} +WizardPlugin::WizardPlugin(Application* app, LibraryBackend* library, + QObject* parent) + : QObject(parent), app_(app), library_(library), start_page_(-1) {} void WizardPlugin::Init(QWizard* wizard, int finish_page_id) { start_page_ = CreatePages(wizard, finish_page_id); } -} // namespace smart_playlists +} // namespace smart_playlists diff --git a/src/smartplaylists/wizardplugin.h b/src/smartplaylists/wizardplugin.h index 2d9cea116..55571cbe4 100644 --- a/src/smartplaylists/wizardplugin.h +++ b/src/smartplaylists/wizardplugin.h @@ -32,7 +32,7 @@ namespace smart_playlists { class WizardPlugin : public QObject { Q_OBJECT -public: + public: WizardPlugin(Application* app, LibraryBackend* library, QObject* parent); virtual QString type() const = 0; @@ -46,16 +46,16 @@ public: void Init(QWizard* wizard, int finish_page_id); -protected: + protected: virtual int CreatePages(QWizard* wizard, int finish_page_id) = 0; Application* app_; LibraryBackend* library_; -private: + private: int start_page_; }; -} // namespace smart_playlists +} // namespace smart_playlists -#endif // WIZARDPLUGIN_H +#endif // WIZARDPLUGIN_H diff --git a/src/songinfo/artistinfoview.cpp b/src/songinfo/artistinfoview.cpp index 816c49c5c..5acfac3d4 100644 --- a/src/songinfo/artistinfoview.cpp +++ b/src/songinfo/artistinfoview.cpp @@ -23,13 +23,11 @@ #include "widgets/prettyimageview.h" #ifdef HAVE_LIBLASTFM - #include "echonestsimilarartists.h" - #include "echonesttags.h" +#include "echonestsimilarartists.h" +#include "echonesttags.h" #endif -ArtistInfoView::ArtistInfoView(QWidget *parent) - : SongInfoBase(parent) -{ +ArtistInfoView::ArtistInfoView(QWidget* parent) : SongInfoBase(parent) { fetcher_->AddProvider(new EchoNestBiographies); fetcher_->AddProvider(new EchoNestImages); fetcher_->AddProvider(new SongkickConcerts); @@ -39,37 +37,35 @@ ArtistInfoView::ArtistInfoView(QWidget *parent) #endif } -ArtistInfoView::~ArtistInfoView() { -} +ArtistInfoView::~ArtistInfoView() {} -bool ArtistInfoView::NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const { - if (new_metadata.artist().isEmpty()) - return false; +bool ArtistInfoView::NeedsUpdate(const Song& old_metadata, + const Song& new_metadata) const { + if (new_metadata.artist().isEmpty()) return false; return old_metadata.artist() != new_metadata.artist(); } - -void ArtistInfoView::InfoResultReady (int id, const CollapsibleInfoPane::Data& data) { - if (id != current_request_id_) - return; - - AddSection (new CollapsibleInfoPane(data, this)); + +void ArtistInfoView::InfoResultReady(int id, + const CollapsibleInfoPane::Data& data) { + if (id != current_request_id_) return; + + AddSection(new CollapsibleInfoPane(data, this)); CollapseSections(); } - -void ArtistInfoView::ResultReady(int id, const SongInfoFetcher::Result& result) { - if (id != current_request_id_) - return; + +void ArtistInfoView::ResultReady(int id, + const SongInfoFetcher::Result& result) { + if (id != current_request_id_) return; if (!result.images_.isEmpty()) { // Image view goes at the top PrettyImageView* image_view = new PrettyImageView(network_, this); AddWidget(image_view); - foreach (const QUrl& url, result.images_) { + for (const QUrl& url : result.images_) { image_view->AddImage(url); } } CollapseSections(); } - diff --git a/src/songinfo/artistinfoview.h b/src/songinfo/artistinfoview.h index 5a597d11f..b4cab03ea 100644 --- a/src/songinfo/artistinfoview.h +++ b/src/songinfo/artistinfoview.h @@ -31,17 +31,16 @@ class QVBoxLayout; class ArtistInfoView : public SongInfoBase { Q_OBJECT -public: - ArtistInfoView(QWidget* parent = 0); + public: + ArtistInfoView(QWidget* parent = nullptr); ~ArtistInfoView(); -protected: - virtual void InfoResultReady (int id, const CollapsibleInfoPane::Data& data); + protected: + virtual void InfoResultReady(int id, const CollapsibleInfoPane::Data& data); bool NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const; -protected slots: + protected slots: void ResultReady(int id, const SongInfoFetcher::Result& result); }; -#endif // ARTISTINFOVIEW_H - +#endif // ARTISTINFOVIEW_H diff --git a/src/songinfo/collapsibleinfoheader.cpp b/src/songinfo/collapsibleinfoheader.cpp index 8df53e917..64b182e2f 100644 --- a/src/songinfo/collapsibleinfoheader.cpp +++ b/src/songinfo/collapsibleinfoheader.cpp @@ -27,12 +27,11 @@ const int CollapsibleInfoHeader::kHeight = 20; const int CollapsibleInfoHeader::kIconSize = 16; CollapsibleInfoHeader::CollapsibleInfoHeader(QWidget* parent) - : QWidget(parent), - expanded_(false), - hovering_(false), - animation_(new QPropertyAnimation(this, "opacity", this)), - opacity_(0.0) -{ + : QWidget(parent), + expanded_(false), + hovering_(false), + animation_(new QPropertyAnimation(this, "opacity", this)), + opacity_(0.0) { setMinimumHeight(kHeight); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); setCursor(QCursor(Qt::PointingHandCursor)); @@ -86,21 +85,25 @@ void CollapsibleInfoHeader::set_opacity(float opacity) { void CollapsibleInfoHeader::paintEvent(QPaintEvent* e) { QPainter p(this); - QColor active_text_color(palette().color(QPalette::Active, QPalette::HighlightedText)); + QColor active_text_color( + palette().color(QPalette::Active, QPalette::HighlightedText)); QColor inactive_text_color(palette().color(QPalette::Active, QPalette::Text)); QColor text_color; if (expanded_) { text_color = active_text_color; } else { p.setOpacity(0.4 + opacity_ * 0.6); - text_color = QColor( - active_text_color.red() * opacity_ + inactive_text_color.red() * (1.0 - opacity_), - active_text_color.green() * opacity_ + inactive_text_color.green() * (1.0 - opacity_), - active_text_color.blue() * opacity_ + inactive_text_color.blue() * (1.0 - opacity_)); + text_color = QColor(active_text_color.red() * opacity_ + + inactive_text_color.red() * (1.0 - opacity_), + active_text_color.green() * opacity_ + + inactive_text_color.green() * (1.0 - opacity_), + active_text_color.blue() * opacity_ + + inactive_text_color.blue() * (1.0 - opacity_)); } QRect indicator_rect(0, 0, height(), height()); - QRect icon_rect(height() + 2, (kHeight - kIconSize) / 2, kIconSize, kIconSize); + QRect icon_rect(height() + 2, (kHeight - kIconSize) / 2, kIconSize, + kIconSize); QRect text_rect(rect()); text_rect.setLeft(icon_rect.right() + 4); @@ -127,14 +130,13 @@ void CollapsibleInfoHeader::paintEvent(QPaintEvent* e) { opt.initFrom(this); opt.rect = indicator_rect; opt.state |= QStyle::State_Children; - if (expanded_) - opt.state |= QStyle::State_Open; - if (hovering_) - opt.state |= QStyle::State_Active; + if (expanded_) opt.state |= QStyle::State_Open; + if (hovering_) opt.state |= QStyle::State_Active; // Have to use the application's style here because using the widget's style // will trigger QStyleSheetStyle's recursion guard (I don't know why). - QApplication::style()->drawPrimitive(QStyle::PE_IndicatorBranch, &opt, &p, this); + QApplication::style()->drawPrimitive(QStyle::PE_IndicatorBranch, &opt, &p, + this); // Draw the icon p.drawPixmap(icon_rect, icon_.pixmap(kIconSize)); diff --git a/src/songinfo/collapsibleinfoheader.h b/src/songinfo/collapsibleinfoheader.h index 5696a2e76..65b0bc15a 100644 --- a/src/songinfo/collapsibleinfoheader.h +++ b/src/songinfo/collapsibleinfoheader.h @@ -27,8 +27,8 @@ class CollapsibleInfoHeader : public QWidget { Q_OBJECT Q_PROPERTY(float opacity READ opacity WRITE set_opacity); -public: - CollapsibleInfoHeader(QWidget* parent = 0); + public: + CollapsibleInfoHeader(QWidget* parent = nullptr); static const int kHeight; static const int kIconSize; @@ -41,7 +41,7 @@ public: float opacity() const { return opacity_; } void set_opacity(float opacity); -public slots: + public slots: void SetExpanded(bool expanded); void SetTitle(const QString& title); void SetIcon(const QIcon& icon); @@ -51,13 +51,13 @@ signals: void Collapsed(); void ExpandedToggled(bool expanded); -protected: + protected: void enterEvent(QEvent*); void leaveEvent(QEvent*); void paintEvent(QPaintEvent* e); void mouseReleaseEvent(QMouseEvent*); -private: + private: bool expanded_; bool hovering_; QString title_; @@ -67,4 +67,4 @@ private: float opacity_; }; -#endif // COLLAPSIBLEINFOHEADER_H +#endif // COLLAPSIBLEINFOHEADER_H diff --git a/src/songinfo/collapsibleinfopane.cpp b/src/songinfo/collapsibleinfopane.cpp index 3a43af8e0..c76613b76 100644 --- a/src/songinfo/collapsibleinfopane.cpp +++ b/src/songinfo/collapsibleinfopane.cpp @@ -21,10 +21,7 @@ #include CollapsibleInfoPane::CollapsibleInfoPane(const Data& data, QWidget* parent) - : QWidget(parent), - data_(data), - header_(new CollapsibleInfoHeader(this)) -{ + : QWidget(parent), data_(data), header_(new CollapsibleInfoHeader(this)) { QVBoxLayout* layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(3); @@ -44,20 +41,17 @@ CollapsibleInfoPane::CollapsibleInfoPane(const Data& data, QWidget* parent) connect(header_, SIGNAL(ExpandedToggled(bool)), SIGNAL(Toggled(bool))); } -void CollapsibleInfoPane::Collapse() { - header_->SetExpanded(false); -} +void CollapsibleInfoPane::Collapse() { header_->SetExpanded(false); } -void CollapsibleInfoPane::Expand() { - header_->SetExpanded(true); -} +void CollapsibleInfoPane::Expand() { header_->SetExpanded(true); } void CollapsibleInfoPane::ExpandedToggled(bool expanded) { data_.contents_->setVisible(expanded); } -bool CollapsibleInfoPane::Data::operator <(const CollapsibleInfoPane::Data& other) const { - const int my_score = (TypeCount - type_ ) * 1000 + relevance_; +bool CollapsibleInfoPane::Data::operator<( + const CollapsibleInfoPane::Data& other) const { + const int my_score = (TypeCount - type_) * 1000 + relevance_; const int other_score = (TypeCount - other.type_) * 1000 + other.relevance_; return my_score > other_score; diff --git a/src/songinfo/collapsibleinfopane.h b/src/songinfo/collapsibleinfopane.h index cc884ba9d..1445cc5ba 100644 --- a/src/songinfo/collapsibleinfopane.h +++ b/src/songinfo/collapsibleinfopane.h @@ -26,11 +26,11 @@ class CollapsibleInfoHeader; class CollapsibleInfoPane : public QWidget { Q_OBJECT -public: + public: struct Data { Data() : type_(Type_Biography), relevance_(0) {} - bool operator <(const Data& other) const; + bool operator<(const Data& other) const; enum Type { Type_PlayCounts, @@ -38,7 +38,6 @@ public: Type_Similar, Type_Biography, Type_Lyrics, - TypeCount }; @@ -52,23 +51,23 @@ public: QObject* content_object_; }; - CollapsibleInfoPane(const Data& data, QWidget* parent = 0); + CollapsibleInfoPane(const Data& data, QWidget* parent = nullptr); const Data& data() const { return data_; } -public slots: + public slots: void Expand(); void Collapse(); signals: void Toggled(bool expanded); -private slots: + private slots: void ExpandedToggled(bool expanded); -private: + private: Data data_; CollapsibleInfoHeader* header_; }; -#endif // COLLAPSIBLEINFOPANE_H +#endif // COLLAPSIBLEINFOPANE_H diff --git a/src/songinfo/echonestbiographies.cpp b/src/songinfo/echonestbiographies.cpp index 0ac9f69a1..24967e305 100644 --- a/src/songinfo/echonestbiographies.cpp +++ b/src/songinfo/echonestbiographies.cpp @@ -16,18 +16,19 @@ */ #include "echonestbiographies.h" -#include "songinfotextview.h" -#include "core/logging.h" + +#include #include -#include +#include "songinfotextview.h" +#include "core/logging.h" struct EchoNestBiographies::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; EchoNestBiographies::EchoNestBiographies() { @@ -46,7 +47,7 @@ EchoNestBiographies::EchoNestBiographies() { } void EchoNestBiographies::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchBiographies(); @@ -56,26 +57,26 @@ void EchoNestBiographies::FetchInfo(int id, const Song& metadata) { void EchoNestBiographies::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; reply->deleteLater(); RequestPtr request = requests_.take(reply); try { request->artist_->parseProfile(reply); - } catch (Echonest::ParseError e) { - qLog(Warning) << "Error parsing echonest reply:" << e.errorType() << e.what(); + } + catch (Echonest::ParseError e) { + qLog(Warning) << "Error parsing echonest reply:" << e.errorType() + << e.what(); } QSet already_seen; - foreach (const Echonest::Biography& bio, request->artist_->biographies()) { + for (const Echonest::Biography& bio : request->artist_->biographies()) { QString canonical_site = bio.site().toLower(); - canonical_site.replace(QRegExp("[^a-z]"),""); + canonical_site.replace(QRegExp("[^a-z]"), ""); - if (already_seen.contains(canonical_site)) - continue; + if (already_seen.contains(canonical_site)) continue; already_seen.insert(canonical_site); CollapsibleInfoPane::Data data; @@ -93,18 +94,19 @@ void EchoNestBiographies::RequestFinished() { // Add a link to the bio webpage at the top if we have one if (!bio.url().isEmpty()) { text += "

" + - tr("Open in your browser") + - "

"; + tr("Open in your browser") + "

"; } text += bio.text(); if (bio.site() == "last.fm") { - // Echonest lost formatting and it seems there is currently no plans on Echonest side for changing this. + // Echonest lost formatting and it seems there is currently no plans on + // Echonest side for changing this. // But with last.fm, we can guess newlines: " " corresponds to a newline // (this seems to be because on last.fm' website, extra blank is inserted // before
tag, and this blank is kept). - // This is tricky, but this make the display nicer for last.fm biographies. - text.replace(" ","

"); + // This is tricky, but this make the display nicer for last.fm + // biographies. + text.replace(" ", "

"); } editor->SetHtml(text); data.contents_ = editor; diff --git a/src/songinfo/echonestbiographies.h b/src/songinfo/echonestbiographies.h index 5223fa114..2429bce58 100644 --- a/src/songinfo/echonestbiographies.h +++ b/src/songinfo/echonestbiographies.h @@ -18,31 +18,31 @@ #ifndef ECHONESTBIOGRAPHIES_H #define ECHONESTBIOGRAPHIES_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; class EchoNestBiographies : public SongInfoProvider { Q_OBJECT -public: + public: EchoNestBiographies(); void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: QMap site_relevance_; QMap site_icons_; struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; -#endif // ECHONESTBIOGRAPHIES_H +#endif // ECHONESTBIOGRAPHIES_H diff --git a/src/songinfo/echonestimages.cpp b/src/songinfo/echonestimages.cpp index 87a5c8559..08256e3e5 100644 --- a/src/songinfo/echonestimages.cpp +++ b/src/songinfo/echonestimages.cpp @@ -16,21 +16,22 @@ */ #include "echonestimages.h" -#include "core/logging.h" + +#include #include -#include +#include "core/logging.h" struct EchoNestImages::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; void EchoNestImages::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchImages(); @@ -40,19 +41,20 @@ void EchoNestImages::FetchInfo(int id, const Song& metadata) { void EchoNestImages::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; reply->deleteLater(); RequestPtr request = requests_.take(reply); try { request->artist_->parseProfile(reply); - } catch (Echonest::ParseError e) { - qLog(Warning) << "Error parsing echonest reply:" << e.errorType() << e.what(); + } + catch (Echonest::ParseError e) { + qLog(Warning) << "Error parsing echonest reply:" << e.errorType() + << e.what(); } - foreach (const Echonest::ArtistImage& image, request->artist_->images()) { + for (const Echonest::ArtistImage& image : request->artist_->images()) { emit ImageReady(request->id_, image.url()); } diff --git a/src/songinfo/echonestimages.h b/src/songinfo/echonestimages.h index ddd3f66e5..d1763a674 100644 --- a/src/songinfo/echonestimages.h +++ b/src/songinfo/echonestimages.h @@ -18,26 +18,26 @@ #ifndef ECHONESTIMAGES_H #define ECHONESTIMAGES_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; class EchoNestImages : public SongInfoProvider { Q_OBJECT -public: + public: void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; -#endif // ECHONESTIMAGES_H +#endif // ECHONESTIMAGES_H diff --git a/src/songinfo/echonestsimilarartists.cpp b/src/songinfo/echonestsimilarartists.cpp index b42c8dd8c..b481d4c32 100644 --- a/src/songinfo/echonestsimilarartists.cpp +++ b/src/songinfo/echonestsimilarartists.cpp @@ -38,8 +38,7 @@ void EchoNestSimilarArtists::FetchInfo(int id, const Song& metadata) { void EchoNestSimilarArtists::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; reply->deleteLater(); int id = requests_.take(reply); @@ -47,8 +46,10 @@ void EchoNestSimilarArtists::RequestFinished() { Echonest::Artists artists; try { artists = Echonest::Artist::parseSimilar(reply); - } catch (Echonest::ParseError e) { - qLog(Warning) << "Error parsing echonest reply:" << e.errorType() << e.what(); + } + catch (Echonest::ParseError e) { + qLog(Warning) << "Error parsing echonest reply:" << e.errorType() + << e.what(); } if (!artists.isEmpty()) { @@ -63,10 +64,9 @@ void EchoNestSimilarArtists::RequestFinished() { widget->SetIcon(QIcon(":/icons/22x22/x-clementine-artist.png")); - foreach (const Echonest::Artist& artist, artists) { + for (const Echonest::Artist& artist : artists) { widget->AddTag(artist.name()); - if (widget->count() >= 10) - break; + if (widget->count() >= 10) break; } emit InfoReady(id, data); diff --git a/src/songinfo/echonestsimilarartists.h b/src/songinfo/echonestsimilarartists.h index 22065fc18..f78fa544f 100644 --- a/src/songinfo/echonestsimilarartists.h +++ b/src/songinfo/echonestsimilarartists.h @@ -25,14 +25,14 @@ class QNetworkReply; class EchoNestSimilarArtists : public SongInfoProvider { Q_OBJECT -public: + public: void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: QMap requests_; }; -#endif // ECHONESTSIMILARARTISTS_H +#endif // ECHONESTSIMILARARTISTS_H diff --git a/src/songinfo/echonesttags.cpp b/src/songinfo/echonesttags.cpp index 5e4c902ab..7911cecf4 100644 --- a/src/songinfo/echonesttags.cpp +++ b/src/songinfo/echonesttags.cpp @@ -16,22 +16,23 @@ */ #include "echonesttags.h" -#include "tagwidget.h" -#include "core/logging.h" + +#include #include -#include +#include "tagwidget.h" +#include "core/logging.h" struct EchoNestTags::Request { Request(int id) : id_(id), artist_(new Echonest::Artist) {} int id_; - boost::scoped_ptr artist_; + std::unique_ptr artist_; }; void EchoNestTags::FetchInfo(int id, const Song& metadata) { - boost::shared_ptr request(new Request(id)); + std::shared_ptr request(new Request(id)); request->artist_->setName(metadata.artist()); QNetworkReply* reply = request->artist_->fetchTerms(); @@ -41,16 +42,17 @@ void EchoNestTags::FetchInfo(int id, const Song& metadata) { void EchoNestTags::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; reply->deleteLater(); RequestPtr request = requests_.take(reply); try { request->artist_->parseProfile(reply); - } catch (Echonest::ParseError e) { - qLog(Warning) << "Error parsing echonest reply:" << e.errorType() << e.what(); + } + catch (Echonest::ParseError e) { + qLog(Warning) << "Error parsing echonest reply:" << e.errorType() + << e.what(); } if (!request->artist_->terms().isEmpty()) { @@ -65,10 +67,9 @@ void EchoNestTags::RequestFinished() { widget->SetIcon(data.icon_); - foreach (const Echonest::Term& term, request->artist_->terms()) { + for (const Echonest::Term& term : request->artist_->terms()) { widget->AddTag(term.name()); - if (widget->count() >= 10) - break; + if (widget->count() >= 10) break; } emit InfoReady(request->id_, data); @@ -76,4 +77,3 @@ void EchoNestTags::RequestFinished() { emit Finished(request->id_); } - diff --git a/src/songinfo/echonesttags.h b/src/songinfo/echonesttags.h index 7ef9284b3..5776f3e00 100644 --- a/src/songinfo/echonesttags.h +++ b/src/songinfo/echonesttags.h @@ -18,26 +18,26 @@ #ifndef ECHONESTTAGS_H #define ECHONESTTAGS_H -#include "songinfoprovider.h" +#include -#include +#include "songinfoprovider.h" class QNetworkReply; class EchoNestTags : public SongInfoProvider { Q_OBJECT -public: + public: void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: struct Request; - typedef boost::shared_ptr RequestPtr; + typedef std::shared_ptr RequestPtr; QMap requests_; }; -#endif // ECHONESTTAGS_H +#endif // ECHONESTTAGS_H diff --git a/src/songinfo/lastfmtrackinfoprovider.cpp b/src/songinfo/lastfmtrackinfoprovider.cpp index e60ab0ea3..72bbbccb3 100644 --- a/src/songinfo/lastfmtrackinfoprovider.cpp +++ b/src/songinfo/lastfmtrackinfoprovider.cpp @@ -38,8 +38,7 @@ void LastfmTrackInfoProvider::FetchInfo(int id, const Song& metadata) { void LastfmTrackInfoProvider::RequestFinished() { QNetworkReply* reply = qobject_cast(sender()); - if (!reply || !requests_.contains(reply)) - return; + if (!reply || !requests_.contains(reply)) return; const int id = requests_.take(reply); @@ -70,8 +69,7 @@ void LastfmTrackInfoProvider::GetPlayCounts(int id, const lastfm::XmlQuery& q) { love = q["track"]["userloved"].text() == "1"; } - if (!listeners && !playcount && myplaycount == -1) - return; // No useful data + if (!listeners && !playcount && myplaycount == -1) return; // No useful data CollapsibleInfoPane::Data data; data.id_ = "lastfm/playcounts"; @@ -85,26 +83,27 @@ void LastfmTrackInfoProvider::GetPlayCounts(int id, const lastfm::XmlQuery& q) { if (myplaycount != -1) { if (love) widget->AddItem(QIcon(":/last.fm/love.png"), tr("You love this track")); - widget->AddItem(QIcon(":/last.fm/icon_user.png"), tr("Your scrobbles: %1").arg(myplaycount)); + widget->AddItem(QIcon(":/last.fm/icon_user.png"), + tr("Your scrobbles: %1").arg(myplaycount)); } if (playcount) - widget->AddItem(IconLoader::Load("media-playback-start"), tr("%L1 total plays").arg(playcount)); + widget->AddItem(IconLoader::Load("media-playback-start"), + tr("%L1 total plays").arg(playcount)); if (listeners) - widget->AddItem(QIcon(":/last.fm/my_neighbours.png"), tr("%L1 other listeners").arg(listeners)); + widget->AddItem(QIcon(":/last.fm/my_neighbours.png"), + tr("%L1 other listeners").arg(listeners)); emit InfoReady(id, data); } void LastfmTrackInfoProvider::GetWiki(int id, const lastfm::XmlQuery& q) { // Parse the response - if (q["track"].children("wiki").isEmpty()) - return; // No wiki element + if (q["track"].children("wiki").isEmpty()) return; // No wiki element const QString content = q["track"]["wiki"]["content"].text(); - if (content.isEmpty()) - return; // No useful data + if (content.isEmpty()) return; // No useful data CollapsibleInfoPane::Data data; data.id_ = "lastfm/songwiki"; @@ -124,7 +123,7 @@ void LastfmTrackInfoProvider::GetTags(int id, const lastfm::XmlQuery& q) { // Parse the response if (q["track"].children("toptags").isEmpty() || q["track"]["toptags"].children("tag").isEmpty()) - return; // No tag elements + return; // No tag elements CollapsibleInfoPane::Data data; data.id_ = "lastfm/songtags"; @@ -137,7 +136,7 @@ void LastfmTrackInfoProvider::GetTags(int id, const lastfm::XmlQuery& q) { widget->SetIcon(data.icon_); - foreach (const lastfm::XmlQuery& e, q["track"]["toptags"].children("tag")) { + for (const lastfm::XmlQuery& e : q["track"]["toptags"].children("tag")) { widget->AddTag(e["name"].text()); } diff --git a/src/songinfo/lastfmtrackinfoprovider.h b/src/songinfo/lastfmtrackinfoprovider.h index 51ae416ce..1cd2d6692 100644 --- a/src/songinfo/lastfmtrackinfoprovider.h +++ b/src/songinfo/lastfmtrackinfoprovider.h @@ -21,7 +21,7 @@ #include "songinfoprovider.h" namespace lastfm { - class XmlQuery; +class XmlQuery; } class QNetworkReply; @@ -29,19 +29,19 @@ class QNetworkReply; class LastfmTrackInfoProvider : public SongInfoProvider { Q_OBJECT -public: + public: void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void RequestFinished(); -private: + private: void GetPlayCounts(int id, const lastfm::XmlQuery& q); void GetWiki(int id, const lastfm::XmlQuery& q); void GetTags(int id, const lastfm::XmlQuery& q); -private: + private: QMap requests_; }; -#endif // LASTFMTRACKINFOPROVIDER_H +#endif // LASTFMTRACKINFOPROVIDER_H diff --git a/src/songinfo/songinfobase.cpp b/src/songinfo/songinfobase.cpp index b243e97a9..35bd0c517 100644 --- a/src/songinfo/songinfobase.cpp +++ b/src/songinfo/songinfobase.cpp @@ -28,16 +28,15 @@ const char* SongInfoBase::kSettingsGroup = "SongInfo"; SongInfoBase::SongInfoBase(QWidget* parent) - : QWidget(parent), - network_(new NetworkAccessManager(this)), - fetcher_(new SongInfoFetcher(this)), - current_request_id_(-1), - scroll_area_(new QScrollArea), - container_(new QVBoxLayout), - section_container_(NULL), - fader_(new WidgetFadeHelper(this, 1000)), - dirty_(false) -{ + : QWidget(parent), + network_(new NetworkAccessManager(this)), + fetcher_(new SongInfoFetcher(this)), + current_request_id_(-1), + scroll_area_(new QScrollArea), + container_(new QVBoxLayout), + section_container_(nullptr), + fader_(new WidgetFadeHelper(this, 1000)), + dirty_(false) { // Add the top-level scroll area setLayout(new QVBoxLayout); layout()->setContentsMargins(0, 0, 0, 0); @@ -62,10 +61,10 @@ SongInfoBase::SongInfoBase(QWidget* parent) stylesheet.open(QIODevice::ReadOnly); setStyleSheet(QString::fromAscii(stylesheet.readAll())); - connect(fetcher_, SIGNAL(ResultReady(int,SongInfoFetcher::Result)), - SLOT(ResultReady(int,SongInfoFetcher::Result))); - connect(fetcher_, SIGNAL(InfoResultReady(int,CollapsibleInfoPane::Data)), - SLOT(InfoResultReady(int,CollapsibleInfoPane::Data))); + connect(fetcher_, SIGNAL(ResultReady(int, SongInfoFetcher::Result)), + SLOT(ResultReady(int, SongInfoFetcher::Result))); + connect(fetcher_, SIGNAL(InfoResultReady(int, CollapsibleInfoPane::Data)), + SLOT(InfoResultReady(int, CollapsibleInfoPane::Data))); } void SongInfoBase::Clear() { @@ -81,21 +80,22 @@ void SongInfoBase::Clear() { section_container_->setLayout(new QVBoxLayout); section_container_->layout()->setContentsMargins(0, 0, 0, 0); section_container_->layout()->setSpacing(1); - section_container_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); + section_container_->setSizePolicy(QSizePolicy::Expanding, + QSizePolicy::Minimum); container_->insertWidget(0, section_container_); } void SongInfoBase::AddSection(CollapsibleInfoPane* section) { int index = 0; - for ( ; indexdata() < sections_[index]->data()) - break; + for (; index < sections_.count(); ++index) { + if (section->data() < sections_[index]->data()) break; } ConnectWidget(section->data().contents_); sections_.insert(index, section); - qobject_cast(section_container_->layout())->insertWidget(index, section); + qobject_cast(section_container_->layout()) + ->insertWidget(index, section); section->show(); } @@ -116,9 +116,7 @@ void SongInfoBase::SongChanged(const Song& metadata) { } } -void SongInfoBase::SongFinished() { - dirty_ = false; -} +void SongInfoBase::SongFinished() { dirty_ = false; } void SongInfoBase::showEvent(QShowEvent* e) { if (dirty_) { @@ -144,15 +142,15 @@ void SongInfoBase::Update(const Song& metadata) { // Do this after the new pane has been shown otherwise it'll just grab a // black rectangle. - Clear (); + Clear(); QTimer::singleShot(0, fader_, SLOT(StartBlur())); } -void SongInfoBase::InfoResultReady (int id, const CollapsibleInfoPane::Data& data) { -} +void SongInfoBase::InfoResultReady(int id, + const CollapsibleInfoPane::Data& data) {} void SongInfoBase::ResultReady(int id, const SongInfoFetcher::Result& result) { - foreach (const CollapsibleInfoPane::Data& data, result.info_) { + for (const CollapsibleInfoPane::Data& data : result.info_) { delete data.contents_; } } @@ -171,7 +169,7 @@ void SongInfoBase::CollapseSections() { QMap types_; QSet has_user_preference_; - foreach (CollapsibleInfoPane* pane, sections_) { + for (CollapsibleInfoPane* pane : sections_) { const CollapsibleInfoPane::Data::Type type = pane->data().type_; types_.insertMulti(type, pane); @@ -184,22 +182,21 @@ void SongInfoBase::CollapseSections() { } } - foreach (CollapsibleInfoPane::Data::Type type, types_.keys()) { + for (CollapsibleInfoPane::Data::Type type : types_.keys()) { if (!has_user_preference_.contains(type)) { // Expand the first one types_.values(type).last()->Expand(); } } - foreach (CollapsibleInfoPane* pane, sections_) { + for (CollapsibleInfoPane* pane : sections_) { connect(pane, SIGNAL(Toggled(bool)), SLOT(SectionToggled(bool))); } } void SongInfoBase::SectionToggled(bool value) { CollapsibleInfoPane* pane = qobject_cast(sender()); - if (!pane || !sections_.contains(pane)) - return; + if (!pane || !sections_.contains(pane)) return; QSettings s; s.beginGroup(kSettingsGroup); @@ -207,10 +204,9 @@ void SongInfoBase::SectionToggled(bool value) { } void SongInfoBase::ReloadSettings() { - foreach (CollapsibleInfoPane* pane, sections_) { + for (CollapsibleInfoPane* pane : sections_) { QWidget* contents = pane->data().contents_; - if (!contents) - continue; + if (!contents) continue; QMetaObject::invokeMethod(contents, "ReloadSettings"); } @@ -224,7 +220,7 @@ void SongInfoBase::ConnectWidget(QWidget* widget) { } if (m->indexOfSignal("DoGlobalSearch(QString)") != -1) { - connect(widget, SIGNAL(DoGlobalSearch(QString)), SIGNAL(DoGlobalSearch(QString))); + connect(widget, SIGNAL(DoGlobalSearch(QString)), + SIGNAL(DoGlobalSearch(QString))); } } - diff --git a/src/songinfo/songinfobase.h b/src/songinfo/songinfobase.h index ab8c8448c..13f0f4cc9 100644 --- a/src/songinfo/songinfobase.h +++ b/src/songinfo/songinfobase.h @@ -37,12 +37,12 @@ class QVBoxLayout; class SongInfoBase : public QWidget { Q_OBJECT -public: - SongInfoBase(QWidget* parent = 0); + public: + SongInfoBase(QWidget* parent = nullptr); static const char* kSettingsGroup; -public slots: + public slots: void SongChanged(const Song& metadata); void SongFinished(); virtual void ReloadSettings(); @@ -51,34 +51,37 @@ signals: void ShowSettingsDialog(); void DoGlobalSearch(const QString& query); -protected: + protected: void showEvent(QShowEvent* e); virtual void Update(const Song& metadata); - virtual bool NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const { return true; } + virtual bool NeedsUpdate(const Song& old_metadata, + const Song& new_metadata) const { + return true; + } void AddWidget(QWidget* widget); void AddSection(CollapsibleInfoPane* section); void Clear(); void CollapseSections(); -protected slots: - virtual void InfoResultReady (int id, const CollapsibleInfoPane::Data& data); + protected slots: + virtual void InfoResultReady(int id, const CollapsibleInfoPane::Data& data); virtual void ResultReady(int id, const SongInfoFetcher::Result& result); -protected: + protected: QNetworkAccessManager* network_; SongInfoFetcher* fetcher_; int current_request_id_; -private: + private: void MaybeUpdate(const Song& metadata); void ConnectWidget(QWidget* widget); -private slots: + private slots: void SectionToggled(bool value); -private: + private: QScrollArea* scroll_area_; QVBoxLayout* container_; @@ -94,5 +97,4 @@ private: bool dirty_; }; -#endif // SONGINFOBASE_H - +#endif // SONGINFOBASE_H diff --git a/src/songinfo/songinfofetcher.cpp b/src/songinfo/songinfofetcher.cpp index 1497fa994..f9a6f0463 100644 --- a/src/songinfo/songinfofetcher.cpp +++ b/src/songinfo/songinfofetcher.cpp @@ -23,23 +23,23 @@ #include SongInfoFetcher::SongInfoFetcher(QObject* parent) - : QObject(parent), - timeout_timer_mapper_(new QSignalMapper(this)), - timeout_duration_(kDefaultTimeoutDuration), - next_id_(1) -{ + : QObject(parent), + timeout_timer_mapper_(new QSignalMapper(this)), + timeout_duration_(kDefaultTimeoutDuration), + next_id_(1) { connect(timeout_timer_mapper_, SIGNAL(mapped(int)), SLOT(Timeout(int))); } void SongInfoFetcher::AddProvider(SongInfoProvider* provider) { providers_ << provider; - connect(provider, SIGNAL(ImageReady(int,QUrl)), SLOT(ImageReady(int,QUrl))); - connect(provider, SIGNAL(InfoReady(int,CollapsibleInfoPane::Data)), SLOT(InfoReady(int,CollapsibleInfoPane::Data))); + connect(provider, SIGNAL(ImageReady(int, QUrl)), SLOT(ImageReady(int, QUrl))); + connect(provider, SIGNAL(InfoReady(int, CollapsibleInfoPane::Data)), + SLOT(InfoReady(int, CollapsibleInfoPane::Data))); connect(provider, SIGNAL(Finished(int)), SLOT(ProviderFinished(int))); } int SongInfoFetcher::FetchInfo(const Song& metadata) { - const int id = next_id_ ++; + const int id = next_id_++; results_[id] = Result(); timeout_timers_[id] = new QTimer(this); timeout_timers_[id]->setSingleShot(true); @@ -47,9 +47,10 @@ int SongInfoFetcher::FetchInfo(const Song& metadata) { timeout_timers_[id]->start(); timeout_timer_mapper_->setMapping(timeout_timers_[id], id); - connect(timeout_timers_[id], SIGNAL(timeout()), timeout_timer_mapper_, SLOT(map())); + connect(timeout_timers_[id], SIGNAL(timeout()), timeout_timer_mapper_, + SLOT(map())); - foreach (SongInfoProvider* provider, providers_) { + for (SongInfoProvider* provider : providers_) { if (provider->is_enabled()) { waiting_for_[id].append(provider); provider->FetchInfo(id, metadata); @@ -59,30 +60,24 @@ int SongInfoFetcher::FetchInfo(const Song& metadata) { } void SongInfoFetcher::ImageReady(int id, const QUrl& url) { - if (!results_.contains(id)) - return; + if (!results_.contains(id)) return; results_[id].images_ << url; } void SongInfoFetcher::InfoReady(int id, const CollapsibleInfoPane::Data& data) { - if (!results_.contains(id)) - return; + if (!results_.contains(id)) return; results_[id].info_ << data; - - if (!waiting_for_.contains(id)) - return; - emit InfoResultReady (id, data); + + if (!waiting_for_.contains(id)) return; + emit InfoResultReady(id, data); } void SongInfoFetcher::ProviderFinished(int id) { - if (!results_.contains(id)) - return; - if (!waiting_for_.contains(id)) - return; + if (!results_.contains(id)) return; + if (!waiting_for_.contains(id)) return; SongInfoProvider* provider = qobject_cast(sender()); - if (!waiting_for_[id].contains(provider)) - return; + if (!waiting_for_[id].contains(provider)) return; waiting_for_[id].removeAll(provider); if (waiting_for_[id].isEmpty()) { @@ -93,16 +88,14 @@ void SongInfoFetcher::ProviderFinished(int id) { } void SongInfoFetcher::Timeout(int id) { - if (!results_.contains(id)) - return; - if (!waiting_for_.contains(id)) - return; + if (!results_.contains(id)) return; + if (!waiting_for_.contains(id)) return; // Emit the results that we have already emit ResultReady(id, results_.take(id)); // Cancel any providers that we're still waiting for - foreach (SongInfoProvider* provider, waiting_for_[id]) { + for (SongInfoProvider* provider : waiting_for_[id]) { qLog(Info) << "Request timed out from info provider" << provider->name(); provider->Cancel(id); } @@ -111,4 +104,3 @@ void SongInfoFetcher::Timeout(int id) { // Remove the timer delete timeout_timers_.take(id); } - diff --git a/src/songinfo/songinfofetcher.h b/src/songinfo/songinfofetcher.h index e843a5908..7366b5bd6 100644 --- a/src/songinfo/songinfofetcher.h +++ b/src/songinfo/songinfofetcher.h @@ -32,15 +32,15 @@ class QSignalMapper; class SongInfoFetcher : public QObject { Q_OBJECT -public: - SongInfoFetcher(QObject* parent = 0); + public: + SongInfoFetcher(QObject* parent = nullptr); struct Result { QList images_; QList info_; }; - static const int kDefaultTimeoutDuration = 25000; // msec + static const int kDefaultTimeoutDuration = 25000; // msec void AddProvider(SongInfoProvider* provider); int FetchInfo(const Song& metadata); @@ -48,16 +48,16 @@ public: QList providers() const { return providers_; } signals: - void InfoResultReady (int id, const CollapsibleInfoPane::Data& data); + void InfoResultReady(int id, const CollapsibleInfoPane::Data& data); void ResultReady(int id, const SongInfoFetcher::Result& result); -private slots: + private slots: void ImageReady(int id, const QUrl& url); void InfoReady(int id, const CollapsibleInfoPane::Data& data); void ProviderFinished(int id); void Timeout(int id); -private: + private: QList providers_; QMap results_; @@ -70,5 +70,4 @@ private: int next_id_; }; -#endif // SONGINFOFETCHER_H - +#endif // SONGINFOFETCHER_H diff --git a/src/songinfo/songinfoprovider.cpp b/src/songinfo/songinfoprovider.cpp index 21da0873c..80b830a95 100644 --- a/src/songinfo/songinfoprovider.cpp +++ b/src/songinfo/songinfoprovider.cpp @@ -17,11 +17,6 @@ #include "songinfoprovider.h" -SongInfoProvider::SongInfoProvider() - : enabled_(true) -{ -} +SongInfoProvider::SongInfoProvider() : enabled_(true) {} -QString SongInfoProvider::name() const { - return metaObject()->className(); -} +QString SongInfoProvider::name() const { return metaObject()->className(); } diff --git a/src/songinfo/songinfoprovider.h b/src/songinfo/songinfoprovider.h index 9925d5f67..c241296a0 100644 --- a/src/songinfo/songinfoprovider.h +++ b/src/songinfo/songinfoprovider.h @@ -27,7 +27,7 @@ class SongInfoProvider : public QObject { Q_OBJECT -public: + public: SongInfoProvider(); virtual void FetchInfo(int id, const Song& metadata) = 0; @@ -43,8 +43,8 @@ signals: void InfoReady(int id, const CollapsibleInfoPane::Data& data); void Finished(int id); -private: + private: bool enabled_; }; -#endif // SONGINFOPROVIDER_H +#endif // SONGINFOPROVIDER_H diff --git a/src/songinfo/songinfosettingspage.cpp b/src/songinfo/songinfosettingspage.cpp index 643afa12a..deabaaa69 100644 --- a/src/songinfo/songinfosettingspage.cpp +++ b/src/songinfo/songinfosettingspage.cpp @@ -27,31 +27,29 @@ #include #include - SongInfoSettingsPage::SongInfoSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_SongInfoSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_SongInfoSettingsPage) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("view-media-lyrics")); connect(ui_->up, SIGNAL(clicked()), SLOT(MoveUp())); connect(ui_->down, SIGNAL(clicked()), SLOT(MoveDown())); - connect(ui_->providers, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), + connect(ui_->providers, + SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), SLOT(CurrentItemChanged(QListWidgetItem*))); connect(ui_->providers, SIGNAL(itemChanged(QListWidgetItem*)), SLOT(ItemChanged(QListWidgetItem*))); QFile song_info_preview(":/lumberjacksong.txt"); song_info_preview.open(QIODevice::ReadOnly); - ui_->song_info_font_preview->setText(QString::fromUtf8(song_info_preview.readAll())); + ui_->song_info_font_preview->setText( + QString::fromUtf8(song_info_preview.readAll())); - connect(ui_->song_info_font_size, SIGNAL(valueChanged(double)), SLOT(FontSizeChanged(double))); + connect(ui_->song_info_font_size, SIGNAL(valueChanged(double)), + SLOT(FontSizeChanged(double))); } -SongInfoSettingsPage::~SongInfoSettingsPage() { - delete ui_; -} +SongInfoSettingsPage::~SongInfoSettingsPage() { delete ui_; } void SongInfoSettingsPage::Load() { QSettings s; @@ -61,15 +59,18 @@ void SongInfoSettingsPage::Load() { s.value("font_size", SongInfoTextView::kDefaultFontSize).toReal()); s.endGroup(); - QList providers = dialog()->song_info_view()->lyric_providers(); + QList providers = + dialog()->song_info_view()->lyric_providers(); ui_->providers->clear(); - foreach (const UltimateLyricsProvider* provider, providers) { + for (const UltimateLyricsProvider* provider : providers) { QListWidgetItem* item = new QListWidgetItem(ui_->providers); item->setText(provider->name()); item->setCheckState(provider->is_enabled() ? Qt::Checked : Qt::Unchecked); - item->setForeground(provider->is_enabled() ? palette().color(QPalette::Active, QPalette::Text) - : palette().color(QPalette::Disabled, QPalette::Text)); + item->setForeground( + provider->is_enabled() + ? palette().color(QPalette::Active, QPalette::Text) + : palette().color(QPalette::Disabled, QPalette::Text)); } } @@ -82,10 +83,9 @@ void SongInfoSettingsPage::Save() { s.beginGroup(SongInfoView::kSettingsGroup); QVariantList search_order; - for (int i=0 ; iproviders->count() ; ++i) { + for (int i = 0; i < ui_->providers->count(); ++i) { const QListWidgetItem* item = ui_->providers->item(i); - if (item->checkState() == Qt::Checked) - search_order << item->text(); + if (item->checkState() == Qt::Checked) search_order << item->text(); } s.setValue("search_order", search_order); s.endGroup(); @@ -102,13 +102,9 @@ void SongInfoSettingsPage::CurrentItemChanged(QListWidgetItem* item) { } } -void SongInfoSettingsPage::MoveUp() { - Move(-1); -} +void SongInfoSettingsPage::MoveUp() { Move(-1); } -void SongInfoSettingsPage::MoveDown() { - Move(+1); -} +void SongInfoSettingsPage::MoveDown() { Move(+1); } void SongInfoSettingsPage::Move(int d) { const int row = ui_->providers->currentRow(); @@ -119,8 +115,9 @@ void SongInfoSettingsPage::Move(int d) { void SongInfoSettingsPage::ItemChanged(QListWidgetItem* item) { const bool checked = item->checkState() == Qt::Checked; - item->setForeground(checked ? palette().color(QPalette::Active, QPalette::Text) - : palette().color(QPalette::Disabled, QPalette::Text)); + item->setForeground( + checked ? palette().color(QPalette::Active, QPalette::Text) + : palette().color(QPalette::Disabled, QPalette::Text)); } void SongInfoSettingsPage::FontSizeChanged(double value) { diff --git a/src/songinfo/songinfosettingspage.h b/src/songinfo/songinfosettingspage.h index e6bbe8fb0..ea6b57d14 100644 --- a/src/songinfo/songinfosettingspage.h +++ b/src/songinfo/songinfosettingspage.h @@ -28,14 +28,14 @@ class QListWidgetItem; class SongInfoSettingsPage : public SettingsPage { Q_OBJECT -public: + public: SongInfoSettingsPage(SettingsDialog* parent); ~SongInfoSettingsPage(); void Load(); void Save(); -private slots: + private slots: void MoveUp(); void MoveDown(); void Move(int d); @@ -45,8 +45,8 @@ private slots: void FontSizeChanged(double value); -private: + private: Ui_SongInfoSettingsPage* ui_; }; -#endif // SONGINFOSETTINGSPAGE_H +#endif // SONGINFOSETTINGSPAGE_H diff --git a/src/songinfo/songinfotextview.cpp b/src/songinfo/songinfotextview.cpp index bd66ef7ea..94b44f31d 100644 --- a/src/songinfo/songinfotextview.cpp +++ b/src/songinfo/songinfotextview.cpp @@ -29,10 +29,7 @@ const qreal SongInfoTextView::kDefaultFontSize = 8.5; const char* SongInfoTextView::kSettingsGroup = "SongInfo"; SongInfoTextView::SongInfoTextView(QWidget* parent) - : QTextBrowser(parent), - last_width_(-1), - recursion_filter_(false) -{ + : QTextBrowser(parent), last_width_(-1), recursion_filter_(false) { setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -52,14 +49,11 @@ QFont SongInfoTextView::Font() { return font; } -void SongInfoTextView::ReloadSettings() { - document()->setDefaultFont(Font()); -} +void SongInfoTextView::ReloadSettings() { document()->setDefaultFont(Font()); } void SongInfoTextView::resizeEvent(QResizeEvent* e) { const int w = qMax(100, width()); - if (w == last_width_) - return; + if (w == last_width_) return; last_width_ = w; document()->setTextWidth(w); @@ -68,19 +62,16 @@ void SongInfoTextView::resizeEvent(QResizeEvent* e) { QTextBrowser::resizeEvent(e); } -QSize SongInfoTextView::sizeHint() const { - return minimumSize(); -} +QSize SongInfoTextView::sizeHint() const { return minimumSize(); } -void SongInfoTextView::wheelEvent(QWheelEvent* e) { - e->ignore(); -} +void SongInfoTextView::wheelEvent(QWheelEvent* e) { e->ignore(); } void SongInfoTextView::contextMenuEvent(QContextMenuEvent* e) { QMenu* menu = createStandardContextMenu(e->pos()); menu->setAttribute(Qt::WA_DeleteOnClose); - menu->addAction(tr("Change font size..."), this, SIGNAL(ShowSettingsDialog())); + menu->addAction(tr("Change font size..."), this, + SIGNAL(ShowSettingsDialog())); menu->popup(e->globalPos()); } @@ -93,7 +84,8 @@ void SongInfoTextView::SetHtml(const QString& html) { copy.replace(QRegExp("([^>])[\\t ]*\\n"), "\\1

"); // Strip any newlines from the end - copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), ""); + copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), + ""); setHtml(copy); } diff --git a/src/songinfo/songinfotextview.h b/src/songinfo/songinfotextview.h index e305bb99a..c858c8e0a 100644 --- a/src/songinfo/songinfotextview.h +++ b/src/songinfo/songinfotextview.h @@ -23,8 +23,8 @@ class SongInfoTextView : public QTextBrowser { Q_OBJECT -public: - SongInfoTextView(QWidget* parent = 0); + public: + SongInfoTextView(QWidget* parent = nullptr); static const qreal kDefaultFontSize; static const char* kSettingsGroup; @@ -34,22 +34,22 @@ public: QSize sizeHint() const; -public slots: + public slots: void ReloadSettings(); void SetHtml(const QString& html); signals: void ShowSettingsDialog(); -protected: + protected: void resizeEvent(QResizeEvent* e); void wheelEvent(QWheelEvent* e); void contextMenuEvent(QContextMenuEvent* e); QVariant loadResource(int type, const QUrl& name); -private: + private: int last_width_; bool recursion_filter_; }; -#endif // SONGINFOTEXTVIEW_H +#endif // SONGINFOTEXTVIEW_H diff --git a/src/songinfo/songinfoview.cpp b/src/songinfo/songinfoview.cpp index a5de1e308..076512ae0 100644 --- a/src/songinfo/songinfoview.cpp +++ b/src/songinfo/songinfoview.cpp @@ -22,7 +22,7 @@ #include "ultimatelyricsreader.h" #ifdef HAVE_LIBLASTFM - #include "lastfmtrackinfoprovider.h" +#include "lastfmtrackinfoprovider.h" #endif #include @@ -35,14 +35,13 @@ const char* SongInfoView::kSettingsGroup = "SongInfo"; typedef QList ProviderList; SongInfoView::SongInfoView(QWidget* parent) - : SongInfoBase(parent), - ultimate_reader_(new UltimateLyricsReader(this)) -{ + : SongInfoBase(parent), ultimate_reader_(new UltimateLyricsReader(this)) { // Parse the ultimate lyrics xml file in the background - QFuture future = QtConcurrent::run( - ultimate_reader_.get(), &UltimateLyricsReader::Parse, - QString(":lyrics/ultimate_providers.xml")); - QFutureWatcher* watcher = new QFutureWatcher(this); + QFuture future = + QtConcurrent::run(ultimate_reader_.get(), &UltimateLyricsReader::Parse, + QString(":lyrics/ultimate_providers.xml")); + QFutureWatcher* watcher = + new QFutureWatcher(this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(UltimateLyricsParsed())); @@ -51,14 +50,13 @@ SongInfoView::SongInfoView(QWidget* parent) #endif } -SongInfoView::~SongInfoView() { -} +SongInfoView::~SongInfoView() {} void SongInfoView::UltimateLyricsParsed() { QFutureWatcher* watcher = static_cast*>(sender()); - foreach (SongInfoProvider* provider, watcher->result()) { + for (SongInfoProvider* provider : watcher->result()) { fetcher_->AddProvider(provider); } @@ -68,7 +66,8 @@ void SongInfoView::UltimateLyricsParsed() { ReloadSettings(); } -bool SongInfoView::NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const { +bool SongInfoView::NeedsUpdate(const Song& old_metadata, + const Song& new_metadata) const { if (new_metadata.title().isEmpty() || new_metadata.artist().isEmpty()) return false; @@ -76,16 +75,15 @@ bool SongInfoView::NeedsUpdate(const Song& old_metadata, const Song& new_metadat old_metadata.artist() != new_metadata.artist(); } -void SongInfoView::InfoResultReady (int id, const CollapsibleInfoPane::Data& data) { - if (id != current_request_id_) - return; - - AddSection (new CollapsibleInfoPane(data, this)); +void SongInfoView::InfoResultReady(int id, + const CollapsibleInfoPane::Data& data) { + if (id != current_request_id_) return; + + AddSection(new CollapsibleInfoPane(data, this)); CollapseSections(); } -void SongInfoView::ResultReady(int id, const SongInfoFetcher::Result& result) { -} +void SongInfoView::ResultReady(int id, const SongInfoFetcher::Result& result) {} void SongInfoView::ReloadSettings() { QSettings s; @@ -115,22 +113,23 @@ void SongInfoView::ReloadSettings() { << "darklyrics.com"; QVariant saved_order = s.value("search_order", default_order); - foreach (const QVariant& name, saved_order.toList()) { + for (const QVariant& name : saved_order.toList()) { SongInfoProvider* provider = ProviderByName(name.toString()); - if (provider) - ordered_providers << provider; + if (provider) ordered_providers << provider; } // Enable all the providers in the list and rank them int relevance = 100; - foreach (SongInfoProvider* provider, ordered_providers) { + for (SongInfoProvider* provider : ordered_providers) { provider->set_enabled(true); qobject_cast(provider)->set_relevance(relevance--); } - // Any lyric providers we don't have in ordered_providers are considered disabled - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (qobject_cast(provider) && !ordered_providers.contains(provider)) { + // Any lyric providers we don't have in ordered_providers are considered + // disabled + for (SongInfoProvider* provider : fetcher_->providers()) { + if (qobject_cast(provider) && + !ordered_providers.contains(provider)) { provider->set_enabled(false); } } @@ -139,33 +138,32 @@ void SongInfoView::ReloadSettings() { } SongInfoProvider* SongInfoView::ProviderByName(const QString& name) const { - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (UltimateLyricsProvider* lyrics = qobject_cast(provider)) { - if (lyrics->name() == name) - return provider; + for (SongInfoProvider* provider : fetcher_->providers()) { + if (UltimateLyricsProvider* lyrics = + qobject_cast(provider)) { + if (lyrics->name() == name) return provider; } } - return NULL; + return nullptr; } namespace { - bool CompareLyricProviders(const UltimateLyricsProvider* a, const UltimateLyricsProvider* b) { - if (a->is_enabled() && !b->is_enabled()) - return true; - if (!a->is_enabled() && b->is_enabled()) - return false; - return a->relevance() > b->relevance(); - } +bool CompareLyricProviders(const UltimateLyricsProvider* a, + const UltimateLyricsProvider* b) { + if (a->is_enabled() && !b->is_enabled()) return true; + if (!a->is_enabled() && b->is_enabled()) return false; + return a->relevance() > b->relevance(); +} } QList SongInfoView::lyric_providers() const { QList ret; - foreach (SongInfoProvider* provider, fetcher_->providers()) { - if (UltimateLyricsProvider* lyrics = qobject_cast(provider)) { + for (SongInfoProvider* provider : fetcher_->providers()) { + if (UltimateLyricsProvider* lyrics = + qobject_cast(provider)) { ret << lyrics; } } qSort(ret.begin(), ret.end(), CompareLyricProviders); return ret; } - diff --git a/src/songinfo/songinfoview.h b/src/songinfo/songinfoview.h index 887e31242..e8e32780b 100644 --- a/src/songinfo/songinfoview.h +++ b/src/songinfo/songinfoview.h @@ -18,9 +18,9 @@ #ifndef SONGINFOVIEW_H #define SONGINFOVIEW_H -#include "songinfobase.h" +#include -#include +#include "songinfobase.h" class UltimateLyricsProvider; class UltimateLyricsReader; @@ -28,33 +28,32 @@ class UltimateLyricsReader; class SongInfoView : public SongInfoBase { Q_OBJECT -public: - SongInfoView(QWidget* parent = 0); + public: + SongInfoView(QWidget* parent = nullptr); ~SongInfoView(); static const char* kSettingsGroup; QList lyric_providers() const; -public slots: + public slots: void ReloadSettings(); -protected: + protected: bool NeedsUpdate(const Song& old_metadata, const Song& new_metadata) const; -protected slots: - virtual void InfoResultReady (int id, const CollapsibleInfoPane::Data& data); + protected slots: + virtual void InfoResultReady(int id, const CollapsibleInfoPane::Data& data); virtual void ResultReady(int id, const SongInfoFetcher::Result& result); -private: + private: SongInfoProvider* ProviderByName(const QString& name) const; -private slots: + private slots: void UltimateLyricsParsed(); -private: - boost::scoped_ptr ultimate_reader_; + private: + std::unique_ptr ultimate_reader_; }; -#endif // SONGINFOVIEW_H - +#endif // SONGINFOVIEW_H diff --git a/src/songinfo/songkickconcerts.cpp b/src/songinfo/songkickconcerts.cpp index 186d7a0e4..1b36e420e 100644 --- a/src/songinfo/songkickconcerts.cpp +++ b/src/songinfo/songkickconcerts.cpp @@ -38,18 +38,23 @@ const char* SongkickConcerts::kSongkickArtistCalendarUrl = SongkickConcerts::SongkickConcerts() { Geolocator* geolocator = new Geolocator; geolocator->Geolocate(); - connect(geolocator, SIGNAL(Finished(Geolocator::LatLng)), SLOT(GeolocateFinished(Geolocator::LatLng))); - NewClosure(geolocator, SIGNAL(Finished(Geolocator::LatLng)), geolocator, SLOT(deleteLater())); + connect(geolocator, SIGNAL(Finished(Geolocator::LatLng)), + SLOT(GeolocateFinished(Geolocator::LatLng))); + NewClosure(geolocator, SIGNAL(Finished(Geolocator::LatLng)), geolocator, + SLOT(deleteLater())); } void SongkickConcerts::FetchInfo(int id, const Song& metadata) { Echonest::Artist::SearchParams params; - params.push_back(qMakePair(Echonest::Artist::Name, QVariant(metadata.artist()))); - params.push_back(qMakePair(Echonest::Artist::IdSpace, QVariant(kSongkickArtistBucket))); + params.push_back( + qMakePair(Echonest::Artist::Name, QVariant(metadata.artist()))); + params.push_back( + qMakePair(Echonest::Artist::IdSpace, QVariant(kSongkickArtistBucket))); qLog(Debug) << "Params:" << params; QNetworkReply* reply = Echonest::Artist::search(params); qLog(Debug) << reply->request().url(); - NewClosure(reply, SIGNAL(finished()), this, SLOT(ArtistSearchFinished(QNetworkReply*, int)), reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(ArtistSearchFinished(QNetworkReply*, int)), reply, id); } void SongkickConcerts::ArtistSearchFinished(QNetworkReply* reply, int id) { @@ -65,7 +70,7 @@ void SongkickConcerts::ArtistSearchFinished(QNetworkReply* reply, int id) { const Echonest::Artist& artist = artists[0]; const Echonest::ForeignIds& foreign_ids = artist.foreignIds(); QString songkick_id; - foreach (const Echonest::ForeignId& id, foreign_ids) { + for (const Echonest::ForeignId& id : foreign_ids) { if (id.catalog == "songkick") { songkick_id = id.foreign_id; break; @@ -86,7 +91,8 @@ void SongkickConcerts::ArtistSearchFinished(QNetworkReply* reply, int id) { } FetchSongkickCalendar(split[2], id); - } catch (Echonest::ParseError& e) { + } + catch (Echonest::ParseError& e) { qLog(Error) << "Error parsing echonest reply:" << e.errorType() << e.what(); emit Finished(id); } @@ -96,7 +102,8 @@ void SongkickConcerts::FetchSongkickCalendar(const QString& artist_id, int id) { QUrl url(QString(kSongkickArtistCalendarUrl).arg(artist_id)); qLog(Debug) << url; QNetworkReply* reply = network_.get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), this, SLOT(CalendarRequestFinished(QNetworkReply*, int)), reply, id); + NewClosure(reply, SIGNAL(finished()), this, + SLOT(CalendarRequestFinished(QNetworkReply*, int)), reply, id); } void SongkickConcerts::CalendarRequestFinished(QNetworkReply* reply, int id) { @@ -123,7 +130,7 @@ void SongkickConcerts::CalendarRequestFinished(QNetworkReply* reply, int id) { QWidget* container = new QWidget; QVBoxLayout* layout = new QVBoxLayout(container); - foreach (const QVariant& v, events) { + for (const QVariant& v : events) { QVariantMap event = v.toMap(); QString display_name = event["displayName"].toString(); QString start_date = event["start"].toMap()["date"].toString(); @@ -132,20 +139,17 @@ void SongkickConcerts::CalendarRequestFinished(QNetworkReply* reply, int id) { // Try to get the lat/lng coordinates of the venue. QVariantMap venue = event["venue"].toMap(); - const bool valid_latlng = - venue["lng"].isValid() && venue["lat"].isValid(); + const bool valid_latlng = venue["lng"].isValid() && venue["lat"].isValid(); if (valid_latlng && latlng_.IsValid()) { static const int kFilterDistanceMetres = 250 * 1e3; // 250km - Geolocator::LatLng latlng( - venue["lat"].toString(), venue["lng"].toString()); + Geolocator::LatLng latlng(venue["lat"].toString(), + venue["lng"].toString()); if (latlng_.IsValid() && latlng.IsValid()) { int distance_metres = latlng_.Distance(latlng); if (distance_metres > kFilterDistanceMetres) { - qLog(Debug) << "Filtered concert:" - << display_name - << "as too far away:" - << distance_metres; + qLog(Debug) << "Filtered concert:" << display_name + << "as too far away:" << distance_metres; continue; } } diff --git a/src/songinfo/songkickconcertwidget.cpp b/src/songinfo/songkickconcertwidget.cpp index c18fe70f3..691f9fb02 100644 --- a/src/songinfo/songkickconcertwidget.cpp +++ b/src/songinfo/songkickconcertwidget.cpp @@ -32,12 +32,10 @@ const int SongKickConcertWidget::kStaticMapWidth = 100; const int SongKickConcertWidget::kStaticMapHeight = 100; - SongKickConcertWidget::SongKickConcertWidget(QWidget* parent) - : QWidget(parent), - ui_(new Ui_SongKickConcertWidget), - network_(new NetworkAccessManager(this)) -{ + : QWidget(parent), + ui_(new Ui_SongKickConcertWidget), + network_(new NetworkAccessManager(this)) { ui_->setupUi(this); // Hide the map by default @@ -48,9 +46,7 @@ SongKickConcertWidget::SongKickConcertWidget(QWidget* parent) ReloadSettings(); } -SongKickConcertWidget::~SongKickConcertWidget() { - delete ui_; -} +SongKickConcertWidget::~SongKickConcertWidget() { delete ui_; } void SongKickConcertWidget::ReloadSettings() { QFont font(SongInfoTextView::Font()); @@ -61,9 +57,8 @@ void SongKickConcertWidget::ReloadSettings() { void SongKickConcertWidget::Init(const QString& title, const QString& url, const QString& date, const QString& location) { - ui_->title->setText(QString("%2").arg( - Qt::escape(url), - Qt::escape(title))); + ui_->title->setText( + QString("%2").arg(Qt::escape(url), Qt::escape(title))); if (!location.isEmpty()) { ui_->location->setText(location); @@ -107,13 +102,11 @@ void SongKickConcertWidget::SetMap(const QString& lat, const QString& lng, } // Request the static map image - const QUrl url(QString(kStaticMapUrl).arg( - QString::number(kStaticMapWidth), - QString::number(kStaticMapHeight), - lat, lng)); + const QUrl url(QString(kStaticMapUrl).arg(QString::number(kStaticMapWidth), + QString::number(kStaticMapHeight), + lat, lng)); QNetworkReply* reply = network_->get(QNetworkRequest(url)); - NewClosure(reply, SIGNAL(finished()), - this, SLOT(MapLoaded(QNetworkReply*)), + NewClosure(reply, SIGNAL(finished()), this, SLOT(MapLoaded(QNetworkReply*)), reply); } diff --git a/src/songinfo/songkickconcertwidget.h b/src/songinfo/songkickconcertwidget.h index faf05b979..abef19fbd 100644 --- a/src/songinfo/songkickconcertwidget.h +++ b/src/songinfo/songkickconcertwidget.h @@ -28,33 +28,33 @@ class QNetworkReply; class SongKickConcertWidget : public QWidget { Q_OBJECT - -public: - SongKickConcertWidget(QWidget* parent = 0); + + public: + SongKickConcertWidget(QWidget* parent = nullptr); ~SongKickConcertWidget(); static const int kStaticMapWidth; static const int kStaticMapHeight; - void Init(const QString& title, const QString& url, - const QString& date, const QString& location); + void Init(const QString& title, const QString& url, const QString& date, + const QString& location); void SetMap(const QString& lat, const QString& lng, const QString& venue_name); // QObject bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: void ReloadSettings(); -private slots: + private slots: void MapLoaded(QNetworkReply* reply); - -private: + + private: Ui_SongKickConcertWidget* ui_; QNetworkAccessManager* network_; QUrl map_url_; }; -#endif // SONGKICKCONCERTWIDGET_H +#endif // SONGKICKCONCERTWIDGET_H diff --git a/src/songinfo/songplaystats.cpp b/src/songinfo/songplaystats.cpp index 254590354..0c6b4c061 100644 --- a/src/songinfo/songplaystats.cpp +++ b/src/songinfo/songplaystats.cpp @@ -25,9 +25,7 @@ const int SongPlayStats::kLineSpacing = 2; const int SongPlayStats::kIconTextSpacing = 6; const int SongPlayStats::kMargin = 4; -SongPlayStats::SongPlayStats(QWidget* parent) - : QWidget(parent) -{ +SongPlayStats::SongPlayStats(QWidget* parent) : QWidget(parent) { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); } @@ -38,21 +36,21 @@ void SongPlayStats::AddItem(const QIcon& icon, const QString& text) { } QSize SongPlayStats::sizeHint() const { - return QSize(100, kMargin * 2 + - items_.count() * kIconSize + - (items_.count() - 1) * kLineSpacing); + return QSize(100, kMargin * 2 + items_.count() * kIconSize + + (items_.count() - 1) * kLineSpacing); } void SongPlayStats::paintEvent(QPaintEvent*) { QPainter p(this); int y = kMargin; - foreach (const Item& item, items_) { - const QRect line(kMargin, y, width() - kMargin*2, kIconSize); + for (const Item& item : items_) { + const QRect line(kMargin, y, width() - kMargin * 2, kIconSize); const QRect icon_rect(line.topLeft(), QSize(kIconSize, kIconSize)); - const QRect text_rect(icon_rect.topRight() + QPoint(kIconTextSpacing, 0), - QSize(line.width() - icon_rect.width() - kIconTextSpacing, - line.height())); + const QRect text_rect( + icon_rect.topRight() + QPoint(kIconTextSpacing, 0), + QSize(line.width() - icon_rect.width() - kIconTextSpacing, + line.height())); p.drawPixmap(icon_rect, item.icon_.pixmap(kIconSize)); p.drawText(text_rect, item.text_); diff --git a/src/songinfo/songplaystats.h b/src/songinfo/songplaystats.h index 3283f636b..6f08be087 100644 --- a/src/songinfo/songplaystats.h +++ b/src/songinfo/songplaystats.h @@ -24,8 +24,8 @@ class SongPlayStats : public QWidget { Q_OBJECT -public: - SongPlayStats(QWidget* parent = 0); + public: + SongPlayStats(QWidget* parent = nullptr); static const int kIconSize; static const int kLineSpacing; @@ -36,10 +36,10 @@ public: QSize sizeHint() const; -protected: + protected: void paintEvent(QPaintEvent*); -private: + private: struct Item { Item(const QIcon& icon, const QString& text) : icon_(icon), text_(text) {} QIcon icon_; @@ -49,4 +49,4 @@ private: QList items_; }; -#endif // SONGPLAYSTATS_H +#endif // SONGPLAYSTATS_H diff --git a/src/songinfo/tagwidget.cpp b/src/songinfo/tagwidget.cpp index b99c3a209..828306291 100644 --- a/src/songinfo/tagwidget.cpp +++ b/src/songinfo/tagwidget.cpp @@ -34,13 +34,13 @@ const int TagWidgetTag::kIconTextSpacing = 8; const int TagWidgetTag::kHPadding = 6; const int TagWidgetTag::kVPadding = 2; -TagWidgetTag::TagWidgetTag(const QIcon& icon, const QString& text, QWidget* parent) - : QWidget(parent), - text_(text), - icon_(icon), - opacity_(0.0), - animation_(new QPropertyAnimation(this, "background_opacity", this)) -{ +TagWidgetTag::TagWidgetTag(const QIcon& icon, const QString& text, + QWidget* parent) + : QWidget(parent), + text_(text), + icon_(icon), + opacity_(0.0), + animation_(new QPropertyAnimation(this, "background_opacity", this)) { setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); } @@ -77,9 +77,10 @@ void TagWidgetTag::paintEvent(QPaintEvent*) { const QRect tag_rect(rect()); const QRect icon_rect(tag_rect.topLeft() + QPoint(kHPadding, kVPadding), QSize(kIconSize, kIconSize)); - const QRect text_rect(icon_rect.topRight() + QPoint(kIconTextSpacing, 0), - QSize(tag_rect.width() - icon_rect.right() - kIconTextSpacing - kHPadding, - icon_rect.height())); + const QRect text_rect( + icon_rect.topRight() + QPoint(kIconTextSpacing, 0), + QSize(tag_rect.width() - icon_rect.right() - kIconTextSpacing - kHPadding, + icon_rect.height())); // Use the tag's opacity p.setOpacity(0.3 + opacity_ * 0.7); @@ -102,25 +103,17 @@ void TagWidgetTag::paintEvent(QPaintEvent*) { p.drawText(text_rect, text_); } -void TagWidgetTag::mouseReleaseEvent(QMouseEvent*) { - emit Clicked(); -} - -void TagWidgetTag::contextMenuEvent(QContextMenuEvent*) { - emit Clicked(); -} +void TagWidgetTag::mouseReleaseEvent(QMouseEvent*) { emit Clicked(); } +void TagWidgetTag::contextMenuEvent(QContextMenuEvent*) { emit Clicked(); } TagWidget::TagWidget(Type type, QWidget* parent) - : QWidget(parent), - type_(type) -{ + : QWidget(parent), type_(type) { setLayout(new FlowLayout(4, 6, 4)); } void TagWidget::AddTag(const QString& tag) { - if (tag.isEmpty()) - return; + if (tag.isEmpty()) return; TagWidgetTag* widget = new TagWidgetTag(icon_, tag, this); connect(widget, SIGNAL(Clicked()), SLOT(TagClicked())); @@ -131,8 +124,7 @@ void TagWidget::AddTag(const QString& tag) { void TagWidget::TagClicked() { TagWidgetTag* tag = qobject_cast(sender()); - if (!tag) - return; + if (!tag) return; emit DoGlobalSearch(tag->text()); } diff --git a/src/songinfo/tagwidget.h b/src/songinfo/tagwidget.h index 63e1ee85d..f1867ac81 100644 --- a/src/songinfo/tagwidget.h +++ b/src/songinfo/tagwidget.h @@ -29,11 +29,10 @@ class QPropertyAnimation; class TagWidgetTag : public QWidget { Q_OBJECT - Q_PROPERTY(float background_opacity - READ background_opacity - WRITE set_background_opacity); + Q_PROPERTY(float background_opacity READ background_opacity WRITE + set_background_opacity); -public: + public: TagWidgetTag(const QIcon& icon, const QString& text, QWidget* parent); static const int kIconSize; @@ -50,14 +49,14 @@ public: signals: void Clicked(); -protected: + protected: void enterEvent(QEvent*); void leaveEvent(QEvent*); void paintEvent(QPaintEvent*); void mouseReleaseEvent(QMouseEvent*); void contextMenuEvent(QContextMenuEvent*); -private: + private: QString text_; QIcon icon_; float opacity_; @@ -68,13 +67,10 @@ private: class TagWidget : public QWidget { Q_OBJECT -public: - enum Type { - Type_Tags, - Type_Artists, - }; + public: + enum Type { Type_Tags, Type_Artists, }; - TagWidget(Type type, QWidget* parent = 0); + TagWidget(Type type, QWidget* parent = nullptr); void SetIcon(const QIcon& icon) { icon_ = icon; } void AddTag(const QString& tag); @@ -85,16 +81,16 @@ signals: void AddToPlaylist(QMimeData* data); void DoGlobalSearch(const QString& query); -private slots: + private slots: void TagClicked(); -private: + private: void PlayLastFm(const QString& url_pattern); -private: + private: Type type_; QIcon icon_; QList tags_; }; -#endif // TAGWIDGET_H +#endif // TAGWIDGET_H diff --git a/src/songinfo/ultimatelyricslyric.cpp b/src/songinfo/ultimatelyricslyric.cpp index 6c226032b..8f8575868 100644 --- a/src/songinfo/ultimatelyricslyric.cpp +++ b/src/songinfo/ultimatelyricslyric.cpp @@ -19,9 +19,8 @@ #include -UltimateLyricsLyric::UltimateLyricsLyric(QObject* parent) : - QTextDocument(parent) { -} +UltimateLyricsLyric::UltimateLyricsLyric(QObject* parent) + : QTextDocument(parent) {} void UltimateLyricsLyric::SetHtml(const QString& html) { QString copy(html.trimmed()); @@ -31,7 +30,8 @@ void UltimateLyricsLyric::SetHtml(const QString& html) { copy.replace(QRegExp("([^>])[\\t ]*\\n"), "\\1

"); // Strip any newlines from the end - copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), ""); + copy.replace(QRegExp("((<\\s*br\\s*/?\\s*>)|(<\\s*/?\\s*p\\s*/?\\s*>))+$"), + ""); setHtml(copy); } diff --git a/src/songinfo/ultimatelyricslyric.h b/src/songinfo/ultimatelyricslyric.h index 7e27ad69c..46a6bab74 100644 --- a/src/songinfo/ultimatelyricslyric.h +++ b/src/songinfo/ultimatelyricslyric.h @@ -24,10 +24,10 @@ class UltimateLyricsLyric : public QTextDocument { Q_OBJECT -public: - UltimateLyricsLyric(QObject* parent = 0); + public: + UltimateLyricsLyric(QObject* parent = nullptr); void SetHtml(const QString& html); }; -#endif // ULTIMATELYRICSLYRIC_H +#endif // ULTIMATELYRICSLYRIC_H diff --git a/src/songinfo/ultimatelyricsprovider.cpp b/src/songinfo/ultimatelyricsprovider.cpp index 349733593..586e5d239 100644 --- a/src/songinfo/ultimatelyricsprovider.cpp +++ b/src/songinfo/ultimatelyricsprovider.cpp @@ -26,22 +26,18 @@ #include #include -#include - const int UltimateLyricsProvider::kRedirectLimit = 5; - UltimateLyricsProvider::UltimateLyricsProvider() - : network_(new NetworkAccessManager(this)), - relevance_(0), - redirect_count_(0), - url_hop_(false) -{ -} + : network_(new NetworkAccessManager(this)), + relevance_(0), + redirect_count_(0), + url_hop_(false) {} void UltimateLyricsProvider::FetchInfo(int id, const Song& metadata) { // Get the text codec - const QTextCodec* codec = QTextCodec::codecForName(charset_.toAscii().constData()); + const QTextCodec* codec = + QTextCodec::codecForName(charset_.toAscii().constData()); if (!codec) { qLog(Warning) << "Invalid codec" << charset_; emit Finished(id); @@ -80,7 +76,8 @@ void UltimateLyricsProvider::LyricsFetched() { } // Handle redirects - QVariant redirect_target = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + QVariant redirect_target = + reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if (redirect_target.isValid()) { if (redirect_count_ >= kRedirectLimit) { url_hop_ = false; @@ -95,19 +92,20 @@ void UltimateLyricsProvider::LyricsFetched() { target.setPath(path); } - redirect_count_ ++; + redirect_count_++; QNetworkReply* reply = network_->get(QNetworkRequest(target)); requests_[reply] = id; connect(reply, SIGNAL(finished()), SLOT(LyricsFetched())); return; } - const QTextCodec* codec = QTextCodec::codecForName(charset_.toAscii().constData()); + const QTextCodec* codec = + QTextCodec::codecForName(charset_.toAscii().constData()); const QString original_content = codec->toUnicode(reply->readAll()); QString lyrics; // Check for invalid indicators - foreach (const QString& indicator, invalid_indicators_) { + for (const QString& indicator : invalid_indicators_) { if (original_content.contains(indicator)) { qLog(Debug) << "Found invalid indicator" << indicator; url_hop_ = false; @@ -118,10 +116,10 @@ void UltimateLyricsProvider::LyricsFetched() { if (!url_hop_) { // Apply extract rules - foreach (const Rule& rule, extract_rules_) { + for (const Rule& rule : extract_rules_) { // Modify the rule for this request's metadata Rule rule_copy(rule); - for (Rule::iterator it = rule_copy.begin() ; it != rule_copy.end() ; ++it) { + for (Rule::iterator it = rule_copy.begin(); it != rule_copy.end(); ++it) { ReplaceFields(metadata_, &it->first); } @@ -137,7 +135,7 @@ void UltimateLyricsProvider::LyricsFetched() { } // Apply exclude rules - foreach (const Rule& rule, exclude_rules_) { + for (const Rule& rule : exclude_rules_) { ApplyExcludeRule(rule, &content); } @@ -173,14 +171,15 @@ void UltimateLyricsProvider::LyricsFetched() { emit Finished(id); } -bool UltimateLyricsProvider::ApplyExtractRule(const Rule& rule, QString* content) const { - foreach (const RuleItem& item, rule) { +bool UltimateLyricsProvider::ApplyExtractRule(const Rule& rule, + QString* content) const { + for (const RuleItem& item : rule) { if (item.second.isNull()) { if (item.first.startsWith("http://") && item.second.isNull()) { *content = ExtractUrl(*content, rule); return true; } else { - *content = ExtractXmlTag(*content, item.first); + *content = ExtractXmlTag(*content, item.first); } } else { *content = Extract(*content, item.first, item.second); @@ -189,15 +188,16 @@ bool UltimateLyricsProvider::ApplyExtractRule(const Rule& rule, QString* content return false; } -QString UltimateLyricsProvider::ExtractUrl(const QString& source, const Rule& rule) { +QString UltimateLyricsProvider::ExtractUrl(const QString& source, + const Rule& rule) { QString url; QString id; - foreach(const RuleItem& item, rule) { + for (const RuleItem& item : rule) { if (item.first.startsWith("http://") && item.second.isNull()) url = item.first; else - id = Extract(source, item.first,item.second); + id = Extract(source, item.first, item.second); } url.replace("{id}", id); @@ -205,29 +205,30 @@ QString UltimateLyricsProvider::ExtractUrl(const QString& source, const Rule& ru return url; } -QString UltimateLyricsProvider::ExtractXmlTag(const QString& source, const QString& tag) { - QRegExp re("<(\\w+).*>"); // ಠ_ಠ - if (re.indexIn(tag) == -1) - return QString(); +QString UltimateLyricsProvider::ExtractXmlTag(const QString& source, + const QString& tag) { + QRegExp re("<(\\w+).*>"); // ಠ_ಠ + if (re.indexIn(tag) == -1) return QString(); return Extract(source, tag, ""); } -QString UltimateLyricsProvider::Extract(const QString& source, const QString& begin, const QString& end) { +QString UltimateLyricsProvider::Extract(const QString& source, + const QString& begin, + const QString& end) { int begin_idx = source.indexOf(begin); - if (begin_idx == -1) - return QString(); + if (begin_idx == -1) return QString(); begin_idx += begin.length(); int end_idx = source.indexOf(end, begin_idx); - if (end_idx == -1) - return QString(); + if (end_idx == -1) return QString(); return source.mid(begin_idx, end_idx - begin_idx - 1); } -void UltimateLyricsProvider::ApplyExcludeRule(const Rule& rule, QString* content) const { - foreach (const RuleItem& item, rule) { +void UltimateLyricsProvider::ApplyExcludeRule(const Rule& rule, + QString* content) const { + for (const RuleItem& item : rule) { if (item.second.isNull()) { *content = ExcludeXmlTag(*content, item.first); } else { @@ -236,40 +237,39 @@ void UltimateLyricsProvider::ApplyExcludeRule(const Rule& rule, QString* content } } -QString UltimateLyricsProvider::ExcludeXmlTag(const QString& source, const QString& tag) { - QRegExp re("<(\\w+).*>"); // ಠ_ಠ - if (re.indexIn(tag) == -1) - return source; +QString UltimateLyricsProvider::ExcludeXmlTag(const QString& source, + const QString& tag) { + QRegExp re("<(\\w+).*>"); // ಠ_ಠ + if (re.indexIn(tag) == -1) return source; return Exclude(source, tag, ""); } -QString UltimateLyricsProvider::Exclude(const QString& source, const QString& begin, const QString& end) { +QString UltimateLyricsProvider::Exclude(const QString& source, + const QString& begin, + const QString& end) { int begin_idx = source.indexOf(begin); - if (begin_idx == -1) - return source; + if (begin_idx == -1) return source; int end_idx = source.indexOf(end, begin_idx + begin.length()); - if (end_idx == -1) - return source; + if (end_idx == -1) return source; - return source.left(begin_idx) + source.right(source.length() - end_idx - end.length()); + return source.left(begin_idx) + + source.right(source.length() - end_idx - end.length()); } QString UltimateLyricsProvider::FirstChar(const QString& text) { - if (text.isEmpty()) - return QString(); + if (text.isEmpty()) return QString(); return text[0].toLower(); } QString UltimateLyricsProvider::TitleCase(const QString& text) { - if (text.length() == 0) - return QString(); + if (text.length() == 0) return QString(); QString ret = text; bool last_was_space = true; - for (QString::iterator it = ret.begin() ; it != ret.end() ; ++it) { + for (QString::iterator it = ret.begin(); it != ret.end(); ++it) { if (last_was_space) { *it = it->toUpper(); last_was_space = false; @@ -277,18 +277,18 @@ QString UltimateLyricsProvider::TitleCase(const QString& text) { last_was_space = true; } } - + return ret; } -void UltimateLyricsProvider::ReplaceField(const QString& tag, const QString& value, +void UltimateLyricsProvider::ReplaceField(const QString& tag, + const QString& value, QString* text) const { - if (!text->contains(tag)) - return; + if (!text->contains(tag)) return; // Apply URL character replacement QString value_copy(value); - foreach (const UrlFormat& format, url_formats_) { + for (const UrlFormat& format : url_formats_) { QRegExp re("[" + QRegExp::escape(format.first) + "]"); value_copy.replace(re, format.second); } @@ -296,20 +296,21 @@ void UltimateLyricsProvider::ReplaceField(const QString& tag, const QString& val text->replace(tag, value_copy, Qt::CaseInsensitive); } -void UltimateLyricsProvider::ReplaceFields(const Song& metadata, QString* text) const { - ReplaceField("{artist}", metadata.artist().toLower(), text); - ReplaceField("{artist2}",NoSpace(metadata.artist().toLower()), text); - ReplaceField("{album}", metadata.album().toLower(), text); - ReplaceField("{album2}", NoSpace(metadata.album().toLower()), text); - ReplaceField("{title}", metadata.title().toLower(), text); - ReplaceField("{Artist}", metadata.artist(), text); - ReplaceField("{Album}", metadata.album(), text); - ReplaceField("{ARTIST}", metadata.artist().toUpper(), text); - ReplaceField("{year}", metadata.PrettyYear(), text); - ReplaceField("{Title}", metadata.title(), text); - ReplaceField("{Title2}", TitleCase(metadata.title()), text); - ReplaceField("{a}", FirstChar(metadata.artist()), text); - ReplaceField("{track}", QString::number(metadata.track()), text); +void UltimateLyricsProvider::ReplaceFields(const Song& metadata, + QString* text) const { + ReplaceField("{artist}", metadata.artist().toLower(), text); + ReplaceField("{artist2}", NoSpace(metadata.artist().toLower()), text); + ReplaceField("{album}", metadata.album().toLower(), text); + ReplaceField("{album2}", NoSpace(metadata.album().toLower()), text); + ReplaceField("{title}", metadata.title().toLower(), text); + ReplaceField("{Artist}", metadata.artist(), text); + ReplaceField("{Album}", metadata.album(), text); + ReplaceField("{ARTIST}", metadata.artist().toUpper(), text); + ReplaceField("{year}", metadata.PrettyYear(), text); + ReplaceField("{Title}", metadata.title(), text); + ReplaceField("{Title2}", TitleCase(metadata.title()), text); + ReplaceField("{a}", FirstChar(metadata.artist()), text); + ReplaceField("{track}", QString::number(metadata.track()), text); } QString UltimateLyricsProvider::NoSpace(const QString& text) { @@ -322,7 +323,7 @@ QString UltimateLyricsProvider::NoSpace(const QString& text) { // TODO: handle special characters (e.g. ® á) bool UltimateLyricsProvider::HTMLHasAlphaNumeric(const QString& html) { bool in_tag = false; - foreach (const QChar& c, html) { + for (const QChar& c : html) { if (!in_tag and c.isLetterOrNumber()) return true; else if (c == QChar('<')) diff --git a/src/songinfo/ultimatelyricsprovider.h b/src/songinfo/ultimatelyricsprovider.h index 1e047b8f1..96f2ef4db 100644 --- a/src/songinfo/ultimatelyricsprovider.h +++ b/src/songinfo/ultimatelyricsprovider.h @@ -31,7 +31,7 @@ class QNetworkReply; class UltimateLyricsProvider : public SongInfoProvider { Q_OBJECT -public: + public: UltimateLyricsProvider(); static const int kRedirectLimit; @@ -47,38 +47,44 @@ public: void set_relevance(int relevance) { relevance_ = relevance; } void add_url_format(const QString& replace, const QString& with) { - url_formats_ << UrlFormat(replace, with); } + url_formats_ << UrlFormat(replace, with); + } void add_extract_rule(const Rule& rule) { extract_rules_ << rule; } void add_exclude_rule(const Rule& rule) { exclude_rules_ << rule; } - void add_invalid_indicator(const QString& indicator) { invalid_indicators_ << indicator; } + void add_invalid_indicator(const QString& indicator) { + invalid_indicators_ << indicator; + } QString name() const { return name_; } int relevance() const { return relevance_; } void FetchInfo(int id, const Song& metadata); -private slots: + private slots: void LyricsFetched(); -private: + private: bool ApplyExtractRule(const Rule& rule, QString* content) const; void ApplyExcludeRule(const Rule& rule, QString* content) const; static QString ExtractUrl(const QString& source, const Rule& rule); static QString ExtractXmlTag(const QString& source, const QString& tag); - static QString Extract(const QString& source, const QString& begin, const QString& end); + static QString Extract(const QString& source, const QString& begin, + const QString& end); static QString ExcludeXmlTag(const QString& source, const QString& tag); - static QString Exclude(const QString& source, const QString& begin, const QString& end); + static QString Exclude(const QString& source, const QString& begin, + const QString& end); static QString FirstChar(const QString& text); static QString TitleCase(const QString& text); static QString NoSpace(const QString& text); static bool HTMLHasAlphaNumeric(const QString& html); - void ReplaceField(const QString& tag, const QString& value, QString* text) const; + void ReplaceField(const QString& tag, const QString& value, + QString* text) const; void ReplaceFields(const Song& metadata, QString* text) const; -private: + private: NetworkAccessManager* network_; QMap requests_; @@ -98,4 +104,4 @@ private: bool url_hop_; }; -#endif // ULTIMATELYRICSPROVIDER_H +#endif // ULTIMATELYRICSPROVIDER_H diff --git a/src/songinfo/ultimatelyricsreader.cpp b/src/songinfo/ultimatelyricsreader.cpp index 91850adda..c7ca0612b 100644 --- a/src/songinfo/ultimatelyricsreader.cpp +++ b/src/songinfo/ultimatelyricsreader.cpp @@ -24,16 +24,12 @@ #include UltimateLyricsReader::UltimateLyricsReader(QObject* parent) - : QObject(parent), - thread_(qApp->thread()) -{ -} + : QObject(parent), thread_(qApp->thread()) {} -void UltimateLyricsReader::SetThread(QThread *thread) { - thread_ = thread; -} +void UltimateLyricsReader::SetThread(QThread* thread) { thread_ = thread; } -QList UltimateLyricsReader::Parse(const QString& filename) const { +QList UltimateLyricsReader::Parse(const QString& filename) + const { QFile file(filename); if (!file.open(QIODevice::ReadOnly)) { qLog(Warning) << "Error opening" << filename; @@ -43,7 +39,8 @@ QList UltimateLyricsReader::Parse(const QString& filename) co return ParseDevice(&file); } -QList UltimateLyricsReader::ParseDevice(QIODevice* device) const { +QList UltimateLyricsReader::ParseDevice(QIODevice* device) + const { QList ret; QXmlStreamReader reader(device); @@ -62,7 +59,8 @@ QList UltimateLyricsReader::ParseDevice(QIODevice* device) co return ret; } -SongInfoProvider* UltimateLyricsReader::ParseProvider(QXmlStreamReader* reader) const { +SongInfoProvider* UltimateLyricsReader::ParseProvider(QXmlStreamReader* reader) + const { QXmlStreamAttributes attributes = reader->attributes(); UltimateLyricsProvider* scraper = new UltimateLyricsProvider; @@ -74,8 +72,7 @@ SongInfoProvider* UltimateLyricsReader::ParseProvider(QXmlStreamReader* reader) while (!reader->atEnd()) { reader->readNext(); - if (reader->tokenType() == QXmlStreamReader::EndElement) - break; + if (reader->tokenType() == QXmlStreamReader::EndElement) break; if (reader->tokenType() == QXmlStreamReader::StartElement) { if (reader->name() == "extract") @@ -85,36 +82,39 @@ SongInfoProvider* UltimateLyricsReader::ParseProvider(QXmlStreamReader* reader) else if (reader->name() == "invalidIndicator") scraper->add_invalid_indicator(ParseInvalidIndicator(reader)); else if (reader->name() == "urlFormat") { - scraper->add_url_format(reader->attributes().value("replace").toString(), - reader->attributes().value("with").toString()); + scraper->add_url_format( + reader->attributes().value("replace").toString(), + reader->attributes().value("with").toString()); reader->skipCurrentElement(); - } - else + } else reader->skipCurrentElement(); } } return scraper; } -UltimateLyricsProvider::Rule UltimateLyricsReader::ParseRule(QXmlStreamReader* reader) const { +UltimateLyricsProvider::Rule UltimateLyricsReader::ParseRule( + QXmlStreamReader* reader) const { UltimateLyricsProvider::Rule ret; while (!reader->atEnd()) { reader->readNext(); - if (reader->tokenType() == QXmlStreamReader::EndElement) - break; + if (reader->tokenType() == QXmlStreamReader::EndElement) break; if (reader->tokenType() == QXmlStreamReader::StartElement) { if (reader->name() == "item") { QXmlStreamAttributes attr = reader->attributes(); if (attr.hasAttribute("tag")) - ret << UltimateLyricsProvider::RuleItem(attr.value("tag").toString(), QString()); + ret << UltimateLyricsProvider::RuleItem(attr.value("tag").toString(), + QString()); else if (attr.hasAttribute("url")) - ret << UltimateLyricsProvider::RuleItem(attr.value("url").toString(), QString()); + ret << UltimateLyricsProvider::RuleItem(attr.value("url").toString(), + QString()); else if (attr.hasAttribute("begin")) - ret << UltimateLyricsProvider::RuleItem(attr.value("begin").toString(), - attr.value("end").toString()); + ret << UltimateLyricsProvider::RuleItem( + attr.value("begin").toString(), + attr.value("end").toString()); } reader->skipCurrentElement(); } @@ -122,9 +122,9 @@ UltimateLyricsProvider::Rule UltimateLyricsReader::ParseRule(QXmlStreamReader* r return ret; } -QString UltimateLyricsReader::ParseInvalidIndicator(QXmlStreamReader* reader) const { +QString UltimateLyricsReader::ParseInvalidIndicator(QXmlStreamReader* reader) + const { QString ret = reader->attributes().value("value").toString(); reader->skipCurrentElement(); return ret; } - diff --git a/src/songinfo/ultimatelyricsreader.h b/src/songinfo/ultimatelyricsreader.h index 7cbe99106..cfa8cfb14 100644 --- a/src/songinfo/ultimatelyricsreader.h +++ b/src/songinfo/ultimatelyricsreader.h @@ -29,15 +29,15 @@ class QThread; class UltimateLyricsReader : public QObject { Q_OBJECT -public: - UltimateLyricsReader(QObject* parent = 0); + public: + UltimateLyricsReader(QObject* parent = nullptr); QList Parse(const QString& filename) const; QList ParseDevice(QIODevice* device) const; void SetThread(QThread* thread); -private: + private: SongInfoProvider* ParseProvider(QXmlStreamReader* reader) const; UltimateLyricsProvider::Rule ParseRule(QXmlStreamReader* reader) const; QString ParseInvalidIndicator(QXmlStreamReader* reader) const; @@ -45,4 +45,4 @@ private: QThread* thread_; }; -#endif // ULTIMATELYRICSREADER_H +#endif // ULTIMATELYRICSREADER_H diff --git a/src/transcoder/transcodedialog.cpp b/src/transcoder/transcodedialog.cpp index fc1cb2edd..72948b08b 100644 --- a/src/transcoder/transcodedialog.cpp +++ b/src/transcoder/transcodedialog.cpp @@ -31,7 +31,7 @@ // winspool.h defines this :( #ifdef AddJob -# undef AddJob +#undef AddJob #endif const char* TranscodeDialog::kSettingsGroup = "Transcoder"; @@ -43,29 +43,27 @@ static bool ComparePresetsByName(const TranscoderPreset& left, return left.name_ < right.name_; } - -TranscodeDialog::TranscodeDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_TranscodeDialog), - log_ui_(new Ui_TranscodeLogDialog), - log_dialog_(new QDialog(this)), - transcoder_(new Transcoder(this)), - queued_(0), - finished_success_(0), - finished_failed_(0) -{ +TranscodeDialog::TranscodeDialog(QWidget* parent) + : QDialog(parent), + ui_(new Ui_TranscodeDialog), + log_ui_(new Ui_TranscodeLogDialog), + log_dialog_(new QDialog(this)), + transcoder_(new Transcoder(this)), + queued_(0), + finished_success_(0), + finished_failed_(0) { ui_->setupUi(this); ui_->files->header()->setResizeMode(QHeaderView::ResizeToContents); log_ui_->setupUi(log_dialog_); QPushButton* clear_button = log_ui_->buttonBox->addButton(tr("Clear"), QDialogButtonBox::ResetRole); - connect(clear_button, SIGNAL(clicked()),log_ui_->log, SLOT(clear())); + connect(clear_button, SIGNAL(clicked()), log_ui_->log, SLOT(clear())); // Get presets QList presets = Transcoder::GetAllPresets(); qSort(presets.begin(), presets.end(), ComparePresetsByName); - foreach (const TranscoderPreset& preset, presets) { + for (const TranscoderPreset& preset : presets) { ui_->format->addItem( QString("%1 (.%2)").arg(preset.name_, preset.extension_), QVariant::fromValue(preset)); @@ -77,7 +75,7 @@ TranscodeDialog::TranscodeDialog(QWidget *parent) last_add_dir_ = s.value("last_add_dir", QDir::homePath()).toString(); QString last_output_format = s.value("last_output_format", "ogg").toString(); - for (int i=0 ; iformat->count() ; ++i) { + for (int i = 0; i < ui_->format->count(); ++i) { if (last_output_format == ui_->format->itemData(i).value().extension_) { ui_->format->setCurrentIndex(i); @@ -86,8 +84,8 @@ TranscodeDialog::TranscodeDialog(QWidget *parent) } // Add a start button - start_button_ = ui_->button_box->addButton( - tr("Start transcoding"), QDialogButtonBox::ActionRole); + start_button_ = ui_->button_box->addButton(tr("Start transcoding"), + QDialogButtonBox::ActionRole); cancel_button_ = ui_->button_box->button(QDialogButtonBox::Cancel); close_button_ = ui_->button_box->button(QDialogButtonBox::Close); @@ -107,8 +105,8 @@ TranscodeDialog::TranscodeDialog(QWidget *parent) connect(ui_->options, SIGNAL(clicked()), SLOT(Options())); connect(ui_->select, SIGNAL(clicked()), SLOT(AddDestination())); - - connect(transcoder_, SIGNAL(JobComplete(QString,bool)), SLOT(JobComplete(QString,bool))); + connect(transcoder_, SIGNAL(JobComplete(QString, bool)), + SLOT(JobComplete(QString, bool))); connect(transcoder_, SIGNAL(LogLine(QString)), SLOT(LogLine(QString))); connect(transcoder_, SIGNAL(AllJobsComplete()), SLOT(AllJobsComplete())); } @@ -136,11 +134,11 @@ void TranscodeDialog::Start() { SetWorking(true); QAbstractItemModel* file_model = ui_->files->model(); - TranscoderPreset preset = ui_->format->itemData( - ui_->format->currentIndex()).value(); + TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) + .value(); // Add jobs to the transcoder - for (int i=0 ; irowCount() ; ++i) { + for (int i = 0; i < file_model->rowCount(); ++i) { QString filename = file_model->index(i, 0).data(Qt::UserRole).toString(); QString outfilename = GetOutputFileName(filename, preset); transcoder_->AddJob(filename, preset, outfilename); @@ -171,8 +169,8 @@ void TranscodeDialog::Cancel() { } void TranscodeDialog::JobComplete(const QString& filename, bool success) { - (*(success ? &finished_success_ : &finished_failed_)) ++; - queued_ --; + (*(success ? &finished_success_ : &finished_failed_))++; + queued_--; UpdateStatusText(); UpdateProgress(); @@ -182,7 +180,7 @@ void TranscodeDialog::UpdateProgress() { int progress = (finished_success_ + finished_failed_) * 100; QMap current_jobs = transcoder_->GetProgress(); - foreach (float value, current_jobs.values()) { + for (float value : current_jobs.values()) { progress += qBound(0, int(value * 100), 99); } @@ -193,37 +191,32 @@ void TranscodeDialog::UpdateStatusText() { QStringList sections; if (queued_) { - sections << "" + - tr("%n remaining", "", queued_) + ""; + sections << "" + tr("%n remaining", "", queued_) + + ""; } if (finished_success_) { sections << "" + - tr("%n finished", "", finished_success_) + ""; + tr("%n finished", "", finished_success_) + ""; } if (finished_failed_) { sections << "" + - tr("%n failed", "", finished_failed_) + ""; + tr("%n failed", "", finished_failed_) + ""; } ui_->progress_text->setText(sections.join(", ")); } -void TranscodeDialog::AllJobsComplete() { - SetWorking(false); -} +void TranscodeDialog::AllJobsComplete() { SetWorking(false); } void TranscodeDialog::Add() { QStringList filenames = QFileDialog::getOpenFileNames( this, tr("Add files to transcode"), last_add_dir_, - QString("%1 (%2);;%3").arg( - tr("Music"), - FileView::kFileFilter, - tr(MainWindow::kAllFilesFilterSpec))); + QString("%1 (%2);;%3").arg(tr("Music"), FileView::kFileFilter, + tr(MainWindow::kAllFilesFilterSpec))); - if (filenames.isEmpty()) - return; + if (filenames.isEmpty()) return; SetFilenames(filenames); @@ -233,22 +226,20 @@ void TranscodeDialog::Add() { s.setValue("last_add_dir", last_add_dir_); } -void TranscodeDialog::SetFilenames(const QStringList &filenames) { - foreach (const QString& filename, filenames) { +void TranscodeDialog::SetFilenames(const QStringList& filenames) { + for (const QString& filename : filenames) { QString name = filename.section('/', -1, -1); QString path = filename.section('/', 0, -2); - QTreeWidgetItem* item = new QTreeWidgetItem( - ui_->files, QStringList() << name << path); + QTreeWidgetItem* item = + new QTreeWidgetItem(ui_->files, QStringList() << name << path); item->setData(0, Qt::UserRole, filename); } } -void TranscodeDialog::Remove() { - qDeleteAll(ui_->files->selectedItems()); -} +void TranscodeDialog::Remove() { qDeleteAll(ui_->files->selectedItems()); } -void TranscodeDialog::LogLine(const QString &message) { +void TranscodeDialog::LogLine(const QString& message) { QString date(QDateTime::currentDateTime().toString(Qt::TextDate)); log_ui_->log->appendPlainText(QString("%1: %2").arg(date, message)); } @@ -262,8 +253,8 @@ void TranscodeDialog::timerEvent(QTimerEvent* e) { } void TranscodeDialog::Options() { - TranscoderPreset preset = ui_->format->itemData( - ui_->format->currentIndex()).value(); + TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) + .value(); TranscoderOptionsDialog dialog(preset.type_, this); if (dialog.is_valid()) { @@ -274,16 +265,16 @@ void TranscodeDialog::Options() { // Adds a folder to the destination box. void TranscodeDialog::AddDestination() { int index = ui_->destination->currentIndex(); - QString initial_dir = (!ui_->destination->itemData(index).isNull() ? - ui_->destination->itemData(index).toString() : - QDir::homePath()); - QString dir = QFileDialog::getExistingDirectory( - this, tr("Add folder"), initial_dir); + QString initial_dir = (!ui_->destination->itemData(index).isNull() + ? ui_->destination->itemData(index).toString() + : QDir::homePath()); + QString dir = + QFileDialog::getExistingDirectory(this, tr("Add folder"), initial_dir); if (!dir.isEmpty()) { // Keep only a finite number of items in the box. while (ui_->destination->count() >= kMaxDestinationItems) { - ui_->destination->removeItem(1); // The oldest folder item. + ui_->destination->removeItem(1); // The oldest folder item. } QIcon icon = IconLoader::Load("folder"); @@ -304,10 +295,10 @@ QString TranscodeDialog::TrimPath(const QString& path) const { return path.section('/', -1, -1, QString::SectionSkipEmpty); } -QString TranscodeDialog::GetOutputFileName(const QString& input, - const TranscoderPreset &preset) const { - QString path = ui_->destination->itemData( - ui_->destination->currentIndex()).toString(); +QString TranscodeDialog::GetOutputFileName( + const QString& input, const TranscoderPreset& preset) const { + QString path = + ui_->destination->itemData(ui_->destination->currentIndex()).toString(); if (path.isEmpty()) { // Keep the original path. return input.section('.', 0, -2) + '.' + preset.extension_; diff --git a/src/transcoder/transcodedialog.h b/src/transcoder/transcodedialog.h index 5be060def..d68a92e6e 100644 --- a/src/transcoder/transcodedialog.h +++ b/src/transcoder/transcodedialog.h @@ -31,7 +31,7 @@ class TranscodeDialog : public QDialog { Q_OBJECT public: - TranscodeDialog(QWidget* parent = 0); + TranscodeDialog(QWidget* parent = nullptr); ~TranscodeDialog(); static const char* kSettingsGroup; @@ -81,4 +81,4 @@ class TranscodeDialog : public QDialog { int finished_failed_; }; -#endif // TRANSCODEDIALOG_H +#endif // TRANSCODEDIALOG_H diff --git a/src/transcoder/transcoder.cpp b/src/transcoder/transcoder.cpp index 06aba280b..5a9696b97 100644 --- a/src/transcoder/transcoder.cpp +++ b/src/transcoder/transcoder.cpp @@ -17,6 +17,8 @@ #include "transcoder.h" +#include + #include #include #include @@ -24,46 +26,37 @@ #include #include -#include - #include "core/logging.h" #include "core/signalchecker.h" -using boost::shared_ptr; +using std::shared_ptr; int Transcoder::JobFinishedEvent::sEventType = -1; +TranscoderPreset::TranscoderPreset(Song::FileType type, const QString& name, + const QString& extension, + const QString& codec_mimetype, + const QString& muxer_mimetype) + : type_(type), + name_(name), + extension_(extension), + codec_mimetype_(codec_mimetype), + muxer_mimetype_(muxer_mimetype) {} -TranscoderPreset::TranscoderPreset( - Song::FileType type, - const QString& name, - const QString& extension, - const QString& codec_mimetype, - const QString& muxer_mimetype) - : type_(type), - name_(name), - extension_(extension), - codec_mimetype_(codec_mimetype), - muxer_mimetype_(muxer_mimetype) -{ -} - - -GstElement* Transcoder::CreateElement(const QString &factory_name, - GstElement *bin, - const QString &name) { +GstElement* Transcoder::CreateElement(const QString& factory_name, + GstElement* bin, const QString& name) { GstElement* ret = gst_element_factory_make( factory_name.toAscii().constData(), - name.isNull() ? factory_name.toAscii().constData() : name.toAscii().constData()); + name.isNull() ? factory_name.toAscii().constData() + : name.toAscii().constData()); - if (ret && bin) - gst_bin_add(GST_BIN(bin), ret); + if (ret && bin) gst_bin_add(GST_BIN(bin), ret); if (!ret) { emit LogLine( tr("Could not create the GStreamer element \"%1\" -" " make sure you have all the required GStreamer plugins installed") - .arg(factory_name)); + .arg(factory_name)); } else { SetElementProperties(factory_name, G_OBJECT(ret)); } @@ -73,9 +66,11 @@ GstElement* Transcoder::CreateElement(const QString &factory_name, struct SuitableElement { SuitableElement(const QString& name = QString(), int rank = 0) - : name_(name), rank_(rank) {} + : name_(name), rank_(rank) {} - bool operator <(const SuitableElement& other) const { return rank_ < other.rank_; } + bool operator<(const SuitableElement& other) const { + return rank_ < other.rank_; + } QString name_; int rank_; @@ -84,8 +79,7 @@ struct SuitableElement { GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, const QString& mime_type, GstElement* bin) { - if (mime_type.isEmpty()) - return NULL; + if (mime_type.isEmpty()) return nullptr; // HACK: Force ffmux_mp4 because it doesn't set any useful src caps if (mime_type == "audio/mp4") { @@ -104,18 +98,18 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, GList* const features = gst_registry_get_feature_list(registry, GST_TYPE_ELEMENT_FACTORY); - for (GList* p = features ; p ; p = g_list_next(p)) { + for (GList* p = features; p; p = g_list_next(p)) { GstElementFactory* factory = GST_ELEMENT_FACTORY(p->data); // Is this the right type of plugin? if (QString(factory->details.klass).contains(element_type)) { const GList* const templates = gst_element_factory_get_static_pad_templates(factory); - for (const GList* p = templates ; p ; p = g_list_next(p)) { + for (const GList* p = templates; p; p = g_list_next(p)) { // Only interested in source pads - GstStaticPadTemplate* pad_template = reinterpret_cast(p->data); - if (pad_template->direction != GST_PAD_SRC) - continue; + GstStaticPadTemplate* pad_template = + reinterpret_cast(p->data); + if (pad_template->direction != GST_PAD_SRC) continue; // Does this pad support the mime type we want? GstCaps* caps = gst_static_pad_template_get_caps(pad_template); @@ -127,7 +121,7 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, QString name = GST_PLUGIN_FEATURE_NAME(factory); if (name.startsWith("ffmux") || name.startsWith("ffenc")) - rank = -1; // ffmpeg usually sucks + rank = -1; // ffmpeg usually sucks suitable_elements_ << SuitableElement(name, rank); } @@ -140,8 +134,7 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, gst_plugin_feature_list_free(features); gst_caps_unref(target_caps); - if (suitable_elements_.isEmpty()) - return NULL; + if (suitable_elements_.isEmpty()) return nullptr; // Sort by rank qSort(suitable_elements_); @@ -151,7 +144,8 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, if (best.name_ == "lamemp3enc") { // Special case: we need to add xingmux and id3v2mux to the pipeline when - // using lamemp3enc because it doesn't write the VBR or ID3v2 headers itself. + // using lamemp3enc because it doesn't write the VBR or ID3v2 headers + // itself. LogLine("Adding xingmux and id3v2mux to the pipeline"); @@ -160,16 +154,16 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, gst_bin_add(GST_BIN(bin), mp3bin); // Create the elements - GstElement* lame = CreateElement("lamemp3enc", mp3bin); - GstElement* xing = CreateElement("xingmux", mp3bin); + GstElement* lame = CreateElement("lamemp3enc", mp3bin); + GstElement* xing = CreateElement("xingmux", mp3bin); GstElement* id3v2 = CreateElement("id3v2mux", mp3bin); if (!lame || !xing || !id3v2) { - return NULL; + return nullptr; } // Link the elements together - gst_element_link_many(lame, xing, id3v2, NULL); + gst_element_link_many(lame, xing, id3v2, nullptr); // Link the bin's ghost pads to the elements on each end GstPad* pad = gst_element_get_static_pad(lame, "sink"); @@ -186,28 +180,21 @@ GstElement* Transcoder::CreateElementForMimeType(const QString& element_type, } } - -Transcoder::JobFinishedEvent::JobFinishedEvent(JobState *state, bool success) - : QEvent(QEvent::Type(sEventType)), - state_(state), - success_(success) -{ -} +Transcoder::JobFinishedEvent::JobFinishedEvent(JobState* state, bool success) + : QEvent(QEvent::Type(sEventType)), state_(state), success_(success) {} void Transcoder::JobState::PostFinished(bool success) { if (success) { - emit parent_->LogLine( - tr("Successfully written %1").arg(QDir::toNativeSeparators(job_.output))); + emit parent_->LogLine(tr("Successfully written %1") + .arg(QDir::toNativeSeparators(job_.output))); } - QCoreApplication::postEvent(parent_, new Transcoder::JobFinishedEvent(this, success)); + QCoreApplication::postEvent(parent_, + new Transcoder::JobFinishedEvent(this, success)); } - Transcoder::Transcoder(QObject* parent) - : QObject(parent), - max_threads_(QThread::idealThreadCount()) -{ + : QObject(parent), max_threads_(QThread::idealThreadCount()) { if (JobFinishedEvent::sEventType == -1) JobFinishedEvent::sEventType = QEvent::registerEventType(); @@ -216,7 +203,7 @@ Transcoder::Transcoder(QObject* parent) s.beginGroup("Transcoder/lamemp3enc"); if (s.value("target").isNull()) { - s.setValue("target", 1); // 1 == bitrate + s.setValue("target", 1); // 1 == bitrate } if (s.value("cbr").isNull()) { s.setValue("cbr", true); @@ -240,23 +227,30 @@ QList Transcoder::GetAllPresets() { TranscoderPreset Transcoder::PresetForFileType(Song::FileType type) { switch (type) { case Song::Type_Flac: - return TranscoderPreset(type, "Flac", "flac", "audio/x-flac"); + return TranscoderPreset(type, tr("Flac"), "flac", "audio/x-flac"); case Song::Type_Mp4: - return TranscoderPreset(type, "M4A AAC", "mp4", "audio/mpeg, mpegversion=(int)4", "audio/mp4"); + return TranscoderPreset(type, tr("M4A AAC"), "mp4", + "audio/mpeg, mpegversion=(int)4", "audio/mp4"); case Song::Type_Mpeg: - return TranscoderPreset(type, "MP3", "mp3", "audio/mpeg, mpegversion=(int)1, layer=(int)3"); + return TranscoderPreset(type, tr("MP3"), "mp3", + "audio/mpeg, mpegversion=(int)1, layer=(int)3"); case Song::Type_OggVorbis: - return TranscoderPreset(type, "Ogg Vorbis", "ogg", "audio/x-vorbis", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Vorbis"), "ogg", "audio/x-vorbis", + "application/ogg"); case Song::Type_OggFlac: - return TranscoderPreset(type, "Ogg Flac", "ogg", "audio/x-flac", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Flac"), "ogg", "audio/x-flac", + "application/ogg"); case Song::Type_OggSpeex: - return TranscoderPreset(type, "Ogg Speex", "spx", "audio/x-speex", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Speex"), "spx", "audio/x-speex", + "application/ogg"); case Song::Type_OggOpus: - return TranscoderPreset(type, "Ogg Opus", "opus", "audio/x-opus", "application/ogg"); + return TranscoderPreset(type, tr("Ogg Opus"), "opus", "audio/x-opus", + "application/ogg"); case Song::Type_Asf: - return TranscoderPreset(type, "Windows Media audio", "wma", "audio/x-wma", "video/x-ms-asf"); + return TranscoderPreset(type, tr("Windows Media audio"), "wma", + "audio/x-wma", "video/x-ms-asf"); case Song::Type_Wav: - return TranscoderPreset(type, "Wav", "wav", QString(), "audio/x-wav"); + return TranscoderPreset(type, tr("Wav"), "wav", QString(), "audio/x-wav"); default: qLog(Warning) << "Unsupported format in PresetForFileType:" << type; return TranscoderPreset(); @@ -264,24 +258,21 @@ TranscoderPreset Transcoder::PresetForFileType(Song::FileType type) { } Song::FileType Transcoder::PickBestFormat(QList supported) { - if (supported.isEmpty()) - return Song::Type_Unknown; + if (supported.isEmpty()) return Song::Type_Unknown; QList best_formats; best_formats << Song::Type_Mpeg; best_formats << Song::Type_OggVorbis; best_formats << Song::Type_Asf; - foreach (Song::FileType type, best_formats) { - if (supported.isEmpty() || supported.contains(type)) - return type; + for (Song::FileType type : best_formats) { + if (supported.isEmpty() || supported.contains(type)) return type; } return supported[0]; } -void Transcoder::AddJob(const QString& input, - const TranscoderPreset& preset, +void Transcoder::AddJob(const QString& input, const TranscoderPreset& preset, const QString& output) { Job job; job.input = input; @@ -296,8 +287,10 @@ void Transcoder::AddJob(const QString& input, // Never overwrite existing files if (QFile::exists(job.output)) { - for (int i=0 ; ; ++i) { - QString new_filename = QString("%1.%2.%3").arg(job.output.section('.',0,-2)).arg(i).arg(preset.extension_); + for (int i = 0;; ++i) { + QString new_filename = + QString("%1.%2.%3").arg(job.output.section('.', 0, -2)).arg(i).arg( + preset.extension_); if (!QFile::exists(new_filename)) { job.output = new_filename; break; @@ -310,18 +303,17 @@ void Transcoder::AddJob(const QString& input, void Transcoder::Start() { emit LogLine(tr("Transcoding %1 files using %2 threads") - .arg(queued_jobs_.count()).arg(max_threads())); + .arg(queued_jobs_.count()) + .arg(max_threads())); forever { StartJobStatus status = MaybeStartNextJob(); - if (status == AllThreadsBusy || status == NoMoreJobs) - break; + if (status == AllThreadsBusy || status == NoMoreJobs) break; } } Transcoder::StartJobStatus Transcoder::MaybeStartNextJob() { - if (current_jobs_.count() >= max_threads()) - return AllThreadsBusy; + if (current_jobs_.count() >= max_threads()) return AllThreadsBusy; if (queued_jobs_.isEmpty()) { if (current_jobs_.isEmpty()) { emit AllJobsComplete(); @@ -332,7 +324,7 @@ Transcoder::StartJobStatus Transcoder::MaybeStartNextJob() { Job job = queued_jobs_.takeFirst(); if (StartJob(job)) { - emit(JobOutputName(job.output)); + emit(JobOutputName(job.output)); return StartedSuccessfully; } @@ -340,10 +332,11 @@ Transcoder::StartJobStatus Transcoder::MaybeStartNextJob() { return FailedToStart; } -void Transcoder::NewPadCallback(GstElement*, GstPad* pad, gboolean, gpointer data) { +void Transcoder::NewPadCallback(GstElement*, GstPad* pad, gboolean, + gpointer data) { JobState* state = reinterpret_cast(data); - GstPad* const audiopad = gst_element_get_static_pad( - state->convert_element_, "sink"); + GstPad* const audiopad = + gst_element_get_static_pad(state->convert_element_, "sink"); if (GST_PAD_IS_LINKED(audiopad)) { qLog(Debug) << "audiopad is already linked, unlinking old pad"; @@ -369,7 +362,8 @@ gboolean Transcoder::BusCallback(GstBus*, GstMessage* msg, gpointer data) { return GST_BUS_DROP; } -GstBusSyncReply Transcoder::BusCallbackSync(GstBus*, GstMessage* msg, gpointer data) { +GstBusSyncReply Transcoder::BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data) { JobState* state = reinterpret_cast(data); switch (GST_MESSAGE_TYPE(msg)) { case GST_MESSAGE_EOS: @@ -397,11 +391,11 @@ void Transcoder::JobState::ReportError(GstMessage* msg) { g_error_free(error); free(debugs); - emit parent_->LogLine( - tr("Error processing %1: %2").arg(QDir::toNativeSeparators(job_.input), message)); + emit parent_->LogLine(tr("Error processing %1: %2").arg( + QDir::toNativeSeparators(job_.input), message)); } -bool Transcoder::StartJob(const Job &job) { +bool Transcoder::StartJob(const Job& job) { shared_ptr state(new JobState(job, this)); emit LogLine(tr("Starting %1").arg(QDir::toNativeSeparators(job.input))); @@ -413,48 +407,52 @@ bool Transcoder::StartJob(const Job &job) { if (!state->pipeline_) return false; // Create all the elements - GstElement* src = CreateElement("filesrc", state->pipeline_); - GstElement* decode = CreateElement("decodebin2", state->pipeline_); - GstElement* convert = CreateElement("audioconvert", state->pipeline_); + GstElement* src = CreateElement("filesrc", state->pipeline_); + GstElement* decode = CreateElement("decodebin2", state->pipeline_); + GstElement* convert = CreateElement("audioconvert", state->pipeline_); GstElement* resample = CreateElement("audioresample", state->pipeline_); - GstElement* codec = CreateElementForMimeType("Codec/Encoder/Audio", job.preset.codec_mimetype_, state->pipeline_); - GstElement* muxer = CreateElementForMimeType("Codec/Muxer", job.preset.muxer_mimetype_, state->pipeline_); - GstElement* sink = CreateElement("filesink", state->pipeline_); + GstElement* codec = CreateElementForMimeType( + "Codec/Encoder/Audio", job.preset.codec_mimetype_, state->pipeline_); + GstElement* muxer = CreateElementForMimeType( + "Codec/Muxer", job.preset.muxer_mimetype_, state->pipeline_); + GstElement* sink = CreateElement("filesink", state->pipeline_); - if (!src || !decode || !convert || !sink) - return false; + if (!src || !decode || !convert || !sink) return false; if (!codec && !job.preset.codec_mimetype_.isEmpty()) { - LogLine(tr("Couldn't find an encoder for %1, check you have the correct GStreamer plugins installed" - ).arg(job.preset.codec_mimetype_)); + LogLine(tr("Couldn't find an encoder for %1, check you have the correct " + "GStreamer plugins installed").arg(job.preset.codec_mimetype_)); return false; } if (!muxer && !job.preset.muxer_mimetype_.isEmpty()) { - LogLine(tr("Couldn't find a muxer for %1, check you have the correct GStreamer plugins installed" - ).arg(job.preset.muxer_mimetype_)); + LogLine(tr("Couldn't find a muxer for %1, check you have the correct " + "GStreamer plugins installed").arg(job.preset.muxer_mimetype_)); return false; } // Join them together gst_element_link(src, decode); if (codec && muxer) - gst_element_link_many(convert, resample, codec, muxer, sink, NULL); + gst_element_link_many(convert, resample, codec, muxer, sink, nullptr); else if (codec) - gst_element_link_many(convert, resample, codec, sink, NULL); + gst_element_link_many(convert, resample, codec, sink, nullptr); else if (muxer) - gst_element_link_many(convert, resample, muxer, sink, NULL); + gst_element_link_many(convert, resample, muxer, sink, nullptr); // Set properties - g_object_set(src, "location", job.input.toUtf8().constData(), NULL); - g_object_set(sink, "location", job.output.toUtf8().constData(), NULL); + g_object_set(src, "location", job.input.toUtf8().constData(), nullptr); + g_object_set(sink, "location", job.output.toUtf8().constData(), nullptr); // Set callbacks state->convert_element_ = convert; CHECKED_GCONNECT(decode, "new-decoded-pad", &NewPadCallback, state.get()); - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), BusCallbackSync, state.get()); - state->bus_callback_id_ = gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), BusCallback, state.get()); + gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), + BusCallbackSync, state.get()); + state->bus_callback_id_ = + gst_bus_add_watch(gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), + BusCallback, state.get()); // Start the pipeline gst_element_set_state(state->pipeline_, GST_STATE_PLAYING); @@ -481,8 +479,7 @@ bool Transcoder::event(QEvent* e) { // Find this job in the list JobStateList::iterator it = current_jobs_.begin(); while (it != current_jobs_.end()) { - if (it->get() == finished_event->state_) - break; + if (it->get() == finished_event->state_) break; ++it; } if (it == current_jobs_.end()) { @@ -495,8 +492,9 @@ bool Transcoder::event(QEvent* e) { // Remove event handlers from the gstreamer pipeline so they don't get // called after the pipeline is shutting down - gst_bus_set_sync_handler(gst_pipeline_get_bus(GST_PIPELINE( - finished_event->state_->pipeline_)), NULL, NULL); + gst_bus_set_sync_handler( + gst_pipeline_get_bus(GST_PIPELINE(finished_event->state_->pipeline_)), + nullptr, nullptr); g_source_remove(finished_event->state_->bus_callback_id_); // Remove it from the list - this will also destroy the GStreamer pipeline @@ -525,14 +523,16 @@ void Transcoder::Cancel() { // Remove event handlers from the gstreamer pipeline so they don't get // called after the pipeline is shutting down - gst_bus_set_sync_handler(gst_pipeline_get_bus( - GST_PIPELINE(state->pipeline_)), NULL, NULL); + gst_bus_set_sync_handler( + gst_pipeline_get_bus(GST_PIPELINE(state->pipeline_)), nullptr, nullptr); g_source_remove(state->bus_callback_id_); // Stop the pipeline - if (gst_element_set_state(state->pipeline_, GST_STATE_NULL) == GST_STATE_CHANGE_ASYNC) { + if (gst_element_set_state(state->pipeline_, GST_STATE_NULL) == + GST_STATE_CHANGE_ASYNC) { // Wait for it to finish stopping... - gst_element_get_state(state->pipeline_, NULL, NULL, GST_CLOCK_TIME_NONE); + gst_element_get_state(state->pipeline_, nullptr, nullptr, + GST_CLOCK_TIME_NONE); } // Remove the job, this destroys the GStreamer pipeline too @@ -543,9 +543,8 @@ void Transcoder::Cancel() { QMap Transcoder::GetProgress() const { QMap ret; - foreach (boost::shared_ptr state, current_jobs_) { - if (!state->pipeline_) - continue; + for (const auto& state : current_jobs_) { + if (!state->pipeline_) continue; gint64 position = 0; gint64 duration = 0; @@ -566,23 +565,31 @@ void Transcoder::SetElementProperties(const QString& name, GObject* object) { guint properties_count = 0; GParamSpec** properties = g_object_class_list_properties( - G_OBJECT_GET_CLASS(object), &properties_count); + G_OBJECT_GET_CLASS(object), &properties_count); - for (int i=0 ; iname); - if (value.isNull()) - continue; + if (value.isNull()) continue; - LogLine(QString("Setting %1 property: %2 = %3").arg(name, property->name, value.toString())); + LogLine(QString("Setting %1 property: %2 = %3") + .arg(name, property->name, value.toString())); switch (property->value_type) { - case G_TYPE_DOUBLE: g_object_set(object, property->name, value.toDouble(), NULL); break; - case G_TYPE_FLOAT: g_object_set(object, property->name, value.toFloat(), NULL); break; - case G_TYPE_BOOLEAN: g_object_set(object, property->name, value.toInt(), NULL); break; + case G_TYPE_DOUBLE: + g_object_set(object, property->name, value.toDouble(), nullptr); + break; + case G_TYPE_FLOAT: + g_object_set(object, property->name, value.toFloat(), nullptr); + break; + case G_TYPE_BOOLEAN: + g_object_set(object, property->name, value.toInt(), nullptr); + break; case G_TYPE_INT: - default: g_object_set(object, property->name, value.toInt(), NULL); break; + default: + g_object_set(object, property->name, value.toInt(), nullptr); + break; } } diff --git a/src/transcoder/transcoder.h b/src/transcoder/transcoder.h index 303009525..61d45f2b8 100644 --- a/src/transcoder/transcoder.h +++ b/src/transcoder/transcoder.h @@ -18,6 +18,8 @@ #ifndef TRANSCODER_H #define TRANSCODER_H +#include + #include #include @@ -25,18 +27,12 @@ #include #include -#include -#include - #include "core/song.h" - struct TranscoderPreset { TranscoderPreset() : type_(Song::Type_Unknown) {} - TranscoderPreset(Song::FileType type, - const QString& name, - const QString& extension, - const QString& codec_mimetype, + TranscoderPreset(Song::FileType type, const QString& name, + const QString& extension, const QString& codec_mimetype, const QString& muxer_mimetype_ = QString()); Song::FileType type_; @@ -47,12 +43,11 @@ struct TranscoderPreset { }; Q_DECLARE_METATYPE(TranscoderPreset); - class Transcoder : public QObject { Q_OBJECT public: - Transcoder(QObject* parent = 0); + Transcoder(QObject* parent = nullptr); static TranscoderPreset PresetForFileType(Song::FileType type); static QList GetAllPresets(); @@ -71,7 +66,7 @@ class Transcoder : public QObject { void Start(); void Cancel(); - signals: +signals: void JobComplete(const QString& filename, bool success); void LogLine(const QString& message); void AllJobsComplete(); @@ -92,8 +87,11 @@ class Transcoder : public QObject { // job's thread. struct JobState { JobState(const Job& job, Transcoder* parent) - : job_(job), parent_(parent), pipeline_(NULL), convert_element_(NULL), - bus_callback_id_(0) {} + : job_(job), + parent_(parent), + pipeline_(nullptr), + convert_element_(nullptr), + bus_callback_id_(0) {} ~JobState(); void PostFinished(bool success); @@ -127,23 +125,24 @@ class Transcoder : public QObject { StartJobStatus MaybeStartNextJob(); bool StartJob(const Job& job); - GstElement* CreateElement(const QString& factory_name, GstElement* bin = NULL, + GstElement* CreateElement(const QString& factory_name, GstElement* bin = nullptr, const QString& name = QString()); GstElement* CreateElementForMimeType(const QString& element_type, const QString& mime_type, - GstElement* bin = NULL); + GstElement* bin = nullptr); void SetElementProperties(const QString& name, GObject* element); static void NewPadCallback(GstElement*, GstPad* pad, gboolean, gpointer data); static gboolean BusCallback(GstBus*, GstMessage* msg, gpointer data); - static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, gpointer data); + static GstBusSyncReply BusCallbackSync(GstBus*, GstMessage* msg, + gpointer data); private: - typedef QList > JobStateList; + typedef QList > JobStateList; int max_threads_; QList queued_jobs_; JobStateList current_jobs_; }; -#endif // TRANSCODER_H +#endif // TRANSCODER_H diff --git a/src/transcoder/transcoderoptionsaac.cpp b/src/transcoder/transcoderoptionsaac.cpp index 0f5751396..1cec6b263 100644 --- a/src/transcoder/transcoderoptionsaac.cpp +++ b/src/transcoder/transcoderoptionsaac.cpp @@ -23,15 +23,11 @@ const char* TranscoderOptionsAAC::kSettingsGroup = "Transcoder/faac"; TranscoderOptionsAAC::TranscoderOptionsAAC(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsAAC) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsAAC) { ui_->setupUi(this); } -TranscoderOptionsAAC::~TranscoderOptionsAAC() { - delete ui_; -} +TranscoderOptionsAAC::~TranscoderOptionsAAC() { delete ui_; } void TranscoderOptionsAAC::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionsaac.h b/src/transcoder/transcoderoptionsaac.h index 6710904bd..f1680e47a 100644 --- a/src/transcoder/transcoderoptionsaac.h +++ b/src/transcoder/transcoderoptionsaac.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsAAC; class TranscoderOptionsAAC : public TranscoderOptionsInterface { -public: - TranscoderOptionsAAC(QWidget* parent = 0); + public: + TranscoderOptionsAAC(QWidget* parent = nullptr); ~TranscoderOptionsAAC(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsAAC* ui_; }; -#endif // TRANSCODEROPTIONSAAC_H +#endif // TRANSCODEROPTIONSAAC_H diff --git a/src/transcoder/transcoderoptionsdialog.cpp b/src/transcoder/transcoderoptionsdialog.cpp index bcf8419c4..1fdb73a54 100644 --- a/src/transcoder/transcoderoptionsdialog.cpp +++ b/src/transcoder/transcoderoptionsdialog.cpp @@ -25,22 +25,34 @@ #include "transcoderoptionswma.h" #include "ui_transcoderoptionsdialog.h" -TranscoderOptionsDialog::TranscoderOptionsDialog(Song::FileType type, QWidget* parent) - : QDialog(parent), - ui_(new Ui_TranscoderOptionsDialog), - options_(NULL) -{ +TranscoderOptionsDialog::TranscoderOptionsDialog(Song::FileType type, + QWidget* parent) + : QDialog(parent), ui_(new Ui_TranscoderOptionsDialog), options_(nullptr) { ui_->setupUi(this); switch (type) { case Song::Type_Flac: - case Song::Type_OggFlac: options_ = new TranscoderOptionsFlac(this); break; - case Song::Type_Mp4: options_ = new TranscoderOptionsAAC(this); break; - case Song::Type_Mpeg: options_ = new TranscoderOptionsMP3(this); break; - case Song::Type_OggVorbis: options_ = new TranscoderOptionsVorbis(this); break; - case Song::Type_OggOpus: options_ = new TranscoderOptionsOpus(this); break; - case Song::Type_OggSpeex: options_ = new TranscoderOptionsSpeex(this); break; - case Song::Type_Asf: options_ = new TranscoderOptionsWma(this); break; + case Song::Type_OggFlac: + options_ = new TranscoderOptionsFlac(this); + break; + case Song::Type_Mp4: + options_ = new TranscoderOptionsAAC(this); + break; + case Song::Type_Mpeg: + options_ = new TranscoderOptionsMP3(this); + break; + case Song::Type_OggVorbis: + options_ = new TranscoderOptionsVorbis(this); + break; + case Song::Type_OggOpus: + options_ = new TranscoderOptionsOpus(this); + break; + case Song::Type_OggSpeex: + options_ = new TranscoderOptionsSpeex(this); + break; + case Song::Type_Asf: + options_ = new TranscoderOptionsWma(this); + break; default: break; } @@ -53,9 +65,7 @@ TranscoderOptionsDialog::TranscoderOptionsDialog(Song::FileType type, QWidget* p } } -TranscoderOptionsDialog::~TranscoderOptionsDialog() { - delete ui_; -} +TranscoderOptionsDialog::~TranscoderOptionsDialog() { delete ui_; } void TranscoderOptionsDialog::showEvent(QShowEvent* e) { if (options_) { @@ -69,4 +79,3 @@ void TranscoderOptionsDialog::accept() { } QDialog::accept(); } - diff --git a/src/transcoder/transcoderoptionsdialog.h b/src/transcoder/transcoderoptionsdialog.h index 4f033f378..5afefa7dc 100644 --- a/src/transcoder/transcoderoptionsdialog.h +++ b/src/transcoder/transcoderoptionsdialog.h @@ -28,20 +28,20 @@ class Ui_TranscoderOptionsDialog; class TranscoderOptionsDialog : public QDialog { Q_OBJECT -public: - TranscoderOptionsDialog(Song::FileType type, QWidget* parent = 0); + public: + TranscoderOptionsDialog(Song::FileType type, QWidget* parent = nullptr); ~TranscoderOptionsDialog(); bool is_valid() const { return options_; } void accept(); -protected: + protected: void showEvent(QShowEvent* e); -private: + private: Ui_TranscoderOptionsDialog* ui_; TranscoderOptionsInterface* options_; }; -#endif // TRANSCODEROPTIONSDIALOG_H +#endif // TRANSCODEROPTIONSDIALOG_H diff --git a/src/transcoder/transcoderoptionsflac.cpp b/src/transcoder/transcoderoptionsflac.cpp index ee73175ed..dc29471a9 100644 --- a/src/transcoder/transcoderoptionsflac.cpp +++ b/src/transcoder/transcoderoptionsflac.cpp @@ -23,15 +23,11 @@ const char* TranscoderOptionsFlac::kSettingsGroup = "Transcoder/flacenc"; TranscoderOptionsFlac::TranscoderOptionsFlac(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsFlac) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsFlac) { ui_->setupUi(this); } -TranscoderOptionsFlac::~TranscoderOptionsFlac() { - delete ui_; -} +TranscoderOptionsFlac::~TranscoderOptionsFlac() { delete ui_; } void TranscoderOptionsFlac::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionsflac.h b/src/transcoder/transcoderoptionsflac.h index ae410327b..b5e416e8b 100644 --- a/src/transcoder/transcoderoptionsflac.h +++ b/src/transcoder/transcoderoptionsflac.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsFlac; class TranscoderOptionsFlac : public TranscoderOptionsInterface { -public: - TranscoderOptionsFlac(QWidget* parent = 0); + public: + TranscoderOptionsFlac(QWidget* parent = nullptr); ~TranscoderOptionsFlac(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsFlac* ui_; }; -#endif // TRANSCODEROPTIONSFLAC_H +#endif // TRANSCODEROPTIONSFLAC_H diff --git a/src/transcoder/transcoderoptionsflac.ui b/src/transcoder/transcoderoptionsflac.ui index 9eaae5cc7..8375ff62f 100644 --- a/src/transcoder/transcoderoptionsflac.ui +++ b/src/transcoder/transcoderoptionsflac.ui @@ -17,7 +17,7 @@ - Quality + Quality diff --git a/src/transcoder/transcoderoptionsinterface.h b/src/transcoder/transcoderoptionsinterface.h index 11d6740fc..db528e750 100644 --- a/src/transcoder/transcoderoptionsinterface.h +++ b/src/transcoder/transcoderoptionsinterface.h @@ -21,7 +21,7 @@ #include class TranscoderOptionsInterface : public QWidget { -public: + public: TranscoderOptionsInterface(QWidget* parent) : QWidget(parent) {} virtual ~TranscoderOptionsInterface() {} @@ -29,4 +29,4 @@ public: virtual void Save() = 0; }; -#endif // TRANSCODEROPTIONSINTERFACE_H +#endif // TRANSCODEROPTIONSINTERFACE_H diff --git a/src/transcoder/transcoderoptionsmp3.cpp b/src/transcoder/transcoderoptionsmp3.cpp index 827405598..07a44202b 100644 --- a/src/transcoder/transcoderoptionsmp3.cpp +++ b/src/transcoder/transcoderoptionsmp3.cpp @@ -23,22 +23,21 @@ const char* TranscoderOptionsMP3::kSettingsGroup = "Transcoder/lamemp3enc"; TranscoderOptionsMP3::TranscoderOptionsMP3(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsMP3) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsMP3) { ui_->setupUi(this); - connect(ui_->quality_slider, SIGNAL(valueChanged(int)), SLOT(QualitySliderChanged(int))); - connect(ui_->quality_spinbox, SIGNAL(valueChanged(double)), SLOT(QualitySpinboxChanged(double))); + connect(ui_->quality_slider, SIGNAL(valueChanged(int)), + SLOT(QualitySliderChanged(int))); + connect(ui_->quality_spinbox, SIGNAL(valueChanged(double)), + SLOT(QualitySpinboxChanged(double))); } -TranscoderOptionsMP3::~TranscoderOptionsMP3() { - delete ui_; -} +TranscoderOptionsMP3::~TranscoderOptionsMP3() { delete ui_; } void TranscoderOptionsMP3::Load() { QSettings s; - s.beginGroup(kSettingsGroup);; + s.beginGroup(kSettingsGroup); + ; if (s.value("target", 1).toInt() == 0) { ui_->target_quality->setChecked(true); @@ -49,7 +48,8 @@ void TranscoderOptionsMP3::Load() { ui_->quality_spinbox->setValue(s.value("quality", 4.0).toFloat()); ui_->bitrate_slider->setValue(s.value("bitrate", 128).toInt()); ui_->cbr->setChecked(s.value("cbr", true).toBool()); - ui_->encoding_engine_quality->setCurrentIndex(s.value("encoding-engine-quality", 1).toInt()); + ui_->encoding_engine_quality->setCurrentIndex( + s.value("encoding-engine-quality", 1).toInt()); ui_->mono->setChecked(s.value("mono", false).toBool()); } @@ -61,7 +61,8 @@ void TranscoderOptionsMP3::Save() { s.setValue("quality", ui_->quality_spinbox->value()); s.setValue("bitrate", ui_->bitrate_slider->value()); s.setValue("cbr", ui_->cbr->isChecked()); - s.setValue("encoding-engine-quality", ui_->encoding_engine_quality->currentIndex()); + s.setValue("encoding-engine-quality", + ui_->encoding_engine_quality->currentIndex()); s.setValue("mono", ui_->mono->isChecked()); } diff --git a/src/transcoder/transcoderoptionsmp3.h b/src/transcoder/transcoderoptionsmp3.h index 161643e48..927da28f8 100644 --- a/src/transcoder/transcoderoptionsmp3.h +++ b/src/transcoder/transcoderoptionsmp3.h @@ -25,21 +25,21 @@ class Ui_TranscoderOptionsMP3; class TranscoderOptionsMP3 : public TranscoderOptionsInterface { Q_OBJECT -public: - TranscoderOptionsMP3(QWidget* parent = 0); + public: + TranscoderOptionsMP3(QWidget* parent = nullptr); ~TranscoderOptionsMP3(); void Load(); void Save(); -private slots: + private slots: void QualitySliderChanged(int value); void QualitySpinboxChanged(double value); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsMP3* ui_; }; -#endif // TRANSCODEROPTIONSMP3_H +#endif // TRANSCODEROPTIONSMP3_H diff --git a/src/transcoder/transcoderoptionsmp3.ui b/src/transcoder/transcoderoptionsmp3.ui index 0933a54fc..a6eb09b5b 100644 --- a/src/transcoder/transcoderoptionsmp3.ui +++ b/src/transcoder/transcoderoptionsmp3.ui @@ -45,7 +45,7 @@ - Quality + Quality diff --git a/src/transcoder/transcoderoptionsopus.cpp b/src/transcoder/transcoderoptionsopus.cpp index d055eabe5..013cae7fc 100644 --- a/src/transcoder/transcoderoptionsopus.cpp +++ b/src/transcoder/transcoderoptionsopus.cpp @@ -21,20 +21,16 @@ #include // TODO: Add more options than only bitrate as soon as gst doesn't crash -// anymore while using the cbr parmameter (like cbr=false) +// anymore while using the cbr parmameter (like cbr=false) const char* TranscoderOptionsOpus::kSettingsGroup = "Transcoder/opusenc"; TranscoderOptionsOpus::TranscoderOptionsOpus(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsOpus) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsOpus) { ui_->setupUi(this); } -TranscoderOptionsOpus::~TranscoderOptionsOpus() { - delete ui_; -} +TranscoderOptionsOpus::~TranscoderOptionsOpus() { delete ui_; } void TranscoderOptionsOpus::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionsopus.h b/src/transcoder/transcoderoptionsopus.h index ee2dd0507..384ffea56 100644 --- a/src/transcoder/transcoderoptionsopus.h +++ b/src/transcoder/transcoderoptionsopus.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsOpus; class TranscoderOptionsOpus : public TranscoderOptionsInterface { -public: - TranscoderOptionsOpus(QWidget* parent = 0); + public: + TranscoderOptionsOpus(QWidget* parent = nullptr); ~TranscoderOptionsOpus(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsOpus* ui_; }; -#endif // TRANSCODEROPTIONSOPUS_H +#endif // TRANSCODEROPTIONSOPUS_H diff --git a/src/transcoder/transcoderoptionsspeex.cpp b/src/transcoder/transcoderoptionsspeex.cpp index 02dd0ab49..dd39af280 100644 --- a/src/transcoder/transcoderoptionsspeex.cpp +++ b/src/transcoder/transcoderoptionsspeex.cpp @@ -23,15 +23,11 @@ const char* TranscoderOptionsSpeex::kSettingsGroup = "Transcoder/speexenc"; TranscoderOptionsSpeex::TranscoderOptionsSpeex(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsSpeex) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsSpeex) { ui_->setupUi(this); } -TranscoderOptionsSpeex::~TranscoderOptionsSpeex() { - delete ui_; -} +TranscoderOptionsSpeex::~TranscoderOptionsSpeex() { delete ui_; } void TranscoderOptionsSpeex::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionsspeex.h b/src/transcoder/transcoderoptionsspeex.h index 40662cbe4..fe0465814 100644 --- a/src/transcoder/transcoderoptionsspeex.h +++ b/src/transcoder/transcoderoptionsspeex.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsSpeex; class TranscoderOptionsSpeex : public TranscoderOptionsInterface { -public: - TranscoderOptionsSpeex(QWidget* parent = 0); + public: + TranscoderOptionsSpeex(QWidget* parent = nullptr); ~TranscoderOptionsSpeex(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsSpeex* ui_; }; -#endif // TRANSCODEROPTIONSSPEEX_H +#endif // TRANSCODEROPTIONSSPEEX_H diff --git a/src/transcoder/transcoderoptionsspeex.ui b/src/transcoder/transcoderoptionsspeex.ui index f66d89ed6..7aedd6134 100644 --- a/src/transcoder/transcoderoptionsspeex.ui +++ b/src/transcoder/transcoderoptionsspeex.ui @@ -17,7 +17,7 @@ - Quality + Quality diff --git a/src/transcoder/transcoderoptionsvorbis.cpp b/src/transcoder/transcoderoptionsvorbis.cpp index 3914ea711..450bbfd2d 100644 --- a/src/transcoder/transcoderoptionsvorbis.cpp +++ b/src/transcoder/transcoderoptionsvorbis.cpp @@ -23,21 +23,17 @@ const char* TranscoderOptionsVorbis::kSettingsGroup = "Transcoder/vorbisenc"; TranscoderOptionsVorbis::TranscoderOptionsVorbis(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsVorbis) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsVorbis) { ui_->setupUi(this); } -TranscoderOptionsVorbis::~TranscoderOptionsVorbis() { - delete ui_; -} +TranscoderOptionsVorbis::~TranscoderOptionsVorbis() { delete ui_; } void TranscoderOptionsVorbis::Load() { QSettings s; s.beginGroup(kSettingsGroup); -#define GET_BITRATE(variable, property) \ +#define GET_BITRATE(variable, property) \ int variable = s.value(property, -1).toInt(); \ variable = variable == -1 ? 0 : variable / 1000 @@ -58,7 +54,7 @@ void TranscoderOptionsVorbis::Save() { s.beginGroup(kSettingsGroup); #define GET_BITRATE(variable, ui_slider) \ - int variable = ui_slider->value(); \ + int variable = ui_slider->value(); \ variable = variable == 0 ? -1 : variable * 1000 GET_BITRATE(bitrate, ui_->bitrate_slider); diff --git a/src/transcoder/transcoderoptionsvorbis.h b/src/transcoder/transcoderoptionsvorbis.h index 62c14d288..d849fd528 100644 --- a/src/transcoder/transcoderoptionsvorbis.h +++ b/src/transcoder/transcoderoptionsvorbis.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsVorbis; class TranscoderOptionsVorbis : public TranscoderOptionsInterface { -public: - TranscoderOptionsVorbis(QWidget* parent = 0); + public: + TranscoderOptionsVorbis(QWidget* parent = nullptr); ~TranscoderOptionsVorbis(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsVorbis* ui_; }; -#endif // TRANSCODEROPTIONSVORBIS_H +#endif // TRANSCODEROPTIONSVORBIS_H diff --git a/src/transcoder/transcoderoptionsvorbis.ui b/src/transcoder/transcoderoptionsvorbis.ui index 809a959e2..65f390acc 100644 --- a/src/transcoder/transcoderoptionsvorbis.ui +++ b/src/transcoder/transcoderoptionsvorbis.ui @@ -17,7 +17,7 @@ - Quality + Quality diff --git a/src/transcoder/transcoderoptionswma.cpp b/src/transcoder/transcoderoptionswma.cpp index 3b24c51a6..db9944953 100644 --- a/src/transcoder/transcoderoptionswma.cpp +++ b/src/transcoder/transcoderoptionswma.cpp @@ -23,15 +23,11 @@ const char* TranscoderOptionsWma::kSettingsGroup = "Transcoder/ffenc_wmav2"; TranscoderOptionsWma::TranscoderOptionsWma(QWidget* parent) - : TranscoderOptionsInterface(parent), - ui_(new Ui_TranscoderOptionsWma) -{ + : TranscoderOptionsInterface(parent), ui_(new Ui_TranscoderOptionsWma) { ui_->setupUi(this); } -TranscoderOptionsWma::~TranscoderOptionsWma() { - delete ui_; -} +TranscoderOptionsWma::~TranscoderOptionsWma() { delete ui_; } void TranscoderOptionsWma::Load() { QSettings s; diff --git a/src/transcoder/transcoderoptionswma.h b/src/transcoder/transcoderoptionswma.h index 8ae4c19fb..2e4d97617 100644 --- a/src/transcoder/transcoderoptionswma.h +++ b/src/transcoder/transcoderoptionswma.h @@ -23,17 +23,17 @@ class Ui_TranscoderOptionsWma; class TranscoderOptionsWma : public TranscoderOptionsInterface { -public: - TranscoderOptionsWma(QWidget* parent = 0); + public: + TranscoderOptionsWma(QWidget* parent = nullptr); ~TranscoderOptionsWma(); void Load(); void Save(); -private: + private: static const char* kSettingsGroup; Ui_TranscoderOptionsWma* ui_; }; -#endif // TRANSCODEROPTIONSWMA_H +#endif // TRANSCODEROPTIONSWMA_H diff --git a/src/transcoder/transcodersettingspage.cpp b/src/transcoder/transcodersettingspage.cpp index 3dd5b597d..5460e60f8 100644 --- a/src/transcoder/transcodersettingspage.cpp +++ b/src/transcoder/transcodersettingspage.cpp @@ -20,16 +20,12 @@ #include "ui/iconloader.h" TranscoderSettingsPage::TranscoderSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_TranscoderSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_TranscoderSettingsPage) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("tools-wizard")); } -TranscoderSettingsPage::~TranscoderSettingsPage() { - delete ui_; -} +TranscoderSettingsPage::~TranscoderSettingsPage() { delete ui_; } void TranscoderSettingsPage::Load() { ui_->transcoding_aac->Load(); diff --git a/src/transcoder/transcodersettingspage.h b/src/transcoder/transcodersettingspage.h index 10d0bfb29..fc2b8b068 100644 --- a/src/transcoder/transcodersettingspage.h +++ b/src/transcoder/transcodersettingspage.h @@ -25,15 +25,15 @@ class Ui_TranscoderSettingsPage; class TranscoderSettingsPage : public SettingsPage { Q_OBJECT -public: + public: TranscoderSettingsPage(SettingsDialog* dialog); ~TranscoderSettingsPage(); void Load(); void Save(); -private: + private: Ui_TranscoderSettingsPage* ui_; }; -#endif // TRANSCODERSETTINGSPAGE_H +#endif // TRANSCODERSETTINGSPAGE_H diff --git a/src/translations/af.po b/src/translations/af.po index 115d61807..82d3afa3d 100644 --- a/src/translations/af.po +++ b/src/translations/af.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Afrikaans (http://www.transifex.com/projects/p/clementine/language/af/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +17,7 @@ msgstr "" "Language: af\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -42,9 +42,9 @@ msgstr "dae" msgid " kbps" msgstr "kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "ms" @@ -57,11 +57,16 @@ msgstr "pte" msgid " seconds" msgstr "sekondes" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "liedjies" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albums" @@ -71,12 +76,12 @@ msgstr "%1 albums" msgid "%1 days" msgstr "%1 dae" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dae terug" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 op %2" @@ -86,48 +91,48 @@ msgstr "%1 op %2" msgid "%1 playlists (%2)" msgstr "%1 afspeellys (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 gekies uit" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 liedjie" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 liedjies" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 liedjies gevind" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 liedjies gevind (%2 word getoon)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 snitte" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 oorgedra" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev module" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 ander luisteraars" @@ -141,18 +146,21 @@ msgstr "%L1 keer afgespeel" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n onsuksesvol" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n voltooi" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n oorblywend" @@ -164,24 +172,24 @@ msgstr "&Lyn teks op" msgid "&Center" msgstr "&Sentreer" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Eie keuse" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Ekstras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Hulp" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Steek %1 weg" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Steek weg..." @@ -189,23 +197,23 @@ msgstr "&Steek weg..." msgid "&Left" msgstr "&Links" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Musiek" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Geen" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Afspeellys" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Maak toe" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Herhaal tipe" @@ -213,23 +221,23 @@ msgstr "&Herhaal tipe" msgid "&Right" msgstr "&Regs" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&Skommel tipe" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Rek kolomme om in venster te pas" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Gereedskap" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(verskillend tussen tale)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...en almal wat bygedra het tot Amarok" @@ -249,14 +257,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dag" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 snit" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -266,7 +270,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 willekeurige snitte" @@ -274,12 +278,6 @@ msgstr "50 willekeurige snitte" msgid "Upgrade to Premium now" msgstr "Gradeer nou op na Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -290,6 +288,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -298,38 +307,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Etikette begin met %, byvoorbeeld: %artist %album %title

\n\n

Indien 'n stuk teks wat 'n etiket bevat deur krulhakies omring word, sal daardie stuk teks weggesteek word as die etiket leeg is.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "'n Grooveshark Anywhere-rekening word benodig." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "'n Spotify Premium-rekening word benodig." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "'n Kliënt kan slegs verbind indien die regte kode ingevoer is." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "'n Slimspeellys is 'n dinamiese lys liedjies uit jou eie versameling. Daar is verskeie soorte slimspeellyste wat verskillende maniere bied om jou musiek te kies." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "'n Liedjie sal ingesluit word in die afspeellys as dit aan hierdie kriteria voldoen." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -349,36 +358,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "Alle glorie aan die HYPNOpadda" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Staak" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Meer oor %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Meer oor Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Meer oor QT..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Rekening details" @@ -390,11 +398,15 @@ msgstr "Rekening details (Premium)" msgid "Action" msgstr "Aksie" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktiveer/Deaktiveer Wii-afstandsbeheer" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Voeg potgooi by" @@ -410,39 +422,39 @@ msgstr "Voeg 'n nuwelyn by as die kennisgewer dit ondersteun" msgid "Add action" msgstr "Voeg aksie by" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Voeg nog 'n stroom by..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Voeg gids by..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Voeg lêer by" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Voeg lêer by..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Voeg lêers by om te transkodeer" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Voeg vouer by" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Voeg vouer by..." @@ -454,11 +466,11 @@ msgstr "Voeg nuwe vouer by..." msgid "Add podcast" msgstr "Voeg potgooi by" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Voeg potgooi by..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Voeg soekterm by" @@ -522,6 +534,10 @@ msgstr "Voeg aantal keer oorgeslaan by" msgid "Add song title tag" msgstr "Voeg liedjienaam-etiket by" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Voeg liedjie se snitnommer as 'n etiket by" @@ -530,22 +546,34 @@ msgstr "Voeg liedjie se snitnommer as 'n etiket by" msgid "Add song year tag" msgstr "Voeg liedjie se jaar by as 'n etiket" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Voeg stroom by..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Voeg toe aan Grooveshark gunstelinge" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Voeg toe aan Grooveshark afspeellys" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Voeg by 'n ander afspeellys by" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Voeg by 'n afspeellys by" @@ -554,6 +582,10 @@ msgstr "Voeg by 'n afspeellys by" msgid "Add to the queue" msgstr "Voeg aan die einde van die tou by" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Voeg wiimotedev-aksie by" @@ -583,15 +615,15 @@ msgstr "Vandag bygevoeg" msgid "Added within three months" msgstr "Afgelope 3 maande bygevoeg" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Liedjies word by My Musiek gevoeg" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Word toegevoeg tot gunstelinge" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Gevorderde groeperings" @@ -599,12 +631,12 @@ msgstr "Gevorderde groeperings" msgid "After " msgstr "Na" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Na kopiëring..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -612,11 +644,11 @@ msgstr "Na kopiëring..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideale hardheid vir alle snitte)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -626,35 +658,36 @@ msgstr "Albumkunstenaar" msgid "Album cover" msgstr "Album omslag" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Album se inligting op jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albums met omslagte" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albums sonder omslagte" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Alle lêers (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Alle glorie aan die Hypnopadda!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Alle albums" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Alle kunstenaars" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Alle lêers (*)" @@ -663,19 +696,19 @@ msgstr "Alle lêers (*)" msgid "All playlists (%1)" msgstr "Alle afspeellyste (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Al die vertalers" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Alle snitte" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -700,30 +733,30 @@ msgstr "Wys altyd die hoofvenster" msgid "Always start playing" msgstr "Begin altyd dadelik speel" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "'n Ekstra uitbreiding word benodig om Spotify in Clementine te gebruik. Wil jy dit nou aflaai en installeer?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "'n Fout het plaasgevind tydens die laai van die iTunes-databasis" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "'n Fout het plaasgevind tydens die skryf van metadata na '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "'n Onbekende fout het voorgekom" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "En:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Kwaai" @@ -732,13 +765,13 @@ msgstr "Kwaai" msgid "Appearance" msgstr "Voorkoms" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Voeg lêers/URLs by die afspeellys by" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Voeg by huidige afspeellys by" @@ -746,52 +779,47 @@ msgstr "Voeg by huidige afspeellys by" msgid "Append to the playlist" msgstr "Voeg by afspeellys by" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Doen kompressie om afkapping te voorkom" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Is jy seker jy wil die \"%1\" opstellingspatroon verwyder?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Is jy seker jy wil hierdie afspeellys verwyder?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Is jy seker jy wil die liedjie se statistieke herstel?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Kunstenaar" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Kunstenaar" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Kunstenaarsradio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Kunstenaarsetikette" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Kunstenaar se voorletters" @@ -799,9 +827,13 @@ msgstr "Kunstenaar se voorletters" msgid "Audio format" msgstr "Oudioformaat" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Aanteken onsuksesvol" @@ -809,7 +841,7 @@ msgstr "Aanteken onsuksesvol" msgid "Author" msgstr "Outeur" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Outeurs" @@ -825,7 +857,7 @@ msgstr "Outomatiese opdatering" msgid "Automatically open single categories in the library tree" msgstr "Maak outomaties kortspeelalbum-kategorië oop in jou versamelingboom" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Beskikbaar" @@ -833,15 +865,15 @@ msgstr "Beskikbaar" msgid "Average bitrate" msgstr "Gemiddelde bistempo" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Gemiddelde beeldgrootte" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC potgooi" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "SPM" @@ -862,7 +894,7 @@ msgstr "Agtergrond prentjie" msgid "Background opacity" msgstr "Agtergrond deurskynendheid" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Databasis word gerugsteun" @@ -870,11 +902,7 @@ msgstr "Databasis word gerugsteun" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Verban" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Balkanaliseerder" @@ -894,18 +922,17 @@ msgstr "Gedrag" msgid "Best" msgstr "Beste" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografie vanaf %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bistempo" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -913,7 +940,12 @@ msgstr "Bistempo" msgid "Bitrate" msgstr "Bistempo" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blokanaliseerder" @@ -929,7 +961,7 @@ msgstr "" msgid "Body" msgstr "Liggaam" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boem!-analiseerder" @@ -943,11 +975,11 @@ msgstr "Boks" msgid "Browse..." msgstr "Gaan soek..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Buffering" @@ -959,43 +991,66 @@ msgstr "Maar hierdie bronne is afgeskakel:" msgid "Buttons" msgstr "Knoppies" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Seinlys ondersteuning" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Kanselleer" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Verander omslag" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Verander lettergrootte" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Verander herhalingsmodus" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Verander kortskakel" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Verander skommel modus" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Verander die taal" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1005,15 +1060,19 @@ msgstr "Verandering in Mono-afspeel instellings sal eers aktief wees by die afsp msgid "Check for new episodes" msgstr "Soek vir nuwe episodes" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Kyk vir nuwer weergawes..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Kies 'n naam vir jou slimspeellys" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Kies outomaties" @@ -1029,11 +1088,11 @@ msgstr "Kies lettertipe..." msgid "Choose from the list" msgstr "Kies uit die lys" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Kies hoe die afspeellys gesorteer word en hoeveel liedjies dit moet bevat." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Kies potgooi aflaaigids" @@ -1042,7 +1101,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Titel" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klassiek" @@ -1050,17 +1109,17 @@ msgstr "Klassiek" msgid "Cleaning up" msgstr "Daar word skoongemaak" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Wis" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Wis afspeellys" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1073,8 +1132,8 @@ msgstr "Clementine Fout" msgid "Clementine Orange" msgstr "Clementine oranje" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine Visualisering" @@ -1096,9 +1155,9 @@ msgstr "Clementine kan jou musiek vanaf Dropbox speel" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine kan musiek speel wat jy op jou Google Drive geplaas het." -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine kan jou musiek vanaf Ubuntu One speel." +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1111,20 +1170,13 @@ msgid "" "an account." msgstr "Clementine kan jou lidmaatskappe sinkroniseer tussen jou rekenaars. Skep 'n rekening hier." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine kan nie enige projectM-visualisasies laai nie. Maak seker jy het Clementine korrek installeer." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine kan nie jou intekening se status aanvra nie aangesien daar probleme met jou verbinding is. Gespeelde snitte sal onthou word en later na Last.fm aangestuur word." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine prentjiekyker" @@ -1136,11 +1188,11 @@ msgstr "Clementine kon nie enige resultate vir hierdie lêer vind nie." msgid "Clementine will find music in:" msgstr "Clementine sal musiek vind in:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Kliek hier om musiek by te voeg" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1150,7 +1202,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Kliek hier om te wissel tussen oorblywende en totale tyd" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1165,19 +1220,19 @@ msgstr "Maak toe" msgid "Close playlist" msgstr "Maak snitlys toe" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Maak visualisasie toe" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Die aflaai sal stop as hierdie venster toegemaak word." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Die soek vir album-omslae sal stop as hierdie venster toegemaak word." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klub" @@ -1185,73 +1240,78 @@ msgstr "Klub" msgid "Colors" msgstr "Kleure" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma geskeide lys van klas:vlak, vlak is 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentaar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Voltooi etikette outomaties" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Voltooi etikette outomaties..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Komponis" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Stel %1 in..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Stel Grooveshark in..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Stel Last.fm in..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Stel Magnatune in..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Stel snelskakels in" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Stel Spotify in..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Stel Subsonic op..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Globale soek instellings..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Stel my versameling in..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Stel potgooie op..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Stel in" @@ -1259,11 +1319,11 @@ msgstr "Stel in" msgid "Connect Wii Remotes using active/deactive action" msgstr "Verbind Wii-afstandbedienings met aktiveer/deaktiveer aksie" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Verbind toestel" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Verbind aan Spotify" @@ -1273,12 +1333,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1294,17 +1358,21 @@ msgstr "Skakel alle musiek om" msgid "Convert any music that the device can't play" msgstr "Skakel alle musiek wat die toestel nie kan speel nie om" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiëer na knipbord" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopiëer na die toestel..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopiëer na my versameling" @@ -1312,156 +1380,152 @@ msgstr "Kopiëer na my versameling" msgid "Copyright" msgstr "Kopiereg" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Kan nie aan Subsonic verbind nie. Kyk op die bediener se URL reg is. Byvoorbeeld: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Kan nie die GStreamer element \"%1\" skep nie - maak seker jy het alle nodige GStreamer uitbreidings installeer" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kan nie 'n multiplekser vir %1 vind nie. Maak seker jy het die korrekte GStreamer uitbreidings installeer." -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Kan nie 'n enkodeerder vir %1 vind nie. Maak seker jy het die korrekte GStreamer uitbreidings installeer." -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Kan nie die last.fm radiostasie laai nie" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Kan nie die uittreelêer %1 oopmaak nie" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Omslagbestuurder" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Omslag van ingeslote beeld" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Omslag outomaties gelaai vanaf %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Omslag per hand onstel" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Geen omslag" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Omslag gestel vanaf %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Omslae vanaf %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Skep 'n nuwe Grooveshark afspeellys" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Pas oorgangsdowing toe wanneer snitte outomaties verander word" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Pas oorgangsdowing toe wanneer snitte per hand verander word" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Af" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1469,7 +1533,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Op" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Na keuse" @@ -1481,54 +1545,50 @@ msgstr "Ander prentjie:" msgid "Custom message settings" msgstr "Eie gekose boodskap" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Eie gekose radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Na keuse..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus lêergids" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dans" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Databasiskorrupsie ontdek. Lees asseblief https://code.google.com/p/clementine-player/wiki/DatabaseCorruption vir instruksies hoe om dit reg te maak." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum geskep" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum verander" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dae" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Standaard" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Verlaag die volume met 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Verlaag die volume met %" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Verlaag die volume" @@ -1536,6 +1596,11 @@ msgstr "Verlaag die volume" msgid "Default background image" msgstr "Standaars agtergrond prentjie" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Standaard instellings" @@ -1544,30 +1609,30 @@ msgstr "Standaard instellings" msgid "Delay between visualizations" msgstr "Wagperiode tussen visualisasies" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Skrap" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Verwyder Grooveshark afspeellys" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Vee afgelaaide data uit" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Skrap lêers" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Skrap van toestel..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Skrap van skyf..." @@ -1575,31 +1640,31 @@ msgstr "Skrap van skyf..." msgid "Delete played episodes" msgstr "Vee afgespeelde episodes uit" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Skrap voorafinstelling" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Skrap slimspeellys" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Skrap die oorspronklike lêers" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Lêers word geskrap" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Verwyder gekose snitte uit die tou" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Verwyder snit uit die tou" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Bestemming" @@ -1608,7 +1673,7 @@ msgstr "Bestemming" msgid "Details..." msgstr "Details..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Toestel" @@ -1620,15 +1685,15 @@ msgstr "Toestelseienskappe" msgid "Device name" msgstr "Toestelsnaam" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Toestelseienskappe..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Toestelle" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1665,12 +1730,17 @@ msgstr "Steek tydsduur weg" msgid "Disable moodbar generation" msgstr "Skakel berekening van die 'moodbar' af" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Steek weg" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Skyf" @@ -1680,15 +1750,15 @@ msgid "Discontinuous transmission" msgstr "Uitsending met onderbrekings" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Vertoon keuses" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Toon skermbeeld" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Gaan my hele versameling weer na" @@ -1700,27 +1770,27 @@ msgstr "Moenie enige musiek omskakel nie" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Moenie herhaal nie" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Moenie onder verskeie kunstenaars wys nie" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Moenie skommel nie" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Moenie stop nie!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Maak 'n skenking" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dubbelkliek om oop te maak" @@ -1728,12 +1798,13 @@ msgstr "Dubbelkliek om oop te maak" msgid "Double clicking a song will..." msgstr "Dubbelkliek op 'n liedjie sal..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Laai %n episodes af" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Laai gids af" @@ -1749,7 +1820,7 @@ msgstr "Laai lidmaatskap af" msgid "Download new episodes automatically" msgstr "Laai nuwe episodes outomaties af" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Aflaai tou" @@ -1757,15 +1828,15 @@ msgstr "Aflaai tou" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Laai hierdie album af" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Laai hierdie album af..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Laai hierdie episode af" @@ -1773,7 +1844,7 @@ msgstr "Laai hierdie episode af" msgid "Download..." msgstr "Laai af..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Besig met aflaai (%1%)..." @@ -1782,23 +1853,23 @@ msgstr "Besig met aflaai (%1%)..." msgid "Downloading Icecast directory" msgstr "Laai icecast gids af" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Laai jamendo katalogus af" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Laai Magnatune katalogus af" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Laai Spotify uitbreiding af" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Laai metadata af" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Sleep om te skuif" @@ -1818,20 +1889,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Tans in dinamiese modus" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dinamiese skommeling" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Verander slimspeellys" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Verander etiket" @@ -1843,16 +1914,16 @@ msgstr "Verander etikette" msgid "Edit track information" msgstr "Verander snit se inligting" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Verander snit se inligting" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Verander snitte se inligting" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Verander..." @@ -1860,6 +1931,10 @@ msgstr "Verander..." msgid "Enable Wii Remote support" msgstr "Skakel Wii-afstansbeheer ondersteuning aan" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Skakel grafiese effenaar aan" @@ -1874,7 +1949,7 @@ msgid "" "displayed in this order." msgstr "Skakel 'n bron hier onder aan om dit in te sluit in die soektog. Resultate sal in hierdie volgorde vertoon word." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Skakel die opteken van geluisterde musiek op Last.fm aan/af" @@ -1902,15 +1977,10 @@ msgstr "Sleutel 'n URL in om af te laai as omslag:" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Kies 'n nuwe naam vir hierdie afspeellys" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Kies 'n kunstenaar of etiket om te begin luister na radio Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1924,7 +1994,7 @@ msgstr "Tik soekterme hier onder in om potgooie te soek in die iTunes winkel" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Tik soekterme hier onder in om potgooie te soek op gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Tik soekterme hier in" @@ -1933,11 +2003,11 @@ msgstr "Tik soekterme hier in" msgid "Enter the URL of an internet radio stream:" msgstr "Tik die URL van 'n internet-radiostroom in:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Voer die gidsnaam in" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Voer hierdie IP-adres in die programetjie in om met Clementine te verbind." @@ -1945,21 +2015,22 @@ msgstr "Voer hierdie IP-adres in die programetjie in om met Clementine te verbin msgid "Entire collection" msgstr "Hele versameling" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Grafiese effenaar" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Ekwivalent aan --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Ekwivalent aan --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Fout" @@ -1967,38 +2038,38 @@ msgstr "Fout" msgid "Error connecting MTP device" msgstr "Fout tydens verbinding aan MTP-toestel" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Fout tydens kopiëring van liedjies" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Fout tydens verwydering van liedjies" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Fout tydens aflaai van die Spotify uitbreiding" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Fout tydens laai van %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Fout tydens laai van di.fm afspeellys" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Fout tydens verwerking van %1:%2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Fout tydens laai van musiek CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Ooit gespeel" @@ -2030,7 +2101,7 @@ msgstr "Elke 6 ure" msgid "Every hour" msgstr "Uurliks" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Behalwe tussen snitte van die selfde album of CUE blad" @@ -2042,7 +2113,7 @@ msgstr "" msgid "Expand" msgstr "Meer..." -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Verval op %1" @@ -2063,36 +2134,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2102,42 +2173,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Doof klank uit as snit gestop word" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Uitdowing" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Duur van uitdowing" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Gids kon nie gehaal word nie" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Kan nie die potgooi gaan haal nie" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Die potgooi kan nie gelaai word nie" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Onsuksesvol met die analisering van die XML vir hierdie RSS voer" @@ -2146,11 +2217,11 @@ msgstr "Onsuksesvol met die analisering van die XML vir hierdie RSS voer" msgid "Fast" msgstr "Vinnig" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Gunstelinge" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Gunsteling snitte" @@ -2166,11 +2237,11 @@ msgstr "Gaan haal outomaties" msgid "Fetch completed" msgstr "Klaar met haal" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Laai die Subsonic-biblioteek" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Fout met haal van omslae" @@ -2178,7 +2249,7 @@ msgstr "Fout met haal van omslae" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Lêeruitsbreiding" @@ -2186,19 +2257,23 @@ msgstr "Lêeruitsbreiding" msgid "File formats" msgstr "Lêer formate" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Lêernaam" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Lêernaam (sonder pad)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Lêergrootte" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2208,7 +2283,7 @@ msgstr "Lêertipe" msgid "Filename" msgstr "Lêernaam" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Lêers" @@ -2216,15 +2291,19 @@ msgstr "Lêers" msgid "Files to transcode" msgstr "Lêers om te transkodeer" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Vind liedjies in jou versameling wat aan hierdie eise voldoen." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Bereken liedjie se vingerafdruk" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Maak klaar" @@ -2232,7 +2311,7 @@ msgstr "Maak klaar" msgid "First level" msgstr "Eerste vlak" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2248,12 +2327,12 @@ msgstr "Vir lisensiëringsredes word 'n aparte uitbreing vir Spotify ondersteuni msgid "Force mono encoding" msgstr "Dwing mono-enkodering" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Vergeet van toestel" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2268,7 +2347,7 @@ msgstr "Deur van 'n toestel te vergeet sal dit uit hierdie lys verwyder word. Cl #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2296,31 +2375,23 @@ msgstr "Beeldduur" msgid "Frames per buffer" msgstr "Beelde per buffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Vriende" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Bevrore" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Volle bas" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Volle bas + hoëtoon" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Volle hoëtoon" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer oudioenjin" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Algemeen" @@ -2328,30 +2399,30 @@ msgstr "Algemeen" msgid "General settings" msgstr "Algemene instellings" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Verkry die URL om hierdie Grooveshark afspeellys te deel" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Verkry die URL om hierdie Grooveshark liedjie te deel" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Grooveshark populêre liedjies word verkry" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Kanale word verkry" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Strome word verkry" @@ -2363,11 +2434,11 @@ msgstr "Gee dit 'n naam:" msgid "Go" msgstr "Gaan" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Gaan na volgende afspeellys oortjie" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Gaan na vorige afspeellys oortjie" @@ -2375,7 +2446,7 @@ msgstr "Gaan na vorige afspeellys oortjie" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2385,7 +2456,7 @@ msgstr "%1 van %2 omslae is verky (%3 onsuksesvol)" msgid "Grey out non existent songs in my playlists" msgstr "Maak onbestaande liedjies in my afspeellys grys" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2393,15 +2464,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark aantekenfout" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark afspeellys URL" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark liedjie se URL" @@ -2409,44 +2480,44 @@ msgstr "Grooveshark liedjie se URL" msgid "Group Library by..." msgstr "Groeppeer versameling volgens..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Groeppeer volgens" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Groeppeer volgens Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Groeppeer volgens Kunstenaar" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Groeppeer volgens Kunstenaar/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Groeppeer volgens Kunstenaar/Jaar - Album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Groeppeer volgens Genre/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Groeppeer volgens Genre/Kunstenaar/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML bladsy bevat nie enige RSS voer nie" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2455,7 +2526,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP instaanbediener" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Gelukkig" @@ -2471,25 +2542,25 @@ msgstr "Hardeware inligting is slegs beskikbaar as die toestel verbind is" msgid "High" msgstr "Hoog" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Hoog (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Hoog (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Ure" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnopadda" @@ -2501,15 +2572,15 @@ msgstr "Ek het nie 'n Magnatune rekening nie" msgid "Icon" msgstr "Ikoon" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikone bo" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Liedjies word geïdentifiseer" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2519,24 +2590,24 @@ msgstr "As jy voortgaan sal hierdie toestel stadig wees en liedjies wat daarheen msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "As jy die URL van 'n potgooi ken, tik dit hier onder in en druk dan op Gaan." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignoreer \"The\" in kunstenaars se name" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Beelde (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Beelde (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Oor %1 dae" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Oor %1 weke" @@ -2547,7 +2618,7 @@ msgid "" "time a song finishes." msgstr "In dinamiese modus sal nuwe snitte gekies en bygevoeg word by die afspeellys elke keer as 'n liedjie klaarmaak." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Posbus" @@ -2559,36 +2630,36 @@ msgstr "Sluit omslag in die kennisgewing in" msgid "Include all songs" msgstr "Sluit alle liedjies in" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Verhoog die volume met 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Verhoog die volume met %" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Verhoog die volume" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "%1 word geïndeks" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Inligting" @@ -2596,55 +2667,55 @@ msgstr "Inligting" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Voeg in..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Geïnstalleer" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Integriteitstoets" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Insternet verskaffers" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Ongeldige API sleutel" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Ongeldige formaat" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Ongeldige metode" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Ongeldige parameters" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Ongeldige bron gespesifiseer" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Ongeldige diens" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Ongeldige sessiesleutel" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Ongeldige gebruikersnaam en/of wagwoord" @@ -2652,42 +2723,42 @@ msgstr "Ongeldige gebruikersnaam en/of wagwoord" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Mees geluisterde Jamendo snitte" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo top snitte" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo se top snitte vir die maand" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo se top snitte vir die week" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo databasis" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Spring na die snit wat tans speel" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Hou knoppies vir %1 sekonde vas" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Hou knoppies vir %1 sekondes vas" @@ -2696,23 +2767,24 @@ msgstr "Hou knoppies vir %1 sekondes vas" msgid "Keep running in the background when the window is closed" msgstr "Hou aan uitvoer in die agtergrond al word die venster gesluit" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Hou die oorspronklike lêers" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Katjies" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Taal" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Oorfone" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Groot saal" @@ -2720,58 +2792,24 @@ msgstr "Groot saal" msgid "Large album cover" msgstr "Groot album omslag" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Groot kantlyn-kieslys" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Laaste afgespeel" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm eie gekose radio: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm versameling - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm radiomengsel - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm buurradio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm radiostasie - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm kunstenaars soortgelyke aan %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm etiket radio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm is tans besig. Probeer asseblief later weer." @@ -2779,11 +2817,11 @@ msgstr "Last.fm is tans besig. Probeer asseblief later weer." msgid "Last.fm password" msgstr "Last.fm wagwoord" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm tellings" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm etikette" @@ -2791,28 +2829,24 @@ msgstr "Last.fm etikette" msgid "Last.fm username" msgstr "Last.fm gebruikersnaam" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Mins gunsteling snitte" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Laat leeg vir standaardwaarde. Voorbeelde: \"/dev/dsp\", \"front\", ens." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Lengte" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Versameling" @@ -2820,24 +2854,24 @@ msgstr "Versameling" msgid "Library advanced grouping" msgstr "Gevorderde groeppering van versameling" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Versameling hernagaan kennisgewing" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Soek deur my versameling" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limiete" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Luister na Grooveshark liedjies soortgelyk aan wat jy al voorheen geluister het" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Regstreeks" @@ -2849,15 +2883,15 @@ msgstr "Laai" msgid "Load cover from URL" msgstr "Verkry omslag van URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Verkry omslag van URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Laai omslag vanaf skyf" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Verkry omslag van skyf..." @@ -2865,84 +2899,89 @@ msgstr "Verkry omslag van skyf..." msgid "Load playlist" msgstr "Laai afspeellys" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Laai afspeellys..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm radio word gelaai" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "MTP toestel word gelaai" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod databasis word gelaai" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Slimspeellys word gelaai" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Liedjies word gelaai" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Stroom word gelaai" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Snitte word gelaai" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Snitinligting word gelaai" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Besig om te laai..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Laai lêers/URLs en vervang huidige afspeellys" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Teken aan" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Aanteken onsuksesvol" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Langtermyn voorspellingsmodel (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Luister graag" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Laag (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Laag (256x256)" @@ -2954,12 +2993,17 @@ msgstr "Lae kompleksitietsprofiel (LC)" msgid "Lyrics" msgstr "Lirieke" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Lirieke vanaf %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2971,15 +3015,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2987,7 +3031,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune aflaai" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Klaar afgelaai vanaf Magnatune" @@ -2995,15 +3039,20 @@ msgstr "Klaar afgelaai vanaf Magnatune" msgid "Main profile (MAIN)" msgstr "Hoofprofiel (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Maak dit so!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Maak afspeellys aflyn beskikbaar" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Misvormde antwoord" @@ -3016,15 +3065,15 @@ msgstr "Stel instaanbediener per hand in" msgid "Manually" msgstr "Handmatig" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Vervaardiger" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Merk as geluister" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Merk as nuut" @@ -3036,17 +3085,21 @@ msgstr "Voldoen aan alle soekterme (AND)" msgid "Match one or more search terms (OR)" msgstr "Voldoen aan een of meer soekterme (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maksimum bistempo" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Medium (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Medium (512x512)" @@ -3058,11 +3111,15 @@ msgstr "Lidmaatskapstipe" msgid "Minimum bitrate" msgstr "Minimum bistempo" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "projectM voorinstellings word vermis" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3070,20 +3127,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Hou my versameling dop vir veranderings" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Speel in Mono af" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Maande" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Stemming" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Stemmingsbalk styl" @@ -3091,15 +3148,19 @@ msgstr "Stemmingsbalk styl" msgid "Moodbars" msgstr "Stemmingsbalk" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Meeste gespeel" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Monteringsadres" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Monteringsadresse" @@ -3108,7 +3169,7 @@ msgstr "Monteringsadresse" msgid "Move down" msgstr "Skuid af" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Skuif na my versameling..." @@ -3117,7 +3178,7 @@ msgstr "Skuif na my versameling..." msgid "Move up" msgstr "Skuid op" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musiek" @@ -3125,56 +3186,32 @@ msgstr "Musiek" msgid "Music Library" msgstr "Musiekversameling" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Maak stil" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "My Last.fm versameling" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "My Last.fm radio mengsel" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "My Last.fm buurt" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "My Last.fm aanbevole radio" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "My radio mengsel" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "My Musiek" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "My buurt" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "My radiostasie" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Aanbevelings" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Naam" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Benamingsopsies" @@ -3182,23 +3219,19 @@ msgstr "Benamingsopsies" msgid "Narrow band (NB)" msgstr "Nouband (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Bure" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Instaanbediener" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Netwerk-afstandbeheer" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nooit" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nooit deurgespeel" @@ -3207,21 +3240,21 @@ msgstr "Nooit deurgespeel" msgid "Never start playing" msgstr "Nooit begin afspeel" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nuwe gids" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nuwe afspeellys" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nuwe slimspeellys" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nuwe liedjies" @@ -3229,24 +3262,24 @@ msgstr "Nuwe liedjies" msgid "New tracks will be added automatically." msgstr "Nuwe snitte sal outomaties toegevoeg word." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Nuutste snitte" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Volgende" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Volgende snit" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Volgende week" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Geen analiseerder" @@ -3254,7 +3287,7 @@ msgstr "Geen analiseerder" msgid "No background image" msgstr "Geen agtergrond prentjie" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3262,7 +3295,7 @@ msgstr "" msgid "No long blocks" msgstr "Geen lang blokke" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Geen gevind. Vee soekveld uit om hele afspeellys te toon." @@ -3276,11 +3309,11 @@ msgstr "Geen kort blokke" msgid "None" msgstr "Geen" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Geen van die gekose liedjies is geskik om na die toestel te kopiëer nie." -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normaal" @@ -3288,43 +3321,47 @@ msgstr "Normaal" msgid "Normal block type" msgstr "Normale blok tipe" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Onbeskikbaar in slimspeellyste" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nie verbind" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nie genoeg inhoud" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nie genoeg ondersteuners nie" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nie genoeg lidmate nie" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nie genoeg bure nie" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Nie geïnstalleer" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Nie aangeteken nie" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Nie gemonteer - dubbelkliek om te monteer" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Kennisgewing tipe" @@ -3337,36 +3374,41 @@ msgstr "Kennisgewings" msgid "Now Playing" msgstr "Aan die speel" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Skermbeeld voorskou" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3374,11 +3416,11 @@ msgid "" "192.168.x.x" msgstr "Laat slegs verbindings vanaf die volgende adresreekse toe:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Toon slegs die eerste" @@ -3386,23 +3428,23 @@ msgstr "Toon slegs die eerste" msgid "Opacity" msgstr "Ondeursigtigheid" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Maak %1 in webblaaier oop" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Maak &oudio CD oop..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Maak OPML lêer oop" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Maak OPML lêer oop..." @@ -3410,30 +3452,35 @@ msgstr "Maak OPML lêer oop..." msgid "Open device" msgstr "Open device" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Lêer..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Maak oop in Google Drive." -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Maak in nuwe afspeellys oop" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Maak oop..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Aksie gestop" @@ -3453,23 +3500,23 @@ msgstr "Keuses..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Sorteer Lêers" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Sorteer Lêers..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Lêers word gesorteer" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Oorspronklike etikette" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Ander keuses" @@ -3477,7 +3524,7 @@ msgstr "Ander keuses" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3485,15 +3532,11 @@ msgstr "" msgid "Output options" msgstr "Uittree keuses" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Oorskryf bestaande lêers" @@ -3505,15 +3548,15 @@ msgstr "" msgid "Owner" msgstr "Eienaar" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Verwerk Jamendo katalogus" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Partytjie" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3522,20 +3565,20 @@ msgstr "Partytjie" msgid "Password" msgstr "Wagwoord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pause" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Afspeel is gepauseer" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Gepauseerd" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3544,34 +3587,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Gewone sykieslys" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Speel" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Speel kunstenaar of etiket" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Speel kunstenaar radio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Afspeeltelling" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Speel ander radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Speel indien gepauseerd, pauseer indien speel" @@ -3580,45 +3611,42 @@ msgstr "Speel indien gepauseerd, pauseer indien speel" msgid "Play if there is nothing already playing" msgstr "Speel as daar niks anders tans speel nie" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Speel etiket radio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Speel die de snit in die afspeellys" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Speel/Pause" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Afspeel" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Afspeler keuses" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Afspeellys" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Afspeellys deurgewerk" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Afspeellys keuses" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Afspeellys tipe" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Afspeellys" @@ -3630,23 +3658,23 @@ msgstr "Kies jou webblaaier en kom dan terug na Clementine." msgid "Plugin status:" msgstr "Uitbreiding toestand:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Potgooie" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Populêre liedjies" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Populêre liedjies van die maand" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Populêre liedjies van vandag" @@ -3655,22 +3683,23 @@ msgid "Popup duration" msgstr "Duur van opspringkennisgewing" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Poort" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Voorversterker" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Instellings" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Instellings..." @@ -3706,7 +3735,7 @@ msgstr "Druk 'n sleutelsamestelling om te gebruik vir" msgid "Press a key" msgstr "Druk 'n knoppie" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Druk 'n sleutelsametelling om te gebruik vir %1..." @@ -3717,20 +3746,20 @@ msgstr "Mooi skermbeeld keuses" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Voorskou" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Vorige" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Vorige snit" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Toon weergawe inligting" @@ -3738,21 +3767,25 @@ msgstr "Toon weergawe inligting" msgid "Profile" msgstr "Profiel" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Vordering" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Druk 'n knoppie op die Wii-afstandsbeheer" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Skommel die liedjies" @@ -3760,85 +3793,95 @@ msgstr "Skommel die liedjies" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kwaliteit" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Toestel word ondervra..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Tou bestuurder" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Plaas geselekteerde snitte in die tou" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Plaas snit in die tou" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (selfde hardheid vir alle snitte)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio's" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Rëen" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Willekeurige visualisasie" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Gee die huidige liedjie 0 sterre" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Gee die huidige liedjie 1 ster" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Gee die huidige liedjie 2 sterre" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Gee die huidige liedjie 3 sterre" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Gee die huidige liedjie 4 sterre" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Gee die huidige liedjie 5 sterre" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Aantal sterre" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Wil jy rêrig opgee?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Verfris" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Verfris katalogus" @@ -3846,19 +3889,15 @@ msgstr "Verfris katalogus" msgid "Refresh channels" msgstr "Verfris kanale" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Verfris lys van vriende" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Verfris lys van stasies" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Verfris strome" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3870,8 +3909,8 @@ msgstr "Onthou die Wii-afstandsbeheer se swaai" msgid "Remember from last time" msgstr "Herinner vorige keer s'n" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Verwyder" @@ -3879,7 +3918,7 @@ msgstr "Verwyder" msgid "Remove action" msgstr "Verwyder aksie" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Verwyder duplikate vanuit die afspeellys" @@ -3887,73 +3926,77 @@ msgstr "Verwyder duplikate vanuit die afspeellys" msgid "Remove folder" msgstr "Verwyder vouer" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Verwyder vanuit My Musiek" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Verwyder van gunstelinge" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Verwyder vanuit afspeellys" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Liedjies word uit My Musiek verwyder" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Liedjies word uit gunstelinge verwyder" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Herbenoem \"%1\" afspeellys" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Herbenoem Grooveshark afspeellys" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Herbenoem afspeellys" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Herbenoem afspeellys..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Hernommer snitte in hierdie volgorde..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Herhaal" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Herhaal album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Herhaal afspeellys" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Herhaal snit" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Vervang huidige afspeellys" @@ -3962,15 +4005,15 @@ msgstr "Vervang huidige afspeellys" msgid "Replace the playlist" msgstr "Vervang die afspeellys" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Vervang spasies met onderstrepe" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Afspeel wins" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3978,24 +4021,24 @@ msgstr "" msgid "Repopulate" msgstr "Verfris" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Herstel" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Herstel afspeeltelling" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Beperk tot ASCII karakters" @@ -4003,15 +4046,15 @@ msgstr "Beperk tot ASCII karakters" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Grooveshark se My Musiek-liedjies word gehaal" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Grooveshark gunsteling liedjies word verkry" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Grooveshark afspeellys word verkry" @@ -4031,11 +4074,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4047,25 +4090,25 @@ msgstr "Laat loop" msgid "SOCKS proxy" msgstr "SOCKS instaanbediener" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Veilige verwydering van toestel" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Verwyder toestel veilig na kopiëring" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Monstertempo" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Monstertempo" @@ -4073,27 +4116,33 @@ msgstr "Monstertempo" msgid "Save .mood files in your music library" msgstr "Stoor .mood-lêers in jou musiekversameling" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Stoor albumomslag" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Stoor omslag op skyf" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Stoor beeld" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Stoor afspeellys" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Stoor afspeellys" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Stoor voorinstelling" @@ -4109,11 +4158,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "Stoor hierdie stroom in die internet oortjie" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Snitte word gestoor" @@ -4125,7 +4174,7 @@ msgstr "Skaleerbare monstertempo profiel (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Telling" @@ -4133,34 +4182,38 @@ msgstr "Telling" msgid "Scrobble tracks that I listen to" msgstr "Noteer snitte wat ek na luister op" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Soek" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Soek deur Icecast stasies" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Soek deur Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Soek deur Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Soek deur Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Soek vir album omslae..." @@ -4180,21 +4233,21 @@ msgstr "Soek deur iTunes" msgid "Search mode" msgstr "Soek modus" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Soek instellings" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Soekresultate" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Soekterme" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Grooveshark word deursoek" @@ -4202,27 +4255,27 @@ msgstr "Grooveshark word deursoek" msgid "Second level" msgstr "Tweede vlak" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Streef terugwaarts" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Streef vorentoe" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Streef 'n relatiewe hoeveelheid deur die huidige snit" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Streef na 'n spesifieke posisie in die huidige snit" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Kies Almal" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Kies geen" @@ -4230,7 +4283,7 @@ msgstr "Kies geen" msgid "Select background color:" msgstr "Kies agtergrond kleur:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Kies 'n agtergrond prentjie" @@ -4246,7 +4299,7 @@ msgstr "Kies voorgrond kleur:" msgid "Select visualizations" msgstr "Kies visualisasie" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Kies visualisasie..." @@ -4254,7 +4307,7 @@ msgstr "Kies visualisasie..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Reeksnommer" @@ -4266,51 +4319,51 @@ msgstr "URL van Bediener" msgid "Server details" msgstr "Bedienerbesonderhede" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Diens aflyn" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Stel %1 na \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Stel die volume na persent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Stel waarde vir alle geselekteerde snitte" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Kortskakel" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Kortskakel vir %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Kortskakel vir %1 bestaan reeds" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Wys" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Wys skermbeeld" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Maak die huidige snit gloei" @@ -4338,15 +4391,15 @@ msgstr "Wys 'n opwipkennisgewing vanaf die stelselbalk" msgid "Show a pretty OSD" msgstr "Wys 'n mooi skermbeeld" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Wys bo toestandsbalk" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Wys alle liedjies" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Wys alle liedjies" @@ -4358,32 +4411,36 @@ msgstr "Wys omslae in die versameling" msgid "Show dividers" msgstr "Wys verdelers" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Wys volgrootte..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Wys in lêerblaaier..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Wys tussen verkeie kunstenaars" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Wys stemmingsbalk" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Wys slegs duplikate" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Wys slegs sonder etikette" @@ -4392,8 +4449,8 @@ msgid "Show search suggestions" msgstr "Wys aanbevole soektogte" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Wys die \"hou van\" en \"verbied\" knoppies" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4407,27 +4464,27 @@ msgstr "Wys in stelselbalk" msgid "Show which sources are enabled and disabled" msgstr "Wys watter bronne is aan- en afgeskakel" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Wys/Steek weg" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Skommel" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Skommel albums" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Skommel alles" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Skommel speellys" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Skommel snitte in hierdie album" @@ -4443,7 +4500,7 @@ msgstr "Teken uit" msgid "Signing in..." msgstr "Aan die aanteken..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Soortgelyke kunstenaars" @@ -4455,43 +4512,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Spring terugwaarts in afspeellys" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Aantal keer oorgeslaan" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Spring voorentoe in afspeellys" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Klein omslag" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Klein kantbalk" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Slimspeellys" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Slimspeellyste" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Sag" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Sagte Rock" @@ -4499,11 +4564,11 @@ msgstr "Sagte Rock" msgid "Song Information" msgstr "Liedjie Inligting" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Liedjie" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4523,15 +4588,23 @@ msgstr "Sorteer volgens genre (populariteit)" msgid "Sort by station name" msgstr "Sorteer volgens stasienaam" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Sorteer liedjies volgens" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sortering" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Bron" @@ -4547,7 +4620,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify aantekenfout" @@ -4555,7 +4628,7 @@ msgstr "Spotify aantekenfout" msgid "Spotify plugin" msgstr "Spotify uitbreiding" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify uitbreiding is nie geïnstalleer nie" @@ -4563,77 +4636,77 @@ msgstr "Spotify uitbreiding is nie geïnstalleer nie" msgid "Standard" msgstr "Standaard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Gegradeer" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Begin die huidige afspeellys speel" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Begin transkodering" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Begin iets bo in die soekblokkie te tik om resultate hier te sien" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 word begin" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "In aanvang..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stasies" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stop" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Stop na" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Stop na hierdie snit" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Hou op met afspeel" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Hou op afspeel na die huidige snit" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Afspeel is gestop" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stroom" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4643,7 +4716,7 @@ msgstr "" msgid "Streaming membership" msgstr "Stroomlidmaatskap" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Ingetekende afspeellyste" @@ -4651,7 +4724,7 @@ msgstr "Ingetekende afspeellyste" msgid "Subscribers" msgstr "Teken in" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4659,12 +4732,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Sukses!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 suksesvol geskryf" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Voorgestelde etikette" @@ -4673,13 +4746,13 @@ msgstr "Voorgestelde etikette" msgid "Summary" msgstr "Opsomming" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Siper hoog (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super hoog (2048x2048)" @@ -4691,43 +4764,35 @@ msgstr "Ondersteunde formate" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Spotify inbox word gesinkroniseer" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Spotify afspeellys word gesinkroniseer" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Gegradeerde Spotify snitte word gesinkroniseer" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Standaard kleure" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Oortjies bo" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Etiket" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Etiketsoeker" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Etiketteer radio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Teiken bistempo" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4735,11 +4800,11 @@ msgstr "Techno" msgid "Text options" msgstr "Teksinstellings" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Dank aan" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Die \"%1\" bevel kan nie begin word nie." @@ -4748,17 +4813,12 @@ msgstr "Die \"%1\" bevel kan nie begin word nie." msgid "The album cover of the currently playing song" msgstr "Die album omslag van die huidige liedjie" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Die gids %1 is nie geldig nie" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Die afspeellys '%1' was leeg of kan nie gelaai word nie." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Die tweede waarde moet groter wees as die eerste!" @@ -4766,40 +4826,40 @@ msgstr "Die tweede waarde moet groter wees as die eerste!" msgid "The site you requested does not exist!" msgstr "Die blad wat jy aangevra het bestaan nie!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Die blad wat hy aangevra het is nie 'n beeld nie!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Die weergawe van Clementine waarheen jy sopas opgradeer het benodig 'n volle versameling herindeksering weens hierdie nuwe funksies:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Daar is ander liedjies in hierdie album" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Fout tydens kommunikasie met gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Daar was 'n probleem met die haal van metadata vanaf Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Fout tydens analisering van iTunes winkel se antwoord" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4811,13 +4871,13 @@ msgid "" "deleted:" msgstr "Daar was 'n probleem met die verwydering van sommige liedjies. Die volgende lêers kan nie verwyder word nie:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Hierdie lêers sal vanaf die toestel verwyder word. Is jy seker?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4837,13 +4897,13 @@ msgstr "Hierdie instellings word gebruik vir die transkodeer van musiek en ook w msgid "Third level" msgstr "Derde vlak" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Hierdie aksie skep 'n databasis wat so groot soos 150MB mag wees.\nIs jy seker jy wil voortgaan?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Hierdie album is nie tans in die aangevraagde formaat beskikbaar nie." @@ -4857,11 +4917,11 @@ msgstr "Hierdie toestel moet eers gekoppel en oopgemaak word voordat Clememntine msgid "This device supports the following file formats:" msgstr "Die toestel ondersteun die volgende lêer formate:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Hierdie toestel sal nie goed werk nie" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Hierdie is 'n MTP toestel, maar jy het Clementine sonder libmtp ondersteuning gekompileer." @@ -4870,7 +4930,7 @@ msgstr "Hierdie is 'n MTP toestel, maar jy het Clementine sonder libmtp onderste msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Hierdie is 'n iPos, maar jy het Clementine sonder libgpod ondersteuning gekompileer." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4880,33 +4940,33 @@ msgstr "Dit is die eerste keer dat jy hierdie toestel verbind. Clementine gaan d msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Hierdie stroom is slegs vir betalende lede." -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Hierdie tipe toestel word nie ondersteun nie: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Om Grooveshark radio te begin moet jy eers na 'n paar ander Grooveshark liedjies luister" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Vandag" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Skakel mooi skermbeeld aan/af" @@ -4914,27 +4974,27 @@ msgstr "Skakel mooi skermbeeld aan/af" msgid "Toggle fullscreen" msgstr "Skakel volskerm aan/af" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Skakel tou-status aan/af" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Skakel log van geluisterde musiek aanlyn aan/af" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Skakel mooi skermbeeld aan/af" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Môre" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Te veel aansture" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Top snitte" @@ -4942,21 +5002,25 @@ msgstr "Top snitte" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Totale aantal grepe oorgedra" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Totale aantal versoeke oor die netwerk gemaak" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Snit" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transkodeer musiek" @@ -4968,7 +5032,7 @@ msgstr "Transkodeerder log" msgid "Transcoding" msgstr "Besig met transkodering" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Lêer %1 word met %2 prosesse getranskodeer" @@ -4977,11 +5041,11 @@ msgstr "Lêer %1 word met %2 prosesse getranskodeer" msgid "Transcoding options" msgstr "Transkodering instellings" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4989,72 +5053,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Skakel af" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra wyeband (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Kan nie %1 aflaai nie (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Onbekend" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Onbekende inhoudtipe" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Onbekende fout" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Verwyder omslag" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Teken uit" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Komende opvoerings" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Dateer Grooveshark afspeellys op" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Dateer alle potgooie op" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Gaan versameling na vir veranderinge" @@ -5062,7 +5126,7 @@ msgstr "Gaan versameling na vir veranderinge" msgid "Update the library when Clementine starts" msgstr "Gaan die versameling vir veranderings na elke keer as Clementine oopgemaak word" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Dateer hierdie potgooi op" @@ -5070,21 +5134,21 @@ msgstr "Dateer hierdie potgooi op" msgid "Updating" msgstr "Dateer op..." -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "%1 word opgedateer" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "%1% word opgedateer..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Jou versameling word nagegaan" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Gebruik" @@ -5092,11 +5156,11 @@ msgstr "Gebruik" msgid "Use Album Artist tag when available" msgstr "Gebruik Albumkunstenaar etiket as dit beskikbaar is" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gebruik Gnome se kortskakel knoppies" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Gebruik afspeel-aanwins metadata as dit beskikbaar is" @@ -5116,7 +5180,7 @@ msgstr "Gebruik 'n ander kleurskema" msgid "Use a custom message for notifications" msgstr "Gebruik 'n eie gekose boodskap vir kennisgewings" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5156,20 +5220,20 @@ msgstr "Gebruik die stelsel se instaanbediener instellings" msgid "Use volume normalisation" msgstr "Gebruik volume normalisering" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Reeds gebruik" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Gebruiker %1 het nie Grooveshark Anywhere lidmaatskap nie" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Gebruikerskoppelvlak" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5191,12 +5255,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Wisselende bistempo" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Verskeie kunstenaars" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Weergawe %1" @@ -5209,7 +5273,7 @@ msgstr "Bekyk" msgid "Visualization mode" msgstr "Visualisasie modus" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualisasies" @@ -5217,11 +5281,15 @@ msgstr "Visualisasies" msgid "Visualizations Settings" msgstr "Visualisasie instellings" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Stem deteksie" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5239,11 +5307,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5251,7 +5319,7 @@ msgstr "Wav" msgid "Website" msgstr "Webtuiste" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Weke" @@ -5277,32 +5345,32 @@ msgstr "Probeer ook..." msgid "Wide band (WB)" msgstr "Wyeband (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii afstandsbeheer %1: aktief" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii afstandsbeheer %1: verbind" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii afstandsbeheer %1: battery krities laag (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii afstandsbeheer %1: deaktiveer" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii afstandsbeheer %1: ontkoppel" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii afstandsbeheer %1: lae battery (%2%)" @@ -5323,7 +5391,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media oudio" @@ -5331,25 +5399,25 @@ msgstr "Windows Media oudio" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Wil jy die ander liedjies in hierdie album ook na Verskeie Kunstenaars skuif?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Wil jy alles van voor af deursoek?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5361,11 +5429,11 @@ msgstr "Jaar" msgid "Year - Album" msgstr "Jaar -Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Jare" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Gister" @@ -5373,13 +5441,13 @@ msgstr "Gister" msgid "You are about to download the following albums" msgstr "Jy is op die punt om die volgende albums af te laai" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5389,12 +5457,12 @@ msgstr "" msgid "You are not signed in." msgstr "Jy is nie aangeteken nie." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Jy is aangeteken as %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Jy is aangeteken." @@ -5402,13 +5470,13 @@ msgstr "Jy is aangeteken." msgid "You can change the way the songs in the library are organised." msgstr "Jy kan die manier waarop die liedjies in jou versameling georganiseer word verander." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Jy kan gratis sonder lidmaatskap luister, maar Premium lede kan hoër kwaliteit strome sonder advertensies kry." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5418,13 +5486,6 @@ msgstr "Jy kan gratis sonder lidmaatskap na Magnatune liedjies luister. Betalend msgid "You can listen to background streams at the same time as other music." msgstr "Jy kan na agtergrond strome luister terwyl ander musiek speel." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Jy kan gratis jou belusiterde liedjies log, maar slegs betalende lede kan Last.fm radio vanuit Clementine luister." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Jy kan 'n Wii-afstandsbeheer gebruik om Clementine te beheer. Hierdie bladsy op die Clementine wiki verduidelik in meer detail hoe.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Jy het nie Grooveshark Anywhere lidmaatskap nie." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Jy het nie Spotify Premium lidmaatskap nie." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Jy het nie 'n aktiewe lidmaatskap nie" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Jy is uitgeteken vanuit Spotify. Tik weer jou wagwoord in in die Instellings skerm." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Jy is uitgeteken uit Spotify. Tik asseblief weer jou wagwoord in." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Jy hou van hierdie snit." -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5469,17 +5544,11 @@ msgstr "Jy moet toegang vir hulp toestelle aanskakel in jou stelsel se instellin msgid "You will need to restart Clementine if you change the language." msgstr "Jy moet Clementine van voor af oopmaak om die taal te verander." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Jy sal nie Last.fm radio kan luister nie aangesien jy nie lidmaatskap het nie." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Jou IP-adres:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Jou Last.fm aanteken details was verkeerd" @@ -5487,42 +5556,43 @@ msgstr "Jou Last.fm aanteken details was verkeerd" msgid "Your Magnatune credentials were incorrect" msgstr "Jou Magnatune aanteken details was verkeerd" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Jou versameling is leeg!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Jou radiostasies" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Jou aanlyn logs: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Jou rekenaar het nie OpenGL ondersteuning nie. Visualiserings is dus onbeskikbaar." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Jou gebruikersnaam of wagwoord was verkeerd." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "voeg %n liedjies by" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "na" @@ -5542,19 +5612,19 @@ msgstr "outomaties" msgid "before" msgstr "voor" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "tussen" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "grootste eerste" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "bevat" @@ -5564,20 +5634,20 @@ msgstr "bevat" msgid "disabled" msgstr "skakel af" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "skyf %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "bevat nie" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "eindig met" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "gelyk aan" @@ -5585,11 +5655,11 @@ msgstr "gelyk aan" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net gids" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "groter as" @@ -5597,54 +5667,55 @@ msgstr "groter as" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "in die laaste" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "minder as" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "langste eerste" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "skuif %n liedjies" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "nuutste eerste" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "nie gelyk aan" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "nie in die laaste" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "nie volgens" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "oudste eerste" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "volgens" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "instellings" @@ -5656,36 +5727,37 @@ msgstr "" msgid "press enter" msgstr "druk Enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "verwyder %n liedjies" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "korste eerste" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "meng liedjies" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "kleinste eerste" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "sorteer liedjies" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "begin met" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "stop" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "snit %1" diff --git a/src/translations/ar.po b/src/translations/ar.po index a499fc2af..bf5bbc8e9 100644 --- a/src/translations/ar.po +++ b/src/translations/ar.po @@ -5,6 +5,7 @@ # Translators: # ahameed , 2012 # FIRST AUTHOR , 2010 +# mankind , 2014 # khire aldin kajjan , 2012 # Storm Al Ghussein , 2013 # simohamed , 2013-2014 @@ -13,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Arabic (http://www.transifex.com/projects/p/clementine/language/ar/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,7 +22,7 @@ msgstr "" "Language: ar\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,13 +45,13 @@ msgstr "الأيام" #: ../bin/src/ui_transcoderoptionsvorbis.h:211 #: ../bin/src/ui_transcoderoptionswma.h:80 msgid " kbps" -msgstr "kbps" +msgstr "كب\\ث" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" -msgstr " ms" +msgstr "مث" #: ../bin/src/ui_songinfosettingspage.h:157 msgid " pt" @@ -59,13 +60,18 @@ msgstr " pt" #: ../bin/src/ui_notificationssettingspage.h:439 #: ../bin/src/ui_visualisationselector.h:116 msgid " seconds" -msgstr "ثواني" +msgstr "ثانية" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "المقاطع" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "1% (2% أغنية)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 ألبومات" @@ -75,12 +81,12 @@ msgstr "%1 ألبومات" msgid "%1 days" msgstr "%1 أيام" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 مند أيام" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 من %2" @@ -90,48 +96,48 @@ msgstr "%1 من %2" msgid "%1 playlists (%2)" msgstr "%1 قوائم التشغيل (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 مختارة" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 مقطع" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 مقاطع" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 العثور على مقاطع" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" -msgstr "%1 songs found (showing %2)" +msgstr "عثر على 1% أغنية (يعرض منها 2%)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 المسارات" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 منقولة" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" -msgstr "%1: Wiimotedev module" +msgstr "1%: أداة Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 مستمعون أخرون" @@ -145,18 +151,21 @@ msgstr "%L1 مجموع التشغيل" msgid "%filename%" msgstr "%اسم الملف%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n فشل" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n إنتهى" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n المتبقية" @@ -168,24 +177,24 @@ msgstr "&محاذاة النص" msgid "&Center" msgstr "&وسط" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&تخصيص" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&إضافات" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&مساعدة" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "أخفِ %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "إخفاء..." @@ -193,23 +202,23 @@ msgstr "إخفاء..." msgid "&Left" msgstr "&يسار" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&موسيقى" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&لا شيئ" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&قائمة التشغيل" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&خروج" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&نمط التكرار" @@ -217,23 +226,23 @@ msgstr "&نمط التكرار" msgid "&Right" msgstr "&يمين" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&نمط الخلط" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&تمديد الأعمدة لتتناسب مع الناقدة" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&أدوات" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(مختلفة عبر أغنيات متعددة)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...وكل المساهمين في أماروك" @@ -253,14 +262,10 @@ msgstr "0px" msgid "1 day" msgstr "1 يوم" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 مقطع" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -270,7 +275,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 مقطع عشوائي" @@ -278,12 +283,6 @@ msgstr "50 مقطع عشوائي" msgid "Upgrade to Premium now" msgstr "رقي إلى بريميوم الأن" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "أنشئ حسابا جديدا أو أعد تعيين كلمة السر" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -294,6 +293,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

إن لم يتم تفعيله، سيحاول كلمنتاين حفظ التقييمات والاحصائيا في قاعدة بيانات منفصلة دون التغيير في ملفاتك.

إن تم تفعيله، سيتم حفظ الاحصائيات في كل من قاعدة البيانات والملف كلما تغيرت.

الرجاء الانتباه إلى أن هذه الخاصية قد لا تشتغل مع كل صيغة، كما أنه لا ضمانة لتمكن مشغلات أخرى من قرائتها، بما أنه لا توجد معايير قياسية لهذه الخاصية.\n

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

اسبق كلمة البحث باسم حقل حتى تحدد نطاق البحث لذلك الحقل، مثل فنان:بوديه والتي تقوم بالبحث عن كل الفنانين في المكتبة التي تحتوي أسماءهم على كلمة بوديه.

الحقول المتوفرة: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -302,40 +312,40 @@ msgid "" "activated.

" msgstr "

سيتم كتابة تقييمات المقاطع والاحصائيات في وسوم الملفات لكل المقاطع التي بمكتبتك الصوتية.

هذا ليس ضرويا إن كان قد تم تفعيل خياري \"احفظ التقييمات والاحصائيات في وسوم الملف إن أمكن ذلك\".

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

النطاقات تبدأ بـ %، مثلا: %artist %album %title

\n

إن استخدمت معقوفات للإحاطة بقطعة نص تحتوي على نطاق ما، سيتم إخفاء تلك القطعة النصية إن كان النطاق فارغا.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr " Grooveshark يجب التوفر على حساب في " -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "يجب أن تتوفر على حساب في Spotify" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "لا يمكن لعميل الاتصال، إلا إن أدخل شفرة صحيحة." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "قائمة التشغيل الذكية هي قائمة ديناميكية من المقاطع التي تأتي من المكتبة الخاصة بك. هناك أنواع مختلفة من قوائم التشغيل الذكية التي توفر طرق مختلفة للاختيار المقاطع" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "سيتم إدراج المقطع في قائمة التشغيل إذا كان يتطابق مع هذه الشروط." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" -msgstr "A-Z" +msgstr "أ-ي" #: ../bin/src/ui_transcodersettingspage.h:179 msgid "AAC" @@ -353,36 +363,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "HYPNOTOADكل المجد ل" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "ألغ" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "عن %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "عن كليمنتاين..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "عن QT..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "معلومات الحساب" @@ -394,11 +403,15 @@ msgstr "تفاصيل الحساب(المدفوع)" msgid "Action" msgstr "عمل" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "تفعيل\\إلغاء تفعيل أداة التحكم عن بعد لـ Wii" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "سجل النشاطات" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "إضافة بودكاست" @@ -414,39 +427,39 @@ msgstr "إضافة سطر جديد إن كان مدعوم من قبل نوعية msgid "Add action" msgstr "إضافة عمل" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "إضافة Stream أخر" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "أضف مجلد..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "أضف ملفا" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "أضف ملفا للتحويل" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "أضف ملف(s) للتحويل" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "أضافة ملف..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "أضف ملفات للتحويل" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "إضافة مجلد" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "إضافة مجلد..." @@ -458,11 +471,11 @@ msgstr "أضف مجلد جديد..." msgid "Add podcast" msgstr "إضافة بودكاست" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "إضافة بودكاست..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "إضافة تعبير للبحث" @@ -526,6 +539,10 @@ msgstr "أضف عدد مرات تجاوز تشغيل المقطع" msgid "Add song title tag" msgstr "أضف وسم عنوان المقطع" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "أضف أغنية إلى التخزين المؤقت" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "أضف وسم للمقطع" @@ -534,22 +551,34 @@ msgstr "أضف وسم للمقطع" msgid "Add song year tag" msgstr "أضف وسم سنة المقطع" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "أضف الأغاني إلى \"الموسيقى\" حين أنقر زر \"حب\"" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "أضف رابط انترنت..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "أضف إلى المفضلة في Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "أضف إلى قوائم التشغيل في Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "أضف إلى الموسيقى" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "أضف إلى قائمة تشغيل أخرى" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "أضف إلى الإشارات المرجعية" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "إضافة لقائمة التشغيل" @@ -558,6 +587,10 @@ msgstr "إضافة لقائمة التشغيل" msgid "Add to the queue" msgstr "أضف إلى لائحة الانتظار" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "أضف مستخدما\\مجموعة إلى الإشارات المرجعية" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "أضف عملية wiimotedev" @@ -587,15 +620,15 @@ msgstr "أُضيفَ اليوم" msgid "Added within three months" msgstr "أُضيفَ خلال ثلاثة أشهر" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "إضافة مقاطع صوتية إلى مقاطعي" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "أضف إلى المفضلة" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "تجميع متقدم..." @@ -603,12 +636,12 @@ msgstr "تجميع متقدم..." msgid "After " msgstr "بعد" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "بعد النسخ..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -616,11 +649,11 @@ msgstr "بعد النسخ..." msgid "Album" msgstr "الألبوم" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "ألبوم (شدة صوت مثلى لجميع المقاطع)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -630,35 +663,36 @@ msgstr "فنان الألبوم" msgid "Album cover" msgstr "غلاف الألبوم" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "معلومات الألبوم على Jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "ألبومات بغلاف" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "ألبومات بدون غلاف" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "جميع الملفات (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "All Glory to the Hypnotoad!" +msgstr "العظمة لهيبنوتود!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "كل الألبومات" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "كل الفنانين" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "كل الملفات (*)" @@ -667,19 +701,19 @@ msgstr "كل الملفات (*)" msgid "All playlists (%1)" msgstr "كل قوائم التشغيل (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "كل المترجمين" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "كل المقطوعات" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "اسمح للعملاء بتحميل المقاطع من هذا الحاسوب." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "اسمح بالتحميل" @@ -704,30 +738,30 @@ msgstr "أظهر النافذة الرئيسية دائما" msgid "Always start playing" msgstr "ابدأ التشغيل دائما" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "لاستعمال Spotify في كلمنتاين تحتاج لملحق إضافي. هل ترغب في تحميل هذا الملحق وتثبيته الآن؟" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "حدث خطأ أثناء تحميل قاعدة بيانات iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "حدث خطأ أثناء حفظ المعلومات في '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "حدث خطأ عير محدد." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "إضافة لـ:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "غاضب" @@ -736,13 +770,13 @@ msgstr "غاضب" msgid "Appearance" msgstr "المظهر" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "أضف الملفات/العناوين إلى قائمة التشغيل" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "أضف إلى قائمة التشغيل الحالية" @@ -750,52 +784,47 @@ msgstr "أضف إلى قائمة التشغيل الحالية" msgid "Append to the playlist" msgstr "أضف إلى قائمة التشغيل" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "اجعل المقاطع مضغوطة لتفادي أخطاء القص" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "هل أنت متأكد من رغبتك بحذف ملف الإعدادات \"%1\"؟" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "هل أنت متأكد من رغبتك بحذف هذه القائمة؟" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "هل أنت متأكد من رغبتك بتصفير إحصائيات هذا المقطع؟" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "هل أنت متأكد من رغبتك بكتابة احصائيات المقاطع في ملفات المقاطع بالنسبة لكل المقاطع التي في مكتبتك الصوتية؟" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "الفنان" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "معلومات الفنان" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "راديو الفنان" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "وسومات الفنان" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "بداية الفنان" @@ -803,9 +832,13 @@ msgstr "بداية الفنان" msgid "Audio format" msgstr "صيغة الصوت" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "مخرج الصوت" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "فشلت عملية التحقق" @@ -813,7 +846,7 @@ msgstr "فشلت عملية التحقق" msgid "Author" msgstr "المؤلف" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "المؤلفون" @@ -829,7 +862,7 @@ msgstr "التحديث تلقائيا" msgid "Automatically open single categories in the library tree" msgstr "افتح الفئات المفردة تلقائيا في تشجر المكتبة" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "متاح" @@ -837,15 +870,15 @@ msgstr "متاح" msgid "Average bitrate" msgstr "صبيب متوسط" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "القياس المتوسط للصور" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "بودكاست BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -866,7 +899,7 @@ msgstr "صورة الخلفية" msgid "Background opacity" msgstr "شفافية الخلفية" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "استعادة قاعدة البيانات" @@ -874,11 +907,7 @@ msgstr "استعادة قاعدة البيانات" msgid "Balance" msgstr "توازن" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "حظر" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "عارضة معدل الصوت" @@ -898,18 +927,17 @@ msgstr "السلوك" msgid "Best" msgstr "الأفضل" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "السيرة الذاتية من %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "معدل البت" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -917,7 +945,12 @@ msgstr "معدل البت" msgid "Bitrate" msgstr "الصبيب" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "معدل البت" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "محلل الأجزاء" @@ -933,7 +966,7 @@ msgstr "قيمة التضبيب" msgid "Body" msgstr "النص الأساسي" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "محلل Boom" @@ -947,11 +980,11 @@ msgstr "Box" msgid "Browse..." msgstr "تصفح..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "مدة التخزين المؤقت" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "تخزين مؤقت" @@ -963,43 +996,66 @@ msgstr "لكن هذه المصادر غير مفعلة" msgid "Buttons" msgstr "أزرار" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "يقوم Grooveshark بترتيب الأغاني حسب تاريخ الإضافة" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "دعم CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "مسار التخزين المؤقت:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "تخزين مؤقت" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "تخزين مؤقت %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "إلغاء" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "الكابتشا مطلوبة.\nحاول الدخول إلى VK.com باستخدام متصفحك، ثم حل هذه المشكلة." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "تغيير الغلاف" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "تغيير حجم الخط..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "تغيير نمط التكرار" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "تغيير اختصار لوحة المفاتيح..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "تغيير نمط الخلط" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "تغيير اللغة" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1009,15 +1065,19 @@ msgstr "تغيير إعدادات تشغيل مونو سيأخذ بعين الا msgid "Check for new episodes" msgstr "التمس حلقات جديدة" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "التمس التحديثات" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "اختر مستار تخزين VK.com المؤقت" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "اختر اسما لقائمة التشغيل" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "اختيار تلقائي" @@ -1033,11 +1093,11 @@ msgstr "اختيار الخط" msgid "Choose from the list" msgstr "الاختيار من اللائحة" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "اختيار طريقة ترتيب قائمة التشغيل وكم من مقطع ستتضمن" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "اختر مجلد تحميل البودكاست" @@ -1046,7 +1106,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "اختر المواقع التي تريد من كلمنتاين أن يستخدم للبحث عن كلمات المقاطع" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "كلاسيكي" @@ -1054,17 +1114,17 @@ msgstr "كلاسيكي" msgid "Cleaning up" msgstr "تنضيف" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "امسح" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "امسح قائمة التشغيل" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "كلمنتاين" @@ -1077,8 +1137,8 @@ msgstr "خطأ بكلمنتاين" msgid "Clementine Orange" msgstr "برتقالة كلمنتاين" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "التأثيرات المرئية لكلمنتاين" @@ -1100,9 +1160,9 @@ msgstr "يستطيع كلمنتاين تشغيل المقاطع التي رفع msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "يستطيع كلمنتاين تشغيل المقاطع التي رفعتها على Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "يستطيع كلمنتاين تشغيل المقاطع التي رفعتها على Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "يستطيع كليمينتين تشغيل الأغاني المرفوعة على OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1115,20 +1175,13 @@ msgid "" "an account." msgstr "يمكن لكلمنتاين مزامنة لائحة اشتراكاتك مع حواسيبك الأخرى وتطبيقات البودكاست. أنشئ حسابا." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "تعذر على كلمنتاين تحميل أي تأثيرات مرئية. تأكد من أنك ثبت كلمنتاين بطريقة صحيحة." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "تعذر على كلمنتاين جلب حالات اشتراكاتك بسبب مشاكل في اتصالك بالانترنت. سيتم تأريخ المقاطع المشغلة وإرسالها إلى Last.fm لاحقا." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "عارض صور كلمنتاين" @@ -1140,11 +1193,11 @@ msgstr "تعذر على كلمنتاين إيجاد نتائج لهذا المل msgid "Clementine will find music in:" msgstr "سيبحث كلمنتاين عن المقاطع في:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "اضغط هنا لإضافة بعض الموسيقى" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1154,7 +1207,10 @@ msgstr "اضغط هنا لتفضيل هذه القائمة. هكذا سيتم ح msgid "Click to toggle between remaining time and total time" msgstr "اضغط للتبديل بين الوقت المتبقي والوقت الكلي." -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1169,19 +1225,19 @@ msgstr "غلق" msgid "Close playlist" msgstr "أغلق قائمة التشغيل" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "غلق التأثيرات المرئية" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "إغلاق هذه النافذة سيلغي التحميل." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "غلق هذه النافذة سينهي البحث عن أغلفة الألبومات" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1189,73 +1245,78 @@ msgstr "Club" msgid "Colors" msgstr "الألوان" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "لائحة عناصر مفروقة بفاصلة لـ \"class:level\"، قيمة Level بين 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "تعليق" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "الإذاعة المجتمعية" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "أكمل الوسوم تلقائيا" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "أكمل الوسوم تلقائيا..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "الملحّن" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "إعدادات %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "إعدادات Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "إعدادات Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "إعدادات Magnature" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "إعدادات اختصارات لوحة المفاتيح" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "إعدادات Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "إعدادات Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "ضبط VK.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "إعدادات البحث العامة..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "إعدادات المكتبة" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "إعدادات بودكاست..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "إعدادات..." @@ -1263,11 +1324,11 @@ msgstr "إعدادات..." msgid "Connect Wii Remotes using active/deactive action" msgstr "أوصل بأداة التحكم عن بعد لـ Wii بواسطة عملية التفعيل/إلغاء التفعيل" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "وصل الجهاز" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr " جاري الاتصال بـ Spotify" @@ -1277,12 +1338,16 @@ msgid "" "http://localhost:4040/" msgstr "تم رفض الاتصال من الخادم، تأكد من رابط الخادم. مثال: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "تم تجاوز مدة الانتظار، تأكد من رابط الخادم. مثال: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "مشكلة في الاتصال أو أن الصوت معطل من المالك" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "طرفية" @@ -1298,17 +1363,21 @@ msgstr "حول جميع المقاطع" msgid "Convert any music that the device can't play" msgstr "حول جميع المقاطع التي لا يستطيع الجهاز تشغيلها" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "انسخ الرابط إلى الحافظة" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "نسخ إلى المكتبة..." -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "نسخ إلى جهاز..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "نسخ إلى المكتبة..." @@ -1316,156 +1385,152 @@ msgstr "نسخ إلى المكتبة..." msgid "Copyright" msgstr "حفظ الحقوق" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "تعذر الاتصال بخادم Subsonic، تأكد من عنوان الخادم. مثال للعنوان: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "تعذر إنشاء عنصر Gstreamer \"%1\" - تأكد أن جميع ملحقات GStreamer الضرورية مثبتة" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "لا تنشئ قائمة تشغيل" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "تعذر العثور على معدد من أجل %1، تأكد أن ملحقات GStreamer الضرورية مثبتة" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "تعذر العثور على محول لـ %1، تأكد من أنك ثبت ملحق GStreamer المناسب" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "تعذر تحميل محطة راديو last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "تعذر فتح الملف %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "مدير الغلاف" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "الغلاف من الصورة المدمجة" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "تم تحميل الغلاف تلقائيا من %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "الغلاف غير محدد يدويا" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "الغلاف غير محدد" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "الغلاف محدد من %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "الأغلفة من %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "أنشئ قائمة تشغيل Grooveshark جديدة" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "أخفت الصوت تدريجيا عند التبديل تلقائيا بين المقاطع" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "أخفت الصوت تدريجيا عند التبديل يدويا بين المقاطع" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1473,7 +1538,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "خصص" @@ -1485,54 +1550,50 @@ msgstr "صورة مخصصة:" msgid "Custom message settings" msgstr "خصص إعدادات الرسائل" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "خصص الراديو" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "خصص..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "مسار DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "رقص" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "تم كشف قاعدة بيانات فاسدة. الرجاء قراءة https://code.google.com/p/clementine-player/wiki/DatabaseCorruption ففيها تعليمات لكيفية استعادة قاعدة البيانات." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "تاريخ الإنشاء" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "حُرِرَ بِتاريخ" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "الأيام" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&افتراضي" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "اخفض الصوت 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "أخفض الصوت بنسبة مئوية" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "اخفض الصوت" @@ -1540,6 +1601,11 @@ msgstr "اخفض الصوت" msgid "Default background image" msgstr "صورة الخلفية الافتراضية" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "الجهاز الافتراضي 1%" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "الافتراضية" @@ -1548,30 +1614,30 @@ msgstr "الافتراضية" msgid "Delay between visualizations" msgstr "المدة بين التأثيرات المرئية" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "احذف" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "احذف قائمة تسغيل Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "حذف البيانات المحملة" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "احذف الملفات" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "احذف من الجهاز" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "احذف من القرص..." @@ -1579,31 +1645,31 @@ msgstr "احذف من القرص..." msgid "Delete played episodes" msgstr "حذف الحلقات المشغلة" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "احذف ملف الإعدادات" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "احذف لائحة التشغيل الذكية" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "احذف الملفات الأصلية" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "حذف الملفات" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "أزل المختارة من لائحة الانتظار" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "أزل المقطع من لائحة الانتظار" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "الوجهة" @@ -1612,7 +1678,7 @@ msgstr "الوجهة" msgid "Details..." msgstr "التفاصيل..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "الجهاز" @@ -1624,15 +1690,15 @@ msgstr "خصائص الجهاز" msgid "Device name" msgstr "اسم الجهاز" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "خصائص الجهاز..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "أجهزة" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "الحوار" @@ -1669,12 +1735,17 @@ msgstr "إلغاء التمديد" msgid "Disable moodbar generation" msgstr "ألغ إنشاء شريط المزاج" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "غير مفعل" +msgstr "معطل" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "معطل" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "قرص مدمج" @@ -1684,15 +1755,15 @@ msgid "Discontinuous transmission" msgstr "إرسال غير مستمر" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "خيارات العرض" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "أظهر قائمة الشاشة" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "افحص المكتبة كاملة" @@ -1704,27 +1775,27 @@ msgstr "لا تحول أي مقطع" msgid "Do not overwrite" msgstr "لا تستبدل" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "لا تكرر" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "لا تظهره في فئة فنانون متنوعون" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "لا تخلط" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "لا تتوقف!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "تبرع" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "النقر مرتين للتشغيل" @@ -1732,12 +1803,13 @@ msgstr "النقر مرتين للتشغيل" msgid "Double clicking a song will..." msgstr "النقر مرتين على مقطع سـ..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "حمل %n حلقات" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "مجلد التحميل" @@ -1753,7 +1825,7 @@ msgstr "عضوية التحميل" msgid "Download new episodes automatically" msgstr "حمل الحلقات الجديدة تلقائيا" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "حمل مقاطع لائحة الانتظار" @@ -1761,15 +1833,15 @@ msgstr "حمل مقاطع لائحة الانتظار" msgid "Download the Android app" msgstr "حمل تطبيق أندرويد" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "حمل هذا الألبوم" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "حمل هذا الألبوم..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "حمل هذه الحلقة" @@ -1777,7 +1849,7 @@ msgstr "حمل هذه الحلقة" msgid "Download..." msgstr "حمل..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "تحميل (%1%)..." @@ -1786,23 +1858,23 @@ msgstr "تحميل (%1%)..." msgid "Downloading Icecast directory" msgstr "جاري تحميل مجلد Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "جاري تحميل فهرس Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "جاري تحميل فهرس Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "جاري تحميل ملحق Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "جاري تحميل المعلومات..." -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "جر لإعادة الترتيب" @@ -1822,20 +1894,20 @@ msgstr "المدة" msgid "Dynamic mode is on" msgstr "النمط النشيط مفعل" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "مزج عشوائي تلقائيا" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "حرر قائمة التشغيل الذكية" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "حرر الوسم \"%1\"" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "حرر الوسم..." @@ -1847,16 +1919,16 @@ msgstr "حرر الوسوم" msgid "Edit track information" msgstr "تعديل معلومات المقطع" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "تعديل معلومات المقطع..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "تعديل معلومات المقاطع..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "حرر..." @@ -1864,6 +1936,10 @@ msgstr "حرر..." msgid "Enable Wii Remote support" msgstr "فعل دعم أداة التحكم عن بعد لـ Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "مكن التخزين المؤقت الذاتي" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "فعل معدل الصوت" @@ -1878,7 +1954,7 @@ msgid "" "displayed in this order." msgstr "فعل المصادر أسفله لتضمينهم في نتائج البحث. ستظهر النتائج في هذا الترتيب." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "فعل/ألغ نقل معلومات الاستماع لحسابك على Last.fm" @@ -1906,15 +1982,10 @@ msgstr "أدخل رابطا لتحميل الغلاف من الانترنت" msgid "Enter a filename for exported covers (no extension):" msgstr "أدخل اسم ملف للأغلفة المصدرة (بدون امتداد)" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "أدخل اسما جديدا لهذه القائمة" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "أدخل اسم فنان أو وسم لبدء الاستماع لراديو Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1928,7 +1999,7 @@ msgstr "أدخل كلمات البحث أسفله للعثور على بودكا msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "أدخل كلمات البحث أسفله للعثور على بودكاست في gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "ادخل كلمات البحث هنا" @@ -1937,11 +2008,11 @@ msgstr "ادخل كلمات البحث هنا" msgid "Enter the URL of an internet radio stream:" msgstr "أدخل رابط الراديو" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "أدخل اسم المجلد" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "أدخل عنوان الايبي - IP - في التطبيق للاتصال بكلمنتاين." @@ -1949,21 +2020,22 @@ msgstr "أدخل عنوان الايبي - IP - في التطبيق للاتصا msgid "Entire collection" msgstr "كامل المجموعة" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "معدل الصوت" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "يكافئ --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "يكافئ --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "خطأ" @@ -1971,38 +2043,38 @@ msgstr "خطأ" msgid "Error connecting MTP device" msgstr "حدث خطأ بالاتصال بجهاز MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "خطأ في نسخ المقاطع" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "خطأ في حذف المقاطع" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "خطأ أثناء تحميل ملحق Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "خطأ في تحميل %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "خطأ في تحميل قائمة تشغيل di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "حدث خطأ بتطبيق %1:%2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "حدث خطأ أثناء تحميل القرص الصوتي" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "لم تشغل أبدا" @@ -2034,7 +2106,7 @@ msgstr "كل 6 ساعات" msgid "Every hour" msgstr "كل ساعة" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "باستثناء بين مقاطع نفس الألبوم أو نفس صفحة CUE" @@ -2046,7 +2118,7 @@ msgstr "الأغلفة الموجودة" msgid "Expand" msgstr "توسيع" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "تنتهي صلاحيته في %1" @@ -2067,36 +2139,36 @@ msgstr "صدر الأغلفة المحملة" msgid "Export embedded covers" msgstr "صدر الأغلفة المدمجة" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "تم الانتهاء من التصدير" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "تم تصدير %1 أغلفة من إجمالي %2 (تم تخطي %3)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2106,42 +2178,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "اخفت الصوت عند الإيقاف/ارفعه تدريجيا عند متابعة التشغيل" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "تلاشي تدريجيا عند إيقاف المقطع" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "تلاشي" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "مدة التلاشي" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "فشل في قراءة القرص CD" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "فشل جلب المسار" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "فشل جلب البودكاست" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "فشل تحميل البودكاست" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "تعذر قراءة تلقيمات RSS" @@ -2150,11 +2222,11 @@ msgstr "تعذر قراءة تلقيمات RSS" msgid "Fast" msgstr "سريع" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "المفضلة" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "المقاطع المفضلة" @@ -2170,11 +2242,11 @@ msgstr "اجلب تلقائيا" msgid "Fetch completed" msgstr "تم التجلب" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "جلب مكتبة Subsonic..." -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "خطأ أثناء جلب الغلاف" @@ -2182,7 +2254,7 @@ msgstr "خطأ أثناء جلب الغلاف" msgid "File Format" msgstr "صيغة الملف" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "امتداد الملف" @@ -2190,19 +2262,23 @@ msgstr "امتداد الملف" msgid "File formats" msgstr "صيغ الملف" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "اسم الملف" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "اسم الملف (من دون المسار)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "نمط اسم الملف:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "حجم الملف" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2212,7 +2288,7 @@ msgstr "نوع الملف" msgid "Filename" msgstr "اسم الملف" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "الملفات" @@ -2220,15 +2296,19 @@ msgstr "الملفات" msgid "Files to transcode" msgstr "الملفات التي ستحول" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "ابحث في المكتبة عن المقاطع التي توافق المعايير التي حددت." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "اعثر على هذا الفنان" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "التحقق من هوية المقطع" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "انهاء" @@ -2236,7 +2316,7 @@ msgstr "انهاء" msgid "First level" msgstr "المستوى الأول" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2252,12 +2332,12 @@ msgstr "لدواعي تتعلق بالرخصة، دعم Spotify متوفر في msgid "Force mono encoding" msgstr "أجبر ترميز مونو" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "انسى الجهاز" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2272,7 +2352,7 @@ msgstr "نسيان جهاز سيحذفه من القائمة. لهذا، سيت #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2300,31 +2380,23 @@ msgstr "معدل اللقطات" msgid "Frames per buffer" msgstr "عدد اللقطات في كل وحدة تخزين" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "الأصدقاء" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "متجمد" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "مولد GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "عام" @@ -2332,30 +2404,30 @@ msgstr "عام" msgid "General settings" msgstr "إعدادات عامة" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "النوع" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "احصل على رابط لمشاركة قائمة تشغيل Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "احصل على رابط لمشاركة هذا المقطع من Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "جلب المقاطع الشعبية على Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "جاري جلب القنوات" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "جاري جلب التيارات..." @@ -2367,11 +2439,11 @@ msgstr "أعط اسما:" msgid "Go" msgstr "اذهب" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "انتقل للسان قائمة التشغيل التالي" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "انتقل للسان قائمة التشغيل السابق" @@ -2379,7 +2451,7 @@ msgstr "انتقل للسان قائمة التشغيل السابق" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2389,7 +2461,7 @@ msgstr "تم جلب %1 أغلفة من %2 (%3 فشلت)" msgid "Grey out non existent songs in my playlists" msgstr "اجعل المقاطع التي لا توجد في مكتبتي بلون باهت" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2397,15 +2469,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "خطأ بتسجيل الدخول لـ Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "رابط قائمة تشغيل Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "راديو Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "رابط المقطع على Grooveshark" @@ -2413,44 +2485,44 @@ msgstr "رابط المقطع على Grooveshark" msgid "Group Library by..." msgstr "تجميع المكتبة حسب:" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "تجميع حسب" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "تجميع حسب الألبوم" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "تجميع حسب الفنان" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "تجميع حسب الفنان/الألبوم" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "تجميع حسب فنان/سنة - الألبوم" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "تجميع حسب النوع/الألبوم" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "تجميع حسب النوع/الفنان/الألبوم" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "تجميع" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "الصفحة لا تحتوي على أي تلقيم RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "تم تلقي رمز الحالة HTTP 3xx دون أي رابط، تحقق من إعدادات الخادم." @@ -2459,7 +2531,7 @@ msgstr "تم تلقي رمز الحالة HTTP 3xx دون أي رابط، تحق msgid "HTTP proxy" msgstr "بروكسي HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "سعيد" @@ -2475,25 +2547,25 @@ msgstr "معلومات العتاد متاحة إذا كان الجهاز موص msgid "High" msgstr "أعلى" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "أعلى (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "أعلى (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "تعذر العثور على المضيف، تأكد من رابط الخادم. مثال: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "الساعات" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "العلجوم المنوِّم" @@ -2505,15 +2577,15 @@ msgstr "ليس لدي حساب Magnatune" msgid "Icon" msgstr "أيقونة" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "الأيقونة في الأعلى" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "جاري التعرف على المقطع" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2523,24 +2595,24 @@ msgstr "إذا قررت الاستمرار، سيشتغل هذا الجهاز ب msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "إن كنت تتوفر على رابط البودكاست، أدخله أسفله واضغط اذهب." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "تجاهل \"The\" في أسماء الفنانين" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "الصور (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "الصور (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "في %1 أيام" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "في %1 أسابيع" @@ -2551,7 +2623,7 @@ msgid "" "time a song finishes." msgstr "في النمط الديناميكي سيتم اختيار مقاطع جديدة وإضافتها لقائمة التشغيل كلما انتهى تشغيل المقطع." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "صندوق البريد" @@ -2563,135 +2635,135 @@ msgstr "ضمن غلاف الألبوم في التنبيهات" msgid "Include all songs" msgstr "ضمن جميع المقاطع" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "نسخة Subsonic REST غير متوافقة. يجب تحديث العميل." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "نسخة Subsonic REST غير متوافقة. يجب تحديث الخادم." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "لم يتم إكمال التهيئة، الرجاء التأكد من أن جميع الحقول مملوئة." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "ارفع الصوت 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "ارفع الصوت بنسبة مئوية" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "ارفع الصوت" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "فهرسة %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "معلومات" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "خيارات المدخل" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "إدارج..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "مثبت" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "فحص شامل" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "انترنت" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "خدمات الانترنت" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "مفتاح API غير صالح" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "صيغة غير متاحة" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "طريقة غير متاحة" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "إعدادات غير صالحة" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "تم تعيين مصدر غير صالح" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "خدمة غير متاحة" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "مفتاح جلسة غير صالح" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "اسم مستخدم أو كلمة سر غير صالحة." #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "اعكس الاختيار" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "المقاطع الأكثر استماعا على Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "أفضل المقاطع على Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "أفضل مقاطع الشهر على Jamendo " -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "أفضل مقاطع الأسبوع على Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "قاعدة بيانات Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "اقفز إلى المقطع الجاري تشغيله" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "أبق الأزار لمدة %1 ثانية..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "أبق الأزار لمدة %1 ثواني" @@ -2700,23 +2772,24 @@ msgstr "أبق الأزار لمدة %1 ثواني" msgid "Keep running in the background when the window is closed" msgstr "تابع التشغيل في الخلفية عند إغلاق النافذة" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "أبقي على الملفات الأصلية" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "قطط" +msgstr "هرر" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "اللغة" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "جهاز محمول/سماعات" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "قاعة واسعة" @@ -2724,58 +2797,24 @@ msgstr "قاعة واسعة" msgid "Large album cover" msgstr "غلاف كبير لـ الألبوم" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "عارضة جانبية عريضة" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "المشغلة مؤخرا" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "آخر تشغيل" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "راديو Last.fm مخصص: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "مكتبة Last.fm: %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "ردايو ميكس Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "راديو جيران Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "راديو محطة Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "راديو فنانين مشابهين Last-fm - %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "راديو وسم Last.fm - %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm مشغول حاليا، الرجاء إعادة المحاولة بعد دقائق." @@ -2783,11 +2822,11 @@ msgstr "Last.fm مشغول حاليا، الرجاء إعادة المحاولة msgid "Last.fm password" msgstr "كلمة السر" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "مرات تشغيل Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "وسوم Last.fm" @@ -2795,28 +2834,24 @@ msgstr "وسوم Last.fm" msgid "Last.fm username" msgstr "اسم المستخدم" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "ويكي Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "المقاطع الأقل تفضيلا" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "اتركه فارغا لاعتماد التفضيلات البدئية. مثال: \"/dev/dsp\"." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "يسار" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "المدة" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "المكتبة" @@ -2824,24 +2859,24 @@ msgstr "المكتبة" msgid "Library advanced grouping" msgstr "إعدادات متقدمة لتجميع المكتبة" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "إشعار إعادة فحص المكتبة" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "البحث في المكتبة" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "الحدود" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "استمع لمقاطع Grooveshark اعتمادا على ما استمعت عليه سابقا" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "مباشر" @@ -2853,15 +2888,15 @@ msgstr "تحميل" msgid "Load cover from URL" msgstr "تحميل الغلاف من رابط انترنت" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "تحميل الغلاف من رابط انترنت..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "حمل الغلاف من القرص" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "تحميل الغلاف من القرص..." @@ -2869,84 +2904,89 @@ msgstr "تحميل الغلاف من القرص..." msgid "Load playlist" msgstr "تحميل قائمة تشغيل" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "تحميل قائمة تشغيل..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "تحميل راديو Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "تحميل جهاز MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "تحميل قاعدة بيانات أيبود" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "تحميل قائمة تشغيل ذكية" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "تحميل المقاطع" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "تحميل تيار الانترنت" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "جاري تحميل المقاطع" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "جاري تحميل معلومات المقاطع" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "جاري التحميل" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "تحميل ملفات/روابط، استبدال قائمة التشغيل الحالية" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "تسجيل الدخول" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "فشل الولوج" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "تسجيل الخروج" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "ملف تعريف لتوقعات بعيدة المدى (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "إعجاب" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "أقل (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "أقل (256x256)" @@ -2958,12 +2998,17 @@ msgstr "ملف تعريف بأقل تعقيد (LC)" msgid "Lyrics" msgstr "كلمات المقطع" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "كلمات المقطع من %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2975,15 +3020,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2991,7 +3036,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "تحميل Magnatude" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "تم تحميل Magnatude" @@ -2999,15 +3044,20 @@ msgstr "تم تحميل Magnatude" msgid "Main profile (MAIN)" msgstr "ملف التعريف القياسي (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "فلتكن هكذا!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "اجعلها كذلك!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "اجعل قائمة التشغيل متاحة دون اتصال" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "إجابة غير صالحة" @@ -3020,15 +3070,15 @@ msgstr "إعدادات يدوية للبروكسي" msgid "Manually" msgstr "يدويا" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "المصنع" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "علم كمستمع إليه" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "علم كجديد" @@ -3040,17 +3090,21 @@ msgstr "طابق كل كلمة بحث (و)" msgid "Match one or more search terms (OR)" msgstr "طابق كلمة بحث أو عدة كلمات (أو)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "كل نتائج البحث الشامل" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "أقصى صبيب" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "متوسط (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "متوسط (512x512)" @@ -3062,11 +3116,15 @@ msgstr "نوع العضوية" msgid "Minimum bitrate" msgstr "أدنى صبيب" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "أقل تخزين للموازن" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "ملف إعدادات projectM غير متوفر" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "نموذج" @@ -3074,20 +3132,20 @@ msgstr "نموذج" msgid "Monitor the library for changes" msgstr "راقب تغيرات المكتبة " -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "تشغيل مونو" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "الأشهر" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "المزاج" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "نمط عارضة المزاج" @@ -3095,15 +3153,19 @@ msgstr "نمط عارضة المزاج" msgid "Moodbars" msgstr "أشرطة المزاج" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "المزيد" + +#: library/library.cpp:84 msgid "Most played" msgstr "الأكثر تشغيلا" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "نقطة الوصل" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "نقط الوصل" @@ -3112,7 +3174,7 @@ msgstr "نقط الوصل" msgid "Move down" msgstr "أسفل" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "انقل إلى المكتبة" @@ -3121,7 +3183,7 @@ msgstr "انقل إلى المكتبة" msgid "Move up" msgstr "أعلى" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "موسيقى" @@ -3129,56 +3191,32 @@ msgstr "موسيقى" msgid "Music Library" msgstr "مكتبة الصوتيات" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "كتم الصوت" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "مكتبتي على Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "راديو المزج على Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "راديو الجيران على Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "راديو المقاطع المقترحة لي على Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "راديو المزج الخاص بي" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "مقاطعي" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "جيراني" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "غير متاح عند استخدام قائمة تشغيل ديناميكية" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "المقترحة لي" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "الاسم" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "الاسم" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "إعدادات التسمية" @@ -3186,23 +3224,19 @@ msgstr "إعدادات التسمية" msgid "Narrow band (NB)" msgstr "Narrow band (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "الجيران" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "شبكة بروكسي" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "شبكة عن بعد" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "أبدا" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "لم تشغل أبدا" @@ -3211,21 +3245,21 @@ msgstr "لم تشغل أبدا" msgid "Never start playing" msgstr "لم يبدأ تشغيلها أبدا" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "مجلد جديد" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "قائمة تشغيل جديدة" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "قائمة تشغيل ذكية جديدة" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "مقاطع جديدة" @@ -3233,24 +3267,24 @@ msgstr "مقاطع جديدة" msgid "New tracks will be added automatically." msgstr "مقاطع جديدة ستنضاف تلقائيا" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "أحدث المقاطع" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "التالي" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "المقطع التالي" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "الأسبوع المقبل" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "دون محلل" @@ -3258,7 +3292,7 @@ msgstr "دون محلل" msgid "No background image" msgstr "دون صورة خلفية" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "لا توجد أغلفة للتصدير." @@ -3266,7 +3300,7 @@ msgstr "لا توجد أغلفة للتصدير." msgid "No long blocks" msgstr "بدون أجزاء طويلة" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "لم يتم العثور على أي نتيجة. امسح خانة البحث لإظهار جميع قوائم التشغيل من جديد." @@ -3280,11 +3314,11 @@ msgstr "بدون أجزاء قصيرة" msgid "None" msgstr "لا شيء" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "لا مقطع من المقاطع المختارة مناسب لنسخه لجهاز." -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "عادي" @@ -3292,43 +3326,47 @@ msgstr "عادي" msgid "Normal block type" msgstr "نوع أجزاء عادي" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "غير متاح عند استعمال قائمة تشغيل ديناميكية" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "غير متصل" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "لا يوجد محتوى كافي" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "عدد المعجبين غير كافٍ" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "عدد الأعضاء غير كافٍ" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "عدد الجيران غير كافٍ" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "غير مثبت" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "غير متصل" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "غير موصول - انقر مرتين للوصل" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "لم يعثر على شيء" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "نوع التنبيهات" @@ -3341,36 +3379,41 @@ msgstr "التنبيهات" msgid "Now Playing" msgstr "جاري تشغيلها" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "معاينة التنبيهات" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "معطل" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "مفعل" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3378,11 +3421,11 @@ msgid "" "192.168.x.x" msgstr "اقبل الاتصال فقط من العملاء بمجال الايبي - IP - التالي:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "اسمح بالاتصال من الشبكة المحلية فقط" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "أظهر الأول فقط" @@ -3390,23 +3433,23 @@ msgstr "أظهر الأول فقط" msgid "Opacity" msgstr "الشفافية" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "فتح %1 في المتصفح" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "فتح &قرص CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "فتح ملف OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "فتح ملف OPML..." @@ -3414,30 +3457,35 @@ msgstr "فتح ملف OPML..." msgid "Open device" msgstr "فتح جهاز" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "فتح ملف..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "فتح في Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "فتح في قائمة تشغيل جديدة" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "فتح في قائمة جديدة" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "افتح في المتصفح" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "فتح..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "فشلت العملية" @@ -3457,23 +3505,23 @@ msgstr "الإعدادات..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "ترتيب الملفات" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "ترتيب الملفات..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "ترتيب الملفات" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "الوسوم الأصلية" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "خيارات اخرى" @@ -3481,7 +3529,7 @@ msgstr "خيارات اخرى" msgid "Output" msgstr "مخرج" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "جهاز الإخراج" @@ -3489,15 +3537,11 @@ msgstr "جهاز الإخراج" msgid "Output options" msgstr "خيارات المخرج" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "ملحق الإخراج" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "استبدل الكل" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "أكتب على الملفات الموجودة" @@ -3509,15 +3553,15 @@ msgstr "استبدل الملفات الأصغر فقط" msgid "Owner" msgstr "المالك" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "تحليل فهرس Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "حفلة" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3526,20 +3570,20 @@ msgstr "حفلة" msgid "Password" msgstr "كلمة السر" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "إيقاف مؤقت" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "أوقف التشغيل مؤقتا" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "تم الإيقاف مؤقتا" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "المؤدي" @@ -3548,34 +3592,22 @@ msgstr "المؤدي" msgid "Pixel" msgstr "بكسل" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "شريط جانبي عريض" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "تشغيل" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "شغل الفنان أو الوسم" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "شغل راديو الفنان" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "عدد مرات التشغيل" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "شغل راديو مخصص..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "شغل إذا انتهى، أوقف إذا كان قيد التشغيل" @@ -3584,45 +3616,42 @@ msgstr "شغل إذا انتهى، أوقف إذا كان قيد التشغيل" msgid "Play if there is nothing already playing" msgstr "شغل إذا لم يكن هناك مقطع قيد التشغيل " -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "شغل راديو وسم..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "شغيل المقطع رقم في قائمة التشغيل" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "تشغيل/إيقاف" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "التشغيل" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "خيارات المشغل" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "قائمة تشغيل" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "قائمة تشغيل منتهية" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "خيارات قائمة التشغيل" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "نوع قائمة التشغيل" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "قوائم التشغيل" @@ -3634,23 +3663,23 @@ msgstr "الرجاء إغلاق متصفحك والعودة إلى كلمنتا msgid "Plugin status:" msgstr "حالة الملحق:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "بودكاست" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "المقاطع الشعبية" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "المقاطع الشعبية لهذا الشهر" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "المقاطع الشعبية اليوم" @@ -3659,22 +3688,23 @@ msgid "Popup duration" msgstr "مدة نافذة الانبثاق" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "المنفذ" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "تقوية استباقية" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "التفضيلات" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "التفضيلات..." @@ -3710,7 +3740,7 @@ msgstr "اضغط تجميعة أزرار لاستخدامها لـ" msgid "Press a key" msgstr "اضغط زرا" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "اضغط على تجميعة أزرار لاستخدامها في %1 ..." @@ -3721,20 +3751,20 @@ msgstr "إعدادات تنبيهات كلمنتاين" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "المعاينة" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "السابق" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "المقطع السابق" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "اطبع معلومات النسخة" @@ -3742,21 +3772,25 @@ msgstr "اطبع معلومات النسخة" msgid "Profile" msgstr "ملف التعريف" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "التقدم" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "التقدم" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psychedelic" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "اضغط زر أداة التحكم عن بعد لـ Wii" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "ضع المقاطع في ترتيب عشوائي" @@ -3764,36 +3798,46 @@ msgstr "ضع المقاطع في ترتيب عشوائي" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "الجودة" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "الاستعلام عن الجهاز..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "مدير لائحة الانتظار" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "أضف المختارة للائحة الانتظار" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "أضف للائحة الانتظار" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "راديو (شدة صوت متساوية لجمع المقاطع)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "راديو" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "مطر" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "مطر" @@ -3801,48 +3845,48 @@ msgstr "مطر" msgid "Random visualization" msgstr "تأثيرات مرئية عشوائية" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "قيم المقطع الحالي ب 0 نجوم" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "قيم المقطع الحالي بـ 1 نجمة" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "قيم المقطع الحالي بنجمتين *2*" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "قيم المقطع الحالي ب 3 نجوم" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "قيم المقطع الحالي ب 4 نجوم" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "قيم المقطع الحالي ب 5 نجوم" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "تقييم" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "تريد فعلا الإلغاء؟" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "تم تجاوز عدد مرات إعادات التوجيه المسوح به، تحقق من إعدادات الخادم." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "حدث" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "حدث الفهرس" @@ -3850,19 +3894,15 @@ msgstr "حدث الفهرس" msgid "Refresh channels" msgstr "حدث القنوات" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "حدث قائمة الأصدقاء" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "حدث قائمة المحطة" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "حدث تيارات الانترنت" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3874,8 +3914,8 @@ msgstr "تذكر تحركات أداة التحكم عن بعد لـ Wii" msgid "Remember from last time" msgstr "تذكر من اخر مرة" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "احذف" @@ -3883,7 +3923,7 @@ msgstr "احذف" msgid "Remove action" msgstr "احذف العملية" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "احذف المقاطع المكررة من قائمة التشغيل" @@ -3891,73 +3931,77 @@ msgstr "احذف المقاطع المكررة من قائمة التشغيل" msgid "Remove folder" msgstr "أزل الملف" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "حذف من مقاطعي" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "إزالة من الإشارات المرجعية" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "احذف من المفضلة" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "احذف من قائمة التشغيل" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "احذف قائمة التشغيل" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "احذف قوائم التشغيل" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "حذف مقاطع صوتية من مقاطعي" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "حذف المقاطع من المفضلة" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "أعد تسمية \"%1\" قائمة تشغيل" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "أعد تسمة قائمة Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "أعد تسمية قائمة التشغيل" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "أعد تسمية قائمة التشغيل" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "أعد ترقيم المقاطع في هذا الترتيب..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "كرر" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "كرر الألبوم" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "كرر قائمة التشغيل" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "كرر المقطع" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "استبدل قائمة التشغيل الحالية" @@ -3966,15 +4010,15 @@ msgstr "استبدل قائمة التشغيل الحالية" msgid "Replace the playlist" msgstr "استبدل قائمة التشغيل" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "استبدل الفراغات برمز \"_\"" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "نمط Replay Gain" @@ -3982,24 +4026,24 @@ msgstr "نمط Replay Gain" msgid "Repopulate" msgstr "أعد ملأه من جديد" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "يتطلب كود التحقق" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "استرجاع الحالة البدئية" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "صفّر عدد مرات التشغيل" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "أعد تشغيل المقطع، أو شغل المقطع السابق إن كان لم يتجاوز 8 ثوانٍ من بدء التشغيل." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "اكتف بأحرف ASCII" @@ -4007,15 +4051,15 @@ msgstr "اكتف بأحرف ASCII" msgid "Resume playback on start" msgstr "تابع التشغيل عند البدء" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "جلب مقاطعي من Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "جلب المقاطع المفضلة على Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "جلب قوائم تشغيل Grooveshark" @@ -4029,17 +4073,17 @@ msgstr "يمين" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "نسخ" #: ui/ripcd.cpp:116 msgid "Rip CD" msgstr "قرص RIP" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "قرص صوتي Rip" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4051,25 +4095,25 @@ msgstr "شغل" msgid "SOCKS proxy" msgstr "بروكسي SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "حدث خطأ بتبادل SSL، تحقق من إعدادات الخادم. خيار SSLv3 أسفله يمكن أن يحل بعض المشاكل." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "احذف الجهاز بأمان" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "احذف الجهاز بأمان بعد انتهاء النسخ" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "معدل العينة" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "معدل العينة" @@ -4077,27 +4121,33 @@ msgstr "معدل العينة" msgid "Save .mood files in your music library" msgstr "احفظ ملفات .mood في المكتبة" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "احفظ غلاف الألبوم" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "احفظ الغلاف في القرص..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "احفظ الصورة" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "حفظ قائمة التشغيل" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "حفظ قائمة التشغيل" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "حفظ قائمة التشغيل..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "احفظ ملف الإعدادات" @@ -4113,11 +4163,11 @@ msgstr "احفظ الإحصائيات في وسوم الملف إن إمكن ذ msgid "Save this stream in the Internet tab" msgstr "احفظ المقطع في لسان الانترنت" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "حفظ إحصائيات المقاطع في ملفات المقاطع" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "حفظ المقاطع" @@ -4129,7 +4179,7 @@ msgstr "ملف التعريف Scalable sampling rate (SSR)" msgid "Scale size" msgstr "غيّر الحجم" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "النتيجة" @@ -4137,34 +4187,38 @@ msgstr "النتيجة" msgid "Scrobble tracks that I listen to" msgstr "أرسل معلومات المقاطع التي استمع إليها" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "البحث" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "بحث" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "البحث في محطات Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "بحث Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "بحث Magnatude" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "بحث Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "ابحث تلقائيا" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "ابحث عن أغلفة الألبومات..." @@ -4184,21 +4238,21 @@ msgstr "بحث iTunes" msgid "Search mode" msgstr "نمط البحث" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "إعدادات البحث" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "نتائج البحث" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "كلمات البحث" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "البحث في Grooveshark" @@ -4206,27 +4260,27 @@ msgstr "البحث في Grooveshark" msgid "Second level" msgstr "المستوى الثاني" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "ابحث إلى الخلف" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "ابحث إلى الأمام" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "انتقل في المقطع الحالي إلى موضع نسبي" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "انتقل في المقطع الحالي إلى موضع محدد" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "اختر الكل" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "لا تختر شيئا" @@ -4234,7 +4288,7 @@ msgstr "لا تختر شيئا" msgid "Select background color:" msgstr "اختر لون الخلفية:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "اختر صورة الخلفية" @@ -4250,7 +4304,7 @@ msgstr "اختر لون الخلفية:" msgid "Select visualizations" msgstr "اختر التأثيرات المرئية" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "اختر التأثيرات المرئية..." @@ -4258,7 +4312,7 @@ msgstr "اختر التأثيرات المرئية..." msgid "Select..." msgstr "اختر..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "الرقم التسلسلي" @@ -4270,51 +4324,51 @@ msgstr "عنوان الخادم" msgid "Server details" msgstr "معلومات الخادم" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "خدمة غير متصلة" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "غير %1 إلى %2" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "اجعل درجة الصوت بنسبة " -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "اجعل هذه القيمة لجميع المقاطع المختارة" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "الإعدادات" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "اختصار لوحة المفاتيح" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "اختصار لوحة المفاتيح لـ %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "اختصار لوحة المفاتيح لـ %1 يوجد مسبقا" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "عرض" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "أظهر التنبيهات" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "أظهر توهجا في المقطع الحالي" @@ -4342,15 +4396,15 @@ msgstr "أظهر نافذة انبثاق من شريط التنبيهات" msgid "Show a pretty OSD" msgstr "أظهر تنبيهات كلمنتاين" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "أظهر فوق شريط الحالة" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "أظهر جميع المقاطع" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "أظهر جميع المقاطع" @@ -4362,32 +4416,36 @@ msgstr "أظهر الغلاف في المكتبة" msgid "Show dividers" msgstr "أظهر الفواصل" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "أظهر الحجم الأصلي..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "أظهر المجموعات في نتائج البحث الشامل" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "أظهر في متصفح الملفات..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "أظهر في المكتبة..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "أظهر في فنانين متنوعين" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "أظهر عارضة المزاج" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "أظهر المقاطع المكررة فقط" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "أظهر المقطاع غير الموسومة فقط" @@ -4396,8 +4454,8 @@ msgid "Show search suggestions" msgstr "أظهر اقتراحات البحث" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "أظهر زري الإعجاب والحظر" +msgid "Show the \"love\" button" +msgstr "أظهر زر \"حب\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4411,27 +4469,27 @@ msgstr "أظهر الأيقونة في شريط التنبيهات" msgid "Show which sources are enabled and disabled" msgstr "أظهر المصادر المفعلة وغير المفعلة" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "أظهر/أخف" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "اخلط" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "اخلط الألبومات" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "اخلط الكل" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "اخلط قائمة التشغيل" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "اخلط مقاطع هذا الألبوم" @@ -4447,7 +4505,7 @@ msgstr "تسجيل الخروج" msgid "Signing in..." msgstr "تسجيل الدخول..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "فنانون مشابهون" @@ -4459,43 +4517,51 @@ msgstr "الحجم" msgid "Size:" msgstr "الحجم:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "تجاهل السابق في قائمة التشغيل" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "تخطى العد" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "تجاهل اللاحق في قائمة التشغيل" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "تجاوز المسارات المختارة" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "تجاوز المسار" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "غلاف ألبوم صغير" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "عارضة جانبية صغيرة" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "قائمة تشغيل ذكية" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "قوائم تشغيل ذكية" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4503,11 +4569,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "معلومات المقطع" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "معلومات المقطع" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4527,15 +4593,23 @@ msgstr "رتب حسب النوع (حسب الشعبية)" msgid "Sort by station name" msgstr "رتب حسب اسم المحطة" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "رتب قوائم التشغيل أبجديا" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "رتب المقاطع حسب" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "ترتيب" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "المصدر" @@ -4551,7 +4625,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "خطأ بتسجيل الدخول لـ Spotify" @@ -4559,7 +4633,7 @@ msgstr "خطأ بتسجيل الدخول لـ Spotify" msgid "Spotify plugin" msgstr "ملحق Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "ملحق Spotify غير مثبت." @@ -4567,77 +4641,77 @@ msgstr "ملحق Spotify غير مثبت." msgid "Standard" msgstr "قياسي" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "مميز" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "ابدء النسخ" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "ابدأ قئمة التشغيل اللتي تعمل حالياً" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "ابدأ التحويل" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "ابدأ بكتابة شيء ما في خانة البحث أعلاه لملء هذه اللائحة من النتائج" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "بدأ %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "بدأ..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "محطات" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "إيقاف" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "إيقاف بعد" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "أوقف بعد هذا المقطع" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "أوقف التشغيل" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "أوقف التشغيل بعد المقطع الحالي" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "أوقف التشغيل بعد المقطع: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "تم الايقاف" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "المجرى" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4647,7 +4721,7 @@ msgstr "الاستماع للموسيقى من خادوم Subsonic يتطلب ر msgid "Streaming membership" msgstr "عضوية الاستماع لتيارات الانترنت" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "قوائم التشغيل المشترك بها" @@ -4655,7 +4729,7 @@ msgstr "قوائم التشغيل المشترك بها" msgid "Subscribers" msgstr "المشتركون" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4663,12 +4737,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "نجاح!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "تم كتابة %1 بنجاح" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "وسوم مقترحة" @@ -4677,13 +4751,13 @@ msgstr "وسوم مقترحة" msgid "Summary" msgstr "ملخص" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "عالي جدا (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "عالي جدا (2048x2048)" @@ -4695,43 +4769,35 @@ msgstr "الصيغ المدعومة" msgid "Synchronize statistics to files now" msgstr "زامن الإحصائيات مع الملفات الآن" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "مزامنة صندوق بريد Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "مزامنة قائمة تشغيل Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "مزامنة مقاطع Spotify المميزة" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "ألوان النظام" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "الألسنة فوق" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "وسم" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "جالب الوسوم" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "راديو الوسوم" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "بدّل الصبيب" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4739,11 +4805,11 @@ msgstr "Techno" msgid "Text options" msgstr "خيارات النص" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "الشكر لـ" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "تعذر تشغيل الأمر %1." @@ -4752,17 +4818,12 @@ msgstr "تعذر تشغيل الأمر %1." msgid "The album cover of the currently playing song" msgstr "غلاف ألبوم المقطع المشغل حاليا" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "المسار %1 غير صالح" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "قائمة التشغيل '%1' فارغة أو تعذر تحميلها." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "يجب أن تكون القيمة الثانية أكبر من القيمة الأولى!" @@ -4770,40 +4831,40 @@ msgstr "يجب أن تكون القيمة الثانية أكبر من القي msgid "The site you requested does not exist!" msgstr "الموقع الذي طلبته غير موجود!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "الموقع الذي طلبته ليس بصورة!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "لقد انتهت المدة التجريبية لخادم Subsonic. الرجاء التبرع للحصول على مفتاح رخصة. لمزيد من التفاصيل زر subsonic.org." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "إصدار كلمنتاين الذي حدثت إليه يتطلب القيام بفحص شامل للمكتبة من جديد لدعم ميزات الإصدار الجديدة المذكورة أسفله:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "هناك مقاطع أخرى في هذا الألبوم" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "حدث خطأ في الاتصال مع gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "واجه كلمنتاين مشاكل عند جلب المعلومات من Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "حدثت مشكلة أثناء القراءة من متجر iTunes" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4815,13 +4876,13 @@ msgid "" "deleted:" msgstr "واجه كلمنتاين مشاكل عند حذف بعض المقاطع. تعذر حذف المقاطع التالية:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "سيتم حذف هذه الملفات من الجهاز. هل أنت متأكد من رغبتك بالاستمرار؟" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4841,13 +4902,13 @@ msgstr "تستخدم هذه الإعدادات في نافذة \"تحويل ال msgid "Third level" msgstr "المستوى الثالث" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "سيترتب عن هذه العملية إنشاء قاعدة بيانات يمكن أن تصل لـ 150 ميجابايت.\nهل تريد الاستمرار رغم ذلك؟" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "هذا الألبوم غير متوفر بالصيغة المطلوبة" @@ -4861,11 +4922,11 @@ msgstr "يجب وصل هذا الجهاز وفتحه قبل أن يتمكن كل msgid "This device supports the following file formats:" msgstr "يدعم هذا الجهاز الصيغ التالية:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "لن يشتغل هذا الجهاز بصفة سليمة" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "هذا جهاز MTP، لكنك ثبت كلمنتاين دون دعم مكتبة libmtp." @@ -4874,7 +4935,7 @@ msgstr "هذا جهاز MTP، لكنك ثبت كلمنتاين دون دعم م msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "هذا جهاز آيبود، لكنك ثبت كلمنتاين دون دعم مكتبة libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4884,33 +4945,33 @@ msgstr "هذه أول مرة تقوم بوصل هذا الجهاز. سيعمل msgid "This option can be changed in the \"Behavior\" preferences" msgstr "يمكن تغيير هذه الخاصية من إعدادات \"السلوك\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "هذا التيار للاشتراكات المدفوعة فقط" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "هذا النوع من الأجهزة غير مدعوم: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "العنوان" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "لتشغيل راديو Grooveshark، عليك أولا الاستماع لبعض المقاطع الأخرى على Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "اليوم" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "بدّل تنبيهات كلمنتاين" @@ -4918,27 +4979,27 @@ msgstr "بدّل تنبيهات كلمنتاين" msgid "Toggle fullscreen" msgstr "بدّل نمط ملء الشاشة" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "بدّل حالة لائحة الانتظار" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "بدّل حالة نقل المعلومات المستمع إليها" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "بدّل حالة الإظهار على الشاشة" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "غدا" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "إعادات توجيه كثيرة جدا" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "أفضل المقاطع" @@ -4946,21 +5007,25 @@ msgstr "أفضل المقاطع" msgid "Total albums:" msgstr "إجمالي الألبومات:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "إجمالي البايتات المرسلة" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "إجمالي طلبات الشبكة " -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "المقطوعة" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "المسارات" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "تحويل الصوتيات" @@ -4972,7 +5037,7 @@ msgstr "سجل محول الصوتيات" msgid "Transcoding" msgstr "تحويل الصوتيات" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "جاري تحويل %1 ملفات على %2 أشغال" @@ -4981,11 +5046,11 @@ msgstr "جاري تحويل %1 ملفات على %2 أشغال" msgid "Transcoding options" msgstr "إعدادات تحويل الصوتيات" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4993,72 +5058,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "إيقاف تشغيل" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "رابط(روابط)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "كلمة السر" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "اسم المستخدم" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra wide band (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "تعذر تحميل %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "مجهول" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "نوع محتوى غير معروف" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "خطأ مجهول" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "ألغ الغلاف" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "إلغاء تجاوز المسارات المختارة" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "إلغاء تجاوز المسار" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "ألغ الاشتراك" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "الحفلات القادمة" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "تحديث" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "حدّث قائمة تشغيل Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "حدّث جميع البودكاست" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "حدّث المجلدات التي تغيرت في المكتبة" @@ -5066,7 +5131,7 @@ msgstr "حدّث المجلدات التي تغيرت في المكتبة" msgid "Update the library when Clementine starts" msgstr "حدّث المكتبة عند بدء كلمنتاين" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "حدّث هذا البودكاست" @@ -5074,21 +5139,21 @@ msgstr "حدّث هذا البودكاست" msgid "Updating" msgstr "جاري التحديث" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "جاري تحديث %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "جاري تحديث %1%" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "تحديث المكتبة" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "الإستخدام" @@ -5096,11 +5161,11 @@ msgstr "الإستخدام" msgid "Use Album Artist tag when available" msgstr "استخدم وسم فنان الألبوم إن كان متوفرا" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "استخدم مفاتيح اختصارات جنوم" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "استخدم معلومات Replay Gain إن كانت متوفرة" @@ -5120,7 +5185,7 @@ msgstr "استخدم تجميعة ألوان مخصصة" msgid "Use a custom message for notifications" msgstr "استخدم رسالة مخصصة للتنبيهات" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "استخدم شبكة تحكم عن بعد" @@ -5160,20 +5225,20 @@ msgstr "استخدام إعدادات النظام للبروكسي" msgid "Use volume normalisation" msgstr "استخدم تسوية الصوت" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "مستعمل" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "المستخدم %1 لا يملك حساب Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "واجهة المستخدم" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5195,12 +5260,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "معدل بت متغير" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "فنانون متنوعون" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "النسخة %1" @@ -5213,7 +5278,7 @@ msgstr "عرض" msgid "Visualization mode" msgstr "نمط التأثيرات المرئية" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "التأثيرات المرئية" @@ -5221,11 +5286,15 @@ msgstr "التأثيرات المرئية" msgid "Visualizations Settings" msgstr "إعدادات التأثيرات المرئية" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "VK.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "تحديد نشاط الصوت" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "شدة الصوت %1%" @@ -5243,11 +5312,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "نبهني عند إغلاق لسان قائمة تشغيل" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5255,7 +5324,7 @@ msgstr "Wav" msgid "Website" msgstr "الموقع" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "الأسابيع" @@ -5281,32 +5350,32 @@ msgstr "لما لا تجرب..." msgid "Wide band (WB)" msgstr "Wide band (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "أداة التحكم عن بعد لـ Wii %1: مفعلة" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "أداة التحكم عن بعد لـ Wii %1: متصلة" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "أداة التحكم عن بعد لـ Wii %1: بطارية في حالة حرجة (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "أداة التحكم عن بعد لـ Wii %1: غير مفعلة" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "أداة التحكم عن بعد لـ Wii %1: غير متصلة" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: بطارية ضعيفة (%2%)" @@ -5327,7 +5396,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5335,25 +5404,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "بدون أغلفة:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "هل ترغب بنقل المقاطع الأخرى في هذا الألبوم لفئة فنانون متنوعون؟" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "هل ترغب بالقيام بفحص شامل الآن؟" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "أكتب جميع إحصائيات المقاطع في ملفات المقاطع" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "اسم مستخدم أو كلمة سر خاطئة." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5365,11 +5434,11 @@ msgstr "السنة" msgid "Year - Album" msgstr "سنة - البوم" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "السنوات" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "أمس" @@ -5377,13 +5446,13 @@ msgstr "أمس" msgid "You are about to download the following albums" msgstr "أنت بصدد تحميل الألبومات التالية" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "أنت على وشك حذف %1 قوائم تشغيل من المفضلة، هل أنت متأكد من ذلك؟" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5393,12 +5462,12 @@ msgstr "أنت على وشك حذف قائمة تشغيل لا تنتمي لقو msgid "You are not signed in." msgstr "أنت غير متصل." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "أنت متصل بصفتك %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "أنت متصل." @@ -5406,13 +5475,13 @@ msgstr "أنت متصل." msgid "You can change the way the songs in the library are organised." msgstr "يمكنك تغيير طريقة ترتيب المقاطع في المكتبة" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "يمكنك الاستماع للمقاطع دون إنشاء حساب، لكن من له حساب مميز يمكنه الاستماع للمقاطع بجودة أعلى ودون إشهارات." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5422,13 +5491,6 @@ msgstr "يمكنك الاستماع للمقاطع من Magnatude مجانا د msgid "You can listen to background streams at the same time as other music." msgstr "يمكنك الاستماع لتيارات في الخلفية في نفس الوقت الذي تستمع فيه لمقاطع أخرى." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "يكنك نقل معلومات المقاطع التي تستمع لها مجانا، لكن فقط المشتركون يمكنهم الاستماع لـ Last.fm من كلمنتاين." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "يمكنك استعمال أداة التحكم عن بعد لـ Wii كأداة تحكم عن بعد بكلمنتاين. شاهد هذه الصفحة في توثيق كلمنتاين لمزيد كم المعلومات.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "لا تملك حساب Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "لا تملك حساب Spotify مدفوع." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "ليس لديك اشتراك مفعل" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "ليس عليك أن تسجل دخولك حتى تبحث وتستمع إلى SoundCloud. لكن إذا أردت دخول قوائم تشغيلك وسير نشاطك فإنه عليك أن تسجل الدخول." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "لقد تم تسجيل خروجك من Spotify، الرجاء إعادة إدخال كلمة السر في نافذة الإعدادات." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "لقد تم تسجيل خروجك من Spotify، الرجاء إعادة إدخال كلمة السر." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "هذا المقطع يعجبك" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "عليك أن تستخدم تفضيلات النظام وتمكن كليمينتين من \"التحكم في حاسوبك\" لتستخدم الاختصارات العامة في كليمينتين." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5473,17 +5549,11 @@ msgstr "يجب أن تشغل تفضيلات النظام وتفعل \"\n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/clementine/language/be/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Language: be\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -43,9 +43,9 @@ msgstr "дзён" msgid " kbps" msgstr " Кбіт/c" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " мс" @@ -58,11 +58,16 @@ msgstr " пунктаў" msgid " seconds" msgstr " с" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "кампазыцыі" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 альбом(аў)" @@ -72,12 +77,12 @@ msgstr "%1 альбом(аў)" msgid "%1 days" msgstr "%1 дзён" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 дзён таму" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 на %2" @@ -87,48 +92,48 @@ msgstr "%1 на %2" msgid "%1 playlists (%2)" msgstr "%1 плэйлістоў (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 абрана з" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 кампазыцыя" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 кампазыцый" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 кампазыцый знойдзена" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 кампазыцый знойдзена (паказана %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 трэкаў" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 перададзены" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: модуль Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 іншыx слухачоў" @@ -142,18 +147,21 @@ msgstr "%L1 прайграваньняў увогуле" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n з памылкай" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n завершана" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n засталося" @@ -165,24 +173,24 @@ msgstr "&Выраўнаць тэкст" msgid "&Center" msgstr "Па &цэнтры" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Іншы" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Пашырэньні" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Даведка" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Схаваць %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Схаваць..." @@ -190,23 +198,23 @@ msgstr "&Схаваць..." msgid "&Left" msgstr "&Зьлева" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Музыка" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Няма" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Плэйліст" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Выйсьці" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Рэжым паўтору" @@ -214,23 +222,23 @@ msgstr "Рэжым паўтору" msgid "&Right" msgstr "&Справа" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Рэжым мяшаньня" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Выраўнаць слупкі па памеры вакна" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Iнструмэнты" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(розны праз некалькі кампазыцый)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...і ўсім стваральнікам Amarok" @@ -250,14 +258,10 @@ msgstr "0px" msgid "1 day" msgstr "1 дзень" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 кампазыцыя" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -267,7 +271,7 @@ msgstr "128к MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 выпадковых трэкаў" @@ -275,12 +279,6 @@ msgstr "50 выпадковых трэкаў" msgid "Upgrade to Premium now" msgstr "Абнавіць да вэрсіі Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -291,6 +289,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

калі не праверана, Clementine будзе спрабаваць захоўваць вашыя ацэнкі і іншую статыстыку толькі ў асобныя базы дадзеных і ня будзе зьмяняць вашыя файлы.

Калі праверана, ён будзе захоўваць статыстыку разам у базу дадзеных і непасрэдна ў файл кожны раз калі яна зьмяняецца.

Калі ласка памятайце, што гэта можа не працаваць для кожнага фармату і, так як няма асобнага стандарту для гэтага, іншыя музычныя плэеры могуць не прачытаць яе." +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -299,38 +308,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Палі пачынаюцца са знака %, напрыклад: %artist %album %title

\n

Калі вы абмежавалі частку тэкста фігурнымі дужкамі, то гэтая частка тэкста ня будзе бачная, калі значэньні палёў будуць пустымі

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Патрабуецца акаўнт Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Патрабуецца акаўнт Spotify Premium." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Кліент можа падключыцца толькі калі быў уведзены правільны код." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Смарт-плэйліст - гэта дынамічны сьпіс кампазыцый з Вашай бібліятэкі. Існуюць розныя тыпы смарт-плэйлістоў, якія прапануюць розныя спосабы выбару кампазыцый" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Кампазыцыя будзе дададзеная ў плэйліст, калі адпавядае гэтым умовам." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z (А-Я)" @@ -350,36 +359,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "УСЯ СЛАВА ГІПНАЖАБЕ!" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Адмена" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Пра %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Пра праграму Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Пра Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Дэталі акаўнта" @@ -391,11 +399,15 @@ msgstr "Дэталі акаўнта (вэрсія Premium)" msgid "Action" msgstr "Дзеяньне" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Актываваць/дэактываваць Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Дадаць Подкаст" @@ -411,39 +423,39 @@ msgstr "Дадаць новы радок, калі падтрымліваецц msgid "Add action" msgstr "Дадаць дзеяньне" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Дадаць іншае струменевае вяшчанне" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Дадаць каталёг" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Дадаць файл" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Дадаць файл..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Дадаць файлы для перакадаваньня" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Дадаць каталёг" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Дадаць каталёг..." @@ -455,11 +467,11 @@ msgstr "Дадаць новы каталёг..." msgid "Add podcast" msgstr "Дадаць подкаст" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Дадаць подкаст..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Дадаць умову пошуку" @@ -523,6 +535,10 @@ msgstr "Дадаць колькасьць пропускаў" msgid "Add song title tag" msgstr "Дадаць тэг \"Назва\"" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Дадаць тэг \"Нумар трэку\"" @@ -531,22 +547,34 @@ msgstr "Дадаць тэг \"Нумар трэку\"" msgid "Add song year tag" msgstr "Дадаць тэг \"Год\"" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Дадаць струмень..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Дадаць у абранае Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Дадаць у плэйлісты Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Дадаць у іншы плэйліст" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Дадаць у плэйліст" @@ -555,6 +583,10 @@ msgstr "Дадаць у плэйліст" msgid "Add to the queue" msgstr "Дадаць у чаргу" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Дадаць дзеяньне wiimotedev" @@ -584,15 +616,15 @@ msgstr "Дададзена сёньня" msgid "Added within three months" msgstr "Дададзена за тры месяцы" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Даданьне кампазыцыі ў Маю Музыку" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Дадаем песьню ў абраныя" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Пашыраная сартоўка" @@ -600,12 +632,12 @@ msgstr "Пашыраная сартоўка" msgid "After " msgstr "Пасьля" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Пасьля капіяваньня..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -613,11 +645,11 @@ msgstr "Пасьля капіяваньня..." msgid "Album" msgstr "Альбом" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Альбом (ідэальная гучнасьць для ўсіх трэкаў)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -627,35 +659,36 @@ msgstr "Выканаўца альбому" msgid "Album cover" msgstr "Вокладка альбому" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Інфармацыя аб альбоме на jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Альбомы з вокладкамі" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Альбомы бяз вокладак" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Усе файлы (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Уся слава Гіпнажабе!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Усе альбомы" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Усе выканаўцы" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Усе файлы (*)" @@ -664,19 +697,19 @@ msgstr "Усе файлы (*)" msgid "All playlists (%1)" msgstr "Усе спісы прайгравання (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Усе перакладчыкі" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Усе кампазіцыі" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -701,30 +734,30 @@ msgstr "Заўсёды паказваць галоўнае акно" msgid "Always start playing" msgstr "Заўсёды пачынаць прайграваньне" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Патрабуецца дадатковы плагін для выкарыстаньня Spotify у Clementine. Жадаеце спампаваць і ўсталяваць яго?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Адбылася памылка пры загрузке дадзеных iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Адбылася памылка пры запісе мэта-дадзеных в '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Адбылася невядомая памылка" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "І:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Злы" @@ -733,13 +766,13 @@ msgstr "Злы" msgid "Appearance" msgstr "Зьнешні выгляд" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Дадаць файлы/URLs ў плэйліст" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Дадаць у бягучы плэйліст" @@ -747,52 +780,47 @@ msgstr "Дадаць у бягучы плэйліст" msgid "Append to the playlist" msgstr "Дадаць у плэйліст" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Ужыць кампрэсію для прадухіленьня скажэнняў" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Вы сапраўды жадаеце выдаліць прэсэт \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Вы сапраўды жадаеце выдаліць гэты плэйліст?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Вы сапраўды жадаеце ачысьціць статыстыку гэтых песень?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Выканаўца" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Пра Артыста" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Радыё выканаўцы" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Тэгі выканаўцы" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Ініцыялы выканаўцы" @@ -800,9 +828,13 @@ msgstr "Ініцыялы выканаўцы" msgid "Audio format" msgstr "Фармат аўдыё" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Памылка аўтэнтыфікацыі" @@ -810,7 +842,7 @@ msgstr "Памылка аўтэнтыфікацыі" msgid "Author" msgstr "Аутар" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Аўтары" @@ -826,7 +858,7 @@ msgstr "Аўтаматычнае абнаўленьне" msgid "Automatically open single categories in the library tree" msgstr "Аўтаматычна адкрываць адзіночныя катэгорыі ў дрэве калекцыі" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Даступна" @@ -834,15 +866,15 @@ msgstr "Даступна" msgid "Average bitrate" msgstr "Сярэдні бітрэйт" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Прыкладны памер выявы" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Подкасты BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +895,7 @@ msgstr "Фонавая выява" msgid "Background opacity" msgstr "Празрыстасьць фону" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Рэзэрвнае капіяваньне базы дадзеных" @@ -871,11 +903,7 @@ msgstr "Рэзэрвнае капіяваньне базы дадзеных" msgid "Balance" msgstr "Балянс" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Забараніць" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Аналізатар палосамі" @@ -895,18 +923,17 @@ msgstr "Паводзіны" msgid "Best" msgstr "Найлепшая" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Біяграфія з %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Бітрэйт" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -914,7 +941,12 @@ msgstr "Бітрэйт" msgid "Bitrate" msgstr "Бітрэйт" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Аналізатар блёкамі" @@ -930,7 +962,7 @@ msgstr "Ступень размыцьця" msgid "Body" msgstr "Зьмесьціва" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Пад'ём аналізатару" @@ -944,11 +976,11 @@ msgstr "Box" msgid "Browse..." msgstr "Агляд..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Працяжнасьць буфэру" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Буфэрызацыя" @@ -960,43 +992,66 @@ msgstr "Гэтыя крыніцы адключаныя:" msgid "Buttons" msgstr "Клявішы" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Падтрымка CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Адмена" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Абярыце вокладку" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Зьмяніць памер шрыфту..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Зьмяніць рэжым паўтарэньня" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Зьмяніць камбінацыю клявішаў..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Зьмяніць рэжым мяшаньня" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Зьмяніць мову" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1006,15 +1061,19 @@ msgstr "Зьмяненьне наладаў прайграваньня мона msgid "Check for new episodes" msgstr "Праверыць новыя выпускі" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Праверыць абнаўленьні..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Пазначце імя для смарт-плэйліста" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Выбраць аўтаматычна" @@ -1030,11 +1089,11 @@ msgstr "Абраць шрыфт" msgid "Choose from the list" msgstr "Выбар са сьпісу" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Выбраць, як плэйліст адсартаваны і колькі ў ім будзе песень." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Абраць каталёг для загрузкі подкастаў" @@ -1043,7 +1102,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Выберыце сайт, які Clementine будзе выкарыстоўваць для пошуку тэкстаў песень." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Клясычная" @@ -1051,17 +1110,17 @@ msgstr "Клясычная" msgid "Cleaning up" msgstr "Ачыстка" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Ачысьціць" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Ачысьціць плэйліст" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1074,8 +1133,8 @@ msgstr "Памылка Clementine" msgid "Clementine Orange" msgstr "Памаранчовы Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Візуалізацыя Clementine" @@ -1097,9 +1156,9 @@ msgstr "Clementine можа прайграваць музыку, якую вы msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine можа граць музыку на вашым Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine можа прайграваць музыку, якую вы загрузілі на Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1112,20 +1171,13 @@ msgid "" "an account." msgstr "Clementine можа сынхранізаваць вашыя падпіскі з іншымі кампутарамі й прылажэньнямі. Create an account." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine ня можа загрузіць якою-небудзь візуалізацыю projectM. Праверце, што ўсталявалі Clementine правільна." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine ня змог атрымаць статус вашай падпіскі з-за праблем са злучэньнем. Прайграныя трэкі будуць кэшаваныя і адпраўленыя на Last.fm пазьней." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Прагляд малюнкаў у Clementine" @@ -1137,11 +1189,11 @@ msgstr "Clementine ня змог знайсьці вынікі па запыце msgid "Clementine will find music in:" msgstr "Clementine будзе шукаць тут:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Націсьніце тут, каб дадаць музыку" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1151,7 +1203,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Націсьніце для пераключэньня паміж часам, які застаецца і поўнай працягласьцю" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1166,19 +1221,19 @@ msgstr "Зачыніць" msgid "Close playlist" msgstr "Зачыніць плэйліст" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Зачыніць візуалізацыю" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Закрыцьцё гэтага вакна адменіць загрузку." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Закрыцьцё гэтага вакна спыніць пошук вокладак альбомаў." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Клюбны" @@ -1186,73 +1241,78 @@ msgstr "Клюбны" msgid "Colors" msgstr "Колеры" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Падзелены коскамі сьпіс \"кляс:узровень\", дзе ўзровень ад 0 да 3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Камэнтар" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Аўтаматычна запоўніць тэгі" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Аўтаматычна запоўніць тэгі..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Кампазытар" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Наладзіць %1" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Наладзіць Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Наладзіць Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Наладзіць Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Камбінацыі клявішаў" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Наладзіць Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Наладзіць Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Наладзіць глябальны пошук..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Наладзіць калекцыю..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Наладзіць подкасты..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Наладзіць..." @@ -1260,11 +1320,11 @@ msgstr "Наладзіць..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Падключыць пульт Wii, выкарыстоўваючы актывацыю/дэактывацыю" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Падлучыць прыладу" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Падключэньне да Spotify" @@ -1274,12 +1334,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Кансоль" @@ -1295,17 +1359,21 @@ msgstr "Канвэртаваць ўсю музыку" msgid "Convert any music that the device can't play" msgstr "Канвэртаваць ўсю музыку, якую можа прайграваць прылада." -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Скапіяваць у буфэр" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Капіяваць на прыладу..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Капіяваць у калекцыю..." @@ -1313,156 +1381,152 @@ msgstr "Капіяваць у калекцыю..." msgid "Copyright" msgstr "Копірайт" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Немагчыма злучыцца з Subsonic, праверце URL. Прыклад: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Немагчыма стварыць элемент GStreamer \"%1\" - пераканайцеся, што ў вас усталяваныя ўсе неабходныя плагіны GStreamer" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Немагчыма знайсці мультыплексар для %1. Пераканайцеся, што ў вас усталяваныя неабходныя плагіны GStreamer." -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Немагчыма знайсці кадавальнік для %1, праверце, што ўсталяваныя ўсе неабходныя плагіны GStreamer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Немагчыма загрузіць радыёстанцыю last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Немагчыма адкрыць выходны файл %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Мэнэджэр вокладак" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Вокладка са ўбудаванай выявы" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Вокладка загружаная аўтаматычна з %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Вокладка самастойна адключаная" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Вокладка не заданая" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Вокладка заданая з %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Вокладкі з %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Стварыць новы плэйліст Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Кросфэйд пры аўтаматычнай зьмене трэку" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Кросфэйд пры ручной змене трэку" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1470,7 +1534,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Карыстальніцкі" @@ -1482,54 +1546,50 @@ msgstr "Карыстальніцкая выява:" msgid "Custom message settings" msgstr "Налады паведамленьня" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Карыстальніцкае радыё" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Карыстальніцкі..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus path" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Танцавальны" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "База дадзеных пашкоджаная. Калі ласка прачытайце https://code.google.com/p/clementine-player/wiki/DatabaseCorruption для інструкцыяў па аднаўленьню." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Дата стварэньня" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Дата зьмены" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Дзень (дня, дзён)" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Па &змоўчаньні" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Паменьшыць гучнасьць на 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Памяншаць гучнасьць на адсоткаў" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Паменьшыць гучнасьць" @@ -1537,6 +1597,11 @@ msgstr "Паменьшыць гучнасьць" msgid "Default background image" msgstr "Карыстальніцкая выява па-змоўчаньні:" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Па змоўчаньні" @@ -1545,30 +1610,30 @@ msgstr "Па змоўчаньні" msgid "Delay between visualizations" msgstr "Затрымка паміж візуалізацыямі" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Выдаліць" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Выдаліць плэйліст Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Выдаліць спампаваныя дадзеныя" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Выдаліць файлы" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Выдаліць з прылады" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Выдаліць з дыску..." @@ -1576,31 +1641,31 @@ msgstr "Выдаліць з дыску..." msgid "Delete played episodes" msgstr "Выдаліць праслуханыя выпускі" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Выдаліць прэсэт" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Выдаліць смарт-плэйліст" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Выдаліць арыгінальныя файлы" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Выдаленьне файлаў" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Прыбраць з чаргі абраныя трэкі" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Прыбраць трэк з чаргі " -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Назначэньне" @@ -1609,7 +1674,7 @@ msgstr "Назначэньне" msgid "Details..." msgstr "Падрабязнасьці..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Прылада" @@ -1621,15 +1686,15 @@ msgstr "Уласьцівасьці прылады" msgid "Device name" msgstr "Імя прылады" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Уласьцівасьці прылады..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Прылады" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1666,12 +1731,17 @@ msgstr "Адключыць працягласьць" msgid "Disable moodbar generation" msgstr "Выключыць генэрацыю панэлі настрою" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Выключана" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Дыск" @@ -1681,15 +1751,15 @@ msgid "Discontinuous transmission" msgstr "Бесперапынная перадача" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Налады адлюстраваньня" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Паказваць экраннае апавяшчэньне" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Перасканаваць бібліятэку" @@ -1701,27 +1771,27 @@ msgstr "Не канвэртаваць ніякую музыку" msgid "Do not overwrite" msgstr "Не перазапісваць" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Не паўтараць" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Не паказваць у \"Розных выканаўцах\"" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ня зьмешваць" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Не спыняць!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Ахвяраваць" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Двайная пстрычка для адкрыцьця" @@ -1729,12 +1799,13 @@ msgstr "Двайная пстрычка для адкрыцьця" msgid "Double clicking a song will..." msgstr "Двайны клік на песьні" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Спампаваць %n сэрыяў" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Каталёг загрузак" @@ -1750,7 +1821,7 @@ msgstr "\"Download\" падпіска" msgid "Download new episodes automatically" msgstr "Пампаваць новыя выпускі аўтаматычна" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Запампоўка даданая ў чаргу" @@ -1758,15 +1829,15 @@ msgstr "Запампоўка даданая ў чаргу" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Загрузіць гэты альбом" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Спампаваць гэты альбом..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Спампаваць гэтую сэрыю" @@ -1774,7 +1845,7 @@ msgstr "Спампаваць гэтую сэрыю" msgid "Download..." msgstr "Спампаваць..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Пампаваньне (%1%)..." @@ -1783,23 +1854,23 @@ msgstr "Пампаваньне (%1%)..." msgid "Downloading Icecast directory" msgstr "Запампоўка дырэкторыі lcecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Запампоўка каталёга Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Спампаваць каталог Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Запампоўка плагіна Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Запампоўка мэтададзеных" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Цягнеце для перамяшчэння" @@ -1819,20 +1890,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Дынамічны рэжым уключаны" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Выпадковы дынамічны мікс" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Рэдагаваць смарт-плэйліст" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Рэдагаваць тэг..." @@ -1844,16 +1915,16 @@ msgstr "Рэдагаваць тэгі" msgid "Edit track information" msgstr "Рэдагаваньне інфарамацыі аб кампазыцыі" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Рэдагаваць інфармацыю аб кампазыцыі..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Рэдагаваць інфармацыю аб кампазыцыях..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Рэдагаваць..." @@ -1861,6 +1932,10 @@ msgstr "Рэдагаваць..." msgid "Enable Wii Remote support" msgstr "Уключыць падтрымку Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Задзейнічаць эквалайзэр" @@ -1875,7 +1950,7 @@ msgid "" "displayed in this order." msgstr "Уключыць пералічаныя ніжэй крыніцы, каб уключыць іх у вынікі пошуку. Вынікі будуць адлюстраваныя ў гэтым парадку." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Уключыць/выключыць скроблінг Last.fm" @@ -1903,15 +1978,10 @@ msgstr "Уведзьце URL для пампаваньня вокладки з msgid "Enter a filename for exported covers (no extension):" msgstr "Уведзьце імя файла для экспартаванае вокладкі (без пашырэньня)" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Уведзьце новае імя для гэтага плэйлісту" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Уведзьце выканаўцу ці тэг каб слухаць радыё Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1925,7 +1995,7 @@ msgstr "Уведзьце ключавыя словы для пошуку ў iTun msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Уведзьце ключавыя словы для пошуку ў gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Пошук..." @@ -1934,11 +2004,11 @@ msgstr "Пошук..." msgid "Enter the URL of an internet radio stream:" msgstr "Уведзьце адрас радыёпатоку:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Уведзьце імя тэчкі" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Уведзьце гэты IP у Прыкладаньні для падлучэньня да Clementine." @@ -1946,21 +2016,22 @@ msgstr "Уведзьце гэты IP у Прыкладаньні для падл msgid "Entire collection" msgstr "Уся калекцыя" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Эквалайзэр" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Аналягічна --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Аналягічна --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Памылка" @@ -1968,38 +2039,38 @@ msgstr "Памылка" msgid "Error connecting MTP device" msgstr "Памылка падлучэньня да прылады MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Памылка капіяваньня песень" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Памылка выдаленьня песень" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Памылка запампоўкі плагіна Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Памылка загрузкі %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Памылка пры загрузке плэйлісту di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Памылка пры апрацоўке %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Памылка пры загрузке Аўдыё CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Прайграных хоць калі" @@ -2031,7 +2102,7 @@ msgstr "Кожныя 6 гадзінаў" msgid "Every hour" msgstr "Кожную гадзіну" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Акрамя трэкаў з аднаго й таго ж альбому ці CUE-файлу" @@ -2043,7 +2114,7 @@ msgstr "Існыя вокладкі" msgid "Expand" msgstr "Разгарнуць" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Тэрмін дзеяньня мінае %1" @@ -2064,36 +2135,36 @@ msgstr "Экспартаваць спампаваныя вокладкі" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Экспартаваньне скончана" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Экспартавана %1 вокладак(кі) з %2 (%3 прапушчана)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2103,42 +2174,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Плаўная паўза / працяг" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Згасаць пры спыненьні прайграваньня" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Згасаньне" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Працягласьць згасаньня" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Памылка атрыманьне каталёгу" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Памылка атрыманьня подкастаў" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Памылка загрузкі подкастаў" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Памылка разбору XML у дадзенай RSS падпісцы" @@ -2147,11 +2218,11 @@ msgstr "Памылка разбору XML у дадзенай RSS падпісц msgid "Fast" msgstr "Хутка" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Улюбёныя" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Улюбёныя трэкі" @@ -2167,11 +2238,11 @@ msgstr "Выбіраць аўтаматычна" msgid "Fetch completed" msgstr "Дадзеныя атрыманыя" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Складаньне бібліятэкі Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Памылка пошуку вокладкі" @@ -2179,7 +2250,7 @@ msgstr "Памылка пошуку вокладкі" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Пашырэньне файлу" @@ -2187,19 +2258,23 @@ msgstr "Пашырэньне файлу" msgid "File formats" msgstr "Фарматы файлаў" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Імя файла" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Імя файла (без указаньня шляху)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Памер файлу" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2209,7 +2284,7 @@ msgstr "Тып файлу" msgid "Filename" msgstr "Имя файлу" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Файлы" @@ -2217,15 +2292,19 @@ msgstr "Файлы" msgid "Files to transcode" msgstr "Файлы для перакадаваньня" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Знайсьці песьні ў вашай бібліятэцы, якія адпавядаюць пазначаным" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Дактыласкапаваньне песьні" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Гатова" @@ -2233,7 +2312,7 @@ msgstr "Гатова" msgid "First level" msgstr "Першы ўзровень" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2249,12 +2328,12 @@ msgstr "Праз ліцэнзыйныя згаджэньні падтрымка msgid "Force mono encoding" msgstr "Прымусовае кадаваньне ў мона" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Забыць прыладу" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2269,7 +2348,7 @@ msgstr "Калі выбраць \"Забыць прыладу\", то яна б #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2297,31 +2376,23 @@ msgstr "Чашчыня кадраў" msgid "Frames per buffer" msgstr "Фрэймаў на буфэр" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Сябры" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Зьмерзлы" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Рухавічок аўдыё GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Агульныя" @@ -2329,30 +2400,30 @@ msgstr "Агульныя" msgid "General settings" msgstr "Агульныя налады" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Атрымаць URL на гэты плэйліст Grooveshark." -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Атрымаць URL на гэтую песьню ў Grooveshark." -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Атрыманьне папулярных песень на Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Атрыманьне каналаў" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Атрыманьне струменяў" @@ -2364,11 +2435,11 @@ msgstr "Даць імя:" msgid "Go" msgstr "Перайсьці" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Перайсьці да наступнага сьпісу прайграваньня" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Перайсьці да папярэдняга сьпісу прайграваньня" @@ -2376,7 +2447,7 @@ msgstr "Перайсьці да папярэдняга сьпісу прайгр msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2386,7 +2457,7 @@ msgstr "Атрымана %1 вокладак з %2 (%3 атрымаць не ў msgid "Grey out non existent songs in my playlists" msgstr "Адзначаць шэрым няісныя песьні ў плэйлістах" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2394,15 +2465,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Памылка пры ўваходзе на сэрвіс Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Спасылкі на плэйліст Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Радыё Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Спасылка песьні на Grooveshark" @@ -2410,44 +2481,44 @@ msgstr "Спасылка песьні на Grooveshark" msgid "Group Library by..." msgstr "Сартаваць Бібліятэку па..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Згрупаваць па" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Сартаваць па Альбом" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Сартаваць па Выканаўца" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Сартаваць па Выканаўца/Альбом" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Сартаваць па Выканаўца/Год - Альбом" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Сартаваць па Жанр/Альбом" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Сартаваць па Жанр/Выканаўца/Альбом" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Групаваньне" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML-старонка не зьмяшчае RSS-падпісак" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2456,7 +2527,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP проксі" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Шчасьлівы" @@ -2472,25 +2543,25 @@ msgstr "Інфармацыя пра абсталяваньне даступна msgid "High" msgstr "Высокі" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Высокі (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Высокая (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Гадзін(ы)" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Гіпнажаба" @@ -2502,15 +2573,15 @@ msgstr "У мяне няма акаўнту Magnatune" msgid "Icon" msgstr "Іконка" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Іконкі ўверсе" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Вызначэньне песьні" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2520,24 +2591,24 @@ msgstr "Калі працягваць, то прылада будзе праца msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Калі вы ведаеце URL подкасту, уведзьце яго сюды і націсьніце Go." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ігнараваць \"The\" ў імені выканаўцы" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Выявы (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Выявы (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Праз %1 дзён (дні)" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Праз %1 тыдняў (тыдні)" @@ -2548,7 +2619,7 @@ msgid "" "time a song finishes." msgstr "У дынамічнам рэжыме новыя трэкі выбіраюцца й дадаюцца ў сьпіс прайграваньня кожны раз, калі зьвяршаецца чарговая песьня." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Уваходныя" @@ -2560,36 +2631,36 @@ msgstr "Уключыць вокладку ў апавяшчэньні" msgid "Include all songs" msgstr "Уключыць усе песьні" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Несумяшчальная вэрсія пратаколу Subsonic REST. Трэба абнавіць кліент." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Несумяшчальная вэрсія пратаколу Subsonic REST. Трэба абнавіць сэрвэр." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Павялічыць гучнасьць на 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Павялічваць гучнасьць на адсоткаў" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Павялічыць гучнасьць" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Індэксуем %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Сьведкі" @@ -2597,55 +2668,55 @@ msgstr "Сьведкі" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Устаўка" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Усталявана" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Праверка цельнасьці" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Інтэрнэт" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Інтрэрнэт правайдэры" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Нявправільны ключ API" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Няверны фармат" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Няправільны мэтад" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Няверныя парамэтры" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Няправільна ўказаная крыніца" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Няправільная служба" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Няправільны ключ сэсіі" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Няверныя імя карыстальніка і/ці пароль" @@ -2653,42 +2724,42 @@ msgstr "Няверныя імя карыстальніка і/ці пароль" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Найчасьцей праслуханыя трэкі на Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Самыя папулярныя трэкі на Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Лепшыя трэкі месяца на Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Самыя папулярныя трэкі тыдня на Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "База Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Перайсьці да бягучага трэку" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Адлюстроўваць кнопкі на працягу %1 сэкунд..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Адлюстроўваць кнопкі на працягу %1 сэкунды..." @@ -2697,23 +2768,24 @@ msgstr "Адлюстроўваць кнопкі на працягу %1 сэку msgid "Keep running in the background when the window is closed" msgstr "Працягваць працу ў фонавым рэжыме, калі вакно зачыненае" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Захаваць арыгінальныя файлы" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Кацяняты" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Мова" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Ноўтбук/навушнікі" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Вялікі карыдор" @@ -2721,58 +2793,24 @@ msgstr "Вялікі карыдор" msgid "Large album cover" msgstr "Вялікая вокладка альбому" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Шырокая бакавая панэль" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Апошняе праслуханае" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Карыстальніцкае радыё Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Бібліятэка Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Радыё Мікс Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Радыё суседзяў Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Радыёстанцыя Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Падобныя выканаўцы Last.fm на %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Радыё тэгаў Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm у дадзены момант заняты, паспрабуйце праз некаторы час" @@ -2780,11 +2818,11 @@ msgstr "Last.fm у дадзены момант заняты, паспрабуй msgid "Last.fm password" msgstr "Пароль Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Колькасьць праслухоўваньняў на Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm тэгі" @@ -2792,28 +2830,24 @@ msgstr "Last.fm тэгі" msgid "Last.fm username" msgstr "Логін Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Найменш улюбёныя трэкі" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Пакіньце пустым для змоўчаньня. Напрыклад: \"/dev/dsp\", \"front\", і г.д." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Левы" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Працягласьць" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Бібліятэка" @@ -2821,24 +2855,24 @@ msgstr "Бібліятэка" msgid "Library advanced grouping" msgstr "Пашыраная сартоўка калекцыі" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Апавяшчэньне сканіраваньня бібліятэкі" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Пошук па бібліятэцы" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Абмежаваньні" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Слухаць музыку на сэрвісе Grooveshark, базуючыся на праслуханых раней песьнях." -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2850,15 +2884,15 @@ msgstr "Загрузіць" msgid "Load cover from URL" msgstr "Загрузка вокладкі па спасылцы" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Загрузіць вокладку з URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Загрузіць вокладку з дыску" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Загрузіць вокладку з дыску..." @@ -2866,84 +2900,89 @@ msgstr "Загрузіць вокладку з дыску..." msgid "Load playlist" msgstr "Загрузіць плэйліст" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Загрузіць плэйліст..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Загрузка радыё Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Загрузка прылады MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Загрузка базы дадзеных iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Загрузка смарт-плэйлісту" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Загрузка песень" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Загрузка струменю" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Загрузка трэкаў" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Загрузка інфармацыі пра трэк" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Загрузка..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Загрузіць файлы/URLs, замяняючы бягучы плэйліст" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Уваход" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Памылка ўваходу" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Профіль Long term prediction (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Упадабаць" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Нізкі (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Нізкая (256x256)" @@ -2955,12 +2994,17 @@ msgstr "Профіль нізкай складанасьці (LC)" msgid "Lyrics" msgstr "Тэксты песень" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Тэкст песьні з %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2972,15 +3016,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2988,7 +3032,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Загрузка Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Загрузка Magnatune скончаная" @@ -2996,15 +3040,20 @@ msgstr "Загрузка Magnatune скончаная" msgid "Main profile (MAIN)" msgstr "Асноўны профіль (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Да будзе так!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Зрабіць плэйліст даступным офлайн" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Няправільны адказ" @@ -3017,15 +3066,15 @@ msgstr "Ручная наладка проксі" msgid "Manually" msgstr "Самастойна" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Вытворца" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Пазначыць як праслуханае" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Пазначыць як новае" @@ -3037,17 +3086,21 @@ msgstr "Супадае з кожнай умовай пошуку (І)" msgid "Match one or more search terms (OR)" msgstr "Супадае з адным ці некалькімі ўмовамі (ЦІ)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Максымальны бітрэйт" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Сярэдні (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Сярэдняе (512x512)" @@ -3059,11 +3112,15 @@ msgstr "Тып падпіскі" msgid "Minimum bitrate" msgstr "Мінімальны бітрэйт" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Прапушчаныя ўсталёўкі projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Мадэль" @@ -3071,20 +3128,20 @@ msgstr "Мадэль" msgid "Monitor the library for changes" msgstr "Сачыць за зьменамі бібліятэкі" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Прайграваньне мона" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Месяцаў" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Настрой" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Стыль панэлі настрою" @@ -3092,15 +3149,19 @@ msgstr "Стыль панэлі настрою" msgid "Moodbars" msgstr "Панэлі Настрою" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Найчасьцей праслуханае" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Пункт мантаваньня" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Пункты мантаваньня" @@ -3109,7 +3170,7 @@ msgstr "Пункты мантаваньня" msgid "Move down" msgstr "Перамясьціць долу" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Перамясьціць у бібліятэку" @@ -3118,7 +3179,7 @@ msgstr "Перамясьціць у бібліятэку" msgid "Move up" msgstr "Перамясьціць вышэй" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Музыка" @@ -3126,56 +3187,32 @@ msgstr "Музыка" msgid "Music Library" msgstr "Музычная Бібліятэка" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Бязгучна" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Мая Бібліятэка Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Маё Last.fm мікс радыё" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Мае суседзі па Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Маё радыё рэкамэндацый на Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Радыё Мой Мікс" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Мая Музыка" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Мае Суседзі" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Мая Радыёстанцыя" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Мае Рэкамэндацыі" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Імя" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Налады называньня" @@ -3183,23 +3220,19 @@ msgstr "Налады называньня" msgid "Narrow band (NB)" msgstr "Вузкая паласа прапусканьня (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Суседзі" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Сеціўная проксі-служба" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Сеткавае кіраваньне" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Ніколі" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Ніколі не праслухоўвалася" @@ -3208,21 +3241,21 @@ msgstr "Ніколі не праслухоўвалася" msgid "Never start playing" msgstr "Ніколі не пачынаць прайграваць" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Новая тэчка" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Новы плэйліст" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Новы смарт-плэйліст..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Новыя песьні" @@ -3230,24 +3263,24 @@ msgstr "Новыя песьні" msgid "New tracks will be added automatically." msgstr "Новыя трэкі будуць даданыя аўтаматычна" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Новыя трэкі" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Далей" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Наступны трэк" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "На наступным тыдні" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Без аналізатару" @@ -3255,7 +3288,7 @@ msgstr "Без аналізатару" msgid "No background image" msgstr "Няма фонавай выявы" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Няма вокладак для экспартаваньня." @@ -3263,7 +3296,7 @@ msgstr "Няма вокладак для экспартаваньня." msgid "No long blocks" msgstr "Бяз доўгіх блёкаў" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Супадзеньняў ня знойдзена. Ачысьціце радок пошуку, каб зноў убачыць плэйліст." @@ -3277,11 +3310,11 @@ msgstr "Без кароткіх блёкаў" msgid "None" msgstr "Нічога" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ніводная з абраных песень ня будзе скапіяваная на прыладу" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Звычайны" @@ -3289,43 +3322,47 @@ msgstr "Звычайны" msgid "Normal block type" msgstr "Нармальны тып блёкаў" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Не даступныя пры выкарыстаньні дынамічных плэйлістоў" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Не падключана" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Нестае зьместу" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Нестае фанаў" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Нестае ўдзельнікаў" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Нестае суседзяў" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Не ўсталявана" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Ня быў выкананы логін" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Не падключана. Зрабіце двайны пстрык мышшу для падключэньня." +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Тып апавяшчэньня" @@ -3338,36 +3375,41 @@ msgstr "Апавяшчэньні" msgid "Now Playing" msgstr "Зараз грае" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Перадагляд OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3375,11 +3417,11 @@ msgid "" "192.168.x.x" msgstr "Дапускаць злучэньні толькі ад кліентаў з ip наступных абсягаў:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Паказваць толькі першы" @@ -3387,23 +3429,23 @@ msgstr "Паказваць толькі першы" msgid "Opacity" msgstr "Непразрыстасьць" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Адчыніць %1 у браўзэры" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Адкрыць аўдыё CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Адкрыць файл OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Адкрыць файл OPML..." @@ -3411,30 +3453,35 @@ msgstr "Адкрыць файл OPML..." msgid "Open device" msgstr "Адкрыць прыладу" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Адкрыць файл..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Адчыніць у Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Адкрыць у новым плэйлісьце" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Адкрыць" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Апэрацыя не ўдалася" @@ -3454,23 +3501,23 @@ msgstr "Опцыі..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Упарадкаваць файлы" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Упарадкаваць файлы..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Арганізацыя файлаў" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Першапачатковыя тэгі" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Іншыя налады" @@ -3478,7 +3525,7 @@ msgstr "Іншыя налады" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Вывадная прылада" @@ -3486,15 +3533,11 @@ msgstr "Вывадная прылада" msgid "Output options" msgstr "Опцыі вываду" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Плагін вываду" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Перазапісаць усё" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Перазапісаць існыя файлы" @@ -3506,15 +3549,15 @@ msgstr "Перазапісаць толькі меньшыя:" msgid "Owner" msgstr "Уладальнік" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Аналіз каталога Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3523,20 +3566,20 @@ msgstr "Party" msgid "Password" msgstr "Пароль" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Прыпыніць" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Прыпыніць прайграваньне" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Прыпынены" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3545,34 +3588,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Нармальная бакавая панэль" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Прайграць" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Прайграць выканаўцу ці тэг" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Прайграць радыё артыста..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Колькасць прайграваньняў" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Слухаць карыстальніцкае радыё..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Прайграць калі спынена, прыпыніць калі прайграваецца" @@ -3581,45 +3612,42 @@ msgstr "Прайграць калі спынена, прыпыніць калі msgid "Play if there is nothing already playing" msgstr "Прайграць, калі яшчэ нічога не прайграваецца" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Прайграць радыё тэга..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Прайграць кампазыцыю ў плэйлісьце" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Граць/Прыпыніць" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Прайграваньне" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Налады плэеру" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Плэйліст" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Плэйліст скончыўся" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Налады плэйлісту" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Тып плэйлісту" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Плэйлісты" @@ -3631,23 +3659,23 @@ msgstr "Зачыніце браўзэр і вяпніцеся ў Clementine." msgid "Plugin status:" msgstr "Статус плагіну:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасты" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Папулярныя песьні" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Найпапулярнейшыя песьні за месяц" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Найпапулярнейшыя песьні сёньня" @@ -3656,22 +3684,23 @@ msgid "Popup duration" msgstr "Працягласьць усплываючага паведамленьня" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Порт" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Прадузмацненьне" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Налады" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Налады..." @@ -3707,7 +3736,7 @@ msgstr "Націсьніце камбінацыю клявішаў" msgid "Press a key" msgstr "Націсьніце клявішу" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Нажміце камбінацыю клявішаў для %1..." @@ -3718,20 +3747,20 @@ msgstr "Парамэтры OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Перадагляд" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Папярэдні" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Папярэдні трэк" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Вывесьці інфармацыю аб вэрсіі" @@ -3739,21 +3768,25 @@ msgstr "Вывесьці інфармацыю аб вэрсіі" msgid "Profile" msgstr "Профіль" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Прагрэс" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Націсьніце на кнопку пульта Wii" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Раськідаць песьні ў выпадковым парадку" @@ -3761,85 +3794,95 @@ msgstr "Раськідаць песьні ў выпадковым парадку #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Якасьць" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Апытваньне прылады..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Мэнэджэр Чаргі" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Дадаць абраныя трэкі ў чаргу" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Дадаць у чаргу" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Радыё (аднолькавая гучнасьць для ўсіх трэкаў)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Радыё" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Дождж" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Выпадковая візуалізацыя" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Ацаніць бягучую кампазыцыю ў 0 зорак" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Ацаніць бягучую кампазыцыю ў 1 зорку" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Ацаніць бягучую кампазыцыю ў 2 зоркі" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Ацаніць бягучую кампазыцыю ў 3 зоркі" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Ацаніць бягучую кампазыцыю ў 4 зоркі" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Ацаніць бягучую кампазыцыю ў 5 зорак" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Рэйтынг" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Ці сапраўды адмяніць?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Абнавіць" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Абнавіць каталёг" @@ -3847,19 +3890,15 @@ msgstr "Абнавіць каталёг" msgid "Refresh channels" msgstr "Абнавіць каналы" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Абнавіць сьпіс сяброў" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Абнавіць сьпіс станцый" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Абнавіць струмені" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3871,8 +3910,8 @@ msgstr "Запомніць рух пульта Wii" msgid "Remember from last time" msgstr "Запомніць апошняе" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Выдаліць" @@ -3880,7 +3919,7 @@ msgstr "Выдаліць" msgid "Remove action" msgstr "Выдаліць дзеяньне" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Прыбраць паўторы з плэйлісту" @@ -3888,73 +3927,77 @@ msgstr "Прыбраць паўторы з плэйлісту" msgid "Remove folder" msgstr "Прыбраць каталёг" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Прыбраць з Маёй Музыкі" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Прыбраць з абраных" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Прыбраць з плэйлісту" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Выдаліць плэйлісты" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Прыбраньне кампазыцыі з Маёй Музыкі" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Прыбраньне кампазыцыі са ўлюбёных" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Пераназваць плэйліст \\\"%1\\\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Пераназваць плэйліст Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Пераназваць плэйліст" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Пераназваць плэйліст..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Перанумараваць трэкі ў такім парадку..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Паўтараць" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Паўтараць альбом" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Паўтараць плэйліст" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Паўтараць трэк" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Замяніць бягучы плэйліст" @@ -3963,15 +4006,15 @@ msgstr "Замяніць бягучы плэйліст" msgid "Replace the playlist" msgstr "Замяніць плэйліст" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Замяняць прагалы падкрэсьліваньнем" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Рэжым Replay Gain" @@ -3979,24 +4022,24 @@ msgstr "Рэжым Replay Gain" msgid "Repopulate" msgstr "Перазапоўніць" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Ськід" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Ськінуць лічыльнікі прайграваньня" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Абмежаваць толькі сымбалямі ASCII" @@ -4004,15 +4047,15 @@ msgstr "Абмежаваць толькі сымбалямі ASCII" msgid "Resume playback on start" msgstr "Працягваць прайграваньне пры запуску" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Загружаем сьпіс Маёй Музыкі з Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Загрузка сьпісу абраных песень з Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Загрузка плэйлістоў Grooveshark" @@ -4032,11 +4075,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4048,25 +4091,25 @@ msgstr "Запусьцiць" msgid "SOCKS proxy" msgstr "SOCKS проксі" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Бясьпечна выняць прыладу" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Бясьпечна выняць прыладу пасьля капіяваньня" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Чашчыня" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Чашчыня дыскрэтызацыі" @@ -4074,27 +4117,33 @@ msgstr "Чашчыня дыскрэтызацыі" msgid "Save .mood files in your music library" msgstr "Захаваць файлы .mood у музычную бібліятэку" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Такая ж вокладка альбому" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Захаваць вокладку на дыск..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Захаваць выяву" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Захаваць плэйліст" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Захаваць плэйліст..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Захаваць профіль" @@ -4110,11 +4159,11 @@ msgstr "Захоўваць статыстыку ў тэгах файлаў, ка msgid "Save this stream in the Internet tab" msgstr "Захаваць гэты струмень ў закладцы Інтэрнэт" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Захаваньне статыстыкі песень у файлы" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Захоўваньне трэкаў" @@ -4126,7 +4175,7 @@ msgstr "Профіль Scalable sampling rate (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Лік" @@ -4134,34 +4183,38 @@ msgstr "Лік" msgid "Scrobble tracks that I listen to" msgstr "Скробліць трэкі, якія я слухаю" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Пошук" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Шукаць станцыі Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Шукаць у Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Шукаць на Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Пошук " -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Шукаць вокладкі альбомаў..." @@ -4181,21 +4234,21 @@ msgstr "Пошук у iTunes" msgid "Search mode" msgstr "Рэжым пошуку" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Парамэтры пошуку" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Вынікі пошуку" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Умовы пошуку" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Пошук на Grooveshark" @@ -4203,27 +4256,27 @@ msgstr "Пошук на Grooveshark" msgid "Second level" msgstr "Другі ўзровень" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Перамотка назад" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Перамотка наперад" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Крыху пераматаць быгучы трэк" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Пераматаць бягучы трэк на абсалютную пазыцыю" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Абраць усё" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Адмяніць выбар" @@ -4231,7 +4284,7 @@ msgstr "Адмяніць выбар" msgid "Select background color:" msgstr "Абярыце колер фону:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Абрацт фонавую выяву" @@ -4247,7 +4300,7 @@ msgstr "Абярыце колер:" msgid "Select visualizations" msgstr "Выбраць візуалізацыі" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Выбраць візуалізацыі..." @@ -4255,7 +4308,7 @@ msgstr "Выбраць візуалізацыі..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Сэрыйны нумар" @@ -4267,51 +4320,51 @@ msgstr "URL Сэрвэру" msgid "Server details" msgstr "Дэталі сэрвэру" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Служба не працуе" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Усталяваць %1 у \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Усталяваць гучнасьць у адсоткаў" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Усталяваць значэньне для вызначаных трэкаў..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Камбінацыя клявішаў" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Камбінацыя клявішаў для %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Камбінацыя клявішаў для %1 ужо існуе" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Паказаць" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Паказваць OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Падсьвечваць бягучы трэк" @@ -4339,15 +4392,15 @@ msgstr "Паказваць усплываючыя паведамленьні" msgid "Show a pretty OSD" msgstr "Паказваць OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Паказаць над радком стану" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Паказаць усе кампазыцыі" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Паказаць усе песьні" @@ -4359,32 +4412,36 @@ msgstr "Паказваць вокладкі ў бібліятэцы" msgid "Show dividers" msgstr "Паказваць падзяляльнікі" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Паказаць поўны памер..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Паказаць ў аглядчыку файлаў" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Паказаць ў \"Розных выканаўцах\"" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Паказаць панэль настрою" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Паказваць толькі дубляваныя" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Паказваць толькі бяз тэгаў" @@ -4393,8 +4450,8 @@ msgid "Show search suggestions" msgstr "Паказаць пошукавыя падказкі" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Паказваць кнопкі \"Ўлюбёнае\" й \"Забараніць\"" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4408,27 +4465,27 @@ msgstr "Паказаць значок у латку" msgid "Show which sources are enabled and disabled" msgstr "Паказаць якія крыніцы ўключаны і адключаны" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Паказаць/Схаваць" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Перамяшаць" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Перамяшаць альбомы" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Перамяшаць усё" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Перамяшаць плэйліст" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Перамяшаць трэкі ў гэтым альбоме" @@ -4444,7 +4501,7 @@ msgstr "Выйсьці" msgid "Signing in..." msgstr "Адбываецца ўваход..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Падобныя выканаўцы" @@ -4456,43 +4513,51 @@ msgstr "Памер" msgid "Size:" msgstr "Памер:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Перамясьціць назад у плэйлісьце" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Прапусьціць падлік" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Перамясьціць наперад ў плэйлісьце" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Маленькая вокладка альбому" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Вузкая бакавая панэль" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Смарт-плэйліст" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Смарт-плэйлісты" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4500,11 +4565,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Інфармацыя аб кампазыцыі" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Пра Песьню" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Санаграма" @@ -4524,15 +4589,23 @@ msgstr "Сартаваць па стылю (па папулярнасьці)" msgid "Sort by station name" msgstr "Сартаваць па назве станцыі" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Сартаваць песьні па" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Сартаваць" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Крыніца" @@ -4548,7 +4621,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Памылка логіну Spotify" @@ -4556,7 +4629,7 @@ msgstr "Памылка логіну Spotify" msgid "Spotify plugin" msgstr "Плагін Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Плагін Spotify не ўсталяваны" @@ -4564,77 +4637,77 @@ msgstr "Плагін Spotify не ўсталяваны" msgid "Standard" msgstr "Стандартны" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Ацэненыя" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Запусьціць бягучы плэйліст" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Пачаць перакадаваньне" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Пачніце друкаваць штосьці ў пошукавым радку" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Запуск %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Запуск..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Станцыі" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Спыніць" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Спыніць пасьля" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Спыніць пасьля гэтага трэку" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Спыніць прайграваньне" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Спыніць прайграваньне пасьля бягучага трэку" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Спынена" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Струмень" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4644,7 +4717,7 @@ msgstr "Праслухоўваньне з сэрвэру Subsonic патрабу msgid "Streaming membership" msgstr "\"Streaming\" падпіска" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Плэйлісты, на якія вы падпісаныя" @@ -4652,7 +4725,7 @@ msgstr "Плэйлісты, на якія вы падпісаныя" msgid "Subscribers" msgstr "Падпісанты" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4660,12 +4733,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Пасьпяхова!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Пасьпяхова запісанае %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Прапанаваныя тэгі" @@ -4674,13 +4747,13 @@ msgstr "Прапанаваныя тэгі" msgid "Summary" msgstr "Зводка" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Звышвысокі (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Вельмі высокая (2048x2048)" @@ -4692,43 +4765,35 @@ msgstr "Падтрыманыя фарматы" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Сынхранізацыя ўваходных Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Сынхранізацыя плэйлістоў Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Сынхранізацыя рэйтынгавых трэкаў Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Сыстэмныя колеры" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Укладкі ўверсе" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Тэг" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Зьбіральнік тэгаў" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Радыё тэга" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Мэтавы бітрэйт" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4736,11 +4801,11 @@ msgstr "Techno" msgid "Text options" msgstr "Уласьцівасьці тэксту" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Дзякуй" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Каманда \"%1\" ня можа быць выкананая." @@ -4749,17 +4814,12 @@ msgstr "Каманда \"%1\" ня можа быць выкананая." msgid "The album cover of the currently playing song" msgstr "Вокладка альбому бягучае кампазыцыі" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Каталёг %1 няправільны" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Плэйліст '%1' пусты ці ня можа быць загружаны." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Другое значэньне павінна быць большым за першае!" @@ -4767,40 +4827,40 @@ msgstr "Другое значэньне павінна быць большым msgid "The site you requested does not exist!" msgstr "Запытаны вамі сайт не існуе!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Запытаная вамі спасылка не зьяўляецца выявай!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Скончыўся пробны пэрыяд сэрвэру Subsonic. Калі ласка заплаціце каб атрымаць ліцэнзыйны ключ. Наведайце subsonic.org для падрабязнасьцяў." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Абноўленая вэрсія Clementine патрабуе паўторнага сканіраваньня бібліятэкі з-за асаблівасьцяў, пералічаных ніжэй:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "У альбоме прысутнічаюць іншыя песьні" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Праблема сувязі з gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Праблема атрыманьня мэтададзеных з Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Праблема разбору адказу ад iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4812,13 +4872,13 @@ msgid "" "deleted:" msgstr "Падчас выдаленьня некаторых кампазыцый узьніклі праблемы. Наступныя файлы ня могуць быць выдаленыя:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Гэтыя файлы будуць выдаленыя з прылады, вы дакладна жадаеце працягнуць?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4838,13 +4898,13 @@ msgstr "Гэтыя налады выкарыстоўваюцца ў дыялёг msgid "Third level" msgstr "Трэці ўзровень" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Гэтае дзеяньне створыць базу дадзеных, якая можа займаць больш за 150МБ.\nЦі працягнуць?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Гэты альбом не даступны ў патрабаваным фармаце" @@ -4858,11 +4918,11 @@ msgstr "Прылада павінна быць падключаная і адч msgid "This device supports the following file formats:" msgstr "Гэтая прылада падтрымлівае наступныя фарматы:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Гэтая прылада ня будзе працаваць правільна" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Гэта MTP прылада, а вашая вэрсія Clementine скампіляваная без падтрымкі libmtp." @@ -4871,7 +4931,7 @@ msgstr "Гэта MTP прылада, а вашая вэрсія Clementine ск msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Гэта iPod, а вашая вэрсія Clementine скампіляваная без падтрымкі libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4881,33 +4941,33 @@ msgstr "Гэта першы раз, калі вы падключылі прыл msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Гэты струмень толькі для платных падпісантаў" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Гэты тып прылады не падтрымліваецца: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Назва" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Каб уключыць радыё Grooveshark, трэба спачатку праслухаць некалькі іншых песень на гэтым сэрвісе" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Сёньня" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Уключыць" @@ -4915,27 +4975,27 @@ msgstr "Уключыць" msgid "Toggle fullscreen" msgstr "Укл/Выкл поўнаэкранны рэжым" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Пераключыць стан чаргі" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Укл/Выкл скроблінг" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Паказаць/Скрыць экраннае апавяшчэньне" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Заўтра" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Занадта шмат перанакіраваньняў" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Самыя папулярныя" @@ -4943,21 +5003,25 @@ msgstr "Самыя папулярныя" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Перадана байтаў увогуле" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Выканана сеткавых запытаў увогуле" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Трэк" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Перакадаваньне Музыкі" @@ -4969,7 +5033,7 @@ msgstr "Лог Перакадоўшчыку" msgid "Transcoding" msgstr "Перакадоўка" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Перакадавана %1 файлаў, выкарыстоўваючы %2 тэм" @@ -4978,11 +5042,11 @@ msgstr "Перакадавана %1 файлаў, выкарыстоўваючы msgid "Transcoding options" msgstr "Парамэтры перакадоўкі" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Турбіна" @@ -4990,72 +5054,72 @@ msgstr "Турбіна" msgid "Turn off" msgstr "Выключыць" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URI(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ультрашырокая паласа прапусканьня (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Немагчыма спампаваць %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Невядомы" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Невядомы тып кантэнту" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Невядомая памылка" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Выдаліць вокладку" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Адпісацца" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Канцэрты, якія маюць адбыцца" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Абнавіць плэйліст Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Абнавіць усе подкасты" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Абнавіць зьмененыя тэчкі бібліятэкі" @@ -5063,7 +5127,7 @@ msgstr "Абнавіць зьмененыя тэчкі бібліятэкі" msgid "Update the library when Clementine starts" msgstr "Абнаўляць бібліятэку пры старце Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Абнавіць гэты подкаст" @@ -5071,21 +5135,21 @@ msgstr "Абнавіць гэты подкаст" msgid "Updating" msgstr "Абнаўленьне" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Абнаўленьне %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Абнаўленьне %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Абнаўленьне бібліятэкі" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Выкарыстаньне" @@ -5093,11 +5157,11 @@ msgstr "Выкарыстаньне" msgid "Use Album Artist tag when available" msgstr "Выкарыстоўваць тэг Выканаўца Альбому калі магчыма" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Выкарыстоуваць камбінацыі клявішаў Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Выкарыстоўваць мэтададзеныя Replay Gain, калі гэта магчыма" @@ -5117,7 +5181,7 @@ msgstr "Выкарыстоўваць карыстальніцкія колеры msgid "Use a custom message for notifications" msgstr "Выкарыстоўваць уласнае апавяшчэньне" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5157,20 +5221,20 @@ msgstr "Выкарыстоўваць сыстэмныя налады прокс msgid "Use volume normalisation" msgstr "Выкарыстоўваць выраўнаваньне гучнасьці" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Скарыстана" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Карыстальнік %1 ня мае акаўнту Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Інтэрфэйс" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5192,12 +5256,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Пераменны бітрэйт" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Розныя выканаўцы" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Вэрсія %1" @@ -5210,7 +5274,7 @@ msgstr "Прагляд" msgid "Visualization mode" msgstr "Рэжым візуалізацыі" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Візуалізацыі" @@ -5218,11 +5282,15 @@ msgstr "Візуалізацыі" msgid "Visualizations Settings" msgstr "Налады візуалізацыі" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Вызначэньне голасу" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Гучнасьць %1%" @@ -5240,11 +5308,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5252,7 +5320,7 @@ msgstr "Wav" msgid "Website" msgstr "Вэб-сайт" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Тыдняў" @@ -5278,32 +5346,32 @@ msgstr "Чаму б не паспрабаваць..." msgid "Wide band (WB)" msgstr "Шырокая паласа прапусканьня (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: актываваны" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Пульт Wii Remote %1: злучаны" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Пульт Wii Remote %1: крытычны ўзровень зарада батарэі (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Пульт Wii Remote %1: дэактываваны" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Пульт Wii Remote %1: адлучаны" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Пульт Wii Remote %1: нізкі зарад батарэі (%2%)" @@ -5324,7 +5392,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5332,25 +5400,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Бяз вокладкі:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Перасунуць іншыя песьні з гэтага альбому ў Розныя Выканаўцы?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Ці жадаеце запусьціць паўторнае сканіраваньне?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Запісваць усю статыстыку песень ў іх файлы" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Няправільнае імя ці пароль." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5362,11 +5430,11 @@ msgstr "Год" msgid "Year - Album" msgstr "Год - Альбом" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Годы" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Учора" @@ -5374,13 +5442,13 @@ msgstr "Учора" msgid "You are about to download the following albums" msgstr "Вы зьбіраецеся спампаваць наступныя альбомы" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5390,12 +5458,12 @@ msgstr "" msgid "You are not signed in." msgstr "Вы не ўвайшлі." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Вы ўвайшлі як %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Вы ўвайшлі ў сыстэму." @@ -5403,13 +5471,13 @@ msgstr "Вы ўвайшлі ў сыстэму." msgid "You can change the way the songs in the library are organised." msgstr "Вы можаце абраць спосаб сартоўкі кампазыцый ў бібліятэцы." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Вы можаце свабодна слухаць музыку без рэгістрацыі, але чальцы Premium акаўнтаў могуць слухаць струмені ў лепшай якасьці без рэклямы." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5419,13 +5487,6 @@ msgstr "Вы можаце слухаць песьні з Magnatune свабод msgid "You can listen to background streams at the same time as other music." msgstr "Вы можаце слухаць фонавыя гукі адначасова з іншай музыкай." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Вы можаце скробліць трэкі свабодна, але толькі платныя падпісанты могуць слухаць радыё Last.fm з Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Вы можаце выкарыстоўваць пульт Wii для дыстанцыйнага кіраваньня Clementine. Глядзі разьдзел на wiki-старонцы Clementime для падрабнейшай инфармацыі.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Вы ня маеце акаунту Grooveshark Anywhere" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Вы ня маеце акаунту Spotify Premium" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Вы ня маеце актыўнае падпіскі" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Падлучэньне да сэрвісу Spotify было разарванае, уведзьце ваш пароль яшчэ раз у дыялёге Налады." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Падлучэньне да сэрвісу Spotify было разарванае, уведзьце ваш пароль яшчэ раз." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Вы ўпадабалі гэты трэк" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5470,17 +5545,11 @@ msgstr "Запусьціце Наладку Сыстэмы (System Preferences) msgid "You will need to restart Clementine if you change the language." msgstr "Пасьля зьмены мовы патрабуецца перазапуск Clementine." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Вы ня можаце слухаць радыёстанцыю Last.fm, так як не зьяўляецеся яе падпісантам." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Вашая IP адрэса:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Вашыя дадзеныя Last.fm некарэктныя" @@ -5488,42 +5557,43 @@ msgstr "Вашыя дадзеныя Last.fm некарэктныя" msgid "Your Magnatune credentials were incorrect" msgstr "Вашыя дадзеныя Magnatune некарэктныя" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Вашая бібліятэка пустая!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Вашыя струмені радыё" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Вашыя скроблінгі: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Адсутнічае падтрымка OpenGL у сыстэме, візуалізацыі недаступныя." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Імя карыстальніка ці пароль няправільныя." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A(Я-А)" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Па-змоўчаньні" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "дадаць %n кампазыцыяў" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "пасьля" @@ -5543,19 +5613,19 @@ msgstr "аўтаматычна" msgid "before" msgstr "да" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "паміж" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "спачатку найбольшыя" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "зьмяшчае" @@ -5565,20 +5635,20 @@ msgstr "зьмяшчае" msgid "disabled" msgstr "адключаны" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "дыск %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "не зьмяшчае" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "завяршаецца на" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "раўняецца" @@ -5586,11 +5656,11 @@ msgstr "раўняецца" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "Каталёг gpodder.net" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "болей за" @@ -5598,54 +5668,55 @@ msgstr "болей за" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "у апошнія" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "кбіт/с" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "менш за" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "спачатку найдаўжэйшыя" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "перасунуць %n кампазыцый" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "спачатку найноўшыя" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "ня роўна" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "не ў апошнія" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "выключана" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "спачатку найстарэйшыя" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "на" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "налады" @@ -5657,36 +5728,37 @@ msgstr "" msgid "press enter" msgstr "націсьніце \"enter\"" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "выдаліць %n кампазыцый" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "спачатку найкарацейшыя" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "Перамяшаць кампазыцыі" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "спачатку найменьшыя" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "сартаваць кампазыцыі" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "пачынаецца на" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "Спыніць" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "трэк %1" diff --git a/src/translations/bg.po b/src/translations/bg.po index 79369ed84..114d50a06 100644 --- a/src/translations/bg.po +++ b/src/translations/bg.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Bulgarian (http://www.transifex.com/projects/p/clementine/language/bg/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,7 +21,7 @@ msgstr "" "Language: bg\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -46,9 +46,9 @@ msgstr " дни" msgid " kbps" msgstr " кбита/сек" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -61,11 +61,16 @@ msgstr " точки" msgid " seconds" msgstr " секунди" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " песни" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 албума" @@ -75,12 +80,12 @@ msgstr "%1 албума" msgid "%1 days" msgstr "%1 дни" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "Преди %1 дни" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 на %2" @@ -90,48 +95,48 @@ msgstr "%1 на %2" msgid "%1 playlists (%2)" msgstr "%1 списъци с песни (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 избрани от" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 песен" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 песни" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 намерени песни" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 намерени песни (%2 показани)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 песни" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 прехвърлени" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1:Wiimotedev модул" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 други слушатели" @@ -145,18 +150,21 @@ msgstr "%L1 прослушвания общо" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n неуспешно" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n завършено" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n оставащо" @@ -168,24 +176,24 @@ msgstr "&Подравни текста" msgid "&Center" msgstr "&Център" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Потребителски" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Допълнения" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Помо&щ" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Скриване на %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Скриване..." @@ -193,23 +201,23 @@ msgstr "&Скриване..." msgid "&Left" msgstr "&Ляво" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Музика" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Никакъв" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Списък с песни" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Изход" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Режим „Повторение“" @@ -217,23 +225,23 @@ msgstr "Режим „Повторение“" msgid "&Right" msgstr "&Дясно" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Режим „Случаен ред“" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Разтегли колоните да се вместят в прозореца" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Инструменти" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(различен по време на множество песни)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... и всички сътрудници от Amarok" @@ -253,14 +261,10 @@ msgstr "0px" msgid "1 day" msgstr "1 ден" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 песен" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -270,7 +274,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 случайни песни" @@ -278,12 +282,6 @@ msgstr "50 случайни песни" msgid "Upgrade to Premium now" msgstr "Надградете към Premium сега" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -294,6 +292,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -302,38 +311,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Признаците започват с %, например: %artist %album %title

\n\n

Ако оградите част от текста, съдържаща признак, с къдрави скоби, тази част ще се скрива, ако признакът е празен.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Необходим е Grooveshark Anywhere акаунт." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Необходим е Spotify Premium акаунт." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Умният списък е динамичен списък от песни, налични във Вашата библиотека. Има различни типове умни списъци с песни, които предлагат различни начини за избиране на песните." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Една песен ще бъде включена в списъка с песни, ако отговаря на тези критерии." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "А-Я" @@ -353,36 +362,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "Славният хипножабок!" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Отхвърляне" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Относно %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Относно Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Относно QT..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Данни за акаунта" @@ -394,11 +402,15 @@ msgstr "Информация за акаунта (Premium)" msgid "Action" msgstr "Действие" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Активно/неактивно WIIremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Добави подкаст" @@ -414,39 +426,39 @@ msgstr "Добавяне на нов ред ако се поддържа от т msgid "Add action" msgstr "Добавяне на действие" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Добавяне на друг поток..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Добавяне на папка..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Добавяне на файл" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Добавяне на файл..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Добавяне на файлове за прекодиране" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Добавяне на папка" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Добавяне на папка..." @@ -458,11 +470,11 @@ msgstr "Добавяне на нова папка..." msgid "Add podcast" msgstr "Добавя движещ се текст" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Добавяне на подкаст..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Добавяне на аргумент за търсене" @@ -526,6 +538,10 @@ msgstr "Добавяне брой пропускания на песента" msgid "Add song title tag" msgstr "Добавяне на етикет за име на песен" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Добавяне на етикет за номер на песен" @@ -534,22 +550,34 @@ msgstr "Добавяне на етикет за номер на песен" msgid "Add song year tag" msgstr "Добавяне на етикет за година на песен" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Добавяне на поток..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Добавяне към Grooveshark любими" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Добавяне към Grooveshark списък с песни" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Добави в друг списък с песни" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Добавяне към списъка с песни" @@ -558,6 +586,10 @@ msgstr "Добавяне към списъка с песни" msgid "Add to the queue" msgstr "Добави към опашката" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Добави Wiiremote действие" @@ -587,15 +619,15 @@ msgstr "Добавени днес" msgid "Added within three months" msgstr "Добавени през последните три месеца" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Добавяне на песен към Моята музика" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Добавяне на песен в любими" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Разширено групиране..." @@ -603,12 +635,12 @@ msgstr "Разширено групиране..." msgid "After " msgstr "След " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "След копиране..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -616,11 +648,11 @@ msgstr "След копиране..." msgid "Album" msgstr "Албум" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Албум (идеална сила на звука за всички песни)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -630,35 +662,36 @@ msgstr "Изпълнител на албума" msgid "Album cover" msgstr "Обложка на албума" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Информация за албума на jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Албуми с обложки" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Албуми без обложки" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Всички файлове (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Славният хипножабок!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Всички албуми" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Всички изпълнители" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Всички файлове (*)" @@ -667,19 +700,19 @@ msgstr "Всички файлове (*)" msgid "All playlists (%1)" msgstr "Всички списъци с песни (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Всички преводачи" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Всички песни" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -704,30 +737,30 @@ msgstr "Винаги показвай основния прозорец" msgid "Always start playing" msgstr "Винаги започвай възпроизвеждането" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "За да използвате Spotify в Clementine е необходима допълнителна приставка. Иската ли да я свалите и инсталирате сега?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Възникна грешка при зареждането на базата данни на iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Получи се грешка при запис метаданните на '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Възникна неизвестна грешка." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "И:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Ядосан" @@ -736,13 +769,13 @@ msgstr "Ядосан" msgid "Appearance" msgstr "Облик" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Добавяне на файлове/URL адреси към списъка с песни" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Добавяне към текущия списък с песни" @@ -750,52 +783,47 @@ msgstr "Добавяне към текущия списък с песни" msgid "Append to the playlist" msgstr "Добавяне към списъка с песни" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Прилагане на компресия за да се предотврати орязване" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Сигурни ли сте, че искате да изтриете \"%1\" настройката?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Сигурни ли сте, че искате да изтриете този списък с песни?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Сигурни ли сте, че искате да нулирате статистиката за тази песен?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Изпълнител" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Информация за изпълнителя" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Радио на изпълнител" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Етикети за изпълнителя" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Инициали на изпълнителя" @@ -803,9 +831,13 @@ msgstr "Инициали на изпълнителя" msgid "Audio format" msgstr "Аудио формат" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Неуспешна идентификация" @@ -813,7 +845,7 @@ msgstr "Неуспешна идентификация" msgid "Author" msgstr "Автор" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Автори" @@ -829,7 +861,7 @@ msgstr "Автоматично обновяване" msgid "Automatically open single categories in the library tree" msgstr "Отвори автоматично единични категории от библиотечното дърво" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Налични" @@ -837,15 +869,15 @@ msgstr "Налични" msgid "Average bitrate" msgstr "Среден битов поток" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Среден размер на изображение" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC подкасти" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Темпо" @@ -866,7 +898,7 @@ msgstr "Фоново изображение" msgid "Background opacity" msgstr "Прозрачност на фона" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Архивиране на базата данни" @@ -874,11 +906,7 @@ msgstr "Архивиране на базата данни" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Забрана" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Колонков анализатор" @@ -898,18 +926,17 @@ msgstr "Поведение" msgid "Best" msgstr "Най-добро" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Биография от %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Поток в битове" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -917,7 +944,12 @@ msgstr "Поток в битове" msgid "Bitrate" msgstr "Поток в битове" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Блоков анализатор" @@ -933,7 +965,7 @@ msgstr "" msgid "Body" msgstr "Тяло" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Бум анализатор" @@ -947,11 +979,11 @@ msgstr "" msgid "Browse..." msgstr "Избор…" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Буфериране" @@ -963,43 +995,66 @@ msgstr "Но тези източници са забранени:" msgid "Buttons" msgstr "Бутони" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Поддръжка на CUE листове" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Отказ" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Смени обложката" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Смени размера на щрифта" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Смени режим повторение" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Промяна на бърз клавиш..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Смени режим разбъркване" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Промяна на езика" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1009,15 +1064,19 @@ msgstr "" msgid "Check for new episodes" msgstr "Провери за нови епизоди" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Проверка за обновления..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Изберете име за вашият умен списък с песни" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Автоматичен избор" @@ -1033,11 +1092,11 @@ msgstr "Избор на шрифт..." msgid "Choose from the list" msgstr "Избор от списъка" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Изберете как ще е сортиран списъка и колко песни ще съдържа." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Избор на директория за сваляне на подкасти" @@ -1046,7 +1105,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Изберете уебсайтовете, които искате Clementine да използва за търсене на текстовете на песните." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Класически" @@ -1054,17 +1113,17 @@ msgstr "Класически" msgid "Cleaning up" msgstr "Почистване" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Изчистване" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Изчистване на списъка с песни" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1077,8 +1136,8 @@ msgstr "Грешка в Clementine" msgid "Clementine Orange" msgstr "Портокал Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine Визуализация" @@ -1100,9 +1159,9 @@ msgstr "Clementine може да възпроизвежда музикални msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine може да възпроизвежда музикални файлове, които сте качили в Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine може да възпроизвежда музикални файлове, които сте качили в Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1115,20 +1174,13 @@ msgid "" "an account." msgstr "Clementine може да синхронизира Вашите списък с абонаменти и приложения за движещи се текстове между компютрите Ви. Създаване на акаунт." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine не можа да зареди никаква projectM визуализация. Проверете дали сте инсталирали Clementine правилно." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine не можа да получи състоянието на Вашата регистрация, тъй като има проблем с връзката. Слушаните песни ще бъдат кеширани и изпратени по-късно към Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine мениджър на изображения" @@ -1140,11 +1192,11 @@ msgstr "Clementine не намери резултати за този файл" msgid "Clementine will find music in:" msgstr "Clementine ще намери музика в:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Цъкнете тук за да добавите музика" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1154,7 +1206,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Цъкнете за да превключите между оставащо и пълно време" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1169,19 +1224,19 @@ msgstr "Затваряне" msgid "Close playlist" msgstr "Затвори плейлиста" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Затваря визуализацията" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Затварянето на този прозорец ще прекрати свалянето" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Затварянето на този прозорец ще прекрати търсенето на обложки." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Клуб" @@ -1189,73 +1244,78 @@ msgstr "Клуб" msgid "Colors" msgstr "Цветове" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Разделен със запетаи списък с class:level, level (ниво) е 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Коментар" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Автоматично довършване на етикетите" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Автоматично довършване на етикетите..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Композитор" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Настройване на Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Настройване на Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Настройване на Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Настройване на бързите клавиши" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Настройване на Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Конфигурирай глобално търсене" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Настройване на библиотека..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Конфигуриране на подкасти..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Настройване..." @@ -1263,11 +1323,11 @@ msgstr "Настройване..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Свържете Wii дистанционни чрез действието активиране/деактивиране" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Свързване на устройство" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Свързване към Spotify" @@ -1277,12 +1337,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Конзола" @@ -1298,17 +1362,21 @@ msgstr "Конвертирай цялата музика" msgid "Convert any music that the device can't play" msgstr "Конвертиране само музиката, която това устройство не може да възпроизвежда" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Копиране в буфера" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Копирай в устройство..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Копиране в библиотека..." @@ -1316,156 +1384,152 @@ msgstr "Копиране в библиотека..." msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Не мога да създам GStreamer елемент \"%1\" - уверете се, че всички необходими приставки на GStreamer са инсталирани" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Не мога да намеря миксер за %1, проверете дали имате инсталирани правилните GStreamer плъгини." -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Не мога да намеря кодер за %1, проверете дали имате инсталирани правилните GSteamer плъгини." -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Не мога да заредя last.fm радио станция" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Не мога да отворя изходен файл %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Мениджър за обложки" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Обложка от изображение" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Обложката е заредена автоматично от %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Обложката е ръчно премахната" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Обложката не е зададена" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Обложката е зададена от %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Обложки от %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Направа на нов Grooveshark списък с песни" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Плавен преход при автоматична смяна на песни" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Плавен преход при ръчна смяна на песни" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1473,7 +1537,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "По избор" @@ -1485,54 +1549,50 @@ msgstr "Потребителско изображение:" msgid "Custom message settings" msgstr "Настройки на потребителското съобщение" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Потребителско радио" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Потребителски..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Път то DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Денс" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Забелязана е повреда в базата данни. Моля, вижте https://code.google.com/p/clementine-player/wiki/DatabaseCorruption за инструкции за възстановяването на Вашата база данни" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Дата на създаване" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Дата на променяне" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Дни" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&По подразбиране" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Намаляване на звука с 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Намаляване на звука" @@ -1540,6 +1600,11 @@ msgstr "Намаляване на звука" msgid "Default background image" msgstr "Фоново изображение по подразбиране" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Стандартни настройки" @@ -1548,30 +1613,30 @@ msgstr "Стандартни настройки" msgid "Delay between visualizations" msgstr "Забавяне между визуализации" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Изтрий" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Изтриване на Grooveshark списък с песни" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Изтрий свалените данни" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Изтриване на файлове" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Изтриване от устройство" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Изтриване от диска..." @@ -1579,31 +1644,31 @@ msgstr "Изтриване от диска..." msgid "Delete played episodes" msgstr "Изтрий показаните епизоди" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Изтриване на фиксираната настройка" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Изтриване на умен списък с песни" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Изтрий оригиналните файлове" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Изтриване на файлове" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Махни от опашката избраните парчета" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Махни от опашката парчето" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Местоположение" @@ -1612,7 +1677,7 @@ msgstr "Местоположение" msgid "Details..." msgstr "Подробности..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Устройство" @@ -1624,15 +1689,15 @@ msgstr "Свойства на устройство" msgid "Device name" msgstr "Име на устройство" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Свойства на устройство..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Устройства" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1669,12 +1734,17 @@ msgstr "Изключване на продължитеност" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Изключено" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1684,15 +1754,15 @@ msgid "Discontinuous transmission" msgstr "Непрекъснато излъчване" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Настройки на показването" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Показване на екранно уведомление" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Пусни пълно повторно сканиране на библиотеката" @@ -1704,27 +1774,27 @@ msgstr "Не конвертирай никаква музика" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Без повторение" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Да не се показва в различни изпълнители" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Не разбърквай" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Не спирай!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Двойно цъкване за отваряне" @@ -1732,12 +1802,13 @@ msgstr "Двойно цъкване за отваряне" msgid "Double clicking a song will..." msgstr "Двойното цъкване върху песен ще..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Сваля %n епизода" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Папка за сваляне" @@ -1753,7 +1824,7 @@ msgstr "Членство за сваляне" msgid "Download new episodes automatically" msgstr "Сваляй автоматично новите епизоди" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Опашка на свалянето" @@ -1761,15 +1832,15 @@ msgstr "Опашка на свалянето" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Сваляне на този албум" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Сваляне на този албум..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Свали този епизод" @@ -1777,7 +1848,7 @@ msgstr "Свали този епизод" msgid "Download..." msgstr "Изтегляне..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Сваляне (%1%)..." @@ -1786,23 +1857,23 @@ msgstr "Сваляне (%1%)..." msgid "Downloading Icecast directory" msgstr "Сваляне на icecast директорията" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Сваляне на jamendo каталог" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Сваляне на каталог Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Изтегляне на приставка за Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Сваляне на метаданни" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Влачете за позициониране" @@ -1822,20 +1893,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Динамичния режим е включен" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Динамичен случаен микс" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Редактиране умен списък с песни..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Редактиране на етикет..." @@ -1847,16 +1918,16 @@ msgstr "Редактиране на етикети" msgid "Edit track information" msgstr "Редактиране на информацията за песента" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Редактиране на информацията за песента..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Редактиране на информация за песните..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Редактиране..." @@ -1864,6 +1935,10 @@ msgstr "Редактиране..." msgid "Enable Wii Remote support" msgstr "Разреши подръжката на Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Разреши еквалазйзера" @@ -1878,7 +1953,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Включване/изключване на Last.fm скроблинг" @@ -1906,15 +1981,10 @@ msgstr "Въведете URL за да свалите обложката от In msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Въведете ново име за този списък с песни" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Въведете изпълнител или етикет за да започнете да слушате Last.fm радио" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1928,7 +1998,7 @@ msgstr "Въведете по-долу термини за търсене в п msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Въведете по-долу термини за търсене в подкастите на gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Въведете критерий за търсене" @@ -1937,11 +2007,11 @@ msgstr "Въведете критерий за търсене" msgid "Enter the URL of an internet radio stream:" msgstr "Въведете URL адрес на Интернет радио поток" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Въведете името на новата папка" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Въведето този IP в App за да се свържете с Clementine" @@ -1949,21 +2019,22 @@ msgstr "Въведето този IP в App за да се свържете с C msgid "Entire collection" msgstr "Цялата колекция" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Еквалайзер" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Еквивалентно на --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Еквивалентно на --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Грешка" @@ -1971,38 +2042,38 @@ msgstr "Грешка" msgid "Error connecting MTP device" msgstr "Грешка при свързването на MTP устройство" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Грешка при копиране на песни" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Грешка при изтриване на песни" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Грешка при изтеглянето на приставка за Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Грешка при зареждане на %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Грешка при зареждане на di.fm списък с песни" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Грешка при обработване на %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Грешка при зареждането на аудио CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Някога пускана" @@ -2034,7 +2105,7 @@ msgstr "Всеки 6 часа" msgid "Every hour" msgstr "Всеки час" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Освен между песните в един и същи албум или в един и същи CUE лист" @@ -2046,7 +2117,7 @@ msgstr "" msgid "Expand" msgstr "Разширяване" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Изтича на %1" @@ -2067,36 +2138,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2106,42 +2177,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Заглушаване при спиране на песен" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Заглушаване" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Продължителност на заглушаване" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Неуспех при извличане на директория" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Не успях да извлека подкасти" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Не успях да заредя подкаст" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Неуспешен разбор на XML за тази RSS хранилка" @@ -2150,11 +2221,11 @@ msgstr "Неуспешен разбор на XML за тази RSS хранил msgid "Fast" msgstr "Бързо" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Любими" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Любими парчета" @@ -2170,11 +2241,11 @@ msgstr "Автоматично изтегляне" msgid "Fetch completed" msgstr "Изтеглянето завърши" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Грешка по време на свалянето на обложката" @@ -2182,7 +2253,7 @@ msgstr "Грешка по време на свалянето на обложка msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Файлово разширение" @@ -2190,19 +2261,23 @@ msgstr "Файлово разширение" msgid "File formats" msgstr "Файлови формати" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Име на файл" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Име на файл (без път)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Размер на файла" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2212,7 +2287,7 @@ msgstr "Тип на файла" msgid "Filename" msgstr "Име на файл" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Файлове" @@ -2220,15 +2295,19 @@ msgstr "Файлове" msgid "Files to transcode" msgstr "Файлове за прекодиране" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Намери песни в библиотеката, които спазват вашият критерия" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Подпечатване на песента" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Край" @@ -2236,7 +2315,7 @@ msgstr "Край" msgid "First level" msgstr "Първо ниво" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2252,12 +2331,12 @@ msgstr "Поради причини, свързани с лицензиране msgid "Force mono encoding" msgstr "Принудително кодиране в моно" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Забравяне на устройство" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2272,7 +2351,7 @@ msgstr "Забравяне на устройство ще го премахне #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2300,31 +2379,23 @@ msgstr "Скорост" msgid "Frames per buffer" msgstr "Кадри за буфер" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Приятели" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Заледен" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Пълен бас" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Пълен бас + Високи" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Пълни високи" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer аудио двигател" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Общи" @@ -2332,30 +2403,30 @@ msgstr "Общи" msgid "General settings" msgstr "Общи настройки" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Вземете линк за споделяне на този плейлист в Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Вземете линк за споделяне на тази песен в Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Извличане на Grooveshark популярни песни" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Получаване на канали" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Извличане на потоците" @@ -2367,11 +2438,11 @@ msgstr "Въведете име:" msgid "Go" msgstr "Давай" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Отиване към подпрозореца със следващия списък с песни" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Отиване към подпрозореца с предишния списък с песни" @@ -2379,7 +2450,7 @@ msgstr "Отиване към подпрозореца с предишния с msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2389,7 +2460,7 @@ msgstr "Успешно изтегляне на %1 от общо %2 обложк msgid "Grey out non existent songs in my playlists" msgstr "Посивяване на песните, които не съществуват в моят списък с песни" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2397,15 +2468,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Грешка при логин в Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL на плейлист в Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark радио" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Линк към песента в Grooveshark" @@ -2413,44 +2484,44 @@ msgstr "Линк към песента в Grooveshark" msgid "Group Library by..." msgstr "Групиране на Библиотеката по..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Групиране по" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Групиране по Албум" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Групиране по Изпълнител" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Групиране по Изпълнител/Албум" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Групиране по Изпълнител/Година - Албум" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Групиране по Жанр/Албум" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Групиране по Жанр/Изпълнител/Албум" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML страницата не съдържа никакви RSS хранилки" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2459,7 +2530,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP сървър-посредник" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Щастлив" @@ -2475,25 +2546,25 @@ msgstr "Хардуерна информация е налична единств msgid "High" msgstr "Високо" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Високо (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Високо (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Часа" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Хипножабok" @@ -2505,15 +2576,15 @@ msgstr "Нямам регистрация в Magnatune" msgid "Icon" msgstr "Икона" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Иконите отгоре" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Идентифициране на песента" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2523,24 +2594,24 @@ msgstr "Ако продължите това устройство ще рабо msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Ако знаете URL-а на подкаст, въведете го по-долу и цъкнете върху Давай." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Игнориране на \"The\" в имена на изпълнители" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Изображения (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Изображения (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2551,7 +2622,7 @@ msgid "" "time a song finishes." msgstr "В динамичен режим новите песни ще бъдат избирани и добавяни към списъка с песни всеки път, когато свърши песента." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Входящи" @@ -2563,36 +2634,36 @@ msgstr "Включване на обложката в известяването msgid "Include all songs" msgstr "Включване на всички песни" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Увеличаване на звука с 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Увеличаване на звука" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Индексиране %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Информация" @@ -2600,55 +2671,55 @@ msgstr "Информация" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Вмъкване..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Инсталирани" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Проверка на интегритета" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Интернет" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Интернет доставчици" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Невалиден API ключ" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Невалиден формат" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Невалиден метод" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Невалидни параметри" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Невалиден ресурс" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Невалидна услуга" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Невалиден ключ за сесия" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Невалидно потебителско име и/или парола" @@ -2656,42 +2727,42 @@ msgstr "Невалидно потебителско име и/или парол msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Най-слушаните парчета в Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Най-високо класираните парчета в Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Най-високо класираните парчета в Jamendo този месец" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Най-високо класираните парчета в Jamendo тази седмица" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo база от данни" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Отиване до песента, изпълнявана в момента" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Пази бутоните за %1 секундa..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Пази бутоните за %1 секунди..." @@ -2700,23 +2771,24 @@ msgstr "Пази бутоните за %1 секунди..." msgid "Keep running in the background when the window is closed" msgstr "Продължи ипзълнението и във фонов режим, дори когато прозореца е затворен" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Запази оригиналните файлове" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Котенца" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Език" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Лаптоп/Слушалки" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Голяма зала" @@ -2724,58 +2796,24 @@ msgstr "Голяма зала" msgid "Large album cover" msgstr "Голяма обложка" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Голяма странична лента" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Последно изпълнение" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm потребителско радио: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Библиотека - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm радио микс - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Съседско Радио - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Радио Станция - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm Изпълнители Подобни на %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm отбелязване на радио: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm е претоварен в момента, моля, опитайте след няколко минути" @@ -2783,11 +2821,11 @@ msgstr "Last.fm е претоварен в момента, моля, опита msgid "Last.fm password" msgstr "Last.fm парола" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Брой пускания в Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm етикети" @@ -2795,28 +2833,24 @@ msgstr "Last.fm етикети" msgid "Last.fm username" msgstr "Last.fm потребителско име" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm уики" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Най-малко любими песни" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Оставете празно за данни по подразбиране. Примери: \"/dev/dsp\", \"front\" и т.н." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Дължина" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Библиотека" @@ -2824,24 +2858,24 @@ msgstr "Библиотека" msgid "Library advanced grouping" msgstr "Разширено групиране на Библиотеката" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Известие за повторно сканиране на библиотеката" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Търсене в библиотеката" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Ограничения" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Слушане на Grooveshark песни на базата на изслушаното от Вас" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "На живо" @@ -2853,15 +2887,15 @@ msgstr "Зареди" msgid "Load cover from URL" msgstr "Зареди обложка от URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Зареди обложка от URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Зареждане на обложка от диск" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Зареждане на обложката от диска..." @@ -2869,84 +2903,89 @@ msgstr "Зареждане на обложката от диска..." msgid "Load playlist" msgstr "Зареждане на списък с песни" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Зареждане на списък с песни..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Зареждане на Last.fm радио" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Зареждане на MTP устройство" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Зареждане на iPod база данни" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Зареждане на умен списък с песни" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Зареждане на песни" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Зареждане на поток..." -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Зареждане на песни" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Зареждане на информация за песните" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Зареждане…" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Зареждане на файлове/URL адреси, замествайки настоящият списък с песни" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Влизане" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Влизането не успя" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Long term prediction profile (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Любима" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Ниско (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Ниско (256x256)" @@ -2958,12 +2997,17 @@ msgstr "Low complexity profile (LC)" msgid "Lyrics" msgstr "Текстове на песни" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Текстове на песни от %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2975,15 +3019,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2991,7 +3035,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Изтегляне от Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Изтеглянето от Magnatune завършено" @@ -2999,15 +3043,20 @@ msgstr "Изтеглянето от Magnatune завършено" msgid "Main profile (MAIN)" msgstr "Main profile (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Направи го така!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Списъкът с песни да е наличен в режим извън мрежа" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Грешка при отговора" @@ -3020,15 +3069,15 @@ msgstr "Ръчна настройка на сървъра-посредник" msgid "Manually" msgstr "Ръчно" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Производител" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Маркирай като чута" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Маркирай като нова" @@ -3040,17 +3089,21 @@ msgstr "Съвпадане всеки термин за търсене (И)" msgid "Match one or more search terms (OR)" msgstr "Съвпадане на един или повече терминала за търсене (ИЛИ)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Максимален битов поток" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Средно (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Средно (512x512)" @@ -3062,11 +3115,15 @@ msgstr "Тип членство" msgid "Minimum bitrate" msgstr "Минимален битов поток" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Липсват готови настройки за проектМ" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Модел" @@ -3074,20 +3131,20 @@ msgstr "Модел" msgid "Monitor the library for changes" msgstr "Следи за промени в библиотеката" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Месеца" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Статус" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3095,15 +3152,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Най-пускани" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Точка на монтиране" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Точки за монтиране" @@ -3112,7 +3173,7 @@ msgstr "Точки за монтиране" msgid "Move down" msgstr "Преместване надолу" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Преместване в библиотека..." @@ -3121,7 +3182,7 @@ msgstr "Преместване в библиотека..." msgid "Move up" msgstr "Преместване нагоре" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Музика" @@ -3129,56 +3190,32 @@ msgstr "Музика" msgid "Music Library" msgstr "Музикална Библиотека" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Без звук" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Моята Last.fm Библиотека" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Моето Last.fm Mix Радио" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Моят Last.fm Квартал" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Моето Last.fm Препоръчително Радио" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Мое радио микс" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Моята музика" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Моят Квартал" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Моята Радио Станция" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Моите Препоръки" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Име" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Опции за именуване" @@ -3186,23 +3223,19 @@ msgstr "Опции за именуване" msgid "Narrow band (NB)" msgstr "Narrow band (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Съседи" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Мрежов сървър-посредник" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Дистанционно управление" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Никога" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Никога пускани" @@ -3211,21 +3244,21 @@ msgstr "Никога пускани" msgid "Never start playing" msgstr "Никога да не се пуска възпроизвеждането" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Нова папка" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Нов списък с песни" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Нов умен списък с песни..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Нови песни" @@ -3233,24 +3266,24 @@ msgstr "Нови песни" msgid "New tracks will be added automatically." msgstr "Нови парчета ще бъдат добавяни автоматично." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Най-нови парчета" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Следваща" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Следваща песен" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Следващата седмица" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Без анализатор" @@ -3258,7 +3291,7 @@ msgstr "Без анализатор" msgid "No background image" msgstr "Няма фоново изображение" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3266,7 +3299,7 @@ msgstr "" msgid "No long blocks" msgstr "No long blocks" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Няма намерени съвпадения. Изтрийте текста, за да видите отново цялото съдържание." @@ -3280,11 +3313,11 @@ msgstr "No short blocks" msgid "None" msgstr "Никаква" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Никоя от избраните песни бяха сподобни да бъдат копирани на устройството" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Нормално" @@ -3292,43 +3325,47 @@ msgstr "Нормално" msgid "Normal block type" msgstr "Normal block type" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Не е налично при използването на динамичен списък с песни" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Не е свързан" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Недостатъчно съдържание" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Недостатъчно почитатели" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Недостатъчно членове" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Недостатъчно съседи" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Не е инсталиран" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Не сте вписан" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Не е монтиран - двоен клик за монтиране" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Тип на известяване" @@ -3341,36 +3378,41 @@ msgstr "Известия" msgid "Now Playing" msgstr "В момента се изпълнява" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD Изглед" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3378,11 +3420,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Покажи само първите" @@ -3390,23 +3432,23 @@ msgstr "Покажи само първите" msgid "Opacity" msgstr "Непрозрачност" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Отвори %1 в браузъра" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Отваряне на &аудио CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3414,30 +3456,35 @@ msgstr "" msgid "Open device" msgstr "Отворено устройство" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Отваряне на файл..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Отвори в Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Отворяне в нов списък с песни" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Отваряне..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Неуспешна операция" @@ -3457,23 +3504,23 @@ msgstr "Настройки…" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Организиране на Файлове" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Организиране на файлове..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Файловете се организират" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Оригинални етикети" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Други настройки" @@ -3481,7 +3528,7 @@ msgstr "Други настройки" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3489,15 +3536,11 @@ msgstr "" msgid "Output options" msgstr "Изходни настройки" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Презапис на съществуващите файлове" @@ -3509,15 +3552,15 @@ msgstr "" msgid "Owner" msgstr "Собственик" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Претърсване на Jamendo каталога" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Парти" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3526,20 +3569,20 @@ msgstr "Парти" msgid "Password" msgstr "Парола" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Пауза" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "На пауза" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "На пауза" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3548,34 +3591,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Стандартна странична лента" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Възпроизвеждане" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Възпроизвеждане на изпълнител или етикет" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Възпроизвеждане радиото на изпълнителя" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Брой изпълнения" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Възпроизвеждане на потребителско радио..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Продължаване ако е спряно и обратно" @@ -3584,45 +3615,42 @@ msgstr "Продължаване ако е спряно и обратно" msgid "Play if there is nothing already playing" msgstr "Възпроизвеждане, ако има песен, която вече се изпълнява" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Възпроизвеждане на отбелязано радио..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Възпроизвеждане на тата песен от списъка с песни" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Възпроизвеждане/Пауза" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Възпроизвеждане" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Настройки на плеър" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Списък с песни" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Списъка с песни е завършен" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Настройки на списъка с песни" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Тип на списъка с песни" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Списъци с песни" @@ -3634,23 +3662,23 @@ msgstr "Моля изберете вашия браузър и се върнет msgid "Plugin status:" msgstr "Състояние на приставката:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасти" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Поп" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Популярни песни" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Популярните песни на месеца" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Популярните песни днес" @@ -3659,22 +3687,23 @@ msgid "Popup duration" msgstr "Врементраене на балончето" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Порт" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Предусилвател" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Настройки" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Настройки..." @@ -3710,7 +3739,7 @@ msgstr "Натиснете клавишна комбинация, която д msgid "Press a key" msgstr "Натиснете клавиш" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Натиснете клавишна комбинация, която да използвате за %1..." @@ -3721,20 +3750,20 @@ msgstr "Настройки на красиво OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Преглед" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Предишна" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Предишна песен" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Показване на информация за версията" @@ -3742,21 +3771,25 @@ msgstr "Показване на информация за версията" msgid "Profile" msgstr "Профил" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Напредък" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Натиснете бутон на Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Подреди песните по случаен начин" @@ -3764,85 +3797,95 @@ msgstr "Подреди песните по случаен начин" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Качество" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Заявящо устойство..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Мениджър на опашката" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Пратете избраните песни на опашката" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Прати избрана песен на опашката" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Радио (еднаква сила на звука за всички песни)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Радиа" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Дъжд" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Произволна визуализация" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Задай рейтинг на текущата песен 0 звезди" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Задай рейтинг на текущата песен 1 звезда" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Задай рейтинг на текущата песен 2 звезди" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Задай рейтинг на текущата песен 3 звезди" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Задай рейтинг на текущата песен 4 звезди" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Задай рейтинг на текущата песен 5 звезди" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Рейтинг" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Наистина ли искаш да затвориш?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Опресняване" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Презареди каталога" @@ -3850,19 +3893,15 @@ msgstr "Презареди каталога" msgid "Refresh channels" msgstr "Презареди каналите" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Опресни списъка с приятели" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Презареди листа със станциите" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Обновяване на потоците" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Реге" @@ -3874,8 +3913,8 @@ msgstr "Запомни Wiiremote суинг" msgid "Remember from last time" msgstr "Помни от предния път" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Премахване" @@ -3883,7 +3922,7 @@ msgstr "Премахване" msgid "Remove action" msgstr "Премахване на действието" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Премахни дублиранията от плейлиста" @@ -3891,73 +3930,77 @@ msgstr "Премахни дублиранията от плейлиста" msgid "Remove folder" msgstr "Премахване на папката" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Премахни от Моята музика" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Премахване от любими" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Премахване от списъка с песни" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Премахване на песни от Моята музика" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Премахване на песни от любими" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Преименуване на \"%1\" списък с песни" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Преименуване на Grooveshark списък с песни" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Преименуване на списъка с песни" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Преименуване на списъка с песни..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Преномерирай песните в този ред..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Повтаряне" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Повтаряне на албума" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Повтаряне на списъка с песни" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Повтаряне на песента" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Заместване на текущия списък с песни" @@ -3966,15 +4009,15 @@ msgstr "Заместване на текущия списък с песни" msgid "Replace the playlist" msgstr "Заместване на списъка с песни" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Заменя интервалите със символи" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Изравняване на усилването" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3982,24 +4025,24 @@ msgstr "" msgid "Repopulate" msgstr "Ново попълване" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Възстановяване" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Изчистване на броя възпроизвеждания" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Само ASCII символи" @@ -4007,15 +4050,15 @@ msgstr "Само ASCII символи" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Извличане на Grooveshark любими песни" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Извличане на Grooveshark списъци с песни" @@ -4035,11 +4078,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Рок" @@ -4051,25 +4094,25 @@ msgstr "Стартирай" msgid "SOCKS proxy" msgstr "SOCKS сървър-посредник" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Безопасно премахване на устройството" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Безопасно премахване на устройството след приключване на копирането" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Дискретизация" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Дискретизация" @@ -4077,27 +4120,33 @@ msgstr "Дискретизация" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Запази обложката на албума" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Запази обложката на диска..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Запазване на изображение" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Запазване на списъка с песни" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Запазване на списъка с песни..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Запис на фиксирани настройки" @@ -4113,11 +4162,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "Запази този поток в интернет таб" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Запазване на песните" @@ -4129,7 +4178,7 @@ msgstr "Scalable sampling rate profile (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Резултат" @@ -4137,34 +4186,38 @@ msgstr "Резултат" msgid "Scrobble tracks that I listen to" msgstr "Запази песните, които слушам" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Търсене" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Търси Icecast станции" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Търси в jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Търси в Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Търси за обложки" @@ -4184,21 +4237,21 @@ msgstr "Търси в iTunes" msgid "Search mode" msgstr "Режим \"Търсене\"" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Опции при търсене" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Резултати от търсенето" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Термини за търсене" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Търсене в Grooveshark" @@ -4206,27 +4259,27 @@ msgstr "Търсене в Grooveshark" msgid "Second level" msgstr "Второ ниво" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Придвижване назад" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Придвижване напред" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Следене на текущата песен с относително количество" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Следене на текущата песен с абсолютно позиция" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Избиране на всички" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Изчистване на избора" @@ -4234,7 +4287,7 @@ msgstr "Изчистване на избора" msgid "Select background color:" msgstr "Изберете цвета на фона:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Избор на фоново изображение" @@ -4250,7 +4303,7 @@ msgstr "Изберете цвета на обекта:" msgid "Select visualizations" msgstr "Избери визуализации" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Избери визуализации..." @@ -4258,7 +4311,7 @@ msgstr "Избери визуализации..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Сериен номер" @@ -4270,51 +4323,51 @@ msgstr "" msgid "Server details" msgstr "Подробности за сървъра" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Услугата е недостъпна" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Задай %1 да е %2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Ниво на звука - процента" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Избери стойност за всички песни" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Бърз клавиш" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Бърз клавиш за %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Бързият клавиш за %1 вече съществува" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Показване" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Показване на OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Показва светеща анимация на текущата песен" @@ -4342,15 +4395,15 @@ msgstr "Покажи изкачащо прозорче в областа за у msgid "Show a pretty OSD" msgstr "Показване на красиво OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Покажи над status bar-а" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Показвай всички песни" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Покажи всичките песни" @@ -4362,32 +4415,36 @@ msgstr "Показвай обложки в библиотеката" msgid "Show dividers" msgstr "Покажи разделители" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Покажи в пълен размер..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Покажи във файловия мениджър..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Показване в смесени изпълнители" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Показвай само дубликати" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Показване само на неотбелязани" @@ -4396,8 +4453,8 @@ msgid "Show search suggestions" msgstr "Покажи подсказвания при търсене" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Показване на бутоните \"харесвам\" и \"бан\"" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4411,27 +4468,27 @@ msgstr "Показване на икона в областта за уведом msgid "Show which sources are enabled and disabled" msgstr "Покажи кои източници са разрешени и кои забранени" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Показване/скриване" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Случаен ред на изпълнение" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Случаен ред на албуми" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Случаен ред на изпълнение на всички" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Разбъркване на списъка с песни" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Случаен ред на песните в този алубм" @@ -4447,7 +4504,7 @@ msgstr "Изход" msgid "Signing in..." msgstr "Вписване..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Подобни изпълнители" @@ -4459,43 +4516,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ска" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Прескачане назад в списъка с песни" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Презключи броя" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Прескачане напред в списъка с песни" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Малки обложки" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Малка странична лента" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Умен списък с песни" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Умни списъци с песни" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Лек" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Лек рок" @@ -4503,11 +4568,11 @@ msgstr "Лек рок" msgid "Song Information" msgstr "Информация за песен" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Информация за песен" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Сонограма" @@ -4527,15 +4592,23 @@ msgstr "Сортиране по жанр(по популярност)" msgid "Sort by station name" msgstr "Сортирай по име на станция" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Сортиране на песните по" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Сортиране" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Източник" @@ -4551,7 +4624,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Грешка в вписване в Spotify" @@ -4559,7 +4632,7 @@ msgstr "Грешка в вписване в Spotify" msgid "Spotify plugin" msgstr "Приставка за Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Приставката за Spotify не е инсталирана" @@ -4567,77 +4640,77 @@ msgstr "Приставката за Spotify не е инсталирана" msgid "Standard" msgstr "Стандартно" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Със звезда" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Стартиране на текущо възпроизвеждания списък с песни" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Начало на прекодирането" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Стартиране на %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Стартиране..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Станции" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Спиране" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Спиране след" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Спри след тази песен" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Спиране на възпроизвеждането" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Спиране на възпроизвеждането след текущата песен" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Спрян" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Поток" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4647,7 +4720,7 @@ msgstr "" msgid "Streaming membership" msgstr "Членство за слушане" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Абонирани списъци с песни" @@ -4655,7 +4728,7 @@ msgstr "Абонирани списъци с песни" msgid "Subscribers" msgstr "Абонати" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4663,12 +4736,12 @@ msgstr "" msgid "Success!" msgstr "Успешно!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Успешно записан %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Предложени етикети" @@ -4677,13 +4750,13 @@ msgstr "Предложени етикети" msgid "Summary" msgstr "Резюме" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Много високо (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Супер високо (2048x2048)" @@ -4695,43 +4768,35 @@ msgstr "Поддържани формати" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Синхронизиране на входящата кутия на Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Синхронизиране на списъка с песни от Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Синхронизиране на оценените песни от Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Системни цветове" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Табовете отгоре" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Етикет" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Получаване на етикети" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Отбелязване на радио" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Отбелязан битов поток" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Техно" @@ -4739,11 +4804,11 @@ msgstr "Техно" msgid "Text options" msgstr "Настройки на текста" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Благодарности на" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Командата \"%1\" не може да бъде стартирана" @@ -4752,17 +4817,12 @@ msgstr "Командата \"%1\" не може да бъде стартиран msgid "The album cover of the currently playing song" msgstr "Обложката на албума на текущо звучащата песен" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Директорията \"%1\" не е валидна" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Списъкът с песни '%1' беше празен или не можа да бъде зареден" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Втората стойност трябва да е по-голяма от първата!" @@ -4770,40 +4830,40 @@ msgstr "Втората стойност трябва да е по-голяма msgid "The site you requested does not exist!" msgstr "Сайта, който предоставихте не съществува" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Сайта, който предоставихте не е изображение!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Версията на Clementine, която току що обновихте изисква пълно повторно сканиране на библиотеката, заради следните нови функции:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "В този албум има други песни" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Имаше проблем в комуникацията с gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Имаше проблем с изтеглянето на метаданните от Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Имаше проблем в разбора на отговора от iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4815,13 +4875,13 @@ msgid "" "deleted:" msgstr "Имаше проблем с изтриването на някои песни.Следните не можаха да бъдат изтрити:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Тези файлове ще бъдат изтрити от устройството,сигурни ли сте че искате да продължите?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4841,13 +4901,13 @@ msgstr "Тези настройки се използват в диалогов msgid "Third level" msgstr "Трето ниво" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Това действие ще създаде база от данни с размер, който може да достигне 150 MB.\nСигурни ли сте че искате да продължите?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Този албум не е наличен в избраният формат" @@ -4861,11 +4921,11 @@ msgstr "Това устройство трябва да бъде свързан msgid "This device supports the following file formats:" msgstr "Това устройство подържа следните формати:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Това устройство няма да работи както трябва." -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Това е MTP устройство,но вие сте компилирали Clementine без подръжка за libmtp." @@ -4874,7 +4934,7 @@ msgstr "Това е MTP устройство,но вие сте компилир msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Това е iPod, но вие сте компилирали Clementine без подръжка за libgpod" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4884,33 +4944,33 @@ msgstr "Това е първият път,когато мушкате това msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Този поток е само за платени регистрации." -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Този тип устройство не е подържано:%1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Заглавие" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "За да пуснете Grooveshark радио първо трябва да изслушане няколко песни в Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Днес" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Вкл./Изкл. на красиво екранно меню" @@ -4918,27 +4978,27 @@ msgstr "Вкл./Изкл. на красиво екранно меню" msgid "Toggle fullscreen" msgstr "Превключване на пълен екран" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Покажи статус на опашката" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Включаване на скроблинга" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Превключване видимостта на красиво екранно меню" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Утре" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Твърде много пренасочвания" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Топ песни" @@ -4946,21 +5006,25 @@ msgstr "Топ песни" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Общо прехвърлени байта" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Общ брой направени мрежови заявки" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Песен" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Прекодирай музиката" @@ -4972,7 +5036,7 @@ msgstr "Журнал на прекодирането" msgid "Transcoding" msgstr "Прекодиране" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Прекодиране на %1 файлове чрез %2 начина" @@ -4981,11 +5045,11 @@ msgstr "Прекодиране на %1 файлове чрез %2 начина" msgid "Transcoding options" msgstr "Настройки на прекодиране" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "Инстинско Аудио" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Турбина" @@ -4993,72 +5057,72 @@ msgstr "Турбина" msgid "Turn off" msgstr "Изключване" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL-и" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Неуспешно сваляне %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Непознат" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Неизвестен тип съдържание" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Неизвестна грешка" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Махни обложката" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Премахване абонамент" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Обновяване на Grooveshark списъците с песни" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Обнови всички подкасти" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Обнови папките с промени в библиотеката" @@ -5066,7 +5130,7 @@ msgstr "Обнови папките с промени в библиотекат msgid "Update the library when Clementine starts" msgstr "Обновяване на библиотеката при стартиране на Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Обнови този подкаст" @@ -5074,21 +5138,21 @@ msgstr "Обнови този подкаст" msgid "Updating" msgstr "Обновяване" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Обновяване %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Обновяване %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Обновяване на библиотеката" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Използване" @@ -5096,11 +5160,11 @@ msgstr "Използване" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Използване на клавишните комбинации на Гном" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Ако е възможно да се използват мета данни на Изравняване на усилването" @@ -5120,7 +5184,7 @@ msgstr "Използване на потребителски цветове" msgid "Use a custom message for notifications" msgstr "Използване на потребителско съобщение за известията" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5160,20 +5224,20 @@ msgstr "Използване на системните настройки за msgid "Use volume normalisation" msgstr "Използване на нормализация на звука" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Използван" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Потребител %1 няма Grooveshark Anywhere акаунт." -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Потребителски интерфейс" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5195,12 +5259,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Променлив битов поток" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Сборни формации" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Версия %1" @@ -5213,7 +5277,7 @@ msgstr "Изглед" msgid "Visualization mode" msgstr "Режим \"Визуализация\"" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Визуализации" @@ -5221,11 +5285,15 @@ msgstr "Визуализации" msgid "Visualizations Settings" msgstr "Настройки на визуализациите" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Засичане на глас" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Сила на звука %1%" @@ -5243,11 +5311,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5255,7 +5323,7 @@ msgstr "Wav" msgid "Website" msgstr "Уебсайт" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Седмици" @@ -5281,32 +5349,32 @@ msgstr "Защо не опиташ..." msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: активирано" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: свързано" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: критично ниво на батериите (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: деактивирано" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: несвързано" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: ниско ниво на батерията (%2%)" @@ -5327,7 +5395,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Аудио — Windows Media" @@ -5335,25 +5403,25 @@ msgstr "Аудио — Windows Media" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Искате ли да преместим другите песни от този албум в Различни изпълнители?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Искате ли да изпълните пълно повторно сканиране сега?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5365,11 +5433,11 @@ msgstr "Година" msgid "Year - Album" msgstr "Година - Албум" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Години" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Вчера" @@ -5377,13 +5445,13 @@ msgstr "Вчера" msgid "You are about to download the following albums" msgstr "На път сте да свалите следните албуми" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5393,12 +5461,12 @@ msgstr "" msgid "You are not signed in." msgstr "Не сте вписан." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Вписани сте като %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Вписани сте." @@ -5406,13 +5474,13 @@ msgstr "Вписани сте." msgid "You can change the way the songs in the library are organised." msgstr "Можете да промените начина, по-който песните в библиотеката са организирани." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Можете да слушате безплатно без регистрация, но с Premium регистрация можете да слушате потоци с по-високо качество и без реклами." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5422,13 +5490,6 @@ msgstr "Можете да слушате песни от magnatune безпла msgid "You can listen to background streams at the same time as other music." msgstr "Можете да слушате фонови потоци по същото време, когато слушате и музика." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Можете да слушате песни безплатно, но само хора с платени регистрации могат да слушат Last.fm радио от Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Можете да използвате Wii Remote като дистанционно за Клементин.Вижте Wiki страницата на Clementine за повече информация.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Нямате Grooveshark Anywhere акаунт." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Нямате Spotify Premium акаунт." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Отписан сте от Spotify, моля въведете отново паролата си в Настройки." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Изписан сте от Spotify, моля въведете паролата си отново" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Харесвате тази песен" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5473,17 +5548,11 @@ msgstr "Трябва да влезете в Системните Настрой msgid "You will need to restart Clementine if you change the language." msgstr "Трябва да рестартирате Clementine, ако смените езика." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Няма да можете да слушате радио станции от Last.fm, защото нямате регистрация там." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Вашият IP адрес:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Вашите Last.fm данни са грешни" @@ -5491,42 +5560,43 @@ msgstr "Вашите Last.fm данни са грешни" msgid "Your Magnatune credentials were incorrect" msgstr "Вашите данни за достъп за Magnatune бяха грешни" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Вашата библиотека е празна!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Вашите радио потоци" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Вашите слушания: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "В системата Ви липсва OpenGL поддръжка, визуализациите са недостъпни." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Вашето потребителско име или парола не съвпада." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Я-А" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Нула" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "добавете %n песни" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "след" @@ -5546,19 +5616,19 @@ msgstr "автоматично" msgid "before" msgstr "преди" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "между" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "Пъво най-големите" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "удари в минута" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "съдържа" @@ -5568,20 +5638,20 @@ msgstr "съдържа" msgid "disabled" msgstr "изключено" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "диск %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "не съдържа" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "свършва с" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "равно" @@ -5589,11 +5659,11 @@ msgstr "равно" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net директория" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "по-голям от" @@ -5601,54 +5671,55 @@ msgstr "по-голям от" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "в последните" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "килобита/сек" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "по-малко от" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "първо най-дългите" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "премести %n песни" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "първо най-новите" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "различно" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "не e в последните" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "не е на" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "първо най-старите" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "вкл." -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "опции" @@ -5660,36 +5731,37 @@ msgstr "" msgid "press enter" msgstr "натиснете enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "премахване на %n песни" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "първо най-късите" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "първо най-малките" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "сортирай песните" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "започва с" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "Стоп" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "песен %1" diff --git a/src/translations/bn.po b/src/translations/bn.po index 440bacf4c..012fe3039 100644 --- a/src/translations/bn.po +++ b/src/translations/bn.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Bengali (http://www.transifex.com/projects/p/clementine/language/bn/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +17,7 @@ msgstr "" "Language: bn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -42,9 +42,9 @@ msgstr "" msgid " kbps" msgstr " কেবিপিএস" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " মিলিসেকেন্ড" @@ -57,11 +57,16 @@ msgstr " পয়েন্ট" msgid " seconds" msgstr " সেকেন্ড" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " গান" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 অ্যালবামস" @@ -71,12 +76,12 @@ msgstr "%1 অ্যালবামস" msgid "%1 days" msgstr "%1 দিন" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 দিন পুরানো" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -86,48 +91,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 প্লে লিস্ট (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 সিলেক্ট অফ" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 গান" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 গান" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 গান পাওয়া গেছে" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 গান পাওয়া গেছে ( দৃশ্যমান %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 ট্রাকস" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 ট্রানসফারড" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1 উইমটে ডেভ মডউল" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 অন্য শ্রোতা" @@ -141,18 +146,21 @@ msgstr "%L1 টোটাল প্লে" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n অসফল" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n সমাপ্ত" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n বাকি আছে" @@ -164,24 +172,24 @@ msgstr "&আল্যাইন টেক্সট" msgid "&Center" msgstr "&সেন্টার" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&কাস্টম" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&অতিরিক্ত" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&সহায়িকা" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&গোপন %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&গোপন" @@ -189,23 +197,23 @@ msgstr "&গোপন" msgid "&Left" msgstr "বাঁদিকে (&ব)" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "কিছু &নয়" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "প্রস্থান করো" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -213,23 +221,23 @@ msgstr "" msgid "&Right" msgstr "ডানদিকে (&ড)" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "& সামঞ্জস্য পূর্ণ প্রসারণ - উইন্ডো অনুপাতে" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&সরঞ্জামসমূহ" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "আনুপূর্বিক তফাৎ" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "এবং অন্য সমস্ত এমরক সহযোগকারি গন" @@ -249,14 +257,10 @@ msgstr "" msgid "1 day" msgstr "১ দিন" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "১টি ট্র্যাক" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -266,7 +270,7 @@ msgstr "128 কেবিপিস এম পি থ্রী" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 অনবরত সঙ্গীত" @@ -274,12 +278,6 @@ msgstr "50 অনবরত সঙ্গীত" msgid "Upgrade to Premium now" msgstr "এখনই প্রিমিয়ামে আপগ্রেড করুন" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -290,6 +288,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -298,38 +307,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "একটি Grooveshark Anywhere একাউন্ট আবশ্যক।" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "এক্ টি স্পটীফাই অ্যাকাউন্ট প্রয়োজন" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "এক টি স্মার্ট প্লে লিস্ট আপনার সঙ্গীত সংগ্রহ থেকে সৃষ্টি হয়। স্মার্ট প্লে লিস্ট আপনাকে বিভিন্ন ভাবে সঙ্গীত চয়ন করার সুবিধা দেয় ।" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "এক টি সঙ্গীত প্লে লিস্ট এ অন্তর্ভুক্ত হয় যদি কিনা মান গুলি ঠিক পুরন করে।" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "এ থেকে জেড পর্যন্ত" @@ -349,36 +358,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "এআইএফএফ" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1-এর সম্বন্ধে" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "ক্লেমেন্টাইন সন্মন্ধে" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "কিউ টি সন্মন্ধে" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "অ্যাকাউন্ট সন্মন্ধে" @@ -390,11 +398,15 @@ msgstr "" msgid "Action" msgstr "পদক্ষেপ" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "কার্যকরী / অকার্যকরী অয়্যারমোট" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -410,39 +422,39 @@ msgstr "যদি নোটিফিকেশান টাইপ সাপোর msgid "Add action" msgstr "পদক্ষেপ গ্রহন করুন" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "অন্য এক্ টি সঙ্গীত যোগ করুন" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "ডাইরেকট রি যোগ করুন" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "ফাইল যোগ করুন" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "অনুবাদ এর জন্য ফাইল যোগ করুন" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "ফোল্ডার যোগ করুন" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "ফোল্ডার যুক্ত করুন..." @@ -454,11 +466,11 @@ msgstr "এক টি নতুন ফোল্ডার যোগ করুন" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "খোঁজার বিষয় যোগ করুন" @@ -522,6 +534,10 @@ msgstr "অস্রুতসঙ্গীত এর সংখ্যা" msgid "Add song title tag" msgstr "সঙ্গীত টাইটল ট্যাগ যুক্ত করুন" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "সঙ্গীত এর ট্র্যাক ট্যাগ যুক্ত করুন" @@ -530,22 +546,34 @@ msgstr "সঙ্গীত এর ট্র্যাক ট্যাগ যু msgid "Add song year tag" msgstr "সঙ্গীত এর প্রকাশ কাল ট্যাগ যুক্ত করুন" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "সঙ্গীত এর ধারা যুক্ত করুন" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "অন্য প্লে লিস্ট যুক্ত করুন" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "প্লে লিস্ট যোগ করুন" @@ -554,6 +582,10 @@ msgstr "প্লে লিস্ট যোগ করুন" msgid "Add to the queue" msgstr "সঙ্গীত ধারাবাহিকতায় যুক্ত করুন" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "উইমোটেডেভ সংযুক্ত করুন" @@ -583,15 +615,15 @@ msgstr "আজ প্রকাশিত" msgid "Added within three months" msgstr "বিগত তিন মাসে প্রকাশিত" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "অত্যাধুনিক সঞ্জুক্তিকরন" @@ -599,12 +631,12 @@ msgstr "অত্যাধুনিক সঞ্জুক্তিকরন" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "কপি হওয়ার পর" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -612,11 +644,11 @@ msgstr "কপি হওয়ার পর" msgid "Album" msgstr "অ্যালবাম" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "অ্যালবাম (পরিচ্ছন্ন আওয়াজ সমস্ত সঙ্গীত এর জন্য)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -626,35 +658,36 @@ msgstr "অ্যালবাম শিল্পী" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "জামেন্দ.কম এর অ্যালবাম তথ্য..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "অ্যালবাম কভার" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "কভারবিহীন অ্যালবাম" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "সব ফাইল (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "সমস্ত অ্যালবাম গুলি" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "সমস্ত শিল্পীগণ" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "সর্বধরনের ফাইল (*)" @@ -663,19 +696,19 @@ msgstr "সর্বধরনের ফাইল (*)" msgid "All playlists (%1)" msgstr "সমস্ত প্লে লিস্ট (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "সমস্ত অনুবাদকগন" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "সমস্ত ট্র্যাক গুলি" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -700,30 +733,30 @@ msgstr "স্থায়ী ভাবে মেন উইন্ডো বর্ msgid "Always start playing" msgstr "স্থায়ী ভাবে সঙ্গীত চালু রাখুন" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "এক্ টি প্লাগ ইন প্রয়োজন। আপনি কি প্লাগ ইন টি ডাউনলোড করে ইন্সটল করতে ইচ্ছুক ?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "iTune ডাটাবেস লোডইং ত্রুটি র জন্য দুঃখিত ।" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "ত্রুটি পূর্ণ মেটা ডাটা সংযুক্তি %1" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "এবং" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -732,13 +765,13 @@ msgstr "" msgid "Appearance" msgstr "উপস্থিতি" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "ফাইল / ইউ আর এল প্লে লিস্ট এ সংযুক্তি করন" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "প্লে লিস্ট এ সংযুক্তি করন" @@ -746,52 +779,47 @@ msgstr "প্লে লিস্ট এ সংযুক্তি করন" msgid "Append to the playlist" msgstr "প্লে লিস্ট এ সংযুক্তি করন" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "কম্প্রেসন যুক্ত করুন ।" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "আপনি কি স্থায়ী ভাবে %1 প্রেসেট টি ডিলিট করতে চান ?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "আপনি কি গান গুলি র পরিসংখ্যান রিসেট করতে চান ?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "শিল্পী" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "শিল্পী সম্পকিত তথ্য" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "শিল্পীর অদ্যাক্ষর" @@ -799,9 +827,13 @@ msgstr "শিল্পীর অদ্যাক্ষর" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -809,7 +841,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "গীতিকার" @@ -825,7 +857,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -833,15 +865,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "বিপিএম" @@ -862,7 +894,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -870,11 +902,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -894,18 +922,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -913,7 +940,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -929,7 +961,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -943,11 +975,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -959,43 +991,66 @@ msgstr "কিন্তু এই উৎসসমূহ নিষ্কিয় msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1005,15 +1060,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1029,11 +1088,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1042,7 +1101,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "ক্লেমেন্টাইন যেসব ওয়েবসাইট থেকে লিরিক খুঁজবে সেগুলো নির্বাচন করুন।" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1050,17 +1109,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1073,8 +1132,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1096,8 +1155,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1111,20 +1170,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1136,11 +1188,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1150,7 +1202,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1165,19 +1220,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1185,73 +1240,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1259,11 +1319,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1273,12 +1333,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1294,17 +1358,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1312,156 +1380,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "প্রচ্ছদ সংগঠক" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1469,7 +1533,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1481,54 +1545,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1536,6 +1596,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1544,30 +1609,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1575,31 +1640,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1608,7 +1673,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1620,15 +1685,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1665,12 +1730,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1680,15 +1750,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1700,27 +1770,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1728,12 +1798,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1749,7 +1820,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1757,15 +1828,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1773,7 +1844,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1782,23 +1853,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1818,20 +1889,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1843,16 +1914,16 @@ msgstr "" msgid "Edit track information" msgstr "গানের তথ্য পরিবর্তন" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "গানের তথ্য পরিবর্তন..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "গানের তথ্য পরিবর্তন..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1860,6 +1931,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1874,7 +1949,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1902,15 +1977,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1924,7 +1994,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "খোঁজার বিষয়বস্তু এখানে লিখুন" @@ -1933,11 +2003,11 @@ msgstr "খোঁজার বিষয়বস্তু এখানে লিখ msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1945,21 +2015,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1967,38 +2038,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2030,7 +2101,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2042,7 +2113,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2063,36 +2134,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2102,42 +2173,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2146,11 +2217,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2166,11 +2237,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2178,7 +2249,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2186,19 +2257,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2208,7 +2283,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2216,15 +2291,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2232,7 +2311,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2248,12 +2327,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2268,7 +2347,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2296,31 +2375,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2328,30 +2399,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2363,11 +2434,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2375,7 +2446,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2385,7 +2456,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2393,15 +2464,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2409,44 +2480,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2455,7 +2526,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2471,25 +2542,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2501,15 +2572,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2519,24 +2590,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2547,7 +2618,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2559,36 +2630,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "তথ্য" @@ -2596,55 +2667,55 @@ msgstr "তথ্য" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "ভুল তথ্য দেয়া হয়েছে" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2652,42 +2723,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2696,11 +2767,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "উইন্ডো বন্ধ করা হলেও পেছনে চলতে থাকুক" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2708,11 +2780,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2720,12 +2792,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2733,45 +2809,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2779,11 +2817,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2791,28 +2829,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "দৈর্ঘ্য" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2820,24 +2854,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2849,15 +2883,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2865,84 +2899,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2954,12 +2993,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2971,15 +3015,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2987,7 +3031,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2995,15 +3039,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "তাই হোক!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3016,15 +3065,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3036,17 +3085,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3058,11 +3111,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3070,20 +3127,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3091,15 +3148,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3108,7 +3169,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3117,7 +3178,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "সঙ্গীত" @@ -3125,56 +3186,32 @@ msgstr "সঙ্গীত" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "আমার সংগীত" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3182,23 +3219,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3207,21 +3240,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3229,24 +3262,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3254,7 +3287,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3262,7 +3295,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3276,11 +3309,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3288,43 +3321,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3337,36 +3374,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3374,11 +3416,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3386,23 +3428,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3410,30 +3452,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3453,23 +3500,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3477,7 +3524,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3485,15 +3532,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3505,15 +3548,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3522,20 +3565,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3544,34 +3587,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "যদি বন্ধ থাকে তবে চালাও, যদি চালু থাকে তবে আটকাও" @@ -3580,45 +3611,42 @@ msgstr "যদি বন্ধ থাকে তবে চালাও, যদি msgid "Play if there is nothing already playing" msgstr "চালু কর যদি অন্য কিছু চালু না থাকে" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3630,23 +3658,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3655,22 +3683,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "পছন্দসমূহ" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "পছন্দসমূহ..." @@ -3706,7 +3735,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3717,20 +3746,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "সংস্করনের তথ্য ছাপুন" @@ -3738,21 +3767,25 @@ msgstr "সংস্করনের তথ্য ছাপুন" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3760,7 +3793,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3768,77 +3806,82 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "ক্রম সংগঠক" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "বৃষ্টি" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3846,19 +3889,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3870,8 +3909,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3879,7 +3918,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3887,73 +3926,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "আমার সংগীত থেকে মুছে ফেলুন" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3962,15 +4005,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3978,24 +4021,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4003,15 +4046,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4031,11 +4074,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4047,25 +4090,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4073,27 +4116,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4109,11 +4158,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4125,7 +4174,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4133,10 +4182,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4144,23 +4197,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4180,21 +4233,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4202,27 +4255,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4230,7 +4283,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4246,7 +4299,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4254,7 +4307,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4266,51 +4319,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4338,15 +4391,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4358,32 +4411,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4392,7 +4449,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4407,27 +4464,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "কোন উৎসগুলো সক্রিয় এবং নিষ্ক্রিয় তা দেখাও" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4443,7 +4500,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4455,43 +4512,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4499,11 +4564,11 @@ msgstr "" msgid "Song Information" msgstr "গানের তথ্য" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "গানের তথ্য" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4523,15 +4588,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "উৎস" @@ -4547,7 +4620,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4555,7 +4628,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4563,77 +4636,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4643,7 +4716,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4651,7 +4724,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4659,12 +4732,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4673,13 +4746,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4691,43 +4764,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4735,11 +4800,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4748,17 +4813,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4766,40 +4826,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4811,13 +4871,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4837,13 +4897,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4857,11 +4917,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4870,7 +4930,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4880,33 +4940,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "শিরনাম" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4914,27 +4974,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4942,21 +5002,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4968,7 +5032,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4977,11 +5041,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4989,72 +5053,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5062,7 +5126,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5070,21 +5134,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5092,11 +5156,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5116,7 +5180,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5156,20 +5220,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5191,12 +5255,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5209,7 +5273,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5217,11 +5281,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5239,11 +5307,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5251,7 +5319,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5277,32 +5345,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5323,7 +5391,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5331,25 +5399,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5361,11 +5429,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5373,13 +5441,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5389,12 +5457,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5402,13 +5470,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5418,13 +5486,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5469,17 +5544,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5487,42 +5556,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5542,19 +5612,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5564,20 +5634,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5585,11 +5655,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5597,54 +5667,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5656,36 +5727,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/br.po b/src/translations/br.po index 0b382b652..5b9242614 100644 --- a/src/translations/br.po +++ b/src/translations/br.po @@ -5,12 +5,12 @@ # Translators: # arnaudbienner , 2011 # FIRST AUTHOR , 2010, 2011 -# Belvar , 2013 -# Belvar , 2011-2012 +# Belvar , 2013 +# Belvar , 2011-2012 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Breton (http://www.transifex.com/projects/p/clementine/language/br/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Language: br\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -43,9 +43,9 @@ msgstr " devez" msgid " kbps" msgstr " kbde" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " me" @@ -58,11 +58,16 @@ msgstr " pik" msgid " seconds" msgstr " eilenn" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " ton" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albom" @@ -72,12 +77,12 @@ msgstr "%1 albom" msgid "%1 days" msgstr "%1 devezh" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 devezh 'zo" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 war %2" @@ -87,48 +92,48 @@ msgstr "%1 war %2" msgid "%1 playlists (%2)" msgstr "%1 roll seniñ (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 diuzet eus" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 ton" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 ton" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 ton kavet" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 ton kavet (%2 diskouezet)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 ton" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 kaset" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1 : enlugellad wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 selaouer all" @@ -142,18 +147,21 @@ msgstr "bet selaouet %L1 gwech" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n c'hwitet" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n echuet" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n a chom" @@ -165,24 +173,24 @@ msgstr "&Steudañ an destenn" msgid "&Center" msgstr "E K&reiz" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personelaat" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Ouzhpenn" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Sikour" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "K&uzhat %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "K&uzhat" @@ -190,23 +198,23 @@ msgstr "K&uzhat" msgid "&Left" msgstr "&Kleiz" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Sonerezh" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Hini ebet" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Roll Seniñ" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Kuitaat" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Doare adlenn" @@ -214,23 +222,23 @@ msgstr "Doare adlenn" msgid "&Right" msgstr "&Dehou" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Doare meskañ" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Astenn ar bannoù evit klotañ gant ar prenestr" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Ostilhoù" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(disheñvel a-dreuz kanaouennoù liesseurt)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... Hag holl kenlabourerien Amarok" @@ -250,14 +258,10 @@ msgstr "0px" msgid "1 day" msgstr "1 devezh" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 ton" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -267,7 +271,7 @@ msgstr "MP3 128k" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 ton dre zegouezh" @@ -275,12 +279,6 @@ msgstr "50 ton dre zegouezh" msgid "Upgrade to Premium now" msgstr "Hizivaat da Premium bremañ" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Krouiñ ur c'hont nevez pe adsevel ur ger-tremen" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -291,6 +289,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Ma n'eo ket diuzet, Clementine a glasko enrollañ ho notennoù hag ho stadegoù all en un diaz roadennoù disheñvel hep cheñch ho restroù.

Ma 'z eo diuzet, enrollañ a raio ho stadegoù en diaz roadennoù hag er restroù bep tro ma vo cheñchet.

N'ez a ket en-dro evit pep mentrezh ha dre ma n'eus reolenn ebet evit en ober, posupl eo ne vefe ket gouest d'al lennerien sonerezh all lenn ar restroù ken.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -299,38 +308,38 @@ msgid "" "activated.

" msgstr "

Skriv a raio an dra-se notennoù ha stadegoù an ton er c'hlav evit kement ton en ho sonaoueg.

N'eus ket ezhomm m'eo an arventenn "Enrollañ an notennoù hag ar stadegoù e klav ar restr" atav bet gweredekaet.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Ar maeziennoù a grog gant %. Da skouer : %artist %album %title

\n

Ma lakait briataennoù tro-dro d'ul lodenn testenn gant ur maezienn, ne vo ket diskouezet ma n'eo ket resisaet endalc'had ar maezienn." -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Ur c'hont Grooveshark a zo dleet" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Ret eo deoc'h kaout ur kont Spotify Premium." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Un arval ne c'hell kennaskañ nemet m'eo bet lakaet ar c'hod mat." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Ur roll seniñ speredek a zo ul listenn dinamek gant tonioù o tont eus ho sonaoueg. Bez ez eus doareoù listennoù speredek disheñvel, a ro an tu da ziuzañ an tonioù gant doareoù disheñvel." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Un ton a vo lakaet er roll seniñ ma glot gant an amplegadoù-mañ :" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -350,36 +359,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Dilezel" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "A-zivout %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "A-zivout Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "A-zivout Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Titouroù ar gont" @@ -391,11 +399,15 @@ msgstr "Titouroù ar gont (Premium)" msgid "Action" msgstr "Oberiadenn" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Gweredekaat/Diweredekaat Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Ouzhpennañ ar podkast" @@ -411,39 +423,39 @@ msgstr "Ouzhpennañ ul linenn nevez, mard eo skoret gant an doare kemenn" msgid "Add action" msgstr "Ouzhpennañ un oberiadenn" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Ouzhpennañ ul lanv all..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Ouzhpennañ un teuliad..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Ouzhpennañ ur restr" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Ouzhpennañ ur restr d'an treuzkemmer" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Ouzhpennañ ur restr pe muioc'h d'an treuzkemmer" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Ouzhpennañ ur restr..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Ouzhpennañ restroù da" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Ouzhpennañ un teuliad" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Ouzhpennañ un teuliad..." @@ -455,11 +467,11 @@ msgstr "Ouzhpennañ un teuliad nevez..." msgid "Add podcast" msgstr "Ouzhpennañ ar podkast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Ouzhpennañ ur podkast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Ouzhpennañ ur ger klask" @@ -523,6 +535,10 @@ msgstr "Ouzhpennañ an niver a wech ma 'z eo bet lammet an ton" msgid "Add song title tag" msgstr "Ouzhpennañ klav titl an ton" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Ouzhpennañ klav niverenn an ton" @@ -531,22 +547,34 @@ msgstr "Ouzhpennañ klav niverenn an ton" msgid "Add song year tag" msgstr "Ouzhpennañ klav bloavezh an ton" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Ouzhpennan ul lanv..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Ouzhpennañ da tonioù karetañ Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Ouzhpennañ da rolloù seniñ Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Ouzhpennañ d'ur roll seniñ all" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Ouzhpennañ d'ar roll seniñ" @@ -555,6 +583,10 @@ msgstr "Ouzhpennañ d'ar roll seniñ" msgid "Add to the queue" msgstr "Ouzhpennañ d'al listenn c'hortoz" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Ouzhpennañ oberadennoù wiimotedev" @@ -584,15 +616,15 @@ msgstr "Ouzhpennet hiziv" msgid "Added within three months" msgstr "Ouzhpennet e-kerzh an tri miz diwezhañ" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Oc'h ouzhpennañ an ton d'an doser sonerezh." -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Oc'h ouzhpennañ an ton d'ar re karetañ" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Strolladur kemplez..." @@ -600,12 +632,12 @@ msgstr "Strolladur kemplez..." msgid "After " msgstr "Goude " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Goude an eiladur..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -613,11 +645,11 @@ msgstr "Goude an eiladur..." msgid "Album" msgstr "Albom" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Albom (Ampled peurvat evit an holl roud)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -627,35 +659,36 @@ msgstr "Arzour an albom" msgid "Album cover" msgstr "Golo Albom" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Titouroù an albom war jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albomoù gant ur golo" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albomoù hep golo" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Holl restroù (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "All Glory to the Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "An holl albomoù" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "An holl arzourien" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Holl restroù (*)" @@ -664,19 +697,19 @@ msgstr "Holl restroù (*)" msgid "All playlists (%1)" msgstr "Holl rolloù seniñ (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "An holl troerien" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "An holl roudoù" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Aotren un arval da bellgargañ sonerezh adalek an urzhiataer-mañ." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Aotren ar pellgargadurioù" @@ -701,30 +734,30 @@ msgstr "Atav diskouez ar prenestr pennañ" msgid "Always start playing" msgstr "Atav kregin da lenn" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Un enlugellad a zo ezhomm a-benn implij Spotify e-barzh Clementine. C'hoant ho peus pellgargañ ha staliañ anezhañ bremañ ?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Ur gudenn a zo savet en ur c'hargañ stlennvon iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Ur gudenn a zo savet e-pad enskrivadur ar metaroadennoù e-barzh '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Ur gudenn dianav a zo bet." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Ha(g) :" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Fuloret" @@ -733,13 +766,13 @@ msgstr "Fuloret" msgid "Appearance" msgstr "Neuz" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Ouzhpennañ restroù pe liammoù internet d'ar roll seniñ" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Ouzhpennañ d'ar roll seniñ lennet" @@ -747,52 +780,47 @@ msgstr "Ouzhpennañ d'ar roll seniñ lennet" msgid "Append to the playlist" msgstr "Ouzhpennañ d'ar roll seniñ" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Koazhañ a-benn mirout ouzh an troc'hadennoù" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Ha sur oc'h da gaout c'hoant diverkañ an talvoud raktermenet « %1 »" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Ha sur oc'h ho peus c'hoant diverkañ ar roll seniñ ?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Ha sur oc'h da gaout c'hoant da adderaouekaat statistikoù an ton-mañ ?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Ha sur oc'h da gaout c'hoant enrollañ an stadegoù an ton e-barzh restr an ton evit kement ton en ho sonaoueg ?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Arzour" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Titouroù war an arzour" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Skingomz dre arzour" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Klavioù an arzour" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Lizherennoù-tal an arzour" @@ -800,9 +828,13 @@ msgstr "Lizherennoù-tal an arzour" msgid "Audio format" msgstr "Mentrezh Aodio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Dilesadur sac'het" @@ -810,7 +842,7 @@ msgstr "Dilesadur sac'het" msgid "Author" msgstr "Aozer" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Aozerien" @@ -826,7 +858,7 @@ msgstr "Hzivadurioù ent emgefreek" msgid "Automatically open single categories in the library tree" msgstr "Digeriñ ent emgefreek ar rummadoù o-unan e gwez ar sonaoueg" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Hegerz" @@ -834,15 +866,15 @@ msgstr "Hegerz" msgid "Average bitrate" msgstr "Fonnder keidennek" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Ment keidennek ar skeudenn" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podkastoù BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +895,7 @@ msgstr "Skeudenn drekleur" msgid "Background opacity" msgstr "Divoullder drekleur" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Enrolladenn ar stlennvon" @@ -871,11 +903,7 @@ msgstr "Enrolladenn ar stlennvon" msgid "Balance" msgstr "Kempouez ar son" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Skarzhañ" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Spektrogram dre varennoù" @@ -895,18 +923,17 @@ msgstr "Emzalc'h" msgid "Best" msgstr "Gwell" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Buhezskrid %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Fonnder" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -914,7 +941,12 @@ msgstr "Fonnder" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Spektogram dre vloc'hoù" @@ -930,7 +962,7 @@ msgstr "Kementad a ruzed" msgid "Body" msgstr "Korf" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Spektogram boom" @@ -944,11 +976,11 @@ msgstr "Box" msgid "Browse..." msgstr "Furchal..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Padelezh ar stoker" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "O lakaat er memor skurzer" @@ -960,43 +992,66 @@ msgstr "Ar mamennoù-se a zo diweredekaet :" msgid "Buttons" msgstr "Boutonoù" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Kemer e kont ar CUE sheet" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Nullañ" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Kemmañ golo an albom" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Kemmañ ment ar font..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Cheñch an doare adlenn" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Kemmañ ar berradenn" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Cheñch an doare meskañ" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Kemmañ ar yezh" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1006,15 +1061,19 @@ msgstr "Cheñchamantoù an doare lenn mono a vo gweredekaet evit an tonioù a ze msgid "Check for new episodes" msgstr "Klask pennadoù nevez" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Klask hizivadurioù..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Choazit un anv evit ho roll seniñ spredek" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Choaz ent emgefreek" @@ -1030,11 +1089,11 @@ msgstr "Choaz ur font..." msgid "Choose from the list" msgstr "Choaz el listenn" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Choazit penaos emañ urzhiet ar roll seniñ hag an niver a donioù a zo e-barzh." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Choaz an teuliad pellgargañ podkastoù" @@ -1043,7 +1102,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Lec'hiennoù web ho peus c'hoant implij evit klask komzoù" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasel" @@ -1051,17 +1110,17 @@ msgstr "Klasel" msgid "Cleaning up" msgstr "O naetaat" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Goullonderiñ" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Skarzhañ ar roll seniñ" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1074,8 +1133,8 @@ msgstr "Kudenn gant Clementine" msgid "Clementine Orange" msgstr "Oranjez Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Skrammañ Clementine" @@ -1097,9 +1156,9 @@ msgstr "Clementine a zo gouest da seniñ sonerezh bet karget war Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Gouest eo Clementine da lenn sonerezh bet lakaet war Google Drive." -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine a zo gouest da seniñ sonerezh bet karget war Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1112,20 +1171,13 @@ msgid "" "an account." msgstr "Clementine a c'hell gourbediñ ho koumanantoù podkastoù gant urzhiataerioù ha poelladoù all. Krouiñ ur gont." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "N'eo ket bet gouest Clementine da gargañ diskwel projectM. Gwiriekait ez eo staliet mat Clementine." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine ne zeu ket a-benn da kavout stad ho koumanant dre ma vez kudennoù gant ho kennask. An tonioù sonet a vo lakaet er grubuilh ha kaset e vint diwezhatoc'h da Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Gweler skeudennoù Clementine" @@ -1137,11 +1189,11 @@ msgstr "N'eo ket bet gouest Clementine da gavout disoc'hoù evit ar restr-mañ" msgid "Clementine will find music in:" msgstr "Clementine a gavo ar sonerezh e :" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klikit aze evit krouiñ ho levraoueg sonerezh" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1151,7 +1203,10 @@ msgstr "Klikit aze evit merkañ ar roll seniñ-mañ evit ma vefe enrollet hag e msgid "Click to toggle between remaining time and total time" msgstr "Klikit evit kemmañ etre an amzer a chom hag an amzer total" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1166,19 +1221,19 @@ msgstr "Serriñ" msgid "Close playlist" msgstr "Serriñ ar roll seniñ" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Serriñ an hewelaat" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Serrin ar prenestr-mañ a paouezo ar pellgargadenn" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Ma serrit ar prenestr-mañ e vo paouezet gant an enklask golo albom." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klub" @@ -1186,73 +1241,78 @@ msgstr "Klub" msgid "Colors" msgstr "Livioù" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Listenn dispartiet gant ur virgulenn eus klas:live, live etre 0 ha 3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Evezhiadenn" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Leuniañ ar c'hlavioù ent emgefreek" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Leuniañ ar c'hlavioù ent emgefreek..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Aozer" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Kefluniañ %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Kefluniañ Grooveshark" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Kefluniañ Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "KefluniañMagnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Kefluniañ ar Berradennoù" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Kefluniañ Spotify" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Kefluniañ Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Kefluniañ an enklsak hollek..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Kefluniañ ar sonaoueg..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Kefluniañ ar podkastoù" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Kefluniañ..." @@ -1260,11 +1320,11 @@ msgstr "Kefluniañ..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Kennaskañ Wii Remote en ur implij an oberenn gweredekaat/diweredekaat" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "An drobarzhell a zo o kennaskañ" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "O kennaskañ da Spotify" @@ -1274,12 +1334,16 @@ msgid "" "http://localhost:4040/" msgstr "Kennask nac'het gant ar servijer, gwiriekait URL ar servijer. Da skouer : http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Ar c'hennask a lak re a amzer, gwiriekait URL ar servijer. Da skouer : http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Letrin" @@ -1295,17 +1359,21 @@ msgstr "Treuzkemm an holl sonerezh" msgid "Convert any music that the device can't play" msgstr "Treuzkemm ar sonerezh ne c'hell ket an drobarzhell lenn" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiañ d'ar golver" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopiañ war an drobarzhell" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Eilañ er sonaoueg..." @@ -1313,156 +1381,152 @@ msgstr "Eilañ er sonaoueg..." msgid "Copyright" msgstr "Gwirioù arzour" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Dibosupl kennaskañ ouzh Subsonic, gwiriekait URL ar sevijer. Da skouer : http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Dibosubl eo krouiñ an elfenn GStreamer \"%1\" - gwiriekait ez eo staliet an enlugadelloù GStreamer diavaez" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Dibosupl eo kavout ur multiplekser evit %1, gwiriekait ez eo staliet an enlugelladoù a-zere evit GStreamer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Dibosupl eo kavout un enkoder evit %1, gwiriekait ez eo staliet ar enlugelladoù mat evit GStreamer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Dibosupl kargañ ar skingomz last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Dibosubl eo digeriñ ar restr ec'hankañ %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Merour ar godeligoù" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Golo diwar ur skeudenn enframmet" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Golo karget ent emgefreek adalek %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Golo diweredekaet gant an dorn" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Golo nann diuzet" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Golo diuzet adalek %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Goloioù adalek %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Krouiñ ur roll seniñ Grooveshak nevez" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Lakaat un treveuz pa vez kemmet ar roud ent emgefreek" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Lakaat un treveuz pa vez kemmet ar roudoù gant an dorn" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1470,7 +1534,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personalaat" @@ -1482,54 +1546,50 @@ msgstr "Skeudenn personelaet :" msgid "Custom message settings" msgstr "Kemennadenn gwellvezioù personelaet" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Skingomz personelaet" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personelaat..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Hent DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dañs" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Goubrenet eo ar stlennvon. Lennit https://code.google.com/p/clementine-player/wiki/DatabaseCorruption evit kaout titouroù a-benn adkavout ho stlennvon." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Deizad krouadur" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Deizad kemmadur" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Deizioù" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Dre &ziouer" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Digreskiñ an ampled eus 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Digreskiñ an ampled eus dre gant." -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Digreskiñ an ampled" @@ -1537,6 +1597,11 @@ msgstr "Digreskiñ an ampled" msgid "Default background image" msgstr "Skeudenn drekleur dre ziouer" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Dre ziouer" @@ -1545,30 +1610,30 @@ msgstr "Dre ziouer" msgid "Delay between visualizations" msgstr "Amzer etre ar heweladurioù" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Diverkañ" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Diverkañ ur roll seniñ Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Diverkañ ar roadennoù pellgarget" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Diverkañ restroù" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Diverkañ eus an drobarzhell" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Diverkañ eus ar bladenn" @@ -1576,31 +1641,31 @@ msgstr "Diverkañ eus ar bladenn" msgid "Delete played episodes" msgstr "Diverkañ ar pennadoù lennet" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Diverkañ ar ragarventennoù" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Diverkañ ar roll seniñ speredek" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Diverkañ ar restroù orin" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "O tiverkañ restroù" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Dilemel ar roudoù diuzet diwar al listenn c'hortoz" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Dilemel ar roud-mañ diwar al listenn c'hortoz" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Pal" @@ -1609,7 +1674,7 @@ msgstr "Pal" msgid "Details..." msgstr "Munudoù..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Trobarzhell" @@ -1621,15 +1686,15 @@ msgstr "Perzhioù an drobarzhell" msgid "Device name" msgstr "Anv an drobarzhell" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Oerzhioù an drobarzhell..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Trobarzhelloù" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1666,12 +1731,17 @@ msgstr "Diweredekaat ar padelezh" msgid "Disable moodbar generation" msgstr "Diweredekaat ar varenn-imor" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Diwederakaet" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Pladenn" @@ -1681,15 +1751,15 @@ msgid "Discontinuous transmission" msgstr "Treuzkas digendalc'hus" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Dibarzhioù ar skrammañ" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Diskouez ar roll war ar skramm" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Ober un adc'hwilervadur eus ar sonaoueg a-bezh" @@ -1701,27 +1771,27 @@ msgstr "Chom hep treuzkemm ar sonerezh" msgid "Do not overwrite" msgstr "Chom hep skrivañ war-c'horre" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Chom hep adlenn" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Chom hep diskouez el lodenn \"arzourien liesseurt\"" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Chom hep meskañ" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Chom hep paouez!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Reiñ arc'hant" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Daouglikañ evit digeriñ" @@ -1729,12 +1799,13 @@ msgstr "Daouglikañ evit digeriñ" msgid "Double clicking a song will..." msgstr "Daouglikañ war un ton..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Pellgargañ %n pennad" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Teuliad pellgargañ" @@ -1750,7 +1821,7 @@ msgstr "Kevreañ d'ar pellgargadenn" msgid "Download new episodes automatically" msgstr "Pellgargañ pennadoù nevez ent emgefreek" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Pellgargadur e steuad" @@ -1758,15 +1829,15 @@ msgstr "Pellgargadur e steuad" msgid "Download the Android app" msgstr "Pellgargan ar poellad Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Pellgargañ an albom" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Pellgargañ an albom..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Pellgargañ ar pennad-mañ" @@ -1774,7 +1845,7 @@ msgstr "Pellgargañ ar pennad-mañ" msgid "Download..." msgstr "Pellgargañ" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "O pellgargañ (%1%)..." @@ -1783,23 +1854,23 @@ msgstr "O pellgargañ (%1%)..." msgid "Downloading Icecast directory" msgstr "O pellgargañ katalog Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "O pellgargañ katalog Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "O pellgargañ katalog Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "O pellgargañ enlugellad Spotify..." -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "O pellgargañ metadaveennoù" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Lakait da riklan avit adlakaat" @@ -1819,20 +1890,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Ar stumm dinamikel a zo aktivet" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Meskaj dargouezhek dialuskel" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Kemmañ ar roll seniñ speredek..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Cheñch ar c'hlav..." @@ -1844,16 +1915,16 @@ msgstr "Cheñch ar c'hlavioù" msgid "Edit track information" msgstr "Cheñch deskrivadur ar roud" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Cheñch deskrivadur ar roud..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Cheñch deskrivadur ar roudoù..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Embann..." @@ -1861,6 +1932,10 @@ msgstr "Embann..." msgid "Enable Wii Remote support" msgstr "Aktivañ Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Aktivañ ar c'hevataler" @@ -1875,7 +1950,7 @@ msgid "" "displayed in this order." msgstr "Gweredekaat ar mammennoù dindan evit lakaat anezho e disoc'h an enklask. An disoc'h a vo diskouezet en urzh-mañ." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "(Di)gweredekaat scrobbling Last.fm" @@ -1903,15 +1978,10 @@ msgstr "Lakait un URL evit pellgargañ ur golo adalek internet" msgid "Enter a filename for exported covers (no extension):" msgstr "Lakait anv ur restr evit ar goloioù ezporzhiet (askouezhadenn ebet) :" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Lakait un anv evit ar roll seniñ" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Lakait anv un arzour pe n'eus forzh peseurt klav evit selaou ouzh skingomz Last.fm" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1925,7 +1995,7 @@ msgstr "Lakait gerioù enklask dindan evit kavout podkastoù war an iTunes Store msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Lakait gerioù enklask dindan evit kavout podkastoù war gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Lakait amañ gerioù ho enklask" @@ -1934,11 +2004,11 @@ msgstr "Lakait amañ gerioù ho enklask" msgid "Enter the URL of an internet radio stream:" msgstr "Lakait chomlec'h red ur skingomz internet" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Skrivit anv an teuliad" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Lakait an IP-mañ er poellad evit kennaskañ da Clementine" @@ -1946,21 +2016,22 @@ msgstr "Lakait an IP-mañ er poellad evit kennaskañ da Clementine" msgid "Entire collection" msgstr "Dastumadeg hollek" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Kevataler" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Kenkoulz a --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Kenkoulz a --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Fazi" @@ -1968,38 +2039,38 @@ msgstr "Fazi" msgid "Error connecting MTP device" msgstr "Ur gudenn a zo zo savet e-kerzh ar c'hennask gant an drobarzhell MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Ur gudenn a zo savet e-kerzh kopiadur an tonioù" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Ur gudenn a zo savet e-kerzh dilamidigezh an tonioù" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Ur gudenn a zo savet o pellgargañ enlugellad Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Ur gudenn a zo savet e-pad kargadur %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Kudenn o kargañ roll seniñ di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Ur gudenn a zo savet e-pad treterezh %1 : %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Kudenn e-pad kargadenn ar CD audio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Bet lennet dija" @@ -2031,7 +2102,7 @@ msgstr "Bep 6 eurvezh" msgid "Every hour" msgstr "Bep eurvezh" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "War-bouezh etre ar roudoù eus ar memes albom pe eus ar memes follenn CUE" @@ -2043,7 +2114,7 @@ msgstr "Goloioù a zo aze" msgid "Expand" msgstr "Brasaat" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Ne vo ket mat ken d'an %1" @@ -2064,36 +2135,36 @@ msgstr "Ezporzhiañ ar goloioù pellgarget" msgid "Export embedded covers" msgstr "Ezporzhiañ ar goloioù enlakaet" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Ezporzhiadur echuet" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Ezporzhiet %1 golo war %2 (%3 tremenet)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2103,42 +2174,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Izelaat ar son tamm-ha-tamm evit an ehan / Uhelat evit adkregiñ" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Echuiñ gant un treveuz pa vez paouezet ur roud" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Arveuz" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Padelezh an arveuz" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "C'hwited eo bet adtapadenn an teuliad" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "C'hwitet eo bet gant tapadenn ar podkastoù" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "C'hwitet e bet gant kargadenn ar podkastoù" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "C'hwitet eo bet o lenn al lanv RSS" @@ -2147,11 +2218,11 @@ msgstr "C'hwitet eo bet o lenn al lanv RSS" msgid "Fast" msgstr "Trumm" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Ma re garetañ" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Roudoù karetañ" @@ -2167,11 +2238,11 @@ msgstr "Kerc'hat ent emgefreek" msgid "Fetch completed" msgstr "Pellgargadur echu" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "O tapout sonaoueg Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Ur gudenn a zo savet e-pad pellgargadur ar golo" @@ -2179,7 +2250,7 @@ msgstr "Ur gudenn a zo savet e-pad pellgargadur ar golo" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Askouzehadenn ar restr" @@ -2187,19 +2258,23 @@ msgstr "Askouzehadenn ar restr" msgid "File formats" msgstr "Mentrezhoù restroù" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Anv ar restr" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Anv ar restr (hep an hent)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Ment ar restr" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2209,7 +2284,7 @@ msgstr "Stumm ar restr" msgid "Filename" msgstr "Anv ar restr" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Restroù" @@ -2217,15 +2292,19 @@ msgstr "Restroù" msgid "Files to transcode" msgstr "Restroù da treuzkemmañ" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Kavout an tonioù e-barzh ho sonaoueg a glot gant an dezverkoù bet meneget ganeoc'h." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "O genel ar roud audio" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Echuiñ" @@ -2233,7 +2312,7 @@ msgstr "Echuiñ" msgid "First level" msgstr "Live kentañ" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2249,12 +2328,12 @@ msgstr "Dre abegoù lañvaz ez eo meret Spotify gant un enlugellad distag." msgid "Force mono encoding" msgstr "Forsiñ an enkodiñ mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Disonjal an drobarzhell" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2269,7 +2348,7 @@ msgstr "Disoñjal un drobarzhell a denn anezhi eus al listenn-mañ ha rediet e v #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2297,31 +2376,23 @@ msgstr "Skeudennoù dre eilenn" msgid "Frames per buffer" msgstr "Skeudennoù dre buffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Mignoned" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Skornet" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Fumm Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Lusker son GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Hollek" @@ -2329,30 +2400,30 @@ msgstr "Hollek" msgid "General settings" msgstr "Kefluniadur hollek" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Doare" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Kaout un URL evit rannañ ar roll seniñ Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Kaout un URL evit rannañ an ton Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "O taspugnat tonioù brudet Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "O taspugn ar c'hanolioù" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "O tegemer al lanvioù" @@ -2364,11 +2435,11 @@ msgstr "Reiñ un anv:" msgid "Go" msgstr "Go" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Mont d'ar roll seniñ o tont" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Mont d'ar roll seniñ a-raok" @@ -2376,7 +2447,7 @@ msgstr "Mont d'ar roll seniñ a-raok" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2386,7 +2457,7 @@ msgstr "Kavet %1 golo diwar %2 (%3 c'hwitet)" msgid "Grey out non existent songs in my playlists" msgstr "Grisaat an tonioù n'int ket mui em roll seniñ" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2394,15 +2465,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Kudenn kennaskañ gant Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL ar roll seniñ Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Skingomz Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL ar ganaouenn Grooveshark" @@ -2410,44 +2481,44 @@ msgstr "URL ar ganaouenn Grooveshark" msgid "Group Library by..." msgstr "Strollañ al sonaoueg dre..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Strollad dre" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Strollañ dre Albom" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Strollañ dre Arzour" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Strollañ dre Arzour/Albom" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Strollañ dre Arzour/Bloaz - Albom" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Strollañ dre Zoare/Albom" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Strollañ dre Zoare/Arzour/Albom" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Strolladenn" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "Ar pajenn HTML a oa hep lanv RSS ebet." -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Kod Statud HTTP 3xx resevet hep URL, gwiriekait kefluniadur ar servijer." @@ -2456,7 +2527,7 @@ msgstr "Kod Statud HTTP 3xx resevet hep URL, gwiriekait kefluniadur ar servijer. msgid "HTTP proxy" msgstr "Proksi HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Laouen" @@ -2472,25 +2543,25 @@ msgstr "Tu zo gwelout an titouroù war an dafar nemet ma 'z eo kennasket an drob msgid "High" msgstr "Uhel" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Uhel (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Uhel (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "N'eo ket bet kavet an herberc'hier, gwiriekait URL ar servijer. Da skouer : http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Eurioù" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2502,15 +2573,15 @@ msgstr "N'am eus kont Magnatune ebet" msgid "Icon" msgstr "Arlun" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Arlunioù en uhelañ" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Anaoudadur an ton" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2520,24 +2591,24 @@ msgstr "Ma gendalc'hit, an drobarzhell a vo gorek hag an tonioù kopiet a c'hell msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Ma anavezit URL ur podkast, lakait anezhañ dindan ha pouezit war Go." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ober hep ma vefe \"The\" e anvioù an arzourien" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Skeudennoù (*.png, *.jpg, *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Skeudennoù (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "A-benn %1 deizh" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "A-benn %1 sizhun" @@ -2548,7 +2619,7 @@ msgid "" "time a song finishes." msgstr "E stumm dinamek, roudoù nevez a vo choazet hag ouzhpennet e fin al roll seniñ bep taol ma vo echu gant un ton." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Boest degemer" @@ -2560,36 +2631,36 @@ msgstr "Diskouez an albom er gemenadenn" msgid "Include all songs" msgstr "Ouzhpennañ an holl tonioù" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Handelv protokol REST Subsonic digenglotus. Hizivait an arval." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Handelv protokol REST Subsonic digenglotus. Ret eo d'ar servijer hizivaat." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Kefluniadur diglok, bezit sur eo leuniet an holl maeziennoù." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Kreskiñ an ampled eus 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Kreskiñ an ampled eus dre gant" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Kreskiñ an ampled" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Menegeradur %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Titouroù" @@ -2597,55 +2668,55 @@ msgstr "Titouroù" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Enlakaat..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Staliaet" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "O gwiriañ an anterinder" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Pourchaserien internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Alc'hwez API didalvoudek" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Mentrezh didalvoudek" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Hentenn didalvoudek" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Arventennoù didalvoudek" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Loazioù erspizet didalvoudek" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Servij didalvoudek" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Kudenn gant alc'hwez an dalc'h" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Kudenn gant an anv implijer pe ar ger-tremen" @@ -2653,42 +2724,42 @@ msgstr "Kudenn gant an anv implijer pe ar ger-tremen" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Roudoù Jamendo Selaouet an aliesañ" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Top roudoù Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Top ar miz roudoù Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Top ar sizhun roudoù Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Stlennvon Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Mont d'ar roud lennet bremañ" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Pouezhit war ar bouton e-pad %1 eilenn..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Pouezhit war ar boutoñn e-pad %1 eilenn..." @@ -2697,23 +2768,24 @@ msgstr "Pouezhit war ar boutoñn e-pad %1 eilenn..." msgid "Keep running in the background when the window is closed" msgstr "Leuskel da dreiñ pa 'z eo serret ar prenstr" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Dec'hel ar restroù orin" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Bisig" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Yezh" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Hezoug/Selaouegoù" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Sal bras" @@ -2721,58 +2793,24 @@ msgstr "Sal bras" msgid "Large album cover" msgstr "Golo albom tev" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Barenn gostez ledan" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Selaouet e ziwezhañ" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Skingomz last.fm personelaet :%1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Sonaoueg Last.fm- %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Skingomz Last.fm- %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Skingomz amezeg Last.fm- %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Savlec'h skingomz Last.fm- %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Arzourien Last.fm dammheñvel da %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Klav evit ar skingomz Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm a zo ac'hubet, klaskit en-dro en un nebeut munutennoù" @@ -2780,11 +2818,11 @@ msgstr "Last.fm a zo ac'hubet, klaskit en-dro en un nebeut munutennoù" msgid "Last.fm password" msgstr "Ger-tremen Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Niver a selaouadennoù Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Klavioù Last.fm" @@ -2792,28 +2830,24 @@ msgstr "Klavioù Last.fm" msgid "Last.fm username" msgstr "Anv implijer Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Roudoù an nebeutañ plijet" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Laoskit goullo evit an arventennoù dre ziouer" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Kleiz" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Padelezh" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Sonaoueg" @@ -2821,24 +2855,24 @@ msgstr "Sonaoueg" msgid "Library advanced grouping" msgstr "Strolladur ar sonaoueg kemplesoc'h" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Kemenn hizivadur ar sonaoueg" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Enklask ar sonaoueg" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Bevennoù" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Selaou ouzh tonioù Grooveshark diazezet war ar pezh ho peus selaouet a-raok." -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "End-eeun" @@ -2850,15 +2884,15 @@ msgstr "Kargañ" msgid "Load cover from URL" msgstr "Kargañ ar golo adalek un url" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Kargañ ar golo adalek un url..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Kargañ ur golo adalek ar bladenn" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Kargañ ar golo adalek ur bladenn..." @@ -2866,84 +2900,89 @@ msgstr "Kargañ ar golo adalek ur bladenn..." msgid "Load playlist" msgstr "Kargañ ar roll seniñ" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Kargañ ar roll seniñ..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "O kargañ skingomz Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "O kargañ an drobarzhell MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "O kargañ stlennvon iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Kargañ ar roll seniñ speredek" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "O kargañ tonioù" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "O kargañ al lanv" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "O kargan roudoù" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "O kargañ titouroù ar roud" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "O kargañ..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Kargañ restroù pe liammoù internet, hag eilec'hiañ ar roll seniñ" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Kennaskañ" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "C'hwitet eo bet ar c'hennaskañ" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Aelad Diougan Padus (ADP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Karout" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Izel (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Izel (256x256)" @@ -2955,12 +2994,17 @@ msgstr "Aelad e Luzierezh Gwan (ALG)" msgid "Lyrics" msgstr "Komzoù" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Komzoù eus %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2972,15 +3016,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2988,7 +3032,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Pellgargañ Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Pellgargadenn Magnatune echuet" @@ -2996,15 +3040,20 @@ msgstr "Pellgargadenn Magnatune echuet" msgid "Main profile (MAIN)" msgstr "Aelad pennañ (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Ober evel-se !" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Lakaat ar roll seniñ da vezañ lennus ezlinenn" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Respont furmed fall" @@ -3017,15 +3066,15 @@ msgstr "Kefluniadur dornel ar proksi" msgid "Manually" msgstr "Gant an dorn" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Aozer" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Merkañ evel selaouet" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Merkañ evel nevez" @@ -3037,17 +3086,21 @@ msgstr "Implij an holl gerioù enklsask (HA)" msgid "Match one or more search terms (OR)" msgstr "Implij unan pe meur a gerioù enklask (PE)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Fonnder uhelañ" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Etre (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Etre (512x512)" @@ -3059,11 +3112,15 @@ msgstr "Doare emezeladur" msgid "Minimum bitrate" msgstr "Fonnder izelañ" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Ragarventennoù projectM a vank" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Patrom" @@ -3071,20 +3128,20 @@ msgstr "Patrom" msgid "Monitor the library for changes" msgstr "Evezhiañ cheñchamantoù ar sonaoueg" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Lenn e mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Mizioù" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Imor" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Doare ar varenn imor" @@ -3092,15 +3149,19 @@ msgstr "Doare ar varenn imor" msgid "Moodbars" msgstr "Barenn imor" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Lennet an aliesañ" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Poent staliañ" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Poentoù staliañ" @@ -3109,7 +3170,7 @@ msgstr "Poentoù staliañ" msgid "Move down" msgstr "Dindan" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Dilec'hiañ davit ar sonaoueg..." @@ -3118,7 +3179,7 @@ msgstr "Dilec'hiañ davit ar sonaoueg..." msgid "Move up" msgstr "A-us" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Sonerezh" @@ -3126,56 +3187,32 @@ msgstr "Sonerezh" msgid "Music Library" msgstr "Sonaoueg" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Mut" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Ma sonaoueg Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Ma skingomz miks Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Ma amezeien Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Ma skingomz erbedadennoù Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Ma skingomz miks" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Ma Sonerezh" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Ma amezeien" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Ma savlec'h skingomz" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Ma erbedadennoù" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Anv" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Dibarzhioù anv" @@ -3183,23 +3220,19 @@ msgstr "Dibarzhioù anv" msgid "Narrow band (NB)" msgstr "Bandenn strizh (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Amezeien" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proksi rouedad" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Rouedad pell" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Morse" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Morse sonet" @@ -3208,21 +3241,21 @@ msgstr "Morse sonet" msgid "Never start playing" msgstr "Morse kregiñ da lenn" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Teuliad nevez" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Roll seniñ nevez" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Roll seniñ speredek nevez..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Tonioù nevez" @@ -3230,24 +3263,24 @@ msgstr "Tonioù nevez" msgid "New tracks will be added automatically." msgstr "Ar roudoù nevez a vo ouzhpennet ent emgefreek." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Roudoù nevesañ" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Da-heul" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Roud o tont" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Ar sizhun a-zeu" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Dezrannerez ebet" @@ -3255,7 +3288,7 @@ msgstr "Dezrannerez ebet" msgid "No background image" msgstr "Skeudenn drekleur ebet" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Golo ebet da ezporzhiañ" @@ -3263,7 +3296,7 @@ msgstr "Golo ebet da ezporzhiañ" msgid "No long blocks" msgstr "Bloc'h hir ebet" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "N'eo bet kavet netra. Diverkañ ar boest enklask evit diskouez ar roll seniñ en e-bezh." @@ -3277,11 +3310,11 @@ msgstr "Bloc'h berr ebet" msgid "None" msgstr "Hini ebet" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ton ebet eus ar reoù diuzet a oa mat evit bezañ kopiet war an drobarzhell" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Reizh" @@ -3289,43 +3322,47 @@ msgstr "Reizh" msgid "Normal block type" msgstr "Rizh bloc'h skoueriek" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "N'eus ket tu implij pa vez implijet ur roll seniñ dinamek" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Digennasket" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "N'eus ket trawalc'h a endalc'h" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "N'eus ket trawalc'h a fans" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "N'eus ket izili a-walc'h" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "N'eus ket trawalc'h a amezeizen" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "N'eo ket staliet" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "N'eo ket kennasket" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "N'est ket savet - daouglikañ evit sevel" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Doare kemenn" @@ -3338,36 +3375,41 @@ msgstr "Kemenadennoù" msgid "Now Playing" msgstr "O seniñ" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Rakwel an OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3375,11 +3417,11 @@ msgid "" "192.168.x.x" msgstr "Asantiñ kennaskadennoù o tont eus an arvalien er rummadoù IP-se hepken :⏎ 10.x.x.x⏎ 172.16.0.0 - 172.31.255.255⏎ 192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Aotren ar c'hennaskoù eus ar rouedad lec'hel nemetken" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Diskouez an hini kentañ nemetken" @@ -3387,23 +3429,23 @@ msgstr "Diskouez an hini kentañ nemetken" msgid "Opacity" msgstr "Demerez" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Digeriñ %1 er merdeer" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Lenn ur CD &audio" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Digeriñ ur restr OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Digeriñ ur restr OPML..." @@ -3411,30 +3453,35 @@ msgstr "Digeriñ ur restr OPML..." msgid "Open device" msgstr "Digeriñ an drobarzhell" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Digeriñ ur restr..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Digeriñ e-barzh Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Digerin en ur roll seniñ nevez" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Digeriñ..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Oberiadenn c'hwitet" @@ -3454,23 +3501,23 @@ msgstr "Dibarzhioù..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Aozañ ar restroù" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Aozañ ar restroù..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Oc'h aozañ ar restroù" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Klavioù orin" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Dibarzhioù all" @@ -3478,7 +3525,7 @@ msgstr "Dibarzhioù all" msgid "Output" msgstr "Ezkas" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Trobarzhell ezkas" @@ -3486,15 +3533,11 @@ msgstr "Trobarzhell ezkas" msgid "Output options" msgstr "Dibarzhioù ezkas" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Enlugellad ezkas" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Skrivañ war pep tra" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Flastrañ ar restroù a vez diouto dija" @@ -3506,15 +3549,15 @@ msgstr "Skrivañ war ar re bihanoc'h nemetken" msgid "Owner" msgstr "Perc'henn" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "O tielfennañ katalog Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Fest" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3523,20 +3566,20 @@ msgstr "Fest" msgid "Password" msgstr "Ger-tremen" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Ehan" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Ehan al lenn" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Ehanet" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Soner" @@ -3545,34 +3588,22 @@ msgstr "Soner" msgid "Pixel" msgstr "Piksel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Bareen gostez simpl" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Lenn" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Seniñ an Arzour pe ar c'hlav" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Seniñ skingomz an arzour..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Konter selaouadennoù" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Lenn ur skingomz personelaet" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Lenn pe ehan, hervez ar stad" @@ -3581,45 +3612,42 @@ msgstr "Lenn pe ehan, hervez ar stad" msgid "Play if there is nothing already playing" msgstr "Lenn ma vez netra all o vezañ lennet" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Lenn ar skingomz gant ar c'hlav" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Seniñ an vet roud eus ar roll seniñ" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Lenn/Ehan" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Lenn sonerezh" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Dibarzhioù al lenner" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Roll seniñ" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Roll seniñ echuet" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Dibarzhioù ar roll seniñ" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Doare ar roll seniñ" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Rolloù seniñ" @@ -3631,23 +3659,23 @@ msgstr "Klozit ho merdeer ha deuit en-dro war Clementine mar plij." msgid "Plugin status:" msgstr "Stad an enlugellad" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podkastoù" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Tonioù brudet" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Tonioù brudet ar miz-mañ" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Tonioù brudet hiziv" @@ -3656,22 +3684,23 @@ msgid "Popup duration" msgstr "Padelezh ar popup" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Porzh" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Rak-ampled" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Gwellvezioù" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Gwellvezioù..." @@ -3707,7 +3736,7 @@ msgstr "Pouezhit war ur c'henaozadur touchennoù evit implij " msgid "Press a key" msgstr "Pouezit war un douchenn" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Pouezit war ur kombinadenn touchennoù evit implij %1" @@ -3718,20 +3747,20 @@ msgstr "Dibarzhioù an OSD brav" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Rakwel" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "A-raok" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Roud a-raok" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Diskouez titouroù an handelv" @@ -3739,21 +3768,25 @@ msgstr "Diskouez titouroù an handelv" msgid "Profile" msgstr "Aelad" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Enraog" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Pouezit war bouton ar Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Lakaat an tonioù en un urzh dre zegouezh" @@ -3761,85 +3794,95 @@ msgstr "Lakaat an tonioù en un urzh dre zegouezh" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Perzhded" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Goulennadeg trobarzhell" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Merour listenn c'hortoz" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Lakaat ar roudoù da heul" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Lakaat ar roud da heul" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Skingomz (Ampled kevatal evit an holl roudoù)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Skingomzoù" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Glav" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Heweladur dargouezhek" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Lakaat 0 steredenn evit an ton lennet" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Lakaat 1 steredenn evit an ton lennet" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Lakaat 2 steredenn evit an ton lennet" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Lakaat 3 steredenn evit an ton lennet" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Lakaat 4 steredenn evit an ton lennet" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Lakaat 5 steredenn evit an ton lennet" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Notenn" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Sur oc'h da gaout c'hoant da nullañ" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Aet e biou ar vevenn adkas, gwiriekait kefluniadur ar servijer." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Azbevaat" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Hizivaat ar c'hatalog" @@ -3847,19 +3890,15 @@ msgstr "Hizivaat ar c'hatalog" msgid "Refresh channels" msgstr "Hizivaat ar c'hanolioù" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Hizivat listenn ar mignoned" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Hizivat listenn ar savlec'hioù" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Hizivaat al lanvioù" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3871,8 +3910,8 @@ msgstr "Kaout soñj eus fiñv ar Wii remote" msgid "Remember from last time" msgstr "Kaout soñj eus ar wech diwezhañ" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Tennañ" @@ -3880,7 +3919,7 @@ msgstr "Tennañ" msgid "Remove action" msgstr "Tennañ an oberiadenn" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Tennañ an tonioù doubl eus ar roll seniñ" @@ -3888,73 +3927,77 @@ msgstr "Tennañ an tonioù doubl eus ar roll seniñ" msgid "Remove folder" msgstr "Tennañ an teuliad" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Tennañ eus va sonerezh" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Tennañ eus an tonioù karetañ" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Tennañ kuit eus ar roll seniñ" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Tennañ ar roll seniñ" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Tennañ ar rolloù seniñ" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Diverkañ tonioù eus va sonerezh" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Diverkañ tonioù eus va karetañ" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Cheñch anv \"%1\" ar roll seniñ." -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Cheñch anv roll seniñ Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Adenvel ar roll seniñ" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Adenvel ar roll seniñ..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Adniverenniñ ar roudoù en urzh-mañ..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Adlenn" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Adlenn an albom" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Adlenn ar roll seniñ" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Adlenn an ton" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Eillec'hiañ ar roll seniñ lennet" @@ -3963,15 +4006,15 @@ msgstr "Eillec'hiañ ar roll seniñ lennet" msgid "Replace the playlist" msgstr "Eillec'hiañ ar roll seniñ" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Eillec'hiañ esaoù gant is-linennoù" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Doare Replay Gain" @@ -3979,24 +4022,24 @@ msgstr "Doare Replay Gain" msgid "Repopulate" msgstr "Adpoblañ" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Ezhomm 'zo eus ur c'hod kennaskañ" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Adderaouiñ" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Adderaouiñ ar konter lennadennoù" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Adkregiñ ar roud, pe lenn ar roud a-raok m'eo kroget abaoe 8 eilenn pe nebeutoc'h." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Bevenniñ ouzh an arouezennoù ASCII" @@ -4004,15 +4047,15 @@ msgstr "Bevenniñ ouzh an arouezennoù ASCII" msgid "Resume playback on start" msgstr "Kenderc'hel da seniñ pa grog ar poellad" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Oc'h adkavout tonioù \"My Music\" Grooveshark." -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "O taspugnat ho tonioù Grooveshark karetañ" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "O taspugnat rolloù seniñ Grooveshark" @@ -4032,11 +4075,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4048,25 +4091,25 @@ msgstr "Seveniñ" msgid "SOCKS proxy" msgstr "SOCKS proksi" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Kudenn er c'hennask SSL, gwiriekait kefluniadur ar servijer. An arventenn SSLv3 en traoñ a c'hell reizhañ kudennoù 'zo." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Tennañ an drobarzhell diarvar" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Tennañ an drobarzhell diarvar goude an eilañ" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Standilhonañ" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Standilhonañ" @@ -4074,27 +4117,33 @@ msgstr "Standilhonañ" msgid "Save .mood files in your music library" msgstr "Enrollit ho restroù .mood en ho sonaoueg" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Enrollañ golo an albom" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Enrollan ar golo war ar bladenn..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Enrollañ ar skeudenn" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Enrollañ ar roll seniñ" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Enrollañ ar roll seniñ..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Enrollañ ar ragarventennoù" @@ -4110,11 +4159,11 @@ msgstr "Enrollañ ar stadegoù e klav ar restr pa 'z eo posupl" msgid "Save this stream in the Internet tab" msgstr "Enrollañ al lanv-mañ en ivinell internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "O enrollañ stadegoù an tonioù e restr an tonioù" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Enrolladur an tonioù" @@ -4126,7 +4175,7 @@ msgstr "Aelad ar feur standilhonañ (SSR)" msgid "Scale size" msgstr "Cheñch ar ment" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Poentoù" @@ -4134,34 +4183,38 @@ msgstr "Poentoù" msgid "Scrobble tracks that I listen to" msgstr "Scrobble ar roudoù selaouet ganin" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Klask" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Klask war savlec'hioù Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Klask Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Klask Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Klask Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Klask goloioù albom..." @@ -4181,21 +4234,21 @@ msgstr "Klask war iTunes" msgid "Search mode" msgstr "Doare klask" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Dibarzhioù klask" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Disoc'hoù an enklask" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Gerioù enklask" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "O klask war Grooveshark" @@ -4203,27 +4256,27 @@ msgstr "O klask war Grooveshark" msgid "Second level" msgstr "EIl live" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Mont war gil" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Mont war-raok" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Klask ar roud lennet gant ur sammad relativel" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Klask ar roud lennet gant ul lec'hiadur absolud" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Diuzañ an holl" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Diuzañ hini ebet" @@ -4231,7 +4284,7 @@ msgstr "Diuzañ hini ebet" msgid "Select background color:" msgstr "Diuzañ liv an drekleur" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Choaz ar skeudenn drekleur" @@ -4247,7 +4300,7 @@ msgstr "Diuzañ liv ar c'hentañ renk" msgid "Select visualizations" msgstr "Diuzañ heweladurioù" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Diuzañ heweladurioù..." @@ -4255,7 +4308,7 @@ msgstr "Diuzañ heweladurioù..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Niver heuliad" @@ -4267,51 +4320,51 @@ msgstr "URL ar servijer" msgid "Server details" msgstr "Munudoù ar servijer" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Servij ezlinenn" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Termeniñ %1 d'an talvoud %2..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Termeniñ an ampled da dre gant" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Lakaat un talvoud evit an holll roudoù diuzet" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Gwellvezioù" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Berradenn" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Berradenn evit %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Berradenn evit %1 a zo dija anezhañ" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Diskouez" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Diskouez OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Lugerniñ ar roud o vezañ lennet" @@ -4339,15 +4392,15 @@ msgstr "Diskouez ur popup e-kichen ar zonenn kemenadennoù" msgid "Show a pretty OSD" msgstr "Diskouez un OSD brav" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Diskouez a-us d'ar varenn stad" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Diskouez an holl tonioù" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Diskouez an holl tonioù" @@ -4359,32 +4412,36 @@ msgstr "Diskouez ar golo er sonaoueg" msgid "Show dividers" msgstr "Diskouez an dispartierien" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Diskouez er ment gwirion..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Diskouez er merdeer retroù" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Diskouez e \"Arzourien Liesseurt\"" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Diskouez ar varenn imor" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Diskouez an doublennoù nemetken" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Diskouez an tonioù hep klav nemetken" @@ -4393,8 +4450,8 @@ msgid "Show search suggestions" msgstr "Diskouez alioù enklask." #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Diskouez ar boutonoù \"karout\" ha \"skarzhañ\"" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4408,27 +4465,27 @@ msgstr "Diskouez an ikon er zonenn kemenadennoù" msgid "Show which sources are enabled and disabled" msgstr "Diskouez peseurt mamenn a zo gweredekaet ha pe re a zo diweredekaet." -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "DIskouez/Kuzhañ" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Meskañ" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Meskañ an albomoù" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Meskañ an holl" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Meskañ ar roll seniñ" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Meskañ an tonioù war an albom-mañ" @@ -4444,7 +4501,7 @@ msgstr "Digennaskañ" msgid "Signing in..." msgstr "O kennaskañ..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Arzourien dammheñvel" @@ -4456,43 +4513,51 @@ msgstr "Ment" msgid "Size:" msgstr "Ment:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Mont a-drek er roll seniñ" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Konter tonioù lammet" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Mont dirak er roll seniñ" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Golo album bihan" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Barenn gostez bihan" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Roll seniñ speredek" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Rolloù seniñ speredek" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4500,11 +4565,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Titouroù an ton" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Titouroù an ton" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4524,15 +4589,23 @@ msgstr "Urzhiañ dre doare (dre brud)" msgid "Sort by station name" msgstr "Urzhian dre anv savlec'h" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Urzhiañ an tonioù gant" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Urzhiañ" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Mammenn" @@ -4548,7 +4621,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Kudenn kennaskañ gant Spotify" @@ -4556,7 +4629,7 @@ msgstr "Kudenn kennaskañ gant Spotify" msgid "Spotify plugin" msgstr "Enlugellad Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Enlugellad Spotify n'eo ket staliet" @@ -4564,77 +4637,77 @@ msgstr "Enlugellad Spotify n'eo ket staliet" msgid "Standard" msgstr "Boaz" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Karetañ" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Kregiñ ar roll seniñ" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Kregin an transkodiñ" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Krogit da skrivañ un dra bennak er boest enklask a-us evit leuniañ listenn an disoc'hoù." -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "O kregiñ %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "O kregiñ..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Savlec'hioù" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Paouez" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Paouez goude" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Paouez goude ar roud-mañ" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Paouez goude vefe lennet an ton" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Paouez goude ar roud lennet" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Paouezet" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Lanv" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4644,7 +4717,7 @@ msgstr "Evit implij ar streaming adalek ur servijer Subsonic goude an 30 devezh msgid "Streaming membership" msgstr "Izili streaming" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Rollioù seniñ koumanantet" @@ -4652,7 +4725,7 @@ msgstr "Rollioù seniñ koumanantet" msgid "Subscribers" msgstr "Koumananterien" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4660,12 +4733,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Berzh !" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 skrivet" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Klavioù atizet" @@ -4674,13 +4747,13 @@ msgstr "Klavioù atizet" msgid "Summary" msgstr "Taolenn" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Uhel tre (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Bras-tre (2048x2048)" @@ -4692,43 +4765,35 @@ msgstr "Mentrezhoù restr kemeret e kont" msgid "Synchronize statistics to files now" msgstr "Gourbediñ bremañ ar stadegoù er restroù" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Sinkronizadur ar boest degemer Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Sinkronizadur ar roll seniñ Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Sinkronizadur tonioù gwellañ Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Livioù ar reizhad" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Ivinelloù a-us" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Klav" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Leunier klav" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Skingomz dre klav" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Fonnder tizhet" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tekno" @@ -4736,11 +4801,11 @@ msgstr "Tekno" msgid "Text options" msgstr "Dibarzhioù an testenn" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Trugarez da" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "An urzh \"%1\" ne c'hell ket bezañ kroget." @@ -4749,17 +4814,12 @@ msgstr "An urzh \"%1\" ne c'hell ket bezañ kroget." msgid "The album cover of the currently playing song" msgstr "Golo an albom o vezañ lennet" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "An teuliad %1 a zo direizh" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Ar roll seniñ '%1' a oa goulo pe n'eus ket bet tu he kargañ" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "An eil talvoud a rank bezañ uheloc'h eget an hini kentañ" @@ -4767,40 +4827,40 @@ msgstr "An eil talvoud a rank bezañ uheloc'h eget an hini kentañ" msgid "The site you requested does not exist!" msgstr "Ar lec'hienn goulennet n'eus ket dioutañ" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Al lec'hienn goulennet n'eo ket ur skeudenn" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Ar mare amprouiñ evit ar servijer Subsonic a zo echuet. Roit arc'hant evit kaout un alc'hwez lañvaz mar plij. KIt war subsonic.org evit ar munudoù." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Handelv nevez Clementine a c'houlenn ma vefe hizivaet ho sonaoueg evit kemer e kont an arc'hweladurioù a-zeu :" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Tonioù all a zo en album-mañ" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Ur gudenn a zo bet e-pad an eskemm gant gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Ur gudenn a zo savet evit kaout metaroadennoù adalek Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Ur gudenn a zo bet o lenn respont ar servij iTunes" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4812,13 +4872,13 @@ msgid "" "deleted:" msgstr "Ur gudenn a zo evit diverkan tonioù 'zo. Ar restroù-mañ n'int ket bet diverket :" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Ar restroù-mañ a vo diverket eus an drobarzhell, sur oc'h da gaout c'hoant kenderc'hel ?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4838,13 +4898,13 @@ msgstr "An arventennoù-se a zo implijet e \"Transkodañ ar sonerezh\", ha pa ve msgid "Third level" msgstr "Trede live" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Kement-se a krouo ur stlennvon 150Me tamm-pe-damm. Ha sur oc'h kenderc'hel ?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "N'ez eus ket eus an albom er mentrezh goulennet" @@ -4858,11 +4918,11 @@ msgstr "An drobarzhell-mañ a rank bezañ liammet ha digoret a-raok ma c'hallfe msgid "This device supports the following file formats:" msgstr "An drobarzhell a c'hell lenn ar mentrezhoù restroù mañ :" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "An drobarzhell ne ze ket en-dro evel ma zere" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Un drobarzhell MTP eo, met komplet eo bet Clementine hep al levraoueg libmtp." @@ -4871,7 +4931,7 @@ msgstr "Un drobarzhell MTP eo, met komplet eo bet Clementine hep al levraoueg li msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Un iPod eo, met komplet eo bet Clementine hep al levraoueg libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4881,33 +4941,33 @@ msgstr "Ar wech kentañ eo e liammit un drobarzhell-mañ. Clementine a skanno an msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Ar arventenn-mañ a c'hell bezañ kemmet e rann \"Emzalc'h\" ar gwellvezioù" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Al lanv-mañ a zo evit an izili o deus paet." -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "An doare trobarzhell-mañ n'eo ket meret :%1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titl" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Evit kregiñ ur skingomz Grooveshark, gwelloc'h vefe deoc'h selaou ouzh un nebeud tonioù Grooveshark all" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Hiziv" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Gweredekaat/Diweredekaat an OSD brav" @@ -4915,27 +4975,27 @@ msgstr "Gweredekaat/Diweredekaat an OSD brav" msgid "Toggle fullscreen" msgstr "Tremen e skramm leun" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Cheñch stad al listenn c'hortoz" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Cheñch ar scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Gweredekaat/Diweredekaat an OSD brav" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Warc'hoaz" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Bet adkaset re a wech " -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Top tonioù" @@ -4943,21 +5003,25 @@ msgstr "Top tonioù" msgid "Total albums:" msgstr "Hollad an albomoù:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Niver a eizhbit treuzkaset" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Niver a atersadennoù rouedad" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Roud" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Treuzkodañ Sonerezh" @@ -4969,7 +5033,7 @@ msgstr "Renabl an transkoder" msgid "Transcoding" msgstr "Transkodiñ" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "O transkodiñ %1 restr oc'h implij %2 threads" @@ -4978,11 +5042,11 @@ msgstr "O transkodiñ %1 restr oc'h implij %2 threads" msgid "Transcoding options" msgstr "Dibarzhioù transkodiñ" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbin" @@ -4990,72 +5054,72 @@ msgstr "Turbin" msgid "Turn off" msgstr "Lazhañ" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(où)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ger-tremen Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Anv implijer Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Bandenn ledan tre (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "N'eus ket tu pellgargañ %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Dianav" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Doare endalc'h dianavezet" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Kudenn dianav" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Ar golo n'eo ket bet lakaet" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Digoumanantiñ" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Sonadegoù o-tont" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "O hizivaat roll seniñ Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Hizivaat ar podkastoù" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Hizivaat teuliadoù kemmet ar sonaoueg" @@ -5063,7 +5127,7 @@ msgstr "Hizivaat teuliadoù kemmet ar sonaoueg" msgid "Update the library when Clementine starts" msgstr "Hizivaat ar sonaoueg pa grog Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Hizivaat ar podkast-mañ" @@ -5071,21 +5135,21 @@ msgstr "Hizivaat ar podkast-mañ" msgid "Updating" msgstr "Hizivadur" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Hizivadenn %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Hizivadenn %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "O hizivaat ar sonaoueg" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Implij" @@ -5093,11 +5157,11 @@ msgstr "Implij" msgid "Use Album Artist tag when available" msgstr "Implij klav arzour an albom pa vez tu" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Implij berradennoù Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Implij metaroadenn Replay Gain ma 'z eo posubl" @@ -5117,7 +5181,7 @@ msgstr "Implij ur roll livioù personelaet" msgid "Use a custom message for notifications" msgstr "Implij ur kemenadennoù personelaet" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Implijout ur pellurzhier rouedad" @@ -5157,20 +5221,20 @@ msgstr "Implij dibarzhioù dre ziouer ar proksi" msgid "Use volume normalisation" msgstr "Implij normalizadur an ampled" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Implijet" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "An implijer %1 n'en deus ket a kont Grooveshark Anywhere." -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Etrefas implijer" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5192,12 +5256,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Fonnder kemmus" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Arzourien Liesseurt" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Handelv %1" @@ -5210,7 +5274,7 @@ msgstr "Gwelout" msgid "Visualization mode" msgstr "Doare heweladur" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Heweladurioù" @@ -5218,11 +5282,15 @@ msgstr "Heweladurioù" msgid "Visualizations Settings" msgstr "Dibarzhioù heweladurioù" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Dinoer aktivelezh mouezh" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Ampled %1%" @@ -5240,11 +5308,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Gervel ac'hanon pa vez serret un ivinell roll seniñ" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5252,7 +5320,7 @@ msgstr "Wav" msgid "Website" msgstr "Lec'hienn web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Sizhunvezhioù" @@ -5278,32 +5346,32 @@ msgstr "Tu zo deoc'h klask..." msgid "Wide band (WB)" msgstr "Bandenn ledan (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wiimote %1: gweredekaet" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wiimote %1: Kennasket" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wiimote %1: energiezh kritikal (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wiimote %1: diweredekaet" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wiimote %1: Digennasket" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wiimote %1: energiezh izel (%2%)" @@ -5324,7 +5392,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "ausio Windows Media" @@ -5332,25 +5400,25 @@ msgstr "ausio Windows Media" msgid "Without cover:" msgstr "Hep golo:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Ha c'hoant ho peus lakaat tonioù all an albom-mañ e Arzourien Liesseurt ?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "C'hoant ho peus d'ober ur c'hwilervadenn eus al levraoueg bremañ ?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Skrivañ stadegoù an holl tonioù e restroù an tonioù" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Anv-implijer pe ger-tremen fall." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5362,11 +5430,11 @@ msgstr "Bloaz" msgid "Year - Album" msgstr "Bloaz - Albom" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Bloaz" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Dec'h" @@ -5374,13 +5442,13 @@ msgstr "Dec'h" msgid "You are about to download the following albums" msgstr "Emaoc'h o vont da pellgargañ an albomoù-mañ" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Ha sur oc'h kaout c'hoant diverkañ %1 roll seniñ eus ho reoù karetañ ?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5390,12 +5458,12 @@ msgstr "Emaoc'h o vont da dennañ ur roll seniñ a n'eo ket e-touez ar re merket msgid "You are not signed in." msgstr "N'oc'h ket kennasket." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Kennasket oc'h evel %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Kennasket oc'h." @@ -5403,13 +5471,13 @@ msgstr "Kennasket oc'h." msgid "You can change the way the songs in the library are organised." msgstr "Tu zo deoc'h kemman an doare ma vo renket an tonioù er sonaoueg." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Tu zo deoc'h selaou digoust hep kont, met an izili Premium a c'hell selaou gant ur berzhded uheloc'h hag hep bruderezh." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5419,13 +5487,6 @@ msgstr "Tu zo deoc'h selaou digoust tonioù Magnatune hep kaout ur gont. Gant ur msgid "You can listen to background streams at the same time as other music." msgstr "Tu zo deoc'h selaou al lanvioù drekleur d'ar memes koulz ha sonerezh all" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Tu zo deoc'h skroblañ tonioù digoust, met n'eus nemet an izili hag a bae a c'hell selaou d'ar skingomz Last.fm radio dre gClementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Tu zo deoc'h implijout ho Wii Remote evel ur pellurzhier evit Clementine, Sellit ar bajenn war wiki Clementine evit muioc'h a ditouroù.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "N'ho peus ket a kont Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "N'ho peus ket a kont Spotify Premium." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "N'ho peus ket a koumanant gweredekaet" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Digennasket oc'h bet diouzh Spotify, adskrivit ho ker-tremen e-barzh prenestr ar c'hefluniadoù." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Digennasket oc'h bet diouzh Spotify, adskrivit ho ker-tremen mar plij." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Karout a rit ar roud-mañ" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5470,17 +5545,11 @@ msgstr "Ret eo deoc'h lañsañ Gwellvezioù ar reizhiad ha gweredekaat an dibab msgid "You will need to restart Clementine if you change the language." msgstr "Ezhomm a vo adloc'hañ Clementine ma cheñchit ar yezh." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Ne vo ket tu deoc'h lenn savlec'hioù Last.fm ma n'oc'h ket koumanantet da Last.fm." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Ho chomlec'h IP a zo :" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Hoc'h aotreoù arveriad evit Last.fm a zo direizh." @@ -5488,42 +5557,43 @@ msgstr "Hoc'h aotreoù arveriad evit Last.fm a zo direizh." msgid "Your Magnatune credentials were incorrect" msgstr "Hoc'h aotreoù arveriad evit Magnatune a zo direizh." -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Ho sonaoueg a zo goullo !" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Ho lanvioù skingomz." -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Ho skroble : %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "N'emañ ket OpenGl war ho reizhad, n'eus ket tu deoc'h kaout an heweladurioù." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Hoc'h anv implijer pe ho ger-tremen a zo direizh." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "ouzhpennañ %n ton" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "goude" @@ -5543,19 +5613,19 @@ msgstr "ent emgefreek" msgid "before" msgstr "araok" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "etre" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "brasañ araok" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bdm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "en deus" @@ -5565,20 +5635,20 @@ msgstr "en deus" msgid "disabled" msgstr "diweredekaet" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "pladenn %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "n'en deus ket" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "a echu gant" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "zo kevatal da" @@ -5586,11 +5656,11 @@ msgstr "zo kevatal da" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "Teuliad gpodder.net" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "brasoc'h eget" @@ -5598,54 +5668,55 @@ msgstr "brasoc'h eget" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "etrezek ar re ziwezhañ" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbde" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "nebeutoc'h eget" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "hirañ araok" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "diblasañ %n ton" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "nevesañ araok" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "disheñvel diouzh" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "a-raok ar re ziwezhañ" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "ket war" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "koshoc'h da gentañ" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "war" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "dibarzhioù" @@ -5657,36 +5728,37 @@ msgstr "pe skannit ar c'hod QR !" msgid "press enter" msgstr "pouezit war Enankañ" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "Tennañ %n ton" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "berrañ araok" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "Meskañ an tonioù" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "bihanañ araok" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "Urzhiañ an tonioù" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "a grog gant" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "paouez" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "roud %1" diff --git a/src/translations/bs.po b/src/translations/bs.po index 59a202646..8e9d2f3ca 100644 --- a/src/translations/bs.po +++ b/src/translations/bs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Bosnian (http://www.transifex.com/projects/p/clementine/language/bs/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: bs\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -55,11 +55,16 @@ msgstr " pt" msgid " seconds" msgstr " sekundi" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " pjesama" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albuma" @@ -69,12 +74,12 @@ msgstr "%1 albuma" msgid "%1 days" msgstr "%1 dana" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "prije %1 dana" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 popisa pjesama (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 označeno od" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 pjesma" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 pjesama" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 pjesama pronađeno" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 pjesama pronađeno (prikazano %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 pjesama" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1 Wiimotedev modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -139,18 +144,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n neuspjelo" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n završeno" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n ostalo" @@ -162,24 +170,24 @@ msgstr "&Složij tekst" msgid "&Center" msgstr "&Sredina" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Vlastito" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Pomoć" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Sakrij %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Sakrij..." @@ -187,23 +195,23 @@ msgstr "&Sakrij..." msgid "&Left" msgstr "&Lijevo" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nijedan" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Izlaz" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,23 +219,23 @@ msgstr "" msgid "&Right" msgstr "&Desno" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Razvuci red da odgovara veličini prozora" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(različito među više pjesama)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...i svim Amarok pomagačima" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "1 dan" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 pjesma" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 nasumičnih pjesama" @@ -272,12 +276,6 @@ msgstr "50 nasumičnih pjesama" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Pametna lista pjesama, je dinamička lista pjesama koja je nastala iz vaše kolekcije. Postoje različiti tipovi pametnih listi koji omogućavaju različite našine odabiranja pjesama." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Pjesma će biti uključena u listu pjesama ako zadovoljava ove uslove." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "SVA SLAVA HIPNOŽABI" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "O Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "O Qt-u..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detalji o nalogu" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "Akcija" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Pokreni/zaustavi Wii-daljinski" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "Dodaj akciju" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Dodaj još jedan tok..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Dodaj fasciklu..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Dodaj datoteku..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Dodaj datoteke za pretvorbu" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Dodaj fasciklu" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Dodaj fasciklu..." @@ -452,11 +464,11 @@ msgstr "Dodaj novu fasciklu..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Unesi termin za pretraživanje" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Dodaj tok..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Dodaj drugoj listi pjesama" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Dodaj u listu pjesama" @@ -552,6 +580,10 @@ msgstr "Dodaj u listu pjesama" msgid "Add to the queue" msgstr "Dodaj na listu čekanja" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Dodaj wiimotedev akciju" @@ -581,15 +613,15 @@ msgstr "Dodano danas" msgid "Added within three months" msgstr "Dodano u zadnja tri mjeseca" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Napredno grupiranje" @@ -597,12 +629,12 @@ msgstr "Napredno grupiranje" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Poslije kopiranja..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "Poslije kopiranja..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealna jačina za sve pjesme)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "Izvođač albuma" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informacije o albumu na jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumi sa omotom" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumi bez omota" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Sve datoteke (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Sva slava Hipno-žabi!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Svi albumi." -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Svi izvođači" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Sve datoteke (*)" @@ -661,19 +694,19 @@ msgstr "Sve datoteke (*)" msgid "All playlists (%1)" msgstr "Sve liste pjesama (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Svi prevodioci" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Sve pjesme" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "Uvjek prikaži glavni prozor" msgid "Always start playing" msgstr "Uvjek počni sa slušanjem" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Desila se greška prilikom učitavanja iTunes baze podataka" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Desila se greška prilikom zapisivanja meta podataka na '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "I:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "Izgled" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Dodaj datoteke/URL.ove listi pjesama" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Dodaj trenutnoj listi pjesama" @@ -744,52 +777,47 @@ msgstr "Dodaj trenutnoj listi pjesama" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Primjeni kompresiju da bi sprječio smetnje" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Jeste li sigurni da želite obrisati \"%1\" podešavanje?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Jeste li sigurni da želite obrisati statistiku ove pjesme?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Izvođač" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Informacije o izvođaču" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Izvođačevi inicijali" @@ -797,9 +825,13 @@ msgstr "Izvođačevi inicijali" msgid "Audio format" msgstr "Audio format" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentifikacija nije prošla" @@ -807,7 +839,7 @@ msgstr "Autentifikacija nije prošla" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autori" @@ -823,7 +855,7 @@ msgstr "Automatsko osvježavanje" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Dostupno" @@ -831,15 +863,15 @@ msgstr "Dostupno" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +892,7 @@ msgstr "" msgid "Background opacity" msgstr "Providnost pozadine" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Zabrana" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +920,17 @@ msgstr "Ponašanje" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografija od %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Protok bitova" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "Protok bitova" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "Pretraži..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "Dugmad" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE lista podrška" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Promjeni omot" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Promjeni veličinu slova..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Promjeni način ponavljanja" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Promjeni kraticu..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Promjeni jezik" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Provjeri za nadogradnje..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Izaberite ime za svoju pametnu listu pjesama" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Izaberi automatski" @@ -1027,11 +1086,11 @@ msgstr "" msgid "Choose from the list" msgstr "Izaberi iz liste" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Izaberi kako će se lista pjesama sortirati, te koliko će pjesama da sadrži." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Izaberite web stranicu za koje želite da Clementine koristi prilikom pretrage za tekstom pjesme." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasična" @@ -1048,17 +1107,17 @@ msgstr "Klasična" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Čisto" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Isprazni listu pjesama" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1071,8 +1130,8 @@ msgstr "Clementine Greška" msgid "Clementine Orange" msgstr "Clementine narandžasta" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine vizualizacije" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementin nije mogao učitati projectM vizualizacije. Provjerite da li ste instalirali Clementine kako treba." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine preglednik slika" @@ -1134,11 +1186,11 @@ msgstr "Clementine nije mogao pronaci rezultate za ovu datoteku" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Kliknite ovjde da dodate neku muziku" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Kliknite da mjenjate između ukupnog i preostalog vremena" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Zatvorite vizualizacije" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Zatvarajući ovaj prozor, otkazat ćete preuzimanje." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Zatvarajući ovaj prozor, zaustavit ćete pretrzagu za omotima albuma." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klubski" @@ -1183,73 +1238,78 @@ msgstr "Klubski" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Automatski završi oznake" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Automatski završi oznake..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Kompozitor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Podesi Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Podesi Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Podesi prečice" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Podesi biblioteku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1317,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "Spoji Wii daljinski koristeći akciju aktivacija/de-aktivacija" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Spoji uređaj" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "Pretvori svu muziku" msgid "Convert any music that the device can't play" msgstr "Pretvori svu muziku koju ovaj uređaje ne podržava" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopiraj na uređaj..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopiraj u biblioteku..." @@ -1310,156 +1378,152 @@ msgstr "Kopiraj u biblioteku..." msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nije moguće napraviti GStreamer element \"%1\" - provjerite da li imate sve potrebne GStreamer dodatke instalirane." -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nemoguće pronaći muxer za %1, provjerite da li imate sve potrebne GStreamer dodatke instalirane." -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Nemoguće učitati last.fm radio stanicu" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Nemoguće otvoriti izlaznu datoteku %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Menadžer omota" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Omoti sa uključene slike" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Omot učitan automatski sa %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Omot ručno poništen" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Omot nije podešen" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Omot podešen sa %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Glatki prelaz sa pjesme na pjesmu, prilikom automatskog prelaženja." -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Prilagođeno" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Posebni radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Posebno..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus putanja" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dens" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum stvaranja" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum izmjenje" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Uo&bičajena" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Smanji glasnost" @@ -1534,6 +1594,11 @@ msgstr "Smanji glasnost" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Podrazumijevano" @@ -1542,30 +1607,30 @@ msgstr "Podrazumijevano" msgid "Delay between visualizations" msgstr "Razmak između vizualizacija" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Obriši datoteke" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Obriši sa uređaja" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Obriši sa diska..." @@ -1573,31 +1638,31 @@ msgstr "Obriši sa diska..." msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Obriši postavke" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Obriši pametnu listu" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Obriši orginalne datoteke" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Brišem datoteke" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Makni sa liste čekanja označene pjesme" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Makni sa liste čekanja označenu pjesmu" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Odredište" @@ -1606,7 +1671,7 @@ msgstr "Odredište" msgid "Details..." msgstr "Detalji..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Uređaj" @@ -1618,15 +1683,15 @@ msgstr "Osobine uređaja" msgid "Device name" msgstr "Ime uređaja" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Osobine uređaja..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Uređaji" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Onemogućeno" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opcije prikazivanje" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Prikaži prikaz na ekranu" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Uradi ponovni pregled biblioteke" @@ -1698,27 +1768,27 @@ msgstr "Ne pretvaraj nikakvu muziku" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ne ponavljaj" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Ne prikazuj u raznim izvođačima" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ne mješaj" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ne zaustavljaj!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dupli klik za otvaranje" @@ -1726,12 +1796,13 @@ msgstr "Dupli klik za otvaranje" msgid "Double clicking a song will..." msgstr "Dupli klik na pjesmu će..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Preuzmi fasciklu" @@ -1747,7 +1818,7 @@ msgstr "Prezmi članstvo" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Preuzmi ovaj album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Preuzmi ovaj album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,23 +1851,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "Preuzimam Icecast fasciklu" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Preuzimam Jamendo katalog" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Preuzimam Magnatune katalog" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1929,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2036,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2255,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2214,15 +2289,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,7 +2309,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2397,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2594,55 +2665,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2718,12 +2790,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2818,24 +2852,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2847,15 +2881,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3068,20 +3125,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,7 +3176,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3123,56 +3184,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3238,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3252,7 +3285,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3335,36 +3372,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3451,23 +3498,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3475,7 +3522,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3791,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,28 +3804,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3877,7 +3916,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,10 +4180,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4142,23 +4195,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4281,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4305,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4447,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,27 +4462,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4497,11 +4562,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4733,11 +4798,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5090,11 +5154,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5207,7 +5271,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,11 +5279,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5237,11 +5305,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5371,13 +5439,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5540,19 +5610,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,20 +5632,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/ca.po b/src/translations/ca.po index 30620d6c4..f42296a17 100644 --- a/src/translations/ca.po +++ b/src/translations/ca.po @@ -8,11 +8,11 @@ # Adolfo Jayme Barrientos , 2014 # FIRST AUTHOR , 2010 # davidsansome , 2013 -# Roger Pueyo Centelles , 2011-2013 +# Roger Pueyo Centelles , 2011-2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-02-01 18:44+0000\n" +"PO-Revision-Date: 2014-05-12 05:38+0000\n" "Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Catalan (http://www.transifex.com/projects/p/clementine/language/ca/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +20,7 @@ msgstr "" "Language: ca\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -45,9 +45,9 @@ msgstr " dies" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -60,11 +60,16 @@ msgstr " pt" msgid " seconds" msgstr " segons" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " cançons" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 cançons)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 àlbums" @@ -74,12 +79,12 @@ msgstr "%1 àlbums" msgid "%1 days" msgstr "%1 dies" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "fa %1 dies" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 a %2" @@ -89,48 +94,48 @@ msgstr "%1 a %2" msgid "%1 playlists (%2)" msgstr "%1 llistes de reproducció (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 seleccionades de" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 cançó" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 cançons" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 cançons trobades" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 cançons trobades (mostrant %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 temes" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 transferit" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1 mòdul Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 oients més" @@ -144,18 +149,21 @@ msgstr "%L1 reproduccions en total" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n han fallat" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n han acabat" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n restants" @@ -167,24 +175,24 @@ msgstr "&Alinea el text" msgid "&Center" msgstr "&Centre" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personalitzades" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" -msgstr "Extres" +msgstr "E&xtres" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" -msgstr "Aj&uda" +msgstr "&Ajuda" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Amaga «%1»" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Amaga…" @@ -192,23 +200,23 @@ msgstr "&Amaga…" msgid "&Left" msgstr "&Esquerra" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" -msgstr "Música" +msgstr "&Música" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Cap" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" -msgstr "Llista de reproducció" +msgstr "&Llista de reproducció" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Surt" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Mode de repetició" @@ -216,23 +224,23 @@ msgstr "Mode de repetició" msgid "&Right" msgstr "&Dreta" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Mode aleatori" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Encabeix les columnes a la finestra" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" -msgstr "E&ines" +msgstr "&Eines" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(diferents a les diverses cançons)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "… i tots aquells que han contribuït amb l’Amarok" @@ -252,14 +260,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dia" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 pista" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -269,20 +273,14 @@ msgstr "MP3 de 128k" msgid "40%" msgstr "40 %" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" -msgstr "50 pistes aleatòries" +msgstr "50 pistes a l’atzar" #: ../bin/src/ui_digitallyimportedsettingspage.h:165 msgid "Upgrade to Premium now" msgstr "Actualitzeu a Premium ara" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Creeu un compte nou o restabliu la vostra contrasenya" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -293,6 +291,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Si no s’activa, el Clementine intentarà desar les vostres valoracions i altres estadístiques en una base de dades separada, sense modificar els vostres fitxers.

Si s’activa, es desaran les estadístiques en la base de dades i directament en els fitxers, cada vegada que es modifiquen.

Tingueu en compte que això podria no funcionar amb tots els formats i, com no existeix un estàndard, altres reproductors de música podrien no ser capaces de llegir-los.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -301,38 +310,38 @@ msgid "" "activated.

" msgstr "

Això guardarà les valoracions i estadístiques en etiquetes que s’escriuran en els fitxers de la vostra col·lecció.

Això no és necessari si el paràmetre «Desa les valoracions i estadístiques en etiquetes de fitxer» sempre ha estat activat.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Les fitxes de reemplaçament comencen amb %, per exemple: %artist %album %title

\n\n

Si demarqueu entre claus una secció de text que contingui una fitxa de remplaçament, aquesta secció no es mostrarà si la fitxa de remplaçament es troba buida.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Us cal un compte Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Us cal un compte Premium del Spotify." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Només es pot connectar un client si s’introdueix el codi correcte." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Una llista de reproducció intel·ligent és una llista dinàmica de cançons que es troben a la vostra col·lecció. Existeixen diferents tipus de llistes de reproducció intel·ligent que ofereixen formes diferents de seleccionar cançons." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "S’inclourà una cançó a la llista de reproducció si coincideix amb aquestes condicions." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A–Z" @@ -352,36 +361,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "LLOEM L’HIPNOGRIPAU" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Interromp" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Quant al %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Quant al Clementine…" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Quant al Qt…" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detalls del compte" @@ -393,11 +401,15 @@ msgstr "Detalls del compte (Premium)" msgid "Action" msgstr "Acció" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Habilita/inhabilita el Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Llista d’activitats" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Afegeix un podcast" @@ -413,39 +425,39 @@ msgstr "Afegeix una línia nova si és compatible amb el tipus de notificació" msgid "Add action" msgstr "Afegeix una acció" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Afegeix un altre flux…" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Afegeix un directori…" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Afegeix un fitxer" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Afegeix un fitxer al convertidor" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Afegeix fitxer(s) al convertidor" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Afegeix un fitxer…" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Afegeix fitxers per convertir-los" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Afegeix una carpeta" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Afegeix una carpeta…" @@ -457,11 +469,11 @@ msgstr "Afegeix una carpeta nova…" msgid "Add podcast" msgstr "Afegeix un podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Afegeix un podcast…" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Afegeix un terme de cerca" @@ -525,6 +537,10 @@ msgstr "Afegeix comptador de passades de cançó" msgid "Add song title tag" msgstr "Afegeix l’etiqueta de títol a la cançó" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Afegeix la cançó a la memòria cau" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Afegeix l’etiqueta de número de pista a la cançó" @@ -533,22 +549,34 @@ msgstr "Afegeix l’etiqueta de número de pista a la cançó" msgid "Add song year tag" msgstr "Afegeix l’etiqueta d’any a la cançó" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Afegeix cançons a La meva música en fer clic a «M’encanta»" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Afegeix un flux…" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Afegeix als favorits del Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Afegeix a les llistes de reproducció de Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Afegeix a La meva música" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Afegeix a una altra llista de reproducció" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Afegeix als preferits" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Afegeix a la llista de reproducció" @@ -557,6 +585,10 @@ msgstr "Afegeix a la llista de reproducció" msgid "Add to the queue" msgstr "Afegeix a la cua" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Afegeix l’usuari/grup als preferits" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Afegeix una acció del Wiimotedev" @@ -586,15 +618,15 @@ msgstr "Afegides avui" msgid "Added within three months" msgstr "Afegides els últims tres mesos" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "S'està afegint la cançó a La meva música" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "S’està afegint la cançó a favorites" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Agrupament avançat…" @@ -602,12 +634,12 @@ msgstr "Agrupament avançat…" msgid "After " msgstr "Després de" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Després de copiar…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -615,11 +647,11 @@ msgstr "Després de copiar…" msgid "Album" msgstr "Àlbum" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Àlbum (volum ideal per a totes les pistes)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -629,35 +661,36 @@ msgstr "Artista de l’àlbum" msgid "Album cover" msgstr "Caràtula de l’àlbum" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informació de l’àlbum en jamendo.com…" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Àlbums amb caràtules" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Àlbums sense caràtules" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Tots els fitxers (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Lloem l’Hipnogripau!" +msgstr "Lloem l’hipnogripau!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Tots els àlbums" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Tots els artistes" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Tots els fitxers (*)" @@ -666,19 +699,19 @@ msgstr "Tots els fitxers (*)" msgid "All playlists (%1)" msgstr "Totes les llistes de reproducció (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Tots els traductors" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Totes les pistes" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Permetre que un client baixi música d’aquest equip." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Permet les baixades" @@ -703,30 +736,30 @@ msgstr "Mostra sempre la finestra principal" msgid "Always start playing" msgstr "Comença sempre la reproducció" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Necessitareu un connector addicional per usar Spotify en el Clementine. Voleu baixar-ho i instal·lar-ho ara?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "S’ha produït un error en carregar la base de dades de l’iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "S’ha produït un error en escriure les metadades a «%1»" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "S’ha produït un error no especificat." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "I:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Enfadat" @@ -735,13 +768,13 @@ msgstr "Enfadat" msgid "Appearance" msgstr "Aparença" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Afegeix fitxers/URL a la llista de reproducció" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Afegeix a la llista de reproducció actual" @@ -749,52 +782,47 @@ msgstr "Afegeix a la llista de reproducció actual" msgid "Append to the playlist" msgstr "Afegeix a la llista de reproducció" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Aplica compressió per evitar el «clipping»" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Esteu segur que voleu eliminar la predefinició «%1»?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Esteu segur que voleu eliminar aquesta llista de reproducció?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Esteu segur que voleu restablir les estadístiques d’aquesta cançó?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Esteu segur que voleu escriure les estadístiques de les cançons en tots els fitxers de la vostra col·lecció?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Inf.artista" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Ràdio de l’artista" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Etiquetes de l’artista" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Inicials de l’artista" @@ -802,9 +830,13 @@ msgstr "Inicials de l’artista" msgid "Audio format" msgstr "Format d’àudio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Sortida d'àudio" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Ha fallat l’autenticació" @@ -812,7 +844,7 @@ msgstr "Ha fallat l’autenticació" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autors" @@ -828,7 +860,7 @@ msgstr "Actualització automàtica" msgid "Automatically open single categories in the library tree" msgstr "Expandeix automàticament les categories úniques en l’arbre de la col·lecció" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Disponible" @@ -836,15 +868,15 @@ msgstr "Disponible" msgid "Average bitrate" msgstr "Velocitat de bits mitjà" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Mida d’imatge mitjà" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcasts de la BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "PPM" @@ -865,7 +897,7 @@ msgstr "Imatge de fons" msgid "Background opacity" msgstr "Opacitat del fons" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "S’està fent una còpia de seguretat de la base de dades" @@ -873,11 +905,7 @@ msgstr "S’està fent una còpia de seguretat de la base de dades" msgid "Balance" msgstr "Balanç" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Veta" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Analitzador de barres" @@ -897,18 +925,17 @@ msgstr "Comportament" msgid "Best" msgstr "Millor" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografia de %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Taxa de bits" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -916,7 +943,12 @@ msgstr "Taxa de bits" msgid "Bitrate" msgstr "Taxa de bits" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Taxa de bits" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Analitzador de blocs" @@ -932,7 +964,7 @@ msgstr "Quantitat de difuminació" msgid "Body" msgstr "Cos" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Analitzador de ressonància" @@ -946,11 +978,11 @@ msgstr "Box" msgid "Browse..." msgstr "Explora…" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Durada de la memòria intermèdia" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Emplenant la memòria intermèdia" @@ -962,43 +994,66 @@ msgstr "Però aquests orígens estan desactivats:" msgid "Buttons" msgstr "Botons" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Per defecte, el Grooveshark ordena les cançons per data d’addició" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Compatibilitat amb fulles CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Ubicació de la memòria cau:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Emmagatzemant a la memòria cau" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Emmagatzemant %1 a la memòria cau" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Cancel·la" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Canvia la caràtula" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Canvia la mida de la lletra" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Canvia la manera de repetició" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Canvia la drecera…" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Canvia el mode aleatori" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Canvia l’idioma" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1008,15 +1063,19 @@ msgstr "El canvi en el paràmetre de reproducció monofònic serà efectiu per a msgid "Check for new episodes" msgstr "Comprova si hi ha nous episodis" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Comprova si hi ha actualitzacions…" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Trieu la carpeta de memòria cau del Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Trieu un nom per a la llista de reproducció intel·ligent" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Tria automàticament" @@ -1032,11 +1091,11 @@ msgstr "Tria el tipus de lletra…" msgid "Choose from the list" msgstr "Tria de la llista" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Trieu com ordenar la llista de reproducció i quantes cançons contindrà." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Escolliu el directori de baixada dels podcasts" @@ -1045,7 +1104,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Trieu els llocs web que voleu que el Clementine usi per cercar lletres de cançons." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Clàssica" @@ -1053,17 +1112,17 @@ msgstr "Clàssica" msgid "Cleaning up" msgstr "S’està netejant" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Neteja" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Neteja la llista de reproducció" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1076,8 +1135,8 @@ msgstr "Error de Clementine" msgid "Clementine Orange" msgstr "Taronja de Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Visualització de Clementine" @@ -1085,23 +1144,23 @@ msgstr "Visualització de Clementine" msgid "" "Clementine can automatically convert the music you copy to this device into " "a format that it can play." -msgstr "El Clementine pot convertir automàticament la música que copieu en aquest dispositiu a un formant que pugui reproduir." +msgstr "El Clementine pot convertir automàticament la música que copieu en aquest dispositiu a un format que pugui reproduir." #: ../bin/src/ui_boxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Box" -msgstr "Clementine pot reproduir música que hagi carregat a Box" +msgstr "El Clementine pot reproduir música que hàgiu penjat al Box" #: ../bin/src/ui_dropboxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Dropbox" -msgstr "Clementine pot reproduir música que hagi carregat a Dropbox" +msgstr "El Clementine pot reproduir música que hàgiu penjat al Dropbox" #: ../bin/src/ui_googledrivesettingspage.h:104 msgid "Clementine can play music that you have uploaded to Google Drive" -msgstr "Clementine pot reproduir música que hagi carregat a Google Drive" +msgstr "El Clementine pot reproduir música que hàgiu penjat al Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine pot reproduir música que hagi carregat a Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "El Clementine pot reproduir música que hàgiu penjat a l’OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1114,20 +1173,13 @@ msgid "" "an account." msgstr "Clementine pot sincronitzar la vostra llista de subscripcions amb els vostres altres ordinadors i aplicacions de podcasts. Creeu un compte." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "El Clementine no ha pogut carregar cap visualització de projectM. Assegureu-vos que teniu el Clementine instal·lat correctament." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "El Clementine no ha pogut obtenir l’estat de la vostra subscripció perquè hi ha problemes amb la connexió. Les cançons reproduïdes s’emmagatzemaran i enviaran més tard a Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Visor d’imatges del Clementine" @@ -1139,11 +1191,11 @@ msgstr "El Clementine no ha trobat resultats per a aquest fitxer" msgid "Clementine will find music in:" msgstr "El Clementine trobarà música a:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Feu clic aquí per afegir música" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1153,12 +1205,15 @@ msgstr "Feu clic aquí per marcar aquesta llista com a favorita i afegir-la al p msgid "Click to toggle between remaining time and total time" msgstr "Feu clic aquí per alternar entre el temps de reproducció restant i total" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." -msgstr "Premeu «Inicia sessió» i s’obrirà un navegador. Una vegada que acabi, torneu a Clementine." +msgstr "Premeu «Entra» i s’obrirà un navegador. Quan acabeu, torneu al Clementine." #: widgets/didyoumean.cpp:37 msgid "Close" @@ -1168,19 +1223,19 @@ msgstr "Tanca" msgid "Close playlist" msgstr "Tanca la llista de reproducció" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Tanca la visualització" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Si tanqueu aquesta finestra, es cancel·larà la descàrrega." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "En tancar aquesta finestra es detindrà la cerca de les caràtules dels àlbums." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1188,73 +1243,78 @@ msgstr "Club" msgid "Colors" msgstr "Colors" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Llista separada per comes de classe:nivell, el nivell és 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentari" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Ràdio de la comunitat" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Completa les etiquetes automàticament" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Completa les etiquetes automàticament…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compositor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Configura %1…" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Configura el Grooveshark…" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configura Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Configura Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configura les dreceres" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configura l’Spotify…" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Configura Subsonic…" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Configura Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Configura la cerca global…" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configura la col·lecció…" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Configura els podcasts…" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configura…" @@ -1262,11 +1322,11 @@ msgstr "Configura…" msgid "Connect Wii Remotes using active/deactive action" msgstr "Connetar els comandaments remot Wii amb l'acció activar/desactivar" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Connecta el dispositiu" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "S’està connectant amb Spotify" @@ -1276,12 +1336,16 @@ msgid "" "http://localhost:4040/" msgstr "El servidor ha rebutjat la connexió, comproveu l’URL del servidor. Exemple: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "S’ha esgotat el temps d’espera de la connexió, comproveu l’URL del servidor. Exemple: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Hi ha un problema en la connexió o el propietari ha inhabilitat l’àudio" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Terminal" @@ -1297,174 +1361,174 @@ msgstr "Converteix tota la música" msgid "Convert any music that the device can't play" msgstr "Convertir qualsevol música que el dispositiu no pugui reproduir" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Copia l’URL per compartir en el porta-retalls" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Copiar al porta-retalls" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." -msgstr "Còpia al dispositiu…" +msgstr "Copia al dispositiu…" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." -msgstr "Còpia a la col·lecció…" +msgstr "Copia a la col·lecció…" #: ../bin/src/ui_podcastinfowidget.h:194 msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "No s’ha pogut connectar amb el Subsonic, comproveu l’URL del servidor. Exemple: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "No s’ha pogut crear l’element «%1» de GStreamer. Comproveu que teniu tots els connectors requerits de GStramer instal·lats" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "No s’ha pogut crear la llista de reproducció" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "No s’ha pogut trobar un muxer per %1. Comproveu que teniu els connectors adequats de GStreamer instal·lats" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "No s’ha pogut trobar un codificador per %1. Comproveu que teniu els connectors adequats de GStreamer instal·lats" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "No s’ha pogut carregar l’estació de ràdio de Last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "No s’ha pogut obrir el fitxer de sortida %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Gestor de caràtules" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Imatge de la portada autocontinguda al fitxer" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "S’ha carregat la caràtula automàticament de %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "S’ha esborrat la imatge de la caràtula manualment" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "No s’ha definit la caràtula" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Imatge de portada establerta des de %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Caràtules de %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Crear una nova llista de reproducció de Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Fusiona el so quan es canviï la pista automàticament" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Fusiona el so quan es canviï la pista manualment" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Baix" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Maj+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Maj+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Maj+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1472,7 +1536,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Amunt" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personalitzat" @@ -1484,54 +1548,50 @@ msgstr "Imatge personalitzada:" msgid "Custom message settings" msgstr "Configuració personalitzada dels missatges" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Ràdio personalitzada" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personalitza..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Camí del DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "S’ha detectat un dany en la base de dades. Consulteu https://code.google.com/p/clementine-player/wiki/DatabaseCorruption per obtenir instruccions per recuperar la base de dades" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data de creació" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de modificació" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dies" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Per de&fecte" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Redueix el volum un 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Redueix el volum per cent" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Redueix el volum" @@ -1539,6 +1599,11 @@ msgstr "Redueix el volum" msgid "Default background image" msgstr "Imatge de fons per defecte" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Dispositiu per defecte a %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Opcions per defecte" @@ -1547,30 +1612,30 @@ msgstr "Opcions per defecte" msgid "Delay between visualizations" msgstr "Retard entre visualitzacions" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Eliminar" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Esborrar la llista de reproducció de Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Esborra les dades baixades" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Suprimeix els fitxers" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Suprimeix del dispositiu…" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Suprimeix del disc…" @@ -1578,31 +1643,31 @@ msgstr "Suprimeix del disc…" msgid "Delete played episodes" msgstr "Esborra els episodis escoltats" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Elimina la predefinició" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Elimina la llista de reproducció intel·ligent" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Suprimeix els fitxers originals" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "S’estan suprimint els fitxers" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Treure de la cua les pistes seleccionades" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Treure de la cua la pista" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destí" @@ -1611,7 +1676,7 @@ msgstr "Destí" msgid "Details..." msgstr "Detalls…" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Dispositiu" @@ -1623,15 +1688,15 @@ msgstr "Propietats del dispositiu" msgid "Device name" msgstr "Nom de dispositiu" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Propietats del dispositiu…" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Dispositius" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Diàleg" @@ -1662,18 +1727,23 @@ msgstr "Directori" #: ../bin/src/ui_notificationssettingspage.h:440 msgid "Disable duration" -msgstr "Deshabilita la durada" +msgstr "Inhabilita la durada" #: ../bin/src/ui_appearancesettingspage.h:296 msgid "Disable moodbar generation" msgstr "Desactiva la generació de barres d’ànim" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Deshabilitat" +msgstr "Inhabilitat" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Inhabilitat" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1683,15 +1753,15 @@ msgid "Discontinuous transmission" msgstr "Transmissió discontínua" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opcions de visualització" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Mostrar la indicació-a-pantalla" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Analitza tota la col·lecció de nou" @@ -1703,27 +1773,27 @@ msgstr "No converteixis cap musica" msgid "Do not overwrite" msgstr "No ho sobreescriguis" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "No repetir" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "No ho mostris a Artistes diversos" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "No remenar" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "No aturar!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Feu una donació" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Feu doble clic per obrir" @@ -1731,12 +1801,13 @@ msgstr "Feu doble clic per obrir" msgid "Double clicking a song will..." msgstr "En fer doble clic a una cançó..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Baixa %n episodis" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Directori de descàrregues" @@ -1752,7 +1823,7 @@ msgstr "Membres de descarrega" msgid "Download new episodes automatically" msgstr "Baixa els episodis nous automàticament" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Baixada en la cua" @@ -1760,15 +1831,15 @@ msgstr "Baixada en la cua" msgid "Download the Android app" msgstr "Baixeu l’aplicació per l’Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Baixa aquest àlbum" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Baixa aquest àlbum…" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Baixa aquest episodi" @@ -1776,7 +1847,7 @@ msgstr "Baixa aquest episodi" msgid "Download..." msgstr "Baixa…" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "S’està baixant (%1%)…" @@ -1785,23 +1856,23 @@ msgstr "S’està baixant (%1%)…" msgid "Downloading Icecast directory" msgstr "S’està baixant el directori d’Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "S’està baixant el catàleg de Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "S’està baixant el catàleg de Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "S’està baixant el connector d’Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "S’estan baixant les metadades" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Arrossegueu per canviar de posició" @@ -1821,20 +1892,20 @@ msgstr "Durada" msgid "Dynamic mode is on" msgstr "S’ha activat el mode dinàmic" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Mescla dinàmica aleatòria" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Edita la llista de reproducció intel·ligent" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Edita l’etiqueta «%1»…" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Edita l’etiqueta…" @@ -1846,16 +1917,16 @@ msgstr "Edita les etiquetes" msgid "Edit track information" msgstr "Edita la informació de la pista" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Edita la informació de la pista…" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Edita la informació de les pistes..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Edita…" @@ -1863,6 +1934,10 @@ msgstr "Edita…" msgid "Enable Wii Remote support" msgstr "Activa l’admissió del remot del Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Habilita l’emmagatzematge automàtic en memòria cau" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Activa l’equalitzador" @@ -1877,7 +1952,7 @@ msgid "" "displayed in this order." msgstr "Activeu les fonts següents per incloure-les en els resultats de les cerques. Els resultats es mostraran en aquest ordre." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Activa/desactiva el «scrobbling» del Last.fm" @@ -1905,15 +1980,10 @@ msgstr "Introduïu l’URL per baixar una caràtula des d’Internet" msgid "Enter a filename for exported covers (no extension):" msgstr "Introduïu un nom de fitxer per les caràtules exportades (sense extensió):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Introduïu un nom per aquesta llista de reproducció" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Introduïu un artista o una etiqueta per començar a sentir una radio de Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1927,7 +1997,7 @@ msgstr "Introduïu termes de cerca per trobar podcasts a iTunes Store" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Introduïu termes de cerca per trobar podcasts a gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Introduïu els termes de la cerca" @@ -1936,11 +2006,11 @@ msgstr "Introduïu els termes de la cerca" msgid "Enter the URL of an internet radio stream:" msgstr "Introduïu l’URL d’un flux de ràdio per Internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Introduïu el nom de la carpeta" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Escriviu aquesta IP en l’aplicació per connectar amb Clementine." @@ -1948,21 +2018,22 @@ msgstr "Escriviu aquesta IP en l’aplicació per connectar amb Clementine." msgid "Entire collection" msgstr "Tota la col·lecció" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalitzador" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Equivalent a --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Equivalent a --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Error" @@ -1970,38 +2041,38 @@ msgstr "Error" msgid "Error connecting MTP device" msgstr "Error connectant el dispositiu MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "S’ha produït un error en copiar les cançons" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "S’ha produït un error en suprimir les cançons" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "S’ha produït un error en baixar el connector d’Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "S’ha produït un error en carregar %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "S’ha produït un error en carregar la llista de reproducció del di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "S’ha produït un error en processar %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "S’ha produït un error en carregar el CD d’àudio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Mai reproduïdes" @@ -2033,7 +2104,7 @@ msgstr "Cada 6 hores" msgid "Every hour" msgstr "Cada hora" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Excepte entre pistes del mateix àlbum o del mateix full CUE" @@ -2045,7 +2116,7 @@ msgstr "Caràtules existents" msgid "Expand" msgstr "Expandeix" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Caduca el %1" @@ -2066,36 +2137,36 @@ msgstr "Exporta les caràtules baixades" msgid "Export embedded covers" msgstr "Exporta les caràtules incrustades" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Ha finalitzat l’exportació" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "S’han exportat %1 caràtules de %2 (s’han omès %3)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2105,42 +2176,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Atenua el volum en pausar i en reprendre" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Esvaeix el so en parar una pista" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Esvaïment" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Durada de l’esvaïment" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Ha fallat la lectura de la unitat de CD" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "No s'ha pogut obtenir el directori" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "No s'han pogut obtenir els podcasts" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "No s'ha pogut carregar el podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "No s'ha pogut analitzar el codi XML d'aquest canal RSS" @@ -2149,11 +2220,11 @@ msgstr "No s'ha pogut analitzar el codi XML d'aquest canal RSS" msgid "Fast" msgstr "Ràpid" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Preferits" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Cançons favorites" @@ -2169,11 +2240,11 @@ msgstr "Recull automàticament" msgid "Fetch completed" msgstr "S'han acabat d'obtenir les dades" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "S’està recollint la col·lecció de l’Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "S’ha produït un error en obtenir la caràtula" @@ -2181,7 +2252,7 @@ msgstr "S’ha produït un error en obtenir la caràtula" msgid "File Format" msgstr "Format del fitxer" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Extensió del fitxer" @@ -2189,19 +2260,23 @@ msgstr "Extensió del fitxer" msgid "File formats" msgstr "Format dels fitxers" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nom del fitxer" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nom del fitxer (sense camí)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Patró del nom del fitxer:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Mida del fitxer" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2211,7 +2286,7 @@ msgstr "Tipus de fitxer" msgid "Filename" msgstr "Nom de fitxer" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fitxers" @@ -2219,15 +2294,19 @@ msgstr "Fitxers" msgid "Files to transcode" msgstr "Fitxers per convertir" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Troba cançons en la vostra col·lecció que coincideixen amb el criteri especificat." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Troba a aquest artista" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "S'està establint l'emprenta digital a la cançó" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Finalitzat" @@ -2235,7 +2314,7 @@ msgstr "Finalitzat" msgid "First level" msgstr "Primer nivell" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2251,12 +2330,12 @@ msgstr "A causa de la seva llicència, el suport per a Spotify es troba en un co msgid "Force mono encoding" msgstr "Força la codificació mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Oblida el dispositiu" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2271,7 +2350,7 @@ msgstr "Oblidar un dispositiu l'eliminarà de la llista i Clementine haurà de t #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2299,31 +2378,23 @@ msgstr "Taxa de mostreig" msgid "Frames per buffer" msgstr "Trames per espai de memòria intermèdia" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Amics" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Congelat" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Baixos complets" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Baixos i aguts complets" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Aguts complets" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Motor d’àudio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "General" @@ -2331,30 +2402,30 @@ msgstr "General" msgid "General settings" msgstr "Configuració general" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Estil" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Obtingueu una URL per compartir aquesta llista de reproducció de Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Obtingueu una URL per compartir aquesta cançó de Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "S’estan obtenint les cançons populars de Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "S’estan obtenint els canals" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "S’estan obtenint els fluxos" @@ -2366,11 +2437,11 @@ msgstr "Doneu-li un nom:" msgid "Go" msgstr "Vés-hi" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Vés a la pestanya de la següent llista de reproducció" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Vés a la pestanya de l'anterior llista de reproducció" @@ -2378,7 +2449,7 @@ msgstr "Vés a la pestanya de l'anterior llista de reproducció" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2388,7 +2459,7 @@ msgstr "S’han trobat %1 caràtules de %2 (%3 han fallat)" msgid "Grey out non existent songs in my playlists" msgstr "Enfosqueix les cançons de les llistes de reproducció que no es puguin trobar" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2396,15 +2467,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "S'ha produït un error en iniciar sessió a Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL de la llista de reproducció de Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Ràdio de Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL de la cançó a Grooveshark" @@ -2412,44 +2483,44 @@ msgstr "URL de la cançó a Grooveshark" msgid "Group Library by..." msgstr "Agrupa la col·lecció per…" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Agrupa per" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Agrupa per àlbum" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Agrupa per artista" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Agrupa per artista/àlbum" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Agrupa per artista/any–àlbum" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Agrupa per gènere/àlbum" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Agrupa per gènere/artista/àlbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupació" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "La pàgina HTML no conté cap canal RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "S’ha rebut el codi d’estat d’HTTP 3xx sense un URL, comproveu la configuració del servidor." @@ -2458,7 +2529,7 @@ msgstr "S’ha rebut el codi d’estat d’HTTP 3xx sense un URL, comproveu la c msgid "HTTP proxy" msgstr "Proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Content" @@ -2474,25 +2545,25 @@ msgstr "La informació del maquinari només està disponible mentre el dispositi msgid "High" msgstr "Alt" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Alta (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Alta (1024 × 1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "No s’ha trobat l’amfitrió, comproveu l’URL del servidor. Exemple: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Hores" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hipnogripau" @@ -2504,15 +2575,15 @@ msgstr "No tinc cap compte a Magnatune" msgid "Icon" msgstr "Icona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Icones a la part superior" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "S’està identificant la cançó" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2522,24 +2593,24 @@ msgstr "Si continueu, aquest dispositiu funcionarà lentament i les cançons que msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Si coneixeu l’URL d’un podcast, escriviu-ho a continuació i feu clic a Vés-hi." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignora «The» als noms dels artistes" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Imatges (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Imatges (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "D’aquí a %1 dies" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "D’aquí a %1 setmanes" @@ -2550,7 +2621,7 @@ msgid "" "time a song finishes." msgstr "En el mode dinàmic, les noves pistes s'escolliran i afegiran a la llista de reproducció cada vegada que acabi una cançó." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Safata d’entrada" @@ -2562,36 +2633,36 @@ msgstr "Incloure la caràtula a la notificació" msgid "Include all songs" msgstr "Inclou totes les cançons" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "La versió del protocol REST de Subsonic és incompatible. El client ha d’actualitzar-se." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "La versió del protocol REST de Subsonic és incompatible. El servidor ha d’actualitzar-se." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "La configuració està incompleta. Assegureu-vos que heu emplenat tots els camps." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Incrementa el volum un 4 %" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Augmenta el volum per cent" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Incrementa el volum" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "S’està indexant %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informació" @@ -2599,55 +2670,55 @@ msgstr "Informació" msgid "Input options" msgstr "Opcions d’entrada" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Insereix…" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Instal·lat" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Comprovació d’integritat" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Proveïdors d’Internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "La clau de l’API no és vàlida" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "El format no és vàlid" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "El mètode no és vàlid" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Els paràmetres no són vàlids" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "El recurs especificat no és vàlid" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "El servei no és vàlid" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "La clau de sessió no és vàlida" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "El nom d’usuari i/o la contrasenya no és vàlid" @@ -2655,42 +2726,42 @@ msgstr "El nom d’usuari i/o la contrasenya no és vàlid" msgid "Invert Selection" msgstr "Inverteix la selecció" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Pistes més escoltades a Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Les millors cançons del Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Les millors cançons del mes al Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Les millors cançons de la setmana al Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Base de dades de Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Vés a la pista que s’està reproduïnt" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Premeu els botons per %1 segon…" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Premeu els botons per %1 segons…" @@ -2699,11 +2770,12 @@ msgstr "Premeu els botons per %1 segons…" msgid "Keep running in the background when the window is closed" msgstr "Conserva l’aplicació executant-se en segon pla quan tanqueu la finestra" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Conserva els fitxers originals" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Gatets" @@ -2711,11 +2783,11 @@ msgstr "Gatets" msgid "Language" msgstr "Idioma" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Portàtil/auriculars" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Saló gran" @@ -2723,58 +2795,24 @@ msgstr "Saló gran" msgid "Large album cover" msgstr "Caràtula de l’àlbum gran" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Barra lateral gran" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Últim reproduït" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "Darrera reproducció" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Ràdio personalitzada de Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Col·lecció de Last.fm – %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Ràdio mix de Last.fm – %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Radio dels veïns de Last.fm – %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Estació de ràdio de Last.fm – %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Artistes similars a %1 del Last.fm" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Ràdio d’etiqueta a Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm esta actualment saturat, reintentau passats uns minuts" @@ -2782,11 +2820,11 @@ msgstr "Last.fm esta actualment saturat, reintentau passats uns minuts" msgid "Last.fm password" msgstr "Contrasenya de Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Recompte de reproduccions de Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Etiquetes de Last.fm" @@ -2794,28 +2832,24 @@ msgstr "Etiquetes de Last.fm" msgid "Last.fm username" msgstr "Usuari de Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki de Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Cançons menys preferides" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Deixeu-ho buit per assignar el valor predeterminat. Exemples: «/dev/dsp», «front», …" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Esquerra" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durada" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Col·lecció" @@ -2823,24 +2857,24 @@ msgstr "Col·lecció" msgid "Library advanced grouping" msgstr "Agrupació avançada de la col·lecció" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Avís de reescaneig de la col·lecció" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Cerca a la col·lecció" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Límits" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Escolteu cançons de l’Grooveshark basant-se en allò que s’ha reproduït prèviament " -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "En directe" @@ -2852,15 +2886,15 @@ msgstr "Carregar" msgid "Load cover from URL" msgstr "Carrega la caràtula des de l’URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Carrega la caràtula des de l’URL…" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Carrega la portada des del disc dur" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Carrega la caràtula des del disc…" @@ -2868,84 +2902,89 @@ msgstr "Carrega la caràtula des del disc…" msgid "Load playlist" msgstr "Carrega la llista de reproducció" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Carrega la llista de reproducció..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "S’està carregant la ràdio de Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "S’està carregant el dispositiu MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "S’està carregant la base de dades de l’iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "S’està carregant la llista de reproducció intel·ligent" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "S’estan carregant les cançons" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "S’està carregant el flux" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "S’estan carregant les pistes" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "S’està carregant la informació de les pistes" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "S’està carregant…" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Carregar fitxers/URLs, substituïnt l'actual llista de reproducció" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Entra" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Ha fallat l'inici de sessió" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Finalitza la sessió" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Perfil de predicció a llarg termini (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "M’encanta" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Baixa (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Baixa (256 × 256)" @@ -2957,12 +2996,17 @@ msgstr "Perfil de baixa complexitat (LC)" msgid "Lyrics" msgstr "Llletres" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Lletres des de %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2974,15 +3018,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2990,7 +3034,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Baixada de Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Baixada de Magnatune finalitzada" @@ -2998,15 +3042,20 @@ msgstr "Baixada de Magnatune finalitzada" msgid "Main profile (MAIN)" msgstr "Perfil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Fes-ho doncs!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Fes-ho doncs!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Fes la llista de reproducció disponible fora de línia" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Resposta incorrecta" @@ -3019,15 +3068,15 @@ msgstr "Configuració manual del servidor intermediari" msgid "Manually" msgstr "Manualment" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabricant" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Marca com a escoltat" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Marca com a nou" @@ -3039,17 +3088,21 @@ msgstr "Tots els termes de cerca han de coincidir (AND)" msgid "Match one or more search terms (OR)" msgstr "Un o més termes de cerca han de coincidir (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Resultats globals de cerca màxims" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Màxima taxa de bits" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Mitja (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Mitja (512 × 512)" @@ -3061,11 +3114,15 @@ msgstr "Tipus d’afiliació" msgid "Minimum bitrate" msgstr "Taxa de bits mínima" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Valor mínim de memòria" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Falten les predefinicions del projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3073,20 +3130,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Monitoritza els canvis a la col·lecció" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Reproducció monofònica" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Mesos" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Estat d’ànim" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Estil de barres d’ànim" @@ -3094,15 +3151,19 @@ msgstr "Estil de barres d’ànim" msgid "Moodbars" msgstr "Barres d’ànim" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Més" + +#: library/library.cpp:84 msgid "Most played" msgstr "Més reproduïdes" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Punt de muntatge" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Punts de muntatge" @@ -3111,7 +3172,7 @@ msgstr "Punts de muntatge" msgid "Move down" msgstr "Mou cap avall" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Mou a la col·lecció…" @@ -3120,7 +3181,7 @@ msgstr "Mou a la col·lecció…" msgid "Move up" msgstr "Mou cap amunt" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Música" @@ -3128,56 +3189,32 @@ msgstr "Música" msgid "Music Library" msgstr "Col·lecció de música" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Silenci" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "La meva col·lecció del Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "La meva ràdio mix del Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "El meu veïnat del Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "La meva ràdio recomanada de Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "La meva ràdio mix" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "La meva música" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "El meu veïnat" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "La meva emissora de ràdio" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Les meves recomanacions" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nom" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nom" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opcions d'anomenat" @@ -3185,23 +3222,19 @@ msgstr "Opcions d'anomenat" msgid "Narrow band (NB)" msgstr "Banda estreta (BE)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Veïns" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Servidor intermediari de xarxa" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Control remot de xarxa" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Mai" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Mai reproduïdes" @@ -3210,21 +3243,21 @@ msgstr "Mai reproduïdes" msgid "Never start playing" msgstr "Mai comencis a reproduir" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Carpeta nova" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Llista de reproducció nova" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Llista de reproducció intel·ligent nova…" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Cançons noves" @@ -3232,24 +3265,24 @@ msgstr "Cançons noves" msgid "New tracks will be added automatically." msgstr "Les pistes noves seran afegides automàticament" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Pistes més noves" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Següent" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Pista següent" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "La setmana vinent" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Sense analitzador" @@ -3257,7 +3290,7 @@ msgstr "Sense analitzador" msgid "No background image" msgstr "Sense imatge de fons" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "No hi ha cap caràtula que exportar." @@ -3265,7 +3298,7 @@ msgstr "No hi ha cap caràtula que exportar." msgid "No long blocks" msgstr "No utilitzis blocs llargs" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "No s’han trobat coincidències. Netegeu el quadre de cerca per mostrar de nou la llista de reproducció completa." @@ -3279,11 +3312,11 @@ msgstr "No utilitzis blocs curs" msgid "None" msgstr "Cap" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Cap de les cançons seleccionades són adequades per copiar-les a un dispositiu" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3291,43 +3324,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Tipus de bloc normal" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "No està disponible mentre s'utilitza una llista de reproducció dinàmica" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "No connectat" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "No hi ha suficient contingut" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "No hi ha suficients ventiladors" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "No hi ha prous membres" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "No hi ha prous veïns" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "No instal·lat" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "No heu iniciat la sessió" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "No s’ha muntat, feu doble clic per muntar-ho" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "No s’ha trobat cap resultat" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Tipus de notificació" @@ -3340,36 +3377,41 @@ msgstr "Notificacions" msgid "Now Playing" msgstr "Ara en reproducció" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Vista prèvia OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Inactiu" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Actiu" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3377,11 +3419,11 @@ msgid "" "192.168.x.x" msgstr "Només accepta les connexions de clients dins del rang d’IP:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Permet només connexions provinents de la xarxa local" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Mostra només els primers" @@ -3389,23 +3431,23 @@ msgstr "Mostra només els primers" msgid "Opacity" msgstr "Opacitat" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Obre %1 en un navegador" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Obre un &CD d’àudio…" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Obre un fitxer OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Obre un fitxer OPML…" @@ -3413,30 +3455,35 @@ msgstr "Obre un fitxer OPML…" msgid "Open device" msgstr "Obrir dispositiu" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Obre un fitxer..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Obre-ho a Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" -msgstr "Obre en una nova llista de reproducció" +msgstr "Obre en una llista de reproducció nova" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Obre en una llista nova" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Obre al navegador" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Obre…" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operació fallida" @@ -3456,23 +3503,23 @@ msgstr "Opcions…" msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organitza fitxers" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organitza fitxers..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organitzant fitxers" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Etiquetes originals" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Altres opcions" @@ -3480,7 +3527,7 @@ msgstr "Altres opcions" msgid "Output" msgstr "Sortida" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Perifèric de sortida" @@ -3488,15 +3535,11 @@ msgstr "Perifèric de sortida" msgid "Output options" msgstr "Opcions de sortida" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Connector de sortida" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Sobreescriu-ho tot" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Sobreescriu els fitxers existents" @@ -3508,15 +3551,15 @@ msgstr "Sobreescriu només les més petites" msgid "Owner" msgstr "Propietari" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "S’està analitzant el catàleg de Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Festa" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3525,20 +3568,20 @@ msgstr "Festa" msgid "Password" msgstr "Contrasenya" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pausa" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pausa la reproducció" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intèrpret" @@ -3547,34 +3590,22 @@ msgstr "Intèrpret" msgid "Pixel" msgstr "Píxel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Barra lateral senzilla" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Reprodueix" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Reprodueix Artista o Etiqueta" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Reprodueix la ràdio de l’artista…" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Comptador de reproduccions" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Reproducció de ràdio personalitzada..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Reprodueix si esta parat, pausa si esta reproduïnt" @@ -3583,45 +3614,42 @@ msgstr "Reprodueix si esta parat, pausa si esta reproduïnt" msgid "Play if there is nothing already playing" msgstr "Reprodueix si encara no hi ha res reproduint-se" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Reproduix la radio de l'etiqueta..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Reprodueix la a cançó de la llista de reproducció" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Reprodueix/Pausa" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Reproducció" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opcions del reproductor" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Llista de reproducció" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Llista de reproducció finalitzada" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opcions de la llista de reproducció" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tipus de llista de reproducció" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Llistes rep." @@ -3633,23 +3661,23 @@ msgstr "Tanqueu el navegador i torneu a Clementine." msgid "Plugin status:" msgstr "Estat del connector" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Cançons populars" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Cançons populars del mes" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Cançons populars d'avui" @@ -3658,28 +3686,29 @@ msgid "Popup duration" msgstr "Duració de la finestra emergent" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Preamplificador" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Preferències" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Preferències…" #: ../bin/src/ui_librarysettingspage.h:202 msgid "Preferred album art filenames (comma separated)" -msgstr "Noms d'arxiu preferits per a les caràtules dels àlbums (separats per comes)" +msgstr "Noms de fitxer preferits per a les caràtules dels àlbums (separats per comes)" #: ../bin/src/ui_magnatunesettingspage.h:167 msgid "Preferred audio format" @@ -3709,7 +3738,7 @@ msgstr "Premeu una combinació de tecles per" msgid "Press a key" msgstr "Pulsa una tecla" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Premeu una combinació de tecles per utilitzar amb %1…" @@ -3720,20 +3749,20 @@ msgstr "Opcions de l'OSD bonic" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Previsualitza" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Pista anterior" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Mostra la informació de la versió" @@ -3741,21 +3770,25 @@ msgstr "Mostra la informació de la versió" msgid "Profile" msgstr "Perfil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progrés" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Progrés" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psicodèlic" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Premeu el botó del Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Posa les cançons en ordre aleatori" @@ -3763,7 +3796,12 @@ msgstr "Posa les cançons en ordre aleatori" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Qualitat" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Qualitat" @@ -3771,28 +3809,33 @@ msgstr "Qualitat" msgid "Querying device..." msgstr "S'està consultant el dispositiu..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Gestor de la cua" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Afegeix les pistes seleccionades a la cua" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Afegeix la pista a la cua" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Ràdio (mateix volum per a totes les peces)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Ràdios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Pluja" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Pluja" @@ -3800,48 +3843,48 @@ msgstr "Pluja" msgid "Random visualization" msgstr "Visualització al·leatòria" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Puntua la cançó actual amb 0 estrelles" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Puntua la cançó actual amb 1 estrella" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Puntua la cançó actual amb 2 estrelles" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Puntua la cançó actual amb 3 estrelles" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Puntua la cançó actual amb 4 estrelles" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Puntua la cançó actual amb 5 estrelles" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Puntuació" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Realment voleu cancel·lar?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "S’ha excedit el límit de redireccions, comproveu la configuració del servidor." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Actualitza" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Actualitzar catàleg" @@ -3849,19 +3892,15 @@ msgstr "Actualitzar catàleg" msgid "Refresh channels" msgstr "Actualitzar canals" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Actualitza la llista d’amics" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Actualitza la llista d’emissores" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Refresca els fluxes" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3873,8 +3912,8 @@ msgstr "Recorda el moviment del Wiimote" msgid "Remember from last time" msgstr "Recorda de l'últim cop" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Suprimeix" @@ -3882,7 +3921,7 @@ msgstr "Suprimeix" msgid "Remove action" msgstr "Elimina acció" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Esborra els duplicats de la llista de reproducció" @@ -3890,73 +3929,77 @@ msgstr "Esborra els duplicats de la llista de reproducció" msgid "Remove folder" msgstr "Suprimeix carpeta" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Esborra-ho de La meva música" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Suprimeix dels preferits" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Esborreu dels favorits" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Suprimeix de la llista de reproducció" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Esborra la llista de reproducció" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Suprimeix llestes de reproducció" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "S'estan esborrant cançons de La meva música" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "S'estan treient les cançons dels preferits" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Reanomena la llista de reproducció «%1»" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Reanomena una llista de reproducció de Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Renombra de la llista de reproducció" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Renombra de la llista de reproducció..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Recordar pistes en aquest ordre..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repeteix" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repeteix àlbum" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repeteix la llista de reproducció" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repeteix la pista" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Substitueix la llista de reproducció actual" @@ -3965,15 +4008,15 @@ msgstr "Substitueix la llista de reproducció actual" msgid "Replace the playlist" msgstr "Substitueix la llista de reproducció" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Reemplaça els espais amb guions baixos" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Mode de l’Replay Gain" @@ -3981,24 +4024,24 @@ msgstr "Mode de l’Replay Gain" msgid "Repopulate" msgstr "Reomple" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Sol·licita un codi d’autenticació" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Posa a zero" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Posa a zero el comptador de reproduccions" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Reinicia la pista, o canvia a l’anterior si no han transcorregut 8 segons des de l’inici." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Limitar als caràcters ASCII" @@ -4006,15 +4049,15 @@ msgstr "Limitar als caràcters ASCII" msgid "Resume playback on start" msgstr "Reprèn la reproducció en l’inici" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "S'estan obtenint les cançons de La meva música de Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "S’estan obtenint les cançons favorites de Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "S’estan obtenint les llistes de reproducció de Grooveshark" @@ -4034,11 +4077,11 @@ msgstr "Captura" msgid "Rip CD" msgstr "Captura un CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Captura un CD d’àudio…" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4050,25 +4093,25 @@ msgstr "Executa" msgid "SOCKS proxy" msgstr "Proxy SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "S’ha produït un error del protocol d’enllaç SSL, comproveu la configuració del servidor. El paràmetre de SSLv3 podria solucionar alguns errors temporalment." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Treure el dispositiu amb seguretat" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Treure el dispositiu amb seguretat després de copiar" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Freqüència de mostreig" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Freqüència de mostreig" @@ -4076,27 +4119,33 @@ msgstr "Freqüència de mostreig" msgid "Save .mood files in your music library" msgstr "Desa fitxers .mood en la vostra col·lecció musical" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Desa la caràtula de l’àlbum" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Desa la caràtula al disc dur…" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Desa la imatge" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Desa la llista de reproducció" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Desa la llista de reproducció" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Desa la llista de reproducció..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Desa els valors" @@ -4112,11 +4161,11 @@ msgstr "Desa les estadístiques en etiquetes de fitxers quan sigui possible" msgid "Save this stream in the Internet tab" msgstr "Salva aquest flux a la pestanya d'Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "S’estan desant les estadístiques en els fitxers de les cançons" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "S'estan desant les pistes" @@ -4128,7 +4177,7 @@ msgstr "Perfil de freqüència de mostreig escalable (SSR)" msgid "Scale size" msgstr "Mida de l’escala" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Puntuació" @@ -4136,10 +4185,14 @@ msgstr "Puntuació" msgid "Scrobble tracks that I listen to" msgstr "Envia les pistes que escolto" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Cerca" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Cerca" @@ -4147,23 +4200,23 @@ msgstr "Cerca" msgid "Search Icecast stations" msgstr "Cerca emissores Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Cerca a Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Cerca al Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Cerca a Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Cerca automàticament" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Cerca la caràtula del àlbum…" @@ -4183,21 +4236,21 @@ msgstr "Cerca a iTunes" msgid "Search mode" msgstr "Mode de cerca" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opcions de cerca" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Resultats de la cerca" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Termes de cerca" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Cercant a Grooveshark" @@ -4205,27 +4258,27 @@ msgstr "Cercant a Grooveshark" msgid "Second level" msgstr "Segon nivell" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" -msgstr "Cerca enrere" +msgstr "Retrocedeix 10 segons" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" -msgstr "Cerca cap endavant" +msgstr "Avança 10 segons" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Mou-te per la pista en reproducció a una posició relativa" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Mou-te per la pista en reproducció a una posició absoluta" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Seleccionar-ho tot" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "No selecciones res" @@ -4233,7 +4286,7 @@ msgstr "No selecciones res" msgid "Select background color:" msgstr "Seleccioneu el color de fons:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Seleccioneu la imatge de fons" @@ -4249,7 +4302,7 @@ msgstr "Seleccioneu el color de primer pla:" msgid "Select visualizations" msgstr "Seleccioneu visualitzacions" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Seleccioneu visualitzacions..." @@ -4257,7 +4310,7 @@ msgstr "Seleccioneu visualitzacions..." msgid "Select..." msgstr "Navega…" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Número de sèrie" @@ -4269,51 +4322,51 @@ msgstr "URL del servidor" msgid "Server details" msgstr "Detalls del servidor" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Servei fora de línia" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Estableix %1 a «%2»…" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Estableix el volum al percent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Estableix valor per totes les pistes seleccionades..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Paràmetres" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Drecera" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Drecera per a «%1»" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Ja existeix la drecera per a «%1»" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Mostrar" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Mostra l'OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Mostra una animació destacant la pista actual" @@ -4341,15 +4394,15 @@ msgstr "Mostra una finestra emergent de la safata de sistema" msgid "Show a pretty OSD" msgstr "Mostra un OSD bonic" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Mostra sota la barra d'estat" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Mostra totes les cançons" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Mostra totes les cançons" @@ -4361,32 +4414,36 @@ msgstr "Mostra les caràtules a la col·lecció" msgid "Show dividers" msgstr "Mostra els separadors" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Mostra a mida completa..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Mostra grups en els resultats de la cerca global" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Mostra al gestor de fitxers" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Mostra a la col·lecció…" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Mostra en Artistes diversos" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Mostra les barres d’ànim" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Mostra només els duplicats" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Mostra només les pistes sense etiquetar" @@ -4395,8 +4452,8 @@ msgid "Show search suggestions" msgstr "Mostra suggeriments de cerca" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Mostra els botons «M’agrada» i «Veta»" +msgid "Show the \"love\" button" +msgstr "Mostra el botó «M’encanta»" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4410,27 +4467,27 @@ msgstr "Mostrar la icona a la safata" msgid "Show which sources are enabled and disabled" msgstr "Mostra quins orígens estan activats i desactivats" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Mostra/amaga" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Aleatori" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Remena els àlbums" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Remena-ho tot" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Llista de reproducció aleatòria" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Remena les pistes d'aquest àlbum" @@ -4440,13 +4497,13 @@ msgstr "Inicieu la sessió" #: ../bin/src/ui_loginstatewidget.h:173 msgid "Sign out" -msgstr "Tancar la sessió" +msgstr "Finalitza la sessió" #: ../bin/src/ui_loginstatewidget.h:175 msgid "Signing in..." msgstr "S’està iniciant la sessió…" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Artistes similars" @@ -4458,43 +4515,51 @@ msgstr "Mida" msgid "Size:" msgstr "Mida:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Salta enrere en la llista de reproducció" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Comptador d’omissions" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Salta endavant en la llista de reproducció" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Omet les pistes seleccionades" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Omet la pista" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Caràtula petita" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Barra lateral petita" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Llista de reproducció intel·ligent" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Llistes de reproducció intel·ligents" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Suau" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Rock suau" @@ -4502,11 +4567,11 @@ msgstr "Rock suau" msgid "Song Information" msgstr "Informació de la cançó" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Inf. cançó" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonograma" @@ -4526,15 +4591,23 @@ msgstr "Ordena per gènere (segons la popularitat)" msgid "Sort by station name" msgstr "Ordena pel nom de l'emissora" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Ordena alfabèticament les cançons en llistes" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Ordena les cançons per" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Ordenació" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Font" @@ -4550,7 +4623,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Error en iniciar sessió a Spotify" @@ -4558,7 +4631,7 @@ msgstr "Error en iniciar sessió a Spotify" msgid "Spotify plugin" msgstr "Connector d'Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "No s’ha instal·lat el connector de Spotify" @@ -4566,77 +4639,77 @@ msgstr "No s’ha instal·lat el connector de Spotify" msgid "Standard" msgstr "Estàndard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Destacat" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Inicia la captura" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Inicia la llista de reproducció que s'està reproduint" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Inicia la conversió" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Comenceu a escriure quelcom al quadre de cerca de dalt per omplir-ne la llista de resultats" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "S’està començant %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "S’està iniciant…" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Emissores" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Atura" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Atura desprès" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Atura després d’aquesta pista" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Atura la reproducció" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Atura la reproducció després de la pista actual" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Atura la reproducció després de: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Aturat" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Flux de dades" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4646,7 +4719,7 @@ msgstr "Per la transmissió de dades des d’un servidor de Subsonic es requerei msgid "Streaming membership" msgstr "Membresía per transmetre dades" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Llestes de reproducció subscrites" @@ -4654,7 +4727,7 @@ msgstr "Llestes de reproducció subscrites" msgid "Subscribers" msgstr "Subscriptors" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4662,12 +4735,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Correcte!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Escrit satisfactòriament %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Etiquetes suggerides" @@ -4676,13 +4749,13 @@ msgstr "Etiquetes suggerides" msgid "Summary" msgstr "Resum" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Molt alta (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Molt alta (2048 × 2048)" @@ -4694,43 +4767,35 @@ msgstr "Formats compatibles" msgid "Synchronize statistics to files now" msgstr "Sincronitza estadístiques als fitxers ara" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "S'està sincronitzant la safata d'entrada de Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "S'està sincronitzant la llista de reproducció de Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "S'estan sincronitzant les pistes destacades de Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Colors del sistema" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Pestanyes a dalt de tot" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Etiqueta" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Recolector d'etiquetes" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Ràdio d'etiquetes" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Taxa de bits desitjada" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4738,11 +4803,11 @@ msgstr "Techno" msgid "Text options" msgstr "Opcions del text" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Agraïm a" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "No s’ha pogut iniciar l’ordre «%1»." @@ -4751,17 +4816,12 @@ msgstr "No s’ha pogut iniciar l’ordre «%1»." msgid "The album cover of the currently playing song" msgstr "La caràtula de l’àlbum de la cançó en reproducció" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "El directori %1 no es vàlid" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "La llista de reproducció «%1» està buida o no s’ha pogut carregar." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "El segon valor ha de ser major que el primer!" @@ -4769,40 +4829,40 @@ msgstr "El segon valor ha de ser major que el primer!" msgid "The site you requested does not exist!" msgstr "L’adreça que heu sol·licitat no existeix." -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "L’adreça que heu sol·licitat no conté cap imatge." -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Ha acabat el període de prova del servidor de Subsonic. Fareu una donació per obtenir una clau de llicència. Visiteu subsonic.org para més detalls." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "La versió de Clementine a la que us acabeu d’actualitzar necessita tornar a analitzar tota la col·lecció perquè incorpora les següents funcions noves:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Hi ha altres cançons en aquest àlbum" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "S'ha produit un error en comunicar-se amb gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Hi ha hagut un problema rebent la meta-informació de Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "S'ha produit un error en analitzar la resposta de l'iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4814,13 +4874,13 @@ msgid "" "deleted:" msgstr "S’han produït problemes en suprimir algunes cançons. No s’han pogut suprimir els fitxers següents:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Se suprimiran aquests fitxers del dispositiu, esteu segur que voleu continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4840,13 +4900,13 @@ msgstr "Aquesta configuració s’usa en el diàleg «Converteix música», i qu msgid "Third level" msgstr "Tercer nivell" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Aquesta acció crearà una base de dades que podria ser de fins a 150 MB.\nVoleu continuar de totes formes?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Aquest àlbum no està disponible en el format demanat" @@ -4860,11 +4920,11 @@ msgstr "Aquest dispositiu ha de connectar-se i obrir-se abans que el Clementine msgid "This device supports the following file formats:" msgstr "Aquest dispositiu és compatible amb els següents formats de fitxers:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Aquest dispositiu no funcionarà correctament" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Aquest és un dispositiu MTP, però s’ha compilat el Clementine sense compatibilitat amb libmtp." @@ -4873,43 +4933,43 @@ msgstr "Aquest és un dispositiu MTP, però s’ha compilat el Clementine sense msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Aquest dispositiu és un iPod, però heu compilat el Clementine sense compatibilitat libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." -msgstr "Aquest es el primer cop que connectes aquest dispositiu. Clementine analitzarà el dispositiu per trobar arxius de música - això pot trigar un mica." +msgstr "Aquest es el primer cop que connecteu aquest dispositiu. El Clementine analitzarà el dispositiu per trobar música. Això pot trigar un mica." #: playlist/playlisttabbar.cpp:186 msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Podeu modificar aquesta opció a la pestanya «Comportament» a Preferències" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Aquest flux es sol per als subscriptors que paguen" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Aquest tipus de dispositiu no és compatible: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Títol" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Per iniciar la ràdio de Grooveshark, hauríeu de reproduir abans unes quantes cançons de Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Avui" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Activa la visualització per pantalla elegant" @@ -4917,27 +4977,27 @@ msgstr "Activa la visualització per pantalla elegant" msgid "Toggle fullscreen" msgstr "Commuta a pantalla completa" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Commuta l’estat de la cua" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Commuta el «scrobbling»" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Canvia la visibilitat del OSD estètic" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Demà" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Massa redireccions" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Millors cançons" @@ -4945,21 +5005,25 @@ msgstr "Millors cançons" msgid "Total albums:" msgstr "Total d’àlbums:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Bytes totals transferits" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Total de sol·licituds de xarxa fetes" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Pistes" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Converteix música" @@ -4971,7 +5035,7 @@ msgstr "Registre del convertidor" msgid "Transcoding" msgstr "Conversió" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "S’estan convertint %1 fitxers emprant %2 fils" @@ -4980,11 +5044,11 @@ msgstr "S’estan convertint %1 fitxers emprant %2 fils" msgid "Transcoding options" msgstr "Opcions de conversió" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4992,72 +5056,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Atura" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Contrasenya de l’Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Nom d’usuari de l’Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Banda ultra ampla (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "No es pot baixar %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Desconegut" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Tipus de contingut desconegut" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Error desconegut" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Esborra'n la portada" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "No ometis les pistes seleccionades" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "No ometis la pista" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Canceleu la subscripció" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Propers concerts" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Actualitza" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Actualitza la llista de reproducció de Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Actualitza tots els podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Actualitza les carpetes de la col·lecció amb canvis" @@ -5065,7 +5129,7 @@ msgstr "Actualitza les carpetes de la col·lecció amb canvis" msgid "Update the library when Clementine starts" msgstr "Actualitza la col·lecció quan Clementine arranqui" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Actualitza aquest podcast" @@ -5073,21 +5137,21 @@ msgstr "Actualitza aquest podcast" msgid "Updating" msgstr "S’està actualitzant" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "S’està actualitzant %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "S’està actualitzant %1%…" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "S’està actualitzant la col·lecció" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Ús" @@ -5095,11 +5159,11 @@ msgstr "Ús" msgid "Use Album Artist tag when available" msgstr "Utilitza l’etiqueta «Artista de l’àlbum» quan estigui disponible" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Utilitza les tecles de mètode abreujat de Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Utilitza les metadades Replay Gain si estan disponibles" @@ -5119,7 +5183,7 @@ msgstr "Empra un conjunt de colors personalitzat" msgid "Use a custom message for notifications" msgstr "Utilitza un missatge personalitzat per les notificacions" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Usa un control remot de xarxa" @@ -5159,20 +5223,20 @@ msgstr "Utilitza la configuració de servidor intermediari del sistema" msgid "Use volume normalisation" msgstr "Empra la normalització de volum" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Usat" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "L’usuari %1 no té un compte Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interfície d’usuari" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5194,12 +5258,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Taxa de bits variable" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Artistes diversos" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versió %1" @@ -5212,7 +5276,7 @@ msgstr "Vista" msgid "Visualization mode" msgstr "Mode de visualització" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualitzacions" @@ -5220,11 +5284,15 @@ msgstr "Visualitzacions" msgid "Visualizations Settings" msgstr "Paràmetres de visualització" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Detecció de veu" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volumen %1%" @@ -5242,11 +5310,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Avisa’m abans de tancar una pestanya de llista de reproducció" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5254,7 +5322,7 @@ msgstr "Wav" msgid "Website" msgstr "Lloc web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Setmanes" @@ -5280,32 +5348,32 @@ msgstr "Perquè no proveu..." msgid "Wide band (WB)" msgstr "Banda ampla (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Comandament remot Wii %1: activat" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Comandament remot Wii %1: connectat" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Comandament remot Wii %1: bateria crítica (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Comandament remot Wii %1: desactivat" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Comandament remot Wii %1: desconnectat" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Comandament remot Wii %1: bateria baixa (%2%)" @@ -5326,7 +5394,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Audio Windows Media" @@ -5334,25 +5402,25 @@ msgstr "Audio Windows Media" msgid "Without cover:" msgstr "Sense caràtula:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Voleu moure també les altres cançons d’aquest àlbum a Artistes diversos?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Voleu fer de nou un escaneig complet ara?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Escriu totes les estadístiques en els fitxers de les cançons" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nom d’usuari o contrasenya incorrectes." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5364,11 +5432,11 @@ msgstr "Any" msgid "Year - Album" msgstr "Any - Àlbum" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Anys" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Ahir" @@ -5376,13 +5444,13 @@ msgstr "Ahir" msgid "You are about to download the following albums" msgstr "Sou a punt de baixar els següents àlbums" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Esteu segur que voleu suprimir %1 llistes de reproducció dels vostres preferits?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5392,12 +5460,12 @@ msgstr "Sou a punt d’eliminar una llista de reproducció que no heu desat com msgid "You are not signed in." msgstr "No heu iniciat la sessió." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Heu iniciat la sessió com a %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Heu iniciat la sessió." @@ -5405,13 +5473,13 @@ msgstr "Heu iniciat la sessió." msgid "You can change the way the songs in the library are organised." msgstr "Podeu canviar la forma en la qual les cançons de la col·lecció estan organitzades" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Podeu escoltar gratuïtament sense un compte d’usuari, però els membres Premium poden escoltar transmissions de qualitat més alta sense publicitat." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5421,13 +5489,6 @@ msgstr "Podeu escoltar cançons del Magnature gratuïtament i sense un compte. C msgid "You can listen to background streams at the same time as other music." msgstr "Podeu escoltar so ambiental de fons mentre escolteu música." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Podeu enviar de forma gratuïta la informació de les cançons escoltades, però solament els subscriptors de pagament poden escoltar la ràdio de Last.fm des de Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Podeu usar el vostre Wii Remote com un control remot per Clementine. Visiteu la pàgina en el wiki de Clementine para més informació.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "No disposeu d'un compte Grooveshark Anywhere" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "No disposeu d'un compte Spotify Premium" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "No teniu una subscripció activa" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "No cal iniciar sessió per cercar i escoltar música al SoundCloud. Però, heu d’iniciar sessió per accedir a les vostres llestes de reproducció i actualitzacions." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." -msgstr "S’ha tancat la vostra sessió de l’Spotify, torneu a introduir la contrasenya al diàleg de configuració." +msgstr "Ha finalitzat la vostra sessió de l’Spotify. Torneu a introduir la contrasenya al diàleg de configuració." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." -msgstr "S’ha tancat la vostra sessió de l’Spotify, torneu a introduir la contrasenya." +msgstr "Ha finalitzat la vostra sessió de l’Spotify. Torneu a introduir la contrasenya." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Us encanta aquesta pista" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Obriu Preferències del sistema i permeteu que el Clementine «controli l’equip» per utilitzar les dreceres globals al Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5472,17 +5547,11 @@ msgstr "Necessiteu obrir les Preferències del sistema i activar «, 2011 # David Kolibáč , 2011 # David Kolibáč , 2011,2013 -# fri , 2013 +# fri, 2013 # jui , 2012 # mandarinki , 2011 # Pavel Fric , 2010 # Pavel Fric , 2004,2010 -# fri , 2011-2012 -# fri , 2013-2014 -# fri , 2011-2012 +# fri, 2011-2012 +# fri, 2013-2014 +# fri, 2011-2012 # mandarinki , 2011 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 06:43+0000\n" -"Last-Translator: fri \n" +"PO-Revision-Date: 2014-05-11 09:45+0000\n" +"Last-Translator: fri\n" "Language-Team: Czech (http://www.transifex.com/projects/p/clementine/language/cs/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -53,9 +53,9 @@ msgstr "dnů" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -68,11 +68,16 @@ msgstr " bodů" msgid " seconds" msgstr " sekund" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " písně" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 písní)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 alb" @@ -82,12 +87,12 @@ msgstr "%1 alb" msgid "%1 days" msgstr "%1 dnů" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "před %1 dny" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 na %2" @@ -97,48 +102,48 @@ msgstr "%1 na %2" msgid "%1 playlists (%2)" msgstr "%1 seznamů skladeb (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 vybráno z" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 píseň" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 písní" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "Bylo nalezeno %1 písní" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "Bylo nalezeno %1 písní (zobrazeno %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 skladeb" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 přeneseno" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: modul Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 jiných posluchačů" @@ -152,18 +157,21 @@ msgstr "%L1 celkových přehrání" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "nepodařilo se %n" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "dokončeno %n" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "zůstávají %n" @@ -175,24 +183,24 @@ msgstr "&Zarovnat text" msgid "&Center" msgstr "&Na střed" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "Vl&astní" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Doplňky" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Nápo&věda" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Skrýt %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Skrýt..." @@ -200,23 +208,23 @@ msgstr "Skrýt..." msgid "&Left" msgstr "&Vlevo" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Hudba" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "Žád&né" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Seznam skladeb" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Ukončit" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Režim opakování" @@ -224,23 +232,23 @@ msgstr "Režim opakování" msgid "&Right" msgstr "&Vpravo" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Režim míchání" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Roztáhnout sloupce tak, aby se vešly do okna" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Nástroje" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(liší se u jednotlivých písní)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...a všichni, kdo přispěli k vývoji přehrávače Amarok" @@ -260,14 +268,10 @@ msgstr "0 px" msgid "1 day" msgstr "1 den" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 stopa" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -277,7 +281,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 náhodných skladeb" @@ -285,12 +289,6 @@ msgstr "50 náhodných skladeb" msgid "Upgrade to Premium now" msgstr "Povýšit na Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Vytvořit nový účet nebo nastavit heslo znovu" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -301,6 +299,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Není-li zaškrtnuto, Clementine se pokusí o uložení vašeho hodnocení a dalších statistik pouze v samostatné databázi a nebude měnit vaše soubory.

Je-li zaškrtnuto, Clementine uloží statistiku jak do databáze tak přímo do souboru pokaždé, když došlo ke změně.

Všimněte si, prosím, že to nemusí jít u každého formátu, jelikož pro to, jak to dělat, není žádný standard. Jiné hudební přehrávače tyto soubory nemusí být schopny přečíst.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Dejte před slovo název pole, aby se hledání omezilo na to pole , např. artist:Gott, sbírka je prohledána na jména umělců, jež obsahují slovo Gott.

Dostupná pole: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -309,38 +318,38 @@ msgid "" "activated.

" msgstr "

Toto bude zapisovat hodnocení písní a statistiky do značek písní u všech písní ve vaší sbírce.

Není to potřeba, pokud byla volba "Ukládat hodnocení písní a statistiky do značek písní"vždy zapnuta.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Symboly začínají %, například: %artist %album %title

\n\n

Pokud obklopíte části textu obsahující symbol složenými závorkami, tato část bude skryta, je-li symbol prázdný.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Je požadován účet Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Je požadován účet Spotify Premium." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Klient se může připojit jen tehdy, když byl zadán správný kód." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Chytrý seznam skladeb je dynamický seznam písní, které pocházejí z vaší sbírky. Jsou různé druhy chytrých seznamů skladeb, jež nabízejí rozdílné způsoby výběru písní." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Píseň bude zařazena do seznamu skladeb, pokud bude odpovídat těmto podmínkám." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -360,36 +369,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "VŠECHNU SLÁVU HYPNOŽÁBĚ" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Přerušit" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "O Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "O Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Podrobnosti o účtu" @@ -401,11 +409,15 @@ msgstr "Podrobnosti k účtu (Premium)" msgid "Action" msgstr "Činnost" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Zapnout/Vypnout Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Proud činností" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Přidat zvukový záznam" @@ -421,39 +433,39 @@ msgstr "Přidat nový řádek, je-li to podporováno typem oznámení" msgid "Add action" msgstr "Přidat činnost" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Přidat další proud..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Přidat složku..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Přidat soubor" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Přidat soubor k překódování" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Přidat soubor(y) k překódování" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Přidat soubor..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Přidat soubory pro překódování" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Přidat složku" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Přidat složku..." @@ -465,11 +477,11 @@ msgstr "Přidat novou složku..." msgid "Add podcast" msgstr "Přidat záznam" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Přidat zvukový záznam..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Přidat hledaný výraz" @@ -533,6 +545,10 @@ msgstr "Přidat počet přeskočení písně" msgid "Add song title tag" msgstr "Přidat značku název písně" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Přidat píseň do vyrovnávací paměti" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Přidat značku pořadí písně" @@ -541,22 +557,34 @@ msgstr "Přidat značku pořadí písně" msgid "Add song year tag" msgstr "Přidat značku rok písně" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Přidat písně do Moje hudba, když je klepnuto na tlačítko Oblíbit" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Přidat proud..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Přidat do oblíbených Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Přidat do seznamu skladeb Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Přidat do Moje hudba" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Přidat do jiného seznamu skladeb" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Přidat do záložek" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Přidat do seznamu skladeb" @@ -565,6 +593,10 @@ msgstr "Přidat do seznamu skladeb" msgid "Add to the queue" msgstr "Přidat do řady" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Přidat uživatele/skupinu do záložek" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Přidat činnost wiimotedev" @@ -594,15 +626,15 @@ msgstr "Přidána dnes" msgid "Added within three months" msgstr "Přidána během tří měsíců" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Přidává se píseň do Moje hudba" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Přidává se píseň do oblíbených" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Pokročilé seskupování..." @@ -610,12 +642,12 @@ msgstr "Pokročilé seskupování..." msgid "After " msgstr "Po " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Po zkopírování..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -623,11 +655,11 @@ msgstr "Po zkopírování..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideální hlasitost pro všechny skladby)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -637,35 +669,36 @@ msgstr "Umělec alba" msgid "Album cover" msgstr "Obal alba" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informace o albu na jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Alba s obaly" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Alba bez obalů" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Všechny soubory (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Všechnu slávu hypnožábě!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Všechna alba" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Všichni umělci" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Všechny soubory (*)" @@ -674,19 +707,19 @@ msgstr "Všechny soubory (*)" msgid "All playlists (%1)" msgstr "Všechny seznamy skladeb (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Všichni překladatelé" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Všechny skladby" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Povolit klientu stahování hudby z tohoto počítače." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Povolit stahování" @@ -711,45 +744,45 @@ msgstr "Vždy zobrazit hlavní okno" msgid "Always start playing" msgstr "Vždy začít přehrávat" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Pro používání Spotify v Clementine je vyžadován přídavný modul. Chcete jej stáhnout a nainstalovat nyní?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Při nahrávání databáze iTunes nastala chyba" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Při zápisu údajů do '%1' se vyskytla chyba" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Vyskytla se neznámá chyba." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "A:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" -msgstr "Rozlobená" +msgstr "Rozlobený" #: ../bin/src/ui_songinfosettingspage.h:155 #: ../bin/src/ui_appearancesettingspage.h:271 msgid "Appearance" msgstr "Vzhled" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Přidat soubory/adresy do seznamu skladeb" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Přidat do současného seznamu skladeb" @@ -757,52 +790,47 @@ msgstr "Přidat do současného seznamu skladeb" msgid "Append to the playlist" msgstr "Přidat do seznamu skladeb" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Použít kompresi, aby se zabránilo ořezávání zvuku (clippingu)" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Opravdu chcete smazat nastavení \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Opravdu chcete smazat tento seznam skladeb?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Opravdu chcete nastavit statistiku této písně znovu?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Opravdu chcete ukládat statistiky písní do souboru písně u všech písní ve vaší sbírce?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Umělec" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Umělec" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Rádio umělce" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Značky umělce" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Iniciály umělce" @@ -810,9 +838,13 @@ msgstr "Iniciály umělce" msgid "Audio format" msgstr "Zvukový formát" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Zvukový výstup" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Ověření selhalo" @@ -820,7 +852,7 @@ msgstr "Ověření selhalo" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autoři" @@ -836,7 +868,7 @@ msgstr "Automatická aktualizace" msgid "Automatically open single categories in the library tree" msgstr "Automaticky otevřít jednotlivé skupiny ve stromu sbírky" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Dostupné" @@ -844,15 +876,15 @@ msgstr "Dostupné" msgid "Average bitrate" msgstr "Průměrný datový tok" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Průměrná velikost obrázku" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Záznamy BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -873,7 +905,7 @@ msgstr "Obrázek na pozadí" msgid "Background opacity" msgstr "Neprůhlednost pozadí" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Záloha databáze" @@ -881,11 +913,7 @@ msgstr "Záloha databáze" msgid "Balance" msgstr "Vyvážení" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Zakázat" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Proužkový analyzátor" @@ -905,18 +933,17 @@ msgstr "Chování" msgid "Best" msgstr "Nejlepší" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Životopis od %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Datový tok" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -924,7 +951,12 @@ msgstr "Datový tok" msgid "Bitrate" msgstr "Datový tok" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Datový tok" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blokový analyzátor" @@ -940,7 +972,7 @@ msgstr "Velikost rozmazání" msgid "Body" msgstr "Tělo" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Růstový analyzátor" @@ -954,11 +986,11 @@ msgstr "Box" msgid "Browse..." msgstr "Procházet…" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Délka vyrovnávací paměti" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Ukládá se do vyrovnávací paměti" @@ -970,43 +1002,66 @@ msgstr "Ale tyto zdroje jsou zakázány:" msgid "Buttons" msgstr "Tlačítka" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Ve výchozím nastavení Grooveshark třídí písně podle data přidání" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Podpora pro list CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Cesta k vyrovnávací paměti:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Ukládá se do vyrovnávací paměti" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "%1 se ukládá do vyrovnávací paměti" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Zrušit" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Jsou potřeba písmenka a číslice, co se potom musejí opisovat (captcha).\nZkuste se se svým prohlížečem přihlásit k Vk.com, abyste opravili tento problém." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Změnit obal" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Změnit velikost písma..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Změnit režim opakování" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Změnit klávesovou zkratku..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Změnit režim míchání" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Změnit jazyk" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1016,15 +1071,19 @@ msgstr "Změna nastavení jednokanálového přehrávání začne platit s dalš msgid "Check for new episodes" msgstr "Podívat se po nových dílech" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Zkontrolovat aktualizace" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Vyberte adresář pro vyrovnávací paměť Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Vyberte název pro svůj chytrý seznam skladeb" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Vybrat automaticky" @@ -1040,11 +1099,11 @@ msgstr "Vybrat písmo..." msgid "Choose from the list" msgstr "Vybrat ze seznamu" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Zvolte počet písní v seznamu skladeb a způsob jejich řazení." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Vyberte adresář pro stažení zvukového záznamu (podcastu)" @@ -1053,7 +1112,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Vyberte stránky, na kterých má Clementine hledat texty písní." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasická" @@ -1061,17 +1120,17 @@ msgstr "Klasická" msgid "Cleaning up" msgstr "Úklid" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Smazat" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Vyprázdnit seznam skladeb" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1084,8 +1143,8 @@ msgstr "Chyba Clemetine" msgid "Clementine Orange" msgstr "Mandarinka klementina" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Vizualizace Clementine" @@ -1107,9 +1166,9 @@ msgstr "Clementine umí přehrát hudbu nahranou vámi do Dropboxu" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine může přehrávat hudbu, kterou jste nahráli na Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine může přehrávat hudbu, kterou jste nahráli do Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine může přehrávat hudbu vámi nahranou na OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1122,20 +1181,13 @@ msgid "" "an account." msgstr "Clementine může seřídit váš seznam s odběry s dalšími počítači a programy na přehrávání zvukových záznamů (podcastů). Vytvořit účet." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine se nepodařilo nahrát žádné vizualizace z projectM. Ověřte, že jste Clementine nainstalovali správně." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine se nepodařilo natáhnout vaše předplatné, protože s vaším připojením jsou potíže. Přehrávané skladby se budou ukládat do vyrovnávací paměti a Last.fm budou poslány později." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Prohlížeč obrázků pro Clementine" @@ -1147,11 +1199,11 @@ msgstr "Clementine se pro tento soubor výsledky najít nepodařilo" msgid "Clementine will find music in:" msgstr "Clementine bude hledat hudbu v:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klepněte sem pro přidání nějaké hudby" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1161,7 +1213,10 @@ msgstr "Klepněte zde pro označení tohoto seznamu skladeb jako oblíbeného, t msgid "Click to toggle between remaining time and total time" msgstr "Klepněte pro přepnutí mezi zbývajícím časem a celkovým časem" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1176,19 +1231,19 @@ msgstr "Zavřít" msgid "Close playlist" msgstr "Zavřít seznam skladeb" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Zavřít vizualizaci" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Zavření tohoto okna zruší stahování." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Zavření tohoto okna zastaví hledání obalů alb." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klub" @@ -1196,73 +1251,78 @@ msgstr "Klub" msgid "Colors" msgstr "Barvy" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Čárkou oddělený seznam class:level, level je 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Poznámka" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Společenské rádio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Doplnit značky automaticky" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Doplnit značky automaticky..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Skladatel" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Nastavit %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Nastavit Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Nastavit Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Nastavit Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Nastavit klávesové zkratky" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Nastavit Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Nastavit Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 -msgid "Configure global search..." -msgstr "Nastavit celkové hledání:" +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Nastavit Vk.com..." -#: ui/mainwindow.cpp:483 +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 +msgid "Configure global search..." +msgstr "Nastavit celkové hledání..." + +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Nastavit sbírku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Nastavit záznamy..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Nastavit..." @@ -1270,11 +1330,11 @@ msgstr "Nastavit..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Připojit dálkový ovladač Wii pomocí činnosti zapnout/vypnout" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Připojit zařízení" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Připojuje se k Spotify" @@ -1284,12 +1344,16 @@ msgid "" "http://localhost:4040/" msgstr "Spojení odmítnuto serverem, prověřte adresu serveru (URL). Příklad: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Spojení vypršelo, prověřte adresu serveru (URL). Příklad: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Potíže se spojením nebo je zvuk vlastníkem zakázán" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konzole" @@ -1305,17 +1369,21 @@ msgstr "Převést všechnu hudbu" msgid "Convert any music that the device can't play" msgstr "Převést veškerou hudbu, kterou zařízení nedokáže přehrát" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Kopírovat sdílenou adresu (URL) do schránky" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopírovat do schránky" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Zkopírovat do zařízení..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Zkopírovat do sbírky..." @@ -1323,156 +1391,152 @@ msgstr "Zkopírovat do sbírky..." msgid "Copyright" msgstr "Autorské právo" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Nepodařilo se spojit se se Subsonicem, prověřte adresu serveru (URL). Příklad: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nepodařilo se vytvořit prvek GStreamer \"%1\" - ujistěte se, že máte nainstalovány všechny požadované přídavné moduly GStreamer" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Nepodařilo se vytvořit seznam skladeb" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nepodařilo se najít multiplexer pro \"%1\" - ujistěte se, že máte nainstalovány správné přídavné moduly GStreamer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Nepodařilo se najít kodér \"%1\" - ujistěte se, že máte nainstalovány správné přídavné moduly GStreamer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Rádio last.fm se nepodařilo načíst" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Nepodařilo se otevřít výstupní soubor %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Správce obalů" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Obal z vloženého obrázku" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Obal nahraný automaticky z %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Obal zrušený ručně" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Obal nenastaven" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Obal nastaven z %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Obaly od %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Vytvořit nový seznam skladeb Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Prolínání při automatické změně skladby" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Prolínání při ruční změně skladby" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1480,7 +1544,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Vlastní" @@ -1492,54 +1556,50 @@ msgstr "Vlastní obrázek:" msgid "Custom message settings" msgstr "Nastavení vlastní zprávy" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Vlastní rádio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Vlastní..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Cesta k DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Taneční hudba" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Zjištěno poškození databáze. Přečtěte si, prosím, https://code.google.com/p/clementine-player/wiki/DatabaseCorruption kvůli pokynům, kterak svou databázi obnovit" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum vytvoření" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum změny" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dny" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Výchozí" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Snížit hlasitost o 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Snížit hlasitost o procent" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Snížit hlasitost" @@ -1547,6 +1607,11 @@ msgstr "Snížit hlasitost" msgid "Default background image" msgstr "Výchozí obrázek na pozadí" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Výchozí zařízení na %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Výchozí" @@ -1555,30 +1620,30 @@ msgstr "Výchozí" msgid "Delay between visualizations" msgstr "Prodleva mezi vizualizacemi" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Smazat" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Smazat seznam skladeb Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Smazat stažená data" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Smazat soubory" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Smazat ze zařízení..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Smazat z disku..." @@ -1586,31 +1651,31 @@ msgstr "Smazat z disku..." msgid "Delete played episodes" msgstr "Smazat přehrané díly" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Smazat předvolbu" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Smazat chytrý seznam skladeb" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Smazat původní soubory" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Probíhá mazání souborů" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Odstranit vybrané skladby z řady" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Odstranit skladbu z řady" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Cíl" @@ -1619,7 +1684,7 @@ msgstr "Cíl" msgid "Details..." msgstr "Podrobnosti..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Zařízení" @@ -1631,15 +1696,15 @@ msgstr "Vlastnosti zařízení" msgid "Device name" msgstr "Název zařízení" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Vlastnosti zařízení..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Zařízení" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Dialog" @@ -1676,12 +1741,17 @@ msgstr "Zakázat délku" msgid "Disable moodbar generation" msgstr "Zakázat tvoření náladového proužku" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Zakázáno" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Zakázáno" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1691,15 +1761,15 @@ msgid "Discontinuous transmission" msgstr "Nesouvislý přenos" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Volby zobrazení" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Zobrazovat informace na obrazovce (OSD)" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Znovu kompletně prohledat sbírku" @@ -1711,27 +1781,27 @@ msgstr "Nepřevádět žádnou hudbu" msgid "Do not overwrite" msgstr "Nepřepisovat" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Neopakovat" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Nezobrazovat pod různými umělci" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Nemíchat" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Nezastavovat!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Darovat" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Klepnout dvakrát pro otevření" @@ -1739,12 +1809,13 @@ msgstr "Klepnout dvakrát pro otevření" msgid "Double clicking a song will..." msgstr "Dvojité klepnutí na píseň..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Stáhnout %n dílů" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Stáhnout složku" @@ -1760,7 +1831,7 @@ msgstr "Stáhnout členství" msgid "Download new episodes automatically" msgstr "Stáhnout nové díly automaticky" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Stahování zařazeno" @@ -1768,15 +1839,15 @@ msgstr "Stahování zařazeno" msgid "Download the Android app" msgstr "Stáhnout aplikaci pro Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Stáhnout toto album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Stáhnout toto album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Stáhnout tento díl" @@ -1784,7 +1855,7 @@ msgstr "Stáhnout tento díl" msgid "Download..." msgstr "Stáhnout..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Stahuje se (%1%)..." @@ -1793,23 +1864,23 @@ msgstr "Stahuje se (%1%)..." msgid "Downloading Icecast directory" msgstr "Stahuje se adresář Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Stahuje se katalog Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Stahuje se katalog Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Stahuje se přídavný modul Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Stahují se metadata" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Tažením přemístěte" @@ -1829,20 +1900,20 @@ msgstr "Doba trvání" msgid "Dynamic mode is on" msgstr "Je zapnut dynamický režim" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynamický náhodný výběr" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Upravit chytrý seznam skladeb..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Upravit značku \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Upravit značku..." @@ -1854,16 +1925,16 @@ msgstr "Upravit značky" msgid "Edit track information" msgstr "Upravit informace o skladbě" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Upravit informace o skladbě..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Upravit informace o skladbách..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Upravit..." @@ -1871,6 +1942,10 @@ msgstr "Upravit..." msgid "Enable Wii Remote support" msgstr "Povolit podporu dálkového ovládání Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Povolit automatické ukládání do vyrovnávací paměti" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Povolit ekvalizér" @@ -1885,7 +1960,7 @@ msgid "" "displayed in this order." msgstr "Povolit zdroje níže pro jejich zahrnutí ve výsledcích hledání. Výsledky budou zobrazeny v tomto pořadí" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Povolit/zakázat odesílání informací o přehrávání na Last.fm" @@ -1913,15 +1988,10 @@ msgstr "Zadejte adresu (URL) ke stažení obalu z internetu:" msgid "Enter a filename for exported covers (no extension):" msgstr "Zadejte souborový název pro uložené obaly (bez přípony):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Zadejte název tohoto seznamu skladeb" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Zadejte umělce nebo značku pro zahájení poslechu rádia Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1935,7 +2005,7 @@ msgstr "Zadejte hledané výrazy pro nalezení zvukových záznamů v obchodu iT msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Zadejte hledané výrazy pro nalezení zvukových záznamů na gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Zde zadejte hledané výrazy" @@ -1944,11 +2014,11 @@ msgstr "Zde zadejte hledané výrazy" msgid "Enter the URL of an internet radio stream:" msgstr "Zadejte adresu (URL) proudu internetového rádia:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Zadejte název složky" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Zadejte tuto adresu IP v programu pro spojení s Clementine." @@ -1956,21 +2026,22 @@ msgstr "Zadejte tuto adresu IP v programu pro spojení s Clementine." msgid "Entire collection" msgstr "Celá sbírka" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekvalizér" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Rovnocenné s --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Rovnocenné s --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Chyba" @@ -1978,38 +2049,38 @@ msgstr "Chyba" msgid "Error connecting MTP device" msgstr "Chyba při připojování zařízení MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Chyba při kopírování písní" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Chyba při mazání písní" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Chyba při stahování přídavného modulu Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Chyba při nahrávání %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Chyba při nahrávání seznamu skladeb di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Chyba při zpracovávání %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Chyba při nahrávání zvukového CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Přehrané skladby" @@ -2041,7 +2112,7 @@ msgstr "Každých 6 hodin" msgid "Every hour" msgstr "Každou hodinu" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Kromě mezistop na tom samém albu nebo v tom samém listu CUE" @@ -2053,7 +2124,7 @@ msgstr "Stávající obaly" msgid "Expand" msgstr "Rozbalit" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Vyprší %1" @@ -2074,36 +2145,36 @@ msgstr "Uložit stažené obaly" msgid "Export embedded covers" msgstr "Uložit vložené obaly" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Uložení dokončeno" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Uloženo %1 obalů z %2 (%3 přeskočeno)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2113,42 +2184,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Zeslabení při pozastavení/Zesílení při obnovení přehrávání" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Zeslabit při zastavování skladby" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Slábnutí" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Doba slábnutí" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Nepodařilo se číst z CD v mechanice" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Nepodařilo se natáhnout adresář" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Nepodařilo se natáhnout zvukové záznamy (podcasty)" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Nepodařilo se nahrát zvukový záznam (podcast)" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Nepodařilo se zpracovat XML pro tento kanál RSS" @@ -2157,11 +2228,11 @@ msgstr "Nepodařilo se zpracovat XML pro tento kanál RSS" msgid "Fast" msgstr "Rychlý" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Oblíbené" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Oblíbené skladby" @@ -2177,11 +2248,11 @@ msgstr "Stáhnout automaticky" msgid "Fetch completed" msgstr "Stahování dokončeno" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Natahuje se knihovna Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Chyba při stahování obalu" @@ -2189,7 +2260,7 @@ msgstr "Chyba při stahování obalu" msgid "File Format" msgstr "Souborový formát" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Přípona souboru" @@ -2197,19 +2268,23 @@ msgstr "Přípona souboru" msgid "File formats" msgstr "Formáty souborů" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Název souboru" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Název souboru bez cesty" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Vzor pro název souboru:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Velikost souboru" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2219,7 +2294,7 @@ msgstr "Typ souboru" msgid "Filename" msgstr "Název souboru" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Soubory" @@ -2227,15 +2302,19 @@ msgstr "Soubory" msgid "Files to transcode" msgstr "Soubory k překódování" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Nalézt ve sbírce písně odpovídající vámi zadaným kritériím." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Najít tohoto umělce" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Určení písně" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Dokončit" @@ -2243,7 +2322,7 @@ msgstr "Dokončit" msgid "First level" msgstr "První úroveň" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2259,12 +2338,12 @@ msgstr "Z licenčních důvodů je podpora pro Spotify v odděleném přídavné msgid "Force mono encoding" msgstr "Vynutit jednokanálové kódování" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Zapomenout zařízení" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2279,7 +2358,7 @@ msgstr "Zařízení bude odstraněno z tohoto seznamu. Po opětovném připojen #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2307,31 +2386,23 @@ msgstr "Počet snímků" msgid "Frames per buffer" msgstr "Snímků na vyrovnávací paměť" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Přátelé" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" -msgstr "Zmrzlá" +msgstr "Zmrzlý" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Plné basy" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Plné basy + výšky" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Plné výšky" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Zvukový systém GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Obecné" @@ -2339,30 +2410,30 @@ msgstr "Obecné" msgid "General settings" msgstr "Obecná nastavení" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žánr" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Získat adresu pro sdílení tohoto seznamu skladeb Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Získat adresu pro sdílení této písně Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Získávají se oblíbené písně Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Získávají se kanály" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Získávají se proudy" @@ -2374,11 +2445,11 @@ msgstr "Pojmenujte to:" msgid "Go" msgstr "Jít" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Jít na další kartu seznamu skladeb" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Jít na předchozí kartu seznamu skladeb" @@ -2386,7 +2457,7 @@ msgstr "Jít na předchozí kartu seznamu skladeb" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2396,7 +2467,7 @@ msgstr "Získáno %1 obalů z %2 (%3 nezískáno)" msgid "Grey out non existent songs in my playlists" msgstr "Nechat zešedivět neexistující písně v mých seznamech skladeb" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2404,15 +2475,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Chyba přihlášení Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Adresa Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Rádio Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Adresa písně Grooveshark" @@ -2420,44 +2491,44 @@ msgstr "Adresa písně Grooveshark" msgid "Group Library by..." msgstr "Seskupovat v hudební sbírce podle..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Seskupovat podle" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Seskupovat podle alba" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Seskupovat podle umělce" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Seskupovat podle umělce/alba" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Seskupovat podle umělce/roku - alba" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Seskupovat podle žánru/alba" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Seskupovat podle žánru/umělce/alba" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Seskupení" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "Stránka HTML neobsahuje žádný kanál RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Stavový kód HTTP 3xx přijat bez URL, ověřte nastavení serveru." @@ -2466,9 +2537,9 @@ msgstr "Stavový kód HTTP 3xx přijat bez URL, ověřte nastavení serveru." msgid "HTTP proxy" msgstr "Proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" -msgstr "Šťastná" +msgstr "Šťastný" #: ../bin/src/ui_deviceproperties.h:371 msgid "Hardware information" @@ -2482,25 +2553,25 @@ msgstr "Informace o vybavení jsou dostupné pouze tehdy, když je zařízení p msgid "High" msgstr "Vysoká" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Vysoký (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Vysoké (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Hostitel nenalezen, prověřte adresu serveru (URL). Příklad: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Hodiny" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnožába" @@ -2512,15 +2583,15 @@ msgstr "U Magnatune nemám účet" msgid "Icon" msgstr "Ikona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikony nahoře" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Určuje se píseň" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2530,24 +2601,24 @@ msgstr "Budete-li pokračovat, toto zařízení bude pracovat pomalu a písně n msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Pokud znáte adresu (URL) zvukového záznamu, zadejte ji níže a stiskněte Jít." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Nevšímat si 'The' ve jménech umělců" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Obrázky (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Obrázky (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Za %1 dny(ů)" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Za %1 týdny(ů)" @@ -2558,7 +2629,7 @@ msgid "" "time a song finishes." msgstr "V dynamickém režimu budou nové skladby vybrány a přidány do seznamu skladeb pokaždé, když píseň skončí." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Doručená pošta" @@ -2570,36 +2641,36 @@ msgstr "Zahrnout obal alba do oznámení" msgid "Include all songs" msgstr "Zahrnout všechny písně" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Nevhodná verze protokolu Subsonic REST. Klient se musí zaktualizovat." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Nevhodná verze protokolu Subsonic REST. Server se musí zaktualizovat." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Neúplné nastavení. Zajistěte, prosím, že jsou všechna pole vyplněna." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Zvýšit hlasitost o 4 %" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Zvýšit hlasitost o procent" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Zvýšit hlasitost" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Rejstříkování %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informace" @@ -2607,55 +2678,55 @@ msgstr "Informace" msgid "Input options" msgstr "Vstupní volby" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Vložit..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Nainstalován" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Ověření celistvosti" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internetoví poskytovatelé" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Neplatný klíč API" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Neplatný formát" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Neplatná metoda" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Neplatné parametry" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Zadán neplatný zdroj" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Neplatná služba" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Neplatný klíč sezení" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Neplatné uživatelské jméno a/nebo heslo" @@ -2663,42 +2734,42 @@ msgstr "Neplatné uživatelské jméno a/nebo heslo" msgid "Invert Selection" msgstr "Obrátit výběr" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Nejposlouchanější skladby na Jamendu" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Nejlepší skladby na Jamendu" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Nejlepší skladby měsíce na Jamendu" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Nejlepší skladby týdne na Jamendu" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Databáze Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Skočit na nyní přehrávanou skladbu" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Držet tlačítka po %1 sekundy..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Držet tlačítka po %1 sekund..." @@ -2707,11 +2778,12 @@ msgstr "Držet tlačítka po %1 sekund..." msgid "Keep running in the background when the window is closed" msgstr "Při zavření okna nechat běžet na pozadí" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Zachovat původní soubory" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Koťátka" @@ -2719,11 +2791,11 @@ msgstr "Koťátka" msgid "Language" msgstr "Jazyk" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Přenosný počítač/Sluchátka" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Velký sál" @@ -2731,58 +2803,24 @@ msgstr "Velký sál" msgid "Large album cover" msgstr "Velký obal alba" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Velký postranní panel" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Naposledy hrané" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "Naposledy hráno" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Vlastní rádio Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Hudební sbírka Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Rádio Mix Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Rádio sousedů na Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Rádio Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Podobný umělec Last.fm jako %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Rádio na Last.fm označené: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm je nyní zaneprázdněno, prosím, zkuste to za pár minut znovu" @@ -2790,11 +2828,11 @@ msgstr "Last.fm je nyní zaneprázdněno, prosím, zkuste to za pár minut znovu msgid "Last.fm password" msgstr "Heslo k Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Počty přehrání na Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Značky Last.fm" @@ -2802,28 +2840,24 @@ msgstr "Značky Last.fm" msgid "Last.fm username" msgstr "Uživatelské jméno k Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki pro Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Nejméně oblíbené skladby" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Pro výchozí nastavení ponechte prázdné. Příklady: \"/dev/dsp\", \"front\", atd." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Vlevo" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Délka" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Sbírka" @@ -2831,24 +2865,24 @@ msgstr "Sbírka" msgid "Library advanced grouping" msgstr "Pokročilé seskupování sbírky" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Zpráva o prohledání sbírky" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Hledání ve sbírce" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Omezení" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Poslouchejte písně Grooveshark na základě toho, co jste poslouchali předtím" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Živě" @@ -2860,15 +2894,15 @@ msgstr "Načíst" msgid "Load cover from URL" msgstr "Nahrát obal z adresy (URL)" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Nahrát obal z adresy (URL)..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Nahrát obal z disku" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Nahrát obal na disku..." @@ -2876,84 +2910,89 @@ msgstr "Nahrát obal na disku..." msgid "Load playlist" msgstr "Nahrát seznam skladeb" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Nahrát seznam skladeb..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Nahrává se rádio Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Nahrává se zařízení MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Nahrává se databáze iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Nahrává se chytrý seznam skladeb" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Nahrávají se písně" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Nahrává se proud" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Nahrávají se skladby" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Nahrávají se informace o skladbě" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Nahrává se..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Nahraje soubory/adresy (URL), nahradí současný seznam skladeb" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Přihlášení" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Přihlášení se nezdařilo" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Odhlásit se" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Dlouhodobý předpověďní profil" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Oblíbit" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Nízký (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Nízké (256x256)" @@ -2965,12 +3004,17 @@ msgstr "Nízkosložitostní profil" msgid "Lyrics" msgstr "Texty písní" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Texty písní z %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2982,15 +3026,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2998,7 +3042,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Stahování z Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Stahování z Magnatune bylo dokončeno" @@ -3006,15 +3050,20 @@ msgstr "Stahování z Magnatune bylo dokončeno" msgid "Main profile (MAIN)" msgstr "Hlavní profil" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Udělej to tak!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Udělej to tak!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Zajistit, že seznam skladeb bude dostupný, i když počítač nebude připojen k internetu" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Poškozená odpověď" @@ -3027,15 +3076,15 @@ msgstr "Ruční nastavení proxy" msgid "Manually" msgstr "Ručně" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Výrobce" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Označit jako poslechnuté" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Označit jako nové" @@ -3047,17 +3096,21 @@ msgstr "Porovnat všechny hledané výrazy (AND)" msgid "Match one or more search terms (OR)" msgstr "Porovnat jeden nebo více hledaných výrazů (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Nejvíce výsledků celkového hledání" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Nejvyšší datový tok" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Střední (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Střední (512x512)" @@ -3069,11 +3122,15 @@ msgstr "Druh členství" msgid "Minimum bitrate" msgstr "Nejnižší datový tok" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Nejmenší naplnění vyrovnávací paměti" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Chybí přednastavení projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3081,20 +3138,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Sledovat změny ve sbírce" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Jednokanálové přehrávání" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Měsíce" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Nálada" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Styl náladového proužku" @@ -3102,15 +3159,19 @@ msgstr "Styl náladového proužku" msgid "Moodbars" msgstr "Náladové proužky" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Více" + +#: library/library.cpp:84 msgid "Most played" msgstr "Nejvíce hráno" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Přípojný bod" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Přípojné body" @@ -3119,7 +3180,7 @@ msgstr "Přípojné body" msgid "Move down" msgstr "Posunout dolů" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Přesunout do sbírky..." @@ -3128,7 +3189,7 @@ msgstr "Přesunout do sbírky..." msgid "Move up" msgstr "Posunout nahoru" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Hudba" @@ -3136,56 +3197,32 @@ msgstr "Hudba" msgid "Music Library" msgstr "Hudební sbírka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Ztlumit" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Moje sbírka Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Moje rádio Mix Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Moje okolí Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Moje doporučované rádio Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Moje rádio Mix" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Moje hudba" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Moje okolí" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Mé rádio" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Má doporučení" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Název" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Název" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Volby pro pojmenování" @@ -3193,23 +3230,19 @@ msgstr "Volby pro pojmenování" msgid "Narrow band (NB)" msgstr "Úzké pásmo" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Sousedé" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Síťová proxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Síťové vzdálené ovládání" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nikdy" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nikdy nehráno" @@ -3218,21 +3251,21 @@ msgstr "Nikdy nehráno" msgid "Never start playing" msgstr "Nikdy nezačít přehrávání" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nová složka" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nový seznam skladeb" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nový chytrý seznam skladeb..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nové písně" @@ -3240,24 +3273,24 @@ msgstr "Nové písně" msgid "New tracks will be added automatically." msgstr "Nové písně budou přidány automaticky." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Nejnovější skladby" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Další" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Další skladba" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Příští týden" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Žádný analyzátor" @@ -3265,7 +3298,7 @@ msgstr "Žádný analyzátor" msgid "No background image" msgstr "Žádný obrázek na pozadí" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Žádné obaly k uložení" @@ -3273,7 +3306,7 @@ msgstr "Žádné obaly k uložení" msgid "No long blocks" msgstr "Žádné dlouhé bloky" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nebyly nalezeny žádné shody. Smažte obsah vyhledávacího pole, aby se znovu zobrazil celý seznam skladeb." @@ -3287,11 +3320,11 @@ msgstr "Žádné krátké bloky" msgid "None" msgstr "Žádná" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Žádná z vybraných písní nebyla vhodná ke zkopírování do zařízení" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normální" @@ -3299,43 +3332,47 @@ msgstr "Normální" msgid "Normal block type" msgstr "Běžný typ bloku" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Není dostupné během používání dynamického seznamu skladeb" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nepřipojeno" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nedostatek obsahu" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nedostatek nadšených obdivovatelů" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nedostatek členů" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nedostatek sousedů" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Nenainstalován" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Nepřihlášen" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Nepřipojeno - dvojitým klepnutím připojíte" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Nic nebylo nalezeno" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Druh oznámení" @@ -3348,36 +3385,41 @@ msgstr "Oznámení" msgid "Now Playing" msgstr "Právě se přehrává" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Náhled OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Vypnuto" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg FLAC" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Zapnuto" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3385,11 +3427,11 @@ msgid "" "192.168.x.x" msgstr "Přijmout spojení od klientů pouze v rozsazích IP:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Povolit spojení pouze z místní sítě" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Ukázat pouze první" @@ -3397,23 +3439,23 @@ msgstr "Ukázat pouze první" msgid "Opacity" msgstr "Neprůhlednost" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Otevřít %1 v prohlížeči" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Otevřít &zvukové CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Otevřít soubor OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Otevřít soubor OPML..." @@ -3421,30 +3463,35 @@ msgstr "Otevřít soubor OPML..." msgid "Open device" msgstr "Otevřít zařízení" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Otevřít soubor" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Otevřít v Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Otevřít v novém seznamu skladeb" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Otevřít v novém seznamu skladeb" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Otevřít v prohlížeči" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Otevřít..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operace se nezdařila" @@ -3464,23 +3511,23 @@ msgstr "Volby..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Uspořádat soubory" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Uspořádat soubory..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Uspořádávají se soubory" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Původní značky" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Další volby" @@ -3488,7 +3535,7 @@ msgstr "Další volby" msgid "Output" msgstr "Výstup" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Výstupní zařízení" @@ -3496,15 +3543,11 @@ msgstr "Výstupní zařízení" msgid "Output options" msgstr "Možnosti výstupu" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Výstupní modul" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Přepsat vše" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Přepsat existující soubory" @@ -3516,15 +3559,15 @@ msgstr "Přepsat pouze menší" msgid "Owner" msgstr "Vlastník" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Zpracovává se katalog pro Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Oslava" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3533,20 +3576,20 @@ msgstr "Oslava" msgid "Password" msgstr "Heslo" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pozastavit" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pozastavit přehrávání" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pozastaveno" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Účinkující" @@ -3555,34 +3598,22 @@ msgstr "Účinkující" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Prostý postranní panel" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Přehrát" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Přehrát umělce nebo značku" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Přehrát rádio umělce..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Počet přehrání" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Přehrát vlastní rádio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Přehrát, pokud je zastaveno, pozastavit, pokud je přehráváno" @@ -3591,45 +3622,42 @@ msgstr "Přehrát, pokud je zastaveno, pozastavit, pokud je přehráváno" msgid "Play if there is nothing already playing" msgstr "Hrát, pokud se již něco nepřehrává" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Přehrávat rádio se značkou..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Přehrát . skladbu v seznamu se skladbami" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Přehrát/Pozastavit" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Přehrávání" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Nastavení přehrávače" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Seznam skladeb" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Seznam skladeb dokončen" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Nastavení seznamu skladeb" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Typ seznamu skladeb" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Seznamy" @@ -3641,23 +3669,23 @@ msgstr "Zavřete, prosím, svůj prohlížeč a vraťte se do Clementine." msgid "Plugin status:" msgstr "Stav přídavného modulu:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Zvukové záznamy" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Oblíbené písně" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Oblíbené písně měsíce" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Oblíbené písně dnes" @@ -3666,22 +3694,23 @@ msgid "Popup duration" msgstr "Doba zobrazení oznámení" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Předzesílení" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Nastavení" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Nastavení..." @@ -3717,7 +3746,7 @@ msgstr "Stiskněte klávesovou zkratku, která se použije pro" msgid "Press a key" msgstr "Stiskněte klávesu" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Stiskněte klávesovou zkratku, která se použije pro %1..." @@ -3728,20 +3757,20 @@ msgstr "Možnosti vzhledu OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Náhled" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Předchozí" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Předchozí skladba" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Vypsat informaci o verzi" @@ -3749,21 +3778,25 @@ msgstr "Vypsat informaci o verzi" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Průběh" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Postup" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psychedelický" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Stisknout tlačítko Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Seřadit skladby náhodně" @@ -3771,7 +3804,12 @@ msgstr "Seřadit skladby náhodně" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Kvalita" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Kvalita" @@ -3779,28 +3817,33 @@ msgstr "Kvalita" msgid "Querying device..." msgstr "Dotazování se zařízení..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Správce řady" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Přidat vybrané skladby do řady" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Přidat skladbu do řady" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Rádio (shodná hlasitost pro všechny skladby)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Rádia" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Déšť" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Déšť" @@ -3808,48 +3851,48 @@ msgstr "Déšť" msgid "Random visualization" msgstr "Náhodná vizualizace" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Ohodnotit současnou píseň nulou hvězdiček" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Ohodnotit současnou píseň jednou hvězdičkou" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Ohodnotit současnou píseň dvěma hvězdičkami" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Ohodnotit současnou píseň třemi hvězdičkami" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Ohodnotit současnou píseň čtyřmi hvězdičkami" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Ohodnotit současnou píseň pěti hvězdičkami" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Hodnocení" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Opravdu zrušit?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Krajní mez na přesměrování překročena, ověřte nastavení serveru." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Obnovit" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Obnovit katalog" @@ -3857,19 +3900,15 @@ msgstr "Obnovit katalog" msgid "Refresh channels" msgstr "Obnovit kanály" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Obnovit seznam přátel" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Obnovit seznam stanic" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Obnovit proudy" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3881,8 +3920,8 @@ msgstr "Zapamatovat si výkyv vzdáleného ovládání Wii" msgid "Remember from last time" msgstr "Obnovit předchozí stav" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Odstranit" @@ -3890,7 +3929,7 @@ msgstr "Odstranit" msgid "Remove action" msgstr "Odstranit činnost" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Odstranit zdvojené ze seznamu skladeb" @@ -3898,73 +3937,77 @@ msgstr "Odstranit zdvojené ze seznamu skladeb" msgid "Remove folder" msgstr "Odstranit složku" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Odstranit z Moje hudba" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Odstranit ze záložek" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Odstranit z oblíbených" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Odstranit ze seznamu skladeb" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Odstranit seznam skladeb" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Odstranit seznamy skladeb" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Odstraňují se písně z Moje hudba" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Odstraňují se písně z oblíbených" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Přejmenovat \"%1\" seznam skladeb" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Přejmenovat seznam skladeb Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Přejmenovat seznam skladeb" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Přejmenovat seznam skladeb..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Přečíslovat skladby v tomto pořadí..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Opakovat" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Opakovat album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Opakovat seznam skladeb" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Opakovat skladbu" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Nahradit současný seznam skladeb" @@ -3973,15 +4016,15 @@ msgstr "Nahradit současný seznam skladeb" msgid "Replace the playlist" msgstr "Nahradit seznam skladeb" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Nahradí mezery podtržítky" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Zesílení přehrávaných skladeb" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Režim zesílení přehrávaných skladeb" @@ -3989,24 +4032,24 @@ msgstr "Režim zesílení přehrávaných skladeb" msgid "Repopulate" msgstr "Znovu zaplnit" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Vyžadovat ověřovací kód" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Obnovit výchozí" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Vynulovat počty přehrání" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Spustit znovu přehrávání skladby, nebo přehrávat předchozí skladbu, jestliže ještě neuběhlo osm sekund od začátku skladby." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Omezit na znaky &ASCII" @@ -4014,15 +4057,15 @@ msgstr "Omezit na znaky &ASCII" msgid "Resume playback on start" msgstr "Obnovit přehrávání při spuštění" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Získávají se písně Moje hudba z Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Získávají se oblíbené písně z Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Získávají se seznamy skladeb z Grooveshark" @@ -4042,11 +4085,11 @@ msgstr "Vytáhnout" msgid "Rip CD" msgstr "Vytáhnout skladby z CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Vytáhnout skladby ze zvukového CD..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4058,25 +4101,25 @@ msgstr "Spustit" msgid "SOCKS proxy" msgstr "Proxy SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Chyba inicializace SSL, ověřte nastavení serveru. Volba SSLv3 níže může některé potíže dočasně vyřešit." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Bezpečně odebrat zařízení" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Po dokončení kopírování bezpečně odebrat zařízení" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Vzorkovací kmitočet" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Vzorkovací frekvence" @@ -4084,27 +4127,33 @@ msgstr "Vzorkovací frekvence" msgid "Save .mood files in your music library" msgstr "Uložit soubory .mood v hudební sbírce" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Uložit obal alba" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Uložit obal na disk..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Uložit obrázek" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Uložit seznam skladeb" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Uložit seznam skladeb" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Uložit seznam skladeb..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Uložit předvolbu" @@ -4120,11 +4169,11 @@ msgstr "Uložit statistiku do souborových značek vždy, když je to možné" msgid "Save this stream in the Internet tab" msgstr "Uložit tento proud na kartě Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Ukládání statistiky písní do souborů písní" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Ukládají se skladby" @@ -4136,7 +4185,7 @@ msgstr "Profil škálovatelného vzorkovacího kmitočtu" msgid "Scale size" msgstr "Velikost měřítka" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Výsledek" @@ -4144,10 +4193,14 @@ msgstr "Výsledek" msgid "Scrobble tracks that I listen to" msgstr "Odesílat informace o přehrávaných skladbách." -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Hledat" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Hledat" @@ -4155,23 +4208,23 @@ msgstr "Hledat" msgid "Search Icecast stations" msgstr "Hledat stanice s Icecastem" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Hledat na Jamendu" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Hledat na Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Vyhledat Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Hledat automaticky" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Hledat obaly alb..." @@ -4191,21 +4244,21 @@ msgstr "Hledat na iTunes" msgid "Search mode" msgstr "Režim vyhledávání" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Možnosti vyhledávání" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Hledat výsledky" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Hledané výrazy" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Hledá se na Grooveshark" @@ -4213,27 +4266,27 @@ msgstr "Hledá se na Grooveshark" msgid "Second level" msgstr "Druhá úroveň" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Přetočit zpět" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Přetočit vpřed" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Přetočit v nyní přehrávané skladbě" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Skočit v nyní přehrávané skladbě na určité místo" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Vybrat vše" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Nevybrat žádnou skladbu" @@ -4241,7 +4294,7 @@ msgstr "Nevybrat žádnou skladbu" msgid "Select background color:" msgstr "Vybrat barvu pozadí:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Vybrat obrázek na pozadí" @@ -4257,7 +4310,7 @@ msgstr "Vybrat barvu popředí:" msgid "Select visualizations" msgstr "Vybrat vizualizace" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Vybrat vizualizace..." @@ -4265,7 +4318,7 @@ msgstr "Vybrat vizualizace..." msgid "Select..." msgstr "Vybrat..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Sériové číslo" @@ -4277,51 +4330,51 @@ msgstr "Adresa serveru (URL)" msgid "Server details" msgstr "Podrobnosti o serveru" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Služba není dostupná" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Nastavit %1 na \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Nastavit hlasitost na procent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Nastavit hodnotu pro vybrané skladby..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Nastavení" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Klávesová zkratka" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Klávesová zkratka pro %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Klávesová zkratka pro %1 již existuje" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Ukázat" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Ukázat OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Ukazovat zářící animaci nyní přehrávané skladby" @@ -4349,15 +4402,15 @@ msgstr "Ukazovat okno vyskakující z oznamovací části panelu" msgid "Show a pretty OSD" msgstr "Ukazovat OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Ukazovat nad stavovým řádkem" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Ukázat všechny písně" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Ukázat všechny písně" @@ -4369,32 +4422,36 @@ msgstr "Ukazovat obal ve sbírce" msgid "Show dividers" msgstr "Ukazovat oddělovače" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Ukázat v plné velikosti..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Ukázat skupiny ve výsledcích celkového hledání" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Ukázat v prohlížeči souborů..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Ukazovat ve sbírce..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Ukázat pod různými umělci" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Ukázat náladový proužek" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Ukázat pouze zdvojené" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Ukázat pouze neoznačené" @@ -4403,8 +4460,8 @@ msgid "Show search suggestions" msgstr "Ukázat návrhy hledání" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Ukazovat tlačítka \"Oblíbit\" a \"Zakázat\"" +msgid "Show the \"love\" button" +msgstr "Zobrazovat tlačítko \"Oblíbit\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4418,27 +4475,27 @@ msgstr "Ukazovat ikonu v oznamovací oblasti" msgid "Show which sources are enabled and disabled" msgstr "Ukázat, které zdroje jsou povoleny a které zakázány" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Ukázat/Skrýt" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Zamíchat" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Zamíchat alba" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Zamíchat vše" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Zamíchat seznam skladeb" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Zamíchat skladby na tomto albu" @@ -4454,7 +4511,7 @@ msgstr "Odhlásit" msgid "Signing in..." msgstr "Přihlašuje se..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Podobní umělci" @@ -4466,43 +4523,51 @@ msgstr "Velikost" msgid "Size:" msgstr "Velikost:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Předchozí skladba v seznamu skladeb" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Počet přeskočení" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Další skladba v seznamu skladeb" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Přeskočit vybrané skladby" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Přeskočit skladbu" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Malý obal alba" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Malý postranní panel" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Chytrý seznam skladeb" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Chytré seznamy skladeb" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Měkké" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft rock" @@ -4510,11 +4575,11 @@ msgstr "Soft rock" msgid "Song Information" msgstr "Informace o písni" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Píseň" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4534,15 +4599,23 @@ msgstr "Řadit podle žánru (podle oblíbenosti)" msgid "Sort by station name" msgstr "Řadit podle názvu stanice" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Řadit písně seznamu skladeb abecedně" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Řadit písně podle" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Řazení" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Zdroj" @@ -4558,7 +4631,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Chyba přihlášení k Spotify" @@ -4566,7 +4639,7 @@ msgstr "Chyba přihlášení k Spotify" msgid "Spotify plugin" msgstr "Přídavný modul Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Přídavný modul Spotify není nainstalován" @@ -4574,77 +4647,77 @@ msgstr "Přídavný modul Spotify není nainstalován" msgid "Standard" msgstr "Obvyklý" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "S hvězdičkou" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Začít vytahovat" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Přehrát současnou skladbu v seznamu skladeb" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Převést" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Začněte něco psát do vyhledávacího pole výše, abyste naplnil tento seznam pro hledání výsledků." -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Spouští se %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Spouští se..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stanice" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Zastavit" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Zastavit po" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Zastavit po této skladbě" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Zastavit přehrávání" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Zastavit po současné skladbě" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Zastavit přehrávání po skladbě: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Zastaveno" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Proud" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4654,7 +4727,7 @@ msgstr "Posílání dat ze serveru Subsonic vyžaduje mít po uplynutí třiceti msgid "Streaming membership" msgstr "bez stahování (pouze přehrávání)" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Odebírané seznamy skladeb" @@ -4662,7 +4735,7 @@ msgstr "Odebírané seznamy skladeb" msgid "Subscribers" msgstr "Předplatitelé" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4670,12 +4743,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Úspěch" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 úspěšně zapsán" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Navrhované značky" @@ -4684,13 +4757,13 @@ msgstr "Navrhované značky" msgid "Summary" msgstr "Shrnutí" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Nadmíru vysoké (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Hodně velké (2048x2048)" @@ -4702,43 +4775,35 @@ msgstr "Podporované formáty" msgid "Synchronize statistics to files now" msgstr "Seřídit statistiky se soubory nyní" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synchronizuje se schránka Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synchronizuje se seznam skladeb Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synchronizují se skladby označené hvězdičkou na Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Systémové barvy" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Karty nahoře" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Značka" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Stahování značek" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Rádio se značkou" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Cílový datový tok" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4746,11 +4811,11 @@ msgstr "Techno" msgid "Text options" msgstr "Volby pro text" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Poděkování" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Příkaz \"%1\" se nepodařilo provést." @@ -4759,17 +4824,12 @@ msgstr "Příkaz \"%1\" se nepodařilo provést." msgid "The album cover of the currently playing song" msgstr "Obal alba nyní přehrávané písně" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Adresář \"%1\" je neplatný" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Seznam skladeb \"%1\" je prázdný, nebo se jej nepodařilo nahrát." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Druhá hodnota musí být větší než první!" @@ -4777,40 +4837,40 @@ msgstr "Druhá hodnota musí být větší než první!" msgid "The site you requested does not exist!" msgstr "Požadovaná stránka neexistuje!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Požadovaná stránka není obrázek!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Lhůta na vyzkoušení serveru Subsonic uplynula. Dejte, prosím, dar, abyste dostali licenční klíč. Navštivte subsonic.org kvůli podrobnostem." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Verze Clementine, na kterou jste právě povýšili, vyžaduje z důvodu nových vlastností vypsaných níže úplné nové prohledání sbírky:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Na tomto albu jsou další písně" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Nastaly potíže se spojením s gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Při stahování metadat z Magnatune se vyskytly potíže." -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Nastaly potíže se zpracováním odpovědi od obchodu iTunes" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4822,13 +4882,13 @@ msgid "" "deleted:" msgstr "Při mazání některých písní nastaly potíže. Nepodařilo se smazat následující soubory:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Tyto soubory budou smazány ze zařízení. Opravdu chcete pokračovat?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4848,13 +4908,13 @@ msgstr "Tato nastavení se používají v dialogu pro překódování hudby a kd msgid "Third level" msgstr "Třetí úroveň" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Tento krok vytvoří databázi, která může být velká až 150 MB.\nPřesto chcete pokračovat?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Album není v požadovaném formátu dostupné" @@ -4868,11 +4928,11 @@ msgstr "Pro zjištění podporovaných formátů souborů je zařízení nejdř msgid "This device supports the following file formats:" msgstr "Toto zařízení podporuje následující formáty souborů:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Toto zařízení nebude pracovat správně" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Toto je zařízení MTP, ale Clementine byl sestaven bez podpory pro libmtp." @@ -4881,7 +4941,7 @@ msgstr "Toto je zařízení MTP, ale Clementine byl sestaven bez podpory pro lib msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Toto je zařízení iPod, ale Clementine byl sestaven bez podpory pro libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4891,33 +4951,33 @@ msgstr "Toto zařízení bylo připojeno poprvé. Clementine na něm nyní hled msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Tuto volbu lze změnit v nastavení Chování" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Tento proud je pouze pro předplatitele" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Tento typ zařízení není podporován: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Název" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Abyste začali poslouchat rádio Grooveshark, měli byste si nejprve poslechnout několik jiných písní Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Dnes" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Přepnout OSD" @@ -4925,27 +4985,27 @@ msgstr "Přepnout OSD" msgid "Toggle fullscreen" msgstr "Zapnout/Vypnout zobrazení na celou obrazovku" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Přepnout stav řady" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Přepnout odesílání informací o přehrávání" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Přepnout viditelnost hezkých oznámení na obrazovce (OSD)" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Zítra" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Příliš mnoho přesměrování" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Nejlepší skladby" @@ -4953,21 +5013,25 @@ msgstr "Nejlepší skladby" msgid "Total albums:" msgstr "Alb celkem:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Celkem přeneseno bajtů" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Celkem uskutečněno síťových požadavků" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Skladba" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Skladby" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Převést hudbu" @@ -4979,7 +5043,7 @@ msgstr "Záznam o převodu" msgid "Transcoding" msgstr "Překódování" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Převádí se %1 souborů s %2 procesy" @@ -4988,11 +5052,11 @@ msgstr "Převádí se %1 souborů s %2 procesy" msgid "Transcoding options" msgstr "Volby překódování" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbína" @@ -5000,72 +5064,72 @@ msgstr "Turbína" msgid "Turn off" msgstr "Vypnout" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Adresa (URL)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Heslo k Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Uživatelské jméno pro Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra široké pásmo" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Nepodařilo se stáhnout %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Neznámý" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Neznámý typ obsahu" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Neznámá chyba" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Odebrat obal" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Zrušit přeskočení vybraných skladeb" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Zrušit přeskočení skladby" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Zrušit odběr" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Připravované koncerty" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Aktualizovat" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Obnovit seznam skladeb Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Obnovit všechny zvukovové záznamy" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Obnovit změněné složky sbírky" @@ -5073,7 +5137,7 @@ msgstr "Obnovit změněné složky sbírky" msgid "Update the library when Clementine starts" msgstr "Při spuštění Clementine obnovit hudební sbírku" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Obnovit tento zvukový záznam" @@ -5081,21 +5145,21 @@ msgstr "Obnovit tento zvukový záznam" msgid "Updating" msgstr "Obnovuje se" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Obnovuje se %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Obnovuje se %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Obnovuje se hudební sbírka" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Zacházení" @@ -5103,11 +5167,11 @@ msgstr "Zacházení" msgid "Use Album Artist tag when available" msgstr "Použít značku Umělec alba, když je dostupná" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Používat klávesové zkratky GNOME" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Používat metadata pro zesílení přehrávaných skladeb, jsou-li dostupná" @@ -5127,7 +5191,7 @@ msgstr "Použít vlastní sadu barev:" msgid "Use a custom message for notifications" msgstr "Použít vlastní zprávu pro oznámení" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Použít síťové vzdálené ovládání" @@ -5167,20 +5231,20 @@ msgstr "Použít systémové nastavení proxy" msgid "Use volume normalisation" msgstr "Použít normalizaci hlasitosti" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Použito" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Uživatel %1 nemá účet Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Uživatelské rozhraní" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5202,12 +5266,12 @@ msgstr "Proměnlivý datový tok MP3" msgid "Variable bit rate" msgstr "Proměnlivý datový tok" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Různí umělci" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Verze %1" @@ -5220,7 +5284,7 @@ msgstr "Pohled" msgid "Visualization mode" msgstr "Režim vizualizací" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Vizualizace" @@ -5228,11 +5292,15 @@ msgstr "Vizualizace" msgid "Visualizations Settings" msgstr "Nastavení vizualizací" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Zjištění hlasové činnosti" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Hlasitost %1 %" @@ -5250,11 +5318,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Varovat při zavření karty se seznamem skladeb" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "WAV" @@ -5262,7 +5330,7 @@ msgstr "WAV" msgid "Website" msgstr "Stránky" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Týdny" @@ -5288,32 +5356,32 @@ msgstr "Proč nezkusit" msgid "Wide band (WB)" msgstr "Široké pásmo" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: zapnuto" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: připojeno" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: vážný stav baterie (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: vypnuto" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: odpojeno" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: nízká hladina baterie (%2%)" @@ -5334,7 +5402,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media Audio" @@ -5342,25 +5410,25 @@ msgstr "Windows Media Audio" msgid "Without cover:" msgstr "Bez obalu:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Chcete další písně na tomto albu přesunout do Různí umělci?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Chcete spustit toto úplné nové prohledání hned teď?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Zapsat všechny statistiky písní do souborů písní" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nesprávné uživatelské jméno nebo heslo." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5372,11 +5440,11 @@ msgstr "Rok" msgid "Year - Album" msgstr "Rok - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Roky" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Včera" @@ -5384,13 +5452,13 @@ msgstr "Včera" msgid "You are about to download the following albums" msgstr "Chystáte se stáhnout následující alba" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Chystáte se odstranit %1 seznamů skladeb z vašich oblíbených. Jste si jisti?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5400,12 +5468,12 @@ msgstr "Chystáte se odstranit seznam skladeb, který není součástí vašich msgid "You are not signed in." msgstr "Nejste přihlášen." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Jste přihlášen jako %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Jste přihlášen." @@ -5413,13 +5481,13 @@ msgstr "Jste přihlášen." msgid "You can change the way the songs in the library are organised." msgstr "Můžete změnit způsob uspořádání písní v hudební sbírce." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Můžete poslouchat zdarma bez účtu, ale členové Premium mohou poslouchat proudy o vyšší kvalitě a bez reklam." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5429,13 +5497,6 @@ msgstr "Poslouchat hudbu z Magnatune lze zdarma bez uživatelského účtu. Odst msgid "You can listen to background streams at the same time as other music." msgstr "Proudy na pozadí můžete poslouchat současně s jinou hudbou." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Statistické funkce Last.fm je možné používat zdarma. Poslouchání rádia je však přístupné pouze předplatitelům." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Clementine lze ovládat dálkovým ovladačem od Wii. Pro více informací navštivte wiki Clementine.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Nemáte účet Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Nemáte účet Spotify Premium." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Nemáte aktivní předplatné" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Nemusíte být přihlášen, abyste mohl hledat a poslouchat hudbu na SoundCloud. Musíte ale být přihlášen, abyste mohl přistupovat ke svým seznamům skladeb a ke svým proudům." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Byl jste odhlášen ze Spotify. zadejte, prosím, své heslo v dialogu pro nastavení znovu." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Byl jste odhlášen ze Spotify. zadejte, prosím, své heslo znovu." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Tato skladba patří mezi vaše oblíbené" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Aby bylo možné v Clementine používat globální klávesové zkratky, je nutné spustit Nastavení systému a povolit Clementine \"ovládat váš počítač\"." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5480,17 +5555,11 @@ msgstr "Aby bylo možné v Clementine používat globální klávesové zkratky, msgid "You will need to restart Clementine if you change the language." msgstr "Pokud změníte jazyk, budete muset Clementine spustit znovu." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Nebudete moci přehrávat rádiové stanice Last.fm, protože nejste předplatitelem Last.fm." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Vaše adresa IP:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Vaše přihlašovací údaje k Last.fm byly nesprávné" @@ -5498,42 +5567,43 @@ msgstr "Vaše přihlašovací údaje k Last.fm byly nesprávné" msgid "Your Magnatune credentials were incorrect" msgstr "Vaše přihlašovací údaje k Magnatune byly nesprávné" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Vaše hudební sbírka je prázdná!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Vaše rozhlasové proudy" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Váš počet přehrání: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Ve vašem systém chybí podpora pro OpenGL. Vizualizace jsou nedostupné." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Uživatelské jméno nebo heslo bylo nesprávné." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Vynulovat" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "přidat %n písní" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "po" @@ -5553,19 +5623,19 @@ msgstr "automaticky" msgid "before" msgstr "před" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "mezi" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "nejprve největší" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "obsahuje" @@ -5575,20 +5645,20 @@ msgstr "obsahuje" msgid "disabled" msgstr "zakázáno" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disk %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "neobsahuje" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "končí na" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "rovná se" @@ -5596,11 +5666,11 @@ msgstr "rovná se" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "Adresář pro gpodder.net" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "větší než" @@ -5608,54 +5678,55 @@ msgstr "větší než" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "Zařízení iPods a USB nyní na Windows nepracují. Promiňte!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "za posledních" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kb/s" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "méně než" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "nejprve nejdelší" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "Přesunout %n písní" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "nejprve nejnovější" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "nerovná se" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "ne za posledních" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "ne na" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "nejprve nejstarší" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "Na" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "volby" @@ -5667,36 +5738,37 @@ msgstr "nebo sejmout QRkód!" msgid "press enter" msgstr "stiskněte Enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "odstranit %n písní" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "nejprve nejkratší" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "Zamíchat písně" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "nejprve nejmenší" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "Třídit písně" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "začíná na" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "zastavit" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "skladba %1" diff --git a/src/translations/cy.po b/src/translations/cy.po index caeb57adf..fbc34d072 100644 --- a/src/translations/cy.po +++ b/src/translations/cy.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Welsh (http://www.transifex.com/projects/p/clementine/language/cy/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: cy\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -55,11 +55,16 @@ msgstr "" msgid " seconds" msgstr "" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -69,12 +74,12 @@ msgstr "" msgid "%1 days" msgstr "" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -139,18 +144,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "" @@ -162,24 +170,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -187,23 +195,23 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,23 +219,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -272,12 +276,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -452,11 +464,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -552,6 +580,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -581,15 +613,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -597,12 +629,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -661,19 +694,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +777,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,9 +825,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -807,7 +839,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -823,7 +855,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -831,15 +863,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +892,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +920,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1027,11 +1086,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1048,17 +1107,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1071,8 +1130,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1186,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1183,73 +1238,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1317,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1310,156 +1378,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1534,6 +1594,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1607,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,31 +1638,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1606,7 +1671,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1618,15 +1683,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1796,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,23 +1851,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1929,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2036,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2255,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2214,15 +2289,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,7 +2309,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2397,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2594,55 +2665,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2718,12 +2790,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2818,24 +2852,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2847,15 +2881,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3068,20 +3125,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,7 +3176,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3123,56 +3184,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3238,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3252,7 +3285,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3335,36 +3372,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3451,23 +3498,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3475,7 +3522,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3791,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,28 +3804,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3877,7 +3916,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,10 +4180,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4142,23 +4195,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4281,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4305,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4447,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,27 +4462,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4497,11 +4562,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4733,11 +4798,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5090,11 +5154,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5207,7 +5271,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,11 +5279,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5237,11 +5305,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5371,13 +5439,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5540,19 +5610,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,20 +5632,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/da.po b/src/translations/da.po index 859ec1627..54d355883 100644 --- a/src/translations/da.po +++ b/src/translations/da.po @@ -10,12 +10,12 @@ # Jens E. Jensen , 2012 # GoatRider1505 , 2013 # Morten Anton Bach Sjøgren , 2010 -# Peter Jespersen , 2012-2013 +# Peter Jespersen , 2012-2014 # tommycarstensen , 2012 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Danish (http://www.transifex.com/projects/p/clementine/language/da/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,7 +23,7 @@ msgstr "" "Language: da\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -48,9 +48,9 @@ msgstr "dage" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -63,11 +63,16 @@ msgstr " pt" msgid " seconds" msgstr " sekunder" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " sange" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -77,12 +82,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 dage" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dage siden" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 på %2" @@ -92,48 +97,48 @@ msgstr "%1 på %2" msgid "%1 playlists (%2)" msgstr "%1 playlister (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 valgt ud af" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 sang" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 sange" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 sange fundet" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 sange fundet (viser %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 numre" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 overført" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 andre lyttere" @@ -147,18 +152,21 @@ msgstr "%L1 totale afspilninger" msgid "%filename%" msgstr "%filnavn%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n fejlede" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n færdige" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n tilbage" @@ -170,24 +178,24 @@ msgstr "&Juster tekst" msgid "&Center" msgstr "&Centrer" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Brugervalgt" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extra" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Hjælp" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Skjul %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Skjul..." @@ -195,23 +203,23 @@ msgstr "Skjul..." msgid "&Left" msgstr "&Venstre" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Musik" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Ingen" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Spilleliste" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Afslut" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Gentagelsestilstand" @@ -219,23 +227,23 @@ msgstr "Gentagelsestilstand" msgid "&Right" msgstr "&Højre" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Tilfældig-tilstand" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Udvid søjler til at passe til vindue" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Værktøjer" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(forskelligt over flere sange)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...og alle Amarok-bidragsyderne" @@ -255,14 +263,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dag" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 nummer" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -272,7 +276,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 tilfældige numre" @@ -280,12 +284,6 @@ msgstr "50 tilfældige numre" msgid "Upgrade to Premium now" msgstr "Opgrader til Premium nu" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -296,6 +294,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -304,38 +313,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Variabler starter med %, for eksempel: %artist %album %title

\n\n

Hvis du angiver krøllede parenteser uden om en del af teksten, vil denne blive skjult hvis variablen er tom.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "En Grooveshark Anywhere konto er påkrævet" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "En Spotify Premium konto er påkrævet." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "En klient kan kun oprette forbindelse, hvis en korrekt kode var indsat." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "En smart spilleliste er en dynamisk liste af sange fra dit bibliotek. Der findes forskellige typer af smarte spillelister der tilbyder forskellige måder at udvælge sange på." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "En sang bliver inkluderet i playlisten hvis den matcher disse krav." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Å" @@ -355,36 +364,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "AL ÆRE TIL HYPNOTUDSEN" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Afbryd" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Om %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Om Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Om Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Kontodetaljer" @@ -396,11 +404,15 @@ msgstr "Kontodetaljer (Premium)" msgid "Action" msgstr "Handling" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktiver/deaktiver Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Tilføj Podcast" @@ -416,39 +428,39 @@ msgstr "Tilføj en nye linie hvis det er undstøttet af notifikations typen" msgid "Add action" msgstr "Tilføj handling" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Henter streams" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Tilføj mappe..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Tilføj fil" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Tilføj fil..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Tilføj fil til omkodning" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Tilføj mappe" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Tilføj mappe..." @@ -460,11 +472,11 @@ msgstr "Tilføj ny mappe..." msgid "Add podcast" msgstr "Tilføj podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Tilføj podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Tilføj søgeterm" @@ -528,6 +540,10 @@ msgstr "Tilføj antal overspringninger" msgid "Add song title tag" msgstr "Tilføj sangtitel-mærke" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Tilføj sangnummer-mærke" @@ -536,22 +552,34 @@ msgstr "Tilføj sangnummer-mærke" msgid "Add song year tag" msgstr "Tilføj sangår-mærke" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Genopfrisk streams" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Føj til Grooveshark favoritter" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Føj til Grooveshark afspilningsliste" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Tilføj til en anden playliste" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Føj til spilleliste" @@ -560,6 +588,10 @@ msgstr "Føj til spilleliste" msgid "Add to the queue" msgstr "Tilføj til køen" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Tilføj wiimotedev handling" @@ -589,15 +621,15 @@ msgstr "Tilføjet i dag" msgid "Added within three months" msgstr "Tilføjet indenfor de seneste tre måneder" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Tilføj sang til Min Musik" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Tilføj sang til favoritter" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Avanceret gruppering..." @@ -605,12 +637,12 @@ msgstr "Avanceret gruppering..." msgid "After " msgstr "Efter" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Efter kopiering..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -618,11 +650,11 @@ msgstr "Efter kopiering..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideel lydstyrke for alle spor)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -632,35 +664,36 @@ msgstr "Albummets kunstner" msgid "Album cover" msgstr "Pladeomslag" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Album info på jamendo.com" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albummer med omslag" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albummer uden omslag" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Alle Filer (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Al ære til Hypnotudsen!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Alle albummer" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Alle kunstnere" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Alle filer (*)" @@ -669,19 +702,19 @@ msgstr "Alle filer (*)" msgid "All playlists (%1)" msgstr "Alle spillelister (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Alle oversætterne" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Alle numre" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Tillad downloads" @@ -706,30 +739,30 @@ msgstr "Vis altid hovedvinduet" msgid "Always start playing" msgstr "Start altid afspilning" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "En yderligere tilføjelse er krævet for at bruge Spotify i Clementine. Ønsker du at hente og installere den nu?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "En fejl opstod under hentning af iTunes-databasen" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "En fejl opstod under skrivning af metadata til '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "En uspecifik fejl er opstået." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Og:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Vred" @@ -738,13 +771,13 @@ msgstr "Vred" msgid "Appearance" msgstr "Udseende" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Tilføj filer/URL'er til spillelisten" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Tilføj til nuværende playliste" @@ -752,52 +785,47 @@ msgstr "Tilføj til nuværende playliste" msgid "Append to the playlist" msgstr "Tilføj til playlisten" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Påfør kompression for at undgå klipping" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Vil du slettet \"%1\"-forudindstilling?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Er du sikker på at du vil slette denne spilleliste?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Er du sikker på, at du ønsker at nulstille denne sangs statistik?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Kunstner" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Kunstnerinfo" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Kunstnerradio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Kunstner-mærker" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Kunstners initial" @@ -805,9 +833,13 @@ msgstr "Kunstners initial" msgid "Audio format" msgstr "Lydformat" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentificering mislykkedes" @@ -815,7 +847,7 @@ msgstr "Autentificering mislykkedes" msgid "Author" msgstr "Forfatter" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Forfattere" @@ -831,7 +863,7 @@ msgstr "Automatisk opdatering" msgid "Automatically open single categories in the library tree" msgstr "Åbn automatisk enkelte kategorier i bibliotekstræet" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Til rådighed" @@ -839,15 +871,15 @@ msgstr "Til rådighed" msgid "Average bitrate" msgstr "Gns. bitrate" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Gns. billedstørrelse" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +900,7 @@ msgstr "Baggrundsbillede" msgid "Background opacity" msgstr "Baggrundsgennemsigtighed" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Sikkerhedskopierer database" @@ -876,11 +908,7 @@ msgstr "Sikkerhedskopierer database" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Bandlys" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Bar analytiker" @@ -900,18 +928,17 @@ msgstr "Adfærd" msgid "Best" msgstr "Bedst" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografi fra %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -919,7 +946,12 @@ msgstr "Bitrate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blok-analyzer" @@ -935,7 +967,7 @@ msgstr "" msgid "Body" msgstr "Krop" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom-analyzer" @@ -949,11 +981,11 @@ msgstr "Box" msgid "Browse..." msgstr "Gennemse..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Buffering" @@ -965,43 +997,66 @@ msgstr "Men disse kilder er slået fra:" msgid "Buttons" msgstr "Knapper" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Understøttelse af indeksark" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Annuller" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Skift omslag" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Skift størrelse på skrifttype" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Ændr gentagelsestilstand" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Ændrer smutvej..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Ændr blandingstilstand" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Skift sprog" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1011,15 +1066,19 @@ msgstr "Ændring af mono afspilningspræference vil først træde i kraft for de msgid "Check for new episodes" msgstr "Søg efter nye episoder" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Tjek efter opdateringer..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Vælg et navn til den smarte spilleliste" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Vælg automatisk" @@ -1035,11 +1094,11 @@ msgstr "Vælg skrifttype..." msgid "Choose from the list" msgstr "Vælg fra listen" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Vælg hvordan spillelisten er sorteret og hvor mange sange den vil indeholde." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Vælg podcast download bibliotek" @@ -1048,7 +1107,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Velg hjemmesiderne du vil have at Clementine skal bruge når der søges efter sangtekster." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klassisk" @@ -1056,17 +1115,17 @@ msgstr "Klassisk" msgid "Cleaning up" msgstr "Rydder op" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Ryd" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Ryd spilleliste" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1079,8 +1138,8 @@ msgstr "Clementine Fejl" msgid "Clementine Orange" msgstr "Klementin orange" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine visualisering" @@ -1102,9 +1161,9 @@ msgstr "Clementine kan afspille musik, som du har uploadet til Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine kan afspille musik, som du har uploadet til Google Drev" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine kan afspille musik, som du har uploadet til Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1117,20 +1176,13 @@ msgid "" "an account." msgstr "Clementine kan synkronisere dine abonnementslister med dine andre computere og podcast klienter. Opret en konto." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine kunne ikke indlæse projectM visualiseringer. Tjek at Clementine er korrekt installeret." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine kunne ikke hente din abonnementsstatus på grund af problemer med forbindelsen. Information om afspillede spor bliver cached og sendt til Last.fm senere." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine billedfremviser" @@ -1142,11 +1194,11 @@ msgstr "Clementine kunne ikke finde resultater for denne fil" msgid "Clementine will find music in:" msgstr "Clementine vil finde musik i:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klik her for at tilføje musik" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1156,7 +1208,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Klik for at skifte mellem tilbageværende tid og total tid" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1171,19 +1226,19 @@ msgstr "Luk" msgid "Close playlist" msgstr "Luk spilleliste" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Luk visualisering" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Lukning af dette vindue will aflyse hentningen." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Lukning af dette vindue vil stoppe søgen efter album omslag." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1191,73 +1246,78 @@ msgstr "Club" msgid "Colors" msgstr "Farver" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma-separeret liste af klasse:level, level er 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Fuldfør mærker automatisk" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Fuldfør mærker automatisk..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Komponist" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Konfigurer %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Indstil Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Konfigurér Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Konfigurér Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Konfigurér Genveje" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Indstil Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Konfigurér Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Indstil Global søgning ..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Indstil bibliotek..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Konfigurer podcasts ..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Indstil..." @@ -1265,11 +1325,11 @@ msgstr "Indstil..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Forbind til Wii Remotes med aktiver/deaktiver handling" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Forbind til enhed" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Forbinder til Spotify" @@ -1279,12 +1339,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsol" @@ -1300,17 +1364,21 @@ msgstr "Konverter al musik" msgid "Convert any music that the device can't play" msgstr "Konverter musik som enheden ikke kan afspille" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopier til udklipsholder" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Koper til enhed..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopiér til bibliotek..." @@ -1318,156 +1386,152 @@ msgstr "Kopiér til bibliotek..." msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Kunne ikke oprette forbindelse til Subsonic, check server URL'en. Eksempel: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Kunne ikke oprette GStreamer elementet \\\"%1\\\" - sørg for at du har alle de nødvendige GStreamer udvidelsesmoduler installeret" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kunne ikke finde muxer for %1, tjek at du har de rigtige GStreamer udvidelsesmoduler installeret" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Kunne ikke finde koder for %1, tjek at du har de rigtige GStreamer udvidelsesmoduler installeret" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Kunne ikke indlæse Last.fm-radiokanalen" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Kunne ikke åbne output fil %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Omslagshåndtering" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Omslag fra indlejret billede" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Omslag blev indlæst automatisk fra %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Omslag manuelt fjernet" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Omslag er ikke angivet" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Omslag angivet fra %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Omslag fra %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Opret ny Grooveshark afspilningsliste" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Fade over når der automatisk skiftes spor" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Fade over når der manuelt skiftes spor" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1475,7 +1539,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Selvvalgt" @@ -1487,54 +1551,50 @@ msgstr "Brugerdefineret billede:" msgid "Custom message settings" msgstr "Selvvalgte meddelelsesindstillinger" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Selvvalgt radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Tilpasset..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus sti" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Database korruption opdaget. Læs https://code.google.com/p/clementine-player/wiki/DatabaseCorruption for at få instruktioner om, hvordan du gendanner din database" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Oprettelsesdato" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Ændringsdato" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dage" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Standard" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Sænk lydstyrken med 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Nedsæt lydstyrken med procent" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Dæmp lydstyrke" @@ -1542,6 +1602,11 @@ msgstr "Dæmp lydstyrke" msgid "Default background image" msgstr "Standard baggrundsbillede" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Standarder" @@ -1550,30 +1615,30 @@ msgstr "Standarder" msgid "Delay between visualizations" msgstr "Pause mellem visualiseringer" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Slet" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Slet Grooveshark afspilningsliste" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Sletter hentet data" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Slet filer" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Slet fra enhed..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Slet fra disk..." @@ -1581,31 +1646,31 @@ msgstr "Slet fra disk..." msgid "Delete played episodes" msgstr "Slet afspillede episoder" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Slet forudindstilling" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Slet smart spilleliste" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Slet de originale filer" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Sletter filer" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Fjern valgte spor fra afspilningskøen" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Fjern sporet fra afspilningskøen" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destination" @@ -1614,7 +1679,7 @@ msgstr "Destination" msgid "Details..." msgstr "Detaljer..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Enhed" @@ -1626,15 +1691,15 @@ msgstr "Enhedsindstillinger" msgid "Device name" msgstr "Enhedsnavn" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Enhedsindstillinger..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Enhed" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1671,12 +1736,17 @@ msgstr "Slå varighed fra" msgid "Disable moodbar generation" msgstr "Deaktiver generering af stemningslinje" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Deaktiveret" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1686,15 +1756,15 @@ msgid "Discontinuous transmission" msgstr "Afbrudt transmission" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Visningsegenskaber" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Vis on-screen-display" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Genindlæs hele biblioteket" @@ -1706,27 +1776,27 @@ msgstr "Konverter ikke noget musik" msgid "Do not overwrite" msgstr "Overskriv ikke" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Gentag ikke" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Vis ikke under diverse kunstnere" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Bland ikke" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Stop ikke" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Bidrag" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dobbeltklik for at åbne" @@ -1734,12 +1804,13 @@ msgstr "Dobbeltklik for at åbne" msgid "Double clicking a song will..." msgstr "Når jeg dobbeltklikker på en sang..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Hent %n episoder" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Hent bibliotek" @@ -1755,7 +1826,7 @@ msgstr "Hent medlemskab" msgid "Download new episodes automatically" msgstr "Hent automatisk nye episoder" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Hent filer i downloadkø" @@ -1763,15 +1834,15 @@ msgstr "Hent filer i downloadkø" msgid "Download the Android app" msgstr "Hent Android app'en" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Hent dette album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Hent dette album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Hent denne episode" @@ -1779,7 +1850,7 @@ msgstr "Hent denne episode" msgid "Download..." msgstr "Henter..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Henter (%1%)..." @@ -1788,23 +1859,23 @@ msgstr "Henter (%1%)..." msgid "Downloading Icecast directory" msgstr "Henter Icecast bibliotek" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Henter Jamendo katalog" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Henter Magnatune katalog" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Henter Spotify plugin" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Hent metadata" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Træk for at skifte position" @@ -1824,20 +1895,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Dynamisk tilstand er aktiveret" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynamisk tilfældig mix" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Rediger smart spilleliste..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Redigér mærke..." @@ -1849,16 +1920,16 @@ msgstr "Rediger mærker" msgid "Edit track information" msgstr "Redigér sporinformation" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Redigér sporinformation..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Rediger information om sporet" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Rediger..." @@ -1866,6 +1937,10 @@ msgstr "Rediger..." msgid "Enable Wii Remote support" msgstr "Aktiver støtte for Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Aktivér equalizer" @@ -1880,7 +1955,7 @@ msgid "" "displayed in this order." msgstr "Aktiver kilder nedenfor til at medtage dem i søgeresultaterne. Resultaterne vil blive vist i denne rækkefølge." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Aktiver/deaktiver Last.fm scrobbling" @@ -1908,15 +1983,10 @@ msgstr "Indtast en URL for at downloade omslag fra internettet:" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Giv denne spilleliste et nyt navn" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Indtast en kunstner eller et mærke for a begynde at lytte til Last.fm-radio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1930,7 +2000,7 @@ msgstr "Indtast søgeord nedenfor for at finde podcasts i iTunes Store" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Indtast søgeord nedenfor for at finde podcasts på gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Indtast søgeudtryk her" @@ -1939,11 +2009,11 @@ msgstr "Indtast søgeudtryk her" msgid "Enter the URL of an internet radio stream:" msgstr "Indtast URL'en til en internetradiostream:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Indtast foldernavn" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Indtast denne IP i app'en for at forbinde til Clementine." @@ -1951,21 +2021,22 @@ msgstr "Indtast denne IP i app'en for at forbinde til Clementine." msgid "Entire collection" msgstr "Hele samlingen" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizer" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Svarende til --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Svarende til --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Fejl" @@ -1973,38 +2044,38 @@ msgstr "Fejl" msgid "Error connecting MTP device" msgstr "Kunne ikke koble til MTP-enhed" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Fejl ved kopiering af sang" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Fejl ved sletning af sang" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Fejl ved hentning af Spotify plugin" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Kunne ikke indlæse %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Kunne ikke indlæse spilleliste fra di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Kunne ikke behandle %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Kunne ikke indlæse lyd-CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Nogensinde afspillet" @@ -2036,7 +2107,7 @@ msgstr "Hver 6 time" msgid "Every hour" msgstr "Hver time" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Undtaget mellem spor fra samme album eller CUE-fil" @@ -2048,7 +2119,7 @@ msgstr "" msgid "Expand" msgstr "Udvid" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Udløber den %1" @@ -2069,36 +2140,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2108,42 +2179,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Fade ud ved pause/ fade ind ved genstart" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Fade ud når et spor stoppes" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Fading" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Varighed af fade" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Kunne ikke hente bibliotek" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Kunne ikke hente podcasts" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Kunne ikke indlæse podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Kunne fortolke XML til dette RSS-feed" @@ -2152,11 +2223,11 @@ msgstr "Kunne fortolke XML til dette RSS-feed" msgid "Fast" msgstr "Hurtig" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoritter" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Favoritspor" @@ -2172,11 +2243,11 @@ msgstr "Hent automatisk" msgid "Fetch completed" msgstr "Hentning fuldført" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Henter Subsonic bibliotek" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Kunne ikke hente omslag" @@ -2184,7 +2255,7 @@ msgstr "Kunne ikke hente omslag" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "File suffiks" @@ -2192,19 +2263,23 @@ msgstr "File suffiks" msgid "File formats" msgstr "Filformater" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Filnavn" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Filnavn (uden sti)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Filstørrelse" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2214,7 +2289,7 @@ msgstr "Filtype" msgid "Filename" msgstr "Filnavn" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Filer" @@ -2222,15 +2297,19 @@ msgstr "Filer" msgid "Files to transcode" msgstr "Filer som skal omkodes" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Find sange i biblioteket, baseret på de kriterier du opgiver." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Giver sangen fingeraftryk" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Afslut" @@ -2238,7 +2317,7 @@ msgstr "Afslut" msgid "First level" msgstr "Første niveau" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2254,12 +2333,12 @@ msgstr "På grund af licenshensyn er Spotify-understøttelsen en separat udvidel msgid "Force mono encoding" msgstr "Gennemtving monolyd-indkodning" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Glem enhed" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2274,7 +2353,7 @@ msgstr "Hvis du glemmer enheden, forsvinder den fra denne liste, og Clementine m #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2302,31 +2381,23 @@ msgstr "Billedrate" msgid "Frames per buffer" msgstr "Billeder per buffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Venner" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Frosset" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Fuld bas" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Fuld bas + diskant" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Fuld diskant" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer lydmotor" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Generelt" @@ -2334,30 +2405,30 @@ msgstr "Generelt" msgid "General settings" msgstr "Generelle indstillinger" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Få en webadresse til at dele denne Grooveshark afspilningsliste" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Få en webadresse til at dele denne Grooveshark sang" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Henter populære Grooveshark sange" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Henter kanaler" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Henter strømme" @@ -2369,11 +2440,11 @@ msgstr "Giv det et navn:" msgid "Go" msgstr "Start" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Gå til næste faneblad på spillelisten" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Gå til forrige faneblad på spillelisten" @@ -2381,7 +2452,7 @@ msgstr "Gå til forrige faneblad på spillelisten" msgid "Google Drive" msgstr "Google Drev" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2391,7 +2462,7 @@ msgstr "Hentede %1 af %2 omslag (%3 mislykkedes)" msgid "Grey out non existent songs in my playlists" msgstr "Giv ikke-eksisterende sange gråtone i mine spillelister" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2399,15 +2470,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Kunne ikke logge ind på Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Webadresse til Grooveshark afspilningsliste" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL til Grooveshark sange" @@ -2415,44 +2486,44 @@ msgstr "URL til Grooveshark sange" msgid "Group Library by..." msgstr "Gruppér bibliotek efter..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupper efter" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Gruppér efter album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Gruppér efter kunstner" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Gruppér efter kunstner/album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Gruppér efter kunstner/år - album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Gruppér efter genre/album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Gruppér efter genre/kunstner/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppering " -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML-side indeholder ingen RSS-feeds" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2461,7 +2532,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP proxy" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Glad" @@ -2477,25 +2548,25 @@ msgstr "Hardwareinformation er kun tilgængelig når enheden er tilsluttet." msgid "High" msgstr "Høj" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Høj (%1 billeder/sekund)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Høj (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Timer" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotudsen" @@ -2507,15 +2578,15 @@ msgstr "Jeg har ikke nogen Magnatune-konto" msgid "Icon" msgstr "Ikon" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikoner på toppen" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identificerer sang" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2525,24 +2596,24 @@ msgstr "Hvis du fortsætter, vil enheden blive langsom og du kan måske ikke afs msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Hvis du kender URL-adressen på en podcast, skal du indtaste det nedenfor og tryk Start." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorer \\\"The\\\" i kunstnernavn" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Billeder (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Billeder (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Om %1 dage" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Om %1 uger" @@ -2553,7 +2624,7 @@ msgid "" "time a song finishes." msgstr "I dynamisk tilstand vil nye spor blive valgt og lagt til spillelisten hver gang en sang slutter." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Indboks" @@ -2565,36 +2636,36 @@ msgstr "Inkludér albumkunst i bekendtgørelsen" msgid "Include all songs" msgstr "Inkluder alle sange" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Inkompatibel Subsonic REST protokol version. Klienten skal opgraderes." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Inkompatibel Subsonic REST protokol version. Serveren skal opgraderes." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Forøg lydstyrken med 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Skru op for lyden med procent" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Forøg lydstyrke" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indekserer %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Information" @@ -2602,55 +2673,55 @@ msgstr "Information" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Indsæt..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Installeret" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Integritetskontrol" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internet udbydere" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Ugyldig API-nøgle" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Ugyldig format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Ugyldig metode" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Ugyldige parametre" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Ugyldig resource angivet" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Ugyldig tjeneste" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Ugyldig sessionsnøgle" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Ugyldigt brugernavn og/eller adgangskode" @@ -2658,42 +2729,42 @@ msgstr "Ugyldigt brugernavn og/eller adgangskode" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Mest afspillede på Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Favoritlisten på Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Månedens favoritter på Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Ugens favoritter på Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo database" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Gå til sporet som afspilles nu" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Hold knappen nede i %1 sekund(er)..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Hold knappen nede i %1 sekund(er)..." @@ -2702,23 +2773,24 @@ msgstr "Hold knappen nede i %1 sekund(er)..." msgid "Keep running in the background when the window is closed" msgstr "Fortsæt i baggrunden selv om du lukker vinduet" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Behold de originale filer" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Killinger" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Sprog" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Bærbar/hovedtelefoner" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Stor sal" @@ -2726,58 +2798,24 @@ msgstr "Stor sal" msgid "Large album cover" msgstr "Stort omslag" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Stort sidepanel" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Sidst afspillet" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Selvvalgt radio på Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm bibliotek - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm mixradio: %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm naboradio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm-radiokanal - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm kunstnere der minder om %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm mærkeradio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm er optaget nu, prøv igen om et par minutter" @@ -2785,11 +2823,11 @@ msgstr "Last.fm er optaget nu, prøv igen om et par minutter" msgid "Last.fm password" msgstr "Last.fm-adgangskode" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Antal afspilninger fra Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm-mærker " @@ -2797,28 +2835,24 @@ msgstr "Last.fm-mærker " msgid "Last.fm username" msgstr "Last.fm-brugernavn" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Spor med færreste stemmer" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Lad stå blank for standard. Eksempler: \"/dev/dsp\", \"front\", osv." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Venstre" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Længde" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliotek" @@ -2826,24 +2860,24 @@ msgstr "Bibliotek" msgid "Library advanced grouping" msgstr "Avanceret bibliotektsgruppering" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Meddelelse om genindlæsning af biblioteket" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Søg i biblioteket" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Grænser" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Lyt til sange på Grooveshark, baseret på din lyttehistorik" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2855,15 +2889,15 @@ msgstr "Hent" msgid "Load cover from URL" msgstr "Hent omslag fra URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Hent omslag fra URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Hent omslag fra disk" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Hent omslag fra disk" @@ -2871,84 +2905,89 @@ msgstr "Hent omslag fra disk" msgid "Load playlist" msgstr "Åbn spilleliste" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Åbn spilleliste..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Indlæser Last.fm-radio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Åbner MTP-enhed" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Åbner iPod-database" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Åbner smart spilleliste" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Åbner sange" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Indlæser stream" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Åbner spor" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Henter information om spor" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Åbner..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Indlæser filer/URL'er og erstatter nuværende spilleliste" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Log ind" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Login mislykkedes" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Long term prediction-profil (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Elsker" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Lav (%1 billeder/sekund)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Lav (256x256)" @@ -2960,12 +2999,17 @@ msgstr "Low complexity-profil (LC)" msgid "Lyrics" msgstr "Sangtekster" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Sangtekster fra %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2977,15 +3021,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2993,7 +3037,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Download fra Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Download fra Magnatune fuldført" @@ -3001,15 +3045,20 @@ msgstr "Download fra Magnatune fuldført" msgid "Main profile (MAIN)" msgstr "Main profile (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Sæt igang!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Gør spillelisten tilgængelig offline" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Misdannet svar" @@ -3022,15 +3071,15 @@ msgstr "Manuel proxy-indstilling" msgid "Manually" msgstr "Manuelt" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabrikant" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Marker som aflyttet" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Marker som ny" @@ -3042,17 +3091,21 @@ msgstr "Match alle søgeord (OG)" msgid "Match one or more search terms (OR)" msgstr "Match på hvilket som helst søgeord (ELLER)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Højeste bitrate" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Medium (%1 billeder/sekund)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Medium (512x512)" @@ -3064,11 +3117,15 @@ msgstr "Medlemskabstype" msgid "Minimum bitrate" msgstr "Minimal bitrate" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Manglende projectM-forvalg" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3076,20 +3133,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Overvåg ændringer i biblioteket" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono afspilning" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Måneder" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Humør" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Stemningslinje stil" @@ -3097,15 +3154,19 @@ msgstr "Stemningslinje stil" msgid "Moodbars" msgstr "Stemningslinier" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Mest afspillede" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Monteringspunkt" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Monteringspunkter" @@ -3114,7 +3175,7 @@ msgstr "Monteringspunkter" msgid "Move down" msgstr "Flyt ned" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Flyt til bibliotek..." @@ -3123,7 +3184,7 @@ msgstr "Flyt til bibliotek..." msgid "Move up" msgstr "Flyt op" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musik" @@ -3131,56 +3192,32 @@ msgstr "Musik" msgid "Music Library" msgstr "Musikbibliotek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Slå lyden fra" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Mit Last.fm-bibliotek" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Min Last.fm mix radio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Mit Last.fm-nabolag" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Min anbefalede radio på Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Min mix radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Min Musik" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mit nabolag" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Min radiokanal" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mine anbefalinger" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Navn" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Navnevalg" @@ -3188,23 +3225,19 @@ msgstr "Navnevalg" msgid "Narrow band (NB)" msgstr "Smalbånd (SB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Naboer" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Netværksproxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Netværks Remote" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Aldrig" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Aldrig afspillet" @@ -3213,21 +3246,21 @@ msgstr "Aldrig afspillet" msgid "Never start playing" msgstr "Begynd aldrig afspilning" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Ny folder" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Ny spilleliste" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Ny smart spilleliste..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nye sange" @@ -3235,24 +3268,24 @@ msgstr "Nye sange" msgid "New tracks will be added automatically." msgstr "Nye spor vil automatisk blive tilføjet." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Nyeste spor" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Næste" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Næste spor" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Næste uge" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Ingen analyzer" @@ -3260,7 +3293,7 @@ msgstr "Ingen analyzer" msgid "No background image" msgstr "Intet baggrundsbillede" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3268,7 +3301,7 @@ msgstr "" msgid "No long blocks" msgstr "Ingen lange blokke" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Ingen matchende fundet. Ryd søgefeltet for at vise hele spillelisten igen." @@ -3282,11 +3315,11 @@ msgstr "Ingen korte blokke" msgid "None" msgstr "Ingen" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Kunne ikke kopiere nogen af de valgte sange til enheden" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Almindelig" @@ -3294,43 +3327,47 @@ msgstr "Almindelig" msgid "Normal block type" msgstr "Normal bloktype" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Ikke tilgængelig sammen med dynamiske spillelister" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Ikke forbundet" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Ikke nok indhold" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Ikke nok fans" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Ikke nok medlemmer" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Ikke nok naboer" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Ikke installeret" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Ikke logget ind" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Ikke monteret - dobbeltklik for at montere" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Bekendtgørelsestype" @@ -3343,36 +3380,41 @@ msgstr "Bekendtgørelser" msgid "Now Playing" msgstr "Nu afspilles" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Forhåndsvisning af OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg FLAC" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3380,11 +3422,11 @@ msgid "" "192.168.x.x" msgstr "Accepter kun forbindelser fra klienter med IP'erne:⏎ 10.x.x.x⏎ 172.16.0.0 - 172.31.255.255⏎ 192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Tillad kun forbindelser fra det lokale netværk" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Vis kun den første" @@ -3392,23 +3434,23 @@ msgstr "Vis kun den første" msgid "Opacity" msgstr "Uigennemsigtighed" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Åben %1 i web browser" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Åbn lyd-&CD" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Åben OPML fil" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Åben OPML fil" @@ -3416,30 +3458,35 @@ msgstr "Åben OPML fil" msgid "Open device" msgstr "Åbn enhed" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Åben fil..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Åbn på Google Drev" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Åbn i ny spilleliste" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Åben..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operation mislykkedes" @@ -3459,23 +3506,23 @@ msgstr "Indstillinger..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organiser filer" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organiser filer..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organiserer filer" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Oprindelige mærker" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Andre valgmuligheder" @@ -3483,7 +3530,7 @@ msgstr "Andre valgmuligheder" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3491,15 +3538,11 @@ msgstr "" msgid "Output options" msgstr "Output-indstillinger" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Overskriv alt" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Overskriv eksisterende filer" @@ -3511,15 +3554,15 @@ msgstr "" msgid "Owner" msgstr "Ejer" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Behandler Jamendo-kataloget" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3528,20 +3571,20 @@ msgstr "Party" msgid "Password" msgstr "Kodeord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pause" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pause i afspilning" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "På pause" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Kunstner" @@ -3550,34 +3593,22 @@ msgstr "Kunstner" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Simpelt sidepanel" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Afspil" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Spil kunstner eller mærke" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Spil kunstnerradio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Antal gange afspillet" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Afspil selvvalgt radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Spil hvis der er stoppet, hold pause hvis der spilles" @@ -3586,45 +3617,42 @@ msgstr "Spil hvis der er stoppet, hold pause hvis der spilles" msgid "Play if there is nothing already playing" msgstr "Afspil hvis der ikke er noget andet som afspilles i øjeblikket" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Spil mærkeradio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Afspil det . spor i spillelisten" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Afspil/Pause" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Afspilning" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Afspiller indstillinger" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Spilleliste" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Spilleliste afsluttet" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Indstillinger for spilleliste" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Spillelistetype" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Afspilningslister" @@ -3636,23 +3664,23 @@ msgstr "Luk venligst din hjemmesidelæser, og returner til Clementine" msgid "Plugin status:" msgstr "Status for udvidelsesmodulen" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Populære sange" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Mådedens populære sange" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Dagens populære sange" @@ -3661,22 +3689,23 @@ msgid "Popup duration" msgstr "Popup varighed" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "For-forstærker" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Indstillinger" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Indstillinger..." @@ -3712,7 +3741,7 @@ msgstr "Tryk på en tastekombination at bruge til" msgid "Press a key" msgstr "Tryk på en tast" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Tryk på en tastekombination at bruge til %1..." @@ -3723,20 +3752,20 @@ msgstr "Indstillinger for køn OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Forhåndsvisning" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Forrige" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Forrige spor" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Vis versionsinformation" @@ -3744,21 +3773,25 @@ msgstr "Vis versionsinformation" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Fremgang" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Tryk på Wiiremote-knap" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Sæt sange i tilfældig rækkefølge" @@ -3766,85 +3799,95 @@ msgstr "Sæt sange i tilfældig rækkefølge" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kvalitet" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Forespørger enhed..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Køhåndterer" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Sæt valgte spor i kø" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Sæt spor i kø" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (samme loudness for alle spor)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radioer" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Regn" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Tilfældig visualisering" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Giv 0 stjerner til denne sang" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Giv 1 stjerne til denne sang" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Giv 2 stjerner til denne sang" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Giv 3 stjerner til denne sang" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Giv 4 stjerner til denne sang" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Giv 5 stjerner til denne sang" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Pointgivning" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Vil du virkelig afbryde?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Ajourfør" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Genopfrisk kataloget" @@ -3852,19 +3895,15 @@ msgstr "Genopfrisk kataloget" msgid "Refresh channels" msgstr "Genopfrisk kanaler" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Hent kanaler på ny" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Genopfrisk kanallisten" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Genopfrisk bakgrunnslyder" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3876,8 +3915,8 @@ msgstr "Husk Wii-remote-bevægelse" msgid "Remember from last time" msgstr "Husk fra sidste gang" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Fjern" @@ -3885,7 +3924,7 @@ msgstr "Fjern" msgid "Remove action" msgstr "Fjern handling" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Fjern dubletter fra afspilningsliste" @@ -3893,73 +3932,77 @@ msgstr "Fjern dubletter fra afspilningsliste" msgid "Remove folder" msgstr "Fjern mappe" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Fjern fra Min Musik" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Fjern fra favoritter" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Fjern fra spilleliste" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Fjern spilleliste" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Fjern spillelister" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Fjerner sange fra Min Musik" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Fjerner sange fra favoritter" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Omdøb \"%1\" afspilningsliste" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Omdøb Grooveshark afspilningsliste" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Giv spillelisten et nyt navn" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Giv spillelisten et nyt navn..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Omnummerér spor i denne rækkefølge..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Gentag" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Gentag album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Gentag spilleliste" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Gentag spor" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Erstat nuværende spilleliste" @@ -3968,15 +4011,15 @@ msgstr "Erstat nuværende spilleliste" msgid "Replace the playlist" msgstr "Erstat spillelisten" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Erstat mellemrum med understregninger" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3984,24 +4027,24 @@ msgstr "" msgid "Repopulate" msgstr "Genudfyld" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Forlang autentificeringskode" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Nulstil" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Nulstil afspilningstæller" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Begræns til ASCII-tegn" @@ -4009,15 +4052,15 @@ msgstr "Begræns til ASCII-tegn" msgid "Resume playback on start" msgstr "Genoptag afspilning ved programstart" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Henter sange fra Grooveshark Min Musik" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Henter Grooveshark favoritsange" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Henter Grooveshark afspilningslister" @@ -4037,11 +4080,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4053,25 +4096,25 @@ msgstr "Kør" msgid "SOCKS proxy" msgstr "SOCKS proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Sikker fjernelse af enhed" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Sikker fjernelse af enhed efter kopiering" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Samplingsrate" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Samplingsfrekvens" @@ -4079,27 +4122,33 @@ msgstr "Samplingsfrekvens" msgid "Save .mood files in your music library" msgstr "Gem .mood filer i dit musikbibliotek." -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Gem omslag" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Gem omslag til disk..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Gem billede" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Gem spilleliste" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Gem spilleliste..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Gem forudindstilling" @@ -4115,11 +4164,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "Gem denne kanal i et Internet-faneblad" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Gemmer spor" @@ -4131,7 +4180,7 @@ msgstr "Skalerbar samplingsfrekvens-profil (SSR)" msgid "Scale size" msgstr "Skaler størrelse" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Karakter" @@ -4139,10 +4188,14 @@ msgstr "Karakter" msgid "Scrobble tracks that I listen to" msgstr "Scrobble-spor som jeg lytter til" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Søg" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Søg" @@ -4150,23 +4203,23 @@ msgstr "Søg" msgid "Search Icecast stations" msgstr "Søg i Icecast-kanaler" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Søg i Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Søg i Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Søg Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Søg efter omslag" @@ -4186,21 +4239,21 @@ msgstr "Søg på iTunes" msgid "Search mode" msgstr "Søgetilstand" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Søgeindstillinger" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Søgeresultater" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Søgekriterier" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Søg på Grooveshark" @@ -4208,27 +4261,27 @@ msgstr "Søg på Grooveshark" msgid "Second level" msgstr "Andet niveau" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Spol tilbage" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Spol frem" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Søg med en relativ mængde i det spor der afspilles på nuværende tidspunkt" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Søg til en bestemt position i det spor der afspilles på nuværende tidspunkt" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Vælg alle" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Vælg ingen" @@ -4236,7 +4289,7 @@ msgstr "Vælg ingen" msgid "Select background color:" msgstr "Vælg baggrundsfarve:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Vælg baggrundsbillede" @@ -4252,7 +4305,7 @@ msgstr "Vælg forgrundsfarve:" msgid "Select visualizations" msgstr "Vælg visualiseringer" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Vælg visualiseringer..." @@ -4260,7 +4313,7 @@ msgstr "Vælg visualiseringer..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Serienummer" @@ -4272,51 +4325,51 @@ msgstr "Server-URL" msgid "Server details" msgstr "Server detaljer" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Tjeneste offline" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Sæt %1 til \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Sæt lydstyrken til percent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Sæt værdi på alle valgte spor..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Indstillinger" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Genvejstast" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Genvejstast for %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Der findes allerede en genvejstast for %1" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Vis" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Vis OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Vis en lysende animation på det nuværende spor" @@ -4344,15 +4397,15 @@ msgstr "Vis en pop-up fra statusområdet" msgid "Show a pretty OSD" msgstr "Vis en køn OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Vis over statuslinjen" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Vis alle sange" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Vis alle sangene" @@ -4364,32 +4417,36 @@ msgstr "Vis omslag i biblioteket" msgid "Show dividers" msgstr "Vis adskillere" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Vis i fuld størrelse..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Vis i filbrowser" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Vis under Diverse kunstnere" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Vis stemningslinie" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Vis kun dubletter" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Vis kun filer uden mærker" @@ -4398,8 +4455,8 @@ msgid "Show search suggestions" msgstr "Vis søgeforslag" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Vis \"elsker\" og \"bandlys\"-knapperne" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4413,27 +4470,27 @@ msgstr "Vis statusikon" msgid "Show which sources are enabled and disabled" msgstr "Vis hvilke kilder der er aktiveret og deaktiveret" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Vis/skjul" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Bland" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Bland albummer" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Bland alle" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Bland spilleliste" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Bland spor i dette album" @@ -4449,7 +4506,7 @@ msgstr "Log ud" msgid "Signing in..." msgstr "Logger på..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Lignende kunstnere" @@ -4461,43 +4518,51 @@ msgstr "Størrelse" msgid "Size:" msgstr "Størrelse:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Skip tilbage i spillelisten" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Antal gange sprunget over" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Skip fremad i spillelisten" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Lille omslagsbillede" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Lille sidepanel" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Smart spilleliste" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Smarte spillelister" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4505,11 +4570,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Information om sangen" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info om sangen" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4529,15 +4594,23 @@ msgstr "Sorter efter genrens popularitet" msgid "Sort by station name" msgstr "Sorter efter kanalnavn" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Sorter sange efter" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sortering" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Kilde" @@ -4553,7 +4626,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Kunne ikke logge på Spotify" @@ -4561,7 +4634,7 @@ msgstr "Kunne ikke logge på Spotify" msgid "Spotify plugin" msgstr "Spotify-udvidelsesmodul" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify-udvidelsesmodulet er ikke installeret" @@ -4569,77 +4642,77 @@ msgstr "Spotify-udvidelsesmodulet er ikke installeret" msgid "Standard" msgstr "Standard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Har stjerner" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Start den spilleliste der afspiller nu" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Start omkodning" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Begynd med at skrive noget i søgeboksen ovenfor, for at fylde denne listen med søgeresultater" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Starter %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Starter…" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Kanaler" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stop" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Stop efter" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Stop efter dette spor" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Stop afspilning" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Stop afspilning efter nuværende spor" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Stoppet" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4649,7 +4722,7 @@ msgstr "Streaming fra en Subsonic server kræver en gyldig server licens, efter msgid "Streaming membership" msgstr "Streaming-medlemskab" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Tilmeldte afspilningslister" @@ -4657,7 +4730,7 @@ msgstr "Tilmeldte afspilningslister" msgid "Subscribers" msgstr "Abonnenter" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4665,12 +4738,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Succes!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Skrev %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Foreslåede mærker" @@ -4679,13 +4752,13 @@ msgstr "Foreslåede mærker" msgid "Summary" msgstr "Sammendrag" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Super-høj (%1 billeder/sekund)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super high (2048x2048)" @@ -4697,43 +4770,35 @@ msgstr "Understøttede formater" msgid "Synchronize statistics to files now" msgstr "Synkroniser statistik til filer nu" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synkroniserer Spotify indbox" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synkroniser Spotify afspilningsliste" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synkroniserer stjernemarkerede spor i Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Systemfarver" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Faneblade i toppen" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Mærke" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Mærke-henter" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Mærkeradio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Ønsket bitrate" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4741,11 +4806,11 @@ msgstr "Techno" msgid "Text options" msgstr "Tekst indstillinger" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Tak til" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Kunne ikke starte kommandoen \\\"%1\\\"" @@ -4754,17 +4819,12 @@ msgstr "Kunne ikke starte kommandoen \\\"%1\\\"" msgid "The album cover of the currently playing song" msgstr "Nuværende sangs pladeomslag" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Biblioteket %1 er ugyldigt" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Spillelisten '%1' var tom, eller kunne ikke indlæses" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Værdi nummer to skal være større end værdi nummer et!" @@ -4772,40 +4832,40 @@ msgstr "Værdi nummer to skal være større end værdi nummer et!" msgid "The site you requested does not exist!" msgstr "Siden du søgte efter findes ikke!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Siden du søgte efter er ikke et billede!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Prøveperioden for Subsonic-serveren er ovre. Doner venligst for at få en licens-nøgle. Besøg subsonic.org for flere detaljer." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Da du har opdateret Clementine til en nyere version, skal hele biblioteket genindlæses på grund af følgende nye funktioner:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Der er andre sange i dette album" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Der var et kommunikationsproblem med gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Kunne ikke hente metadata fra Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Der var et fortolkningsproblem med svaret fra iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4817,13 +4877,13 @@ msgid "" "deleted:" msgstr "Der var et problem ved at kopiere nogle sange. Følgende filer kunne ikke kopieres:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Disse filer vil blive slettet fra disken, er du sikker på at du vil fortsætte?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4843,13 +4903,13 @@ msgstr "Disse innstillinger bruges i \\\"Omkod musik\\\"-dialogvinduet, og når msgid "Third level" msgstr "Tredje niveau" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Denne handling vil oprette en database der kan blive optil 150 MB.\nVil du stadig fortsætte?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Dette album er ikke tilgængelig i det format du bad om" @@ -4863,11 +4923,11 @@ msgstr "Enheden må sluttes til og åbnes før Clementine kan se hvilke filforma msgid "This device supports the following file formats:" msgstr "Enheden understøtter følgende filformater:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Enheden vil ikke fungere korrekt" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Dette er en MTP-enhed, men Clementine blev kompileret uden libmtp-understøttelse." @@ -4876,7 +4936,7 @@ msgstr "Dette er en MTP-enhed, men Clementine blev kompileret uden libmtp-unders msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Dette er en iPod, men Clementine blev kompileret uden libgpod-understøttelse." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4886,33 +4946,33 @@ msgstr "Det er første gang du tilslutter denne enhed. Clementine gennemsøger msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Denne stream er kun for betalende abonnenter" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Denne enhedstype (%1) er ikke understøttet." -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "For at starte Grooveshark radio, skal du først lytte til et par andre Grooveshark sange" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Idag" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Slå pæn OSD til/fra" @@ -4920,27 +4980,27 @@ msgstr "Slå pæn OSD til/fra" msgid "Toggle fullscreen" msgstr "Slå fuldskærmstilstand til/fra" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Slå køstatus til/fra" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Slå scrobbling til/fra" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Klik for at justere synlighed på OSD" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "I morgen" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "For mange omdirigeringer" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Bedste musiknumre" @@ -4948,21 +5008,25 @@ msgstr "Bedste musiknumre" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Totalt antal bytes overført" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Totalt antal forespørgsler over nettet" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Spor" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Omkod musik" @@ -4974,7 +5038,7 @@ msgstr "Omkoder-log" msgid "Transcoding" msgstr "Omkodning" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Omkoder %1 filer i %2 tråde" @@ -4983,11 +5047,11 @@ msgstr "Omkoder %1 filer i %2 tråde" msgid "Transcoding options" msgstr "Indstillinger for omkodning" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4995,72 +5059,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Slå fra" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL'er" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One kode" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One brugernavn" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra wide band (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Kunne ikke downloade %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Ukendt" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Ukendt indholdstype" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Ukendt fejl" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Fravælg omslag" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Opsig abonnement" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Kommende Koncerter" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Opdater Grooveshark afspilningslister" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Ajourfør alle podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Opdater ændrede bibliotekskataloger" @@ -5068,7 +5132,7 @@ msgstr "Opdater ændrede bibliotekskataloger" msgid "Update the library when Clementine starts" msgstr "Opdater biblioteket når Clementine starter" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Ajourfør denne podcast" @@ -5076,21 +5140,21 @@ msgstr "Ajourfør denne podcast" msgid "Updating" msgstr "Ajourfører" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Ajourfører %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Opdaterer %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Opdaterer bibliotek" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Brug" @@ -5098,11 +5162,11 @@ msgstr "Brug" msgid "Use Album Artist tag when available" msgstr "Brug Album Artist mærke, når det er muligt" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Brug Gnome genvejstaster" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Brug Replay Gain-metadata hvis tilgængelig" @@ -5122,7 +5186,7 @@ msgstr "Brug et brugerdefineret farvesæt" msgid "Use a custom message for notifications" msgstr "Brug en selvvalgt meddelelse til beskeder" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Brug en netværksfjernbetjening" @@ -5162,20 +5226,20 @@ msgstr "Brug standard proxy-indstillinger" msgid "Use volume normalisation" msgstr "Brug volumen normalisering" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Brugt" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Brugeren %1 har ikke en Grooveshark Anywhere-konto" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Brugergrænseflade" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5197,12 +5261,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Variabel bitrate" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Diverse kunstnere" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Version %1" @@ -5215,7 +5279,7 @@ msgstr "Vis" msgid "Visualization mode" msgstr "Visualiseringstilstand" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualiseringer" @@ -5223,11 +5287,15 @@ msgstr "Visualiseringer" msgid "Visualizations Settings" msgstr "Indstilling af visualiseringer" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Stemmeaktivitet opdaget" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Lydstyrke %1%" @@ -5245,11 +5313,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Advar ved nedlukning af en spillelistes fane" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5257,7 +5325,7 @@ msgstr "Wav" msgid "Website" msgstr "Hjemmeside" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Uger" @@ -5283,32 +5351,32 @@ msgstr "Hvor ikke prøve..." msgid "Wide band (WB)" msgstr "Wide band (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: aktiveret" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: tilsluttet" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: kritisk batteristatus (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: deaktiveret" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: frakoblet" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: lavt batteri-niveau (%2%)" @@ -5329,7 +5397,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5337,25 +5405,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Uden omslag" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Vil du også flytte de andre sange i dette album til Diverse kunstnere?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Vil du genindlæse hele biblioteket nu?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Forkert brugernavn og/eller password." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5367,11 +5435,11 @@ msgstr "År" msgid "Year - Album" msgstr "År - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Årstal" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "I går" @@ -5379,13 +5447,13 @@ msgstr "I går" msgid "You are about to download the following albums" msgstr "Du er ved at downloade følgende albums" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5395,12 +5463,12 @@ msgstr "" msgid "You are not signed in." msgstr "Du er ikke logget ind." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Du er logget på som %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Du er logget ind." @@ -5408,13 +5476,13 @@ msgstr "Du er logget ind." msgid "You can change the way the songs in the library are organised." msgstr "Du kan ændre den måde sange bliver organiseret i biblioteket." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Du kan lytte gratis uden en konto, men Premium-medlemmer kan lytte til streams i højere kvalitet og uden reklamer." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5424,13 +5492,6 @@ msgstr "Du kan gratis lytte til Magnatune sange uden en konto. Ved køb af medl msgid "You can listen to background streams at the same time as other music." msgstr "Du kan lytte til baggrundsmusik streams på samme tid som anden musik." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Du kan scrobble numre gratis, men det er kun betalende abonnenter der kan streame fra Last.fm radioen til Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Du kan bruge din Wii fjernbetjening som en fjernbetjening til Clementine. Se Clementine wiki siden for yderligere information.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Du har ikke en Grooveshark Anywhere konto" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Du har ikke en Spotify Premium konto" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Du har ikke et aktivt abonnement" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Du er blevet logget ud fra Spotify, genindtast venligst dit kodeord i Indstillingsdialogen." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Du er blevet logget ud fra Spotify, genindtast venligst dit kodeord." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Du elsker dette musiknummer" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5475,17 +5550,11 @@ msgstr "I Systemindstillinger er du nødt til at slå \", 2013-2014 # Ankorath , 2013 # Mariaki , 2013 @@ -12,7 +13,7 @@ # daschuer , 2012 # FIRST AUTHOR , 2010 # geroldmittelstaedt , 2012 -# santy , 2012 +# santy , 2012 # janlaymann , 2012 # Jonas Mueller , 2013 # Lenzitsch , 2013 @@ -36,15 +37,15 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 16:02+0000\n" -"Last-Translator: to_ba\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: German (http://www.transifex.com/projects/p/clementine/language/de/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -55,7 +56,7 @@ msgstr "\n\nSie können Wiedergabelisten zu ihren Favoriten hinzufügen, indem s #: ../bin/src/ui_podcastsettingspage.h:246 msgid " days" -msgstr "Tage" +msgstr " Tagen" #: ../bin/src/ui_transcoderoptionsaac.h:130 #: ../bin/src/ui_transcoderoptionsmp3.h:195 @@ -69,9 +70,9 @@ msgstr "Tage" msgid " kbps" msgstr "Kbit/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -84,11 +85,16 @@ msgstr " pt" msgid " seconds" msgstr " Sekunden" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "Titel" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 Lieder)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 Alben" @@ -98,12 +104,12 @@ msgstr "%1 Alben" msgid "%1 days" msgstr "%1 Tage" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "vor %1 Tagen" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 an %2" @@ -113,48 +119,48 @@ msgstr "%1 an %2" msgid "%1 playlists (%2)" msgstr "%1 Wiedergabelisten (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 ausgewählt von" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 Titel" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 Titel" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 Titel gefunden" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" -msgstr "%1 Titel gefunden (zeige %2)" +msgstr "%1 Titel gefunden (%2 werden angezeigt)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 Stücke" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 übertragen" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev-Modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 anderes Zuhörer" @@ -168,18 +174,21 @@ msgstr "Insgesamt %L1 mal abgespielt" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n fehlgeschlagen" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n abgeschlossen" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n verbleibend" @@ -191,24 +200,24 @@ msgstr "&Text ausrichten" msgid "&Center" msgstr "&Zentriert" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Benutzerdefiniert" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Hilfe" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "%1 &ausblenden" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Ausblenden …" @@ -216,23 +225,23 @@ msgstr "&Ausblenden …" msgid "&Left" msgstr "&Links" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Musik" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Keine" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Wiedergabeliste" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Beenden" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Wiederholung" @@ -240,23 +249,23 @@ msgstr "&Wiederholung" msgid "&Right" msgstr "&Rechts" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&Zufallsmodus" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Spalten an Fenstergröße anpassen" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Werkzeuge" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(unterschiedlich für mehrere Titel)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "… und alle Amarok-Mitwirkenden" @@ -276,14 +285,10 @@ msgstr "0px" msgid "1 day" msgstr "1 Tag" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 Stück" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -293,19 +298,13 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 zufällige Stücke" #: ../bin/src/ui_digitallyimportedsettingspage.h:165 msgid "Upgrade to Premium now" -msgstr "Jetzt zu Premium erweitern" - -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Ein neues Konto erstellen oder Ihr Passwort zurücksetzen" +msgstr "Auf Premium erweitern" #: ../bin/src/ui_librarysettingspage.h:195 msgid "" @@ -317,6 +316,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Deaktiviert: Clementine wird versuchen, Bewertungen und andere Statistiken in einer separaten Datenbank zu speichern, ohne Ihre Dateien zu verändern.

Aktiviert: Statistiken werden bei jeder Änderung sowohl in einer Datenbank als auch direkt in der betreffenden Datei gespeichert.

Bitte beachten Sie, dass dies unter Umständen nicht mit jedem Format klappt; da es keinen Standard gibt, ist es möglich, dass ein anderer Musikspieler die Daten nicht lesen kann.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Ein Wort mit einem Feldnamen voranstellen, um die Suche auf dieses Feld zu beschränken, z.B. Interpret:Keks durchsucht die Bibliothek nach allen Interpreten, die das Wort Keks enthalten

Verfügbare Felder: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -325,38 +335,38 @@ msgid "" "activated.

" msgstr "

Das wird Bewertungen und Statistiken aller Titel ihrer Bibliothek in die Tags der Lieddateien schreiben.

Das ist nicht nötig, wenn die Option "Speichere alle Bewertungen und Statistiken in Titel-Tags" immer aktiviert war.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Schlüsselwörter beginnen mit %, zum Beispiel: %artist %album %title

\n\n

Steht ein Textbereich in geschweiften Klammern, wird dieser nicht angezeigt, falls das Schlüsselwort leer ist.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Ein Grooveshark-Anywhere-Konto wird benötigt." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Ein Spotify-Premium-Konto ist erforderlich." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Ein Programm kann sich nur verbinden, falls der korrekte Code eingegeben wurde." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Eine intelligente Wiedergabeliste ist eine Liste von Titeln, die aus Ihrer Bibliothek stammen. Es gibt mehrere Arten von intelligenten Wiedergabelisten, die unterschiedliche Möglichkeiten bieten, eine Auswahl von Titeln zu treffen." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Ein Titel wird in die Wiedergabeliste aufgenommen, wenn er die folgenden Bedingungen erfüllt." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -376,36 +386,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Abbrechen" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Über %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Über Clementine …" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Über Qt …" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Benutzerkonto" @@ -417,11 +426,15 @@ msgstr "Kontodetails (Premium)" msgid "Action" msgstr "Aktion" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wii-Fernbedienung aktivieren/deaktivieren" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Aktivitätenstrom" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Podcast hinzufügen" @@ -437,39 +450,39 @@ msgstr "Zeilenumbruch (falls von der gewählten Art der Benachrichtigung unterst msgid "Add action" msgstr "Aktion hinzufügen" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Einen weiteren Stream hinzufügen …" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." -msgstr "Verzeichnis hinzufügen …" +msgstr "Ordner hinzufügen …" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Datei hinzufügen" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Datei zum Transcoder hinzufügen" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Datei(en) zum Transcoder hinzufügen" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Datei hinzufügen …" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Zu konvertierende Dateien hinzufügen" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Ordner hinzufügen" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Ordner hinzufügen …" @@ -481,11 +494,11 @@ msgstr "Neuen Ordner hinzufügen …" msgid "Add podcast" msgstr "Podcast hinzufügen" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Podcast hinzufügen …" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Suchbegriff hinzufügen" @@ -549,6 +562,10 @@ msgstr "Sprungzähler des aktuellen Titels" msgid "Add song title tag" msgstr "Name des aktuellen Titels" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Lied zum Zwischenspeicher hinzufügen" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Nummer des aktuellen Titels" @@ -557,22 +574,34 @@ msgstr "Nummer des aktuellen Titels" msgid "Add song year tag" msgstr "Erscheinungsjahr des aktuellen Titels" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Lieder zu »Meine Musik« hinzufügen, wenn »Lieben« geklickt wurde" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Stream hinzufügen …" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Zu Grooveshark-Favoriten hinzufügen" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Zu Grooveshark-Wiedergabelisten hinzufügen" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Zu »Meine Musik« hinzufügen" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Zu anderer Wiedergabeliste hinzufügen" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Zu Lesezeichen hinzufügen" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Zur Wiedergabeliste hinzufügen" @@ -581,6 +610,10 @@ msgstr "Zur Wiedergabeliste hinzufügen" msgid "Add to the queue" msgstr "In die Warteschlange einreihen" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Nutzer/Gruppe zu Lesezeichen hinzufügen" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Aktion für Wii-Fernbedienung hinzufügen" @@ -610,15 +643,15 @@ msgstr "Heute hinzugefügt" msgid "Added within three months" msgstr "In den letzten drei Monaten hinzugefügt" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Titel werden zu »Meine Musik« hinzugefügt" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Füge Titel zu den Favoriten hinzu" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Erweiterte Gruppierung …" @@ -626,12 +659,12 @@ msgstr "Erweiterte Gruppierung …" msgid "After " msgstr "Nach " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Nach dem Kopieren …" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -639,11 +672,11 @@ msgstr "Nach dem Kopieren …" msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealer Pegel für alle Stücke)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -653,35 +686,36 @@ msgstr "Album-Interpret" msgid "Album cover" msgstr "Titelbild" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Albuminformationen auf jamendo.com …" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Alben mit Titelbildern" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Alben ohne Titelbilder" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Alle Dateien (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "All Glory to the Hypnotoad!" +msgstr "Aller Ruhm der Hypnosekröte!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Alle Alben" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Alle Interpreten" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Alle Dateien (*)" @@ -690,19 +724,19 @@ msgstr "Alle Dateien (*)" msgid "All playlists (%1)" msgstr "Alle Wiedergabelisten (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Alle Übersetzer" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Alle Stücke" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Programmen erlauben, Musik von diesem Rechner herunterzuladen." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Herunterladen erlauben" @@ -727,30 +761,30 @@ msgstr "Clementine immer anzeigen" msgid "Always start playing" msgstr "Immer mit der Wiedergabe beginnen" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Eine zusätzlich Erweiterung wird benötigt, um Spotify in Clementine zu benutzen. Möchten Sie es jetzt herunterladen und installieren?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Beim Laden der iTunes-Datenbank ist ein Fehler aufgetreten" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Beim Schreiben der Metadaten für '%1' trat ein Fehler auf" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Ein unspezifizierter Fehler ist aufgetreten." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Und:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Wütend" @@ -759,13 +793,13 @@ msgstr "Wütend" msgid "Appearance" msgstr "Erscheinungsbild" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" -msgstr "Dateien/URLs an die Wiedergabeliste anhängen" +msgstr "Dateien/Adressen an die Wiedergabeliste anhängen" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Zur aktuellen Wiedergabeliste hinzufügen" @@ -773,62 +807,61 @@ msgstr "Zur aktuellen Wiedergabeliste hinzufügen" msgid "Append to the playlist" msgstr "Zur Wiedergabeliste hinzufügen" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Komprimieren um Übersteuerung zu vermeiden" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Sind Sie sicher, dass Sie die Voreinstellung »%1« wirklich löschen wollen?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Möchten Sie diese Wiedergabeliste wirklich löschen?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Wollen Sie die Statistiken dieses Titels wirklich zurücksetzen?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Sind Sie sicher, dass Sie, für alle Lieder Ihrer Bibliothek, die Liedstatistiken in die Lieddatei schreiben wollen?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Interpret" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Infos zum Interpreten" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Künstler-Radio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Stichworte zum Interpreten" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Initialen des Interpreten" #: ../bin/src/ui_transcodedialog.h:212 ../bin/src/ui_ripcd.h:323 msgid "Audio format" -msgstr "Audioformat" +msgstr "Tonformat" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Tonausgang" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Authentifizierung fehlgeschlagen" @@ -836,7 +869,7 @@ msgstr "Authentifizierung fehlgeschlagen" msgid "Author" msgstr "Author" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autoren" @@ -852,7 +885,7 @@ msgstr "Automatisches Aktualisieren" msgid "Automatically open single categories in the library tree" msgstr "Im Bibliotheksbaum automatisch Einzelkategorien öffnen" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Verfügbar" @@ -860,15 +893,15 @@ msgstr "Verfügbar" msgid "Average bitrate" msgstr "Durchschnittliche Bitrate" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Durchschnittliche Bildgröße" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -889,7 +922,7 @@ msgstr "Hintergrundbild" msgid "Background opacity" msgstr "Deckkraft:" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Die Datenbank wird gesuchert" @@ -897,11 +930,7 @@ msgstr "Die Datenbank wird gesuchert" msgid "Balance" msgstr "Balance" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Blockieren" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Balken" @@ -911,7 +940,7 @@ msgstr "Standardblau" #: ../bin/src/ui_digitallyimportedsettingspage.h:167 msgid "Basic audio type" -msgstr "Normales Streaming-Format:" +msgstr "Normaler Tontyp:" #: ../bin/src/ui_behavioursettingspage.h:191 msgid "Behavior" @@ -921,18 +950,17 @@ msgstr "Verhalten" msgid "Best" msgstr "Optimal" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografie von %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -940,7 +968,12 @@ msgstr "Bitrate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Bitrate" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blöcke" @@ -956,7 +989,7 @@ msgstr "Unschärfe" msgid "Body" msgstr "Textkörper:" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom" @@ -970,11 +1003,11 @@ msgstr "Box" msgid "Browse..." msgstr "Durchsuchen …" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Pufferdauer" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Puffern" @@ -986,43 +1019,66 @@ msgstr "Aber diese Quellen sind deaktiviert" msgid "Buttons" msgstr "Tasten" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Als Vorgabe sortiert Grooveshark die Lieder nach Datum, wann sie hinzugefügt wurden." + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Unterstützung von Cuesheets" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Zwischenspeicherpfad:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Zwischenspeichern" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "%1 wird zwischengespeichert" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Abbrechen" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Anmeldung nur mit Captcha möglich.\nBitte melden Sie sich mit Ihrem Browser auf Vk.com an, um das Problem zu beheben." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Titelbilder ändern" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Schriftgröße ändern …" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Wiederholungsmodus ändern" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Tastenkürzel ändern …" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Zufallsmodus ändern" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Sprache ändern" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1032,15 +1088,19 @@ msgstr "Die Mono-Wiedergabe-Einstellung wird für den nächsten Titel wirksam." msgid "Check for new episodes" msgstr "Nach neuen Episoden suchen" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Nach Aktualisierungen suchen …" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Zwischenspeicherordner für Vk.com wählen" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Wählen Sie einen Namen für Ihre intelligente Wiedergabeliste" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Automatisch auswählen" @@ -1056,20 +1116,20 @@ msgstr "Schriftart wählen …" msgid "Choose from the list" msgstr "Von der Liste wählen" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Wählen Sie, wie die Wiedergabeliste sortiert wird und wie viele Titel sie enthalten soll." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" -msgstr "Wählen Sie ein Herunterladeverzeichnis für Podcasts" +msgstr "Ein Herunterladeordner für Podcasts auswählen" #: ../bin/src/ui_songinfosettingspage.h:160 msgid "" "Choose the websites you want Clementine to use when searching for lyrics." -msgstr "Internetseiten, welche von Clementine zur Liedtextsuche verwendet werden sollen:" +msgstr "Internetseiten, welche von Clementine, zur Liedtextsuche, verwendet werden sollen:" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klassisch" @@ -1077,17 +1137,17 @@ msgstr "Klassisch" msgid "Cleaning up" msgstr "Bereinigen" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Leeren" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Wiedergabeliste leeren" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1100,8 +1160,8 @@ msgstr "Clementine-Fehler" msgid "Clementine Orange" msgstr "Clementineorange" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine-Visualisierung" @@ -1123,35 +1183,28 @@ msgstr "Clementine kann Musik abspielen, die Sie auf Dropbox hochgeladen haben" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine kann Musik abspielen, die Sie auf Google Drive hochgeladen haben." -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine kann Musik abspielen, die Sie auf Ubuntu One hochgeladen haben" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine kann Musik, die Sie zu OneDrive hochgeladen haben, wiedergeben" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." -msgstr "Clementine kann beim Stückwechsel Benachrichtigungen anzeigen" +msgstr "Clementine kann Benachrichtigungen beim Stückwechsel anzeigen" #: ../bin/src/ui_podcastsettingspage.h:250 msgid "" "Clementine can synchronize your subscription list with your other computers " "and podcast applications. Create " "an account." -msgstr "Clementine kann die Liste Ihrer Abonnements mit Ihren anderen Rechnern und Podcast-Anwendungen abgleichen. Ein Konto erstellen." +msgstr "Clementine kann die Liste Ihrer Abonnements mit Ihren anderen Rechnern und Podcast-Anwendungen abgleichen. Ein Konto erstellen." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine konnte keine projectM-Visualisierungen laden. Überprüfen Sie Ihre Installation." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine konnte Ihren Abo-Status nicht erhalten aufgrund von Problemen mit Ihrer Verbindung." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine-Bildbetrachter" @@ -1163,11 +1216,11 @@ msgstr "Clementine konnte keine Ergebnisse für diese Datei finden." msgid "Clementine will find music in:" msgstr "Clementine wird Musik finden in:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" -msgstr "Klicken Sie hier um das zu ändern" +msgstr "Hier klicken, um Musik hinzuzufügen" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1177,7 +1230,10 @@ msgstr "Hier klicken, um diese Wiedergabeliste zu speichern und sie dadurch in d msgid "Click to toggle between remaining time and total time" msgstr "Klicken Sie um zwischen verbleibender und Gesamtzeit zu wechseln" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1192,19 +1248,19 @@ msgstr "Schließen" msgid "Close playlist" msgstr "Wiedergabeliste schließen" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Visualisierung schließen" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Das Schließen des Fensters bricht das Herunterladen ab." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Das Schließen dieses Fensters bricht das Suchen nach Titelbildern ab." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1212,73 +1268,78 @@ msgstr "Club" msgid "Colors" msgstr "Farben" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma getrennte Liste mit »class:level«, Level zwischen 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Gemeinschaftsradio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Tags automatisch vervollständigen" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Schlagworte automatisch vervollständigen …" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Komponist" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "%1 konfigurieren …" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Grooveshark einrichten …" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm einrichten …" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Magnatune einrichten …" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Tastenkürzel einrichten" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Spotify konfigurieren …" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Subsonic wird konfiguriert …" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Vk.com konfigurieren …" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Globale Suche konfigurieren …" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Bibliothek einrichten …" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Podcasts einrichten …" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Einrichten …" @@ -1286,11 +1347,11 @@ msgstr "Einrichten …" msgid "Connect Wii Remotes using active/deactive action" msgstr "Wii-Fernbedienungen mittels Aktivieren/deaktivieren-Aktion verbinden" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Gerät verbinden" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Verbindung mit Spotify wird aufgebaut" @@ -1298,14 +1359,18 @@ msgstr "Verbindung mit Spotify wird aufgebaut" msgid "" "Connection refused by server, check server URL. Example: " "http://localhost:4040/" -msgstr "Verbindung verweigert vom Server, Server-URL überprüfen. Beispiel: http://localhost:4040/" +msgstr "Verbindung vom Server verweigert, bitte Server-Adresse überprüfen. Beispiel: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" -msgstr "Zeitüberschreitung, überprüfen Sie die Server-URL. Beispiel: http://localhost:4040/" +msgstr "Zeitüberschreitung, bitte überprüfen Sie die Server-Adresse. Beispiel: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Verbindungsproblem, oder der Ton wurde vom Besitzer deaktiviert" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsole" @@ -1321,17 +1386,21 @@ msgstr "Gesamte Musik konvertieren" msgid "Convert any music that the device can't play" msgstr "Musik konvertieren, die das Gerät nicht abspielen kann" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Adresse zum freigeben in Zwischenablage kopieren" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopieren" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Auf das Gerät kopieren …" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Zur Bibliothek kopieren …" @@ -1339,156 +1408,152 @@ msgstr "Zur Bibliothek kopieren …" msgid "Copyright" msgstr "Urheberrecht" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" -msgstr "Konnte nicht mit Subsonic verbinden, bitte Server-URL überprüfen. Beispiel: http://localhost:4040/" +msgstr "Mit Subsonic konnte nicht verbunden werden, bitte Server-Adresse überprüfen. Beispiel: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "GStreamer-Element »%1« konnte nicht erstellt werden. Stellen Sie sicher, dass alle nötigen GStreamer-Erweiterungen installiert sind." -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Wiedergabeliste konnte nicht erstellt werden" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Es konnte kein Multiplexer für %1 gefunden werden. Prüfen Sie ob die erforderlichen GStreamer-Erweiterungen installiert sind." -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Es konnte kein Encoder für %1 gefunden werden. Prüfen Sie ob die erforderlichen GStreamer-Erweiterungen installiert sind." -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Konnte die last.fm-Radiostation nicht laden." - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Ausgabedatei %1 konnte nicht geöffnet werden" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" -msgstr "Titelbildwaltung" +msgstr "Titelbildverwaltung" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Titelbild aus eingebettetem Bild" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Automatsch geladenes Titelbild von %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Titelbild manuell entfernt" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Titelbild nicht ausgewählt" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Das Titelbild wurde von %1 eingestellt" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Titelbild von %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Neue Grooveshark-Wiedergabeliste erstellen" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Überblenden bei automatischem Stückwechsel" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Überblenden bei manuellem Stückwechsel" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Strg+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Strg+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Strg+Unten" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Strg+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Strg+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Strg+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Strg+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Strg+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Strg+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Strg+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Strg+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Strg+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Strg+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Strg+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Strg+Umschalt+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Strg+Umschalt+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Strg+Umschalt+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Strg+T" @@ -1496,7 +1561,7 @@ msgstr "Strg+T" msgid "Ctrl+Up" msgstr "Strg+Oben" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Benutzerdefiniert" @@ -1508,54 +1573,50 @@ msgstr "Benutzerdefiniertes Bild:" msgid "Custom message settings" msgstr "Benutzerdefinierte Benachrichtigungseinstellungen" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Benutzerdefiniertes Radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Eigene …" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus Pfad" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Ihre Datenbank ist beschädigt. Bitte besuchen Sie https://code.google.com/p/clementine-player/wiki/DatabaseCorruption um zu erfahren, wie Sie Ihre Datenbank wiederherstellen können." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Erstellt" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Geändert" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Tage" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Vorgabe" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Lautstärke um 4% verringern" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Lautstärke um Prozent verringern" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Lautstärke verringern" @@ -1563,6 +1624,11 @@ msgstr "Lautstärke verringern" msgid "Default background image" msgstr "Standard Hintergrundbild" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Standardgerät an %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Standard" @@ -1571,30 +1637,30 @@ msgstr "Standard" msgid "Delay between visualizations" msgstr "Verzögerung zwischen Visualisierungen" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Löschen" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Grooveshark-Wiedergabeliste löschen" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Heruntergeladene Dateien löschen" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Dateien löschen" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Vom Gerät löschen …" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Vom Datenträger löschen …" @@ -1602,31 +1668,31 @@ msgstr "Vom Datenträger löschen …" msgid "Delete played episodes" msgstr "Gehörte Episoden löschen" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Voreinstellung löschen" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Lösche intelligente Wiedergabeliste" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Originale löschen" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Dateien werden gelöscht" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Stücke aus der Warteschlange nehmen" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Stück aus der Warteschlange nehmen" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Ziel:" @@ -1635,7 +1701,7 @@ msgstr "Ziel:" msgid "Details..." msgstr "Details …" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Gerät" @@ -1647,15 +1713,15 @@ msgstr "Geräteeinstellungen" msgid "Device name" msgstr "Gerätename" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Geräteeinstellungen …" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Geräte" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Dialog" @@ -1692,12 +1758,17 @@ msgstr "Permanente Anzeige" msgid "Disable moodbar generation" msgstr "Erzeugung des Stimmungsbarometers deaktivieren" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Deaktiviert" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Deaktiviert" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "CD-Nr." @@ -1707,15 +1778,15 @@ msgid "Discontinuous transmission" msgstr "Unterbrochene Übertragung" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Anzeigeoptionen" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" -msgstr "OSD anzeigen" +msgstr "Bildschirmanzeige anzeigen" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Bibliothek erneut einlesen" @@ -1727,27 +1798,27 @@ msgstr "Nichts konvertieren" msgid "Do not overwrite" msgstr "Nicht überschreiben" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Wiederholung aus" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Nicht unter »Verschiedene Interpreten« anzeigen" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Zufallsmodus aus" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Nicht anhalten!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Spende" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Zum Öffnen doppelklicken" @@ -1755,14 +1826,15 @@ msgstr "Zum Öffnen doppelklicken" msgid "Double clicking a song will..." msgstr "Beim Doppelklick auf einen Titel diesen …" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "%n Episoden herunterladen" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" -msgstr "Herunterladeverzeichnis" +msgstr "Herunterladeordner" #: ../bin/src/ui_podcastsettingspage.h:240 msgid "Download episodes to" @@ -1776,7 +1848,7 @@ msgstr "Herunterlademitgliedschaft" msgid "Download new episodes automatically" msgstr "Neue Episoden automatisch herunterladen" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Herunterladewarteschlange" @@ -1784,15 +1856,15 @@ msgstr "Herunterladewarteschlange" msgid "Download the Android app" msgstr "Die Android-App herunterladen" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Dieses Album herunterladen" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Album herunterladen …" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Diese Episode herunterladen" @@ -1800,32 +1872,32 @@ msgstr "Diese Episode herunterladen" msgid "Download..." msgstr "Herunterladen …" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "(%1%) herunterladen …" #: internet/icecastservice.cpp:101 msgid "Downloading Icecast directory" -msgstr "Lade Icecast-Verzeichnis herunter" +msgstr "Icecast-Ordner herunterladen" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" -msgstr "Jamendo-Katalog herunterladen" +msgstr "Jamendo-Katalog wird heruntergeladen" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" -msgstr "Magnatune-Katalog wird geladen" +msgstr "Magnatune-Katalog wird heruntergeladen" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Spotify-Erweiterung wird heruntergeladen" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Metadaten werden heruntergeladen" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Klicken und ziehen um die Position zu ändern" @@ -1845,20 +1917,20 @@ msgstr "Dauer" msgid "Dynamic mode is on" msgstr "Dynamischer Modus ist an" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynamischer Zufallsmix" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Intelligente Wiedergabeliste bearbeiten …" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Schlagwort »%1« bearbeiten …" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Schlagwort bearbeiten …" @@ -1870,16 +1942,16 @@ msgstr "Schlagworte bearbeiten" msgid "Edit track information" msgstr "Metadaten bearbeiten" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Metadaten bearbeiten …" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Metadaten bearbeiten …" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Bearbeiten …" @@ -1887,6 +1959,10 @@ msgstr "Bearbeiten …" msgid "Enable Wii Remote support" msgstr "Unterstützung für Wii-Fernbedienungen aktivieren" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Automatisches Zwischenspeichern aktivieren" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Equalizer aktivieren" @@ -1899,9 +1975,9 @@ msgstr "Tastenkürzel nur aktivieren, wenn Clementine fokussiert ist" msgid "" "Enable sources below to include them in search results. Results will be " "displayed in this order." -msgstr "Aktivieren Sie Quellen um sie in den Suchergebnissen anzuzeigen. Ergebnisse werden in dieser Reihenfolge angezeigt." +msgstr "Die unten stehenden Quellen aktivieren, um sie in den Suchergebnissen anzuzeigen. Ergebnisse werden in dieser Reihenfolge angezeigt." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Last.fm Scrobbling aktivieren/deaktivieren" @@ -1929,15 +2005,10 @@ msgstr "Adresse eingeben um Titelbild aus dem Internet zu laden" msgid "Enter a filename for exported covers (no extension):" msgstr "Dateiname für exportierte Titelbild eingeben (ohne Dateierweiterung):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Neuer Name für diese Wiedergabeliste" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Einen Interpreten oder ein Schlagwort eingeben, um Last.fm-Radio zu hören." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1951,20 +2022,20 @@ msgstr "Geben Sie Suchbegriffe unten ein um Podcasts auf iTunes zu finden" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Geben Sie Suchbegriffe unten ein um Podcasts auf gpodder.net zu finden" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Sammlung durchsuchen" #: ../bin/src/ui_addstreamdialog.h:114 msgid "Enter the URL of an internet radio stream:" -msgstr "Geben Sie die URL eines Internetradios ein:" +msgstr "Die Adresse eines Internetradios eingeben:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Geben Sie den Namen des Ordners ein" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Diese IP in der App eingeben, um mit Clementine zu verbinden." @@ -1972,21 +2043,22 @@ msgstr "Diese IP in der App eingeben, um mit Clementine zu verbinden." msgid "Entire collection" msgstr "Gesamte Sammlung" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizer" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Äquivalent zu --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Äquivalent zu --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Fehler" @@ -1994,38 +2066,38 @@ msgstr "Fehler" msgid "Error connecting MTP device" msgstr "Fehler beim Verbinden zum MTP-Gerät" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Fehler beim Kopieren der Titel" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Fehler beim Löschen der Titel" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Fehler beim herunterladen der Spotify-Erweiterung" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Fehler beim Laden von %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Fehler beim Laden der di.fm-Wiedergabeliste" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Fehler bei %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Fehler beim Laden der Audio-CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Irgendwann gespielt" @@ -2057,7 +2129,7 @@ msgstr "Alle 6 Stunden" msgid "Every hour" msgstr "Stündlich" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Außer für Stücke des gleichen Albums oder des gleichen Cuesheets." @@ -2069,7 +2141,7 @@ msgstr "Existierende Titelbilder" msgid "Expand" msgstr "Erweitern" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Läuft aus am %1" @@ -2090,36 +2162,36 @@ msgstr "Heruntergeladene Titelbild expoertieren" msgid "Export embedded covers" msgstr "Eingebettete Titelbild exportieren" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Export beendet" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "%1 von %2 Titelbildern exportiert (%3 übersprungen)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2129,42 +2201,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Ausblenden bei Pause / Einblenden beim Fortsetzen" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Ausblenden wenn ein Stück gestoppt wird" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Überblenden" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Dauer:" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "CD-Laufwerk kann nicht gelesen werden" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" -msgstr "Holen des Verzeichnisses fehlgeschlagen" +msgstr "Das Abrufen des Ordners ist fehlgeschlagen" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" -msgstr "Abholen der Podcasts fehlgeschlagen" +msgstr "Das Abrufen der Podcasts ist fehlgeschlagen" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Laden der Podcasts fehlgeschlagen" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Auslesen des XML für diesen RSS-Feed fehlgeschlagen" @@ -2173,39 +2245,39 @@ msgstr "Auslesen des XML für diesen RSS-Feed fehlgeschlagen" msgid "Fast" msgstr "Schnell" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoriten" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Lieblingsstücke" #: ../bin/src/ui_albumcovermanager.h:225 msgid "Fetch Missing Covers" -msgstr "Fehlende Titelbilder holen" +msgstr "Fehlende Titelbilder abrufen" #: ../bin/src/ui_albumcovermanager.h:216 msgid "Fetch automatically" -msgstr "Cover automatisch holen" +msgstr "Automatisch abrufen" #: ../bin/src/ui_coversearchstatisticsdialog.h:75 msgid "Fetch completed" -msgstr "Abholen abgeschlossen" +msgstr "Abrufen abgeschlossen" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Subsonic-Bibliothek wird abgerufen" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" -msgstr "Holen des Titelbildes fehlgeschlagen" +msgstr "Abrufen des Titelbildes ist fehlgeschlagen" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" msgstr "Dateiformat" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Dateiendung" @@ -2213,19 +2285,23 @@ msgstr "Dateiendung" msgid "File formats" msgstr "Dateiformate" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Dateiname" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Dateiname (ohne Dateipfad)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Dateinamenmuster:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dateigröße" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2235,7 +2311,7 @@ msgstr "Dateityp" msgid "Filename" msgstr "Dateiname" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Dateien" @@ -2243,15 +2319,19 @@ msgstr "Dateien" msgid "Files to transcode" msgstr "Zu konvertierende Dateien" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Titel in Ihrer Bibliothek finden, die den Kriterien entsprechen." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Diesen Interpret finden" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Titel analysieren" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Beenden" @@ -2259,7 +2339,7 @@ msgstr "Beenden" msgid "First level" msgstr "Erste Stufe" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2275,12 +2355,12 @@ msgstr "Aus lizenzrechtlichen Gründen ist die Spotify-Unterstützung in einer s msgid "Force mono encoding" msgstr "Mono-Kodierung erzwingen" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Gerät vergessen" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2295,7 +2375,7 @@ msgstr "Das Vergessen eines Geräts wird es aus dieser Liste entfernen und Cleme #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2323,31 +2403,23 @@ msgstr "Bildwiederholrate" msgid "Frames per buffer" msgstr "Frames pro Puffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Freunde" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Eingefroren" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Maximale Tiefen" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Maximale Tiefen und Höhen" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Maximale Höhen" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer Audio Engine" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Allgemein" @@ -2355,30 +2427,30 @@ msgstr "Allgemein" msgid "General settings" msgstr "Allgemeine Einstellungen" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" -msgstr "Erstelle eine URL um diese Wiedergabeliste auf Grooveshark zu teilen." +msgstr "Eine Adresse erhalten, um diese Grooveshark-Wiedergabeliste freizugeben." -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" -msgstr "Erstelle eine URL um diesen Titel auf Grooveshark zu teilen." +msgstr "Eine Adresse erhalten, um dieses Grooveshark-Lied freizugeben." -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Empfange »Beliebte Titel« von Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Kanäle laden" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Streams laden" @@ -2390,11 +2462,11 @@ msgstr "Namen angeben:" msgid "Go" msgstr "Start" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Zum nächsten Wiedergabelistenreiter wechseln" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Zum vorherigen Wiedergabelistenreiter wechseln" @@ -2402,7 +2474,7 @@ msgstr "Zum vorherigen Wiedergabelistenreiter wechseln" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2412,7 +2484,7 @@ msgstr "%1 Titelbilder von %2 wurden gefunden (%3 fehlgeschlagen)" msgid "Grey out non existent songs in my playlists" msgstr "Nicht gefundene Titel in meinen Wiedergabelisten ausgrauen" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2420,69 +2492,69 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark-Anmeldefehler" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" -msgstr "Grooveshark Wiedergabelisten URL" +msgstr "Grooveshark-Wiedergabelistenadresse" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark-Radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" -msgstr "Grooveshark-URL des Titels" +msgstr "Grooveshark-Adresse des Titels" #: ../bin/src/ui_groupbydialog.h:124 msgid "Group Library by..." msgstr "Bibliothek gruppieren nach …" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Gruppieren nach" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Nach Interpreten Sortieren" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Interpret/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Interpret/Jahr" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Genre/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Genre/Interpret/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppierung" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "Die angegebene HTML-Seite enthält keine RSS-Feeds" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." -msgstr "HTTP 3xx status code ohne URL erhalten, überprüfen Sie bitte die Server Einstellungen" +msgstr "HTTP 3xx Statuscode ohne Adresse erhalten, überprüfen Sie bitte die Server-Einstellungen" #: ../bin/src/ui_networkproxysettingspage.h:163 msgid "HTTP proxy" msgstr "HTTP Proxy" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Fröhlich" @@ -2498,25 +2570,25 @@ msgstr "Die Hardwareinformationen sind nur verfügbar, solange das Gerät angesc msgid "High" msgstr "Hoch" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Hoch (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Hoch (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" -msgstr "Host nicht gefunden, überprüfen Sie die Server-URL. Beispiel: http://localhost:4040/" +msgstr "Host nicht gefunden, überprüfen Sie bitte die Server-Adresse. Beispiel: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Stunden" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnosekröte" @@ -2528,15 +2600,15 @@ msgstr "Ich habe kein Magnatune-Konto" msgid "Icon" msgstr "Symbol" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Icons oben" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Musiktitel erkennen" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2544,26 +2616,26 @@ msgstr "Wenn Sie fortfahren, wird das Gerät langsam arbeiten und kopierte Titel #: ../bin/src/ui_addpodcastbyurl.h:77 msgid "If you know the URL of a podcast, enter it below and press Go." -msgstr "Wenn Sie die URL eines Podcasts kennen, geben Sie sie unten ein und drücken Sie Start." +msgstr "Wenn Sie die Adresse eines Podcasts kennen, geben Sie sie unten ein und drücken Sie Start." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "»The« in den Künstlernamen ignorieren" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Bilder (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Bilder (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "In %1 Tagen" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "In %1 Wochen" @@ -2574,48 +2646,48 @@ msgid "" "time a song finishes." msgstr "Im dynamischen Modus werden neue Titel automatisch ausgewählt und an die Wiedergabeliste angehängt, sobald ein Titel zu Ende ist." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Posteingang" #: ../bin/src/ui_notificationssettingspage.h:443 msgid "Include album art in the notification" -msgstr "Cover in der Benachrichtigung anzeigen" +msgstr "Titelbild in der Benachrichtigung anzeigen" #: ../bin/src/ui_querysearchpage.h:118 msgid "Include all songs" msgstr "Alle Titel einbeziehen" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Inkompatible »Subsonic REST protocol version«. Das Programm braucht eine Aktualisierung." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Inkompatible »Subsonic REST protocol version«. Der Server braucht eine Aktualisierung." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Unvollständige Konfiguration stellen Sie bitte sicher, dass alle Felder ausgefüllt sind." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Lautstärke um 4% erhöhen" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Lautstärke um Prozent erhöhen" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Lautstärke erhöhen" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indizierung %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Information" @@ -2623,55 +2695,55 @@ msgstr "Information" msgid "Input options" msgstr "Eingabeoptionen" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Einfügen …" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Installiert" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Integritätsprüfung" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internetdienstanbieter" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Ungültiger API-Schlüssel" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Ungültiges Format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Ungültige Methode" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Ungültige Parameter" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Ungültige Quelle angegeben" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Ungültiger Dienst" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Ungültiger Sitzungsschlüssel" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Benutzername und/oder Passwort ungültig" @@ -2679,42 +2751,42 @@ msgstr "Benutzername und/oder Passwort ungültig" msgid "Invert Selection" msgstr "Auswahl umkehren" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendos beliebteste Stücke" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendos Top-Titel" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendos Top-Titel des Monats" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendos Top-Titel der Woche" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo-Datenbank" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Zum aktuellen Stück springen" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Knöpfe für %1 Sekunde halten …" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Knöpfe für %1 Sekunden halten …" @@ -2723,11 +2795,12 @@ msgstr "Knöpfe für %1 Sekunden halten …" msgid "Keep running in the background when the window is closed" msgstr "Im Hintergrund weiterlaufen, wenn das Fenster geschlossen wurde" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Originale behalten" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Kätzchen" @@ -2735,11 +2808,11 @@ msgstr "Kätzchen" msgid "Language" msgstr "Sprache" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Kopfhörer" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Großer Raum" @@ -2747,58 +2820,24 @@ msgstr "Großer Raum" msgid "Large album cover" msgstr "Großes Titelbild" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Große Seitenleiste" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Zuletzt gespielt" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "Zuletzt wiedergegeben" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Benutzerdefiniertes Radio auf Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm-Bibliothek - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Mix Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm-Nachbarschaft - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Radio Station %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm Ähnliche Interpreten wie %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm-Schlagwortradio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm ist zurzeit überlastet. Versuchen Sie es später noch einmal." @@ -2806,11 +2845,11 @@ msgstr "Last.fm ist zurzeit überlastet. Versuchen Sie es später noch einmal." msgid "Last.fm password" msgstr "Passwort:" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm-Abspielzähler" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm-Schlagworte" @@ -2818,28 +2857,24 @@ msgstr "Last.fm-Schlagworte" msgid "Last.fm username" msgstr "Benutzername:" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm Wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Am wenigsten gemochte Stücke" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Beispiele: »/dev/dsp« , »front«, usw. Leer lassen für Standardeinstellung." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Links" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Länge" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliothek" @@ -2847,24 +2882,24 @@ msgstr "Bibliothek" msgid "Library advanced grouping" msgstr "Benutzerdefinierte Gruppierung der Bibliothek" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Hinweis beim erneuten durchsuchen der Bibliothek" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Bibliothek durchsuchen" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Begrenzungen" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Titel auf Grooveshark aufgrund von Ihren bisherigen Hörgewohnheiten auswählen." -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2876,15 +2911,15 @@ msgstr "Laden" msgid "Load cover from URL" msgstr "Titelbild von Adresse laden" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Titelbild von Adresse laden …" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Titelbild aus Datei laden" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Titelbild von Datenträger wählen …" @@ -2892,84 +2927,89 @@ msgstr "Titelbild von Datenträger wählen …" msgid "Load playlist" msgstr "Wiedergabeliste laden" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Wiedergabeliste laden …" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm-Radio wird geladen" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Lade MTP-Gerät" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod-Datenbank laden" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Intelligente Wiedergabeliste wird geladen" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Lade Titel" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Lade Stream" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Lade Stücke" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Lade Stückinfo" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Wird geladen …" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" -msgstr "Öffne Dateien/URLs und ersetze die Wiedergabeliste" +msgstr "Dateien/Adressen laden und die Wiedergabeliste ersetzen" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Anmelden" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Anmeldung fehlgeschlagen" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Abmelden" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Langzeitvorhersageprofil (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Lieben" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Niedrig (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Niedrig (256x256)" @@ -2981,12 +3021,17 @@ msgstr "Geringes Komplexitätsprofil (LC)" msgid "Lyrics" msgstr "Liedtexte" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Liedtexte von %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2998,15 +3043,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -3014,7 +3059,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magantune-Herunterladen" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune-Herunterladen beendet" @@ -3022,15 +3067,20 @@ msgstr "Magnatune-Herunterladen beendet" msgid "Main profile (MAIN)" msgstr "Hauptprofil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" -msgstr "Make it so!" +msgstr "Machen Sie es so!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Machen Sie es so!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Wiedergabeliste für die Offlinebenutzung verfügbar machen" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Ungültige Antwort" @@ -3043,15 +3093,15 @@ msgstr "Manuelle Proxy-Konfiguration" msgid "Manually" msgstr "Manuell" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Hersteller" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Als gehört markieren" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Als ungehört markieren" @@ -3063,17 +3113,21 @@ msgstr "Alle Suchbegriffe kommen vor (UND)" msgid "Match one or more search terms (OR)" msgstr "Mindestens ein Suchbegriff kommt vor (ODER)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Maximale globale Suchergebnisse" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maximale Bitrate" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Mittel (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Mittel (512x512)" @@ -3085,11 +3139,15 @@ msgstr "Art der Mitgliedschaft:" msgid "Minimum bitrate" msgstr "Minimale Bitrate" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Mindestpufferfüllung" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "projectM-Voreinstellungen fehlen" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modell" @@ -3097,36 +3155,40 @@ msgstr "Modell" msgid "Monitor the library for changes" msgstr "Bibliothek auf Änderungen überwachen" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono-Wiedergabe" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Monate" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Stimmung" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" -msgstr "Stimmungsbarometer-Style" +msgstr "Stimmungsbarometerstil" #: ../bin/src/ui_appearancesettingspage.h:292 msgid "Moodbars" msgstr "Stimmungsbarometer" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Mehr" + +#: library/library.cpp:84 msgid "Most played" msgstr "Meistgespielt" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Einhängepunkt" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Einhängepunkte" @@ -3135,7 +3197,7 @@ msgstr "Einhängepunkte" msgid "Move down" msgstr "Nach unten" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Zur Bibliothek verschieben …" @@ -3144,7 +3206,7 @@ msgstr "Zur Bibliothek verschieben …" msgid "Move up" msgstr "Nach oben" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musik" @@ -3152,56 +3214,32 @@ msgstr "Musik" msgid "Music Library" msgstr "Musikbibliothek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Stumm" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Meine Last.fm-Bibliothek" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Mein Last.fm Mix Radio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Meine Last.fm-Nachbarn" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Meine Last.fm-Empfehlungen" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Mein Mix-Radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Meine Musik" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Meine Nachbarn" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Meine Radiostation" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Meine Empfehlungen" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Name" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Name" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Benennungsoptionen" @@ -3209,23 +3247,19 @@ msgstr "Benennungsoptionen" msgid "Narrow band (NB)" msgstr "Schmal-Band (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Nachbarn" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Netzwerk-Proxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Netzwerkfernsteuerung" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Niemals" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nie gespielt" @@ -3234,21 +3268,21 @@ msgstr "Nie gespielt" msgid "Never start playing" msgstr "Nie mit der Wiedergabe beginnen" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Neuer Ordner" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Neue Wiedergabeliste" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Neue intelligente Wiedergabeliste …" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Neue Titel" @@ -3256,24 +3290,24 @@ msgstr "Neue Titel" msgid "New tracks will be added automatically." msgstr "Neue Musiktitel werden automatisch hinzugefügt." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Neueste Stücke" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Weiter" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Nächstes Stück" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Nächste Woche" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Keine Visualisierung" @@ -3281,7 +3315,7 @@ msgstr "Keine Visualisierung" msgid "No background image" msgstr "Kein Hintergrundbild" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Keine Titelbilder zum Exportieren." @@ -3289,7 +3323,7 @@ msgstr "Keine Titelbilder zum Exportieren." msgid "No long blocks" msgstr "Keine langen Blöcke" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Keine Treffer. Leeren Sie das Suchfeld, um wieder die gesamte Wiedergabeliste anzuzeigen." @@ -3303,11 +3337,11 @@ msgstr "Keine kurzen Blöcke" msgid "None" msgstr "Nichts" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Keiner der gewählten Titel war zum Kopieren auf ein Gerät geeignet." -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Standard" @@ -3315,43 +3349,47 @@ msgstr "Standard" msgid "Normal block type" msgstr "Normaler Blocktyp" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Nicht verfügbar während eine dynamische Wiedergabeliste benutzt wird" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nicht verbunden" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nicht genug Inhalt" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nicht genug Fans" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nicht genug Mitglieder" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nicht genug Nachbarn" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Nicht installiert" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Nicht angemeldet" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Nicht eingehängt – doppelklicken zum Einhängen" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Nichts gefunden" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Art der Benachrichtigung" @@ -3364,36 +3402,41 @@ msgstr "Benachrichtigungen" msgid "Now Playing" msgstr "Aktueller Musiktitel" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" -msgstr "OSD-Vorschau" +msgstr "Vorschau der Bildschirmanzeige" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Aus" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "An" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3401,11 +3444,11 @@ msgid "" "192.168.x.x" msgstr "Verbindungen, nur von Programmen, aus folgenden IP-Bereichen akzeptieren:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Nur Verbindungen aus dem lokalen Netzwerk" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Nur die ersten" @@ -3413,23 +3456,23 @@ msgstr "Nur die ersten" msgid "Opacity" msgstr "Deckkraft" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "%1 im Browser öffnen" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "&Audio-CD öffnen …" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "OPML-Datei öffnen" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "OPML-Datei öffnen …" @@ -3437,30 +3480,35 @@ msgstr "OPML-Datei öffnen …" msgid "Open device" msgstr "Gerät öffnen" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Datei öffnen …" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "In Google Drive öffnen" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "In einer neuen Wiedergabeliste öffnen" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "In neuen Wiedergabeliste öffnen" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Im Browser öffnen" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Öffnen …" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Aktion fehlgeschlagen" @@ -3480,23 +3528,23 @@ msgstr "Optionen …" msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Dateien organisieren" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Dateien organisieren …" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Dateien organisieren" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Originalschlagworte" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Weitere Optionen" @@ -3504,7 +3552,7 @@ msgstr "Weitere Optionen" msgid "Output" msgstr "Ausgabe" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Ausgabegerät" @@ -3512,15 +3560,11 @@ msgstr "Ausgabegerät" msgid "Output options" msgstr "Ausgabeoptionen" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Ausgabeerweiterung" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Alles überschreiben" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Bestehende Dateien überschreiben" @@ -3532,15 +3576,15 @@ msgstr "Nur kleinere überschrieben" msgid "Owner" msgstr "Besitzer" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Jamendo-Katalog wird eingelesen" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3549,20 +3593,20 @@ msgstr "Party" msgid "Password" msgstr "Passwort:" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pause" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Wiedergabe pausieren" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pausiert" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Besetzung" @@ -3571,34 +3615,22 @@ msgstr "Besetzung" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Einfache Seitenleiste" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Wiedergabe" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Wiedergabe nach Interpret oder Schlagwort" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Künstlerradio abspielen …" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Abspielzähler" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Benutzerdefiniertes Radio abspielen …" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Wiedergeben wenn angehalten, pausieren bei Wiedergabe" @@ -3607,45 +3639,42 @@ msgstr "Wiedergeben wenn angehalten, pausieren bei Wiedergabe" msgid "Play if there is nothing already playing" msgstr "Mit der Wiedergabe beginnen, falls gerade nichts anderes abgespielt wird" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Schlagwortradio abspielen …" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Spiele Stück Nummer der Wiedergabeliste" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Abspielen/Pause" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Wiedergabe" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Spielereinstellungen" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Wiedergabeliste" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Wiedergabeliste beendet" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Wiedergabeliste einrichten" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Art der Wiedergabeliste" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Wiedergabelisten" @@ -3657,57 +3686,58 @@ msgstr "Bitte Browser schließen und zu Clementine zurückkehren" msgid "Plugin status:" msgstr "Erweiterungsstatus:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Beliebte Titel" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Beliebte Titel diesen Monat" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Beliebte Titel Heute" #: ../bin/src/ui_notificationssettingspage.h:438 msgid "Popup duration" -msgstr "Anzeigedauer:" +msgstr "Anzeigedauer" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" -msgstr "Anschluss" +msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Vorverstärkung:" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Einstellungen" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Einstellungen …" #: ../bin/src/ui_librarysettingspage.h:202 msgid "Preferred album art filenames (comma separated)" -msgstr "Bevorzugte Dateinamen für Cover (durch Komma getrennt):" +msgstr "Bevorzugte Dateinamen für Titelbilder (durch Komma getrennt):" #: ../bin/src/ui_magnatunesettingspage.h:167 msgid "Preferred audio format" -msgstr "Bevorzugtes Dateiformat:" +msgstr "Bevorzugtes Tonformat:" #: ../bin/src/ui_spotifysettingspage.h:217 msgid "Preferred bitrate" @@ -3719,7 +3749,7 @@ msgstr "Bevorzugtes Format" #: ../bin/src/ui_digitallyimportedsettingspage.h:174 msgid "Premium audio type" -msgstr "Premium-Streaming-Format:" +msgstr "Premium Tontyp:" #: ../bin/src/ui_equalizer.h:164 msgid "Preset:" @@ -3733,31 +3763,31 @@ msgstr "Drücken Sie eine Knopfkombination für" msgid "Press a key" msgstr "Taste drücken" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Eine Tastenkombination für %1 drücken …" #: ../bin/src/ui_notificationssettingspage.h:451 msgid "Pretty OSD options" -msgstr "Einstellungen für das Clementine-OSD" +msgstr "Einstellungen für die Clementine-Bildschirmanzeige" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Vorschau" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Vorheriger" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Vorheriges Stück" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Versionsinformationen anzeigen" @@ -3765,21 +3795,25 @@ msgstr "Versionsinformationen anzeigen" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Fortschritt" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Fortschritt" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psychedelisch" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Taste auf Wii-Fernbedienung drücken" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Zufällige Titelreihenfolge" @@ -3787,36 +3821,46 @@ msgstr "Zufällige Titelreihenfolge" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Qualität" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Gerät wird abgefragt …" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Warteschlangenverwaltung" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Stücke in die Warteschlange einreihen" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Stück in die Warteschlange einreihen" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (gleicher Pegel für alle Stücke)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Regen" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Regen" @@ -3824,48 +3868,48 @@ msgstr "Regen" msgid "Random visualization" msgstr "Zufällige Visualisierung" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Bewerten Sie den aktuellen Titel 0 Sterne" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Bewerten Sie den aktuellen Titel 1 Stern" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Bewerten Sie den aktuellen Titel 2 Sterne" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Bewerten Sie den aktuellen Titel 3 Sterne" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Bewerten Sie den aktuellen Titel 4 Sterne" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Bewerten Sie den aktuellen Titel 5 Sterne" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Bewertung" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Wirklich abbrechen?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Die Umleitungsgrenze wurde überschritten, bitte überprüfen Sie die Server-Einstellungen" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Aktualisieren" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Katalog neu laden" @@ -3873,19 +3917,15 @@ msgstr "Katalog neu laden" msgid "Refresh channels" msgstr "Kanäle aktualisieren" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Freundesliste aktualisieren" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Senderliste aktualisieren" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Streams aktualisieren" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3897,8 +3937,8 @@ msgstr "Bewegung der Wii-Fernbedienung merken" msgid "Remember from last time" msgstr "Clementine starten wie es beendet wurde" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Entfernen" @@ -3906,7 +3946,7 @@ msgstr "Entfernen" msgid "Remove action" msgstr "Aktion entfernen" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Duplikate aus der Wiedergabeliste entfernen" @@ -3914,73 +3954,77 @@ msgstr "Duplikate aus der Wiedergabeliste entfernen" msgid "Remove folder" msgstr "Ordner entfernen" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Aus »Meine Musik« entfernen" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Aus den Lesezeichen entfernen" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Von Favoriten entfernen" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Aus der Wiedergabeliste entfernen" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Wiedergabeliste entfernen" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Wiedergabeliste entfernen" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Titel werden aus »Meine Musik« entfernt" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Titel werden von Favoriten entfernt" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Die Wiedergabeliste »%1« umbenennen" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Grooveshark-Wiedergabeliste umbenennen" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Wiedergabeliste umbenennen" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Wiedergabeliste umbenennen …" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Musiktitel in dieser Reihenfolge neu nummerieren …" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Wiederholung" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Album wiederholen" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Wiedergabeliste wiederholen" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Stück wiederholen" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Wiedergabeliste ersetzen" @@ -3989,15 +4033,15 @@ msgstr "Wiedergabeliste ersetzen" msgid "Replace the playlist" msgstr "Die Wiedergabeliste ersetzen lassen" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Leerzeichen mit Unterstrichen ersetzen" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Wiederholungsverstärker" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Wiederholungsverstärkermodus" @@ -4005,24 +4049,24 @@ msgstr "Wiederholungsverstärkermodus" msgid "Repopulate" msgstr "Neu bestücken" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Authentifizierungs-Code erzwingen" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Zurücksetzen" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Abspielzähler zurücksetzen" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Starten Sie den Titel oder den vorherigen Titel, wenn sie innerhalb von 8 Sekunden nach Beginn." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Nur ASCII-Zeichen benutzen" @@ -4030,15 +4074,15 @@ msgstr "Nur ASCII-Zeichen benutzen" msgid "Resume playback on start" msgstr "Wiedergabe beim Start fortsetzten" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Abrufen von Grooveshark-»Meine Musik«-Titel" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Rufe favorisierte Titel von Grooveshark ab" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Rufe Grooveshark-Wiedergabelisten ab" @@ -4058,11 +4102,11 @@ msgstr "Auslesen" msgid "Rip CD" msgstr "CD auslesen" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Audio-CD auslesen …" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4074,25 +4118,25 @@ msgstr "Ausführen" msgid "SOCKS proxy" msgstr "SOCKS-Proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "SSL-Handshake Fehler, überprüfen sie die Serverkonfiguration. Die SSLv3 Option unten kann die Lösung einiger Probleme sein." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Gerät sicher entfernen" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Das Gerät nach dem Kopiervorgang sicher entfernen" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Abtastrate" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Abtastrate" @@ -4100,27 +4144,33 @@ msgstr "Abtastrate" msgid "Save .mood files in your music library" msgstr ".mood-Datei in Ihrer Bibliothek speichern" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Titelbild speichern" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Titelbild auf Datenträger speichern …" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Bild speichern" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Wiedergabeliste speichern" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Wiedergabeliste speichern" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Wiedergabeliste speichern …" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Voreinstellung speichern" @@ -4136,11 +4186,11 @@ msgstr "Wenn möglich, Statistiken in Dateischlagworten speichern" msgid "Save this stream in the Internet tab" msgstr "Diesen Stream im Internet-Reiter sichern" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Speichere Titel-Statistiken in die Titel-Datei" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Titel werden gespeichert" @@ -4152,7 +4202,7 @@ msgstr "Skalierbares Abtastratenprofil (SSR)" msgid "Scale size" msgstr "Bildgröße anpassen" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Punkte" @@ -4160,10 +4210,14 @@ msgstr "Punkte" msgid "Scrobble tracks that I listen to" msgstr "Stücke, die ich höre, »scrobbeln«" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Suche" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Suche" @@ -4171,23 +4225,23 @@ msgstr "Suche" msgid "Search Icecast stations" msgstr "Suche nach Icecast-Sendern" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Suche in Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Magnatune durchsuchen" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Suche Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Automatisch suchen" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Nach Titelbild suchen …" @@ -4207,21 +4261,21 @@ msgstr "iTunes durchsuchen" msgid "Search mode" msgstr "Suchmodus" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Suchoptionen" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Suchergebnisse" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Suchbegriffe" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Suche auf Grooveshark" @@ -4229,27 +4283,27 @@ msgstr "Suche auf Grooveshark" msgid "Second level" msgstr "Zweite Stufe" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Zurückspulen" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Vorspulen" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Im aktuellen Stück vorspulen" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Im aktuellen Stück zu einer Position springen" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Alle auswählen" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Auswahl aufheben" @@ -4257,7 +4311,7 @@ msgstr "Auswahl aufheben" msgid "Select background color:" msgstr "Hintergrundfarbe:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Hintergrundbild wählen" @@ -4273,7 +4327,7 @@ msgstr "Schriftfarbe:" msgid "Select visualizations" msgstr "Visualisierungen auswählen" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Visualisierungen auswählen …" @@ -4281,7 +4335,7 @@ msgstr "Visualisierungen auswählen …" msgid "Select..." msgstr "Auswählen …" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Seriennummer" @@ -4293,51 +4347,51 @@ msgstr "Server-Adresse" msgid "Server details" msgstr "Server-Details" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Dienst nicht verfügbar" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 zu »%2« einstellen …" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Setze Lautstärke auf %" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Wert für ausgewählte Stücke einstellen …" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Einstellungen" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Tastenkürzel" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Tastenkürzel für %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Kürzel für %1 existiert bereits" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Anzeigen" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" -msgstr "Benachrichtigung anzeigen" +msgstr "Bildschirmanzeige anzeigen" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Das aktuelle Stück mit einem animierten Glühen hervorheben" @@ -4351,11 +4405,11 @@ msgstr "Benachrichtigungen des Systems benutzen" #: ../bin/src/ui_notificationssettingspage.h:442 msgid "Show a notification when I change the repeat/shuffle mode" -msgstr "Zeige eine Benachrichtigung bei Änderung der Wiederholungsart bzw. des Zufallsmodus" +msgstr "Eine Benachrichtigung, bei Änderung der Wiederholungsart bzw. des Zufallsmodus, anzeigen" #: ../bin/src/ui_notificationssettingspage.h:441 msgid "Show a notification when I change the volume" -msgstr "Zeige eine Benachrichtigung bei Lautstärkenänderung" +msgstr "Benachrichtigung bei Änderung der Lautstärke anzeigen" #: ../bin/src/ui_notificationssettingspage.h:436 msgid "Show a popup from the system tray" @@ -4363,17 +4417,17 @@ msgstr "Blase aus dem Benachrichtigungsfeld" #: ../bin/src/ui_notificationssettingspage.h:435 msgid "Show a pretty OSD" -msgstr "Clementine-OSD benutzen" +msgstr "Clementine-Bildschirmanzeige anzeigen" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" -msgstr "Oberhalb der Statusleiste zeigen" +msgstr "Oberhalb der Statusleiste anzeigen" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Alle Titel anzeigen" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Alle Titel anzeigen" @@ -4385,32 +4439,36 @@ msgstr "Titelbilder in der Bibliothek anzeigen" msgid "Show dividers" msgstr "Trenner anzeigen" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." -msgstr "In Originalgröße zeigen …" +msgstr "In Originalgröße anzeigen …" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Gruppen in den globalen Suchergebnissen anzeigen" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Im Dateibrowser anzeigen …" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "In Bibliothek anzeigen …" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Unter »Verschiedene Interpreten« anzeigen" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Stimmungsbarometer anzeigen" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Nur Duplikate anzeigen" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Nur ohne Schlagworte anzeigen" @@ -4419,8 +4477,8 @@ msgid "Show search suggestions" msgstr "Suchvorschläge anzeigen" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "»Lieben«- und »Blockieren«-Knöpfe anzeigen" +msgid "Show the \"love\" button" +msgstr "Den »Lieben«-Knopf anzeigen" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4434,27 +4492,27 @@ msgstr "Clementine im Benachrichtigungsfeld anzeigen" msgid "Show which sources are enabled and disabled" msgstr "Anzeigen, welche Quellen aktiviert und deaktiviert sind" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Anzeigen/Ausblenden" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Zufallsmodus" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Zufällige Albenreihenfolge" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Zufällige Titelreihenfolge" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Wiedergabeliste mischen" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Zufällige Titelreihenfolge innerhalb eines Albums" @@ -4470,7 +4528,7 @@ msgstr "Abmelden" msgid "Signing in..." msgstr "Anmelden …" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Ähnliche Interpreten" @@ -4482,43 +4540,51 @@ msgstr "Größe" msgid "Size:" msgstr "Größe:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Voriges Stück in der Wiedergabeliste" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Sprungzähler" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Nächstes Stück in der Wiedergabeliste" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Ausgewählten Stücke überspringen" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Stück überspringen" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Kleines Titelbild" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "schmale Seitenleiste" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Intelligente Wiedergabeliste" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Intelligente Wiedergabelisten" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4526,11 +4592,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Titelinformationen" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Titelinfo" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogramm" @@ -4550,15 +4616,23 @@ msgstr "Sortiert nach Genre (nach Popularität)" msgid "Sort by station name" msgstr "Sortiere nach Sendernamen" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Wiedergabelistenlieder alphabetisch sortieren" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Titel sortieren nach" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sortierung" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Quelle" @@ -4574,7 +4648,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Fehler beim Anmelden bei Spotify" @@ -4582,7 +4656,7 @@ msgstr "Fehler beim Anmelden bei Spotify" msgid "Spotify plugin" msgstr "Spotify-Erweiterung" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify-Erweiterung nicht installiert" @@ -4590,77 +4664,77 @@ msgstr "Spotify-Erweiterung nicht installiert" msgid "Standard" msgstr "Standard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Markiert" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Auslesen starten" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Spiele das aktuelle Stück in der Wiedergabeliste ab" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Konvertieren" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Geben Sie etwas in die Suchleiste ein um diese Ergebnisliste zu füllen" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Starte %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Starten …" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Sender" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Anhalten" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Anhalten nach" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Wiedergabe nach diesem Stück beenden" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Wiedergabe anhalten" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Wiedergabe nach Stück anhalten" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Wiedergabe anhalten nach: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Angehalten" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4670,7 +4744,7 @@ msgstr "Um von einem Subsonic-Server streamen zu können, wird nach Ablauf der 3 msgid "Streaming membership" msgstr "Streamingmitgliedschaft" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Abonnierte Wiedergabelisten" @@ -4678,7 +4752,7 @@ msgstr "Abonnierte Wiedergabelisten" msgid "Subscribers" msgstr "Abonnenten" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4686,12 +4760,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Erfolg!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 erfolgreich geschrieben" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Vorgeschlagene Schlagworte" @@ -4700,13 +4774,13 @@ msgstr "Vorgeschlagene Schlagworte" msgid "Summary" msgstr "Kopfzeile:" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Sehr hoch (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Sehr hoch (2048x2048)" @@ -4718,55 +4792,47 @@ msgstr "Unterstützte Formate" msgid "Synchronize statistics to files now" msgstr "Jetzt die Statistiken mit den Dateien synchronisieren" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synchronisiere Spotify-Postfach" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synchronisiere Spotify-Wiedergabeliste" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synchronisiere markierte Stücke von Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Systemfarben" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Reiter oben" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Schlagwort" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Schlagwortsammler" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Schlagwortradio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Ziel-Bitrate" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" #: ../bin/src/ui_notificationssettingspage.h:460 msgid "Text options" -msgstr "Texteinstellungen" +msgstr "Texteinstellungen:" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Dank an" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Der Befehl »%1« konnte nicht ausgeführt werden." @@ -4775,17 +4841,12 @@ msgstr "Der Befehl »%1« konnte nicht ausgeführt werden." msgid "The album cover of the currently playing song" msgstr "Das Titelbild des gerade abgespielten Titels" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Ordner %1 ist ungültig" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Die Wiedergabeliste »%1« ist leer oder konnte nicht geladen werden." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Der zweite Wert muss größer als der erste sein!" @@ -4793,40 +4854,40 @@ msgstr "Der zweite Wert muss größer als der erste sein!" msgid "The site you requested does not exist!" msgstr "Die aufgerufene Seite existiert nicht!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Die angeforderte Seite ist kein Bild!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Die Versuchsperiode für den Subsonic-Server ist abgelaufen. Bitte machen Sie eine Spende, um einen Lizenzschlüssel zu erhalten. Details finden sich auf subsonic.org." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Die Clementine-Version, auf die Sie gerade aktualisiert haben, erfordert eine komplette Aktualisierung Ihrer Bibliothek, damit die folgenden neuen Funktionen genutzt werden können:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Dieses Album enthält auch andere Titel" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Bei der Kommunikation mit gpodder.net trat ein Fehler auf" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" -msgstr "Beim Holen der Metadaten von Magnatune ist ein Fehler aufgetreten" +msgstr "Beim Abrufen der Metadaten von Magnatune ist ein Fehler aufgetreten" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Es gab Probleme, die Antwort von iTunes auszulesen" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4838,13 +4899,13 @@ msgid "" "deleted:" msgstr "Beim Löschen einiger Titel ist ein Fehler aufgetreten. Die folgenden Dateien konnten nicht gelöscht werden:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Diese Dateien werden vom Gerät gelöscht. Möchten Sie wirklich fortfahren?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4864,13 +4925,13 @@ msgstr "Diese Einstellungen werden im »Musik konvertieren«-Dialog und beim Kon msgid "Third level" msgstr "Dritte Stufe" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Diese Aktion wird eine Datenbank erstellen, die ungefähr 150 MB einnehmen könnte." -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Das Album ist im gewünschten Format nicht verfügbar" @@ -4884,11 +4945,11 @@ msgstr "Dieses Gerät muss verbunden und geöffnet sein, bevor Clementine festst msgid "This device supports the following file formats:" msgstr "Dieses Gerät unterstützt die folgenden Dateiformate:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Dieses Gerät wird nicht ordnungsgemäß funktionieren" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Dies ist ein MTP-Gerät, aber Clementine wurde ohne Unterstützung für libmtp kompiliert." @@ -4897,7 +4958,7 @@ msgstr "Dies ist ein MTP-Gerät, aber Clementine wurde ohne Unterstützung für msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Dies ist ein iPod, aber Clementine wurde ohne Unterstützung für libgpod kompiliert." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4907,61 +4968,61 @@ msgstr "Dieses Gerät wurde zum ersten Mal verbunden. Clementine wird es nun nac msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Diese Einstellung kann in den »Verhalten«-Einstellungen geändert werden" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Dieser Stream ist nur für zahlende Kunden verfügbar" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Diese Geräteart wird nicht unterstützt: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Bevor Sie das Grooveshark-Radio verwenden, sollten Sie zuerst ein paar andere Titel auf Grooveshark hören." -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Heute" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" -msgstr "Clementine-OSD anzeigen" +msgstr "Clementine-Bildschirmanzeige umschalten" #: visualisations/visualisationcontainer.cpp:101 msgid "Toggle fullscreen" msgstr "Vollbild an/aus" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Einreihungsstatus ändern" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Scrobbeln ein- oder ausschalten" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" -msgstr "Sichtbarkeit des Clementine-OSD anpassen" +msgstr "Sichtbarkeit der Clementine-Bildschirmanzeige anpassen" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Morgen" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Zu viele Umleitungen" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Top-Titel" @@ -4969,21 +5030,25 @@ msgstr "Top-Titel" msgid "Total albums:" msgstr "Gesammte Alben:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Insgesamt übertragene Bytes" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Insgesamt gestellte Netzwerkanfragen" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Stück" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Stücke" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Musik konvertieren" @@ -4995,7 +5060,7 @@ msgstr "Log" msgid "Transcoding" msgstr "Konvertierung" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Konvertiere %1 Dateien mit %2 Prozessen" @@ -5004,11 +5069,11 @@ msgstr "Konvertiere %1 Dateien mit %2 Prozessen" msgid "Transcoding options" msgstr "Konvertierungsoptionen" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -5016,72 +5081,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Ausschalten" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" -msgstr "URI" +msgstr "Adresse" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Adresse(n)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One passwort" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One benutzername" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ulte Weit Band (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Konnte %1 nicht herunterladen (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Unbekannt" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Unbekannter Inhalt" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Unbekannter Fehler" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Titelbild entfernen" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Überspringen der ausgewählten Stücke aufheben" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Stück nicht überspringen" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Abonnement kündigen" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Nächste Konzerte" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Aktualisieren" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Grooveshark-Wiedergabelisten aktualisieren" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Alle Podcasts aktualisieren" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Geänderte Bibliotheksordner aktualisieren" @@ -5089,7 +5154,7 @@ msgstr "Geänderte Bibliotheksordner aktualisieren" msgid "Update the library when Clementine starts" msgstr "Bibliothek beim Programmstart aktualisieren" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Diesen Podcast aktualisieren" @@ -5097,21 +5162,21 @@ msgstr "Diesen Podcast aktualisieren" msgid "Updating" msgstr "Aktualisieren" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Aktualisiere %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "%1% aktualisieren …" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Bibliothek aktualisieren" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Benutzung" @@ -5119,13 +5184,13 @@ msgstr "Benutzung" msgid "Use Album Artist tag when available" msgstr "Wenn verfügbar Album-Interpret benutzen" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gnome-Tastenkürzel verwenden" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" -msgstr "Wenn verfügbar Wiederholungsverstärkermetadaten verwenden" +msgstr "Metadaten des Wiederholungsverstärkers verwenden, wenn verfügbar" #: ../bin/src/ui_subsonicsettingspage.h:129 msgid "Use SSLv3" @@ -5143,7 +5208,7 @@ msgstr "Ein benutzerdefiniertes Farbschema verwenden" msgid "Use a custom message for notifications" msgstr "Einen benutzerdefinierten Text für Benachrichtigungen benutzen" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Eine Netzwerkfernsteuerung verwenden" @@ -5161,7 +5226,7 @@ msgstr "Dynamischen Modus benutzen" #: ../bin/src/ui_wiimotesettingspage.h:188 msgid "Use notifications to report Wii Remote status" -msgstr "Benachrichtigungen zum Anzeigen des Status der Wii-Fernbedienung benutzen" +msgstr "Um den Status der Wii-Fernbedienung anzuzeigen, Benachrichtigungen benutzen" #: ../bin/src/ui_transcoderoptionsaac.h:139 msgid "Use temporal noise shaping" @@ -5183,20 +5248,20 @@ msgstr "Verwende Proxy-Einstellungen des Betriebssystems" msgid "Use volume normalisation" msgstr "Lautstärkepegel angleichen" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Belegt" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Der Benutzer %1 besitzt kein Grooveshark-Anywhere-Konto." -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Benutzeroberfläche" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5218,12 +5283,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Variable Bitrate" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Verschiedene Interpreten" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Version %1" @@ -5236,7 +5301,7 @@ msgstr "Ansicht" msgid "Visualization mode" msgstr "Art der Visualisierung" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualisierungen" @@ -5244,11 +5309,15 @@ msgstr "Visualisierungen" msgid "Visualizations Settings" msgstr "Visualisierungs-Einstellungen" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Sprachaktivitätserkennung" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Lautstärke %1%" @@ -5266,11 +5335,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Hinweis beim Schließen eines Wiedergabelistenreiters anzeigen" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "WAV" @@ -5278,7 +5347,7 @@ msgstr "WAV" msgid "Website" msgstr "Internetseite" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Wochen" @@ -5290,7 +5359,7 @@ msgstr "Beim Programmstart" msgid "" "When looking for album art Clementine will first look for picture files that contain one of these words.\n" "If there are no matches then it will use the largest image in the directory." -msgstr "Auf der Suche nach Cover-Bildern wird Clementine zuerst nach Bilddateien suchen, die eines dieser Wörter enthalten.\nFalls es keine Treffer gibt, wird das größte Bild aus dem Verzeichnis ausgewählt." +msgstr "Auf der Suche nach Titelbildern wird Clementine zuerst nach Bilddateien suchen, die eines dieser Wörter enthalten.\nFalls es keine Treffer gibt, wird das größte Bild aus dem Ordner ausgewählt." #: ../bin/src/ui_globalsearchsettingspage.h:151 msgid "When the list is empty..." @@ -5304,32 +5373,32 @@ msgstr "Versuchen Sie zum Beispiel …" msgid "Wide band (WB)" msgstr "Weit Band (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii-Fernbedienung %1 aktiviert" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii-Fernbedienung %1 verbunden" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii-Fernbedienung %1: Ladestand kritisch (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii-Fernbedienung %1 deaktiviert" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii-Fernbedienung %1 getrennt" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii-Fernbedienung %1: Ladestand niedirg (%2%)" @@ -5350,7 +5419,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media Audio" @@ -5358,25 +5427,25 @@ msgstr "Windows Media Audio" msgid "Without cover:" msgstr "Ohne Titelbild:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Möchten Sie die anderen Titel dieses Albums ebenfalls unter »Verschiedene Interpreten« anzeigen?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Möchten Sie jetzt Ihre Musiksammlung erneut einlesen?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Speichere alle Titel-Statistiken in die Titel-Dateien" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Benutzername oder Passwort falsch." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5388,11 +5457,11 @@ msgstr "Jahr" msgid "Year - Album" msgstr "Jahr – Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Jahre" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Gestern" @@ -5400,13 +5469,13 @@ msgstr "Gestern" msgid "You are about to download the following albums" msgstr "Die Folgenden Alben werden jetzt heruntergeladen" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Wollen Sie %1 Wiedergabelisten löschen?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5416,12 +5485,12 @@ msgstr "Sie entfernen eine nicht favorisierte Wiedergabeliste. Die Wiedergabelis msgid "You are not signed in." msgstr "Sie sind nicht angemeldet." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Sie sind angemeldet als %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Sie sind angemeldet." @@ -5429,13 +5498,13 @@ msgstr "Sie sind angemeldet." msgid "You can change the way the songs in the library are organised." msgstr "Sie können hier einstellen, wie Ihre Bibliothek sortiert wird." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Das Zuhören ist kostenlos ohne Anmeldung möglich, aber Premium-Mitglieder haben Zugriff auf werbefreie Streams mit höherer Audioqualität." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5445,13 +5514,6 @@ msgstr "Sie können ohne Benutzerkonto Musik von Magnatune hören. Um die Hinwei msgid "You can listen to background streams at the same time as other music." msgstr "Sie können zur gleichen Zeit Hintergrundstreams und andere Musik hören." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Sie können Musik kostenlos »scrobbeln«, aber nur zahlende Last.fm-Kunden können Last.fm-Radio mit Clementine hören." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Sie können Ihre Wii-Fernbedienung als Fernbedienung für Clementine benutzen. Mehr Informationen dazu gibt es auf der entsprechenden Seite im Clementine-Wiki.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Sie haben kein Grooveshark-Anywhere-Konto." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Sie haben kein Spotify-Premium-Konto." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Sie haben kein aktives Abonnement." -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Sie müssen angemeldet sein, um Musik auf SoundCloud zu suchen und zu hören. Ebenfalls müssen Sie sich anmelden, um auf Ihre Wiedergabelisten und Ihren Datenstrom zugreifen zu können." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Sie wurden von Spotify abgemeldet. Bitte geben Sie Ihr Passwort erneut in den Einstellungen für Spotify an." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Sie wurden von Spotify abgemeldet. Bitte geben Sie Ihr Passwort erneut ein." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Sie lieben dieses Stück" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Sie müssen die Systemeinstellungen öffnen und »Zugriff für Hilfsgeräte aktivieren« in »Bedienhilfen« aktivieren, um Clementines Tastenkürzel zu benutzen." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5496,17 +5572,11 @@ msgstr "Öffnen Sie die Systemeinstellungen und aktivieren Sie », 2011, 2012 -# axil Pι , 2013 -# axil Pι , 2012 +# axil Pι, 2013 +# axil Pι, 2012 # firewalker , 2013 # firewalker , 2011-2012 # Nisok Kosin , 2012 @@ -14,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Greek (http://www.transifex.com/projects/p/clementine/language/el/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,7 +23,7 @@ msgstr "" "Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -47,9 +48,9 @@ msgstr " ημέρες" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -62,11 +63,16 @@ msgstr " σημ" msgid " seconds" msgstr " δευτερόλεπτα" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " τραγούδια" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 άλμπουμ" @@ -76,12 +82,12 @@ msgstr "%1 άλμπουμ" msgid "%1 days" msgstr "%1 ημέρες" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "Πριν %1 ημέρες" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 στο %2" @@ -91,48 +97,48 @@ msgstr "%1 στο %2" msgid "%1 playlists (%2)" msgstr "%1 λίστες αναπαραγωγής (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 επιλεγμένα από" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 τραγούδι" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 τραγούδια" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "βρέθηκαν %1 τραγούδια" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "βρέθηκαν %1 τραγούδια (εμφάνιση %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 κομμάτια" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 μεταφέρθηκε" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Άρθρωμα Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 άλλοι ακροατές" @@ -146,18 +152,21 @@ msgstr "%L1 συνολικές ακροάσεις" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n απέτυχε" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n ολοκληρώθηκε" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n απομένει" @@ -169,24 +178,24 @@ msgstr "&Στοίχιση κειμένου" msgid "&Center" msgstr "&Κέντρο" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Προσωπική" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Βοήθεια" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Απόκρυψη %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Απόκρυψη..." @@ -194,23 +203,23 @@ msgstr "Απόκρυψη..." msgid "&Left" msgstr "&Αριστερά" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Μουσική" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Καμία" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Λίστα αναπαραγωγής" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Έξοδος" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Λειτουργία &επανάληψης " @@ -218,23 +227,23 @@ msgstr "Λειτουργία &επανάληψης " msgid "&Right" msgstr "&Δεξιά" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Λειτουργία &ανακατέματος" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Επέκταση των στηλών για να χωρέσει το παράθυρο" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Εργαλεία" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(διαφορετικό ανάμεσα σε πολλαπλά τραγούδια)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...και σε όλους τους συνεισφέροντες του Amarok" @@ -254,14 +263,10 @@ msgstr "0px" msgid "1 day" msgstr "1 ημέρα" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 κομμάτι" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -271,7 +276,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 τυχαία τραγούδια" @@ -279,12 +284,6 @@ msgstr "50 τυχαία τραγούδια" msgid "Upgrade to Premium now" msgstr "Αναβάθμιση σε Premium τώρα" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Δημιουργια νέου λογαριασμόυ ή επαναφορα του κωδικό πρόσβασής σας" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -295,6 +294,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Αν δεν είναι επιλεγμένο, ο Clementine θα προσπαθήσει να σώσει τις βαθμολογίες σας και άλλα στατιστικά σε μία ξεχωριστή βάση δεδομένων και δεν θα τροποποιήσει τα αρχεία σας.

Αν είναι επιλεγμένο, θα σώσει τα στατιστικά και στην βάση δεδομένων και σε κάθε αρχείο κάθε φορά που αλλά.

Παρακαλώ να έχετε υπόψιν πως μπορεί να μην λειτουργεί σε κάθε διαμόρφωση και, καθώς δεν υπάρχει στάνταρ τρόπος για αυτό, άλλα προγράμματα αναπαραγωγής ίσως να μην μπορούν να τα διαβάσουν.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -303,38 +313,38 @@ msgid "" "activated.

" msgstr "

Αυτό θα εγγράψει τα στατιστικά σε αρχεία ετικέτας για όλα τα τραγούδια στην βιβλιοθήκη σας.

Αυτό δεν χρειάζεται αν η επιλογή "Αποθήκευση των στατιστικών των τραγουδιών στα αρχεία των τραγουδιών" ήταν πάντα ενεργή.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Λέξεις που αρχίζουν με %, για παράδειγμα:%καλλιτέχνης %άλμπουμ %τίτλος

\n\n

Αν κλείσεις ένα κείμενο που περιέχει λέξη με % σε άγκιστρα ({}), το τμήμα αυτό δεν θα είναι ορατό η λέξη λείπει

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Απαιτείτε ένας λογαρισμός Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Απαιτείται premium λογαριασμός Spotify." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Ένας πελάτης μπορεί να συνδεθεί, μόνο αν έχει εισαχθεί ο σωστός κωδικός." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Μια έξυπνη λίστα αναπαραγωγής είναι μία δυναμική λίστα τραγουδιών που προέρχεται από την βιβλιοθήκη σας. Υπάρχουν διαφορετικοί τύποι \"έξυπνης λίστα αναπαραγωγής\" που προσφέρουν διαφορετικούς τρόπους επιλογής τραγουδιών." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Το τραγούδι θα συμπεριληφθεί στην λίστα αναπαραγωγής αν πληρεί αυτές τις συνθήκες." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "Α-Ω" @@ -354,36 +364,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ΟΛΗ Η ΔΟΞΑ ΣΤΟΝ HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Ματαίωση" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Περί %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Περί του Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Περί του Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Λεπτομέρειες λογαριασμού" @@ -395,11 +404,15 @@ msgstr "Λεπτομέρειες λογαριασμού (Premium)" msgid "Action" msgstr "Ενέργεια" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Ενεργοποίηση/απενεργοποίηση Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Προσθήκη Podcast" @@ -415,39 +428,39 @@ msgstr "Προσθήκη νέας γραμμής αν υποστηρίζεται msgid "Add action" msgstr "Προσθήκη ενέργειας" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Προσθήκη άλλης ροής..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Προσθήκη καταλόγου..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Προσθήκη αρχείου" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Προσθήκη αρχείου για επανακωδικοποίηση" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Προσθήκη αρχείου(ων) για επανακωδικοποίηση" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Προσθήκη αρχείου..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Προσθήκη αρχείων για επανακωδικοποίηση" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Προσθήκη φακέλου" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Προσθήκη φακέλου" @@ -459,11 +472,11 @@ msgstr "Προσθήκη νέου φακέλου..." msgid "Add podcast" msgstr "Προσθήκη podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Προσθήκη podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Προσθήκη όρου αναζήτησης" @@ -527,6 +540,10 @@ msgstr "Προσθήκη τραγουδιού για παράληψη της σ msgid "Add song title tag" msgstr "Προσθήκη ετικέτας τίτλου τραγουδιού" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Προσθήκη ετικέτας αριθμού τραγουδιού" @@ -535,22 +552,34 @@ msgstr "Προσθήκη ετικέτας αριθμού τραγουδιού" msgid "Add song year tag" msgstr "Προσθήκη ετικέτας χρονολογίας τραγουδιού" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Προσθήκη ροής..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Προσθήκη στα αγαπημένα του " -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Προσθήκη στη λίστα του " -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Προσθήκη σε άλλη λίστα" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Προσθήκη στη λίστα" @@ -559,6 +588,10 @@ msgstr "Προσθήκη στη λίστα" msgid "Add to the queue" msgstr "Προσθήκη στην λίστα αναμονής" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Προσθήκη ενέργειας wiimotedev" @@ -588,15 +621,15 @@ msgstr "Προστέθηκε σήμερα" msgid "Added within three months" msgstr "Προστέθηκε εντός τριών μηνών" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Προστήθονται τραγούδια στην Μουσική Μου" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Προσθήκη τραγουδιού στα αγαπημένα" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Προχωρημένη ομαδοποίηση..." @@ -604,12 +637,12 @@ msgstr "Προχωρημένη ομαδοποίηση..." msgid "After " msgstr "Μετά " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Μετά την αντιγραφή..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -617,11 +650,11 @@ msgstr "Μετά την αντιγραφή..." msgid "Album" msgstr "Άλμπουμ" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Άλμπουμ (ιδανική ένταση για όλα τα κομμάτια)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -631,35 +664,36 @@ msgstr "Καλλιτέχνης άλμπουμ" msgid "Album cover" msgstr "Εξώφυλλο άλμπουμ" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Πληρ. άλμπουμ στο jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Άλμπουμ με εξώφυλλα" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Άλμπουμ χωρίς εξώφυλλα" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Όλα τα αρχεία (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Όλη η δόξα στον Hypnotoad!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Όλα τα άλμπουμ" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Όλοι οι καλλιτέχνες" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Όλα τα αρχεία (*)" @@ -668,19 +702,19 @@ msgstr "Όλα τα αρχεία (*)" msgid "All playlists (%1)" msgstr "Όλες οι λίστες αναπαραγωγής (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Όλοι οι μεταφραστές" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Όλα τα κομμάτια" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Επιτρέψτε στον πελάτη να κατεβάσει μουσική από αυτόν τον υπολογιστή." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Επιτρέπονται λήψεις" @@ -705,30 +739,30 @@ msgstr "Να εμφανίζεις πάντα το κύριο παράθυρο" msgid "Always start playing" msgstr "Έναρξη αναπαραγωγής πάντα" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Απαιτείται ένα πρόσθετο για να χρησιμοποιήσετε το Spotify. Θέλετε να το κατεβάσετε και να το εγκαταστήσετε τώρα;" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Προέκυψε σφάλμα στην φόρτωση της βάσης δεδομένων iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Προέκυψε σφάλμα κατά την εγγραφή μεταδεδομένων στο '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Προκλήθηκε ένα μη διευκρινισμένο σφάλμα." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Και:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Angry" @@ -737,13 +771,13 @@ msgstr "Angry" msgid "Appearance" msgstr "Εμφάνιση" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Προσάρτηση αρχείων/URLs στην λίστα αναπαραγωγής" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Προσάρτηση στην τρέχουσα λίστα αναπαραγωγής" @@ -751,52 +785,47 @@ msgstr "Προσάρτηση στην τρέχουσα λίστα αναπαρα msgid "Append to the playlist" msgstr "Προσάρτηση στην λίστα αναπαραγωγής" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Εφαρμογή συμπίεσης για αποφυγή κολλημάτων" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Είστε σίγουροι πως θέλετε να διαγράψετε τη ρύθμιση \"%1\";" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Είστε σίγουρος πως θέλετε να διαγράψετε αυτή την λίστα αναπαραγωγής;" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Είστε σίγουροι πως θέλετε να επαναφέρετε τα στατιστικά του τραγουδιού;" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Είστε σίγουροι πως θέλετε να γράψετε τα στατιστικά των τραγουδιών στα αρχεία των τραγουδιών για όλα τα τραγούδια στη βιβλιοθήκη σας;" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Καλλιτέχνης" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Πληρ. καλλιτέχνη" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Ραδιόφωνο καλλιτέχνη" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Ετικέτες Καλλιτέχνη" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Αρχικά του καλλιτέχνη" @@ -804,9 +833,13 @@ msgstr "Αρχικά του καλλιτέχνη" msgid "Audio format" msgstr "Διαμόρφωση ήχου (format)" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Η πιστοποίηση απέτυχε" @@ -814,7 +847,7 @@ msgstr "Η πιστοποίηση απέτυχε" msgid "Author" msgstr "Συγγραφέας" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Δημιουργοί" @@ -830,7 +863,7 @@ msgstr "Αυτόματη ενημέρωση" msgid "Automatically open single categories in the library tree" msgstr "Άνοιξε αυτόμα τις μόνες κατηγορίες του δέντρου της βιβλιοθήκης" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Διαθέσιμα" @@ -838,15 +871,15 @@ msgstr "Διαθέσιμα" msgid "Average bitrate" msgstr "Μέσος ρυθμός bit" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Μέσο μέγεθος εικόνας" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -867,7 +900,7 @@ msgstr "Εικόνα φόντου" msgid "Background opacity" msgstr "Διαφάνεια φόντου" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Αντίγραφο ασφαλείας της βάσης δεδομένων" @@ -875,11 +908,7 @@ msgstr "Αντίγραφο ασφαλείας της βάσης δεδομένω msgid "Balance" msgstr "Ισορροπία" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Απαγόρευση" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Μπάρες" @@ -899,18 +928,17 @@ msgstr "Συμπεριφορά" msgid "Best" msgstr "Βέλτιστος" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Βιογραφία από %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Ρυθμός bit" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -918,7 +946,12 @@ msgstr "Ρυθμός bit" msgid "Bitrate" msgstr "Ρυθμός bit" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Ρυθμός bit" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Block" @@ -934,7 +967,7 @@ msgstr "Ποσοστό θολώματος" msgid "Body" msgstr "Σώμα" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom" @@ -948,11 +981,11 @@ msgstr "Box" msgid "Browse..." msgstr "Αναζήτηση..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Διάρκεια του buffer" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Αποθήκευση" @@ -964,43 +997,66 @@ msgstr "Αλλά αυτές οι πηγές είναι απενεργοποιη msgid "Buttons" msgstr "Κουμπιά" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Υποστήριξη φύλλων CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Άκυρο" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Αλλαγή εξώφυλλου καλλιτέχνη" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Αλλαγή μεγέθους γραμματοσειράς..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Αλλάξτε μέθοδο επανάληψης" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Αλλαγή συντόμευσης..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Αλλάξτε μέθοδο ανάμιξης" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Αλλαγή γλώσσας" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1010,15 +1066,19 @@ msgstr "Η αλλαγή αναπαραγωγής mono θα ενεργοποιη msgid "Check for new episodes" msgstr "Έλεγχος για νέα επεισόδια" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Έλεγχος για ενημερώσεις" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Επιλέξτε ένα όνομα για την έξυπνη λίστα αναπαραγωγής" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Αυτόματη επιλογή" @@ -1034,11 +1094,11 @@ msgstr "Επιλογή γραμματοσειράς..." msgid "Choose from the list" msgstr "Επιλογή από τη λίστα" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Επιλέξτε πως θα ταξινομηθεί η λίστα αναπαραγωγής και πόσα τραγούδια θα περιέχει." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Επιλογή φακέλου για αποθήκευση του podcast" @@ -1047,7 +1107,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Επιλέξτε τις ιστοσελίδες που θέλετε να χρησιμοποιεί ο Clementine όταν ψάχνει για στοίχους." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Κλασσική" @@ -1055,17 +1115,17 @@ msgstr "Κλασσική" msgid "Cleaning up" msgstr "Καθάρισμα" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Καθαρισμός" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Καθαρισμός λίστας" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1078,8 +1138,8 @@ msgstr "Σφάλμα του Clementine." msgid "Clementine Orange" msgstr "Clementine πορτοκαλί" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Οπτικά εφέ Clementine" @@ -1101,9 +1161,9 @@ msgstr "Ο Clementine μπορεί να αναπαράγει μουσική πο msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Ο Clementine μπορεί να αναπαράγει μουσική που έχετε μεταφορτώσει στο Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Ο Clementine μπορεί να αναπαράγει μουσική που έχετε ανεβάσει στο Ubuntu One. " +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1116,20 +1176,13 @@ msgid "" "an account." msgstr "Ο Clementine μπορεί να συγχρονίσει τις συνδρομές σας με άλλους υπολογιστές και εφαρμογές podcast. Create an account." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Ο Clementine δεν μπορεί να φορτώσει κάποιο projectM οπτικό εφέ. Βεβαιωθείτε πως έχετε εγκαταστήσει τον Clementine σωστά." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Ο Clementine δεν μπόρεσε να βρει την κατάσταση της συνδρομή σας μιας και υπάρχει πρόβλημα με την σύνδεσή σας. Τα κομμάτια που παίξατε θα αποθηκευτούν προσωρινά και θα σταλούν στο Last.fm αργότερα." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Προβολή εικόνων του Clementine" @@ -1141,11 +1194,11 @@ msgstr "Ο Clementine δεν μπόρεσε να βρει αποτελέσματ msgid "Clementine will find music in:" msgstr "Ο Clementine θα βρει μουσική στο:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Κλικ εδώ για να προσθέσετε μουσική" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1155,7 +1208,10 @@ msgstr "Κάντε κλικ εδώ για να γινει αγαπημένο α msgid "Click to toggle between remaining time and total time" msgstr "\"Κλικ\" για εναλλαγή μεταξύ συνολικού και εναπομείναντα χρόνου" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1170,19 +1226,19 @@ msgstr "Κλείσιμο" msgid "Close playlist" msgstr "Κλείσιμο της λίστας αναπαραγωγής" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Κλείσιμο οπτικών εφέ" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Το κλείσιμο του παραθύρου θα ακυρώσει το \"κατέβασμα\"." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Το κλείσιμο του παραθύρου θα σταματήσει την αναζήτηση για εξώφυλλα άλμπουμ." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1190,73 +1246,78 @@ msgstr "Club" msgid "Colors" msgstr "Χρώματα" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Λίστα χωρισμένη με κόμμα από class:level, το level είναι 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Σχόλια" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Συμπλήρωση των ετικετών αυτόματα" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Συμπλήρωση των ετικετών αυτόματα..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Συνθέτης" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Ρύθμιση %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Παραμετροποίηση του GrooveShark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Παραμετροποίηση Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Ρύθμιση του Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Ρύθμιση συντομεύσεων" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Ρύθμιση του Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Ρύθμιση του Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Ρύθμιση καθολικής αναζήτησης..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Παραμετροποίηση της βιβλιοθήκης" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Ρύθμιση των podcasts..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Παραμετροποίηση..." @@ -1264,11 +1325,11 @@ msgstr "Παραμετροποίηση..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Σύνδεση των χειριστηρίων Wii χρησιμοποιώντας την ενέργεια ενεργοποίηση/απενεργοποίηση" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Σύνδεση συσκευής" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Σύνδεση στο Spotify" @@ -1278,12 +1339,16 @@ msgid "" "http://localhost:4040/" msgstr "Ο διακομιστής αρνήθηκε τη σύνδεση, ελέγξτε το URL του διακομιστή. Παράδειγμα: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Η σύνδεση διακόπηκε, ελέγξτε το URL του διακομιστή. Παράδειγμα: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Κονσόλα" @@ -1299,17 +1364,21 @@ msgstr "Μετατροπή όλης της μουσικής" msgid "Convert any music that the device can't play" msgstr "Μετατροπή κάθε μουσικής που η συσκευή δεν μπορεί να αναπαράγει" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Αντιγραφή στην συσκευή..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Αντιγραφή στην βιβλιοθήκη..." @@ -1317,156 +1386,152 @@ msgstr "Αντιγραφή στην βιβλιοθήκη..." msgid "Copyright" msgstr "Πνευματικά δικαιώματα" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Δεν μπορεί να γίνει σύνδεση με το Subsonic, ελέγξτε το URL του διακομιστή. Παράδειγμα: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Δεν μπόρεσε να δημιουργηθεί το στοιχείο \"%1\" του GStreamer - βεβαιωθείτε ότι έχετε όλα τα απαραίτητα πρόσθετα του GStreamer εγκατεστημένα" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Δεν βρέθηκε κάποιος πολυπλέκτης (muxer) για %1, ελέγξτε πως έχετε τα σωστά πρόσθετα του GStreamer εγκατεστημένα" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Δεν βρέθηκε κάποιος κωδικοποιητής (encoder) για %1, ελέγξτε πως έχετε τα σωστά πρόσθετα του GStreamer εγκατεστημένα" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Δεν μπόρεσε να γίνει φόρτωση του ραδιοσταθμού last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Δεν μπορεί να ανοίξει το αρχείο εξόδου %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Διαχείριση εξώφυλλων" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Εξώφυλλο από ενσωματωμένη εικόνα" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Το εξώφυλλο φορτώθηκε αυτόματα από %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Το εξώφυλλο αφαιρέθηκε χειροκίνητα" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Δεν έχει οριστεί εξώφυλλο" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Το εξώφυλλο ορίστηκε από %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Εξώφυλλα από %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Δημιουργία μίας νέας λίστας αναπαραγωγής " -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Χρήση «Cross-Fade» κατά την αυτόματη αλλαγή του κομματιού" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Χρήση «Cross-Fade» κατά την χειροκίνητη αλλαγή του κομματιού" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1474,7 +1539,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Προσαρμοσμένο" @@ -1486,54 +1551,50 @@ msgstr "Προσωπική εικόνα:" msgid "Custom message settings" msgstr "Προσαρμοσμένες ρυθμίσεις μηνύματος" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Προσαρμοσμένο ράδιο" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Προσωπική..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Διαδρομή του DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Εντοπίστηκε κατακερματισμός στην βάση δεδομένων. Παρακαλώ διαβάστε το https://code.google.com/p/clementine-player/wiki/DatabaseCorruption για οδηγίες ανάκτησης της βάσης δεδομένων" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Ημερομηνία δημιουργίας" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Ημερομηνία τροποποίησης" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Ημέρες" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Προ&επιλογή" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Μείωση της έντασης ήχου κατά 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Μείωση του ήχου κατά της εκατό" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Μείωση έντασης" @@ -1541,6 +1602,11 @@ msgstr "Μείωση έντασης" msgid "Default background image" msgstr "Προεπιλεγμένη εικόνα φόντου" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Προκαθορισμένα" @@ -1549,30 +1615,30 @@ msgstr "Προκαθορισμένα" msgid "Delay between visualizations" msgstr "Καθυστέρηση μεταξύ οπτικών εφέ" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Διαγραφή" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Διαγραφή της λίστας αναπαραγωγής " -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Διαγραφή δεδομένων που έχουν \"κατέβει\"" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Διαγραφή αρχείων" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Διαγραφή από την συσκευή..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Διαγραφή από τον δίσκο..." @@ -1580,31 +1646,31 @@ msgstr "Διαγραφή από τον δίσκο..." msgid "Delete played episodes" msgstr "Διαγραφή επεισοδίων που έχουν αναπαραχθεί" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Διαγραφή ρύθμισης" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Διαγραφή έξυπνης λίστας αναπαραγωγής" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Διαγραφή των αρχικών αρχείων" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Γίνεται διαγραφή αρχείων" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Αφαίρεση των επιλεγμένων κομματιών από την λίστα αναμονής" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Αφαίρεση του κομματιού από την λίστα αναμονής" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Προορισμός" @@ -1613,7 +1679,7 @@ msgstr "Προορισμός" msgid "Details..." msgstr "Λεπτομέρειες..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Συσκευή" @@ -1625,17 +1691,17 @@ msgstr "Ιδιότητες συσκευής" msgid "Device name" msgstr "Όνομα συσκευής" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Ιδιότητες συσκευής..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Συσκευές" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Διάλογος" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1670,12 +1736,17 @@ msgstr "Απενεργοποίηση διάρκειας" msgid "Disable moodbar generation" msgstr "Απενεργοποίηση δημιουργίας moodbar " -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Απενεργοποιημένο" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Απενεργοποιημένο" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Δίσκος" @@ -1685,15 +1756,15 @@ msgid "Discontinuous transmission" msgstr "Διακεκομμένη μετάδοση" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Επιλογές απεικόνισης" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Απεικόνιση της «απεικόνισης στην οθόνη»" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Εκτελέστε μία πλήρη επανασάρωση της βιβλιοθήκης" @@ -1705,27 +1776,27 @@ msgstr "Μην μετατρέπεις την μουσική" msgid "Do not overwrite" msgstr "Να μην γίνει αντικατάσταση" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Χωρίς επανάληψη" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Αφαίρεση από τους διάφορους καλλιτέχνες" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Χωρίς ανακάτεμα" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Μην σταματάς!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Δωρεά" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Διπλό «κλικ» για άνοιγμα" @@ -1733,12 +1804,13 @@ msgstr "Διπλό «κλικ» για άνοιγμα" msgid "Double clicking a song will..." msgstr "Διπλό \"κλικ\" σε ένα τραγούδι θα..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Λήψη %n επεισοδίων" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Φάκελος λήψης" @@ -1754,7 +1826,7 @@ msgstr "\"Κατέβασμα\" συνδρομής" msgid "Download new episodes automatically" msgstr "Αυτόματη λήψη νέων επεισοδίων" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Η λήψη μπήκε στην αναμονή" @@ -1762,15 +1834,15 @@ msgstr "Η λήψη μπήκε στην αναμονή" msgid "Download the Android app" msgstr "Λήψη της Android εφαρμογής" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Λήψη αυτού του άλμπουμ" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Μεταφόρτωση αυτού του άλμπουμ..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Λήψη αυτού του επεισοδίου" @@ -1778,7 +1850,7 @@ msgstr "Λήψη αυτού του επεισοδίου" msgid "Download..." msgstr "Λήψη..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Λήψη του (%1%)..." @@ -1787,23 +1859,23 @@ msgstr "Λήψη του (%1%)..." msgid "Downloading Icecast directory" msgstr "Μεταφόρτωση καταλόγου Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Μεταφόρτωση καταλόγου Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Μεταφόρτωση καταλόγου του Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Λήψη πρόσθετου για το Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Λήψη μεταδεδομένων" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Σύρετε για μετακίνηση" @@ -1813,30 +1885,30 @@ msgstr "Dropbox" #: ui/equalizer.cpp:119 msgid "Dubstep" -msgstr "" +msgstr "Dubstep" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Διάρκεια" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Η δυναμική λειτουργία είναι ενεργή" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Δυναμική τυχαία ανάμιξη" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Τροποποίηση έξυπνης λίστας αναπαραγωγής" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Τροποποίηση ετικέτας..." @@ -1848,16 +1920,16 @@ msgstr "Επεξεργασία ετικετών" msgid "Edit track information" msgstr "Τροποποίηση πληροφοριών κομματιού" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Τροποποίηση πληροφοριών κομματιού..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Επεξεργασία πληροφοριών των κομματιών..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Επεξεργασία..." @@ -1865,6 +1937,10 @@ msgstr "Επεξεργασία..." msgid "Enable Wii Remote support" msgstr "Ενεργοποίηση της υποστήριξης χειριστηρίων Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Ενεργοποίηση του ισοσταθμιστή" @@ -1879,7 +1955,7 @@ msgid "" "displayed in this order." msgstr "Ενεργοποιήστε τις παρακάτω πηγές για να τις συμπεριλάβετε στα αποτελέσματα. Τα αποτελέσματα θα εμφανιστούν με αυτή την σειρά." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Ενεργοποίηση/απενεργοποίηση του Last.fm scrobbling" @@ -1907,15 +1983,10 @@ msgstr "Εισάγετε μία διεύθυνση για να μεταφορτ msgid "Enter a filename for exported covers (no extension):" msgstr "Εισάγετε όνομα για τα εξαγώγιμα εξώφυλλα (χωρίς επέκταση):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Εισαγωγή νέου ονόματος για την λίστα αναπαραγωγής" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Εισάγετε έναν καλλιτέχνη ή ετικέτα για να ξεκινήσετε να ακούτε Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1929,7 +2000,7 @@ msgstr "Εισάγετε τους όρους αναζήτησης παρακάτ msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Εισάγετε τους όρους αναζήτησης παρακάτω για να βρείτε podcasts στο gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Εισάγετε όρους αναζήτησης εδώ" @@ -1938,11 +2009,11 @@ msgstr "Εισάγετε όρους αναζήτησης εδώ" msgid "Enter the URL of an internet radio stream:" msgstr "Εισαγωγή της διεύθυνσης μιας ροής ραδιοφώνου:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Εισάγεται το όνομα του φακέλου" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Εισάγετε αυτή την IP στο App για να συνδεθεί στον Clementine." @@ -1950,21 +2021,22 @@ msgstr "Εισάγετε αυτή την IP στο App για να συνδεθ msgid "Entire collection" msgstr "Ολόκληρη η συλλογή" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ισοσταθμιστής" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Ισοδύναμο με --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Ισοδύναμο με --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Σφάλμα" @@ -1972,38 +2044,38 @@ msgstr "Σφάλμα" msgid "Error connecting MTP device" msgstr "Σφάλμα σύνδεσης συσκευής MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Σφάλμα κατά την αντιγραφή τραγουδιών" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Σφάλμα κατά την διαγραφή τραγουδιών" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Σφάλμα στην λήψη του πρόσθετου του Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Σφάλμα φόρτωσης του %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Σφάλμα φόρτωσης λίστας από το di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Σφάλμα επεξεργασίας %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Σφάλμα κατά την φόρτωση CD ήχου" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Ενίοτε έπαιξαν" @@ -2035,7 +2107,7 @@ msgstr "Κάθε 6 ώρες" msgid "Every hour" msgstr "Κάθε ώρα" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Εκτός μεταξύ δύο κομματιών στο ίδιο άλμπουμ ή στο ίδιο φύλλο CUE" @@ -2047,7 +2119,7 @@ msgstr "Υπάρχοντα εξώφυλλα" msgid "Expand" msgstr "Επέκταση" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Λίγει σε %1" @@ -2068,36 +2140,36 @@ msgstr "Εξαγωγή μεταφορτωμένων εξώφυλλων" msgid "Export embedded covers" msgstr "Εξαγωγή ενσωματωμένων εξώφυλλων" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Η εξαγωγή ολοκληρώθηκε" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Εξαγωγή %1 εξώφυλλων από τα %2 (%3 παραλείφθηκαν)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2107,42 +2179,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Fade out κατά την παύση / fade in κατά τη συνέχιση" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "«Σβήσιμο» κατά την παύση του κομματιού" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "«Σβήσιμο»" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Διάρκειας «Σβησίματος»" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Αποτυχία λήψης του καταλόγου" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Αποτυχία λήψης των podcasts" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Αποτυχία φόρτωσης podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Αποτυχία ανάλυσης της XML από αυτό το RSS" @@ -2151,11 +2223,11 @@ msgstr "Αποτυχία ανάλυσης της XML από αυτό το RSS" msgid "Fast" msgstr "Γρήγορη" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Αγαπημένα" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Αγαπημένα κομμάτια" @@ -2171,19 +2243,19 @@ msgstr "Αυτόματο κατέβασμα" msgid "Fetch completed" msgstr "Η ανάκτηση ολοκληρώθηκε" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Μεταφόρτωση καταλόγου Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Σφάλμα στο κατέβασμα του εξώφυλλου" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Μορφή αρχείου" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Επέκταση αρχείου" @@ -2191,19 +2263,23 @@ msgstr "Επέκταση αρχείου" msgid "File formats" msgstr "Μορφή αρχείων" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Όνομα αρχείου" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Όνομα αρχείου (χωρίς διαδρομή)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Μέγεθος αρχείου" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2213,7 +2289,7 @@ msgstr "Τύπος αρχείου" msgid "Filename" msgstr "Όνομα αρχείου" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Αρχεία" @@ -2221,15 +2297,19 @@ msgstr "Αρχεία" msgid "Files to transcode" msgstr "Αρχεία για επανακωδικοποίηση" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Εύρεση τραγουδιών στην βιβλιοθήκη που πληρούν τα κριτήρια που ορίσατε." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Αναγνώριση τραγουδιού" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Τέλος" @@ -2237,7 +2317,7 @@ msgstr "Τέλος" msgid "First level" msgstr "Πρώτο επίπεδο" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2253,12 +2333,12 @@ msgstr "Για λόγους αδειοδότησης η υποστήριξη γ msgid "Force mono encoding" msgstr "Επιβολή κωδικοποίησης mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "«Ξέχνα» την συσκευή" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2273,7 +2353,7 @@ msgstr "Το «Ξέχνα» την συσκευή θα την αφαιρέσει #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2301,31 +2381,23 @@ msgstr "Ρυθμός καρέ" msgid "Frames per buffer" msgstr "Πλαίσια ανά απομονωτή (buffer)" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Φίλοι" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Frozen" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Πλήρως μπάσα" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Πλήρως μπάσα και πρίμα" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Πλήρως πρίμα" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer, μηχανή ήχου" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Γενικά" @@ -2333,30 +2405,30 @@ msgstr "Γενικά" msgid "General settings" msgstr "Γενικές ρυθμίσεις" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Είδος" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Λήψη URL για να μοιραστείτε αυτή την Grooveshark λίστα" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Λήψη URL για να μοιραστείτε αυτή το Grooveshark τραγούδι" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Λήψη δημοφιλών τραγουδιών από το Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Λήψη καναλιών" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Λήψη ροών" @@ -2368,11 +2440,11 @@ msgstr "Δώστε του ένα όνομα:" msgid "Go" msgstr "Εκκίνηση" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Πήγαινε στην επόμενη πινακίδα της λίστας" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Πήγαινε στην προηγούμενη πινακίδα της λίστας" @@ -2380,7 +2452,7 @@ msgstr "Πήγαινε στην προηγούμενη πινακίδα της msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2390,7 +2462,7 @@ msgstr "Έγινε λήψη %1 εξώφυλλων από τα %2 (%3 απέτυ msgid "Grey out non existent songs in my playlists" msgstr "Σκίαση στην λίστα τραγουδιών που δεν υπάρχουν" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2398,15 +2470,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Σφάλμα εισόδου στο " -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Το URL της λίστας αναπαραγωγής του Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Ραδιόφωνο Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL του τραγουδιού στο " @@ -2414,44 +2486,44 @@ msgstr "URL του τραγουδιού στο " msgid "Group Library by..." msgstr "Ομαδοποίηση βιβλιοθήκης κατά..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Ομαδοποίηση κατά" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Ομαδοποίηση κατά Άλμπουμ" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Ομαδοποίηση κατά Καλλιτέχνη" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Ομαδοποίηση κατά Καλλιτέχνη/Άλμπουμ" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Ομαδοποίηση κατά Καλλιτέχνη/Έτος - Άλμπουμ" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Ομαδοποίηση κατά Είδος/Άλμπουμ" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Ομαδοποίηση κατά Είδος/Καλλιντέχνη/Άλμπουμ" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Ομαδοποίηση" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "Η σελίδα HTML δεν περιέχει RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Ο HTTP κωδικός κατάστασης 3xx ληφθεί χωρίς URL, βεβαιωθείτε για την διαμόρφωση του διακομιστή." @@ -2460,7 +2532,7 @@ msgstr "Ο HTTP κωδικός κατάστασης 3xx ληφθεί χωρίς msgid "HTTP proxy" msgstr "Διαμεσολαβητής HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Happy" @@ -2476,25 +2548,25 @@ msgstr "Οι πληροφορίες υλικού είναι διαθέσιμες msgid "High" msgstr "Υψηλή" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Υψηλή (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Υψηλή (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "O Host δεν βρέθηκε, ελέγξτε το URL του διακομιστή. Παράδειγμα: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Ώρες" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2506,15 +2578,15 @@ msgstr "Δεν έχω λογαριασμό Magnatune" msgid "Icon" msgstr "Εικονίδιο" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Εικονίδια στην κορυφή" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Ταυτοποίηση τραγουδιού" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2524,24 +2596,24 @@ msgstr "Αν συνεχίσετε, η συσκευή αυτή θα λειτου msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Αν γνωρίζετε το URL ενός podcast, εισάγετε το παρακάτω και πιέστε Εκκίνηση." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Αγνόηση του \"The\" στο όνομα των καλλιτεχνών" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Εικόνες (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Εικόνες (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Σε %1 ημέρες" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Σε %1 εβδομάδες" @@ -2552,7 +2624,7 @@ msgid "" "time a song finishes." msgstr "Στην δυναμική λειτουργία νέα κομμάτια θα επιλέγονται και τοποθετούνται στην λίστα κάθε φορά που ένα τραγούδι τελειώνει." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Εισερχόμενα" @@ -2564,135 +2636,135 @@ msgstr "Εμφάνιση του άλμπουμ (εικόνα) στην ειδο msgid "Include all songs" msgstr "Συμπερίληψη όλων των τραγουδιών" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Ασύμβατη έκδοση πρωτοκόλλου REST. Η εφαρμογή πελάτη πρέπει να ενημερωθεί." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Ασύμβατη έκδοση πρωτοκόλλου REST. Ο διακομιστής πρέπει να ενημερωθεί." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Ατελής ρύθμιση, παρακαλώ βεβαιωθείτε πως όλα τα πεδία είναι συμπληρωμένα." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Αύξηση της έντασης ήχου κατά 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Αύξηση του ήχου κατά της εκατό" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Αύξηση έντασης" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Δημιουργία ευρετηρίου %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Πληροφορία" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Επιλογές εισόδου" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Εισαγωγή..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Εγκατεστημένο" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "έλεγχος ακεραιότητας" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Διαδίκτυο" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Παροχείς Internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Εσφαλμένο κλειδί API" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Εσφαλμένη διαμόρφωση" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Εσφαλμένη μέθοδος" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Εσφαλμένοι παράμετροι" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Καθορίστηκε εσφαλμένη πηγή" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Εσφαλμένη υπηρεσία" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Εσφαλμένο κλειδί συνεδρίας" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Εσφαλμένο όνομα χρήστη και/ή συνθηματικό" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Αντιστροφή επιλογής" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Τα ποιο διάσημα κομμάτια του Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Τα κορυφαία κομμάτια του Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Τα κορυφαία κομμάτια Jamendo του μήνα" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Τα κορυφαία κομμάτια Jamendo της εβδομάδας" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Βάση δεδομένων Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Μετάβαση στο τρέχον κομμάτι που παίζει" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Κράτημα των κουμπιών για %1 δευτερόλεπτα..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Κράτημα των κουμπιών για %1 δευτερόλεπτα..." @@ -2701,11 +2773,12 @@ msgstr "Κράτημα των κουμπιών για %1 δευτερόλεπτ msgid "Keep running in the background when the window is closed" msgstr "Συνέχιση της εκτέλεσης στο παρασκήνιο όταν το παράθυρο κλείσει" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Διατήρηση των αρχικών αρχείων" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Γατάκια" @@ -2713,11 +2786,11 @@ msgstr "Γατάκια" msgid "Language" msgstr "Γλώσσα" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Φορητός/ακουστικά" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Μεγάλη αίθουσα" @@ -2725,12 +2798,16 @@ msgstr "Μεγάλη αίθουσα" msgid "Large album cover" msgstr "Μεγάλο εξώφυλλο άλμπουμ" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Μεγάλη πλευρική μπάρα" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Τελευταία εκτέλεση" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Τελευταία εκτέλεση" @@ -2738,45 +2815,7 @@ msgstr "Τελευταία εκτέλεση" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm Προσαρμοσμένο ράδιο: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Βιβλιοθήκη του Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Mix Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Γειτονικό ραδιόφωνο του Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Ραδιοφωνικός σταθμός Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Καλλιτέχνες του Last.fm όμοιοι με %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Εττικέτες ραδιοφώνου του Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Το Last.fm είναι απασχολημένο, παρακαλώ δοκιμάστε σε λίγα λεπτά" @@ -2784,11 +2823,11 @@ msgstr "Το Last.fm είναι απασχολημένο, παρακαλώ δο msgid "Last.fm password" msgstr "Last.fm συνθηματικό" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Αριθμός αναπαραγωγής Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Ετικέτες του Last.fm" @@ -2796,28 +2835,24 @@ msgstr "Ετικέτες του Last.fm" msgid "Last.fm username" msgstr "Last.fm όνομα χρήστη" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki του Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Λιγότερο αγαπημένα κομμάτια" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Κενό για τα προεπιλεγμένα. Π.χ. \"/dev/dsp\", \"front\", κ.τ.λ." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Αριστερά" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Διάρκεια" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Βιβλιοθήκη" @@ -2825,24 +2860,24 @@ msgstr "Βιβλιοθήκη" msgid "Library advanced grouping" msgstr "Προχωρημένη ομαδοποίηση βιβλιοθήκης" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Ειδοποίηση σάρωσης βιβλιοθήκης" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Έρευνα βιβλιοθήκης" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Όρια" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Ακούστε τραγούδια από το Grooveshark παρόμοια με αυτά που έχετε ακούσει προηγουμένως" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Ζωντανά" @@ -2854,15 +2889,15 @@ msgstr "Φόρτωση" msgid "Load cover from URL" msgstr "Φόρτωμα εξώφυλλου από διεύθυνση (URL)" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Φόρτωμα εξώφυλλου από διεύθυνση (URL)..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Φόρτωση εξώφυλλου από τον δίσκο" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Φόρτωση εξώφυλλου από τον δίσκο..." @@ -2870,84 +2905,89 @@ msgstr "Φόρτωση εξώφυλλου από τον δίσκο..." msgid "Load playlist" msgstr "Φόρτωση λίστας αναπαραγωγής" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Φόρτωση λίστας αναπαραγωγής..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Φόρτωμα Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Φόρτωση συσκευής MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Φόρτωση της βάσης δεδομένων iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Φόρτωση έξυπνης λίστας" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Φόρτωση τραγουδιού" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Φόρτωμα ροής (stream)" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Φόρτωση κομματιών" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Φόρτωση πληροφοριών κομματιού" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Φόρτωση..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Φορτώνει αρχεία/URLs, αντικαθιστώντας την τρέχουσα λίστα αναπαραγωγής" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Είσοδος" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Αποτυχία εισόδου" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Προφίλ χρόνιας πρόβλεψης (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Αγάπη" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Χαμηλή (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Χαμηλή (256x256)" @@ -2959,12 +2999,17 @@ msgstr "Προφίλ χαμηλής πολυπλοκότητας (LC)" msgid "Lyrics" msgstr "Στίχοι" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Στίχοι από %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2976,15 +3021,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2992,7 +3037,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Λήψη Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Η λήψη Magnatune ολοκληρώθηκε" @@ -3000,15 +3045,20 @@ msgstr "Η λήψη Magnatune ολοκληρώθηκε" msgid "Main profile (MAIN)" msgstr "Κύριο προφίλ (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Κάνε το!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Κάνε το!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Η λίστα να είναι διαθέσιμη και εκτός σύνδεσης" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Παραμορφωμένη απάντηση" @@ -3021,15 +3071,15 @@ msgstr "Χειροκίνητη ρύθμιση διαμεσολαβητή" msgid "Manually" msgstr "Χειροκίνητα" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Κατασκευαστής" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Επισήμανση ως έχει ακουστεί" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Επισήμανση ως νέο" @@ -3041,17 +3091,21 @@ msgstr "Ταίριασμα όλων των όρων αναζήτησης (λογ msgid "Match one or more search terms (OR)" msgstr "Ταίριασμα ενός ή περισσότερων όρων αναζήτησης (λογικό Ή)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Μέγιστος ρυθμός bit" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Μέση (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Μέση (512x512)" @@ -3063,11 +3117,15 @@ msgstr "Τύπος συνδρομής" msgid "Minimum bitrate" msgstr "Ελάχιστος ρυθμός bit" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Απόντες projectM προεπιλογές" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Μοντέλο" @@ -3075,20 +3133,20 @@ msgstr "Μοντέλο" msgid "Monitor the library for changes" msgstr "Έλεγχος της βιβλιοθήκης για αλλαγές" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Αναπαραγωγή Mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Μήνες" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Mood" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Στυλ moodbar" @@ -3096,15 +3154,19 @@ msgstr "Στυλ moodbar" msgid "Moodbars" msgstr "Moodbars" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Έπαιξαν περισσότερο" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Σημείο φόρτωσης (mount point)" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Σημεία φόρτωσης (mount points)" @@ -3113,7 +3175,7 @@ msgstr "Σημεία φόρτωσης (mount points)" msgid "Move down" msgstr "Μετακίνηση κάτω" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Μετακίνηση στην βιβλιοθήκη..." @@ -3122,7 +3184,7 @@ msgstr "Μετακίνηση στην βιβλιοθήκη..." msgid "Move up" msgstr "Μετακίνηση πάνω" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Μουσική" @@ -3130,56 +3192,32 @@ msgstr "Μουσική" msgid "Music Library" msgstr "Μουσική βιβλιοθήκη" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Σίγαση" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Η βιβλιοθήκη μου στο Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Το ραδιόφωνο των αγαπημένων μου στο Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Η γειτονιά μου στο Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Το ραδιόφωνο των προτεινόμενων μου στο Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Το δικό μου Mix Radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Η Μουσική Μου" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Η γειτονιά μου" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Οι Σταθμοί μου" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Οι Προτάσεις μου" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Όνομα" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Όνομα" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Επιλογές ονομασίας" @@ -3187,23 +3225,19 @@ msgstr "Επιλογές ονομασίας" msgid "Narrow band (NB)" msgstr "Στενή ζώνη (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Γείτονες" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Διαμεσολαβητής Δικτύου" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Τηλεχειριστήριο Δικτύου" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Ποτέ" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Ποτέ δεν έπαιξαν" @@ -3212,21 +3246,21 @@ msgstr "Ποτέ δεν έπαιξαν" msgid "Never start playing" msgstr "Ποτέ μην ξεκινά η αναπαραγωγή" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Νέος φάκελος" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Νέα λίστα" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Νέα έξυπνη λίστα..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Νέα τραγούδια" @@ -3234,24 +3268,24 @@ msgstr "Νέα τραγούδια" msgid "New tracks will be added automatically." msgstr "Νέα κομμάτια θα προστίθενται αυτόματα." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Νεότερα κομμάτια" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Επόμενο" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Επόμενο κομμάτι" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Την επόμενη εβδομάδα" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Χωρίς αναλυτή" @@ -3259,7 +3293,7 @@ msgstr "Χωρίς αναλυτή" msgid "No background image" msgstr "Χωρίς εικόνα φόντου" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Κανενα καβερ δεν επιλεχθηκε για εξαγωγη." @@ -3267,7 +3301,7 @@ msgstr "Κανενα καβερ δεν επιλεχθηκε για εξαγωγ msgid "No long blocks" msgstr "Όχι μακρά μπλοκς" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Δεν βρέθηκαν. Καθαρίστε το πλαίσιο αναζήτησης να να εμφανιστεί ολόκληρη η λίστα αναπαραγωγής." @@ -3281,11 +3315,11 @@ msgstr "Όχι βραχαία μπλοκς" msgid "None" msgstr "Κανένα" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Κανένα από τα επιλεγμένα τραγούδια δεν ήταν κατάλληλο για αντιγραφή σε μία συσκευή" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3293,43 +3327,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Κανονικός τύπος μπλοκ" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Δεν είναι διαθέσιμο κατά την χρήση Δυναμικής λίστας" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Αποσυνδεμένο" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Δεν υπάρχει αρκετό περιεχόμενο" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Δεν υπάρχουν αρκετοί οπαδοί" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Δεν υπάρχουν αρκετά μέλη" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Δεν υπάρχουν αρκετοί γείτονες" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Μη εγκατεστημένο" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Δεν είστε συνδεδεμένος" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Δεν είναι φορτωμένο - διπλό \"κλικ\" για φόρτωση" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Τύπος ειδοποίησης" @@ -3342,36 +3380,41 @@ msgstr "Ειδοποιήσεις" msgid "Now Playing" msgstr "Τρέχουσα αναπαραγωγή" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Προ-επισκόπηση OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3379,11 +3422,11 @@ msgid "" "192.168.x.x" msgstr "Αποδοχή συνδέσεων από πελάτες με διακύμανση ip:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Μόνο να επιτραπούν οι συνδέσεις από το τοπικό δίκτυο" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Εμφάνιση μόνο του πρώτου" @@ -3391,23 +3434,23 @@ msgstr "Εμφάνιση μόνο του πρώτου" msgid "Opacity" msgstr "Αδιαφάνεια" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Άνοιγμα του %1 στον περιηγητή" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Άνοιγμα CD ή&χου..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Άνοιγμα αρχείου OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Άνοιγμα αρχείου OPML..." @@ -3415,30 +3458,35 @@ msgstr "Άνοιγμα αρχείου OPML..." msgid "Open device" msgstr "Άνοιγμα συσκευής" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Άνοιγμα αρχείου..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Άνοιγμα στο Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Άνοιγμα σε νέα λίστα" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Άνοιγμα σε νέα λίστα" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Άνοιγμα..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Η λειτουργία απέτυχε" @@ -3458,23 +3506,23 @@ msgstr "Επιλογές..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Οργάνωση Αρχείων" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Οργάνωση αρχείων..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Γίνετε οργάνωση αρχείων" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Αρχικές ετικέτες" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Άλλες επιλογές" @@ -3482,7 +3530,7 @@ msgstr "Άλλες επιλογές" msgid "Output" msgstr "Έξοδος" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Συσκευή εξόδου" @@ -3490,15 +3538,11 @@ msgstr "Συσκευή εξόδου" msgid "Output options" msgstr "Επιλογές εξόδου" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Επέκταση εξόδου" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Αντικατάσταση όλων" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Εγγραφή και αντικατάσταση υπαρχόντων αρχείων" @@ -3510,15 +3554,15 @@ msgstr "Αντικατάσταση των μικρότερων μόνο" msgid "Owner" msgstr "Ιδιοκτήτης" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Ανάλυση του καταλόγου Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Πάρτι" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3527,20 +3571,20 @@ msgstr "Πάρτι" msgid "Password" msgstr "Συνθηματικό" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Παύση" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Παύση αναπαραγωγής" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Σταματημένο" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Εκτελεστής" @@ -3549,34 +3593,22 @@ msgstr "Εκτελεστής" msgid "Pixel" msgstr "Εικονοστοιχεία" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Απλή πλευρική μπάρα" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Αναπαραγωγή" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Αναπαραγωγή καλλιτέχνη ή ετικέτας" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Αναπαραγωγή ραδιοφώνου καλλιτέχνη..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Μετρητής εκτελέσεων" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Αναπαραγωγή προσαρμοσμένου ραδιοφώνου..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Αναπαραγωγή αν είναι σταματημένο, αλλιώς παύση" @@ -3585,45 +3617,42 @@ msgstr "Αναπαραγωγή αν είναι σταματημένο, αλλι msgid "Play if there is nothing already playing" msgstr "Αναπαραγωγή εάν δεν παίζει κάτι άλλο" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Αναπαραγωγή ραδιοφώνου ετικετών..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Αναπαραγωγή του ου κομματιού της λίστας αναπαραγωγής" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Αναπαραγωγή/Παύση" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Αναπαραγωγή" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Επιλογές αναπαραγωγής" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Λίστα" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Η λίστα τελείωσε" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Επιλογές λίστας αναπαραγωγής" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Τύπος λίστας αναπαραγωγής" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Λίστες" @@ -3635,23 +3664,23 @@ msgstr "Παρακαλώ κλείστε τον περιηγητή σας και msgid "Plugin status:" msgstr "Κατάσταση πρόσθετου:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Δημοφιλή τραγούδια" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Δημοφιλή τραγούδια του μήνα" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Δημοφιλή τραγούδια σήμερα" @@ -3660,22 +3689,23 @@ msgid "Popup duration" msgstr "Διάρκεια αναδυόμενου μηνύματος" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Πόρτα" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Προ-ενισχυμένο" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Προτιμήσεις" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Προτιμήσεις..." @@ -3711,7 +3741,7 @@ msgstr "Πιέστε ένα συνδιασμό πλήκτρων για χρήσ msgid "Press a key" msgstr "Πιέστε ένα πλήκτρο" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Πίεσε έναν συνδυασμό πλήκτρων για χρήση στο %1..." @@ -3722,20 +3752,20 @@ msgstr "Επιλογές Όμορφου OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Προεπισκόπηση" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Προηγούμενο" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Προηγούμενο κομμάτι" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Εκτύπωση πληροφοριών έκδοσης" @@ -3743,21 +3773,25 @@ msgstr "Εκτύπωση πληροφοριών έκδοσης" msgid "Profile" msgstr "Προφίλ" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Πρόοδος" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Πρόοδος" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" -msgstr "" +msgstr "Psychedelic" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "πιέστε ένα πλήκτρο Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Τοποθέτηση τραγουδιών σΌροιε τυχαία σειρά" @@ -3765,36 +3799,46 @@ msgstr "Τοποθέτηση τραγουδιών σΌροιε τυχαία σε #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Ποιότητα" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Ερώτηση συσκευής..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Διαχειριστής λίστας αναμονής" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Τοποθέτηση στη λίστας αναμονής τα επιλεγμένα κομμάτια" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Τοποθέτηση στη λίστας αναμονής του κομματιού" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Ραδιόφωνο (ίση ένταση για όλα τα κομμάτια)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Ραδιόφωνα" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Βροχή" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Βροχή" @@ -3802,48 +3846,48 @@ msgstr "Βροχή" msgid "Random visualization" msgstr "Τυχαίο οπτικό εφέ" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Βαθμολογία τρέχοντος τραγουδιού με 0 αστέρια" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Βαθμολογία τρέχοντος τραγουδιού με 1 αστέρια" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Βαθμολογία τρέχοντος τραγουδιού με 2 αστέρια" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Βαθμολογία τρέχοντος τραγουδιού με 3 αστέρια" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Βαθμολογία τρέχοντος τραγουδιού με 4 αστέρια" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Βαθμολογία τρέχοντος τραγουδιού με 5 αστέρια" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Βαθμολόγηση" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Ακύρωση στ' αλήθεια;" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Η ανακατεύθυνση υπέρβασης του ορίου, ελέγχει τη διαμόρφωση του διακομιστή." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Ανανέωση" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Ανανέωση καταλόγου" @@ -3851,19 +3895,15 @@ msgstr "Ανανέωση καταλόγου" msgid "Refresh channels" msgstr "Ανανέωση καναλιών" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Ανανέωση της λίστας φίλων" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "ανανέωση της λίστας σταθμών" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Ανανέωση ροών" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3875,8 +3915,8 @@ msgstr "Απομνημόνευσε την ταλάντευση του χειρι msgid "Remember from last time" msgstr "Υπενθύμιση από την τελευταία φορά" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Αφαίρεση" @@ -3884,7 +3924,7 @@ msgstr "Αφαίρεση" msgid "Remove action" msgstr "Αφαίρεση ενέργειας" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Αφαίρεση διπλότυπων από την λίστα" @@ -3892,73 +3932,77 @@ msgstr "Αφαίρεση διπλότυπων από την λίστα" msgid "Remove folder" msgstr "Αφαίρεση φακέλου" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Αφαίρεση από την Μουσική Μου" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Αφαίρεση από τα αγαπημένα" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Αφαίρεση από την λίστα" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Αφαίρεση λίστας αναπαραγωγής" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Αφαίρεση λίστας αναπαραγωγής" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Αφαιρούνται τα τραγούδια από την Μουσική Μου" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Αφαιρούνται τα τραγούδια από τα Αγαπημένα" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Μετονομασία της λίστας \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Μετονομασία της λίστας Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Μετονομασία λίστας αναπαραγωγής" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Μετονομασία λίστας αναπαραγωγής..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Επαναρίθμησε τα κομμάτια κατά αυτή την σειρά..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Επανάληψη" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Επανάληψη άλμπουμ" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Επανάληψη λίστας" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Επανάληψη κομματιού" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Αντικατάσταση της τρέχουσας λίστας αναπαραγωγής" @@ -3967,15 +4011,15 @@ msgstr "Αντικατάσταση της τρέχουσας λίστας ανα msgid "Replace the playlist" msgstr "Αντικατάσταση της λίστας αναπαραγωγής" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Αντικαθιστά τα κενά με κάτω παύλα" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Λειτουργία Replay Gain" @@ -3983,24 +4027,24 @@ msgstr "Λειτουργία Replay Gain" msgid "Repopulate" msgstr "Επανασυμπλήρωση" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Απαίτηση κωδικού επαλήθευσης" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Επαναφορά" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Επαναφορά μετρητή εκτελέσεων" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Επανεκκίνηση του κομμάτιου, ή αναπαραγωγή του προηγούμενου κομματιού, εντός 8 δευτερολέπτων από την έναρξη." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Περιορισμός σε χαρακτήρες ASCII" @@ -4008,15 +4052,15 @@ msgstr "Περιορισμός σε χαρακτήρες ASCII" msgid "Resume playback on start" msgstr "Συνέχιση της αναπαραγωγής στην εκκίνηση" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Ανακτόνται τα τραγούδια της Μουσικής Μου από το Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Ανάκτηση αγαπημένων τραγουδιών από το Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Ανάκτηση λιστών αναπαραγωγής από το Grooveshark" @@ -4036,11 +4080,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4052,25 +4096,25 @@ msgstr "Εκτέλεση" msgid "SOCKS proxy" msgstr "Διαμεσολαβητής SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Σφάλμα SSL handshake, ελέγξτε την διαμόρφωση του διακομιστή. Η SSLv3 επιλογη μπορεί να λύση κάποια θέματα." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Ασφαλής αφαίρεση συσκευής" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Ασφαλής αφαίρεση συσκευής μετά την αντιγραφή" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Ρυθμός δειγματοληψίας" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Δειγματοληψία" @@ -4078,27 +4122,33 @@ msgstr "Δειγματοληψία" msgid "Save .mood files in your music library" msgstr "Αποθήκευση .mood αρχείων στην βιβλιοθήκη σας" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Αποθήκευση του εξώφυλλου του άλμπουμ" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Αποθ. εξώφυλλου στον δίσκο..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Αποθήκευση εικόνας" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Αποθήκευση λίστας αναπαραγωγής" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Αποθήκευση λίστας αναπαραγωγής" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Αποθήκευση λίστας αναπαραγωγής..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Αποθήκευση ρύθμισης" @@ -4114,11 +4164,11 @@ msgstr "Αποθήκευση στατιστικών σε αρχεία ετικε msgid "Save this stream in the Internet tab" msgstr "Αποθήκευση της ροής στην καρτέλα Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Αποθήκευση των στατιστικών των τραγουδιών στα αρχεία των τραγουδιών" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Αποθήκευση κομματιών" @@ -4130,7 +4180,7 @@ msgstr "Προφίλ κλιμακούμενου ρυθμού δειγματολ msgid "Scale size" msgstr "Διαβάθμιση μεγέθους" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Σκορ" @@ -4138,10 +4188,14 @@ msgstr "Σκορ" msgid "Scrobble tracks that I listen to" msgstr "Κάνε \"srobble\" τα κομμάτια που ακούω" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Αναζήτηση" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Αναζήτηση" @@ -4149,23 +4203,23 @@ msgstr "Αναζήτηση" msgid "Search Icecast stations" msgstr "Αναζήτηση σταθμών Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Αναζήτηση Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Εύρεση στο Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Αναζήτηση στο Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Αναζήτηση για εξώφυλλο άλμπουμ..." @@ -4185,21 +4239,21 @@ msgstr "Αναζήτηση στο iTunes" msgid "Search mode" msgstr "Λειτουργία αναζήτησης" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Επιλογές εύρεσης" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Εύρεση αποτελεσμάτων" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Όροι αναζήτησης" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Αναζήτηση στο Grooveshark" @@ -4207,27 +4261,27 @@ msgstr "Αναζήτηση στο Grooveshark" msgid "Second level" msgstr "Δεύτερο επίπεδο" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Αναζήτηση πίσω" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Αναζήτηση εμπρός" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Άλμα στο τρέχον κομμάτι κατά ένα σχετικό ποσό." -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Άλμα σε σε μια καθορισμένη θέση στο τρέχον κομμάτι." -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Επιλογή όλων" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Επιλογή κανενός" @@ -4235,7 +4289,7 @@ msgstr "Επιλογή κανενός" msgid "Select background color:" msgstr "Επιλογή χρώματος φόντου:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Επιλογή εικόνας φόντου" @@ -4251,7 +4305,7 @@ msgstr "Επιλογή χρώματος προσκήνιου:" msgid "Select visualizations" msgstr "Επιλογή οπτικών εφέ" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Επιλογή οπτικών εφέ..." @@ -4259,7 +4313,7 @@ msgstr "Επιλογή οπτικών εφέ..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Σειριακός αριθμός" @@ -4271,51 +4325,51 @@ msgstr "URL Εξυπηρετητή" msgid "Server details" msgstr "Λεπτομέρειες διακομιστή" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Υπηρεσία εκτός σύνδεσης" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Δώσε %1 στο \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Ρύθμιση της έντασης ήχου στο της εκατό" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Δώσε τιμή σε όλα τα επιλεγμένα κομμάτια..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Ρυθμίσεις" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Συντόμευση" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Συντόμευση για %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Η συντόμευση για το %1 υπάρχει" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Εμφάνιση" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Εμφάνιση OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Εμφάνιση ενός φωτεινού σχεδίου στο τρέχον κομμάτι" @@ -4343,15 +4397,15 @@ msgstr "Εμφάνισε αναδυόμενα μηνύματα από το ει msgid "Show a pretty OSD" msgstr "Εμφάνισε ένα όμορφο OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Εμφάνιση πάνω από την μπάρα κατάστασης" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Εμφάνιση όλων των τραγουδιών" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Εμφάνιση όλλων των τραγουδιών" @@ -4363,32 +4417,36 @@ msgstr "Εμφάνιση του εξώφυλλου στην βιβλιοθήκη msgid "Show dividers" msgstr "Εμφάνιση διαχωριστών" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Εμφάνισε σε πλήρες μέγεθος..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Εμφάνιση στον περιηγητή αρχείων..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Εμφάνιση στους διάφορους καλλιτέχνες" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Εμφάνιση moodbar" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Εμφάνιση μόνο διπλότυπων" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Εμφάνιση μόνο μη επισημασμένων" @@ -4397,8 +4455,8 @@ msgid "Show search suggestions" msgstr "Εμφάνιση προτάσεις αναζήτησης" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Εμφάνισε τα κουμπιά \"αγάπη\"και \"απαγόρευση\"" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4412,27 +4470,27 @@ msgstr "Εμφάνιση εικονιδίου συστήματος" msgid "Show which sources are enabled and disabled" msgstr "Εμφάνιση πηγών που είναι ενεργοποιημένες και απενεργοποιημένες" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Εμφάνιση/Απόκρυψη" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Ανακάτεμα" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Ανακάτεμα άλμπουμ" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Ανακάτεμα όλων" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Ανακάτεμα λίστας" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Ανακάτεμα των κομματιών σε αυτό το άλμπουμ" @@ -4448,7 +4506,7 @@ msgstr "Αποσύνδεση" msgid "Signing in..." msgstr "Γίνεται είσοδος..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Παρόμοιοι καλλιτέχνες" @@ -4460,43 +4518,51 @@ msgstr "Μέγεθος" msgid "Size:" msgstr "Μέγεθος:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Παράλειψη προς τα πίσω στη λίστα" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Μετρητής παραλήψεων" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Παράλειψη προς τα μπροστά στη λίστα" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Μικρό εξώφυλλο άλμπουμ" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Μικρή πλευρική μπάρα" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Έξυπνη λίστα αναπαραγωγής" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Έξυπνες λίστες αναπαραγωγής" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Απαλή" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Απαλή Rock" @@ -4504,11 +4570,11 @@ msgstr "Απαλή Rock" msgid "Song Information" msgstr "Πληρ. τραγουδιού" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Πληρ. τραγουδιού" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4528,15 +4594,23 @@ msgstr "Ταξινόμηση κατά γένος (κατά δημοτικότη msgid "Sort by station name" msgstr "Ταξινόμηση κατά όνομα σταθμού" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Ταξινόμηση τραγουδιών κατά" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Ταξινόμηση" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Πηγή" @@ -4552,7 +4626,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Σφάλμα εισόδου στο Spotify" @@ -4560,7 +4634,7 @@ msgstr "Σφάλμα εισόδου στο Spotify" msgid "Spotify plugin" msgstr "Πρόσθετο Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Το πρόσθετο του Spotify μη εγκατεστημένο" @@ -4568,77 +4642,77 @@ msgstr "Το πρόσθετο του Spotify μη εγκατεστημένο" msgid "Standard" msgstr "Κανονικό" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Με αστέρι" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Εκκίνηση της λίστας αναπαραγωγής που παίζει τώρα" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Εκκίνηση επανακωδικοποίησης" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Ξεκίνα να γράφεις κάτι στο κουτί εύρεσης παραπάνω για να γεμίσει αυτή η λίστα εύρεσης αποτελεσμάτων" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Εκκίνηση %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Εκκίνηση..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Σταθμοί" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Σταμάτημα" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Στοπ μετά" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Σταμάτημα μετά από αυτό το κομμάτι" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Διακοπή αναπαραγωγής" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Παύση αναπαραγωγής μετά το τρέχον κομμάτι" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Σταματημένο" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4648,7 +4722,7 @@ msgstr "Η ροή από έναν εξυπηρετητή Subsonic απαιτεί msgid "Streaming membership" msgstr "Συνδρομή ροής" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Λίστες συνδρομής" @@ -4656,7 +4730,7 @@ msgstr "Λίστες συνδρομής" msgid "Subscribers" msgstr "Συνδομητές" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4664,12 +4738,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Επιτυχία!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Επιτυχία εγγραφής του %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Προτεινόμενες ετικέτες" @@ -4678,13 +4752,13 @@ msgstr "Προτεινόμενες ετικέτες" msgid "Summary" msgstr "Σύνοψη" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Υπέρ υψηλή (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Υπέρ υψηλή (2048x2048)" @@ -4696,43 +4770,35 @@ msgstr "Υποστηριζόμενες μορφές" msgid "Synchronize statistics to files now" msgstr "Συγχρονισμός των στατιστικών σε αρχεία τώρα" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Συγχρονισμός εισερχομένων του Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Συγχρονισμός λίστας του Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Συγχρονισμός κομματιών επισημασμένων με αστέρι του Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Χρώματα συστήματος" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Καρτέλες στην κορυφή" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Ετικέτα" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Μεταφορτωτής ετικετών" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Ραδιόφωνο ετικετών" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Ρυθμός bit στόχου" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4740,11 +4806,11 @@ msgstr "Techno" msgid "Text options" msgstr "Επιλογές κειμένου" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Ευχαριστίες σε" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Η εντολή \"%1\" δεν μπόρεσε να ξεκινήσει" @@ -4753,17 +4819,12 @@ msgstr "Η εντολή \"%1\" δεν μπόρεσε να ξεκινήσει" msgid "The album cover of the currently playing song" msgstr "Το εξώφυλλο του άλμπουμ του τραγουδιού που παίζει" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Ο κατάλογος %1 δεν είναι έγκυρος" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Η λίστα αναπαραγωγής '%1' ήταν άδεια ή δεν μπόρεσε να φορτωθεί." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Η δεύτερη τιμή πρέπει να είναι μεγαλύτερη από την πρώτη!" @@ -4771,40 +4832,40 @@ msgstr "Η δεύτερη τιμή πρέπει να είναι μεγαλύτε msgid "The site you requested does not exist!" msgstr "Η διεύθυνση που ζητήσατε δεν υπάρχει!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Η διεύθυνση που ζητήσατε δεν είναι εικόνα!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Η δοκιμαστική περίοδος του Subsonic τελείωσε. Παρακαλώ κάντε μια δωρεά για να λάβετε ένα κλειδί άδειας. Δείτε στο subsonic.org για λεπτομέρειες." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Η έκδοση του Clementine που μόλις ενημερώθηκε απαιτεί πλήρη επανασάρωση της βιβλιοθήκης λόγο της παρακάτω νέας λειτουργίας:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Δεν υπάρχουν πλέον τραγούδια σε αυτό το άλμπουμ" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Πρόβλημα επικοινωνίας με το gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Υπήρξε κάποιο σφάλμα κατά την μεταφορά των μετα-δεδομένων από το Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Πρόβλημα κατά την ανάλυση της απάντησης από το iTunes" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4816,13 +4877,13 @@ msgid "" "deleted:" msgstr "Υπήρξαν προβλήματα κατά την διαγραφή κάποιων τραγουδιών. Τα ακόλουθα αρχεία δεν μπόρεσαν να διαγραφούν:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Αυτά τα αρχεία θα διαγραφούν από την συσκευή, θέλετε σίγουρα να συνεχίσετε;" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4842,13 +4903,13 @@ msgstr "Αυτές οι ρυθμίσεις χρησιμοποιούνται στ msgid "Third level" msgstr "Τρίτο επίπεδο" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Αυτή η ενέργεια θα δημιουργήσει μία βάση δεδομένων μεγέθους έως 150 MB.\nΘέλετε να συνεχίσετε;" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Αυτό το άλμπουμ δεν είναι διαθέσιμο στην ζητούμενη μορφή" @@ -4862,11 +4923,11 @@ msgstr "Η συσκευή αυτή πρέπει να συνδεθεί και ν msgid "This device supports the following file formats:" msgstr "Η συσκευή αυτή υποστηρίζει τις ακόλουθες μορφές:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Η συσκευή αυτή δεν θα λειτουργήσει σωστά" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Αυτή είναι μία συσκευή MTP, αλλά φτιάξατε τον Clementine χωρίς υποστήριξη της libmtp." @@ -4875,7 +4936,7 @@ msgstr "Αυτή είναι μία συσκευή MTP, αλλά φτιάξατε msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Αυτό είναι iPod, αλλά φτιάξατε τον Clementine χωρίς υποστήριξη της libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4885,33 +4946,33 @@ msgstr "Αυτή είναι η πρώτη φορά που συνδέετε αυ msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Η επιλογή αυτή μπορεί να αλλάξει από τις προτιμήσεις \"Συμπεριφορά\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Η ροή (stream) αυτή είναι μόνο για συνδρομητές" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Αυτού του τύπου η συσκευή δεν υποστηρίζετε %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Τίτλος" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Για να ακούσετε το ραδιόφωνο Grooveshark, θα πρέπει πρώτα να ακούσετε μερικά ακόμα τραγούδια από το Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Σήμερα" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Εναλλαγή Όμορφου OSD" @@ -4919,27 +4980,27 @@ msgstr "Εναλλαγή Όμορφου OSD" msgid "Toggle fullscreen" msgstr "Εναλλαγή πλήρης οθόνης" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Εναλλαγή της κατάστασης της λίστας αναμονής" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Εναλλαγή του scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Εναλλαγή ορατότητας της όμορφης «απεικόνισης στην οθόνη»" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Αύριο" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Πάρα πολλές ανακατευθύνσεις" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Κορυφαία κομμάτια" @@ -4947,21 +5008,25 @@ msgstr "Κορυφαία κομμάτια" msgid "Total albums:" msgstr "Συνολικά άλμπουμ:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Συνολικά bytes που μεταφέρθηκαν" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Συνολικές αιτήσεις δικτύου που πραγματοποιήθηκαν" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Κομμάτι" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Επανακωδικοποίηση Μουσικής" @@ -4973,7 +5038,7 @@ msgstr "Αρχείο καταγραφής επανακωδικοποίησης" msgid "Transcoding" msgstr "Κωδικοποίηση" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Επανακωδικοποίηση %1 αρχείων χρησιμοποιώντας %2 νήματα" @@ -4982,11 +5047,11 @@ msgstr "Επανακωδικοποίηση %1 αρχείων χρησιμοπο msgid "Transcoding options" msgstr "Επιλογές επανακωδικοποίησης" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4994,72 +5059,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Απενεργοποίηση" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One κωδικός" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One όνομα χρήστη" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Άκρα ευρεία ζώνη (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Αδυναμία \"κατεβάσματος\" του %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Άγνωστο" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Άγνωστος τύπος περιεχομένου" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Άγνωστο σφάλμα" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Αφαίρεση εξώφυλλου" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Ακύρωση συνδρομής" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Προσεχής Συναυλίες" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Ενημέρωση λίστας αναπαραγωγής του Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Ενημέρωση όλων των podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Ενημέρωση φακέλων βιβλιοθήκης που άλλαξαν" @@ -5067,7 +5132,7 @@ msgstr "Ενημέρωση φακέλων βιβλιοθήκης που άλλα msgid "Update the library when Clementine starts" msgstr "Ενημέρωση της βιβλιοθήκης κατά την εκκίνηση του Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Ενημέρωσε αυτό το podcast" @@ -5075,21 +5140,21 @@ msgstr "Ενημέρωσε αυτό το podcast" msgid "Updating" msgstr "Ενημέρωση" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Ενημέρωση %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Ενημέρωση %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Ενημέρωση λίστας" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Χρήση" @@ -5097,11 +5162,11 @@ msgstr "Χρήση" msgid "Use Album Artist tag when available" msgstr "Χρήση ετικέτας Άλμπουμ Καλλιτέχνη όταν είναι διαθέσιμα" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Χρήση πλήκτρων συντόμευσης του Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Χρήση των μετα δεδομένων Replay Gain αν είναι διαθέσημα" @@ -5121,7 +5186,7 @@ msgstr "Χρήση τροποποιημένου χρώματος" msgid "Use a custom message for notifications" msgstr "Χρήση προσαρμοσμένου μηνύματος για τις ειδοποιήσεις" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Χρήση Τηλεχειριστηρίου" @@ -5161,20 +5226,20 @@ msgstr "Χρήση ρυθμίσεων του διαμεσολαβητή του msgid "Use volume normalisation" msgstr "Χρήση κανονικοποίησης ήχου" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Σε χρήση" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Ο χρήστης %1 δεν διαθέτει έναν λογαριασμό στο GrooveShark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Διασύνδεση χρήστη" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5196,12 +5261,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Μεταβαλλόμενος ρυθμός bit" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Διάφοροι καλλιτέχνες" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Έκδοση %1" @@ -5214,7 +5279,7 @@ msgstr "Προβολή" msgid "Visualization mode" msgstr "Τρόπος λειτουργίας οπτικών εφέ" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Οπτικά εφέ" @@ -5222,11 +5287,15 @@ msgstr "Οπτικά εφέ" msgid "Visualizations Settings" msgstr "Ρυθμίσεις οπτικών εφέ" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Ανίχνευση δραστηριότητας φωνής" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Ένταση %1%" @@ -5244,11 +5313,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Προειδοποίηση κατά το κλείσιμο μίας λίστας αναπαραγωγής" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5256,7 +5325,7 @@ msgstr "Wav" msgid "Website" msgstr "Website" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Εβδομάδες" @@ -5282,32 +5351,32 @@ msgstr "Γιατί να μην δοκιμάσετε..." msgid "Wide band (WB)" msgstr "Ευρεία ζώνη (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Χειριστήριο Wii %1: ενεργοποιήθηκε" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Χειριστήριο Wii %1: συνδέθηκε" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Χειριστήριο Wii %1: μπαταρια σε κρίσιμο σημείο (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Χειριστήριο Wii %1: απενεργοποιήθηκε" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Χειριστήριο Wii %1: αποσυνδέθηκε" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Χειριστήριο Wii %1: χαμηλή μπαταρία (%2%)" @@ -5328,7 +5397,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5336,25 +5405,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Χωρίς εξώφυλλο:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Θα θέλατε να μετακινήσετε και τα άλλα τραγούδια σε αυτό το άλμπουμ στο Διάφοροι Καλλιτέχνες;" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Θέλετε να εκτελέσετε μία πλήρη επανασάρωση αμέσως τώρα;" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Εγγραφή όλων των στατιστικών των τραγουδιών στα αρχεία τραγουδιών" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Λάθος όνομα χρήστη ή συνθηματικό" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5366,11 +5435,11 @@ msgstr "Έτος" msgid "Year - Album" msgstr "Έτος - Άλμπουμ" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Έτη" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Χθες" @@ -5378,13 +5447,13 @@ msgstr "Χθες" msgid "You are about to download the following albums" msgstr "Πρόκειτε να \"κατεβάσετε\" τα παρακάτω άλμπουμ" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Πρόκειται να διαγράψετε %1 λίστες, είστε σίγουροι;" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5394,12 +5463,12 @@ msgstr "Η λίστα αυτή θα αφαιρεθεί, (η πράξη αυτή msgid "You are not signed in." msgstr "Δεν έχετε συνδεθεί." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Έχετε συνδεθεί ως %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Έχετε συνδεθεί." @@ -5407,13 +5476,13 @@ msgstr "Έχετε συνδεθεί." msgid "You can change the way the songs in the library are organised." msgstr "Μπορείς να αλλάξεις τον τρόπο οργάνωσης των τραγουδιών στην βιβλιοθήκη." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Μπορείτε να ακούσετε μουσική με έναν δωρεάν λογαριασμό, αλλά τα Premium μέλη μπορούν να ακούσουν ροές καλύτερης ποιότητας χωρίς διαφημίσεις." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5423,13 +5492,6 @@ msgstr "Μπορείτε να ακούσετε τραγούδια δωρεάν msgid "You can listen to background streams at the same time as other music." msgstr "Μπορείτε να ακούτε τις ροές παρασκηνίου ταυτόχρονα με άλλη μουσική." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Μπορείτε να κάνετε \"scroble\" δωρεάν, αλλά μόνο οι συνδρομητές επί πληρωμή μπορούν να έχουν ροή από το ραδιόφωνο Last.fm στον Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Μπορείτε να χρησιμοποιήσετε χειριστήριο Wii σαν τηλεχειριστήριο για τον Clementine. Δείτε την σχετική σελίδα στο wiki του Clementine για περισσότερες πληροφορίες.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Δεν έχετε λογαριασμό στο GrooveShark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Δεν έχετε Premium λογαριασμό στο Spotify." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Δεν έχετε κάποια ενεργή συνδρομή" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Έχετε εξέλθει από το Spotify, παρακαλώ εισάγετε πάλι τον κωδικό σας στις ρυθμίσεις." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Έχετε εξέλθει από το Spotify, παρακαλώ εισάγετε πάλι τον κωδικό σας." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Λατρεύεις αυτό το κομμάτι" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5474,17 +5550,11 @@ msgstr "Πρέπει να πάτε στις ρυθμίσεις συστήματ msgid "You will need to restart Clementine if you change the language." msgstr "Πρέπει να ξεκινήσετε πάλι τον Clementine αν αλλάξετε την γλώσσα." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Δεν θα μπορείτε να αναπαράγεται σταθμούς Last.fm καθώς δεν είστε συνδρομητής του Last.fm." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Η IP διεύθυνση σας:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Τα στοιχεία σας στο Last.fm ήταν εσφαλμένα" @@ -5492,42 +5562,43 @@ msgstr "Τα στοιχεία σας στο Last.fm ήταν εσφαλμένα" msgid "Your Magnatune credentials were incorrect" msgstr "Τα διαπιστευτήρια σας του Magnatune δεν ήταν σωστά" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Η βιβλιοθήκη σας είναι άδεια!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Οι ροές ραδιοφώνου σας" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Τα scrobbles σου: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Το σύστημα σας δεν έχει υποστήριξη OpenGL, τα οπτικά εφέ δεν είναι διαθέσιμα." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Το όνομα χρήστη ή το συνθηματικό ήταν λανθασμένο." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Ω-Α" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "προσθήκη %n τραγουδιών" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "μετά" @@ -5547,19 +5618,19 @@ msgstr "αυτόματα" msgid "before" msgstr "πριν" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "μεταξύ" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "το μεγαλύτερο πρώτα" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "περιέχει" @@ -5569,20 +5640,20 @@ msgstr "περιέχει" msgid "disabled" msgstr "ανενεργο" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "δίσκος %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "δεν περιέχει" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "τελειώνει με" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "ισούται" @@ -5590,11 +5661,11 @@ msgstr "ισούται" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "κατάλογος gpodder.net" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "μεγαλύτερο από" @@ -5602,54 +5673,55 @@ msgstr "μεγαλύτερο από" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "εντός των τελευταίων" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "λιγότερο από" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "το μακρύτερο πρώτα" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "μετακίνηση %n τραγουδιών" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "το νεότερο πρώτα" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "άνισα" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "όχι εντός των τελευταίων" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "όχι στο" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "το παλαιότερο πρώτα" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "σε" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "επιλογές" @@ -5661,36 +5733,37 @@ msgstr "ή σάρωση του QR κώδικα!" msgid "press enter" msgstr "πιέστε enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "αφαίρεση %n τραγουδιών" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "το ποιο σύντομο πρώτα" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "ανακάτεμα τραγουδιών" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "το μικρότερο πρώτα" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "ταξινόμηση τραγουδιών" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "αρχίζει με" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "διακοπή" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "κομμάτι %1" diff --git a/src/translations/en_CA.po b/src/translations/en_CA.po index ea3e60cc5..84184f8f9 100644 --- a/src/translations/en_CA.po +++ b/src/translations/en_CA.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: English (Canada) (http://www.transifex.com/projects/p/clementine/language/en_CA/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,7 +16,7 @@ msgstr "" "Language: en_CA\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -41,9 +41,9 @@ msgstr "" msgid " kbps" msgstr "kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -56,11 +56,16 @@ msgstr "pt" msgid " seconds" msgstr " seconds" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "songs" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -70,12 +75,12 @@ msgstr "" msgid "%1 days" msgstr "" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -85,48 +90,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 playlists (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -140,18 +145,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n failed" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n finished" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n remaining" @@ -163,24 +171,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Custom" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Help" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Hide %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Hide..." @@ -188,23 +196,23 @@ msgstr "&Hide..." msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Music" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&None" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Playlist" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Quit" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Repeat mode" @@ -212,23 +220,23 @@ msgstr "Repeat mode" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Shuffle mode" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Tools" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...and all the Amarok contributors" @@ -248,14 +256,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -265,7 +269,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -273,12 +277,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -289,6 +287,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -297,38 +306,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -348,36 +357,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "About %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "About Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -389,11 +397,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -409,39 +421,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Add another stream..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Add directory..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Add file..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Add files to transcode" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Add folder" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Add folder..." @@ -453,11 +465,11 @@ msgstr "Add new folder..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -521,6 +533,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -529,22 +545,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Add stream..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Add to playlist" @@ -553,6 +581,10 @@ msgstr "Add to playlist" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -582,15 +614,15 @@ msgstr "Added today" msgid "Added within three months" msgstr "Added within three months" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Advanced grouping..." @@ -598,12 +630,12 @@ msgstr "Advanced grouping..." msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -611,11 +643,11 @@ msgstr "" msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideal loudness for all tracks)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -625,35 +657,36 @@ msgstr "Album artist" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albums with covers" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albums without covers" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "All Files (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "All albums" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "All artists" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "All files (*)" @@ -662,19 +695,19 @@ msgstr "All files (*)" msgid "All playlists (%1)" msgstr "All playlists (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -699,30 +732,30 @@ msgstr "Always show the main window" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -731,13 +764,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Append files/URLs to the playlist" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -745,52 +778,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Apply compression to prevent clipping" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Are you sure you want to delete the \"%1\" preset?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Artist radio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -798,9 +826,13 @@ msgstr "" msgid "Audio format" msgstr "Audio format" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Authentication failed" @@ -808,7 +840,7 @@ msgstr "Authentication failed" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Authors" @@ -824,7 +856,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "Automatically open single categories in the library tree" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -832,15 +864,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +893,7 @@ msgstr "" msgid "Background opacity" msgstr "Background opacity" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -869,11 +901,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Ban" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Bar analyzer" @@ -893,18 +921,17 @@ msgstr "Behaviour" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -912,7 +939,12 @@ msgstr "Bit rate" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Block analyzer" @@ -928,7 +960,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom analyzer" @@ -942,11 +974,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -958,43 +990,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Change shortcut..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1004,15 +1059,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Check for updates..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Choose automatically" @@ -1028,11 +1087,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1041,7 +1100,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Classical" @@ -1049,17 +1108,17 @@ msgstr "Classical" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Clear playlist" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1072,8 +1131,8 @@ msgstr "Clementine Error" msgid "Clementine Orange" msgstr "Clementine Orange" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine Visualisation" @@ -1095,8 +1154,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1110,20 +1169,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1135,11 +1187,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Click here to add some music" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1149,7 +1201,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1164,19 +1219,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Close visualisation" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1184,73 +1239,78 @@ msgstr "Club" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comment" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Composer" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configure Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configure Shortcuts" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configure library..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1258,11 +1318,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1272,12 +1332,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1293,17 +1357,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copy to library..." @@ -1311,156 +1379,152 @@ msgstr "Copy to library..." msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Could not create the GStreamer element \"%1\" - make sure you have all the required GStreamer plugins installed" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Cover Manager" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Cross-fade when changing tracks automatically" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Cross-fade when changing tracks manually" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1468,7 +1532,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1480,54 +1544,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Custom..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Date created" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Date modified" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "De&fault" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Decrease the volume by 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Decrease volume" @@ -1535,6 +1595,11 @@ msgstr "Decrease volume" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1543,30 +1608,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "Delay between visualisations" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1574,31 +1639,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Delete preset" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destination" @@ -1607,7 +1672,7 @@ msgstr "Destination" msgid "Details..." msgstr "Details..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1619,15 +1684,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1664,12 +1729,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Disabled" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1679,15 +1749,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Display options" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Display the on-screen-display" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1699,27 +1769,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Don't repeat" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Don't show in various artists" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Don't shuffle" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1727,12 +1797,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1748,7 +1819,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1756,15 +1827,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1772,7 +1843,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1781,23 +1852,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Downloading Magnatune catalogue" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Drag to reposition" @@ -1817,20 +1888,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Edit tag..." @@ -1842,16 +1913,16 @@ msgstr "" msgid "Edit track information" msgstr "Edit track information" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Edit track information..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Edit track information..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Edit..." @@ -1859,6 +1930,10 @@ msgstr "Edit..." msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Enable equalizer" @@ -1873,7 +1948,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1901,15 +1976,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Enter a new name for this playlist" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Enter an artist or tag to start listening to Last.fm radio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1923,7 +1993,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Enter search terms here" @@ -1932,11 +2002,11 @@ msgstr "Enter search terms here" msgid "Enter the URL of an internet radio stream:" msgstr "Enter the URL of an internet radio stream:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1944,21 +2014,22 @@ msgstr "" msgid "Entire collection" msgstr "Entire collection" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizer" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1966,38 +2037,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Error processing %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2029,7 +2100,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2041,7 +2112,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2062,36 +2133,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2101,42 +2172,42 @@ msgstr "" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Fade out when stopping a track" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Fading" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Fading duration" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2145,11 +2216,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2165,11 +2236,11 @@ msgstr "Fetch automatically" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2177,7 +2248,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2185,19 +2256,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "File name" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "File name (without path)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "File size" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2207,7 +2282,7 @@ msgstr "File type" msgid "Filename" msgstr "Filename" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Files" @@ -2215,15 +2290,19 @@ msgstr "Files" msgid "Files to transcode" msgstr "Files to transcode" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2231,7 +2310,7 @@ msgstr "" msgid "First level" msgstr "First level" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2247,12 +2326,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2267,7 +2346,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2295,31 +2374,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Friends" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer audio engine" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2327,30 +2398,30 @@ msgstr "" msgid "General settings" msgstr "General settings" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Getting channels" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2362,11 +2433,11 @@ msgstr "Give it a name:" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2374,7 +2445,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2384,7 +2455,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2392,15 +2463,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2408,44 +2479,44 @@ msgstr "" msgid "Group Library by..." msgstr "Group Library by..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Group by" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Group by Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Group by Artist" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Group by Artist/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Group by Artist/Year - Album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Group by Genre/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Group by Genre/Artist/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2454,7 +2525,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2470,25 +2541,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2500,15 +2571,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2518,24 +2589,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2546,7 +2617,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2558,36 +2629,36 @@ msgstr "Include album art in the notification" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Increase the volume by 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Increase volume" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2595,55 +2666,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Invalid API key" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Invalid format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Invalid method" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Invalid parameters" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Invalid resource specified" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Invalid service" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Invalid session key" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2651,42 +2722,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Jump to the currently playing track" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2695,11 +2766,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2707,11 +2779,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Headphones" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Large Hall" @@ -2719,12 +2791,16 @@ msgstr "Large Hall" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2732,45 +2808,7 @@ msgstr "" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Library - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Neighbour Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Radio Station - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm Similar Artists to %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm Tag Radio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm is currently busy, please try again in a few minutes" @@ -2778,11 +2816,11 @@ msgstr "Last.fm is currently busy, please try again in a few minutes" msgid "Last.fm password" msgstr "Last.fm password" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2790,28 +2828,24 @@ msgstr "" msgid "Last.fm username" msgstr "Last.fm username" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Length" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Library" @@ -2819,24 +2853,24 @@ msgstr "Library" msgid "Library advanced grouping" msgstr "Library advanced grouping" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2848,15 +2882,15 @@ msgstr "Load" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2864,84 +2898,89 @@ msgstr "" msgid "Load playlist" msgstr "Load playlist" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Load playlist..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Loading Last.fm radio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Loading stream" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Loads files/URLs, replacing current playlist" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Love" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2953,12 +2992,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2970,15 +3014,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2986,7 +3030,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2994,15 +3038,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Malformed response" @@ -3015,15 +3064,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3035,17 +3084,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3057,11 +3110,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3069,20 +3126,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3090,15 +3147,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3107,7 +3168,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Move to library..." @@ -3116,7 +3177,7 @@ msgstr "Move to library..." msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3124,56 +3185,32 @@ msgstr "" msgid "Music Library" msgstr "Music Library" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Mute" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "My Neighborhood" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "My Radio Station" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "My Recommendations" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Name" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3181,23 +3218,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Neighbours" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3206,21 +3239,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "New playlist" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3228,24 +3261,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Next track" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "No analyzer" @@ -3253,7 +3286,7 @@ msgstr "No analyzer" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3261,7 +3294,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "No matches found. Clear the search box to show the whole playlist again." @@ -3275,11 +3308,11 @@ msgstr "" msgid "None" msgstr "None" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3287,43 +3320,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Not enough content" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Not enough fans" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Not enough members" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Not enough neighbours" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Notification type" @@ -3336,36 +3373,41 @@ msgstr "Notifications" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD Preview" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3373,11 +3415,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3385,23 +3427,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3409,30 +3451,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Open..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operation failed" @@ -3452,23 +3499,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Other options" @@ -3476,7 +3523,7 @@ msgstr "Other options" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3484,15 +3531,11 @@ msgstr "" msgid "Output options" msgstr "Output options" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3504,15 +3547,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3521,20 +3564,20 @@ msgstr "Party" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pause" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pause playback" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Paused" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3543,34 +3586,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Play" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Play Artist or Tag" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Play artist radio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Play if stopped, pause if playing" @@ -3579,45 +3610,42 @@ msgstr "Play if stopped, pause if playing" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Play tag radio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Play the th track in the playlist" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Play/Pause" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Playback" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Player options" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Playlist" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Playlist finished" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Playlist options" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3629,23 +3657,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3654,22 +3682,23 @@ msgid "Popup duration" msgstr "Popup duration" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pre-amp" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3705,7 +3734,7 @@ msgstr "" msgid "Press a key" msgstr "Press a key" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Press a key combination to use for %1..." @@ -3716,20 +3745,20 @@ msgstr "Pretty OSD options" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Previous track" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3737,21 +3766,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progress" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3759,7 +3792,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3767,28 +3805,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (equal loudness for all tracks)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3796,48 +3839,48 @@ msgstr "" msgid "Random visualization" msgstr "Random visualisation" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Refresh catalogue" @@ -3845,19 +3888,15 @@ msgstr "Refresh catalogue" msgid "Refresh channels" msgstr "Refresh channels" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3869,8 +3908,8 @@ msgstr "" msgid "Remember from last time" msgstr "Remember from last time" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Remove" @@ -3878,7 +3917,7 @@ msgstr "Remove" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3886,73 +3925,77 @@ msgstr "" msgid "Remove folder" msgstr "Remove folder" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Remove from playlist" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Rename playlist" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Rename playlist..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Renumber tracks in this order..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repeat" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repeat album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repeat playlist" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repeat track" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3961,15 +4004,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3977,24 +4020,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4002,15 +4045,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4030,11 +4073,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4046,25 +4089,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Sample rate" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4072,27 +4115,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Save playlist" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Save playlist..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Save preset" @@ -4108,11 +4157,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "Save this stream in the Internet tab" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4124,7 +4173,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4132,10 +4181,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "Scrobble tracks that I listen to" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4143,23 +4196,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Search Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4179,21 +4232,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4201,27 +4254,27 @@ msgstr "" msgid "Second level" msgstr "Second level" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Seek backward" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Seek forward" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Seek the currently playing track by a relative amount" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Seek the currently playing track to an absolute position" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4229,7 +4282,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4245,7 +4298,7 @@ msgstr "" msgid "Select visualizations" msgstr "Select visualisations" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Select visualisations..." @@ -4253,7 +4306,7 @@ msgstr "Select visualisations..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4265,51 +4318,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Service offline" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Set %1 to \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Set the volume to percent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Set value for all selected tracks..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Shortcut" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Shortcut for %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Show" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4337,15 +4390,15 @@ msgstr "Show a popup from the system tray" msgid "Show a pretty OSD" msgstr "Show a pretty OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4357,32 +4410,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Show fullsize..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Show in various artists" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4391,8 +4448,8 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4406,27 +4463,27 @@ msgstr "Show tray icon" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Shuffle" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Shuffle all" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Shuffle playlist" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4442,7 +4499,7 @@ msgstr "Sign out" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4454,43 +4511,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Skip backwards in playlist" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Skip forwards in playlist" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4498,11 +4563,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4522,15 +4587,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4546,7 +4619,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4554,7 +4627,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4562,77 +4635,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Start the playlist currently playing" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Start transcoding" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Starting %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stop" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Stop after this track" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Stop playback" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Stop playing after current track" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Stopped" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4642,7 +4715,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4650,7 +4723,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4658,12 +4731,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Successfully written %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4672,13 +4745,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4690,43 +4763,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tag" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Tag radio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4734,11 +4799,11 @@ msgstr "Techno" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Thanks to" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "The \"%1\" command could not be started." @@ -4747,17 +4812,12 @@ msgstr "The \"%1\" command could not be started." msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "The playlist '%1' was empty or could not be loaded." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4765,40 +4825,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4810,13 +4870,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4836,13 +4896,13 @@ msgstr "" msgid "Third level" msgstr "Third level" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4856,11 +4916,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4869,7 +4929,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4879,33 +4939,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "This stream is for paid subscribers only" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Title" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4913,27 +4973,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4941,21 +5001,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Track" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transcode Music" @@ -4967,7 +5031,7 @@ msgstr "Transcoder Log" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Transcoding %1 files using %2 threads" @@ -4976,11 +5040,11 @@ msgstr "Transcoding %1 files using %2 threads" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4988,72 +5052,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Unknown" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Unknown error" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Unset cover" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5061,7 +5125,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "Update the library when Clementine starts" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5069,21 +5133,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Updating library" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Usage" @@ -5091,11 +5155,11 @@ msgstr "Usage" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Use Gnome's shortcut keys" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Use Replay Gain metadata if it is available" @@ -5115,7 +5179,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5155,20 +5219,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5190,12 +5254,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Various artists" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Version %1" @@ -5208,7 +5272,7 @@ msgstr "View" msgid "Visualization mode" msgstr "Visualisation mode" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualisations" @@ -5216,11 +5280,15 @@ msgstr "Visualisations" msgid "Visualizations Settings" msgstr "Visualisations Settings" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5238,11 +5306,11 @@ msgstr "WAV" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5250,7 +5318,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5276,32 +5344,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5322,7 +5390,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5330,25 +5398,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5360,11 +5428,11 @@ msgstr "Year" msgid "Year - Album" msgstr "Year - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5372,13 +5440,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5388,12 +5456,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5401,13 +5469,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "You can change the way the songs in the library are organised." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5417,13 +5485,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5468,17 +5543,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Your Last.fm credentials were incorrect" @@ -5486,42 +5555,43 @@ msgstr "Your Last.fm credentials were incorrect" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Your library is empty!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Your radio streams" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "add %n songs" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5541,19 +5611,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5563,20 +5633,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disc %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5584,11 +5654,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5596,54 +5666,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "options" @@ -5655,36 +5726,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "remove %n songs" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "track %1" diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po index 005f6a28f..90a632ee1 100644 --- a/src/translations/en_GB.po +++ b/src/translations/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/clementine/language/en_GB/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -55,11 +55,16 @@ msgstr " pt" msgid " seconds" msgstr " seconds" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " songs" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albums" @@ -69,12 +74,12 @@ msgstr "%1 albums" msgid "%1 days" msgstr "%1 days" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 days ago" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 playlists (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 selected of" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 song" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 songs" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 songs found" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 songs found (showing %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 tracks" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 other listeners" @@ -139,18 +144,21 @@ msgstr "%L1 total plays" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n failed" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n finished" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n remaining" @@ -162,24 +170,24 @@ msgstr "&Align text" msgid "&Center" msgstr "&Centre" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Custom" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Help" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Hide %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Hide..." @@ -187,23 +195,23 @@ msgstr "&Hide..." msgid "&Left" msgstr "&Left" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Music" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&None" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Playlist" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Quit" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Repeat mode" @@ -211,23 +219,23 @@ msgstr "Repeat mode" msgid "&Right" msgstr "&Right" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Shuffle mode" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Stretch columns to fit window" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Tools" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(different across multiple songs)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...and all the Amarok contributors" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "1 day" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 track" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 random tracks" @@ -272,12 +276,6 @@ msgstr "50 random tracks" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Tokens start with %, for example: %artist %album %title

\n\n

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "A Spotify Premium account is required." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "A smart playlist is a dynamic list of songs that come from your library. There are different types of smart playlist that offer different ways of selecting songs." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "A song will be included in the playlist if it matches these conditions." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "About %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "About Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "About Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Account details" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "Action" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "Add a new line if supported by the notification type" msgid "Add action" msgstr "Add action" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Add another stream..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Add directory..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Add file..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Add files to transcode" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Add folder" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Add folder..." @@ -452,11 +464,11 @@ msgstr "Add new folder..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Add search term" @@ -520,6 +532,10 @@ msgstr "Add song skip count" msgid "Add song title tag" msgstr "Add song title tag" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Add song track tag" @@ -528,22 +544,34 @@ msgstr "Add song track tag" msgid "Add song year tag" msgstr "Add song year tag" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Add stream..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Add to another playlist" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Add to playlist" @@ -552,6 +580,10 @@ msgstr "Add to playlist" msgid "Add to the queue" msgstr "Add to the queue" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Add wiimotedev action" @@ -581,15 +613,15 @@ msgstr "Added today" msgid "Added within three months" msgstr "Added within three months" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Advanced grouping..." @@ -597,12 +629,12 @@ msgstr "Advanced grouping..." msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "After copying..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "After copying..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideal loudness for all tracks)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "Album artist" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Album info on jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albums with covers" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albums without covers" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "All Files (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "All Glory to the Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "All albums" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "All artists" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "All files (*)" @@ -661,19 +694,19 @@ msgstr "All files (*)" msgid "All playlists (%1)" msgstr "All playlists (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "All the translators" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "All tracks" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "Always show the main window" msgid "Always start playing" msgstr "Always start playing" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "An additional plugin is required to use Spotify in Clementine. Would you like to download and install it now?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "An error occurred loading the iTunes database" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "An error occurred writing metadata to '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "And:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "Appearance" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Append files/URLs to the playlist" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Append to current playlist" @@ -744,52 +777,47 @@ msgstr "Append to current playlist" msgid "Append to the playlist" msgstr "Append to the playlist" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Apply compression to prevent clipping" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Are you sure you want to delete the \"%1\" preset?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Are you sure you want to reset this song's statistics?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Artist info" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Artist radio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Artist tags" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Artist's initial" @@ -797,9 +825,13 @@ msgstr "Artist's initial" msgid "Audio format" msgstr "Audio format" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Authentication failed" @@ -807,7 +839,7 @@ msgstr "Authentication failed" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Authors" @@ -823,7 +855,7 @@ msgstr "Automatic updating" msgid "Automatically open single categories in the library tree" msgstr "Automatically open single categories in the library tree" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Available" @@ -831,15 +863,15 @@ msgstr "Available" msgid "Average bitrate" msgstr "Average bitrate" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +892,7 @@ msgstr "" msgid "Background opacity" msgstr "Background opacity" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Ban" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Bar analyzer" @@ -892,18 +920,17 @@ msgstr "Behaviour" msgid "Best" msgstr "Best" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biography from %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "Bit rate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Block analyzer" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "Body" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom analyzer" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "Browse…" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "Buttons" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE sheet support" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Cancel" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Change cover art" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Change font size..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Change repeat mode" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Change shortcut..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Change shuffle mode" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Change the language" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Check for updates..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Choose a name for your smart playlist" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Choose automatically" @@ -1027,11 +1086,11 @@ msgstr "Choose font..." msgid "Choose from the list" msgstr "Choose from the list" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Choose how the playlist is sorted and how many songs it will contain." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Choose the websites you want Clementine to use when searching for lyrics." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Classical" @@ -1048,17 +1107,17 @@ msgstr "Classical" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Clear" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Clear playlist" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1071,8 +1130,8 @@ msgstr "Clementine Error" msgid "Clementine Orange" msgstr "Clementine Orange" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine Visualisation" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1186,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Click here to add some music" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Close visualisation" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1183,73 +1238,78 @@ msgstr "Club" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comment" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Composer" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configure Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configure library..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1317,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copy to library..." @@ -1310,156 +1378,152 @@ msgstr "Copy to library..." msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Cover Manager" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Cross-fade when changing tracks automatically" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Cross-fade when changing tracks manually" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Custom..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Date created" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Date modified" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Decrease the volume by 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1534,6 +1594,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1607,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "Delay between visualisations" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,31 +1638,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Delete preset" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1606,7 +1671,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1618,15 +1683,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Disabled" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Display the on-screen-display" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Don't repeat" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Don't show in various artists" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Don't shuffle" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1796,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,23 +1851,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Drag to reposition" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Edit tag..." @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "Edit track information" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Edit track information..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Edit track information..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1929,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Enable equalizer" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Enter an artist or tag to start listening to Last.fm radio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Enter search terms here" @@ -1931,11 +2001,11 @@ msgstr "Enter search terms here" msgid "Enter the URL of an internet radio stream:" msgstr "Enter the URL of an internet radio stream:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "Entire collection" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizer" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2036,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Fade out when stopping a track" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Fading" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Fading duration" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "Fetch automatically" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2255,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "File name" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "File name (without path)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "File size" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "File type" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Files" @@ -2214,15 +2289,19 @@ msgstr "Files" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,7 +2309,7 @@ msgstr "" msgid "First level" msgstr "First level" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Friends" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer audio engine" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2397,30 @@ msgstr "" msgid "General settings" msgstr "General settings" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Getting channels" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "Group Library by..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Group by Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Group by Artist" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Group by Artist/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Group by Artist/Year - Album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Group by Genre/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Group by Genre/Artist/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "Include album art in the notification" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Increase the volume by 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2594,55 +2665,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Invalid API key" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Invalid format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Invalid method" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Invalid parameters" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Invalid resource specified" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Invalid service" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Invalid session key" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Headphones" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Large Hall" @@ -2718,12 +2790,16 @@ msgstr "Large Hall" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Library - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Neighbour Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Radio Station - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm Similar Artists to %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm Tag Radio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm is currently busy, please try again in a few minutes" @@ -2777,11 +2815,11 @@ msgstr "Last.fm is currently busy, please try again in a few minutes" msgid "Last.fm password" msgstr "Last.fm password" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "Last.fm username" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Length" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Library" @@ -2818,24 +2852,24 @@ msgstr "Library" msgid "Library advanced grouping" msgstr "Library advanced grouping" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2847,15 +2881,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Loading Last.fm radio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Loading stream" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Loads files/URLs, replacing current playlist" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Love" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "Lyrics" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Malformed response" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3068,20 +3125,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Move to library..." @@ -3115,7 +3176,7 @@ msgstr "Move to library..." msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3123,56 +3184,32 @@ msgstr "" msgid "Music Library" msgstr "Music Library" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "My Neighbourhood" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "My Radio Station" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "My Recommendations" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Name" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Neighbours" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3238,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Next track" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "No analyzer" @@ -3252,7 +3285,7 @@ msgstr "No analyzer" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "None" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Not enough content" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Not enough fans" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Not enough members" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Not enough neighbours" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Notification type" @@ -3335,36 +3372,41 @@ msgstr "Notifications" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD Preview" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operation failed" @@ -3451,23 +3498,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Other options" @@ -3475,7 +3522,7 @@ msgstr "Other options" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "Party" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pause" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pause playback" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Paused" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Play" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Play Artist or Tag" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Play artist radio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Play if stopped, pause if playing" @@ -3578,45 +3609,42 @@ msgstr "Play if stopped, pause if playing" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Play tag radio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Play the th track in the playlist" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Playback" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Player options" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Playlist" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Playlist finished" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Playlist options" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "Popup duration" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pre-amp" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "Pretty OSD options" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Previous track" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3791,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,28 +3804,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "Random visualisation" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "Refresh channels" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "Remember from last time" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Remove" @@ -3877,7 +3916,7 @@ msgstr "Remove" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "Remove folder" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Remove from playlist" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Renumber tracks in this order..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repeat" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repeat album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repeat playlist" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repeat track" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Sample rate" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Save preset" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,10 +4180,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "Scrobble tracks that I listen to" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4142,23 +4195,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "Second level" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Seek the currently playing track by a relative amount" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Seek the currently playing track to an absolute position" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4281,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "Select visualisations" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Select visualisations..." @@ -4252,7 +4305,7 @@ msgstr "Select visualisations..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Service offline" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Set %1 to \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Set the volume to percent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Set value for all selected tracks..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "Show a popup from the system tray" msgid "Show a pretty OSD" msgstr "Show a pretty OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Show fullsize..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Show in various artists" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,8 +4447,8 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4405,27 +4462,27 @@ msgstr "Show tray icon" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Shuffle" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Shuffle all" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Shuffle playlist" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "Sign out" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Skip backwards in playlist" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Skip forwards in playlist" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4497,11 +4562,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Start the playlist currently playing" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stop" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Stop after this track" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Stop playback" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tag" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Tag radio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4733,11 +4798,11 @@ msgstr "Techno" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Thanks to" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "Third level" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "This stream is for paid subscribers only" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Title" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Track" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4987,72 +5051,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Unknown" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Unknown error" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Unset cover" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Updating library" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Usage" @@ -5090,11 +5154,11 @@ msgstr "Usage" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Various artists" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Version %1" @@ -5207,7 +5271,7 @@ msgstr "View" msgid "Visualization mode" msgstr "Visualisation mode" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualisations" @@ -5215,11 +5279,15 @@ msgstr "Visualisations" msgid "Visualizations Settings" msgstr "Visualisations Settings" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5237,11 +5305,11 @@ msgstr "WAV" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "Year" msgid "Year - Album" msgstr "Year - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5371,13 +5439,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "You can change the way the songs in the library are organised." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Your Last.fm credentials were incorrect" @@ -5485,42 +5554,43 @@ msgstr "Your Last.fm credentials were incorrect" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Your library is empty!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Your radio streams" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5540,19 +5610,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,20 +5632,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disc %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "options" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "track %1" diff --git a/src/translations/eo.po b/src/translations/eo.po index 84f95a33b..e4913cd21 100644 --- a/src/translations/eo.po +++ b/src/translations/eo.po @@ -3,19 +3,20 @@ # This file is distributed under the same license as the Clementine package. # # Translators: +# Adolfo Jayme Barrientos , 2014 # FIRST AUTHOR , 2010 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-05-12 06:08+0000\n" +"Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/clementine/language/eo/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eo\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +41,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -55,11 +56,16 @@ msgstr " pt" msgid " seconds" msgstr " sekundoj" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" +msgstr "kantoj" + +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" msgstr "" -#: widgets/osd.cpp:193 +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albumoj" @@ -69,12 +75,12 @@ msgstr "%1 albumoj" msgid "%1 days" msgstr "%1 tagoj" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +90,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 ludlistoj (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 elektitaj el" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 kantaĵo" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 kantaĵoj" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 trakoj" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev-modulo" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -137,20 +143,23 @@ msgstr "" #: ../bin/src/ui_notificationssettingspage.h:427 msgid "%filename%" -msgstr "" +msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n malsukcesis" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n finiĝis" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n restas" @@ -162,24 +171,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "Propra" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" -msgstr "" +msgstr "&Helpo" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -187,23 +196,23 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nenio" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" -msgstr "" +msgstr "&Ludlisto" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "Eliri" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,29 +220,29 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... kaj ĉiuj Amarok-kontribuintoj" #: ../bin/src/ui_albumcovermanager.h:223 ../bin/src/ui_albumcovermanager.h:224 msgid "0" -msgstr "" +msgstr "0" #: ../bin/src/ui_trackslider.h:70 ../bin/src/ui_trackslider.h:74 msgid "0:00:00" @@ -247,14 +256,10 @@ msgstr "" msgid "1 day" msgstr "1 tago" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 trako" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +269,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -272,12 +277,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +287,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,44 +306,44 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" #: ../bin/src/ui_transcodersettingspage.h:179 msgid "AAC" -msgstr "" +msgstr "AAC" #: ../bin/src/ui_digitallyimportedsettingspage.h:179 msgid "AAC 128k" @@ -347,52 +357,55 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" -msgstr "" +msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" -msgstr "" +msgstr "LAŬDI ĈIUJN AL LA HIPNOBUFO" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Pri %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Pri Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Pri Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Kontodetaloj" #: ../bin/src/ui_digitallyimportedsettingspage.h:161 msgid "Account details (Premium)" -msgstr "" +msgstr "Kontodetaloj (Premium)" #: ../bin/src/ui_wiimotesettingspage.h:191 msgid "Action" msgstr "Ago" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Ŝalti Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +421,39 @@ msgstr "" msgid "Add action" msgstr "Aldoni agon" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Aldoni plian fluon..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Aldoni dosierujon..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Aldoni dosieron..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Aldoni dosierojn transkodigotajn" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Aldoni dosierujon" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Aldoni dosierujon..." @@ -452,11 +465,11 @@ msgstr "Aldoni novan dosierujon..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -520,6 +533,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +545,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Aldoni fluon..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Aldoni al ludlisto" @@ -552,6 +581,10 @@ msgstr "Aldoni al ludlisto" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Aldoni wiimotedev-agon" @@ -581,15 +614,15 @@ msgstr "Aldonita(j) hodiaŭ" msgid "Added within three months" msgstr "Aldonita(j) en la lastaj tri monatoj" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Detala grupigado..." @@ -597,12 +630,12 @@ msgstr "Detala grupigado..." msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Post kopiado..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +643,11 @@ msgstr "Post kopiado..." msgid "Album" msgstr "Albumo" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Albumo (ideala laŭteco por ĉiuj sonaĵoj)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +657,36 @@ msgstr "Albumverkinto" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumoj kun kovriloj" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumoj sen kovriloj" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Ĉiuj dosieroj (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Ĉiuj albumoj" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Ĉiuj verkintoj" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Ĉiuj dosieroj (*)" @@ -661,19 +695,19 @@ msgstr "Ĉiuj dosieroj (*)" msgid "All playlists (%1)" msgstr "Ĉiuj ludlistoj (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" -msgstr "" +msgstr "Ĉiuj tradukistoj" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +732,30 @@ msgstr "Ĉiam montri la ĉeffenestron" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Eraro okazis dum ŝargado de la iTunes-datumbazo" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Kaj:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +764,13 @@ msgstr "" msgid "Appearance" msgstr "Aspekto" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Aldoni dosierojn/URL al la ludlisto" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +778,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Verkinto" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Informoj pri la verkinto" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,19 +826,23 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" #: ../bin/src/ui_podcastinfowidget.h:192 msgid "Author" -msgstr "" +msgstr "Aŭtoro" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" -msgstr "" +msgstr "Aŭtoroj" #: ../bin/src/ui_transcoderoptionsspeex.h:227 msgid "Auto" @@ -823,23 +856,23 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" -msgstr "" +msgstr "Desponeblaj" #: ../bin/src/ui_transcoderoptionsspeex.h:221 msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +893,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +901,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +921,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +939,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,13 +960,13 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" #: ../bin/src/ui_boxsettingspage.h:103 msgid "Box" -msgstr "" +msgstr "Box" #: ../bin/src/ui_magnatunedownloaddialog.h:146 #: ../bin/src/ui_podcastsettingspage.h:242 @@ -941,11 +974,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +990,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 -msgid "CDDA" +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" msgstr "" -#: library/library.cpp:100 +#: core/song.cpp:401 +msgid "CDDA" +msgstr "CDDA" + +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1059,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1027,11 +1087,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,28 +1100,28 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" -msgstr "" +msgstr "Klazika" #: ../bin/src/ui_podcastsettingspage.h:243 msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" -msgstr "" +msgstr "Clementine" #: ../bin/src/ui_errordialog.h:93 msgid "Clementine Error" @@ -1071,8 +1131,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1094,8 +1154,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1169,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1187,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1201,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,93 +1219,98 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" -msgstr "" +msgstr "Klubo" #: ../bin/src/ui_appearancesettingspage.h:272 msgid "Colors" -msgstr "" +msgstr "Koloroj" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" +msgstr "Komento" + +#: internet/vkservice.cpp:151 +msgid "Community Radio" msgstr "" #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1318,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1332,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,182 +1357,182 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" #: ../bin/src/ui_podcastinfowidget.h:194 msgid "Copyright" -msgstr "" +msgstr "Kopirajto" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" -msgstr "Ctrl+Down" +msgstr "Ctrl+↓" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" -msgstr "Ctrl+Shift+A" +msgstr "Ctrl+Maj+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" -msgstr "Ctrl+Shift+O" +msgstr "Ctrl+Maj+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" -msgstr "" +msgstr "Ctrl+Maj+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" #: ../bin/src/ui_queuemanager.h:129 msgid "Ctrl+Up" -msgstr "Ctrl+Up" +msgstr "Ctrl+↑" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1479,54 +1544,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" -msgstr "" +msgstr "Tagoj" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1534,6 +1595,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1608,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" -msgstr "" +msgstr "Forigi" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,40 +1639,40 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" #: ../bin/src/ui_transcodedialog.h:221 msgid "Details..." -msgstr "" +msgstr "Detaloj…" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1618,17 +1684,17 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Dialogujo" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1636,7 +1702,7 @@ msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:160 msgid "Digitally Imported" -msgstr "" +msgstr "Digitally Imported" #: ../bin/src/ui_digitallyimportedsettingspage.h:164 msgid "Digitally Imported password" @@ -1663,30 +1729,35 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" -msgstr "" +msgstr "Disko" #: ../bin/src/ui_transcoderoptionsspeex.h:234 msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1769,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1797,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1819,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1827,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1843,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,29 +1852,29 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" #: ../bin/src/ui_dropboxsettingspage.h:103 msgid "Dropbox" -msgstr "" +msgstr "Dropbox" #: ui/equalizer.cpp:119 msgid "Dubstep" @@ -1810,26 +1882,26 @@ msgstr "" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Daŭro" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1913,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1930,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1948,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1976,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1993,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2002,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2014,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" -msgstr "" +msgstr "Egalizilo" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2037,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2100,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2112,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,81 +2133,81 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" -msgstr "" +msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" -msgstr "" +msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" -msgstr "" +msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" -msgstr "" +msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" -msgstr "" +msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" -msgstr "" +msgstr "F8" #: ../bin/src/ui_magnatunedownloaddialog.h:140 #: ../bin/src/ui_magnatunesettingspage.h:171 #: ../bin/src/ui_transcodersettingspage.h:177 msgid "FLAC" -msgstr "" +msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2216,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,19 +2236,19 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Dosierformo" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2256,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" -msgstr "" +msgstr "Dosiernomo" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2204,25 +2280,29 @@ msgstr "" #: ../bin/src/ui_transcodedialog.h:208 msgid "Filename" -msgstr "" +msgstr "Dosiernomo" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" -msgstr "" +msgstr "Dosieroj" #: ../bin/src/ui_transcodedialog.h:205 msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,9 +2310,9 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" -msgstr "" +msgstr "Flac" #: ../bin/src/ui_songinfosettingspage.h:156 msgid "Font size" @@ -2246,12 +2326,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2346,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2283,7 +2363,7 @@ msgstr "" #: ../bin/src/ui_magnatunedownloaddialog.h:136 msgid "Format" -msgstr "" +msgstr "Formato" #: analyzers/analyzercontainer.cpp:46 #: visualisations/visualisationcontainer.cpp:104 @@ -2294,31 +2374,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2398,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,19 +2433,19 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" #: ../bin/src/ui_googledrivesettingspage.h:103 msgid "Google Drive" -msgstr "" +msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,23 +2455,23 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" -msgstr "" +msgstr "Grooveshark" #: internet/groovesharkservice.cpp:408 msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2479,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2525,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,27 +2541,27 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" -msgstr "" +msgstr "Horoj" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" -msgstr "" +msgstr "Hipnobufo" #: ../bin/src/ui_magnatunesettingspage.h:159 msgid "I don't have a Magnatune account" @@ -2497,17 +2569,17 @@ msgstr "" #: ../bin/src/ui_deviceproperties.h:370 msgid "Icon" -msgstr "" +msgstr "Ikono" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2589,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2617,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,92 +2629,92 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" -msgstr "" +msgstr "Informoj" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" -msgstr "" +msgstr "Interreto" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2722,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" -msgstr "" +msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,23 +2766,24 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "" +msgstr "Katidoj" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" -msgstr "" +msgstr "Lingvo" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2718,58 +2791,24 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" -msgstr "" +msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2816,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2828,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" -msgstr "" +msgstr "Maldekstro" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2818,24 +2853,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2847,15 +2882,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2898,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" -msgstr "" +msgstr "Ensaluti" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Elsaluti" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,15 +2992,20 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 -msgid "MP3" +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" msgstr "" +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 +msgid "MP3" +msgstr "MP3" + #: ../bin/src/ui_digitallyimportedsettingspage.h:177 msgid "MP3 256k" msgstr "" @@ -2969,23 +3014,23 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" -msgstr "" +msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" -msgstr "" +msgstr "Magnatune" #: ../bin/src/ui_magnatunedownloaddialog.h:131 msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3038,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3064,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3084,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,32 +3110,36 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" -msgstr "" +msgstr "Modelo" #: ../bin/src/ui_librarysettingspage.h:192 msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" -msgstr "" +msgstr "Monatoj" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3147,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Pli" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3168,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,64 +3177,40 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" -msgstr "" +msgstr "Muziko" #: ../bin/src/ui_librarysettingspage.h:186 msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" -msgstr "" +msgstr "Silentigi" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" -msgstr "" +msgstr "Nomo" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nomo" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3218,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3239,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3261,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3252,7 +3286,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3294,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3308,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,85 +3320,94 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:375 msgid "Notifications" -msgstr "" +msgstr "Sciigoj" #: ui/macsystemtrayicon.mm:64 msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" -msgstr "" +msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,35 +3415,35 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:290 msgid "Opacity" -msgstr "" +msgstr "Opakeco" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3451,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3449,25 +3497,25 @@ msgstr "" #: ../bin/src/ui_transcodersettingspage.h:181 msgid "Opus" -msgstr "" +msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3475,7 +3523,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3531,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,73 +3547,61 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 #: ../bin/src/ui_podcastsettingspage.h:253 #: ../bin/src/ui_networkproxysettingspage.h:169 msgid "Password" -msgstr "" +msgstr "Pasvorto" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" -msgstr "" +msgstr "Paŭzigi" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" #: ../bin/src/ui_albumcoverexport.h:215 msgid "Pixel" -msgstr "" +msgstr "Bildero" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" -msgstr "" +msgstr "Ludi" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,47 +3610,44 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" -msgstr "" +msgstr "Ludi/paŭzigi" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" -msgstr "" +msgstr "Ludado" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" -msgstr "" +msgstr "Ludlisto" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" -msgstr "" +msgstr "Ludlistoj" #: ../data/oauthsuccess.html:38 msgid "Please close your browser and return to Clementine." @@ -3628,23 +3657,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" -msgstr "" +msgstr "Podkastoj" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" -msgstr "" +msgstr "Popo" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3682,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" -msgstr "" +msgstr "Pordo" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3694,7 +3724,7 @@ msgstr "" #: ../bin/src/ui_equalizer.h:164 msgid "Preset:" -msgstr "" +msgstr "Antaŭagordo:" #: ../bin/src/ui_wiimoteshortcutgrabber.h:124 msgid "Press a button combination to use for" @@ -3704,7 +3734,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3745,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3766,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" -msgstr "" +msgstr "Progreso" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Progreso" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" -msgstr "" +msgstr "Psikedela" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3792,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,77 +3805,82 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" -msgstr "" +msgstr "Pluvo" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "Pluvo" #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,21 +3888,17 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" -msgstr "" +msgstr "Regeo" #: ../bin/src/ui_wiimoteshortcutgrabber.h:126 msgid "Remember Wii remote swing" @@ -3868,8 +3908,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3877,7 +3917,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3925,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4004,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4020,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" -msgstr "" +msgstr "Reŝargo" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4045,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4019,7 +4063,7 @@ msgstr "" #: ../bin/src/ui_equalizer.h:174 msgid "Right" -msgstr "" +msgstr "Dekstro" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" @@ -4029,13 +4073,13 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" -msgstr "" +msgstr "Roko" #: ../bin/src/ui_console.h:81 msgid "Run" @@ -4045,25 +4089,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4115,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4107,11 +4157,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4173,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,34 +4181,38 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" -msgstr "" +msgstr "Serĉi" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "Serĉi" #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4232,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" -msgstr "" +msgstr "Serĉorezultoj" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4254,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4282,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4298,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4306,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4318,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4390,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4410,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4448,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,33 +4463,33 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" #: ../bin/src/ui_podcastsettingspage.h:252 msgid "Sign in" -msgstr "" +msgstr "Ensaluti" #: ../bin/src/ui_loginstatewidget.h:173 msgid "Sign out" @@ -4441,55 +4499,63 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" #: ../bin/src/ui_albumcoverexport.h:212 msgid "Size" -msgstr "" +msgstr "Grandeco" #: ../bin/src/ui_albumcoverexport.h:214 msgid "Size:" -msgstr "" +msgstr "Grandeco:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" -msgstr "" +msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4497,11 +4563,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4587,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4543,9 +4617,9 @@ msgstr "" #: ../bin/src/ui_spotifysettingspage.h:207 msgid "Spotify" -msgstr "" +msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4627,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4635,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4715,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,20 +4723,20 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" -msgstr "" +msgstr "Subsonic" #: ../data/oauthsuccess.html:36 msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4745,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4763,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4733,11 +4799,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4812,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4825,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4870,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4896,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4916,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4929,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4939,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" -msgstr "" +msgstr "Titolo" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" -msgstr "" +msgstr "Hodiaŭ" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4973,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5001,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" +msgstr "Kanto" + +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5031,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5040,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5052,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" -msgstr "" +msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" +msgstr "URL(j)" #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5125,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,33 +5133,33 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" -msgstr "" +msgstr "Uzado" #: ../bin/src/ui_lastfmsettingspage.h:159 msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5179,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,27 +5219,27 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" -msgstr "" +msgstr "Fasado" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 #: ../bin/src/ui_podcastsettingspage.h:251 #: ../bin/src/ui_networkproxysettingspage.h:168 msgid "Username" -msgstr "" +msgstr "Uzulnomo" #: ../bin/src/ui_behavioursettingspage.h:207 msgid "Using the menu to add a song will..." @@ -5189,12 +5254,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5207,7 +5272,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,43 +5280,47 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" #: ../bin/src/ui_transcodersettingspage.h:176 msgid "Vorbis" -msgstr "" +msgstr "Vorbis" #: ../bin/src/ui_magnatunedownloaddialog.h:141 #: ../bin/src/ui_magnatunesettingspage.h:172 msgid "WAV" -msgstr "" +msgstr "WAV" #: ../bin/src/ui_transcodersettingspage.h:180 msgid "WMA" -msgstr "" +msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" -msgstr "" +msgstr "Wav" #: ../bin/src/ui_podcastinfowidget.h:193 msgid "Website" -msgstr "" +msgstr "Retejo" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" -msgstr "" +msgstr "Semajnoj" #: ../bin/src/ui_behavioursettingspage.h:201 msgid "When Clementine starts" @@ -5275,32 +5344,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5390,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,55 +5398,55 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 msgid "Year" -msgstr "" +msgstr "Jaro" #: ../bin/src/ui_groupbydialog.h:136 ../bin/src/ui_groupbydialog.h:150 #: ../bin/src/ui_groupbydialog.h:164 msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" -msgstr "" +msgstr "Jaroj" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" -msgstr "" +msgstr "Hieraŭ" #: ../bin/src/ui_magnatunedownloaddialog.h:132 msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5456,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5469,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5485,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5543,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5555,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" -msgstr "" +msgstr "Nulo" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5530,7 +5601,7 @@ msgstr "" #: ../bin/src/ui_searchtermwidget.h:269 msgid "and" -msgstr "" +msgstr "kaj" #: ../bin/src/ui_transcoderoptionsspeex.h:219 msgid "automatic" @@ -5540,19 +5611,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,32 +5633,32 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" #: ../bin/src/ui_podcastsettingspage.h:249 msgid "gpodder.net" -msgstr "" +msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5666,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5654,36 +5726,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/es.po b/src/translations/es.po index 979a3ec96..df71d22b5 100644 --- a/src/translations/es.po +++ b/src/translations/es.po @@ -12,6 +12,7 @@ # Andres Sanchez <>, 2012 # Carolina Pérez Garrido , 2011-2012 # ceal105 , 2011 +# felipeacsi , 2014 # felipeacsi , 2012 # Fernando Torres , 2012 # moray33 , 2013-2014 @@ -27,7 +28,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-02-01 18:35+0000\n" +"PO-Revision-Date: 2014-05-12 05:28+0000\n" "Last-Translator: Adolfo Jayme Barrientos \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/clementine/language/es/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -35,7 +36,7 @@ msgstr "" "Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -60,9 +61,9 @@ msgstr " días" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -75,11 +76,16 @@ msgstr " pt" msgid " seconds" msgstr " segundos" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " canciones" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 canciones)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 álbumes" @@ -89,12 +95,12 @@ msgstr "%1 álbumes" msgid "%1 days" msgstr "%1 días" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "hace %1 días" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 en %2" @@ -104,48 +110,48 @@ msgstr "%1 en %2" msgid "%1 playlists (%2)" msgstr "%1 listas de reproducción (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 seleccionadas de" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 canción" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 canciones" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "Se encontraron %1 canciones" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "Se encontraron %1 canciones (%2 visibles)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 pistas" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 transferido" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Módulo Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 oyentes más" @@ -159,18 +165,21 @@ msgstr "%L1 reproducciones totales" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n falló" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n completado(s)" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n pendiente(s)" @@ -182,24 +191,24 @@ msgstr "&Alinear el texto" msgid "&Center" msgstr "&Centro" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personalizado" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Ay&uda" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Ocultar «%1»" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Ocultar…" @@ -207,23 +216,23 @@ msgstr "&Ocultar…" msgid "&Left" msgstr "&Izquierda" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Música" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Ninguno" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Lista de reproducción" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Salir" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Modo de &repetición" @@ -231,23 +240,23 @@ msgstr "Modo de &repetición" msgid "&Right" msgstr "&Derecha" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Modo &aleatorio" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Ajustar columnas a la ventana" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Herramientas" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(diferentes a través de las canciones)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "… y a todos los colaboradores de Amarok" @@ -267,14 +276,10 @@ msgstr "0px" msgid "1 day" msgstr "1 día" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 pista" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -284,7 +289,7 @@ msgstr "MP3 a 128k" msgid "40%" msgstr "40 %" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 pistas al azar" @@ -292,12 +297,6 @@ msgstr "50 pistas al azar" msgid "Upgrade to Premium now" msgstr "Actualizar a Premium ahora" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Cree una cuenta nueva o restablezca su contraseña" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -308,6 +307,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Si no se activa, Clementine intentará guardar sus valoraciones y otras estadísticas en una base de datos separada, sin modificar sus archivos.

Si se activa, se guardarán las estadísticas en la base de datos y directamente en los archivos, cada vez que se modifican.

Tome en cuenta que esto podría no funcionar en todos los formatos y, como no existe un estándar, otros reproductores de música podrían no ser capaces de leerlos.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Añada un nombre de campo como prefijo para filtrar la búsqueda. P.ej., artist:Bode busca todos los artistas de la colección que contienen la palabra «Bode».

Campos disponibles: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -316,38 +326,38 @@ msgid "" "activated.

" msgstr "

Esto escribirá las valoraciones y estadísticas en etiquetas de archivos para todas las canciones de su colección.

Esto no es necesario si siempre se activó la opción «Guardar valoraciones y estadísticas en etiquetas de archivos».

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Las fichas de reemplazo empiezan con «%», por ejemplo: %artist %album %title

\n\n

Si marca una sección de texto que contenga una ficha de reemplazo entre llaves, esa sección no se mostrará si la ficha de reemplazo se encuentra vacía.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Se necesita una cuenta de Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Se necesita una cuenta Premium de Spotify." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Solo se puede conectar un cliente si se introduce el código correcto." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Una lista de reproducción inteligente es una lista dinámica de canciones en su colección. Existen diferentes tipos de listas de reproducción inteligentes que ofrecen distintas formas de elegir canciones." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Se incluirá una canción en la lista de reproducción si coincide con estas condiciones." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A–Z" @@ -367,36 +377,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALABEMOS TODOS AL HIPNOSAPO" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Interrumpir" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Acerca de %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Acerca de Clementine…" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Acerca de Qt…" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detalles de la cuenta" @@ -408,11 +417,15 @@ msgstr "Detalles de la cuenta (premium)" msgid "Action" msgstr "Acción" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Activar/desactivar Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Lista de actividades" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Añadir un podcast" @@ -428,39 +441,39 @@ msgstr "Añadir una línea nueva si la permite el tipo de notificación" msgid "Add action" msgstr "Añadir una acción" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Añadir otra transmisión…" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Añadir una carpeta…" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Añadir archivo" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Añadir un archivo al convertidor" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Añadir archivo(s) al convertidor" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Añadir un archivo…" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Añadir archivos para convertir" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Añadir una carpeta" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Añadir una carpeta…" @@ -472,11 +485,11 @@ msgstr "Añadir carpeta nueva…" msgid "Add podcast" msgstr "Añadir un podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Añadir un podcast…" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Añadir término de búsqueda" @@ -540,6 +553,10 @@ msgstr "Añadir conteo de omisiones de la canción" msgid "Add song title tag" msgstr "Añadir etiqueta de título a la canción" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Añadir canción a la caché" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Añadir etiqueta de pista a la canción" @@ -548,22 +565,34 @@ msgstr "Añadir etiqueta de pista a la canción" msgid "Add song year tag" msgstr "Añadir etiqueta de año a la canción" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Añadir canciones a Mi música al pulsar en el botón «Me encanta»" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Añadir una transmisión…" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Añadir a mis favoritos en Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Añadir a listas de reproducción de Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Añadir a Mi música" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Añadir a otra lista de reproducción" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Añadir a marcadores" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Añadir a la lista de reproducción" @@ -572,6 +601,10 @@ msgstr "Añadir a la lista de reproducción" msgid "Add to the queue" msgstr "Añadir a la cola" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Añadir usuario/grupo a marcadores" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Añadir acción de wiimotedev" @@ -601,15 +634,15 @@ msgstr "Añadidas hoy" msgid "Added within three months" msgstr "Añadidas en los últimos tres meses" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Añadiendo la canción a Mi música" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Añadiendo la canción a Favoritas" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Agrupamiento avanzado…" @@ -617,12 +650,12 @@ msgstr "Agrupamiento avanzado…" msgid "After " msgstr "Después de " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Después de copiar…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -630,11 +663,11 @@ msgstr "Después de copiar…" msgid "Album" msgstr "Álbum" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volumen ideal para todas las pistas)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -644,35 +677,36 @@ msgstr "Artista del álbum" msgid "Album cover" msgstr "Carátula del álbum" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Información del álbum en jamendo.com…" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Álbumes con carátulas" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Álbumes sin carátulas" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Todos los archivos (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "¡Alabemos todos al hipnosapo!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Todos los álbumes" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Todos los artistas" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Todos los archivos (*)" @@ -681,19 +715,19 @@ msgstr "Todos los archivos (*)" msgid "All playlists (%1)" msgstr "Todas las listas de reproducción (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Todos los traductores" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Todas las pistas" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Permitir que un cliente descargue música de este equipo." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Permitir descargas" @@ -718,30 +752,30 @@ msgstr "Siempre mostrar la ventana principal" msgid "Always start playing" msgstr "Siempre empezar a reproducir" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Se requiere un complemento adicional para usar Spotify en Clementine. ¿Quiere descargarlo e instalarlo ahora?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Ocurrió un error al cargar la base de datos de iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Ocurrió un error al escribir los metadatos en «%1»" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Ocurrió un error no especificado." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Y:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Furioso" @@ -750,13 +784,13 @@ msgstr "Furioso" msgid "Appearance" msgstr "Apariencia" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Añadir archivos/URL a la lista de reproducción" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Añadir a la lista de reproducción actual" @@ -764,52 +798,47 @@ msgstr "Añadir a la lista de reproducción actual" msgid "Append to the playlist" msgstr "Añadir a la lista de reproducción" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Aplicar compresión para evitar cortes" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "¿Está seguro de que quiere eliminar la predefinición «%1»?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "¿Está seguro de que quiere eliminar esta lista de reproducción?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "¿Está seguro de que quiere restablecer las estadísticas de esta canción?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "¿Está seguro de que quiere almacenar las estadísticas en todos los archivos de su colección?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Inf. artista" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radio del artista" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Etiquetas del artista" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Iniciales del artista" @@ -817,9 +846,13 @@ msgstr "Iniciales del artista" msgid "Audio format" msgstr "Formato de audio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Salida de audio" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Falló la autenticación" @@ -827,7 +860,7 @@ msgstr "Falló la autenticación" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autores" @@ -843,23 +876,23 @@ msgstr "Actualización automática" msgid "Automatically open single categories in the library tree" msgstr "Expandir automáticamente las categorías únicas en el árbol de la colección" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" -msgstr "Disponible" +msgstr "Disponible:" #: ../bin/src/ui_transcoderoptionsspeex.h:221 msgid "Average bitrate" msgstr "Tasa de bits promedio" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Tamaño promedio de imagen" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcasts de BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "PPM" @@ -880,7 +913,7 @@ msgstr "Imagen de fondo" msgid "Background opacity" msgstr "Opacidad del fondo" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Respaldando la base de datos" @@ -888,11 +921,7 @@ msgstr "Respaldando la base de datos" msgid "Balance" msgstr "Balance" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Vetar" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Analizador de barras" @@ -912,18 +941,17 @@ msgstr "Comportamiento" msgid "Best" msgstr "Mejor" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografía de %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Tasa de bits" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -931,7 +959,12 @@ msgstr "Tasa de bits" msgid "Bitrate" msgstr "Tasa de bits" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Tasa de bits" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Analizador de bloques" @@ -947,7 +980,7 @@ msgstr "Cantidad de desenfoque" msgid "Body" msgstr "Cuerpo" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Analizador de resonancia" @@ -961,13 +994,13 @@ msgstr "Box" msgid "Browse..." msgstr "Examinar…" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Duración del búfer" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" -msgstr "Guardando en caché" +msgstr "Guardando en búfer" #: ../bin/src/ui_globalsearchview.h:211 msgid "But these sources are disabled:" @@ -977,43 +1010,66 @@ msgstr "Pero estas fuentes están desactivadas:" msgid "Buttons" msgstr "Botones" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "De manera predeterminada, Grooveshark ordena las canciones por fecha de adición" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Compatibilidad con hojas CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Ruta de la caché:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Almacenamiento en caché" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Almacenando %1 en caché" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Cancelar" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Se necesita el «captcha».\nPruebe a iniciar sesión en Vk.com en el navegador para corregir el problema." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Cambiar la carátula" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Cambiar tamaño de letra…" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Cambiar modo de repetición" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Cambiar atajo…" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Cambiar modo aleatorio" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Cambiar el idioma" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1023,15 +1079,19 @@ msgstr "La reproducción monoaural será efectiva para las siguientes canciones msgid "Check for new episodes" msgstr "Comprobar episodios nuevos" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Comprobar actualizaciones…" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Elija la carpeta de caché de Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Elija un nombre para la lista de reproducción inteligente" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Elegir automáticamente" @@ -1047,11 +1107,11 @@ msgstr "Elegir tipo de letra…" msgid "Choose from the list" msgstr "Elegir de la lista" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Elija cómo ordenar la lista de reproducción y cuantas canciones contendrá." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Elegir directorio de descarga de podcasts" @@ -1060,7 +1120,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Elija los sitios web que quiere que Clementine use para buscar letras de canciones." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Clásica" @@ -1068,17 +1128,17 @@ msgstr "Clásica" msgid "Cleaning up" msgstr "Limpieza" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" -msgstr "Limpiar" +msgstr "Vaciar" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" -msgstr "Limpiar lista de reproducción" +msgstr "Vaciar la lista de reproducción" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1091,8 +1151,8 @@ msgstr "Error de Clementine" msgid "Clementine Orange" msgstr "Naranja de Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Visualización de Clementine" @@ -1114,9 +1174,9 @@ msgstr "Clementine puede reproducir música que haya cargado a Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine puede reproducir música que haya cargado a Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine puede reproducir música que haya cargado a Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine puede reproducir música que haya cargado a OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1129,20 +1189,13 @@ msgid "" "an account." msgstr "Clementine puede sincronizar su lista de suscripciones con sus otros equipos y aplicaciones de podcasts. Cree una cuenta." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine no pudo cargar ninguna visualización de projectM. Asegúrese de que tiene instalado Clementine adecuadamente." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine no pudo obtener el estado de su suscripción porque hay problemas con la conexión. Las canciones que escuche se guardarán y enviarán a Last.fm más tarde." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Visor de imágenes de Clementine" @@ -1154,11 +1207,11 @@ msgstr "Clementine no encontró resultados para este archivo" msgid "Clementine will find music in:" msgstr "Clementine buscará música en:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Pulse aquí para añadir música" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1168,7 +1221,10 @@ msgstr "Pulse aquí para marcar esta lista como favorita y añadirla al panel « msgid "Click to toggle between remaining time and total time" msgstr "Pulse para cambiar entre tiempo restante y tiempo total" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1183,19 +1239,19 @@ msgstr "Cerrar" msgid "Close playlist" msgstr "Cerrar lista de reproducción" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Cerrar la visualización" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Si cierra esta ventana, se cancelará la descarga." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Si cierra esta ventana, se detendrá la búsqueda de carátulas para los álbumes." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1203,73 +1259,78 @@ msgstr "Club" msgid "Colors" msgstr "Colores" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por comas de la clase:nivel, el nivel es 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentario" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Radio de la comunidad" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Completar etiquetas automáticamente" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Completar etiquetas automáticamente…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compositor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Configurar %1…" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Configurar Grooveshark…" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configurar Last.fm…" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Configurar Magnatune…" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configurar atajos" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configurar Spotify…" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Configurar Subsonic…" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Configurar Vk.com…" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Configurar búsqueda global…" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configurar colección…" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Configurar podcasts…" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configurar…" @@ -1277,11 +1338,11 @@ msgstr "Configurar…" msgid "Connect Wii Remotes using active/deactive action" msgstr "Conectar Wii Remotes usando acción de activar/desactivar" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Conectar dispositivo" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Conectando con Spotify" @@ -1291,12 +1352,16 @@ msgid "" "http://localhost:4040/" msgstr "El servidor rechazó la conexión. Compruebe el URL del servidor. Ejemplo: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Se agotó el tiempo de espera de la conexión. Compruebe el URL del servidor. Ejemplo: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Hay un problema de conexión o el propietario desactivó el audio" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Consola" @@ -1312,17 +1377,21 @@ msgstr "Convertir toda la música" msgid "Convert any music that the device can't play" msgstr "Convertir cualquier música que el dispositivo no pueda reproducir" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Copiar URL para compartir en el portapapeles" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Copiar al dispositivo…" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copiar a la colección…" @@ -1330,156 +1399,152 @@ msgstr "Copiar a la colección…" msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "No se pudo conectar a Subsonic. Compruebe el URL del servidor. Ejemplo: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "No se pudo crear el elemento «%1» de GStreamer. Asegúrese de tener instalados todos los complementos necesarios de GStreamer." -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "No se pudo crear la lista de reproducción" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "No se pudo encontrar un muxer para %1, compruebe que tiene instalados los complementos correctos de GStreamer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "No se pudo encontrar un codificador para %1, compruebe que tiene instalados los complementos de GStreamer correctos" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "No se pudo cargar la estación de radio de Last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "No se pudo abrir el archivo de salida %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Gestor de carátulas" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Carátula desde imagen incrustada" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Carátula cargada automáticamente desde %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Carátula eliminada manualmente" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Carátula no definida" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Carátula definida desde %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Carátulas de %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Crear una lista de reproducción nueva en Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Fundido encadenado al cambiar pistas automáticamente" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Fundido encadenado al cambiar pistas manualmente" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Abajo" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Mayús+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Mayús+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Mayús+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1487,7 +1552,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Arriba" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personalizado" @@ -1499,54 +1564,50 @@ msgstr "Imagen personalizada:" msgid "Custom message settings" msgstr "Configuración de mensaje personalizado" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Radio personalizada" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personalizado…" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Ruta de DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Se detectó un daño en la base de datos. Lea https://code.google.com/p/clementine-player/wiki/DatabaseCorruption para instrucciones para recuperar su base de datos" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Fecha de creación" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Fecha de modificación" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Días" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Pre&determinado" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Disminuir el volumen en 4 %" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" -msgstr "Reducir el volumen en %" +msgstr "Reducir el volumen en %" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Disminuir volumen" @@ -1554,6 +1615,11 @@ msgstr "Disminuir volumen" msgid "Default background image" msgstr "Imagen de fondo predeterminada" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Dispositivo predeterminado en %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Valores predeterminados" @@ -1562,30 +1628,30 @@ msgstr "Valores predeterminados" msgid "Delay between visualizations" msgstr "Retardo entre visualizaciones" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Eliminar" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Eliminar lista de reproducción de Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Eliminar datos descargados" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Eliminar archivos" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Eliminar del dispositivo…" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Eliminar del disco…" @@ -1593,31 +1659,31 @@ msgstr "Eliminar del disco…" msgid "Delete played episodes" msgstr "Eliminar episodios reproducidos" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Eliminar predefinición" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Eliminar lista de reproducción inteligente" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Eliminar los archivos originales" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Eliminando los archivos" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Quitar las pistas seleccionadas de la cola" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Quitar la pista de la cola" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destino" @@ -1626,7 +1692,7 @@ msgstr "Destino" msgid "Details..." msgstr "Detalles…" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Dispositivo" @@ -1638,15 +1704,15 @@ msgstr "Propiedades del dispositivo" msgid "Device name" msgstr "Nombre del dispositivo" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Propiedades del dispositivo…" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Dispositivos" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Diálogo" @@ -1683,12 +1749,17 @@ msgstr "Desactivar duración" msgid "Disable moodbar generation" msgstr "Desactivar generación de barras de ánimo" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Desactivado" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Desactivado" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1698,15 +1769,15 @@ msgid "Discontinuous transmission" msgstr "Transmisión discontinua" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opciones de visualización" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Mostrar el mensaje en pantalla (OSD)" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Volver a analizar toda la colección" @@ -1718,27 +1789,27 @@ msgstr "No convertir ninguna pista" msgid "Do not overwrite" msgstr "No sobreescribir" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "No repetir" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "No mostrar en Varios artistas" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "No mezclar" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "No detener" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Donar" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Pulse dos veces para abrir" @@ -1746,18 +1817,19 @@ msgstr "Pulse dos veces para abrir" msgid "Double clicking a song will..." msgstr "Al pulsar dos veces sobre una canción…" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Descargar %n episodios" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Carpeta de descargas" #: ../bin/src/ui_podcastsettingspage.h:240 msgid "Download episodes to" -msgstr "Descargar episodios a" +msgstr "Descargar episodios en" #: ../bin/src/ui_magnatunesettingspage.h:161 msgid "Download membership" @@ -1767,7 +1839,7 @@ msgstr "Membresía para descarga" msgid "Download new episodes automatically" msgstr "Descargar episodios nuevos automáticamente" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Descarga en cola" @@ -1775,15 +1847,15 @@ msgstr "Descarga en cola" msgid "Download the Android app" msgstr "Descargue la aplicación para Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Descargar este álbum" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Descargar este álbum…" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Descargar este episodio" @@ -1791,7 +1863,7 @@ msgstr "Descargar este episodio" msgid "Download..." msgstr "Descargar…" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Descargando (%1%)…" @@ -1800,23 +1872,23 @@ msgstr "Descargando (%1%)…" msgid "Downloading Icecast directory" msgstr "Descargando el directorio de Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Descargando el catálogo de Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Descargando el catálogo de Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Descargando el complemento de Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Descargando los metadatos" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Arrastre para reposicionar" @@ -1836,20 +1908,20 @@ msgstr "Duración" msgid "Dynamic mode is on" msgstr "Modo dinámico activado" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Mezcla dinámica aleatoria" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Editar lista de reproducción inteligente…" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Editar la etiqueta «%1»…" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Editar etiqueta…" @@ -1861,16 +1933,16 @@ msgstr "Editar etiquetas" msgid "Edit track information" msgstr "Editar información de la pista" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Editar información de la pista…" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Editar información de las pistas…" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Editar…" @@ -1878,6 +1950,10 @@ msgstr "Editar…" msgid "Enable Wii Remote support" msgstr "Activar compatibilidad con Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Activar almacenamiento en caché automático" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Activar el ecualizador" @@ -1892,7 +1968,7 @@ msgid "" "displayed in this order." msgstr "Active los siguientes orígenes para incluirlos en los resultados de búsqueda. Los resultados se mostrarán en este orden." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Activar/desactivar scrobbling de Last.fm" @@ -1920,15 +1996,10 @@ msgstr "Escriba un URL para descargar una carátula de la Internet:" msgid "Enter a filename for exported covers (no extension):" msgstr "Escriba un nombre de archivo para las carátulas exportadas (sin extensión):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Escriba un nombre nuevo para esta lista de reproducción" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Escriba un artista o etiqueta para escuchar la radio de Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1942,7 +2013,7 @@ msgstr "Escriba términos de búsqueda para encontrar podcasts en la tienda iTun msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Escriba términos de búsqueda para encontrar podcasts en gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Escriba términos de búsqueda aquí" @@ -1951,11 +2022,11 @@ msgstr "Escriba términos de búsqueda aquí" msgid "Enter the URL of an internet radio stream:" msgstr "Escriba el URL de un flujo de radio por Internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Escriba el nombre de la carpeta" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Escriba esta IP en la aplicación para conectarse con Clementine." @@ -1963,21 +2034,22 @@ msgstr "Escriba esta IP en la aplicación para conectarse con Clementine." msgid "Entire collection" msgstr "Colección completa" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ecualizador" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Equivalente a --log-levels*:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Equivalente a --log-levels*:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Error" @@ -1985,38 +2057,38 @@ msgstr "Error" msgid "Error connecting MTP device" msgstr "Error al conectar al dispositivo MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Error al copiar las canciones" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Error al eliminar canciones" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Error al descargar el complemento de Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Error al cargar %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Error al cargar la lista de reproducción de di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Error al procesar %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Error al cargar el CD de audio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Reproducidas alguna vez" @@ -2048,7 +2120,7 @@ msgstr "Cada 6 horas" msgid "Every hour" msgstr "Cada hora" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Excepto entre pistas del mismo álbum, o en la misma hoja CUE" @@ -2060,7 +2132,7 @@ msgstr "Carátulas existentes" msgid "Expand" msgstr "Expandir" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Caduca el %1" @@ -2081,36 +2153,36 @@ msgstr "Exportar carátulas descargadas" msgid "Export embedded covers" msgstr "Exportar carátulas incrustadas" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Exportación finalizada" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Se exportaron %1 carátulas de %2 (se omitieron %3)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2120,42 +2192,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Fundido al pausar y al reanudar" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Desvanecer al detener una pista" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Fundido" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Duración del fundido" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Falló la lectura de la unidad de CD" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "No se pudo obtener el directorio" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "No se pudieron obtener los podcasts" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "No se pudo cargar el podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "No se pudo analizar el XML de este canal RSS" @@ -2164,11 +2236,11 @@ msgstr "No se pudo analizar el XML de este canal RSS" msgid "Fast" msgstr "Rápida" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoritos" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Pistas favoritas" @@ -2184,11 +2256,11 @@ msgstr "Obtener automáticamente" msgid "Fetch completed" msgstr "Descarga completada" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Obteniendo biblioteca de Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Error al obtener la carátula" @@ -2196,7 +2268,7 @@ msgstr "Error al obtener la carátula" msgid "File Format" msgstr "Formato de archivo" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Extensión del archivo" @@ -2204,19 +2276,23 @@ msgstr "Extensión del archivo" msgid "File formats" msgstr "Formatos de archivo" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nombre del archivo" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nombre del archivo (sin ruta)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Patrón de nombre de archivo:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tamaño del archivo" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2226,7 +2302,7 @@ msgstr "Tipo de archivo" msgid "Filename" msgstr "Nombre del archivo" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Archivos" @@ -2234,15 +2310,19 @@ msgstr "Archivos" msgid "Files to transcode" msgstr "Archivos para convertir" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Encontrar canciones en su colección que coinciden con el criterio que especificó." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Encontrar este artista" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Identificando la canción" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Finalizar" @@ -2250,7 +2330,7 @@ msgstr "Finalizar" msgid "First level" msgstr "Primer nivel" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2266,12 +2346,12 @@ msgstr "Por razones de licencia, para usar Spotify se necesita un complemento se msgid "Force mono encoding" msgstr "Forzar la codificación monoaural" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Olvidar dispositivo" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2286,7 +2366,7 @@ msgstr "Olvidar un dispositivo lo eliminará de la lista y Clementine tendrá qu #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2314,31 +2394,23 @@ msgstr "Tasa de muestreo" msgid "Frames per buffer" msgstr "Cuadros por búfer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Amigos" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Congelado" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Graves completos" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Graves y agudos completos" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Agudos completos" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Motor de audio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "General" @@ -2346,30 +2418,30 @@ msgstr "General" msgid "General settings" msgstr "Configuración general" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Género" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Obtener un URL para compartir esta lista de reproducción de Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Obtener un URL para compartir esta canción de Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Obteniendo canciones populares de Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Obteniendo canales" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Obteniendo transmisiones" @@ -2381,11 +2453,11 @@ msgstr "Dele un nombre:" msgid "Go" msgstr "Ir" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Ir a la siguiente lista de reproducción" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Ir a la lista de reproducción anterior" @@ -2393,7 +2465,7 @@ msgstr "Ir a la lista de reproducción anterior" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2403,7 +2475,7 @@ msgstr "Se obtuvieron %1 carátulas de %2 (%3 fallaron)" msgid "Grey out non existent songs in my playlists" msgstr "Oscurecer canciones inexistentes de mis listas de reproducción" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2411,15 +2483,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Error de inicio de sesión en Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL de lista de reproducción de Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Radio de Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL de la canción de Grooveshark" @@ -2427,44 +2499,44 @@ msgstr "URL de la canción de Grooveshark" msgid "Group Library by..." msgstr "Agrupar colección por…" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Agrupar por" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Agrupar por álbum" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Agrupar por artista" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Agrupar por artista/álbum" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Agrupar por artista/año - álbum" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Agrupar por género/álbum" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Agrupar por género/artista/álbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Conjunto" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "La página HTML no contiene ningún canal RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Se recibió el código de estado de HTTP 3xx sin un URL. Compruebe la configuración del servidor." @@ -2473,7 +2545,7 @@ msgstr "Se recibió el código de estado de HTTP 3xx sin un URL. Compruebe la co msgid "HTTP proxy" msgstr "Proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Alegre" @@ -2489,25 +2561,25 @@ msgstr "La información del hardware solo está disponible cuando el dispositivo msgid "High" msgstr "Alto" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Alta (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" -msgstr "Alta (1024×1024)" +msgstr "Alta (1024 × 1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "No se encontró el equipo, compruebe el URL del servidor. Ejemplo: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Horas" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hipnosapo" @@ -2519,15 +2591,15 @@ msgstr "No tengo una cuenta en Magnatune" msgid "Icon" msgstr "Icono" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Iconos en la parte superior" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identificando la canción" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2537,24 +2609,24 @@ msgstr "Si continúa, este dispositivo funcionará con lentitud y las canciones msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Si conoce el URL de un podcast, escríbalo a continuación y pulse en Ir." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorar «The» en los nombres de artistas" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Imágenes (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Imágenes (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "En %1 días" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "En %1 semanas" @@ -2565,7 +2637,7 @@ msgid "" "time a song finishes." msgstr "En el modo dinámico las canciones nuevas se elegirán y añadirán a la lista de reproducción cada vez que termine una canción." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Bandeja de entrada" @@ -2577,36 +2649,36 @@ msgstr "Incluir carátula en la notificación" msgid "Include all songs" msgstr "Incluir todas las canciones" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Versión del protocolo REST de Subsonic incompatible. El cliente debe actualizarse." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Versión del protocolo REST de Subsonic incompatible. El servidor debe actualizarse." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "La configuración está incompleta. Asegúrese de que ha rellenado todos los campos." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Incrementar el volumen en 4 %" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" -msgstr "Aumentar el volumen en %" +msgstr "Aumentar el volumen en %" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Aumentar volumen" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indizando %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Información" @@ -2614,55 +2686,55 @@ msgstr "Información" msgid "Input options" msgstr "Opciones de entrada" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Insertar…" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Instalado" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Comprobación de integridad" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Proveedores en Internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Clave API no válida" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Formato no válido" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Método no válido" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parámetros no válidos" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Se especificó un recurso no válido" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Servicio no válido" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Clave de sesión no válida" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Nombre de usuario y/o contraseña no válidos" @@ -2670,42 +2742,42 @@ msgstr "Nombre de usuario y/o contraseña no válidos" msgid "Invert Selection" msgstr "Invertir la selección" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Pistas más escuchadas de Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Mejores pistas de Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Mejores pistas del mes en Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Mejores pistas de la semana en Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Base de datos de Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Saltar a la pista en reproducción" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Oprima los botones por %1 segundo…" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Oprima los botones por %1 segundos…" @@ -2714,11 +2786,12 @@ msgstr "Oprima los botones por %1 segundos…" msgid "Keep running in the background when the window is closed" msgstr "Seguir ejecutando el programa en el fondo al cerrar la ventana" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Mantener los archivos originales" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Gatitos" @@ -2726,11 +2799,11 @@ msgstr "Gatitos" msgid "Language" msgstr "Idioma" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Portátil/auriculares" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Salón grande" @@ -2738,58 +2811,24 @@ msgstr "Salón grande" msgid "Large album cover" msgstr "Carátula de álbum grande" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Barra lateral grande" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Últimas reproducidas" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "Última reproducción" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Radio personalizada de Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Colección en Last.fm de %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Radio mix de Last.fm de %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Radio de vecinos en Last.fm de %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Estación de radio en Last.fm de %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Artistas en Last.fm similares a %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Radio en Last.fm de la etiqueta %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm está saturado en este momento, inténtelo de nuevo en unos minutos" @@ -2797,11 +2836,11 @@ msgstr "Last.fm está saturado en este momento, inténtelo de nuevo en unos minu msgid "Last.fm password" msgstr "Contraseña de Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "N.º de reproducciones en Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Etiquetas de Last.fm" @@ -2809,28 +2848,24 @@ msgstr "Etiquetas de Last.fm" msgid "Last.fm username" msgstr "Nombre de usuario de Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki de Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Pistas menos favoritas" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Déjelo en blanco para el predeterminado. Ejemplos: «/dev/dsp», «front», etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Izquierda" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duración" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Colección" @@ -2838,24 +2873,24 @@ msgstr "Colección" msgid "Library advanced grouping" msgstr "Agrupamiento avanzado de la colección" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Aviso de reanálisis de la colección" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Buscar en la colección" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Límites" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Escuche canciones en Grooveshark con base en las que ha escuchado previamente." -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "En vivo" @@ -2867,15 +2902,15 @@ msgstr "Cargar" msgid "Load cover from URL" msgstr "Cargar carátula desde un URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Cargar carátula desde un URL…" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Cargar carátula desde el disco" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Cargar carátula desde disco…" @@ -2883,86 +2918,91 @@ msgstr "Cargar carátula desde disco…" msgid "Load playlist" msgstr "Cargar lista de reproducción" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Cargar lista de reproducción…" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Cargando la radio de Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Cargando el dispositivo MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Cargando la base de datos del iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Cargando lista de reproducción inteligente" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Cargando las canciones" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Cargando el flujo" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Cargando las pistas" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Cargando información de pistas" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Cargando…" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Carga archivos/URL, reemplazando la lista de reproducción actual" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Iniciar sesión" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Falló el inicio de sesión" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Cerrar sesión" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Perfil de predicción a largo plazo (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Me encanta" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Baja (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" -msgstr "Baja (256×256)" +msgstr "Baja (256 × 256)" #: ../bin/src/ui_transcoderoptionsaac.h:135 msgid "Low complexity profile (LC)" @@ -2970,14 +3010,19 @@ msgstr "Perfil de baja complejidad (LC)" #: ../bin/src/ui_songinfosettingspage.h:159 msgid "Lyrics" -msgstr "Letras" +msgstr "Letra" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Letra de %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "MP4 AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2989,15 +3034,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -3005,7 +3050,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Descarga de Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Descarga de Magnatune finalizada" @@ -3013,15 +3058,20 @@ msgstr "Descarga de Magnatune finalizada" msgid "Main profile (MAIN)" msgstr "Perfil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Así sea" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Así sea" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Hacer disponible la lista de reproducción sin conexión" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Respuesta con formato incorrecto" @@ -3034,15 +3084,15 @@ msgstr "Configuración manual del proxy" msgid "Manually" msgstr "Manualmente" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabricante" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Marcar como escuchado" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Marcar como nuevo" @@ -3054,19 +3104,23 @@ msgstr "Coincide cualquier término de búsqueda (Y)" msgid "Match one or more search terms (OR)" msgstr "Coincide uno o más términos de búsqueda (O)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Resultados de búsqueda globales máximos" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Tasa de bits máxima" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Media (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" -msgstr "Media (512×512)" +msgstr "Media (512 × 512)" #: ../bin/src/ui_magnatunesettingspage.h:156 msgid "Membership type" @@ -3076,11 +3130,15 @@ msgstr "Tipo de membresía" msgid "Minimum bitrate" msgstr "Tasa de bits mínima" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Valor mínimo de memoria" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Faltan las predefiniciones de projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modelo" @@ -3088,20 +3146,20 @@ msgstr "Modelo" msgid "Monitor the library for changes" msgstr "Monitorizar cambios en la colección" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Reproducción monoaural" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Meses" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Ánimo" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Estilo de barra de ánimo" @@ -3109,15 +3167,19 @@ msgstr "Estilo de barra de ánimo" msgid "Moodbars" msgstr "Barras de ánimo" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Más" + +#: library/library.cpp:84 msgid "Most played" msgstr "Más reproducidas" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Punto de montaje" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Puntos de montaje" @@ -3126,7 +3188,7 @@ msgstr "Puntos de montaje" msgid "Move down" msgstr "Mover hacia abajo" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Mover a la colección…" @@ -3135,7 +3197,7 @@ msgstr "Mover a la colección…" msgid "Move up" msgstr "Mover hacia arriba" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Música" @@ -3143,56 +3205,32 @@ msgstr "Música" msgid "Music Library" msgstr "Colección musical" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Silenciar" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Mi colección de Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Mi radio mix de Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Mis vecinos de Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Mi radio recomendada de Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Mi Mix Radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Mi música" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mi vecindario" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Mi estación de radio" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mis recomendaciones" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nombre" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nombre" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opciones de nombrado" @@ -3200,23 +3238,19 @@ msgstr "Opciones de nombrado" msgid "Narrow band (NB)" msgstr "Banda estrecha (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Vecinos" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proxy de la red" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Control remoto de red" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nunca" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nunca reproducidas" @@ -3225,21 +3259,21 @@ msgstr "Nunca reproducidas" msgid "Never start playing" msgstr "Nunca comenzar la reproducción" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Carpeta nueva" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Lista de reproducción nueva" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Lista de reproducción inteligente nueva…" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Canciones nuevas" @@ -3247,24 +3281,24 @@ msgstr "Canciones nuevas" msgid "New tracks will be added automatically." msgstr "Las pistas nuevas se añadirán automáticamente." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Pistas más recientes" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Siguiente" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Pista siguiente" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Próxima semana" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Sin analizador" @@ -3272,7 +3306,7 @@ msgstr "Sin analizador" msgid "No background image" msgstr "Sin imagen de fondo" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "No hay ninguna carátula que exportar." @@ -3280,7 +3314,7 @@ msgstr "No hay ninguna carátula que exportar." msgid "No long blocks" msgstr "Sin bloques largos" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "No se encontraron coincidencias. Limpie el cuadro de búsqueda para mostrar la lista completa de nuevo." @@ -3294,11 +3328,11 @@ msgstr "Sin bloques cortos" msgid "None" msgstr "Ninguno" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ninguna de las canciones seleccionadas fueron aptas para copiarlas a un dispositivo" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3306,43 +3340,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Tipo de bloque normal" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "No disponible al utilizar una lista de reproducción dinámica" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "No conectado" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "No hay contenido suficiente" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "No hay seguidores suficientes" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "No hay miembros suficientes" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "No hay vecinos suficientes" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "No instalado" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "No inició sesión" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Sin montar – pulse dos veces para montar" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "No se encontró ningún resultado" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Tipo de notificación" @@ -3355,36 +3393,41 @@ msgstr "Notificaciones" msgid "Now Playing" msgstr "En reproducción" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Previsualización del OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Desactivado" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Activado" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3392,11 +3435,11 @@ msgid "" "192.168.x.x" msgstr "Solo aceptar conexiones de clientes en los rangos de IP:\n10.x.x.x\n172.16.0.0 – 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Solo permitir conexiones provenientes de la red local" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Solo mostrar el primero" @@ -3404,23 +3447,23 @@ msgstr "Solo mostrar el primero" msgid "Opacity" msgstr "Opacidad" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Abrir %1 en el navegador" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Abrir un &CD de sonido…" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Abrir un archivo OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Abrir un archivo OPML…" @@ -3428,30 +3471,35 @@ msgstr "Abrir un archivo OPML…" msgid "Open device" msgstr "Abrir dispositivo" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Abrir un archivo…" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Abrir en Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Abrir en una lista de reproducción nueva" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Abrir en una lista nueva" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Abrir en el navegador" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Abrir…" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Falló la operación" @@ -3471,23 +3519,23 @@ msgstr "Opciones…" msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizar archivos" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizar archivos…" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organizando los archivos" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Etiquetas originales" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Otras opciones" @@ -3495,7 +3543,7 @@ msgstr "Otras opciones" msgid "Output" msgstr "Salida" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Dispositivo de salida" @@ -3503,15 +3551,11 @@ msgstr "Dispositivo de salida" msgid "Output options" msgstr "Opciones de salida" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Complemento de salida" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Sobreescribir todo" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Sobreescribir los archivos existentes" @@ -3523,15 +3567,15 @@ msgstr "Sobreescribir solo las más pequeñas" msgid "Owner" msgstr "Propietario" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Analizando el catálogo de Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Fiesta" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3540,20 +3584,20 @@ msgstr "Fiesta" msgid "Password" msgstr "Contraseña" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pausar" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pausar la reproducción" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3562,34 +3606,22 @@ msgstr "Intérprete" msgid "Pixel" msgstr "Píxel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Barra lateral simple" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Reproducir" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Reproducir un artista o etiqueta" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Reproducir radio del artista…" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "N.º de reproducciones" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Reproducir radio personalizada…" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Reproducir si está detenida, pausar si se está reproduciendo" @@ -3598,45 +3630,42 @@ msgstr "Reproducir si está detenida, pausar si se está reproduciendo" msgid "Play if there is nothing already playing" msgstr "Reproducir si no hay nada en reproducción" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Reproducir radio de etiqueta…" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Reproducir la .ª pista de la lista de reproducción" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Reproducir/pausar" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Reproducción" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opciones del reproductor" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lista de reproducción" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Lista de reproducción finalizada" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opciones de la lista de reproducción" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tipo de lista de reproducción" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Listas rep." @@ -3648,23 +3677,23 @@ msgstr "Cierre el navegador y regrese a Clementine." msgid "Plugin status:" msgstr "Estado del complemento:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Canciones populares" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Canciones populares del mes" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Canciones populares hoy" @@ -3673,22 +3702,23 @@ msgid "Popup duration" msgstr "Duración de la notificación" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Puerto" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Preamp." #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Preferencias" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Preferencias…" @@ -3724,7 +3754,7 @@ msgstr "Pulse una combinación de botones que usar para" msgid "Press a key" msgstr "Pulse una tecla" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Oprima una combinación de teclas para usar con %1…" @@ -3735,20 +3765,20 @@ msgstr "Opciones del OSD estético" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Previsualización" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Pista anterior" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Mostrar información de versión" @@ -3756,21 +3786,25 @@ msgstr "Mostrar información de versión" msgid "Profile" msgstr "Perfil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progreso" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Progreso" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psicodélico" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Pulse el botón del Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Poner canciones en un orden aleatorio" @@ -3778,7 +3812,12 @@ msgstr "Poner canciones en un orden aleatorio" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Calidad" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Calidad" @@ -3786,28 +3825,33 @@ msgstr "Calidad" msgid "Querying device..." msgstr "Consultando dispositivo…" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Gestor de la cola" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Añadir las pistas seleccionadas a la cola" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Añadir a la cola de reproducción" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (volumen igual para todas las pistas)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Lluvia" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Lluvia" @@ -3815,48 +3859,48 @@ msgstr "Lluvia" msgid "Random visualization" msgstr "Visualización al azar" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Valorar la canción actual con 0 estrellas" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Valorar la canción actual con 1 estrella" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Valorar la canción actual con 2 estrellas" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Valorar la canción actual con 3 estrellas" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Valorar la canción actual con 4 estrellas" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Valorar la canción actual con 5 estrellas" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Clasificación" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "¿Realmente quiere cancelar?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Se excedió el límite de redirecciones, compruebe la configuración del servidor." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Actualizar" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Actualizar el catálogo" @@ -3864,19 +3908,15 @@ msgstr "Actualizar el catálogo" msgid "Refresh channels" msgstr "Actualizar los canales" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Actualizar lista de amigos" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Actualizar lista de estaciones" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Actualizar transmisiones" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3888,8 +3928,8 @@ msgstr "Recordar el movimiento del Wii Remote" msgid "Remember from last time" msgstr "Recordar la última vez" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Quitar" @@ -3897,7 +3937,7 @@ msgstr "Quitar" msgid "Remove action" msgstr "Eliminar acción" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Eliminar duplicados de la lista de reproducción" @@ -3905,73 +3945,77 @@ msgstr "Eliminar duplicados de la lista de reproducción" msgid "Remove folder" msgstr "Quitar carpeta" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Quitar de Mi música" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Quitar de marcadores" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Quitar de favoritos" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Eliminar de la lista de reproducción" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Eliminar lista de reproducción" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Eliminar listas de reproducción" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Quitando canciones de Mi música" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Eliminando canciones de los favoritos" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Renombrar lista de reproducción «%1»" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Renombrar lista de reproducción de Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Renombrar lista de reproducción" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Renombrar lista de reproducción…" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Reenumerar pistas en este orden…" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repetir" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repetir álbum" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repetir lista de reproducción" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repetir pista" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Reemplazar lista de reproducción actual" @@ -3980,15 +4024,15 @@ msgstr "Reemplazar lista de reproducción actual" msgid "Replace the playlist" msgstr "Reemplazar la lista de reproducción" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Reemplazar espacios con guiones bajos" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Modo de regulación de volumen" @@ -3996,24 +4040,24 @@ msgstr "Modo de regulación de volumen" msgid "Repopulate" msgstr "Rellenar" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Solicitar un código de autenticación" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Restablecer" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Reiniciar contador de reproducciones" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Reiniciar la pista, o cambiar a la anterior si no han transcurrido 8 segundos desde el inicio." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Restringir a caracteres ASCII" @@ -4021,15 +4065,15 @@ msgstr "Restringir a caracteres ASCII" msgid "Resume playback on start" msgstr "Reanudar la reproducción al iniciar" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Obteniendo canciones de Mi música de Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Recuperando canciones favoritas de Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Recuperando listas de reproducción de Grooveshark" @@ -4049,11 +4093,11 @@ msgstr "Extraer" msgid "Rip CD" msgstr "Extraer CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Extraer CD de sonido…" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4065,25 +4109,25 @@ msgstr "Ejecutar" msgid "SOCKS proxy" msgstr "Proxy para SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Error del protocolo de enlace SSL, compruebe la configuración del servidor. La opción de SSLv3 podría solucionar algunos errores temporalmente." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Quitar dispositivo con seguridad" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Quitar dispositivo con seguridad después de copiar" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Tasa de muestreo" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Tasa de muestreo" @@ -4091,27 +4135,33 @@ msgstr "Tasa de muestreo" msgid "Save .mood files in your music library" msgstr "Guardar archivos .mood en la colección musical" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Guardar la carátula del álbum" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Guardar la carátula en el disco…" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Guardar imagen" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Guardar lista de reproducción" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Guardar lista de reproducción" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Guardar lista de reproducción…" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Guardar la predefinición" @@ -4127,11 +4177,11 @@ msgstr "Guardar estadísticas en las etiquetas de los archivos si es posible" msgid "Save this stream in the Internet tab" msgstr "Guardar este flujo en la pestaña de Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Guardando las estadísticas en los archivos de las canciones" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Guardando las pistas" @@ -4143,7 +4193,7 @@ msgstr "Perfil de tasa de muestreo escalable (SSR)" msgid "Scale size" msgstr "Tamaño de escala" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Valoración" @@ -4151,10 +4201,14 @@ msgstr "Valoración" msgid "Scrobble tracks that I listen to" msgstr "Enviar las pistas que reproduzco" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Buscar" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Buscar" @@ -4162,23 +4216,23 @@ msgstr "Buscar" msgid "Search Icecast stations" msgstr "Buscar estaciones Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Buscar en Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Buscar en Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Buscar en Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Buscar automáticamente" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Buscar la carátula del álbum…" @@ -4198,21 +4252,21 @@ msgstr "Buscar en iTunes" msgid "Search mode" msgstr "Modo de búsqueda" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opciones de búsqueda" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Resultados de búsqueda" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Términos de búsqueda" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Buscando en Grooveshark" @@ -4220,27 +4274,27 @@ msgstr "Buscando en Grooveshark" msgid "Second level" msgstr "Segundo nivel" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Retroceder" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Avanzar" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Moverse en la pista actual hacia una posición relativa" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Moverse en la pista actual hacia una posición absoluta" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Seleccionar todo" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "No seleccionar nada" @@ -4248,7 +4302,7 @@ msgstr "No seleccionar nada" msgid "Select background color:" msgstr "Elija el color de fondo:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Elija la imagen de fondo" @@ -4264,7 +4318,7 @@ msgstr "Elija el color de frente:" msgid "Select visualizations" msgstr "Elegir visualizaciones" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Elegir visualizaciones…" @@ -4272,7 +4326,7 @@ msgstr "Elegir visualizaciones…" msgid "Select..." msgstr "Seleccionar..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "N.º de serie" @@ -4284,51 +4338,51 @@ msgstr "URL del servidor" msgid "Server details" msgstr "Detalles del servidor" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Servicio fuera de línea" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Establecer %1 a «%2»…" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Establecer el volumen en por ciento" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Establecer valor para todas las pistas seleccionadas…" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Configuración" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Atajo" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Atajo para %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Ya existe un atajo para %1" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Mostrar" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Mostrar OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Mostrar una animación de brillo en la pista actual" @@ -4356,15 +4410,15 @@ msgstr "Mostrar un mensaje emergente en el área de notificación" msgid "Show a pretty OSD" msgstr "Mostrar OSD estético" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Mostrar sobre la barra de estado" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Mostrar todas las canciones" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Mostrar todas las canciones" @@ -4376,32 +4430,36 @@ msgstr "Mostrar las carátulas en la colección" msgid "Show dividers" msgstr "Mostrar divisores" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Mostrar a tamaño completo…" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Mostrar grupos en los resultados de la búsqueda global" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Mostrar en el gestor de archivos…" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Mostrar en colección..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Mostrar en Varios artistas" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Mostrar barra de ánimo" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Mostrar solo los duplicados" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Solo mostrar no etiquetadas" @@ -4410,8 +4468,8 @@ msgid "Show search suggestions" msgstr "Mostrar sugerencias de búsquedas" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Mostrar los botones «Me encanta» y «Vetar»" +msgid "Show the \"love\" button" +msgstr "Mostrar el botón «Me encanta»" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4425,27 +4483,27 @@ msgstr "Mostrar icono en el área de notificación" msgid "Show which sources are enabled and disabled" msgstr "Mostrar cuáles fuentes están activadas y desactivadas" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Mostrar/ocultar" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Aleatorio" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Mezclar álbumes" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Mezclar todo" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Mezclar lista de reproducción" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Mezclar canciones de este álbum" @@ -4461,7 +4519,7 @@ msgstr "Cerrar sesión" msgid "Signing in..." msgstr "Iniciando sesión…" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Artistas similares" @@ -4473,43 +4531,51 @@ msgstr "Tamaño" msgid "Size:" msgstr "Tamaño:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Saltar hacia atrás en la lista de reproducción" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" -msgstr "Contador de omisiones" +msgstr "N.º de omisiones" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Saltar hacia adelante en la lista de reproducción" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Omitir pistas seleccionadas" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Omitir pista" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Carátula de álbum pequeña" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Barra lateral pequeña" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Lista de reproducción inteligente" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Listas de reproducción inteligentes" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft rock" @@ -4517,11 +4583,11 @@ msgstr "Soft rock" msgid "Song Information" msgstr "Información de la canción" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Inf. canción" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonograma" @@ -4541,15 +4607,23 @@ msgstr "Ordenar por género (popularidad)" msgid "Sort by station name" msgstr "Ordenar por nombre de estación" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Ordenar canciones de listas alfabéticamente" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Ordenar canciones por" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Ordenación" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Origen" @@ -4565,7 +4639,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Error de inicio de sesión de Spotify" @@ -4573,7 +4647,7 @@ msgstr "Error de inicio de sesión de Spotify" msgid "Spotify plugin" msgstr "Complemento de Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "El complemento de Spotify no está instalado" @@ -4581,77 +4655,77 @@ msgstr "El complemento de Spotify no está instalado" msgid "Standard" msgstr "Estándar" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Destacado" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Iniciar extracción" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Iniciar la lista de reproducción actualmente en reproducción" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Iniciar la conversión" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Comience a escribir en el cuadro de búsqueda anterior para obtener resultados en esta lista" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Iniciando %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Iniciando…" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Estaciones" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Detener" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Detener después de" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Detener reproducción al finalizar la pista" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Detener reproducción" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Detener la reproducción después de la pista actual" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Detener reproducción tras la pista: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Detenido" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Transmisión" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4661,7 +4735,7 @@ msgstr "Se necesita una licencia válida para hacer streaming desde un servidor msgid "Streaming membership" msgstr "Membresía para streaming" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Listas de reproducción suscritas" @@ -4669,7 +4743,7 @@ msgstr "Listas de reproducción suscritas" msgid "Subscribers" msgstr "Suscriptores" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4677,12 +4751,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Exitoso" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 se ha escrito correctamente" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Etiquetas sugeridas" @@ -4691,15 +4765,15 @@ msgstr "Etiquetas sugeridas" msgid "Summary" msgstr "Resumen" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Muy alta (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" -msgstr "Muy alta (2048×2048)" +msgstr "Muy alta (2048 × 2048)" #: ../bin/src/ui_deviceproperties.h:374 msgid "Supported formats" @@ -4709,43 +4783,35 @@ msgstr "Formatos admitidos" msgid "Synchronize statistics to files now" msgstr "Sincronizar estadísticas a los archivos ahora" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Sincronizando bandeja de entrada de Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Sincronizando lista de reproducción de Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Sincronizando canciones destacadas de Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Colores del sistema" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Pestañas en la parte superior" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Etiqueta" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Obtener etiquetas" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Radio de la etiqueta" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Tasa de bits de destino" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tecno" @@ -4753,11 +4819,11 @@ msgstr "Tecno" msgid "Text options" msgstr "Opciones del texto" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Agradecemos a" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "No se pudo iniciar la orden «%1»." @@ -4766,17 +4832,12 @@ msgstr "No se pudo iniciar la orden «%1»." msgid "The album cover of the currently playing song" msgstr "La carátula del álbum de la canción en reproducción" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "La carpeta %1 no es válida" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "La lista de reproducción «%1» está vacía o no se pudo cargar." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "El segundo valor debe ser mayor al primero." @@ -4784,40 +4845,40 @@ msgstr "El segundo valor debe ser mayor al primero." msgid "The site you requested does not exist!" msgstr "El sitio que indicó no existe." -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "El sitio que indicó no es una imagen." -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Ha terminado el período de prueba del servidor de Subsonic. Haga una donación para obtener una clave de licencia. Visite subsonic.org para más detalles." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "La versión de Clementine a la que se acaba de actualizar necesita volver a analizar la colección debido a las nuevas funciones que se listan a continuación:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Hay otras canciones en este álbum" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Hubo un problema al comunicarse con gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Hubo un problema al obtener los metadatos desde Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Hubo un problema al analizar la respuesta de la tienda iTunes" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4829,13 +4890,13 @@ msgid "" "deleted:" msgstr "Hubo problemas al eliminar algunas canciones. No se pudieron eliminar los siguientes archivos:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Se eliminarán estos archivos del dispositivo, ¿está seguro de que quiere continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4855,15 +4916,15 @@ msgstr "Esta configuración se usa en el diálogo «Convertir música», y cuand msgid "Third level" msgstr "Tercer nivel" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Esto creará una base de datos que podría llegar hasta los 150 MB.\n¿Quiere continuar de todas formas?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" -msgstr "Este álbum no se encuentra disponible en el formato solicitado" +msgstr "Este álbum no está disponible en el formato solicitado" #: ../bin/src/ui_deviceproperties.h:381 msgid "" @@ -4875,11 +4936,11 @@ msgstr "Este dispositivo debe conectarse y abrirse antes de que Clementine pueda msgid "This device supports the following file formats:" msgstr "Este dispositivo admite los formatos de archivo siguientes:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Este dispositivo no funcionará correctamente" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Este es un dispositivo MTP, pero se compiló Clementine sin la compatibilidad con libmtp." @@ -4888,7 +4949,7 @@ msgstr "Este es un dispositivo MTP, pero se compiló Clementine sin la compatibi msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Este es un iPod, pero se compiló Clementine sin la compatibilidad con libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4898,33 +4959,33 @@ msgstr "Esta es la primera vez que conecta este dispositivo. Clementine analiza msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Puede modificar esta opción en la pestaña «Comportamiento» en Preferencias" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Este flujo es solo para los suscriptores de pago" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "No se admite este tipo de dispositivo: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Título" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Para iniciar la radio de Grooveshark, debe primero escuchar algunas canciones de Grooveshark." -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Hoy" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Conmutar OSD estético" @@ -4932,27 +4993,27 @@ msgstr "Conmutar OSD estético" msgid "Toggle fullscreen" msgstr "Pantalla completa" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Cambiar estado de la cola" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Activar o desactivar scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Cambiar visibilidad del OSD estético" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Mañana" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Demasiadas redirecciones" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Mejores pistas" @@ -4960,21 +5021,25 @@ msgstr "Mejores pistas" msgid "Total albums:" msgstr "Álbumes totales:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Total de bytes transferidos" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Total de solicitudes hechas a la red" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Pistas" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Convertir música" @@ -4986,7 +5051,7 @@ msgstr "Registro del convertidor" msgid "Transcoding" msgstr "Conversión" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Convirtiendo %1 archivos usando %2 procesos" @@ -4995,11 +5060,11 @@ msgstr "Convirtiendo %1 archivos usando %2 procesos" msgid "Transcoding options" msgstr "Opciones de conversión" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -5007,72 +5072,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Apagar" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Contraseña de Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Nombre de usuario de Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Banda ultraancha (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "No se puede descargar %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Desconocido" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Tipo de contenido desconocido" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Error desconocido" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Eliminar la carátula" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "No omitir pistas seleccionadas" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "No omitir pista" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Cancelar suscripción" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Próximos conciertos" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Actualizar" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Actualizar lista de reproducción de Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Actualizar todos los podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Actualizar carpetas de la colección modificadas" @@ -5080,7 +5145,7 @@ msgstr "Actualizar carpetas de la colección modificadas" msgid "Update the library when Clementine starts" msgstr "Actualizar la colección cuando inicie Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Actualizar este podcast" @@ -5088,21 +5153,21 @@ msgstr "Actualizar este podcast" msgid "Updating" msgstr "Actualización" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Actualizando %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." -msgstr "Actualizando %1%…" +msgstr "Actualizando… (%1%)" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Actualizando la colección" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Uso" @@ -5110,11 +5175,11 @@ msgstr "Uso" msgid "Use Album Artist tag when available" msgstr "Usar etiqueta Artista del álbum cuando esté disponible" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Usar las combinaciones de teclas de Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Usar metadatos de Replay Gain si están disponibles" @@ -5134,7 +5199,7 @@ msgstr "Usar un conjunto de colores personalizado" msgid "Use a custom message for notifications" msgstr "Usar un mensaje personalizado para las notificaciones" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Usar un control remoto de red" @@ -5174,20 +5239,20 @@ msgstr "Utilizar la configuración de proxy del sistema" msgid "Use volume normalisation" msgstr "Usar normalización de volumen" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" -msgstr "Usado" +msgstr "En uso:" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "El usuario %1 no tiene una cuenta Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interfaz de usuario" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5209,12 +5274,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Tasa de bits variable" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Varios artistas" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versión %1" @@ -5227,7 +5292,7 @@ msgstr "Ver" msgid "Visualization mode" msgstr "Modo de visualización" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualizaciones" @@ -5235,11 +5300,15 @@ msgstr "Visualizaciones" msgid "Visualizations Settings" msgstr "Configuración de visualizaciones" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Detección de actividad de voz" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volumen al %1%" @@ -5257,11 +5326,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Avisarme antes de cerrar una pestaña de lista de reproducción" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5269,7 +5338,7 @@ msgstr "Wav" msgid "Website" msgstr "Sitio web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Semanas" @@ -5295,32 +5364,32 @@ msgstr "Por qué no intenta…" msgid "Wide band (WB)" msgstr "Banda ancha (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: activo" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: conectado" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: batería en estado crítico (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: desactivado" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: desconectado" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: batería baja (%2%)" @@ -5341,7 +5410,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Audio de Windows Media" @@ -5349,25 +5418,25 @@ msgstr "Audio de Windows Media" msgid "Without cover:" msgstr "Sin carátula:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "¿Le gustaría mover también las otras canciones de este álbum a Varios artistas?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "¿Quiere ejecutar un reanálisis completo ahora?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Escribir las estadísticas de todas las canciones en los archivos" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nombre de usuario o contraseña incorrectos." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5379,11 +5448,11 @@ msgstr "Año" msgid "Year - Album" msgstr "Año–álbum" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Años" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Ayer" @@ -5391,13 +5460,13 @@ msgstr "Ayer" msgid "You are about to download the following albums" msgstr "Está a punto de descargar los álbumes siguientes" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "¿Está seguro de que quiere eliminar %1 listas de reproducción de sus favoritos?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5407,12 +5476,12 @@ msgstr "Está a punto de eliminar permanentemente una lista de reproducción que msgid "You are not signed in." msgstr "No ha iniciado sesión." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Ha iniciado sesión como %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Ha iniciado sesión." @@ -5420,13 +5489,13 @@ msgstr "Ha iniciado sesión." msgid "You can change the way the songs in the library are organised." msgstr "Puede modificar el modo en que se organizan las canciones en la colección." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Puede escuchar gratuitamente sin cuenta de usuario, pero los miembros Premium pueden escuchar transmisiones de calidad más alta sin publicidad." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5436,13 +5505,6 @@ msgstr "Puede escuchar canciones de Magnatune gratis sin la necesidad de una cue msgid "You can listen to background streams at the same time as other music." msgstr "Puede escuchar flujos de fondo al mismo tiempo que a otra música." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Puede enviar de forma gratuita la información de las canciones escuchadas, pero solo los suscriptores de pago pueden escuchar la radio de Last.fm desde Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Puede usar su Wii Remote como un mando a distancia para Clementine. Visite la página en el wiki de Clementine para más información.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "No tiene una cuenta Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "No tiene una cuenta Premium de Spotify." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "No tiene una suscripción activa" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "No es necesario iniciar sesión para buscar y escuchar música de SoundCloud. Sin embargo, debe iniciar sesión para acceder a sus listas de reproducción y actualizaciones." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Ha cerrado la sesión de Spotify. Vuelva a escribir su contraseña en el diálogo de Configuración." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Ha cerrado la sesión de Spotify. Vuelva a escribir su contraseña." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Esta canción es una de sus favoritas" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Abra Preferencias del sistema y permita que Clementine «controle el equipo» para utilizar los atajos globales en Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5487,17 +5563,11 @@ msgstr "Necesita ejecutar Preferencias del sistema y activar «\n" "Language-Team: Estonian (http://www.transifex.com/projects/p/clementine/language/et/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Language: et\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -43,9 +43,9 @@ msgstr "" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " msek" @@ -58,11 +58,16 @@ msgstr " punkti" msgid " seconds" msgstr " sekundit" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " laulu" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albumit" @@ -72,12 +77,12 @@ msgstr "%1 albumit" msgid "%1 days" msgstr "%1 päeva" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 päeva tagasi" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -87,48 +92,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 плейлист (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "выбрано %1 из" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 lugu" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 lugu" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "Leiti %1 lugu" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "Найдено %1 записей (показано %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 pala" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: moodul Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -142,18 +147,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n ebaõnnestus" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n lõpetatud" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "jäänud %n" @@ -165,24 +173,24 @@ msgstr "" msgid "&Center" msgstr "&Keskele" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Kohandatud" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Lisad" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Abi" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Peida %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Peida..." @@ -190,23 +198,23 @@ msgstr "Peida..." msgid "&Left" msgstr "&Vasakule" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Muusika" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Puudub" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Lugude nimekiri" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Välju" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Kordav režiim" @@ -214,23 +222,23 @@ msgstr "Kordav režiim" msgid "&Right" msgstr "&Paremale" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Segatud režiim" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Растянуть столбцы по размеру окна" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Töövahendid" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "..ja kõik Amaroki toetajad" @@ -250,14 +258,10 @@ msgstr "" msgid "1 day" msgstr "1 päev" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 lugu" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -267,7 +271,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 случайных треков" @@ -275,12 +279,6 @@ msgstr "50 случайных треков" msgid "Upgrade to Premium now" msgstr "Купить Премиум" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -291,6 +289,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -299,38 +308,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Интеллектуальный плейлист - это динамический список аудиозаписей, который приходит из вашей бибилиотеки. Существуют разные типы интеллектуальных плейлистов с различными способами выбора записей." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -350,36 +359,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1 info" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Clementine info..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt info..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Konto üksikasjad" @@ -391,11 +399,15 @@ msgstr "Банковские реквизиты (Премиум)" msgid "Action" msgstr "Toiming" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktiveeri/deaktiveeri Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -411,39 +423,39 @@ msgstr "" msgid "Add action" msgstr "Lisa tegevus" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Lisa kaust..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Lisa fail..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Lisa failid Transkodeerimisele" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Lisa kaust" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Lisa kaust..." @@ -455,11 +467,11 @@ msgstr "Lisa uus kaust..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -523,6 +535,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -531,22 +547,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Lisa raadiovoog..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Lisa esitusnimekirja" @@ -555,6 +583,10 @@ msgstr "Lisa esitusnimekirja" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Lisa wiimotedev tegevus" @@ -584,15 +616,15 @@ msgstr "Lisatud täna" msgid "Added within three months" msgstr "Lisatud kolme kuu jooksul" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -600,12 +632,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Pärast kopeerimist..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -613,11 +645,11 @@ msgstr "Pärast kopeerimist..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (kõigil radadel ideaalne valjus)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -627,35 +659,36 @@ msgstr "Albumi esitaja" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Album koos kaanega" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Kõik failid (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Kõik au Hüpnokärnkonnale!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Kõik albumid" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Kõikesitajad" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Kõik failid (*)" @@ -664,19 +697,19 @@ msgstr "Kõik failid (*)" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Kõik tõlkiad" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -701,30 +734,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -733,13 +766,13 @@ msgstr "" msgid "Appearance" msgstr "Väljanägemine" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -747,52 +780,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Esitaja" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Esitaja info" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Artisti sildipilv" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -800,9 +828,13 @@ msgstr "" msgid "Audio format" msgstr "Heli vorming" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentimine ebaõnnestus" @@ -810,7 +842,7 @@ msgstr "Autentimine ebaõnnestus" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autorid" @@ -826,7 +858,7 @@ msgstr "Automaatne uuendamine" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Saadaolevad" @@ -834,15 +866,15 @@ msgstr "Saadaolevad" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +895,7 @@ msgstr "" msgid "Background opacity" msgstr "Tausta läbipaistvus" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -871,11 +903,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Keela" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -895,18 +923,17 @@ msgstr "Käitumine" msgid "Best" msgstr "Parim" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitikiirus" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -914,7 +941,12 @@ msgstr "Bitikiirus" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -930,7 +962,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -944,11 +976,11 @@ msgstr "" msgid "Browse..." msgstr "Sirvi..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -960,43 +992,66 @@ msgstr "" msgid "Buttons" msgstr "Nupud" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Loobu" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Muuda kirja suurust..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Muuda keelt" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1006,15 +1061,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Kontrolli uuendusi..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Vali automaatselt" @@ -1030,11 +1089,11 @@ msgstr "" msgid "Choose from the list" msgstr "Vali nimekirjast" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1043,7 +1102,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klassikaline" @@ -1051,17 +1110,17 @@ msgstr "Klassikaline" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Puhasta" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Esitusloendi puhastamine" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1074,8 +1133,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1097,8 +1156,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1112,20 +1171,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1137,11 +1189,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klikka siin et lisada muusikat" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1151,7 +1203,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1166,19 +1221,19 @@ msgstr "Sulge" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Sulge visualiseerimine" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klubi" @@ -1186,73 +1241,78 @@ msgstr "Klubi" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Märkus" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Helilooja" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Kiirklahvide seadistamine" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Seadista..." @@ -1260,11 +1320,11 @@ msgstr "Seadista..." msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Ühenda seade" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1274,12 +1334,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1295,17 +1359,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopeeri seadmesse..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1313,156 +1381,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Ei suuda avada väljund faili %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Kaanepildi haldur" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1470,7 +1534,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Kohanda" @@ -1482,54 +1546,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Kohandatud..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Tantsumuusika" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Loomise kuupäev" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Muutmise kuupäev" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "päeva" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Vaikeväärtus" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Vähenda helitugevust 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Heli vaiksemaks" @@ -1537,6 +1597,11 @@ msgstr "Heli vaiksemaks" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Vaikeväärtused" @@ -1545,30 +1610,30 @@ msgstr "Vaikeväärtused" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Kustuta failid" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Kustuta seadmest..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Kustuta kettalt..." @@ -1576,31 +1641,31 @@ msgstr "Kustuta kettalt..." msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Kustuta valmisseadistus." -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Kustuta originaal failid" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Failide kustutamine" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Sihtkoht" @@ -1609,7 +1674,7 @@ msgstr "Sihtkoht" msgid "Details..." msgstr "Üksikasjad..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Seade" @@ -1621,15 +1686,15 @@ msgstr "Seadme seadistus" msgid "Device name" msgstr "Seadme nimi" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Seadme omadused..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Seadmed" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1666,12 +1731,17 @@ msgstr "Näita kestust" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Keelatud" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Ketas" @@ -1681,15 +1751,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Ekraani seaded" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1701,27 +1771,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ära korda" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ära sega" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ära peata!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Avamiseks tee topeltklikk" @@ -1729,12 +1799,13 @@ msgstr "Avamiseks tee topeltklikk" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Lae kaust alla" @@ -1750,7 +1821,7 @@ msgstr "Lae liikmelisus" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1758,15 +1829,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Lae see album alla" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Lae see album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1774,7 +1845,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1783,23 +1854,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Lohista asukoha muutmiseks" @@ -1819,20 +1890,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Muuda silti..." @@ -1844,16 +1915,16 @@ msgstr "" msgid "Edit track information" msgstr "Muuda loo infot" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Muuda loo infot..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Muuda lugude infot" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Muuda..." @@ -1861,6 +1932,10 @@ msgstr "Muuda..." msgid "Enable Wii Remote support" msgstr "Luba Wii kaugjuhtimine" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Luba ekvalaiser" @@ -1875,7 +1950,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1903,15 +1978,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Sisesta artist või tag et alustada Last.fm raadio kuulamist." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1925,7 +1995,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Sisesta siia otsingusõnad" @@ -1934,11 +2004,11 @@ msgstr "Sisesta siia otsingusõnad" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1946,21 +2016,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekvalaiser" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Viga" @@ -1968,38 +2039,38 @@ msgstr "Viga" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Viga laulude kopeerimisel" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2031,7 +2102,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2043,7 +2114,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2064,36 +2135,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2103,42 +2174,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Heli sumbumine loo peatamisel" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Hajumine" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2147,11 +2218,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Lemmiklood" @@ -2167,11 +2238,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2179,7 +2250,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Faililaiend" @@ -2187,19 +2258,23 @@ msgstr "Faililaiend" msgid "File formats" msgstr "Faili vormingud" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Faili nimi" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Failinimi (ilma rajata)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Faili suurus" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2209,7 +2284,7 @@ msgstr "Faili tüüp" msgid "Filename" msgstr "Faili nimi" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Failid" @@ -2217,15 +2292,19 @@ msgstr "Failid" msgid "Files to transcode" msgstr "Transkodeerida failid" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2233,7 +2312,7 @@ msgstr "" msgid "First level" msgstr "Esimene tase" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2249,12 +2328,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Unusta seade" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2269,7 +2348,7 @@ msgstr "Seadme unustamine eemaldab selle siit loendist, mistõttu Clementine'il #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2297,31 +2376,23 @@ msgstr "Kaadrisagedus" msgid "Frames per buffer" msgstr "Kaadreid puhvri kohta" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Sõbrad" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Täisbass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2329,30 +2400,30 @@ msgstr "" msgid "General settings" msgstr "Üldised seadistused" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žanr" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2364,11 +2435,11 @@ msgstr "Anna sellele nimi:" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2376,7 +2447,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2386,7 +2457,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2394,15 +2465,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2410,44 +2481,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Rühmitamise alus" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Rühmita albumite järgi" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Rühmita esitajate järgi" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Grupeeri esitaja/albumi järgi" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Grupeeri esitaja/aasta albumi järgi" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Grupeeri zanri/albumi järgi" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Grupeeri zanri/esitaja/albumi järgi" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2456,7 +2527,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP-puhverserver" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2472,25 +2543,25 @@ msgstr "Riistvara info on ainult siis saadaval, kui seade on ühendatud." msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Kõrge (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2502,15 +2573,15 @@ msgstr "Mul pole Magnatune kontot" msgid "Icon" msgstr "Ikoon" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "ikoonid üleval" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2520,24 +2591,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "\"The\" ignoreerimine Esitajate nimedes" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2548,7 +2619,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Sisendkaust" @@ -2560,36 +2631,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Heli valjemaks" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informatsioon" @@ -2597,55 +2668,55 @@ msgstr "Informatsioon" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Lisa..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Paigaldatud" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Vigane API võti" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Sobimatu formaat" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Vigane meetod" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Vigased parameetrid" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Vigane teenus" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Vigane sessiooni võti" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Vale kasutajanimi ja/või salasõna" @@ -2653,42 +2724,42 @@ msgstr "Vale kasutajanimi ja/või salasõna" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo andmebaas" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2697,23 +2768,24 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Säiilita originaalfailid" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Kassipojad" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Keel" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Rüpperaal/Kõrvikud" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Suur ruum" @@ -2721,58 +2793,24 @@ msgstr "Suur ruum" msgid "Large album cover" msgstr "Suur albumi kaanepilt" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Suur külgriba" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Viimati esitatud" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm sildipilve raadio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2780,11 +2818,11 @@ msgstr "" msgid "Last.fm password" msgstr "Last.fm parool" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm sildipilv" @@ -2792,28 +2830,24 @@ msgstr "Last.fm sildipilv" msgid "Last.fm username" msgstr "Last.fm kasutajanimi" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Vähim kuulatud lood" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Kestvus" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Helikogu" @@ -2821,24 +2855,24 @@ msgstr "Helikogu" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Rajad" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2850,15 +2884,15 @@ msgstr "Laadi" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Lae ümbris URL-ilt---" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Lae ümbris plaadilt..." @@ -2866,84 +2900,89 @@ msgstr "Lae ümbris plaadilt..." msgid "Load playlist" msgstr "Laadi esitusnimekiri" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Lae esitusnimekiri..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Voo laadimine" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Laadimine..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Logi sisse" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Meeldib" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Madal (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Madal (256x256)" @@ -2955,12 +2994,17 @@ msgstr "" msgid "Lyrics" msgstr "Laulusõnad" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Laulusõnad saidilt %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2972,15 +3016,15 @@ msgstr "" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2988,7 +3032,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2996,15 +3040,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Vigane vastus" @@ -3017,15 +3066,15 @@ msgstr "Puhvri käsitsiseadistus" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Tootja" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3037,17 +3086,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Keskmine (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Keskmine (512x512)" @@ -3059,11 +3112,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "Vähim bitikiirus" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Mudel" @@ -3071,20 +3128,20 @@ msgstr "Mudel" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "kuud" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3092,15 +3149,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Enim mängitud" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Haakepunkt" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Enim punkte" @@ -3109,7 +3170,7 @@ msgstr "Enim punkte" msgid "Move down" msgstr "Liiguta alla" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3118,7 +3179,7 @@ msgstr "" msgid "Move up" msgstr "Liiguta üles" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3126,56 +3187,32 @@ msgstr "" msgid "Music Library" msgstr "Muusika kogu" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Vaigista" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Minu naabrus" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nimi" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Nimetamise valikud" @@ -3183,23 +3220,19 @@ msgstr "Nimetamise valikud" msgid "Narrow band (NB)" msgstr "kitsasribaühendus (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Naabrid" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Võrguproksi" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Mitte kunagi" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3208,21 +3241,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Uus esitusnimekiri" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Uued laulud" @@ -3230,24 +3263,24 @@ msgstr "Uued laulud" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Uusimad lood" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Järgmine" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Järgmine lugu" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3255,7 +3288,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3263,7 +3296,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Vasteid ei leitud. Puhasta otsingukast, et näha kogu nimekirja." @@ -3277,11 +3310,11 @@ msgstr "" msgid "None" msgstr "Puudub" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3289,43 +3322,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Pole ühendatud" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Pole piisavalt sisu" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Pole piisavalt fänne" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Pole piisavalt liikmeid" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Pole piisavalt naabreid" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3338,36 +3375,41 @@ msgstr "Teavitused" msgid "Now Playing" msgstr "Hetkel mängib" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3375,11 +3417,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3387,23 +3429,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Ava %1 brauseris" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Ava &audio CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3411,30 +3453,35 @@ msgstr "" msgid "Open device" msgstr "Ava seade" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Ava..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operatsioon ebaõnnestus" @@ -3454,23 +3501,23 @@ msgstr "Valikud..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organiseeri faile" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organiseeri faile..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organiseerin faile" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Muud valikud" @@ -3478,7 +3525,7 @@ msgstr "Muud valikud" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3486,15 +3533,11 @@ msgstr "" msgid "Output options" msgstr "Väljundi valikud" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Kirjuta olemasolev fail üle" @@ -3506,15 +3549,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Pidu" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3523,20 +3566,20 @@ msgstr "Pidu" msgid "Password" msgstr "Parool" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Paus" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Peata esitus" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Peatatud" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3545,34 +3588,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Täielik külgriba" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Mängi" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Mängi Esitaja või Sildipilve" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Esitamiste arv" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Mängi, kui on peatatud, paus, kui mängitakse" @@ -3581,45 +3612,42 @@ msgstr "Mängi, kui on peatatud, paus, kui mängitakse" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Mängi sildipilve raadiot..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Esita/paus" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Taasesitus" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Esitaja valikud" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lugude nimekiri" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Esitusnimekiri läbi" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Esitusnimekirja valikud" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3631,23 +3659,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3656,22 +3684,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Eelmoonutus" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Seadistused" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Seadistused..." @@ -3707,7 +3736,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3718,20 +3747,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Eelvaade" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Eelmine" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Eelmine lugu" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3739,21 +3768,25 @@ msgstr "" msgid "Profile" msgstr "Profiil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progress" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3761,85 +3794,95 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kvaliteet" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Järjekorrahaldur" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Lisa järjekorda" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Raadio (kõigil paladel võrdne valjus)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Vihm" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Hinnang" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3847,19 +3890,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Regemuusika" @@ -3871,8 +3910,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Eemalda" @@ -3880,7 +3919,7 @@ msgstr "Eemalda" msgid "Remove action" msgstr "Eemalda toiming" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3888,73 +3927,77 @@ msgstr "" msgid "Remove folder" msgstr "Eemalda kaust" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Eemalda esitusnimekirjast" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Nimeta lugude nimekiri ümber" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Korda" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3963,15 +4006,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3979,24 +4022,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4004,15 +4047,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4032,11 +4075,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rokk" @@ -4048,25 +4091,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "SOCKS proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Diskreetimissagedus" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Diskreetimissagedus" @@ -4074,27 +4117,33 @@ msgstr "Diskreetimissagedus" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Pildi salvestamine" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Salvesta lugude nimekiri" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Salvesta esitusnimekiri..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Eelmääratluse salvestamine" @@ -4110,11 +4159,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4126,7 +4175,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4134,34 +4183,38 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Otsing" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4181,21 +4234,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Otsingu valikud" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4203,27 +4256,27 @@ msgstr "" msgid "Second level" msgstr "Teine tase" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Vali kõik" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Tühista valik." @@ -4231,7 +4284,7 @@ msgstr "Tühista valik." msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4247,7 +4300,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4255,7 +4308,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Seerianumber" @@ -4267,51 +4320,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Kiirklahv" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Näita" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Näita ekraanimenüüd" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4339,15 +4392,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Näita kõiki laule" @@ -4359,32 +4412,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4393,7 +4450,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4408,27 +4465,27 @@ msgstr "Paneeliikooni näitamine" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Näita/peida" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Sega" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Sega kõik" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Sega esitusnimistu" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4444,7 +4501,7 @@ msgstr "Logi välja" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Sarnased esitajad" @@ -4456,43 +4513,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Lugude nimekirjas tagasi hüppamine" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Lugude nimekirjas edasi" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Väike külgriba" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Mahe" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4500,11 +4565,11 @@ msgstr "" msgid "Song Information" msgstr "Laulu andmed" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogramm" @@ -4524,15 +4589,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sorteerimine" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4548,7 +4621,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4556,7 +4629,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4564,77 +4637,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Käivitatakse %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Alustamine..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Peata" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Esitamise lõpetamine" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Peatatud" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Voog" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4644,7 +4717,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4652,7 +4725,7 @@ msgstr "" msgid "Subscribers" msgstr "Tellijad" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4660,12 +4733,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4674,13 +4747,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4692,43 +4765,35 @@ msgstr "Toetatud vormingud" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Silt" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Sildiraadio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tehno" @@ -4736,11 +4801,11 @@ msgstr "Tehno" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Tänud" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4749,17 +4814,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4767,40 +4827,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4812,13 +4872,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4838,13 +4898,13 @@ msgstr "" msgid "Third level" msgstr "Kolmas tase" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4858,11 +4918,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4871,7 +4931,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4881,33 +4941,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Pealkiri" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Täna" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4915,27 +4975,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Lülita täisekraani" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4943,21 +5003,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Rada" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transkodeeri muusikat" @@ -4969,7 +5033,7 @@ msgstr "Transkodeerimis logi" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4978,11 +5042,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbiin" @@ -4990,72 +5054,72 @@ msgstr "Turbiin" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Tundmatu" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Tundmatu viga" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5063,7 +5127,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5071,21 +5135,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Kasutus" @@ -5093,11 +5157,11 @@ msgstr "Kasutus" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5117,7 +5181,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5157,20 +5221,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Kasutuses" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5192,12 +5256,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Erinevad esitajad" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versioon %1" @@ -5210,7 +5274,7 @@ msgstr "Vaade" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualiseeringud" @@ -5218,11 +5282,15 @@ msgstr "Visualiseeringud" msgid "Visualizations Settings" msgstr "Virtualiseerimise seaded" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5240,11 +5308,11 @@ msgstr "WAV" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5252,7 +5320,7 @@ msgstr "Wav" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5278,32 +5346,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5324,7 +5392,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5332,25 +5400,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5362,11 +5430,11 @@ msgstr "Aasta" msgid "Year - Album" msgstr "Aasta - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Eile" @@ -5374,13 +5442,13 @@ msgstr "Eile" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5390,12 +5458,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5403,13 +5471,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5419,13 +5487,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5470,17 +5545,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5488,42 +5557,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Null" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "lisa %n laulu" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "pärast" @@ -5543,19 +5613,19 @@ msgstr "" msgid "before" msgstr "enne" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "sisaldab" @@ -5565,20 +5635,20 @@ msgstr "sisaldab" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5586,11 +5656,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "suurem kui" @@ -5598,54 +5668,55 @@ msgstr "suurem kui" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "vähem kui" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "valikud" @@ -5657,36 +5728,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "peata" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/eu.po b/src/translations/eu.po index 028696665..f83d84af4 100644 --- a/src/translations/eu.po +++ b/src/translations/eu.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Basque (http://www.transifex.com/projects/p/clementine/language/eu/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +44,9 @@ msgstr "egun" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -59,11 +59,16 @@ msgstr " pt" msgid " seconds" msgstr " segundu" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " abesti" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -73,12 +78,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 egun" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "duela %1 egun" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 %2-tik" @@ -88,48 +93,48 @@ msgstr "%1 %2-tik" msgid "%1 playlists (%2)" msgstr "%1 erreprodukzio-zerrenda (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 aukeraturik" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 abestia" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 abesti" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 abesti aurkiturik" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 abesti aurkiturik (%2 erakusten)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 pista" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 transferitua" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev modulua" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 gainontzeko entzule" @@ -143,18 +148,21 @@ msgstr "%L1 erreprodukzio guztira" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n-(e)k huts egin du" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n amaituta" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n egiteke" @@ -166,24 +174,24 @@ msgstr "&Alineatu testua" msgid "&Center" msgstr "&Zentratu" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Pertsonalizatua" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Gehigarriak" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Laguntza" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Ezkutatu %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Ezkutatu..." @@ -191,23 +199,23 @@ msgstr "&Ezkutatu..." msgid "&Left" msgstr "Ez&kerrera" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Musika" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Bat ere ez" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Erreprodukzio-zerrenda" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Itxi" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "E&rrepikatze-modua" @@ -215,23 +223,23 @@ msgstr "E&rrepikatze-modua" msgid "&Right" msgstr "E&skuinera" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Au&sazko modua" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Tiratu zutabeak leihoan egokitzeko" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Tresnak" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(desberdinak zenbait abestien zehar)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...eta Amarok-eko laguntzaile guztiei" @@ -251,14 +259,10 @@ msgstr "0px" msgid "1 day" msgstr "Egun 1" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "Pista 1" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +272,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 ausazko pista" @@ -276,12 +280,6 @@ msgstr "50 ausazko pista" msgid "Upgrade to Premium now" msgstr "Eguneratu Premium-era orain" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +290,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +309,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Tokenak %-rekin hasten dira, adibidez: %artista %albuma %titulua

\n\n

Tokena duten testu zatiak giltzekin inguratzen badituzu, zati hori ezkutaturik egongo da tokena hutsik badago.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Beharrezkoa da Grooveshark Anywhere kontua izatea" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Beharrezkoa da Spotify Premium kontua izatea." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Erreprodukzio-zerrenda adimenduna, zure bildumatik hartutako abestien zerrenda dinamikoa da. Erreprodukzio-zerrenda inteligenteen zenbait mota desberdin daude, abestiak aukeratzeko era desberdinak ematen dituztenak." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Abestia zerrendan sartuko da baldintza hauek betetzen baditu." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -351,36 +360,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64K" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "LORIA OSOA HIPNOAPOARENTZAT" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1-(r)i buruz" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Clementine-ri buruz..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt-ri buruz..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Kontuaren xehetasunak" @@ -392,11 +400,15 @@ msgstr "Kontuaren xehetasunak (Premium)" msgid "Action" msgstr "Ekintza" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wiiremote-a aktibatu/desaktibatu" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Podcast-a gehitu" @@ -412,39 +424,39 @@ msgstr "Lerro berria gehitu jakinarazpen motak onartzen badu" msgid "Add action" msgstr "Gehitu ekintza" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Gehitu beste jario bat..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Gehitu direktorioa..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Gehitu fitxategia" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Gehitu fitxategia..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Gehitu transkodetzeko fitxategiak" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Gehitu karpeta" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Gehitu karpeta..." @@ -456,11 +468,11 @@ msgstr "Gehitu karpeta berria..." msgid "Add podcast" msgstr "Podcast-a gehitu" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Podcast-a gehitu..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Gehitu bilaketa-terminoa" @@ -524,6 +536,10 @@ msgstr "Gehitu kantaren jauzi-kontagailua" msgid "Add song title tag" msgstr "Gehitu titulua etiketa kantari" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Gehitu pista etiketa kantari" @@ -532,22 +548,34 @@ msgstr "Gehitu pista etiketa kantari" msgid "Add song year tag" msgstr "Gehitu urtea etiketa kantari" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Gehitu jarioa..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Gehitu Grooveshark-eko gogokoenetara" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Gehitu Grooveshark-eko erreprodukzio-zerrendetara" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Gehitu beste erreprodukzio-zerrenda batera" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Gehitu erreprodukzio-zerrendara" @@ -556,6 +584,10 @@ msgstr "Gehitu erreprodukzio-zerrendara" msgid "Add to the queue" msgstr "Gehitu ilarara" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Gehitu wiimotedev ekintza" @@ -585,15 +617,15 @@ msgstr "Gaur gehitua" msgid "Added within three months" msgstr "Azken hiru hilabeteetan gehitua" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Abestia Nire Musikara gehitzen" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Abestia gogokoenetara gehitzen" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Taldekatze aurreratua..." @@ -601,12 +633,12 @@ msgstr "Taldekatze aurreratua..." msgid "After " msgstr "Ondoren" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Kopiatu ondoren..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +646,11 @@ msgstr "Kopiatu ondoren..." msgid "Album" msgstr "Albuma" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Albuma (pista guztientzako bolumen ideala)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +660,36 @@ msgstr "Albumeko artista" msgid "Album cover" msgstr "Albumeko azala" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Albumeko informazioa jamendo.com-en..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Azaldun albumak" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Azal gabeko albumak" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Fitxategi guztiak (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Loria osoa Hipnoapoarentzat!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Album guztiak" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Artista guztiak" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Fitxategi guztiak (*)" @@ -665,19 +698,19 @@ msgstr "Fitxategi guztiak (*)" msgid "All playlists (%1)" msgstr "Erreprodukzio-zerrenda guztiak (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Itzultzaile guztiak" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Pista guztiak" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -702,30 +735,30 @@ msgstr "Leiho nagusia beti erakutsi" msgid "Always start playing" msgstr "Beti hasi erreproduzitzen" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Plugin gehigarri bat beharrezkoa da Spotify Clementine-en erabiltzeko. Orain deskargatu eta instalatzea nahi duzu?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Errorea gertatu da iTunes datu-basea kargatzerakoan" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Errorea gertatu da '%1'-(e)ra metadatuak idazterakoan" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Errore ezezagun bat gertatu da." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Eta:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Haserre" @@ -734,13 +767,13 @@ msgstr "Haserre" msgid "Appearance" msgstr "Itxura" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Erantsi Fitxategiak/URL-ak erreprodukzio-zerrendari" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Erantsi oraingo erreprodukzio-zerrendari" @@ -748,52 +781,47 @@ msgstr "Erantsi oraingo erreprodukzio-zerrendari" msgid "Append to the playlist" msgstr "Erantsi erreprodukzio-zerrendari" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Konpresioa aplikatu laburketak ekiditeko" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "\"%1\" aurrezarpena ezabatu?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Erreprodukzio-zerrenda hau ezabatu?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Abesti honen estatistikak berrezarri?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Artis. infor." -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Artistaren irratia" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Artistaren etiketak" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Artistaren inizialak" @@ -801,9 +829,13 @@ msgstr "Artistaren inizialak" msgid "Audio format" msgstr "Audio formatua" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentifikazioak huts egin du..." @@ -811,7 +843,7 @@ msgstr "Autentifikazioak huts egin du..." msgid "Author" msgstr "Egilea" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Egileak" @@ -827,7 +859,7 @@ msgstr "Eguneratze automatikoa" msgid "Automatically open single categories in the library tree" msgstr "Bilduma-zuhaitzean automatikoki ireki banako kategoriak" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Eskuragarri" @@ -835,15 +867,15 @@ msgstr "Eskuragarri" msgid "Average bitrate" msgstr "Batez besteko bit-tasa" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Batez besteko irudi-tamaina" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC-ko podcast-ak" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +896,7 @@ msgstr "Atzeko planoko irudia" msgid "Background opacity" msgstr "Atzeko planoko opakotasuna" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Datu-basearen babeskopia burutzen" @@ -872,11 +904,7 @@ msgstr "Datu-basearen babeskopia burutzen" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Galarazi" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Barra-analizatzailea" @@ -896,18 +924,17 @@ msgstr "Portaera" msgid "Best" msgstr "Onena" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "%1-ko biografia" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit-tasa" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +942,12 @@ msgstr "Bit-tasa" msgid "Bitrate" msgstr "Bit-tasa" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Bloke-analizatzailea" @@ -931,7 +963,7 @@ msgstr "" msgid "Body" msgstr "Gorputza" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom analizatzailea" @@ -945,11 +977,11 @@ msgstr "" msgid "Browse..." msgstr "Arakatu..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Bufferra betetzen" @@ -961,43 +993,66 @@ msgstr "Baina iturri hauek desgaiturik daude:" msgid "Buttons" msgstr "Botoiak" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE orriaren euskarria" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Utzi" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Aldatu azala" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Aldatu letra-tipo tamaina..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Aldatu errepikatze-modua" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Aldatu laster-tekla..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Aldatu ausazko modua" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Aldatu hizkuntza" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1062,19 @@ msgstr "Mono erreprodukzioa hurrengo erreprodukzioetan izango da erabilgarri" msgid "Check for new episodes" msgstr "Atal berriak bilatu" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Eguneraketak bilatu..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Erreprodukzio-zerrenda adimendunaren izena hautatu" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Automatikoki hautatu" @@ -1031,11 +1090,11 @@ msgstr "Hautatu letra-tipoa..." msgid "Choose from the list" msgstr "Hautatu zerrendatik" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Hautatu zerrendaren ordena eta izango duen abesti kopurua." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Podcast-a deskargatzeko direktorioa aukeratu" @@ -1044,7 +1103,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Hautatu Clementine-k abestien letrak bilatzeko erabiliko dituen webguneak" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasikoa" @@ -1052,17 +1111,17 @@ msgstr "Klasikoa" msgid "Cleaning up" msgstr "Garbiketa" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Garbitu" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Erreprodukzio-zerrenda garbitu" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1075,8 +1134,8 @@ msgstr "Clementine-ren errorea" msgid "Clementine Orange" msgstr "Clementine laranja" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine-ren bistaratzea" @@ -1098,9 +1157,9 @@ msgstr "Clementine-k Dropbox-era igo duzun musika erreproduzitu dezake" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine-k Google Drive-ra igo duzun musika erreproduzitu dezake" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine-k Ubuntu One-ra igo duzun musika erreproduzitu dezake" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1172,13 @@ msgid "" "an account." msgstr "Clementine-k zure beste ordenagailu edo podcast aplikazioetako harpidetza listak sinkronizatu ditzake. Kontu bat sortu." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine-k ezin izan du projectM bistaratzerik kargatu. Clementine ondo instalatuta dagoen begiratu." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine-k ezin izan du zure harpidetza-egoera hartu, konexioarekin arazoak baitaude. Erreproduzituriko abestiak katxean gorde eta beranduago bidaliko dira Last.fm-ra" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine irudi-ikustailea" @@ -1138,11 +1190,11 @@ msgstr "Clementine-k ezin izan du fitxategi honetarako emaitzak erakutsi" msgid "Clementine will find music in:" msgstr "Hemen bilatuko du musika Clementine-k:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Egin klik hemen musika gehitzeko" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1204,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Egin klik geratzen den denbora eta denbora osoaren artean txandakatzeko" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1222,19 @@ msgstr "Itxi" msgid "Close playlist" msgstr "Erreprodukzio-zerrenda itxi" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Itxi bistaratzea" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Leiho hau ixteak deskarga bertan-behera utziko du." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Leiho hau ixteak albumen azalen bilaketa geldituko du." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club-a" @@ -1187,73 +1242,78 @@ msgstr "Club-a" msgid "Colors" msgstr "Koloreak" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Komaz banaturiko klase-zerrenda:maila, maila 0-3 da" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Iruzkina" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Bete etiketak automatikoki" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Bete etiketak automatikoki..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Konpositorea" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "%1 konfiguratu..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Konfiguratu Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Konfiguratu Last.fm" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Konfiguratu Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Konfiguratu laster-teklak" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Konfiguratu Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Subsonic konfiguratu" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Bilaketa globala konfiguratu..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Konfiguratu bilduma..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Podcast-ak konfiguratu" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Konfiguratu..." @@ -1261,11 +1321,11 @@ msgstr "Konfiguratu..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Konektatu Wii urruneko kontrola aktibatu/desaktibatu botoia erabiliz" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Konektatu gailua" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Konektatu Spotify-ra" @@ -1275,12 +1335,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Kontsola" @@ -1296,17 +1360,21 @@ msgstr "Musika guztia bihurtu" msgid "Convert any music that the device can't play" msgstr "Gailuak erreproduzitu ezin dezakeen musika bihurtu" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiatu arbelean" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopiatu gailura..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopiatu bildumara..." @@ -1314,156 +1382,152 @@ msgstr "Kopiatu bildumara..." msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Ezin izan da GStreamer \"%1\" elementua sortu - beharrezko GStreamer plugin guztiak instalatuta dauden begiratu" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Ezin izan da %1-(r)entzako multiplexadorea aurkitu, begiratu GStreamer plugin egokiak instalatuta dauden" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Ezin izan da %1-(r)entzako kodetzailea aurkitu, begiratu GStreamer plugin egokiak instalatuta dauden" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Ezin izan da last.fm-ko irratia kargatu" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Ezin izan da %1 irteera-fitxategia ireki" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Azal-kudeatzailea" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Irudi txertatu bateko azalak" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "%1-(e)tik automatikoki kargaturiko azalak" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Eskuz berrezarritako azalak" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Ezarri gabeko azalak" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "%1-(e)tik ezarritako azalak" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "%1-(e)ko azalak" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Grooveshark-eko erreprodukzio-zerrenda berria sortu" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Iraungi automatikoki kantak aldatzen direnean" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Iraungi eskuz kantak aldatzen direnean" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Behera" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Maius+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Maius+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1535,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Gora" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Pertsonalizatua" @@ -1483,54 +1547,50 @@ msgstr "Irudi pertsonalizatua:" msgid "Custom message settings" msgstr "Mezu-ezarpen pertsonalizatuak" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Irrati pertsonalizatua" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Pertsonalizatua..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus bide-izena" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Datu-basea usteldurik dago. Datu-basea nola berreskuratu daitekeen jakiteko, irakurri mesedez https://code.google.com/p/clementine-player/wiki/DatabaseCorruption." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Sorrera-data" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Aldatze-data" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Egun" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Lehenetsia" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Bolumena % 4 jaitsi" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Bolumena jaitsi" @@ -1538,6 +1598,11 @@ msgstr "Bolumena jaitsi" msgid "Default background image" msgstr "Atzeko planoko irudi lehenetsia" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Lehenetsiak" @@ -1546,30 +1611,30 @@ msgstr "Lehenetsiak" msgid "Delay between visualizations" msgstr "Bistaratzeen arteko atzerapena" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Ezabatu" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Ezabatu Grooveshark-eko erreprodukzio-zerrenda" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Ezabatu deskargatutako datuak" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Ezabatu fitxategiak" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Ezabatu gailutik..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Ezabatu diskotik..." @@ -1577,31 +1642,31 @@ msgstr "Ezabatu diskotik..." msgid "Delete played episodes" msgstr "Erreproduzitutako atalak ezabatu" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Ezabatu aurre-ezarpena" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Ezabatu erreprodukzio-zerrenda adimenduna" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Ezabatu jatorrizko fitxategiak" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Fitxategiak ezabatzen" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Atera aukeraturiko pistak ilaratik" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Atera pista ilaratik" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Helmuga" @@ -1610,7 +1675,7 @@ msgstr "Helmuga" msgid "Details..." msgstr "Xehetasunak..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Gailua" @@ -1622,15 +1687,15 @@ msgstr "Gailuaren propietateak" msgid "Device name" msgstr "Gailuaren izena" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Gailuaren propietateak..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Gailuak" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1667,12 +1732,17 @@ msgstr "Iraupena desgaitu" msgid "Disable moodbar generation" msgstr "Aldarte-barren sortzea desgaitu" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Desgaituta" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diska" @@ -1682,15 +1752,15 @@ msgid "Discontinuous transmission" msgstr "Transmisio ez-jarraitua" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Erakutsi aukerak" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Erakutsi pantailako bistaratzailea" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Bildumaren berreskaneo osoa egin" @@ -1702,27 +1772,27 @@ msgstr "Ez bihurtu musikarik" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ez errepikatu" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Ez erakutsi hainbat artista" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ez nahastu" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ez gelditu!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Klik bikoitza irekitzeko" @@ -1730,12 +1800,13 @@ msgstr "Klik bikoitza irekitzeko" msgid "Double clicking a song will..." msgstr "Abesti batean klik bikoitza eginez gero..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "%n atal deskargatu" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Direktorioa deskargatu" @@ -1751,7 +1822,7 @@ msgstr "Deskargarako bazkidetza" msgid "Download new episodes automatically" msgstr "Atal berriak automatikoki deskargatu" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Deskarga zerrendaren zain" @@ -1759,15 +1830,15 @@ msgstr "Deskarga zerrendaren zain" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Deskargatu album hau" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Deskargatu album hau..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Atal hau deskargatu" @@ -1775,7 +1846,7 @@ msgstr "Atal hau deskargatu" msgid "Download..." msgstr "Deskargatu..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Deskargatzen (%%1)..." @@ -1784,23 +1855,23 @@ msgstr "Deskargatzen (%%1)..." msgid "Downloading Icecast directory" msgstr "Icecast direktorioa deskargatzen" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Jamendo katalogoa deskargatzen" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Magnatune katalogoa deskargatzen" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Spotify plugina deskargatzen" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Metadatuak deskargatzen" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Arrastatu birkokatzeko" @@ -1820,20 +1891,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Modu dinamikoa aktibaturik" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Ausazko nahasketa dinamikoa" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Editatu erreprodukzio-zerrenda adimenduna..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Editatu etiketa..." @@ -1845,16 +1916,16 @@ msgstr "Editatu etiketak" msgid "Edit track information" msgstr "Editatu pistaren informazioa" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Editatu pistaren informazioa..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Editatu pisten informazioa..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Editatu..." @@ -1862,6 +1933,10 @@ msgstr "Editatu..." msgid "Enable Wii Remote support" msgstr "Gaitu Wii urruneko kontrolaren euskarria" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Gaitu ekualizadorea" @@ -1876,7 +1951,7 @@ msgid "" "displayed in this order." msgstr "Gaitu beheko iturriak bilaketa emaitzetan aurkezteko. Erantzunak orden berdinean erakutsiko dira." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Gaitu/desgaitu Last.fm-ko partekatzea" @@ -1904,15 +1979,10 @@ msgstr "Sartu URL bat Internetetik azala jaisteko:" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Sartu izen berria erreprodukzio-zerrenda honentzat" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Sartu artista edo etiketa bat Last.fm irratia entzuten hasteko." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1996,7 @@ msgstr "Sartu bilaketa terminoak iTunes dendan podcast-ak bilatzeko" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Sartu bilaketa terminoak gpodder.net-en podcast-ak bilatzeko" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Sartu bilaketa-terminoak hemen" @@ -1935,11 +2005,11 @@ msgstr "Sartu bilaketa-terminoak hemen" msgid "Enter the URL of an internet radio stream:" msgstr "Sartu interneteko irratiko jarioaren URLa:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Sartu karpetaren izena" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1947,21 +2017,22 @@ msgstr "" msgid "Entire collection" msgstr "Bilduma osoa" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekualizadorea" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "--log-levels *:1-en baliokidea" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "--log-levels *:3-en baliokidea" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Errorea" @@ -1969,38 +2040,38 @@ msgstr "Errorea" msgid "Error connecting MTP device" msgstr "Errorea MTP gailua konektatzean" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Errorea abestiak kopiatzean" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Errorea abestiak ezabatzean" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Errorea Spotify plugin-a deskargatzean" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Errorea %1 kargatzean" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Errorea di.fm erreprodukzio-zerrenda kargatzean" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Errorea %1 prozesatzean: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Errorea audio CDa kargatzean" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Inoiz erreproduzitutakoak" @@ -2032,7 +2103,7 @@ msgstr "6 orduro" msgid "Every hour" msgstr "Orduro" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Album edo CUE orri bereko pisten artean izan ezik" @@ -2044,7 +2115,7 @@ msgstr "" msgid "Expand" msgstr "Zabaldu" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "%1-(e)an iraungitzen da" @@ -2065,36 +2136,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2175,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Pista gelditzerakoan iraungitu" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Iraungitzea" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Iraungitzearen iraupena" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Direktorioa ezin izan da eskuratu" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Podcast-ak ezin izan dira lortu" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Podcast-a ezin izan da kargatu" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "RSS kanal honen XML ezin izan da parseatu" @@ -2148,11 +2219,11 @@ msgstr "RSS kanal honen XML ezin izan da parseatu" msgid "Fast" msgstr "Azkarra" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Gogokoenak" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Pista gogokoenak" @@ -2168,11 +2239,11 @@ msgstr "Automatikoki eskuratu" msgid "Fetch completed" msgstr "Eskuraketa eginda" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Errorea azalak eskuratzean" @@ -2180,7 +2251,7 @@ msgstr "Errorea azalak eskuratzean" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Fitxategi-luzapena" @@ -2188,19 +2259,23 @@ msgstr "Fitxategi-luzapena" msgid "File formats" msgstr "Fitxategi-formatuak" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Fitxategi-izena" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Fitx.-izena (bidea gabe)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Fitxategi-tamaina" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2285,7 @@ msgstr "Fitxategi-mota" msgid "Filename" msgstr "Fitxategi-izena" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fitxategiak" @@ -2218,15 +2293,19 @@ msgstr "Fitxategiak" msgid "Files to transcode" msgstr "Transkodetzeko fitxategiak" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Ezarritako irizpideak betetzen dituzten bildumako abestiak bilatu." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Abestiaren hatz-marka eskuratzen" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Amaitu" @@ -2234,7 +2313,7 @@ msgstr "Amaitu" msgid "First level" msgstr "Lehen maila" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2329,12 @@ msgstr "Lizentzia arrazoiengatik Spotify-ren euskarria aparteko plugin batean da msgid "Force mono encoding" msgstr "Mono kodeketa behartu" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Gailua ahaztu" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2349,7 @@ msgstr "Gailua ahazteak berau zerrenda honetatik ezabatuko du eta Clementine-k a #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2377,23 @@ msgstr "Laginketa-abiadura" msgid "Frames per buffer" msgstr "Koadroak buffer-eko" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Lagunak" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Izoztuta" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Baxu osoak" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Baxu osoak + Altua" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Altu osoak" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer audio motorea" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Orokorra" @@ -2330,30 +2401,30 @@ msgstr "Orokorra" msgid "General settings" msgstr "Ezarpen orokorrak" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Generoa" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "URL bat lortu erreprodukzio-zerrenda hau Grooveshark-en partekatzeko" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "URL bat lortu abesti hau Grooveshark-en partekatzeko" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Grooveshark-eko abesti ezagunak eskuratzen" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Kateak eskuratzen" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Jarioak eskuratzen" @@ -2365,11 +2436,11 @@ msgstr "Izendatu:" msgid "Go" msgstr "Joan" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Hurrengo erreprodukzio-zerrendara joan" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Aurreko erreprodukzio-zerrendara joan" @@ -2377,7 +2448,7 @@ msgstr "Aurreko erreprodukzio-zerrendara joan" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2458,7 @@ msgstr "%2-(e)tik %1 azal eskuratu dira (%3-(e)k huts egin dute)" msgid "Grey out non existent songs in my playlists" msgstr "Existitzen ez diren abestiak ilundu erreprodukzio-zerrendetan" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2466,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark-eko saio-hasierak huts egin du" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark-eko erreprodukzio-zerrendaren URLa" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark irratia" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark-eko kantaren URLa" @@ -2411,44 +2482,44 @@ msgstr "Grooveshark-eko kantaren URLa" msgid "Group Library by..." msgstr "Bilduma taldekatu honela..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Taldekatu" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Taldekatu albumaren arabera" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Taldekatu artistaren arabera" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Taldekatu artista/albumaren arabera" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Taldekatu artista/urtea - albumaren arabera" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Taldekatu genero/albumaren arabera" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Taldekatu generoa/artista/albumaren arabera" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML orriak ez du inongo RSS kanalik" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2457,7 +2528,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP proxy-a" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Pozik" @@ -2473,25 +2544,25 @@ msgstr "Hardware-informazioa gailua konektaturik dagoenean bakarrik dago eskurag msgid "High" msgstr "Altua" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Altua (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Altua (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Orduak" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hipnoapoa" @@ -2503,15 +2574,15 @@ msgstr "Ez daukat Magnatune-ko konturik" msgid "Icon" msgstr "Ikonoa" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikonoak goian" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Abestia identifikatzen" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2592,24 @@ msgstr "Aurrera jarraitzen bada, gailua astiro arituko da eta bertara kopiatutak msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Podcast-aren URLa jakinez gero, sartu eta sakatu joan" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Artisten izenetako \"The\"-ak ezikusi" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Irudiak (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Irudiak (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "%1 egunetan" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 asteetan" @@ -2549,7 +2620,7 @@ msgid "" "time a song finishes." msgstr "Modu dinamikoan pista berriak aukeratu eta gehituko dira erreprodukzio-zerrendara abesti bat amaitzen den bakoitzean." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Sarrera-ontzia" @@ -2561,36 +2632,36 @@ msgstr "Jakinarazpenean albumaren azala gehitu" msgid "Include all songs" msgstr "Kanta guztiak erantsi" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Bolumena % 4 igo" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Bolumena igo" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indexatzen: %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informazioa" @@ -2598,55 +2669,55 @@ msgstr "Informazioa" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Txertatu" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Instalatuta" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Osotasunaren egiaztapena" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internet hornitzaileak" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "API gako baliogabea" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Formatu baliogabea" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Metodo baliogabea" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parametro baliogabeak" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Baliabide baliogabea zehaztua" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Zerbitzu baliogabea" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Sesio-gako baliogabea" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Erabiltzaile-izen edota pasahitz baliogabea" @@ -2654,42 +2725,42 @@ msgstr "Erabiltzaile-izen edota pasahitz baliogabea" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo-ko pista entzunenak" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo-ko kantarik onenak" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo-ko hilabeteko kantarik onenak" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo-ko asteko kantarik onenak" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo datu-basea" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Erreproduzitzen ari den pistara jauzi egin" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Sakatu botoiak segundu %1-ez..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Sakatu botoiak %1 segunduz..." @@ -2698,23 +2769,24 @@ msgstr "Sakatu botoiak %1 segunduz..." msgid "Keep running in the background when the window is closed" msgstr "Jarraitu atzealdean exekutatzen leihoa ixten denean" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Jatorrizko fitxategiak mantendu" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Katakumeak" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Hizkuntza" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Eramangarria/Aurikularrak" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Areto handia" @@ -2722,58 +2794,24 @@ msgstr "Areto handia" msgid "Large album cover" msgstr "Albumeko azal handia" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Albo-barra handia" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Erreproduzitutako azkena" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm-ko irrati pertsonalizatua: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm-ko bilduma -%1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Mix irratia - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm auzokoen irratia - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm irratia - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm-ko %1-ren antzekoak diren artistak" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm etiketaren irratia: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm lanpetuta dago, saiatu minutu batzuk barru" @@ -2781,11 +2819,11 @@ msgstr "Last.fm lanpetuta dago, saiatu minutu batzuk barru" msgid "Last.fm password" msgstr "Last.fm-ko pasahitza" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm erreprodukzio kontagailua" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm etiketak" @@ -2793,28 +2831,24 @@ msgstr "Last.fm etiketak" msgid "Last.fm username" msgstr "Last.fm-ko erabiltzaile-izena" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm-ko wikia" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Gutxien gogoko diren pistak" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Hutsik utzi lehenetsirako. Adibideak: \"/dev/dsp\", \"front\", e.a." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Iraupena" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bilduma" @@ -2822,24 +2856,24 @@ msgstr "Bilduma" msgid "Library advanced grouping" msgstr "Bildumaren taldekatze aurreratua" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Bildumaren berreskaneoaren abisua" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Bilatu bilduman" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limiteak" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Entzun Grooveshark-eko abestiak aurretik entzun duzunean oinarrituz" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Zuzenean" @@ -2851,15 +2885,15 @@ msgstr "Kargatu" msgid "Load cover from URL" msgstr "Kargatu azala URLtik" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Kargatu azala URLtik..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Kargatu azala diskotik" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Kargatu azala diskotik..." @@ -2867,84 +2901,89 @@ msgstr "Kargatu azala diskotik..." msgid "Load playlist" msgstr "Kargatu erreprodukzio-zerrenda" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Kargatu erreprodukzio-zerrenda..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm irratia kargatzen" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "MTP gailua kargatzen" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod-eko datu-basea kargatzen" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Erreprodukzio-zerrenda adimenduna kargatzen" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Abestiak kargatzen" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Jarioa kargatzen" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Pistak kargatzen" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Pisten informazioa kargatzen" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Kargatzen..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Fitxategiak/URLak kargatzen ditu, momentuko erreprodukzio-zerrenda ordezkatuz" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Saio-hasiera" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Saio hasieraren huts egitea" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Epe luzerako predikzio profila (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Oso gustukoa" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Baxua (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Baxua (256x256)" @@ -2956,12 +2995,17 @@ msgstr "Konplexutasun baxuko profila (LC)" msgid "Lyrics" msgstr "Letrak" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "%1-eko letrak" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3017,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2989,7 +3033,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune deskarga" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune deskarga eginda" @@ -2997,15 +3041,20 @@ msgstr "Magnatune deskarga eginda" msgid "Main profile (MAIN)" msgstr "Profil nagusia (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Egin ezazu!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Erreprodukzio-zerrenda eskuragarri egin lineaz-kanpo" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Gaizki eratutako erantzuna" @@ -3018,15 +3067,15 @@ msgstr "Eskuzko proxy konfigurazioa" msgid "Manually" msgstr "Eskuz" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabrikatzailea" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Entzunda bezala markatu" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Berri bezala markatu" @@ -3038,17 +3087,21 @@ msgstr "Bilaketa-termino guztiak parekatu (AND)" msgid "Match one or more search terms (OR)" msgstr "Bilaketa-termin bat edo gehiago parekatu (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Bit-tasa maximoa" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Ertaina (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Ertaina (512x512)" @@ -3060,11 +3113,15 @@ msgstr "Bazkidetza mota" msgid "Minimum bitrate" msgstr "Bit-tasa minimoa" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "projectM-ko aurre-ezarpenak falta dira" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modeloa" @@ -3072,20 +3129,20 @@ msgstr "Modeloa" msgid "Monitor the library for changes" msgstr "Bildumako aldaketen segimendua egin" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono erreprodukzioa" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Hilabete" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Aldarte" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Aldarte-barraren itxura" @@ -3093,15 +3150,19 @@ msgstr "Aldarte-barraren itxura" msgid "Moodbars" msgstr "Aldarte-barra" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Gehien erreproduzitutakoak" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Muntatze-puntua" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Muntatze-puntuak" @@ -3110,7 +3171,7 @@ msgstr "Muntatze-puntuak" msgid "Move down" msgstr "Eraman behera" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Eraman bildumara..." @@ -3119,7 +3180,7 @@ msgstr "Eraman bildumara..." msgid "Move up" msgstr "Eraman gora" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musika" @@ -3127,56 +3188,32 @@ msgstr "Musika" msgid "Music Library" msgstr "Musika-bilduma" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Mututu" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Nire Last.fm bilduma" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Nire Last.fm Mix irratia" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Nire Last.fm-ko auzoa" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Nire Last.fm-ko irrati gomendatua" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Nire Mix irratia" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Nire Musika" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Nire auzoa" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Nire irratia" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Nire gomendioak" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Izena" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Izendapen-aukerak" @@ -3184,23 +3221,19 @@ msgstr "Izendapen-aukerak" msgid "Narrow band (NB)" msgstr "Banda estua (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Auzokoak" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Sareko proxy-a" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Sareko urruneko kontrola" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Inoiz ez" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Inoiz ez erreproduzituak" @@ -3209,21 +3242,21 @@ msgstr "Inoiz ez erreproduzituak" msgid "Never start playing" msgstr "Inoiz ez hasi erreproduzitzen" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Karpeta berria" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Erreprodukzio-zerrenda berria" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Adimendun erreprodukzio-zerrenda berria" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Abesti berriak" @@ -3231,24 +3264,24 @@ msgstr "Abesti berriak" msgid "New tracks will be added automatically." msgstr "Abesti berriak automatikoki gehituko dira." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Pista berrienak" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Hurrengoa" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Hurrengo pista" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Hurrengo astea" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Analizatzailerik ez" @@ -3256,7 +3289,7 @@ msgstr "Analizatzailerik ez" msgid "No background image" msgstr "Atzeko planoko irudirik ez" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3264,7 +3297,7 @@ msgstr "" msgid "No long blocks" msgstr "Bloke luzerik ez" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Ez da bat-etortzerik aurkitu. Garbitu bilaketa-laukia erreprodukzio-zerrenda osoa erakusteko berriro." @@ -3278,11 +3311,11 @@ msgstr "Bloke laburrik ez" msgid "None" msgstr "Bat ere ez" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Aukeraturiko abestietako bat ere ez zen aproposa gailu batera kopiatzeko" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Arrunta" @@ -3290,43 +3323,47 @@ msgstr "Arrunta" msgid "Normal block type" msgstr "Bloke-mota normala" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Ez dago eskuragarri erreprodukzio-zerrenda dinamikoa erabiltzean" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Konektatu gabe" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Ez dago eduki nahikorik" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Zale nahikorik ez" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Kide nahikorik ez" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Auzokide nahikorik ez" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Ez dago instalatua" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Saioa hasi gabe" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Muntatu gabe - klik bikoitza egin muntatzeko" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Jakinarazpen mota" @@ -3339,36 +3376,41 @@ msgstr "Jakinarazpenak" msgid "Now Playing" msgstr "Orain erreproduzitzen" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD aurrebista" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3418,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Lehena bakarrik erakutsi" @@ -3388,23 +3430,23 @@ msgstr "Lehena bakarrik erakutsi" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "%1 nabigatzailean ireki" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Ireki &audio CDa..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "OPML fitxategia ireki" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "OPML fitxategia ireki" @@ -3412,30 +3454,35 @@ msgstr "OPML fitxategia ireki" msgid "Open device" msgstr "Ireki gailua" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Ireki fitxategia..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Google Drive-n iriki" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Ireki erreprodukzio-zerrenda berrian" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Ireki..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Eragiketak huts egin du" @@ -3455,23 +3502,23 @@ msgstr "Aukerak..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Antolatu fitxategiak" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Antolatu fitxategiak..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Fitxategiak antolatzen" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Jatorrizko etiketak" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Bestelako aukerak" @@ -3479,7 +3526,7 @@ msgstr "Bestelako aukerak" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3487,15 +3534,11 @@ msgstr "" msgid "Output options" msgstr "Irteerako aukerak" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Existitzen diren fitxategiak gainidatzi" @@ -3507,15 +3550,15 @@ msgstr "" msgid "Owner" msgstr "Jabea" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Jamendoko katalogoa analizatzen" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Jaia" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3567,20 @@ msgstr "Jaia" msgid "Password" msgstr "Pasahitza" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pausarazi" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Erreprodukzioa pausatu" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pausatua" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3546,34 +3589,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Albo-barra sinplea" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Erreproduzitu" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Erreproduzitu artista edo etiketa" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Erreproduzitu artistaren irratia..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Erreprodukzio kopurua" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Erreproduzitu irrati pertsonalizatua..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Erreproduzitu pausatua badago, pausarazi erreproduzitzen ari bada" @@ -3582,45 +3613,42 @@ msgstr "Erreproduzitu pausatua badago, pausarazi erreproduzitzen ari bada" msgid "Play if there is nothing already playing" msgstr "Erreproduzitu ez badago ezer aurretik erreproduzitzen" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Erreproduzitu etiketaren irratia..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Erreproduzitu erreprodukzio-zerrendako . pista" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Erreproduzitu/Pausarazi" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Erreprodukzioa" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Erreproduzitzailearen aukerak" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Erreprodukzio-zerrenda" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Erreprodukzio-zerrenda amaituta" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Erreprodukzio-zerrendaren aukerak" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Erreprodukzio-zerrenda mota" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Erreprodukzio-zerrendak" @@ -3632,23 +3660,23 @@ msgstr "Mesedez, itxi nabigatzailea eta itzuli Clementine-ra." msgid "Plugin status:" msgstr "Pluginaren egoera:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast-ak" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Abesti ezagunak" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Hilabeteko abesti ezagunak" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Abesti ezagunak gaur" @@ -3657,22 +3685,23 @@ msgid "Popup duration" msgstr "Laster-leihoaren iraupena" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Ataka" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Aurre-anplifikadorea" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Hobespenak" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Hobespenak..." @@ -3708,7 +3737,7 @@ msgstr "Sakatu erabiliko den tekla-konbinazioa" msgid "Press a key" msgstr "Sakatu edozein tekla" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Sakatu %1 egiteko erabiliko den tekla-konbinazioa..." @@ -3719,20 +3748,20 @@ msgstr "OSD itxurosoaren aukerak" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Aurrebista" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Aurrekoa" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Aurreko pista" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Bertsio-informazioa erakutsi" @@ -3740,21 +3769,25 @@ msgstr "Bertsio-informazioa erakutsi" msgid "Profile" msgstr "Profila" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Aurrerapena" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Wiiremote botoia sakatu" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Abestiak ausazko ordenan jarri" @@ -3762,85 +3795,95 @@ msgstr "Abestiak ausazko ordenan jarri" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kalitatea" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Gailua galdekatzen..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Ilara-kudeatzailea" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Aukeraturiko pistak ilaran jarri" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Pista ilaran jarri" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Irratia (ozentasun berdina pista denentzat)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Irratiak" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Euria" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Ausazko bistaratzea" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Oraingo kantari 0 izarretako balioa eman" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Oraingo kantari izar 1eko balioa eman" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Oraingo kantari 2 izarretako balioa eman" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Oraingo kantari 3 izarretako balioa eman" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Oraingo kantari 4 izarretako balioa eman" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Oraingo kantari 5 izarretako balioa eman" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Balioztatzea" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Benetan utzi?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Freskatu" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Katalogoa freskatu" @@ -3848,19 +3891,15 @@ msgstr "Katalogoa freskatu" msgid "Refresh channels" msgstr "Kateak freskatu" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Lagun-zerrenda freskatu" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Irrati-zerrenda freskatu" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Jarioak freskatu" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3872,8 +3911,8 @@ msgstr "Wiimote-aren mugimendua gogoratu" msgid "Remember from last time" msgstr "Azken alditik gogoratu" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Kendu" @@ -3881,7 +3920,7 @@ msgstr "Kendu" msgid "Remove action" msgstr "Kendu ekintza" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Abesti bikoiztuak kendu erreprodukzio-zerrendatik " @@ -3889,73 +3928,77 @@ msgstr "Abesti bikoiztuak kendu erreprodukzio-zerrendatik " msgid "Remove folder" msgstr "Kendu karpeta" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Nire Musikatik kendu" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Kendu gogokoenetatik" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Kendu erreprodukzio-zerrendatik" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Abestiak Nire Musikatik kentzen" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Abestiak gogokoenetatik kentzen" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Berrizendatu \"%1\" erreprodukzio-zerrenda" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Berrizendatu Grooveshark-eko erreprodukzio-zerrenda" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Berrizendatu erreprodukzio-zerrenda" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Berrizendatu erreprodukzio-zerrenda..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Zenbakitu berriro pistak ordena honetan..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Errepikatu" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Errepikatu albuma" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Errepikatu erreprodukzio-zerrenda" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Errepikatu pista" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Ordeztu oraingo erreprodukzio-zerrenda" @@ -3964,15 +4007,15 @@ msgstr "Ordeztu oraingo erreprodukzio-zerrenda" msgid "Replace the playlist" msgstr "Ordeztu erreprodukzio-zerrenda" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Zuriuneak azpimarrekin ordezten ditu" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Errepikatze-irabazia" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3980,24 +4023,24 @@ msgstr "" msgid "Repopulate" msgstr "Birpopulatu" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Berrezarri" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Berrezarri erreprodukzio kopurua" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Mugatu ASCII karaktereetara" @@ -4005,15 +4048,15 @@ msgstr "Mugatu ASCII karaktereetara" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Grooveshark-eko Nire Musikako abestiak berreskuratzen" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Grooveshark-eko abesti gogokoenak eskuratzen" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Grooveshark-eko erreprodukzio-zerrendak eskuratzen" @@ -4033,11 +4076,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4049,25 +4092,25 @@ msgstr "Exekutatu" msgid "SOCKS proxy" msgstr "SOCKS proxy-a" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Kendu gailua arriskurik gabe" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Kopiatu ondoren kendu gailua arriskurik gabe" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Lagintze-tasa" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Lagintze-tasa" @@ -4075,27 +4118,33 @@ msgstr "Lagintze-tasa" msgid "Save .mood files in your music library" msgstr ".mood fitxategiak musika-bilduman gorde" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Gorde albumeko azala" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Gorde azala diskoan..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Gorde irudia" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Gorde erreprodukzio-zerrenda" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Gorde erreprodukzio-zerrenda..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Gorde aurre-ezarpena" @@ -4111,11 +4160,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "Gorde jario hau Internet fitxan" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Pistak gordetzen" @@ -4127,7 +4176,7 @@ msgstr "Lagintze-tasa eskalagarriaren profila (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Puntuazioa" @@ -4135,34 +4184,38 @@ msgstr "Puntuazioa" msgid "Scrobble tracks that I listen to" msgstr "Entzuten ditudan pistak partekatu" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Bilatu" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Bilatu Icecast irratiak" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Bilatu Jamendo-n" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Bilatu Magnatune-n" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Subsonic-en bilatu" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Bilatu albumetako azalak" @@ -4182,21 +4235,21 @@ msgstr "iTunes-en bilatu" msgid "Search mode" msgstr "Bilaketa-modua" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Bilaketa-aukerak" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Bilaketaren emaitzak" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Bilaketa terminoak" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Grooveshark-en bilatzen" @@ -4204,27 +4257,27 @@ msgstr "Grooveshark-en bilatzen" msgid "Second level" msgstr "Bigarren maila" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Atzera egin" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Aurrera egin" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Oraingo pistan mugitu posizio erlatibo baten arabera" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Oraingo pistan mugitu posizio absolutu baten arabera" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Hautatu dena" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Ez hautatu ezer" @@ -4232,7 +4285,7 @@ msgstr "Ez hautatu ezer" msgid "Select background color:" msgstr "Hautatu atzeko planoaren kolorea:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Hautatu atzeko planoko irudia" @@ -4248,7 +4301,7 @@ msgstr "Aukeratu aurreko planoaren kolorea:" msgid "Select visualizations" msgstr "Hautatu bistaratzeak" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Hautatu bistaratzeak..." @@ -4256,7 +4309,7 @@ msgstr "Hautatu bistaratzeak..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Serie-zenbakia" @@ -4268,51 +4321,51 @@ msgstr "" msgid "Server details" msgstr "Zerbitzariaren xehetasunak" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Zerbitzua lineaz kanpo" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Ezarri %1 \"%2\"-(e)ra..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Ezarri bolumena ehuneko -ra" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Ezarri balioa aukeratutako pista guztiei..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Lasterbidea" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "%1-(r)en laster-tekla" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "%1-(r)en laster-tekla existitzen da jada" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Erakutsi" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Erakutsi OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Erakutsi oraingo pistaren animazio distiratsua" @@ -4340,15 +4393,15 @@ msgstr "Erakutsi laster-leihoa sistema-erretiluan" msgid "Show a pretty OSD" msgstr "Erakutsi OSD itxurosoa" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Erakutsi egoera-barraren gainean" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Erakutsi abesti guztiak" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Erakutsi abesti guztia" @@ -4360,32 +4413,36 @@ msgstr "Erakutsi azalak bilduman" msgid "Show dividers" msgstr "Erakutsi zatitzaileak" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Erakutsi tamaina osoan..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Erakutsi fitxategi arakatzailean..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Erakutsi hainbat artista" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Aldarte-barra erakutsi" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Erakutsi bakarrik errepikapenak" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Erakutsi etiketa gabeak bakarrik" @@ -4394,8 +4451,8 @@ msgid "Show search suggestions" msgstr "Bilaketaren iradokizunak erakutsi" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Erakutsi \"oso gustuko\" eta \"galarazi\" botoiak" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4466,27 @@ msgstr "Erakutsi erretilu-ikonoa" msgid "Show which sources are enabled and disabled" msgstr "Erakutsi zein iturri dauden gaiturik/desgaiturik" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Erakutsi/Ezkutatu" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Ausazkoa" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Albumak nahastu" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Dena nahastu" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Erreprodukzio-zerrenda nahastu" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Album honetako pistak nahastu" @@ -4445,7 +4502,7 @@ msgstr "Saioa itxi" msgid "Signing in..." msgstr "Saioa hasten..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Antzeko artistak" @@ -4457,43 +4514,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Saltatu atzerantz erreprodukzio-zerrendan" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Saltatu kontagailua" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Saltatu aurrerantz erreprodukzio-zerrendan" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Albumaren azal txikia" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Albo-barra txikia" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Erreprodukzio-zerrenda adimenduna" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Erreprodukzio-zerrenda adimendunak" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4501,11 +4566,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Abestiaren informazioa" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Abes. infor." -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonograma" @@ -4525,15 +4590,23 @@ msgstr "Ordenatu generoaren arabera (ospearen arabera)" msgid "Sort by station name" msgstr "Ordenatu irrati izenaren arabera" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Ordenatu abestiak honen arabera" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Ordenatzen" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Iturria" @@ -4549,7 +4622,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify-ko saio-hasiera errorea" @@ -4557,7 +4630,7 @@ msgstr "Spotify-ko saio-hasiera errorea" msgid "Spotify plugin" msgstr "Spotify plugina" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify plugina ez dago instalatuta" @@ -4565,77 +4638,77 @@ msgstr "Spotify plugina ez dago instalatuta" msgid "Standard" msgstr "Estandarra" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Izarduna(k)" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Hasi oraingo erreprodukzio-zerrenda" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Hasi transkodetzen" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Hasi idazten aurreko bilaketa eremuan emaitzak jaso ahal izateko" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 hasten" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Hasten..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Irratiak" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Gelditu" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Ondoren gelditu" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Gelditu pista honen ondoren" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Gelditu erreprodukzioa" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Gelditu oraingo pistaren ondoren" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Geldituta" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Jarioa" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4718,7 @@ msgstr "" msgid "Streaming membership" msgstr "Streaming bazkidetza" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Harpidetutako erreprodukzio-zerrenda" @@ -4653,7 +4726,7 @@ msgstr "Harpidetutako erreprodukzio-zerrenda" msgid "Subscribers" msgstr "Harpidetzak" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4661,12 +4734,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Eginda!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 ondo idatzi da" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Etiketa gomendatuak" @@ -4675,13 +4748,13 @@ msgstr "Etiketa gomendatuak" msgid "Summary" msgstr "Laburpena" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Oso altua (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Oso altua (2048x2048)" @@ -4693,43 +4766,35 @@ msgstr "Onartutako formatuak" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Spotify-ko sarrera-ontzia sinkronizatzen" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Spotify-ko erreprodukzio-zerrenda sinkronizatzen" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Spotify-ko pista izardunak sinkronizatzen" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Sistemako koloreak" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Fitxak goian" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Etiketa" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Etiketa eskuratzailea" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Etiketa-irratia" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Helburu bit-tasa" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4737,11 +4802,11 @@ msgstr "Techno" msgid "Text options" msgstr "Testu-aukerak" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Eskerrak hauei" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "\"%1\" komandoa ezin izan da hasi." @@ -4750,17 +4815,12 @@ msgstr "\"%1\" komandoa ezin izan da hasi." msgid "The album cover of the currently playing song" msgstr "Orain erreproduzitzen ari den kantaren albumaren azala" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "%1 direktorioa ez da baliagarria" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "'%1' erreprodukzio-zerrenda hutsik zegoen edo ezin izan da kargatu." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Bigarren balioak lehenak baino handiagoa izan behar du!" @@ -4768,40 +4828,40 @@ msgstr "Bigarren balioak lehenak baino handiagoa izan behar du!" msgid "The site you requested does not exist!" msgstr "Adierazitako helbidea ez da existitzen!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Adierazitako helbidea ez da irudi bat" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Clementine-ren bertsio berriak bildumaren berreskaneo osoa egin behar du, ondorengo ezaugarri berri hauek direla-eta" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Album honetan beste abesti batzuk daude" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Arazo bat gertatu da gpodder.net-ekin komunikatzerakoan" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Arazo bat egon da Magnatune-ko metadatuak eskuratzean" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Arazo bat gertatu da iTunes dendako erantzuna aztertzerakoan" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4873,13 @@ msgid "" "deleted:" msgstr "Arazoak egon dira abesti batzuk ezabatzean. Hurrengo fitxategiak ezin izan dira ezabatu:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Fitxategi hauek gailutik ezabatuko dira, jarraitu nahi duzu?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4899,13 @@ msgstr "Ezarpen hauek \"Transkodetu musika\" elkarrizketan eta musika gailu bate msgid "Third level" msgstr "Hirugarren maila" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Ekintza honek 150 MB-erainokoa izan daitekeen datu-basea sortuko du. \n Jarraitu nahi duzu?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Album hau ez dago adierazitako formatuan" @@ -4859,11 +4919,11 @@ msgstr "Gailu hau konektatu eta ireki behar da zein fitxategi-formatu onartzen d msgid "This device supports the following file formats:" msgstr "Gailu honek hurrengo fitxategi-formatuak onartzen ditu:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Gailu hau ez da era egokian ibiliko" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Hau MTP gailua da, baina Clementine libmtp euskarri gabe konpilatua dago." @@ -4872,7 +4932,7 @@ msgstr "Hau MTP gailua da, baina Clementine libmtp euskarri gabe konpilatua dago msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Hau iPod bat da, baina Clementine libgpod euskarri gabe konpilatua dago." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4942,33 @@ msgstr "Gailu hau konektatzen duzun lehen aldia da. Clementine-k gailua eskaneat msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Jario hau ordainpeko harpidedunentzat da bakarrik" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Gailu mota hau ez da onartzen :%1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Izenburua" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Grooveshark irratia hasteko, aurretik beste Grooveshark abesti batzuk entzun behar dituzu" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Gaur" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Txandakatu OSD itxurosoa" @@ -4916,27 +4976,27 @@ msgstr "Txandakatu OSD itxurosoa" msgid "Toggle fullscreen" msgstr "Txandakatu pantaila-osoa" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Txandakatu ilara-egoera" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Txandakatu partekatzea" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Txandakatu pantailako bistaratze itxurosoaren ikuspena" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Bihar" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Redirekzio gehiegi" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Pista gogokoenak" @@ -4944,21 +5004,25 @@ msgstr "Pista gogokoenak" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Transferituriko byte-ak guztira" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Eginiko sareko eskaerak guztira" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transkodetu musika" @@ -4970,7 +5034,7 @@ msgstr "Transkodetzearen loga" msgid "Transcoding" msgstr "Transkodeketa" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "%1 fitxategi %2 hari erabiliz transkodetzen" @@ -4979,11 +5043,11 @@ msgstr "%1 fitxategi %2 hari erabiliz transkodetzen" msgid "Transcoding options" msgstr "Transkodetze-aukerak" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4991,72 +5055,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Itzali" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URLa(k)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Banda ultra zabala (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Ezin izan da %1 deskargatu (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Ezezaguna" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Eduki-mota ezezaguna" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Errore ezezaguna" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Ezarri gabeko azala" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Harpidetza kendu" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Hurrengo Kontzertuak" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Grooveshark erreprodukzio-zerrenda eguneratu" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Eguneratu podcast guztiak" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Eguneratu bildumako aldatutako karpetak" @@ -5064,7 +5128,7 @@ msgstr "Eguneratu bildumako aldatutako karpetak" msgid "Update the library when Clementine starts" msgstr "Eguneratu bilduma Clementine abiaraztean" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Podcast hau eguneratu" @@ -5072,21 +5136,21 @@ msgstr "Podcast hau eguneratu" msgid "Updating" msgstr "Eguneratzen" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "%1 eguneratzen" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "%1 eguneratzen..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Bilduma eguneratzen" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Erabilera" @@ -5094,11 +5158,11 @@ msgstr "Erabilera" msgid "Use Album Artist tag when available" msgstr "Bildumaren artista etiketa erabili erabilgarri bada" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Erabili Gnome-ren laster-teklak" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Erabili errepikatze-irabaziaren metadatuak eskuragarri daudenean" @@ -5118,7 +5182,7 @@ msgstr "Erabili kolore-multzo pertsonalizatua" msgid "Use a custom message for notifications" msgstr "Erabili mezu pertsonalizatua jakinarazpenetan" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5158,20 +5222,20 @@ msgstr "Erabili sistemaren proxy-ezarpenak" msgid "Use volume normalisation" msgstr "Erabili bolumenaren normalizazioa" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Erabilia" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "%1 erabiltzaileak ez du Grooveshark Anywhere konturik" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Erabiltzaile-interfazea" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5257,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Bit-tasa aldakorra" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Hainbat artista" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "%1 bertsioa" @@ -5211,7 +5275,7 @@ msgstr "Ikusi" msgid "Visualization mode" msgstr "Bistaratze-modua" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Bistaratzeak" @@ -5219,11 +5283,15 @@ msgstr "Bistaratzeak" msgid "Visualizations Settings" msgstr "Bistarate-ezarpenak" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Ahotsaren jardueraren detekzioa" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "%1 bolumena" @@ -5241,11 +5309,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5321,7 @@ msgstr "Wav" msgid "Website" msgstr "Webgunea" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Aste" @@ -5279,32 +5347,32 @@ msgstr "Zergatik ez probatu..." msgid "Wide band (WB)" msgstr "Banda zabala (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "%1 Wii urruneko kontrola: aktibaturik" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "%1 Wii urruneko kontrola: konektaturik" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "%1 Wii urruneko kontrola: bateria oso gutxi (% %2) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "%1 Wii urruneko kontrola: desaktibaturik" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "%1 Wii urruneko kontrola: deskonektaturik" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "%1 Wii urruneko kontrola: bateria gutxi (% %2)" @@ -5325,7 +5393,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5333,25 +5401,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Beste abestiak ere Hainbat artistara mugitzea nahi duzu?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Berreskaneo osoa orain egitea nahi duzu?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Erabiltzailea edo pasahitza ez da zuzena." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5431,11 @@ msgstr "Urtea" msgid "Year - Album" msgstr "Urtea - Albuma" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Urte" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Atzo" @@ -5375,13 +5443,13 @@ msgstr "Atzo" msgid "You are about to download the following albums" msgstr "Ondorengo albumak deskargatzekotan zaude" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5459,12 @@ msgstr "" msgid "You are not signed in." msgstr "Ez duzu saioa hasi" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "%1 modura hasi duzu saioa" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Saioa hasi duzu." @@ -5404,13 +5472,13 @@ msgstr "Saioa hasi duzu." msgid "You can change the way the songs in the library are organised." msgstr "Bildumako abestiak antolaturik dauden era alda dezakezu." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Doan entzun dezakezu kontua izan gabe, baina Premium bazkideek kalitate altuagoko jarioak entzun ditzakete iragarkirik gabe." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5488,6 @@ msgstr "Magnatune-ko abestiak doan entzun ditzakezu kontua izan gabe. Bazkidetza msgid "You can listen to background streams at the same time as other music." msgstr "Beste musikarekin batera hondoko-jarioak entzun ditzakezu." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Pistak doan partekatu ditzakezu baina ordainpeko harpidedunek bakarrik entzun dezakete Last.fm irratia Clementine-tik." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Zure Wii urruneko kontrola erabili dezakezu Clementine kontrolatzeko. Ikus Clementine-ren wikiko orria informazio gehiagorako. \n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Ez daukazu Grooveshark Anywhere konturik." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Ez daukazu Spotify Premium konturik." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Ez duzu harpidetza aktiborik" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Spotify-ko saioa itxi egin da, sar ezazu pasahitza berriro ezarpenetako elkarrizketan." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Spotify-ko saioa itxi egin da, sar ezazu pasahitza berriro." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Pista hau oso gustukoa duzu" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5546,11 @@ msgstr "Lasterbide globalak Clementinen erabiltzeko, sistemaren hobespenetan \"< msgid "You will need to restart Clementine if you change the language." msgstr "Hizkuntzaz aldatuz gero, Clementine berrabiarazi behar da." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Ezingo duzu Last.fm-ko irratirik entzun, ez baitzara Last.fm-ko harpideduna." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Last.fm-ko egiaztagiriak ez ziren egokiak" @@ -5489,42 +5558,43 @@ msgstr "Last.fm-ko egiaztagiriak ez ziren egokiak" msgid "Your Magnatune credentials were incorrect" msgstr "Magnatuneko egiaztagiriak ez ziren egokiak" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Bilduma hutsik dago!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Irrati-jarioak" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Partekatzeak: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Zure sistema ez da bateragarria OpenGL-rekin, bistaratzeak erabilezinak daude." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Erabiltzaile-izena edo pasahitza ez zen zuzena." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "Gehitu %n abesti" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "ondoren" @@ -5544,19 +5614,19 @@ msgstr "automatikoa" msgid "before" msgstr "aurretik" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "tartean" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "handienak aurretik" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "honakoa du" @@ -5566,20 +5636,20 @@ msgstr "honakoa du" msgid "disabled" msgstr "desgaituta" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "%1 diskoa" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "ez du honakoa" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "honakoarekin amaitzen da" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "berdin" @@ -5587,11 +5657,11 @@ msgstr "berdin" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net direktorioa" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "handiagoa baino" @@ -5599,54 +5669,55 @@ msgstr "handiagoa baino" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "azkenean" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "gutxiago baino" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "luzeenak arinago" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "%n abesti mugitu" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "berrienak arinago" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "ez berdin" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "azkenean ez" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "honetan ez" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "zaharrenak arinago" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "honen barruan" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "aukerak" @@ -5658,36 +5729,37 @@ msgstr "" msgid "press enter" msgstr "enter sakatu" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "%n abesti ezabatu" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "laburrenak arinago" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "abestiak nahastu" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "txikienak arinago" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "abestiak ordenatu" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "honekin hasten da" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "gelditu" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "%1 pista" diff --git a/src/translations/fa.po b/src/translations/fa.po index 5a62e081f..39e8ca74c 100644 --- a/src/translations/fa.po +++ b/src/translations/fa.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Persian (http://www.transifex.com/projects/p/clementine/language/fa/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Language: fa\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +44,9 @@ msgstr " روز" msgid " kbps" msgstr " ک.ب.د.ث" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " م.ث" @@ -59,11 +59,16 @@ msgstr " پوینت" msgid " seconds" msgstr " ثانیه" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " آهنگ‌ها" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 آلبوم" @@ -73,12 +78,12 @@ msgstr "%1 آلبوم" msgid "%1 days" msgstr "%1 روز" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 روز پیش" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 در %2" @@ -88,48 +93,48 @@ msgstr "%1 در %2" msgid "%1 playlists (%2)" msgstr "%1 لیست‌پخش (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 گزیده از" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 آهنگ" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 آهنگ" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 آهنگ پیدا شد" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 آهنگ پیدا شد (نمایش %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 ترک" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 ترابرده شد" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: پیمانه‌ی ویموتدو" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 شنوندگان دیگر" @@ -143,18 +148,21 @@ msgstr "%L1 همه‌ی پخش‌ها" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n ناکام ماند" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n پایان یافت" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n بازمانده" @@ -166,24 +174,24 @@ msgstr "&چیدمان متن" msgid "&Center" msgstr "&میانه" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&سفارشی‌" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "ا&فزونه‌ها" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&راهنما" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&پنهاندن %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&پنهاندن..." @@ -191,23 +199,23 @@ msgstr "&پنهاندن..." msgid "&Left" msgstr "&چپ‌" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "آ&هنگ" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&هیچ‌کدام‌" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&لیست‌پخش" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&برونرفتن" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "سبک &تکرار" @@ -215,23 +223,23 @@ msgstr "سبک &تکرار" msgid "&Right" msgstr "&راست‌" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "سبک &درهم" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&کشیدن ستون‌ها برای پرکردن پنجره" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&ابزارها‌" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(متفاوت میان چند آهنگ)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...و دیگر گسترش‌دهنده‌های آماروک" @@ -251,14 +259,10 @@ msgstr "0px" msgid "1 day" msgstr "۱ روز" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "۱ ترک" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +272,7 @@ msgstr "128k MP3" msgid "40%" msgstr "٪۴۰" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "۵۰ ترک تصادفی" @@ -276,12 +280,6 @@ msgstr "۵۰ ترک تصادفی" msgid "Upgrade to Premium now" msgstr "هم‌اکنون به اکانت برتر پیشرفت بده" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +290,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

اگر تیک نباشد، کلمنتاین تلاش می‌کند که پایه‌های و آمار شما را تنها در پرونده‌ی جدای پایگاه‌داده ذخیره کند و پرونده‌های شما را دگرش نمی‌دهد.

اگر تیک باشد، دگرش‌ها را در پرونده‌ها و پایگاه‌داده همزمان ذخیره می‌کند.

خواهشمندم آگاه باشید که این کار شاید برای هر سبک پرونده‌ای کارا نباشد، و از آنجا که استانداردی برای انجام این کار دردست نیست، دیگر پخش‌کننده‌ها شاید نتوانند آنها را بخوانند.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +309,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

نشان‌ها با % شروع می‌شود، به عنوان مثال: %هنرمند %آلبوم %عنوان

\n\n

اگر قسمتی از متن را احاطه کنید که دارای نشان‌هایی درون آکولاد باش، آن نشان‌ها پنهان می‌شوند اگر نشان تهی باشد.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "نیاز به اکانت «گرووشارک همه‌جا» دارد." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "نیاز به اکانت برتر اسپاتیفای دارد." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "یک مشتری می‌تواند بپیوندد تنها زمانی که کد درست وارد شود." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "یک لیست‌پخش هوشمند، لیستی پویا از آهنگ‌هایی است که از کتابخانه‌ی شما می‌آیند. گونه‌های مختلفی از لیست‌پخش‌های هوشمند وجود دارند که به شما امکان گزینش آهنگ‌ها را به روشهای گوناگون می‌دهند." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "آهنگ‌هایی به این لیست‌پخش افزوده می‌شوند که این ویژگیها را داشته باشند." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "الف-ی" @@ -351,36 +360,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "همه‌ی افتخار برای HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "درباره‌ی %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "درباره‌ی کلمنتاین..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "درباره‌ی کیو‌ت..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "ویژگی‌های اکانت" @@ -392,11 +400,15 @@ msgstr "ویژگی‌های اکانت (برتر)" msgid "Action" msgstr "کنش" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "پویا/ناپویا سازی وای‌ریموت" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "افزودن پادکست" @@ -412,39 +424,39 @@ msgstr "افزودن خط نو اگر توسط آگاه‌ساز پشتیبان msgid "Add action" msgstr "افزودن کنش" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "افزودن جریان دیگر..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "افزودن پوشه..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "افزودن پرونده" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "افزودن پرونده..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "افزودن پرونده‌ها به تراکد" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "افزودن پوشه" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "افزودن پوشه..." @@ -456,11 +468,11 @@ msgstr "افزودن پوشه‌ی نو..." msgid "Add podcast" msgstr "افزودن پادکست" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "افزودن پادکست..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "افزودن عبارت جستجو" @@ -524,6 +536,10 @@ msgstr "افزودن شماره‌ی پرش آهنگ" msgid "Add song title tag" msgstr "افزودن برچسب عنوان آهنگ" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "افزودن برچسب ترک آهنگ" @@ -532,22 +548,34 @@ msgstr "افزودن برچسب ترک آهنگ" msgid "Add song year tag" msgstr "افزودن برچسب سال آهنگ" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "افزودن جریان..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "افزودن به دلخواه گرووشارک" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "افزودن به لیست‌پخش‌های گرووشارک" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "افزودن به لیست‌پخش دیگر" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "افزودن به لیست‌پخش" @@ -556,6 +584,10 @@ msgstr "افزودن به لیست‌پخش" msgid "Add to the queue" msgstr "افزودن به صف" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "افزودن کنش ویموتدو" @@ -585,15 +617,15 @@ msgstr "افزوده شده در امروز" msgid "Added within three months" msgstr "افزوده شده در سه ماه گذشته" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "افزودن آهنگ به آهنگ‌های من" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "اضافه کردن آهنگ به پسندیده‌ها" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "دسته‌بندی پیشرفته..." @@ -601,12 +633,12 @@ msgstr "دسته‌بندی پیشرفته..." msgid "After " msgstr "پس از" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "پس از کپی‌کردن..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +646,11 @@ msgstr "پس از کپی‌کردن..." msgid "Album" msgstr "آلبوم" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "آلبوم (بلندی صدای ایده‌آل برای همه‌ی ترک‌ها)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +660,36 @@ msgstr "هنرمند آلبوم" msgid "Album cover" msgstr "جلد آلبوم" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "دانستنی‌های آلبوم در جامندو..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "آلبوم‌های با جلد" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "آلبوم‌های بدون جلد" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "همه‌ی پرونده‌ها(*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "همه‌ی افتخار برای Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "همه‌ی آلبوم‌ها" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "همه‌ی هنرمندان" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "همه‌ی پرونده‌ها (*)" @@ -665,19 +698,19 @@ msgstr "همه‌ی پرونده‌ها (*)" msgid "All playlists (%1)" msgstr "همه‌ی لیست‌پخش‌ها (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "همه‌ی برگردانان" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "همه‌ی ترک‌ها" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -702,30 +735,30 @@ msgstr "پنجره اصلی را همواره بنمایان" msgid "Always start playing" msgstr "همواره آغاز به پخش می‌کند" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "کلمنتاین به افزونه‌ی دیگری برای استفاده‌ی اسپاتیفای نیاز دارد. آیا می‌خواهید این افزونه را بارگیری و نصب نمایید؟" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "مشکلی هنگام فراخوانی پایگاه داده‌ی آی‌تیون پیش آمد" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "مشکلی در نوشتن ابرداده در '%1' پیش آمد" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "خطای ناشناخته‌ای پدید آمد." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "و:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "خشمگین" @@ -734,13 +767,13 @@ msgstr "خشمگین" msgid "Appearance" msgstr "شمایل" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "پیوست پرونده/نشانی اینترنتی به لیست‌پخش" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "پیوست به لیست‌پخش جاری" @@ -748,52 +781,47 @@ msgstr "پیوست به لیست‌پخش جاری" msgid "Append to the playlist" msgstr "پیوست به لیست‌پخش" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "فشرده‌سازی برای چیده نشدن" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "آیا مطمئنید که می‌خواهید پیش‌نشانده‌ی «%1» را پاک کنید؟" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "آیا مطمئن هستید که می‌خواهید این لیست‌پخش را پاک کنید." -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "آیا مطمئنید که می‌خواهید آماره‌ی این آهنگ را پاک کنید؟" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "هنرمند" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "اطلاعات هنرمند" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "رادیوی هنرمند" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "برچسب هنرمند" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "حرف اول هنرمند" @@ -801,9 +829,13 @@ msgstr "حرف اول هنرمند" msgid "Audio format" msgstr "گونه‌ی آوا" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "ناکامی در شناسایی" @@ -811,7 +843,7 @@ msgstr "ناکامی در شناسایی" msgid "Author" msgstr "نویسنده" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "نویسندگان‌" @@ -827,7 +859,7 @@ msgstr "به‌روز رسانی خودکار" msgid "Automatically open single categories in the library tree" msgstr "رسته‌های تنها را خودکار در درخت کتابخانه باز کن" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "در دسترس" @@ -835,15 +867,15 @@ msgstr "در دسترس" msgid "Average bitrate" msgstr "میانگین ضرباهنگ" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "میانگین اندازه‌ی فرتور" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "پادکست بی‌بی‌سی" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "ض.د.د" @@ -864,7 +896,7 @@ msgstr "فرتور پس‌زمینه" msgid "Background opacity" msgstr "تاری پس‌زمینه" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "پشتیبان‌گیری از پایگاه داده" @@ -872,11 +904,7 @@ msgstr "پشتیبان‌گیری از پایگاه داده" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "تحریم" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "آنالیزور میله‌ای" @@ -896,18 +924,17 @@ msgstr "رفتار" msgid "Best" msgstr "بهترین" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "بیوگرافی از %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "ضرب آهنگ" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +942,12 @@ msgstr "ضرب آهنگ" msgid "Bitrate" msgstr "ضرباهنگ" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "آنالیزور بلوکی" @@ -931,7 +963,7 @@ msgstr "اندازه تیرگی" msgid "Body" msgstr "بدنه" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "آنالیزور نرده‌ای" @@ -945,11 +977,11 @@ msgstr "باکس" msgid "Browse..." msgstr "مرور..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "میان‌گیری" @@ -961,43 +993,66 @@ msgstr "اما این سرچشمه‌ها ناپویا هستند:" msgid "Buttons" msgstr "دکمه‌ها" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "پشتیبانی از سیاهه" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "کنسل" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "تغییر جلد هنری" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "تغییر اندازه‌ی قلم..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "تغییر سبک تکرار" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "تغییر میانبر..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "تغییر سبک درهم" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "تغییر زبان" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1062,19 @@ msgstr "تغییر ترجیح‌های بازپخش مونو برای آهنگ msgid "Check for new episodes" msgstr "بررسی برای داستان‌های تازه" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "بررسی به‌روز رسانی..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "گزینش نام برای لیست‌پخش هوشمند" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "گزینش خودکار" @@ -1031,11 +1090,11 @@ msgstr "گزینش قلم..." msgid "Choose from the list" msgstr "گزینش از لیست" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "گزینش روش مرتب‌سازی لیست و تعداد آهنگهای آن" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "گزیدن پوشه‌ی بارگیری پادکست" @@ -1044,7 +1103,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "پایگاه اینترنتی را برگزینید که می‌خواهید کلمنتاین متن آهنگ‌ها را بارگیری کند" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "کلاسیک" @@ -1052,17 +1111,17 @@ msgstr "کلاسیک" msgid "Cleaning up" msgstr "پالایش" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "پاک کن" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "پاک کردن لیست‌پخش" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "کلمنتاین" @@ -1075,8 +1134,8 @@ msgstr "خطای کلمنتاین" msgid "Clementine Orange" msgstr "پرتقالی کلمنتاین" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "فرتورسازی کلمنتاین" @@ -1098,9 +1157,9 @@ msgstr "کلمنتاین می‌تواند آهنگ‌های را پخش کند msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "کلمنتاین می‌تواند آهنگ‌های را پخش کند که شما در درایو گوگل بارگذاشته‌اید" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "کلمنتاین می‌تواند آهنگ‌های را پخش کند که شما در ابونتو وان بارگذاشته‌اید" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1172,13 @@ msgid "" "an account." msgstr "کلمنتاین می‌تواند لیست هموندی‌های شما را با رایانه‌های دیگر و کاربری‌های پادکست همگام کند. یک اکانت بسازید." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "کلمنتاین نمی‌تواند هیچ فرتورسازی projectM را بارگذاری کند. درستی نصب کلمنتاین را بررسی کنید." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "به واسطه‌ی مشکل در ارتباط، کلمنتاین نمی‌تواند وضعیت هموندی شما را بیاورد. ترک‌های پخش‌شده، ذخیره، و در آینده به لست‌‌اف‌ام فرستاده می‌شوند." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "نمایشگر فرتور کلمنتاین" @@ -1138,11 +1190,11 @@ msgstr "کلمنتاین نتوانست دستاوردهای این پرونده msgid "Clementine will find music in:" msgstr "پوشه‌ای که کلمنتاین در آن به دنبال آهنگ می‌گردد:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "برای افزودن آهنگ‌ها، اینجا را بفشارید" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1204,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "برای سویچ بین زمان رفته و زمان باقیمانده، اینجا را کلیک کنید" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1222,19 @@ msgstr "بستن" msgid "Close playlist" msgstr "بستن لیست‌پخش" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "بستن فرتورسازی" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "بستن این پنجره، بارگیری را کنسل می‌کند." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "بستن این پنجره، جستجوی جلد آلبوم‌ها را کنسل می‌کند." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "باشگاه" @@ -1187,73 +1242,78 @@ msgstr "باشگاه" msgid "Colors" msgstr "رنگ" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "لیست مجزا بوسیله‌ی ویرگول از کلاس:طبقه، طبقه ۰-۳ است" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "توضیح" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "تکمیل خودکار برچسب‌ها" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "تکمیل خودکار برچسب‌ها..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "تنظیم‌کننده" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "پیکربندی %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "پیکربندی گرووشارک..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "پیکربندی لست‌‌اف‌ام..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "پیکربندی مگناتیون..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "پیکربندی میان‌برها" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "پیکربندی اسپاتیفای..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "پیکربندی ساب‌سونیک..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "پیکربندی جستجوی سراسری..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "پیکربندی کتابخانه..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "پیکربندی پادکست..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "پیکربندی..." @@ -1261,11 +1321,11 @@ msgstr "پیکربندی..." msgid "Connect Wii Remotes using active/deactive action" msgstr "کنترل Wii را با استفاده از کنش پویا/ناپویا وصل کنید" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "اتصال دستگاه" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "اتصال به اسپاتیفای" @@ -1275,12 +1335,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "پیشانه" @@ -1296,17 +1360,21 @@ msgstr "برگرداندن تمام آهنگ‌ها" msgid "Convert any music that the device can't play" msgstr "برگردان تمام آهنگ‌هایی که دستگاه نمی‌تواند پخش کند" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "کپی به کلیپ‌بورد" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "کپی‌کردن در دستگاه..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "کپی‌کردن در کتابخانه..." @@ -1314,156 +1382,152 @@ msgstr "کپی‌کردن در کتابخانه..." msgid "Copyright" msgstr "کپی‌رایت" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "نمی‌توانم به ساب‌سونیک بپیوندم، نشانی سرور را بررسی کنید. نمونه: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "نمی‌توانم عنصر «%1» از GStream را بسازم - مطمئن شوید که همه‌ی افزونه‌های مورد نیاز GStream را نصب کرده‌اید" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "نمی‌توانم موکسر را برای %1 پیدا کنم، بررسی کنید که افزونه‌ی مناسب GStream را نصب کرده‌اید" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "نمی‌توانم رمزگذاری برای %1 پیدا کنم، بررسی کنید که افزونه‌ی مناسب GStream را نصب کرده‌اید" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "نمی‌توانم ایستگاه رادیویی لست‌‌اف‌ام را بارگذاری کنم" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "نمی‌توانم پرونده‌ی بروندادی %1 را باز کنم" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "مدیریت جلد" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "جلد هنری را از فرتور نشانده شده بردار" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "جلد هنری از %1 خودکار فراخوانی شد" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "جلد هنری دستی بازنشانده شد" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "جلد هنری نشانده نشد" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "جلد هنری از %1 نشانده شد" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "جلدها از %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "افزودن لیست‌پخش تازه‌ی گرووشارک" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "پژمردن آهنگ زمانی که ترک‌ها خودکار تغییر می‌کنند" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "پژمردن آهنگ زمانی که ترک‌ها دستی تغییر می‌کنند" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1535,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "سفارشی" @@ -1483,54 +1547,50 @@ msgstr "فرتور دلخواه:" msgid "Custom message settings" msgstr "تنظیم پیام سفارشی" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "رادیوی سفارشی" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "سفارشی..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "مسیر DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "رقص" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "خرابی در پایگاه داده شناسایی شد. خواهشمندم دستور کار زدودن این خطا را در این نشانی بخوانید: https://code.google.com/p/clementine-player/wiki/DatabaseCorruption" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "تاریخ ساخت" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "تاریخ بازسازی" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "روز" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "پیش‌&فرض" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "کاهش صدا ۴٪" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "صدا را درصد کاهش بده" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "کاهش صدا" @@ -1538,6 +1598,11 @@ msgstr "کاهش صدا" msgid "Default background image" msgstr "فرتور پس‌زمینه‌ی پیشفرض" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "پیش‌نشان‌ها" @@ -1546,30 +1611,30 @@ msgstr "پیش‌نشان‌ها" msgid "Delay between visualizations" msgstr "تأخیر بین فرتورسازیها" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "پاک‌کردن" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "پاک‌کردن لیست پخش گرووشارک" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "پاک‌کردن دانستنی‌های بارگیری شده" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "پاک کردن پرونده‌ها" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "پاک کردن از دستگاه..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "پاک کردن از دیسک..." @@ -1577,31 +1642,31 @@ msgstr "پاک کردن از دیسک..." msgid "Delete played episodes" msgstr "پاک‌کردن داستانهای پخش‌شده" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "پاک کردن پیش‌نشانده" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "پاک کردن لیست‌پخش هوشمند" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "پاک کردن اصل پرونده‌ها" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "پاک کردن پرونده‌ها" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "صف‌بندی دوباره‌ی ترک‌های برگزیده" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "صف‌بندی دوباره‌ی ترک" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "مقصد" @@ -1610,7 +1675,7 @@ msgstr "مقصد" msgid "Details..." msgstr "جزئیات..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "دستگاه" @@ -1622,15 +1687,15 @@ msgstr "ویژگی‌های دستگاه" msgid "Device name" msgstr "نام دستگاه" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "ویژگی‌های دستگاه..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "‌دستگاه‌ها" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1667,12 +1732,17 @@ msgstr "مدت ناپویا‌سازی" msgid "Disable moodbar generation" msgstr "ناپویا کردن ساخت میله‌ی مود" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "ناپویا شد" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "دیسک" @@ -1682,15 +1752,15 @@ msgid "Discontinuous transmission" msgstr "ارسال ناپیوسته" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "گزینه‌های نمایش" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "نمایش نمایش پرده‌ای" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "انجام وارسی دوباره‌ی کامل کتابخانه" @@ -1702,27 +1772,27 @@ msgstr "هیچ آهنگی را تبدیل نکن" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "تکرار نکن" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "در هنرمندان گوناگون نشان نده" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "پخش مرتب" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "نایست!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "برای گشودن دو بار کلیک کنید" @@ -1730,12 +1800,13 @@ msgstr "برای گشودن دو بار کلیک کنید" msgid "Double clicking a song will..." msgstr "دو بار کلیک یک آهنگ باعث..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "بارگیری %n داستان" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "بارگیری پوشه" @@ -1751,7 +1822,7 @@ msgstr "بارگیری هموندی" msgid "Download new episodes automatically" msgstr "بارگیری خودکار داستان‌های تازه" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "صف بارگیری" @@ -1759,15 +1830,15 @@ msgstr "صف بارگیری" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "بارگیری این آلبوم" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "بارگیری این آلبوم..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "بارگیری این داستان" @@ -1775,7 +1846,7 @@ msgstr "بارگیری این داستان" msgid "Download..." msgstr "بارگیری..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "درحال بارگیری (%1%)..." @@ -1784,23 +1855,23 @@ msgstr "درحال بارگیری (%1%)..." msgid "Downloading Icecast directory" msgstr "بارگیری پوشه‌ی آیس‌کست" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "بارگیری کاتالوگ جامندو" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "بارگیری کاتالوگ مگناتیون" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "بارگیری افزونه‌ی اسپاتیفای" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "بارگیری ابرداده" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "برای مکان‌گذاری دوباره بکشید" @@ -1820,20 +1891,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "سبک دینامیک پویاست" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "درهم‌ریختن تصادفی دینامیک" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "ویرایش لیست‌پخش هوشمند..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "ویرایش برچسب..." @@ -1845,16 +1916,16 @@ msgstr "ویرایش برچسب‌ها" msgid "Edit track information" msgstr "ویرایش دانستنی‌های ترک" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "ویرایش دانستنی‌های ترک..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "ویرایش دانستنی‌های ترک‌ها..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "ویرایش...." @@ -1862,6 +1933,10 @@ msgstr "ویرایش...." msgid "Enable Wii Remote support" msgstr "پویا‌سازی پشتیبانی کنترل Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "پویاسازی برابرساز" @@ -1876,7 +1951,7 @@ msgid "" "displayed in this order." msgstr "در پایین سرچشمه‌ها را پویا کنید تا در جستجو منظور شوند. دستاوردها به این ترتیب نمایانده می‌شوند." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "پویا/ناپویاسازی واکشی لست‌‌اف‌ام" @@ -1904,15 +1979,10 @@ msgstr "برای بارگیری جلد از اینترنت، یک نشانی ا msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "نامی برای این لیست‌پخش وارد کنید" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "یک هنرمند یا برچسبوارد کنید تا به رادیوی لست‌‌اف‌ام گوش کنید." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1996,7 @@ msgstr "برای یافتن پادکست در فروشگاه آی‌تیون، msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "برای یافتن پادکست در gpodder.net، عبارت جستجو را در پایین وارد کنید" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "واژه‌های جستجو را در اینجا وارد کنید" @@ -1935,11 +2005,11 @@ msgstr "واژه‌های جستجو را در اینجا وارد کنید" msgid "Enter the URL of an internet radio stream:" msgstr "نشانی اینترنتی یک ایستگاه رادیویی اینترنتی را وارد کنید:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "نام پوشه را وارد کنید" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1947,21 +2017,22 @@ msgstr "" msgid "Entire collection" msgstr "همه‌ی مجموعه" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "برابرساز" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "برابر است با --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "برابر است با --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "خطا" @@ -1969,38 +2040,38 @@ msgstr "خطا" msgid "Error connecting MTP device" msgstr "خطا در اتصال به دستگاه MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "خطا در کپی کردن آهنگ‌ها" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "خطا در پاک کردن آهنگ‌ها" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "خطا در بارگیری افزونه‌ی Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "خطا در فراخوانی %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "خطا در بارگیری لیست پخش di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "خطای پردازش %1:%2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "خطا هنگام فراخوانی سی‌دی آوایی" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "همواره پخش‌شده" @@ -2032,7 +2103,7 @@ msgstr "هر ۶ ساعت" msgid "Every hour" msgstr "هر ساعت" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "به جز بین ترک‌ها یک آلبوم یا یک سیاهه" @@ -2044,7 +2115,7 @@ msgstr "" msgid "Expand" msgstr "گسترش" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "در %1 انقضا می‌یابد" @@ -2065,36 +2136,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2175,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "پژمردن هنگام ایست یک ترک" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "پژمردن" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "زمان پژمردن" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "ناتوان در واکشی پوشه" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "ناتوان در واکشی پادکست" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "ناتوان در بارگذاری پادکست" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "ناتوان در موشکافی XML برای خوراک RSS" @@ -2148,11 +2219,11 @@ msgstr "ناتوان در موشکافی XML برای خوراک RSS" msgid "Fast" msgstr "تند" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "دلخواه" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "ترک‌های برگزیده" @@ -2168,11 +2239,11 @@ msgstr "واکشی خودکار" msgid "Fetch completed" msgstr "واکشی کامل شد" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "واکشی کتابخانه‌ی ساب‌سونیک" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "خطای واکشی جلد" @@ -2180,7 +2251,7 @@ msgstr "خطای واکشی جلد" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "پسوند پرونده" @@ -2188,19 +2259,23 @@ msgstr "پسوند پرونده" msgid "File formats" msgstr "گونه‌ی پرونده" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "نام پرونده" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "نام پرونده (بدون مسیر)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "اندازه پرونده" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2285,7 @@ msgstr "گونه‌ی پرونده" msgid "Filename" msgstr "نام‌پرونده" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "پرونده‌ها" @@ -2218,15 +2293,19 @@ msgstr "پرونده‌ها" msgid "Files to transcode" msgstr "پرونده‌های برای تراکد" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "یافتن آهنگ‌های در کتابخانه که با معیارهای شما همخوانی دارند." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "انگشت‌نگاری آهنگ" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "پایان" @@ -2234,7 +2313,7 @@ msgstr "پایان" msgid "First level" msgstr "طبقه‌ی اول" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2329,12 @@ msgstr "به دلایل اجازه‌نامه، پشتیبانی اسپاتیف msgid "Force mono encoding" msgstr "واداشتن به رمزینه‌ی مونو" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "فراموشیدن دستگاه" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2349,7 @@ msgstr "انصراف یک دستگاه آن را از این لیست پاک م #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2377,23 @@ msgstr "آهنگ فریم" msgid "Frames per buffer" msgstr "فریم در هر بافر" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "دوستان" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "منجمد" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "باس کامل" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "باس کامل + لرزش" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "لرزش کامل" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "موتور آوای GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "عمومی" @@ -2330,30 +2401,30 @@ msgstr "عمومی" msgid "General settings" msgstr "تنظیم‌های عمومی" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "ژانر" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "دریافت یک نشانی اینترنتی برای اشتراک این لیست‌پخش گرووشارک" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "دریافت یک نشانی اینترنتی برای اشتراک این آهنگ گرووشارک" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "دریافت آهنگ‌های مردمی گرووشارک" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "دریافت کانال" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "گرفتن جریان‌ها" @@ -2365,11 +2436,11 @@ msgstr "نامی به آن دهید:" msgid "Go" msgstr "برو" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "برو به نوار پسین لیست‌پخش" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "برو به نوار پیشین لیست‌پخش" @@ -2377,7 +2448,7 @@ msgstr "برو به نوار پیشین لیست‌پخش" msgid "Google Drive" msgstr "درایو گوگل" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2458,7 @@ msgstr "%1 از %2 جلدها دریافت شد (%3 ناموفق)" msgid "Grey out non existent songs in my playlists" msgstr "آهنگ‌های ناموجود لیست‌پخش‌های من را خاکستری کن" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "گرووشارک" @@ -2395,15 +2466,15 @@ msgstr "گرووشارک" msgid "Grooveshark login error" msgstr "خطا در ورود به گرووشارک" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "نشانی اینترنتی لیست‌پخش گرووشارک" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "رادیوی گرووشارک" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "نشانی اینترنتی آهنگ‌های گرووشارک" @@ -2411,44 +2482,44 @@ msgstr "نشانی اینترنتی آهنگ‌های گرووشارک" msgid "Group Library by..." msgstr "کتابخانه را گروه‌بندی کن برپایه‌ی..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "گروه‌بندی برپایه‌ی" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "آلبوم" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "هنرمند" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "هنرمند/آلبوم" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "هنرمند/سال - آلبوم" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "ژانر/آلبوم" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "ژانر/هنرمند/آلبوم" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "برگه‌ی اچ‌تی‌ام‌ال بدون هیچ‌گونه خوراک آراس‌اس است" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2457,7 +2528,7 @@ msgstr "" msgid "HTTP proxy" msgstr "پراکسی HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "خوشحال" @@ -2473,25 +2544,25 @@ msgstr "اطلاعات سخت‌افزاری تنها در صورتی در دس msgid "High" msgstr "زیاد" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "زیاد (%1 ف.د.ث)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "زیاد (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "ساعت" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2503,15 +2574,15 @@ msgstr "اکانت مگناتیون ندارم" msgid "Icon" msgstr "آیکون" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "آیکون در بالا" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "تشخیص آهنگ" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2592,24 @@ msgstr "اگر ادامه دهید، این دستگاه آهسته کار خو msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "اگر نشانی اینترنتی یک پادکست را می‌دانید، آن را در پایین وارد کنید و «برو» را فشار دهید." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "صرف نظر از «The» در نام هنرمندان" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "تصاویر (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "تصاویر (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "در %1 روز " -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "در %1 هفته" @@ -2549,7 +2620,7 @@ msgid "" "time a song finishes." msgstr "در سبک دینامیک پس از پایان هر آهنگ، ترک‌های تازه برگزیده و به لیست‌پخش افزوده می‌شوند." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "صندوق ورودی" @@ -2561,36 +2632,36 @@ msgstr "آلبوم هنری را در آگاه‌ساز قرار بده" msgid "Include all songs" msgstr "دربر داشتن همه‌ی آهنگها" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "ویرایش پروتکل REST ناسازگار است. مشتری باید پیشرفت کند. " -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "ویرایش پروتکل REST ناسازگار است. سرور باید پیشرفت کند." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "بلندی صدا را ٪۴ بیفزا" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "افزایش بلندی درصد" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "افزایش صدا" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "نمایه‌گذاری %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "اطلاعات" @@ -2598,55 +2669,55 @@ msgstr "اطلاعات" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "قرار دادن..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "نصب شد" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "بررسی درستی" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "اینترنت" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "فراهم‌کنندگان اینترنت" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "کلید API نامعتبر" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "قالب نامعتبر" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "روش نامعتبر" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "پارامترهای نامعتبر" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "منابع مشخص‌شده نامعتبرند" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "سرویس نامعتبر" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "کلید جلسه‌ی نامعتبر" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "شناسه و/یا گذرواژه‌ی نادرست" @@ -2654,42 +2725,42 @@ msgstr "شناسه و/یا گذرواژه‌ی نادرست" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "جامندو" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "ترک‌های بیشتر شنیده شده‌ی جامندو" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "ترک‌های برتر جامندو" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "ترک‌های برتر ماه جامندو" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "ترک‌های برتر هفته‌ی جامندو" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "پایگاه داده‌ی جامندو" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "پرش به ترک در حال پخش" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "دکمه‌ها را %1 ثانیه نگه دار..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "دکمه‌ها را %1 ثانیه نگه دار..." @@ -2698,23 +2769,24 @@ msgstr "دکمه‌ها را %1 ثانیه نگه دار..." msgid "Keep running in the background when the window is closed" msgstr "پخش را در پس‌زمینه ادامه بده زمانی که پنجره بسته می‌شود" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "اصل پرونده‌ها را نگه دار" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "توله گربه‌ها" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "زبان" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "لپتاپ/هدفون" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "سالن بزرگ" @@ -2722,58 +2794,24 @@ msgstr "سالن بزرگ" msgid "Large album cover" msgstr "جلد آلبوم بزرگ" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "میله‌ی کناری بزرگ" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "پخش پایانی" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "لست‌‌اف‌ام" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "رادیوی سفارشی لست‌‌اف‌ام: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "کتابخانه لست‌‌اف‌ام- %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "رادیوی میکس لست‌‌اف‌ام- %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "رادیوی همسایه لست‌‌اف‌ام- %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "ایستگاه رادیویی لست‌‌اف‌ام- %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "هنرمندهایی مانند %1 در لست‌‌اف‌ام" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "برچسب رادیویی لست‌‌اف‌ام: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "لست‌‌اف‌ام در حال پخش است، پس از چند دقیقه دوباره تلاش کنید" @@ -2781,11 +2819,11 @@ msgstr "لست‌‌اف‌ام در حال پخش است، پس از چند د msgid "Last.fm password" msgstr "گذرواژه‌ی لست‌‌اف‌ام" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "لست‌‌اف‌ام شمارش پخش‌شده‌ها" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "برچسب لست‌‌اف‌ام" @@ -2793,28 +2831,24 @@ msgstr "برچسب لست‌‌اف‌ام" msgid "Last.fm username" msgstr "شناسه‌ی لست‌‌اف‌ام" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "ویکی لست‌‌اف‌ام" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "ترک‌های کمتر برگزیده" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "برای پیش‌نشان، تهی رها کنید. مثال: \"/dev/dsp\"، \"front\"، و ..." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "طول" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "کتابخانه" @@ -2822,24 +2856,24 @@ msgstr "کتابخانه" msgid "Library advanced grouping" msgstr "گروه‌بندی پیشرفته‌ی کتابخانه" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "آگاه‌سازی پویش دوباره‌ی کتابخانه" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "جستجوی کتابخانه" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "محدودیت‌ها" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "شنیدن آهنگ‌های گرووشارک برپایه‌ی چیزهایی که پیش از این شنیده‌اید" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "زنده" @@ -2851,15 +2885,15 @@ msgstr "بارگیری" msgid "Load cover from URL" msgstr "بارگیری جلدها از اینترنت" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "بارگیری جلدها از اینترنت..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "بارگیری جلد از دیسک" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "بارگیری جلدها از دیسک" @@ -2867,84 +2901,89 @@ msgstr "بارگیری جلدها از دیسک" msgid "Load playlist" msgstr "بارگیری لیست‌پخش" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "بارگیری لیست‌پخش..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "بارگیری رادیوی لست‌‌اف‌ام" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "بارگیری دستگاه MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "بارگیری پایگاه داده‌ی آی‌پاد" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "بارگیری لیست‌پخش هوشمند" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "بارگیری آهنگ‌ها" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "بارگیری جریان" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "بارگیری ترک" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "بارگیری اطلاعات ترک‌ها" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "در حال بارگیری..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "بارگیری پرونده‌ها/نشانی‌ها، جانشانی دوباره‌ی لیست‌پخش جاری" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "ورود به سیستم" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "ورود شکست خورد" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "نمایه‌ی پیش‌بینی بلندمدت" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "عشق" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "پایین (%1 ف.د.ث)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "پایین (256x256)" @@ -2956,12 +2995,17 @@ msgstr "نمایه‌ی با پیچیدگی کم (LC)" msgid "Lyrics" msgstr "متن آهنگ" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "متن آهنگ از %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3017,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "مگناتیون" @@ -2989,7 +3033,7 @@ msgstr "مگناتیون" msgid "Magnatune Download" msgstr "بارگیری مگناتیون" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "بارگیری مگناتیون پایان یافت" @@ -2997,15 +3041,20 @@ msgstr "بارگیری مگناتیون پایان یافت" msgid "Main profile (MAIN)" msgstr "نمایه‌ی اصلی (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "همین‌جوریش کن!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "لیست‌پخش را بیرون‌خط در دسترس بگذار" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "پاسخ ناهنجار" @@ -3018,15 +3067,15 @@ msgstr "پیکربندی دستی پراکسی" msgid "Manually" msgstr "دستی" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "تولید‌کننده" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "نشان‌گذاری شنیده شده" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "نشان‌گذاری تازه" @@ -3038,17 +3087,21 @@ msgstr "همخوانی همه‌ی واژه‌های جستجو (و)" msgid "Match one or more search terms (OR)" msgstr "همخوانی یک یا بیشتر از یک واژه‌ی جستجو (یا)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "بیشترین ضرباهنگ" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "میانه (%1 ف.د.ث)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "میانه (512x512)" @@ -3060,11 +3113,15 @@ msgstr "گونه‌ی هموندی" msgid "Minimum bitrate" msgstr "کمترین ضرباهنگ" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "نبود پیش‌نشان‌های projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "مدل" @@ -3072,20 +3129,20 @@ msgstr "مدل" msgid "Monitor the library for changes" msgstr "رسد کتابخانه برای تغییرات" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "پخش مونو" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "ماه" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "مود" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "شمایل میله‌ی مود" @@ -3093,15 +3150,19 @@ msgstr "شمایل میله‌ی مود" msgid "Moodbars" msgstr "میله‌های مود" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "بیشترین پخش‌شده‌ها" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "سوارگاه" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "سوارگاه‌ها" @@ -3110,7 +3171,7 @@ msgstr "سوارگاه‌ها" msgid "Move down" msgstr "پایین بردن" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "جابه‌جایی به کتابخانه..." @@ -3119,7 +3180,7 @@ msgstr "جابه‌جایی به کتابخانه..." msgid "Move up" msgstr "بالا بردن" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "آهنگ" @@ -3127,56 +3188,32 @@ msgstr "آهنگ" msgid "Music Library" msgstr "کتابخانه‌ی آهنگ" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "بی‌صدا" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "کتابخانه‌ی لست‌‌اف‌ام من" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "رادیوی میکس لست‌‌اف‌ام من" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "همسایه‌ی لست‌‌اف‌ام من" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "رادیوهای پیشنهادی لست‌‌اف‌ام من" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "رادیوی میکس من" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "آهنگ‌های من" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "همسایه‌ی من" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "ایستگاه رادیویی من" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "پیشنهادهای من" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "نام" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "گزینه‌های نام‌گذاری" @@ -3184,23 +3221,19 @@ msgstr "گزینه‌های نام‌گذاری" msgid "Narrow band (NB)" msgstr "نوار باریک (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "همسایه‌ها" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "پیشکار پراکسی" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "کنترل از راه دور شبکه " -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "هرگز" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "هرگز پخش‌نشده" @@ -3209,21 +3242,21 @@ msgstr "هرگز پخش‌نشده" msgid "Never start playing" msgstr "هرگز آغاز به پخش نمی‌کند" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "پوشه‌ی تازه" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "لیست‌پخش تازه" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "لیست‌پخش هوشمند تازه..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "آهنگ‌‌های تازه" @@ -3231,24 +3264,24 @@ msgstr "آهنگ‌‌های تازه" msgid "New tracks will be added automatically." msgstr "ترک‌های تازه خودکار اضافه می‌شوند." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "تازه‌ترین ترک‌ها" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "پسین" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "ترک پسین" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "هفته‌ی پسین" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "بدون آنالیزور" @@ -3256,7 +3289,7 @@ msgstr "بدون آنالیزور" msgid "No background image" msgstr "بدون فرتور پس‌زمینه" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3264,7 +3297,7 @@ msgstr "" msgid "No long blocks" msgstr "بدون بلوک‌های بلند" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "همخوانیی پیدا نشد. جعبه‌های جستجو را پاک کنید تا همه‌ی لیست‌پخش‌ها دوباره نمایش داده شوند." @@ -3278,11 +3311,11 @@ msgstr "بدون بلوک‌های کوتاه" msgid "None" msgstr "هیچ‌کدام" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "هیچ‌کدام از آهنگ‌های برگزیده مناسب کپی کردن در دستگاه نیستند" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "نرمال" @@ -3290,43 +3323,47 @@ msgstr "نرمال" msgid "Normal block type" msgstr "گونه‌ی بلوک نرمال" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "مهیا نیست زمانی که از یک لیست‌پخش دینامیک استفاده می‌کنید" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "متصل نیست" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "بدون محتوای کافی" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "بدون هوادار کافی" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "بدون عضو کافی" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "بدون همسایه‌ی کافی" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "نصب نشده" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "وارد نشده‌اید" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "سوار نشده است - دو بار فشار دهید تا سوار شود" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "گونه‌ی آگاه‌سازی‌ها" @@ -3339,36 +3376,41 @@ msgstr "آگاه‌سازی‌ها" msgid "Now Playing" msgstr "در حال پخش" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "پیش‌مشاهده‌ی OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3418,11 @@ msgid "" "192.168.x.x" msgstr "اجازه دسترسی به آی پی هایی ار بازه: \n 10.x.x.x \n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "تنها ابتدا را نمایش بده" @@ -3388,23 +3430,23 @@ msgstr "تنها ابتدا را نمایش بده" msgid "Opacity" msgstr "تاری" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "گشودن %1 در مرورگر" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "گشودن &سی‌دی آوایی..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "گشودن پرونده‌ی اوپی‌ام‌ال" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "گشودن پرونده‌ی اوپی‌ام‌ال..." @@ -3412,30 +3454,35 @@ msgstr "گشودن پرونده‌ی اوپی‌ام‌ال..." msgid "Open device" msgstr "گشودن دستگاه" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "گشودن پرونده..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "گشوده در درایو گوگل" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "گشودن در لیست‌پخش تازه شود" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "گشودن..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "شکست عملیات" @@ -3455,23 +3502,23 @@ msgstr "گزینه‌ها..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "سازماندهی پرونده‌ها" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "سازماندهی پرونده‌ها..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "پرونده‌های سازماندهی شونده" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "برچسب‌های اصلی" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "گزینه‌های دیگر" @@ -3479,7 +3526,7 @@ msgstr "گزینه‌های دیگر" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3487,15 +3534,11 @@ msgstr "" msgid "Output options" msgstr "گزینه‌های بروندادی" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "رونویسی پرونده‌های موجود" @@ -3507,15 +3550,15 @@ msgstr "" msgid "Owner" msgstr "دارنده" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "بررسی کاتالوگ جامندو" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "مهمانی" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3567,20 @@ msgstr "مهمانی" msgid "Password" msgstr "گذرواژه" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "درنگ" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "درنگ پخش" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "درنگ‌شده" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3546,34 +3589,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "میله‌کنار ساده" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "پخش" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "پخش هنرمند یا برچسب" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "پخش رادیوی هنرمند..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "شمار پخش" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "پخش رادیوی دلخواه..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "پخش در صورت ایست، درنگ در صورت پخش" @@ -3582,45 +3613,42 @@ msgstr "پخش در صورت ایست، درنگ در صورت پخش" msgid "Play if there is nothing already playing" msgstr "آغاز به پخش می‌کند اگر چیزی در حال پخش نیست" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "پخش رادیوی برچسب..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "ترک -ام در لیست‌پخش را پخش کن" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "پخش/درنگ" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "بازپخش" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "گزینه‌های پخش‌کننده" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "لیست‌پخش" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "لیست‌پخش پایان یافت" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "گزینه‌های لیست‌پخش" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "سبک لیست‌پخش" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "لیست‌های پخش" @@ -3632,23 +3660,23 @@ msgstr "خواهشمندم مرورگر را ببندید و به کلمنتای msgid "Plugin status:" msgstr "وضعیت افزونه" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "پادکست" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "پاپ" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "آهنگ‌های مردمی" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "ترانه‌های محبوب ماه" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "ترانه‌های محبوب امروز" @@ -3657,22 +3685,23 @@ msgid "Popup duration" msgstr "پنجرک" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "درگاه" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "پیش‌تقویت" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "تنظیم‌ها" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "تنظیم‌ها..." @@ -3708,7 +3737,7 @@ msgstr "یک ترکیب از دکمه‌ها را فشار دهید برای ا msgid "Press a key" msgstr "کلیدی را فشار دهید" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "یک ترکیب از دکمه‌ها را فشار دهید برای استفاده در %1..." @@ -3719,20 +3748,20 @@ msgstr "گزینه‌های زیبای OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "پيش‌نمايش" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "پیشین" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "ترک پیشین" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "اطلاعات ویرایش را چاپ کن" @@ -3740,21 +3769,25 @@ msgstr "اطلاعات ویرایش را چاپ کن" msgid "Profile" msgstr "نمایه" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "پیشرفت" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "دکمه‌ی کنترل Wii را فشار دهید" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "آهنگ‌ها را به طور تصادفی بچین" @@ -3762,85 +3795,95 @@ msgstr "آهنگ‌ها را به طور تصادفی بچین" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "کیفیت" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "جستجوی دستگاه..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "مدیر به‌خط کردن" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "به‌خط کردن ترک‌های گزیده" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "به‌خط کردن ترک" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "رادیو (بلندی یکسان برای همه‌ی ترک‌ها)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "رادیوها" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "باران" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "فرتورسازی تصادفی" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "رتبه‌ی آهنگ جاری را صفر ستاره کن" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "رتبه‌ی آهنگ جاری را یک ستاره کن" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "رتبه‌ی آهنگ جاری را دو ستاره کن" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "رتبه‌ی آهنگ جاری را سه ستاره کن" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "رتبه‌ی آهنگ جاری را چهار ستاره کن" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "رتبه‌ی آهنگ جاری را پنج ستاره کن" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "رتبه‌بندی" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "واقعا کنسل شود؟" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "نوسازی" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "بازخوانی کاتالوگ" @@ -3848,19 +3891,15 @@ msgstr "بازخوانی کاتالوگ" msgid "Refresh channels" msgstr "بازخوانی کانالها" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "نوسازی لیست دوستان" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "بازخوانی لیست ایستگاه‌ها" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "نوسازی جریان‌ها" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "رگه" @@ -3872,8 +3911,8 @@ msgstr "دورکنترل تابی Wii را به‌یاد بیاور" msgid "Remember from last time" msgstr "از بار پایانی به‌یاد بیاور" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "پاک کردن" @@ -3881,7 +3920,7 @@ msgstr "پاک کردن" msgid "Remove action" msgstr "پاک کردن عملیات" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "پاک‌کردن تکراری‌ها از لیست‌پخش" @@ -3889,73 +3928,77 @@ msgstr "پاک‌کردن تکراری‌ها از لیست‌پخش" msgid "Remove folder" msgstr "پاک کردن پوشه" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "پاک‌کردن از آهنگ‌های من" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "پاک‌کردن از دلخواه" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "از لیست‌پخش پاک کن" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "پاک‌کردن آهنگ از آهنگ‌های من" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "پاک‌کردن آهنگ از دلخواه‌ها" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "نام‌گردانی لیست‌پخش «%1»" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "نام‌گردانی لیست‌پخش گرووشارک" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "لیست‌پخش را دوباره نامگذاری کن" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "لیست‌پخش را دوباره نامگذاری کن..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "ترک‌ها را به این ترتیب دوباره شماره‌گذاری کن..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "تکرار" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "تکرار آلبوم" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "تکرار لیست‌پخش" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "تکرار ترک" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "دوباره جانشانی لیست‌پخش جاری" @@ -3964,15 +4007,15 @@ msgstr "دوباره جانشانی لیست‌پخش جاری" msgid "Replace the playlist" msgstr "دوباره جانشانی لیست‌پخش شود" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "فاصله‌ها را با زیرخط جانشانی کن" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "پخش دوباره‌ی دستاورد" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3980,24 +4023,24 @@ msgstr "" msgid "Repopulate" msgstr "ساکن شدن دوباره" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "بازنشانی" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "بازنشانی شمار پخش" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "محدود به حروف اَسکی کن" @@ -4005,15 +4048,15 @@ msgstr "محدود به حروف اَسکی کن" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "بازبینی آهنگ‌های «آهنگ‌های من» از گرووشارک" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "بازبینی آهنگ‌های دلخواه گرووشارک" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "بازبینی لیست‌پخش‌های گرووشارک" @@ -4033,11 +4076,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "راک" @@ -4049,25 +4092,25 @@ msgstr "انجام" msgid "SOCKS proxy" msgstr "پراکسی ساکس" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "دستگاه را با امنیت پاک کن" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "دستگاه را پس از کپی، با امنیت پاک کن" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "الگوی ضرباهنگ" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "ضرباهنگ‌الگو" @@ -4075,27 +4118,33 @@ msgstr "ضرباهنگ‌الگو" msgid "Save .mood files in your music library" msgstr "ذخیره‌ی پرونده‌ی .mod در کتابخانه‌ی آهنگ‌های شما" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "ذخیره‌ی جلد آلبوم" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "در حال ذخیره‌ی جلد در دیسک" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "ذخیره‌ی فرتور" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "ذخیره‌ی لیست‌پخش" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "ذخیره‌ی لیست‌پخش..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "ذخیره‌ی بازنشانده" @@ -4111,11 +4160,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "ذخیره‌ی این جریان در باریکه‌ی اینترنت" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "ذخیره‌ی ترک‌ها" @@ -4127,7 +4176,7 @@ msgstr "نمایه‌ی الگوی ضرباهنگ سنجه‌پذیر (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "امتیاز" @@ -4135,34 +4184,38 @@ msgstr "امتیاز" msgid "Scrobble tracks that I listen to" msgstr "وارانی ترک‌هایی که گوش می‌دهم" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "جستجو" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "جستجوی ایستگاه‌های آیس‌کست" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "جستجوی جامندو" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "جستجوی مگناتیون" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "جستجوی ساب‌سونیک" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "جستجوی جلد آلبوم..." @@ -4182,21 +4235,21 @@ msgstr "جستجوی آی‌تیون" msgid "Search mode" msgstr "سبک جستجو" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "گزینه‌های جستجو" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "دستاورد جستجو" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "عبارات جستجو" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "جستجو در گرووشارک" @@ -4204,27 +4257,27 @@ msgstr "جستجو در گرووشارک" msgid "Second level" msgstr "مرتبه‌ی دوم" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "جستجوی پس‌گرد" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "جستجوی پیش‌گرد" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "جستجوی ترک در حال پخش بوسیله‌ی مقداری نسبی" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "جستجوی ترک در حال پخش به یک جایگاه ویژه" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "گزینش همه" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "برگزیدن هیچ‌کدام" @@ -4232,7 +4285,7 @@ msgstr "برگزیدن هیچ‌کدام" msgid "Select background color:" msgstr "رنگ پس‌زمینه را برگزینید:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "فرتور پس‌زمینه را برگزینید" @@ -4248,7 +4301,7 @@ msgstr "گزینش رنگ پیش‌زمینه:" msgid "Select visualizations" msgstr "گزینش فرتورسازها" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "گزینش فرتورسازها..." @@ -4256,7 +4309,7 @@ msgstr "گزینش فرتورسازها..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "شماره سریال" @@ -4268,51 +4321,51 @@ msgstr "نشانی سرور" msgid "Server details" msgstr "جزئیات سرور" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "سرویس برون‌خط" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 را برابر \"%2‌\"قرار بده..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "بلندی صدا را برابر درصد قرار بده" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "این مقدار را برای همه‌ی ترک‌های گزیده قرار بده..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "میان‌بر" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "میان‌بر برای %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "میان‌بر برای %1 از پیش وجود دارد" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "نمایش" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "نمایش OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "انیمیشنی درخشان در ترک جاری نمایش بده" @@ -4340,15 +4393,15 @@ msgstr "نمایش یک پنجرک در سینی سیستم" msgid "Show a pretty OSD" msgstr "نمایش یک OSD زیبا" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "نمایش در بالای میله‌ی وضعیت" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "نمایش همه‌ی آهنگ‌ها" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "نمایش همه‌ی آهنگ‌ها" @@ -4360,32 +4413,36 @@ msgstr "نمایش جلد هنری در کتابخانه" msgid "Show dividers" msgstr "نمایش جداسازها" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "نمایش اندازه‌ی کامل..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "نمایش در مرورگر پرونده..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "نمایش در هنرمندان گوناگون" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "نمایش میله‌مود" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "نمایش تنها تکراری‌ها" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "نمایش تنها بی‌برچسب‌ها" @@ -4394,8 +4451,8 @@ msgid "Show search suggestions" msgstr "نمایش پیشنهادهای جستجو" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "نمایش دکمه‌های «عشق» و «تحریم»" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4466,27 @@ msgstr "نمایش آیکون سینی" msgid "Show which sources are enabled and disabled" msgstr "نمایش سرچشمه‌های پویا و ناپویا" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "آشکار/پنهان" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "پخش درهم" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "برزدن آلبوم‌ها" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "پخش درهم همه" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "پخش درهم لیست‌پخش" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "برزدن ترک‌های این آلبوم" @@ -4445,7 +4502,7 @@ msgstr "برونرفت از سیستم" msgid "Signing in..." msgstr "ورود به ..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "هنرمندان مشابه" @@ -4457,43 +4514,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "پرش پس در لیست‌پخش" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "پرش شمار" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "پرش پیش در لیست‌پخش" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "جلد آلبوم کوچک" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "میله‌ی کنار کوچک" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "لیست‌پخش هوشمند" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "لیست‌پخش‌های هوشمند" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "ملایم" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "راک ملایم" @@ -4501,11 +4566,11 @@ msgstr "راک ملایم" msgid "Song Information" msgstr "اطلاعات آهنگ" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "اطلاعات آهنگ" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "سونوگرام" @@ -4525,15 +4590,23 @@ msgstr "مرتب‌سازی برپایه‌ی ژانر ( برپایه‌ی مح msgid "Sort by station name" msgstr "مرتب‌سازی برپایه‌ی نام ایستگاه" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "مرتب‌سازی آهنگ‌ها برپایه‌ی" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "مرتب‌سازی" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "سرچشمه" @@ -4549,7 +4622,7 @@ msgstr "Speex" msgid "Spotify" msgstr "اسپاتیفای" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "خطای ورود به سیستم اسپاتیفای" @@ -4557,7 +4630,7 @@ msgstr "خطای ورود به سیستم اسپاتیفای" msgid "Spotify plugin" msgstr "افزونه‌ی اسپاتیفای" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "افزونه‌ی اسپاتیفای نصب نیست" @@ -4565,77 +4638,77 @@ msgstr "افزونه‌ی اسپاتیفای نصب نیست" msgid "Standard" msgstr "استاندارد" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "ستاره‌دار" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "شروع لیست‌پخش در حال پخش" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "آغاز تراکد" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "چیزی در جعبه‌ی جستجوی بالا بنویسید تا این لیست دستاوردهای جستجو را پرکنید" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "شروع %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "شروع..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "ایستگاه‌ها" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "ایست" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "ایست پس از" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "ایست پس از این آهنگ" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "ایست پخش" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "ایست پخش پس از ترک جاری" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "ایست‌شده" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "جریان" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4718,7 @@ msgstr "جریان‌گیری از یک سرور ساب‌سونیک نیازم msgid "Streaming membership" msgstr "هموندی جریان" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "لیست‌پخش‌های عضو شده" @@ -4653,7 +4726,7 @@ msgstr "لیست‌پخش‌های عضو شده" msgid "Subscribers" msgstr "هموندی‌ها" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "ساب‌سونیک" @@ -4661,12 +4734,12 @@ msgstr "ساب‌سونیک" msgid "Success!" msgstr "کامیاب!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 با موفقیت نوشته شد" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "برچسب‌های پیشنهادی" @@ -4675,13 +4748,13 @@ msgstr "برچسب‌های پیشنهادی" msgid "Summary" msgstr "چکیده" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "بسیار بالا (%1 ف.د.ث)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "ابربالا (2048x2048)" @@ -4693,43 +4766,35 @@ msgstr "فرمت‌های قابل پشتیبانی" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "همگام‌سازی صندوق ورودی اسپاتیفای" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "همگام‌سازی لیست‌پخش اسپاتیفای" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "همگام‌سازی ترک‌های ستاره‌دار اسپاتیفای" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "رنگ سیستم" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "باریکه‌ها در بالا" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "برچسب" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "واکش برچسب‌ها" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "برچسب رادیو" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "ضرباهنگ هدف" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "تکنو" @@ -4737,11 +4802,11 @@ msgstr "تکنو" msgid "Text options" msgstr "گزینه‌های متن" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "تشکر از" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "فرمان «%1» نمی‌تواند شروع شود." @@ -4750,17 +4815,12 @@ msgstr "فرمان «%1» نمی‌تواند شروع شود." msgid "The album cover of the currently playing song" msgstr "جلد آلبوم آهنگ درحال پخش" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "پرونده‌ی «%1» معتبر نیست" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "لیست‌پخش '%1' تهی بود با قابل بارگذاری نبود." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "مقدار دوم باید بزرگتر از مقدار اول باشد!" @@ -4768,40 +4828,40 @@ msgstr "مقدار دوم باید بزرگتر از مقدار اول باشد! msgid "The site you requested does not exist!" msgstr "پایگاه درخواستی وجود ندارد!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "پایگاه درخواستی فرتور نیست!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "زمان آزمایشی سرور ساب‌سونیک پایان یافته است. خواهش می‌کنیم هزینه‌ای را کمک کنید تا کلید پروانه را دریافت کنید. برای راهنمایی انجام کار تارنمای subsonic.org را ببینید." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "ویرایشی زا کلمنتاین که هم‌اکنون به‌روز کردید، به خاطر ویژگیهای زیر، نیاز به بررسی کامل کتابخانه دارد:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "آهنگ‌های دیگری در این آلبوم وجود دارند" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "مشکلی در گفتگو با gpodder.net پدیدار شد" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "مشکلی در واکشی ابرداده‌ها از مگناتیون پیش آمد" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "مشکلی در موشکافی پاسخ فروشگاه آی‌تیون پدید آمد" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4873,13 @@ msgid "" "deleted:" msgstr "مشکلی در پاک کردن تعدادی از آهنگ‌ها وجود داشت. پرونده‌های زیر پاک نشدند:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "این پرونده‌ها از دستگاه پاک خواهند شد، آیا مطمئنید که می‌خواهید ادامه دهید؟" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4899,13 @@ msgstr "این تنظیم‌ها در دیالوگ «آهنگ‌های تراک msgid "Third level" msgstr "طبقه‌ی سوم" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "این عمل پایگاه داده‌ای به بزرگی ۱۵۰ مگابایت درست می‌کند.\nآیا ادامه می‌دهید؟" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "این آلبوم در فرمت درخواست‌شده در دسترس نیست." @@ -4859,11 +4919,11 @@ msgstr "این دستگاه باید متصل و باز شده باشد پیش msgid "This device supports the following file formats:" msgstr "این دستگاه از فرمت‌های زیر پشتیبانی می‌کند:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "این دستگاه درست کار نخواهد کرد" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "این یک دستگاه MTP است، اما شما کلمنتاین را بدون پشتیبانی libmtp پردازش کرده‌اید." @@ -4872,7 +4932,7 @@ msgstr "این یک دستگاه MTP است، اما شما کلمنتاین ر msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "این یک آی‌پاد است، اما شما کلمنتاین را بدون پشتیبانی libgpod پردازش کرده‌اید." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4942,33 @@ msgstr "این اولین باری است که این دستگاه را وصل msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "این جریان تنها برای مشترکان پولی است" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "این گونه از دستگاه پشتیبانی نمی‌شود: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "عنوان" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "برای راه‌اندازی رادیوی گرووشارک، ابتدا باید چند آهنگ دیگر از گرووشارک را بشنوید" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "امروز" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "تبدیل به OSD زیبا" @@ -4916,27 +4976,27 @@ msgstr "تبدیل به OSD زیبا" msgid "Toggle fullscreen" msgstr "تبدیل به تمام‌صفحه" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "تبدیل به وضعیت صف" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "تبدیل به وارانی" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "تبدیل به پدیداری برای نمایش‌برصفحه‌ی زیبا" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "فردا" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "بیش از اندازه بازگردانی‌ها" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "ترک‌های برتر" @@ -4944,21 +5004,25 @@ msgstr "ترک‌های برتر" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "همه‌ی بایت‌های ارسال شده" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "همه‌ی درخواست‌های شبکه انجام شد" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "ترک" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "آهنگ‌های تراکد" @@ -4970,7 +5034,7 @@ msgstr "صورت عملیات تراکدگر" msgid "Transcoding" msgstr "تراکدکردن" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "تراکدکردن فایلهای %1 با استفاده از سرنخ‌های %2" @@ -4979,11 +5043,11 @@ msgstr "تراکدکردن فایلهای %1 با استفاده از سرنخ msgid "Transcoding options" msgstr "گزینه‌های تراکد" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "آوای واقعی" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "توربین" @@ -4991,72 +5055,72 @@ msgstr "توربین" msgid "Turn off" msgstr "خاموش" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "نشانی" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "نشانی" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "اوبونتو وان" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "نوار ابرپهن (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "ناکام در باگیری %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "ناشناخته" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "سبک محتوای ناشناخته" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "خطای ناشناخته" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "قرار ندادن جلد" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "لغو هموندی" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "کنسرت‌های پیش‌رو" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "به‌روز رسانی لیست‌پخش گرووشارک" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "به‌روز رسانی همه‌ی پادکست‌ها" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "تغییرات پوشه‌های کتابخانه را به‌روز برسان" @@ -5064,7 +5128,7 @@ msgstr "تغییرات پوشه‌های کتابخانه را به‌روز ب msgid "Update the library when Clementine starts" msgstr "زمانی که کلمنتاین شروع می‌شود کتابخانه را به‌روز کن" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "به‌روز رسانی این پادکست" @@ -5072,21 +5136,21 @@ msgstr "به‌روز رسانی این پادکست" msgid "Updating" msgstr "به‌روز رسانی" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "به‌روز رسانی %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "به‌روز رسانی %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "به‌روز رسانی کتابخانه" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "کاربرد" @@ -5094,11 +5158,11 @@ msgstr "کاربرد" msgid "Use Album Artist tag when available" msgstr "بکاربردن برچسب «هنرمند آلبوم» زمانی که وجود داشته باشد" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "بکار بردن کلیدهای میان‌بر گنوم" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "در صورت وجود، از ابرداده‌ی Replay Gain استفاده کن" @@ -5118,7 +5182,7 @@ msgstr "بکاربردن یک دسته دلخواه رنگ" msgid "Use a custom message for notifications" msgstr "بکار بردن پیام پیشنهادی برای آگاه‌سازی‌ها" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5158,20 +5222,20 @@ msgstr "بکاربردن تنظیم‌های پراکسی سیستم" msgid "Use volume normalisation" msgstr "استفاده از نرمال‌سازی صدا" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "استفاده‌شده" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "کاربر %1 اکانت گرووشارک در هیچ‌جا ندارد" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "رابط کاربری" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5257,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "آهنگ ضرب متغیر" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "هنرمندان گوناگون" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "ویرایش %1" @@ -5211,7 +5275,7 @@ msgstr "نما" msgid "Visualization mode" msgstr "روش فرتورسازی" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "فرتورسازی‌ها" @@ -5219,11 +5283,15 @@ msgstr "فرتورسازی‌ها" msgid "Visualizations Settings" msgstr "تنظیم‌های فرتورسازی‌ها" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "تشخیص پویایی صدا" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "حجم %1%" @@ -5241,11 +5309,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5321,7 @@ msgstr "Wav" msgid "Website" msgstr "تارنما" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "هفته" @@ -5279,32 +5347,32 @@ msgstr "چرا این را نمی‌آزمایید:..." msgid "Wide band (WB)" msgstr "باند پهن (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "دورکنترل Wii %1: پویا است" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "دورکنترل Wii %1: وصل است" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "دورکنترل Wii %1: باتری بحرانی است (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "دورکنترل Wii %1: ناپویا است" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "دورکنترل Wii %1: نصب نیست" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "دورکنترل Wii %1: باتری اندک (%2%)" @@ -5325,7 +5393,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "فرمت آوایی مدیای ویندوز" @@ -5333,25 +5401,25 @@ msgstr "فرمت آوایی مدیای ویندوز" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "آیا می‌خواهید آهنگ‌های دیگر در این آلبوم را به «هنرمندان گوناگون» تراببرید؟" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "آیا مایل هستید که الان بازبینی کامل انجام دهید؟" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "شناسه و گذرواژه‌ی نادرست" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5431,11 @@ msgstr "سال" msgid "Year - Album" msgstr "سال - آلبوم" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "سال" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "دیروز" @@ -5375,13 +5443,13 @@ msgstr "دیروز" msgid "You are about to download the following albums" msgstr "هم‌اکنون آلبوم‌های زیر بارگیری خواهند شد" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5459,12 @@ msgstr "" msgid "You are not signed in." msgstr "هنوز وارد نشده‌اید." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "با نام %1 وارد شده‌اید." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "وارد شده‌اید." @@ -5404,13 +5472,13 @@ msgstr "وارد شده‌اید." msgid "You can change the way the songs in the library are organised." msgstr "روشی را که آهنگ‌ها در کتابخانه سازماندهی می‌شوند، می‌توانید تغییر دهید." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "بدون اکانت می‌توانید رایگان بشنوید، اما عضوهای برجسته می‌توانند با کیفیت بالا و بدون تبلیغ جریان‌ها را بشنوند." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5488,6 @@ msgstr "بدون داشتن شناسه می‌توانید به آهنگ‌ها msgid "You can listen to background streams at the same time as other music." msgstr "به جریان پس‌زمینه همزمان با دیگر آهنگ‌ها می‌توانید گوش دهید." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "ترک‌ها را رایگان می‌توانید برونکشی کنید، اما تنها اعضای پولی می‌توانند رادیوی لست‌‌اف‌ام را از کلمنتاین پخش کنند." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "می‌توانید کنترل Wii خود را برای کنترل از راه دور کلمنتاین بکار برید. برای اطلاعات بیشتر به صفحه‌ی ویکی کلمنتاین مراجعه کنید.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "شما در هیچ‌جا اکانت گرووشارک ندارید." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "شما اکانت برجسته‌ی اسپاتیفای ندارید." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "شما هیچ هموندی پویایی ندارید" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "از اسپاتیفای بیرون آمده‌اید، خواهشمندم دوباره گذرواژه‌ی خود را در گفتگوی «تنظیم‌ها» وارد کنید." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "از اسپاتیفای بیرون آمده‌اید، خواهشمندم دوباره گذرواژه‌ی خود را وارد کنید." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "عاشق این آهنگ هستید" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5546,11 @@ msgstr "نیاز است که تنظیم‌های سیستم را راه‌اند msgid "You will need to restart Clementine if you change the language." msgstr "اگر زبان را تغییر دهید باید کلمنتاین را دوباره بارگذاری کنید." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "شما نمی‌توانید ایستگاه رادیویی لست‌‌اف‌ام را پخش کنید زیرا شما عضو لست‌‌اف‌ام نیستید." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "اعتبار لست‌‌اف‌ام شما نادرست بود" @@ -5489,42 +5558,43 @@ msgstr "اعتبار لست‌‌اف‌ام شما نادرست بود" msgid "Your Magnatune credentials were incorrect" msgstr "اعتبار مگناتیون شما نادرست بود" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "کتابخانه‌ی شما تهی است!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "جریان‌های رادیویی شما" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "برونکشی‌های شما: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "سیستم شما دارای OpenGL نیست، فرتورگری‌ها در دسترس نیستند." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "شناسه یا گذرواژه نادرست است." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "ی-ا" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "صفر" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "افزودن %n آهنگ" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "پس از" @@ -5544,19 +5614,19 @@ msgstr "خودکار" msgid "before" msgstr "پیش از" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "بین" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "بزرگترین اول" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "ض.د.د" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "شامل‌" @@ -5566,20 +5636,20 @@ msgstr "شامل‌" msgid "disabled" msgstr "ناپویا" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "دیسک %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "شامل نیست" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "پایان می‌یابد با" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "برابر است با" @@ -5587,11 +5657,11 @@ msgstr "برابر است با" msgid "gpodder.net" msgstr "جی‌پادر (gpodder.net)" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "پوشه‌ی جی‌پادر (gpodder.net)" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "بزرگتر است از" @@ -5599,54 +5669,55 @@ msgstr "بزرگتر است از" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "در پایان" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "ک.ب.د.ث" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "کمتر است از" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "ابتدا بلندترین" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "ترابری %n آهنگ" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "ابتدا تازه‌ترین" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "برابر نیست با" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "در انتها نیست" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "نه در" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "ابتدا قدیمی‌ترین" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "در" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "گزینه‌ها" @@ -5658,36 +5729,37 @@ msgstr "" msgid "press enter" msgstr "ورود را فشار دهید" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "پاک‌کردن %n آهنگ" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "ابتدا کوتاه‌ترین" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "برزدن آهنگ‌ها" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "ابتدا کوچک‌ترین" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "سامانیدن آهنگ‌ها" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "شروع شود با" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "ایست" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "ترک %1" diff --git a/src/translations/fi.po b/src/translations/fi.po index cd3008978..5657f1678 100644 --- a/src/translations/fi.po +++ b/src/translations/fi.po @@ -7,11 +7,12 @@ # Jiri Grönroos , 2012-2014 # Jaergenoth , 2013-2014 # Jaergenoth , 2013 +# Larso , 2014 # Moonwrist , 2011, 2012 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 05:57+0000\n" +"PO-Revision-Date: 2014-05-11 13:53+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish (http://www.transifex.com/projects/p/clementine/language/fi/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +20,7 @@ msgstr "" "Language: fi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +45,9 @@ msgstr " päivää" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -59,11 +60,16 @@ msgstr " pt" msgid " seconds" msgstr " sekuntia" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " kappaletta" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 kappaletta)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 levyä" @@ -73,12 +79,12 @@ msgstr "%1 levyä" msgid "%1 days" msgstr "%1 päivää" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 päivää sitten" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -88,48 +94,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1-soittolistat (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "valittuna %1 /" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 kappale" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 kappaletta" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 kappaletta löytyi" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 kappaletta löytyi (näytetään %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 kappaletta" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 siirretty" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev-moduuli" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 muuta kuuntelijaa" @@ -143,18 +149,21 @@ msgstr "%L1 soittokertaa yhteensä" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n epäonnistui" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n valmistui" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n jäljellä" @@ -166,24 +175,24 @@ msgstr "&Tasaa teksti" msgid "&Center" msgstr "&Keskelle" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Oma" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" -msgstr "Extrat" +msgstr "&Extrat" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" -msgstr "Ohje" +msgstr "O&hje" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Piilota %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Piilota..." @@ -191,23 +200,23 @@ msgstr "Piilota..." msgid "&Left" msgstr "&Vasemmalle" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" -msgstr "Musiikki" +msgstr "&Musiikki" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Ei mitään" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" -msgstr "Soittolista" +msgstr "&Soittolista" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Lopeta" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Kertaa" @@ -215,23 +224,23 @@ msgstr "Kertaa" msgid "&Right" msgstr "&Oikealle" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Sekoita" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Sovita sarakkeet ikkunan leveyteen" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" -msgstr "Työkalut" +msgstr "&Työkalut" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(erilainen kaikille kappaleille)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...ja kaikki Amarokin kehitykseen osallistuneet" @@ -251,14 +260,10 @@ msgstr "0px" msgid "1 day" msgstr "1 päivä" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 kappale" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +273,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40 %" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 satunnaista kappaletta" @@ -276,12 +281,6 @@ msgstr "50 satunnaista kappaletta" msgid "Upgrade to Premium now" msgstr "Päivitä Premium-tunnukseksi nyt" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Luo uusi tili tai nollaa salasanasi" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +291,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Jos ei valittuna, Clementine yrittää tallentaa arvosanasi sekä muut tiedot erilliseen tietokantaan muokkaamatta tiedostojasi.

Jos valittuna, Clementine tallentaa tiedot sekä tietokantaan että tiedostoihisi joka kerta kun tiedot muuttuvat.

Huomaa, että tämä ei välttämättä toimi kaikkien formaattien kanssa, ja koska asiasta ei ole olemassa standardeja, muut soittimet eivät ehkä osaa lukea niitä.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +310,38 @@ msgid "" "activated.

" msgstr "

Tämä kirjoittaa kappaleiden arvosanat ja tilastot suoraan tiedostoihisi.

Tätä ei tarvita jos "Tallenna arvostelut ja tilastot tiedostojen tageihin" on valittuna.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Tietueet alkavat %-merkillä, esimerkiksi: %artist %album %title

\n\n

Jos ympäröit tietueen sisältävän tekstin aaltosulkeilla, se piilotetaan, jos tietue on tyhjä.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Grooveshark Anywhere -tili vaaditaan käyttöön." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Spotify Premium -tili vaaditaan." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Asiakas voi yhdistää vain oikealla koodilla." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Älykäs soittolista on dynaaminen lista kirjastossasi olevista kappaleista. Älykkäät soittolistat mahdollistavat kappaleiden valinnan usein eri tavoin." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Kappale sisällytetään soittolistaan, jos se vastaa näitä ehtoja." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Ö" @@ -351,36 +361,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "KAIKKI KUNNIA HYPNOTOADILLE" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Keskeytä" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Tietoja - %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Tietoja - Clementine" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Tietoja - Qt" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Tilin tiedot" @@ -392,11 +401,15 @@ msgstr "Tilitiedot (Premium)" msgid "Action" msgstr "Toiminto" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Ota käyttöön / poista käytöstä Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Lisää podcast" @@ -412,39 +425,39 @@ msgstr "Lisää uusi rivi, jos ilmoitustyyppi sen sallii" msgid "Add action" msgstr "Lisää toiminto" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Lisää toinen suoratoisto..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Lisää kansio..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Lisää tiedosto" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Lisää tiedosto muuntajaan" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Lisää tiedosto(ja) muuntajaan" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Lisää tiedosto..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Lisää tiedostoja muunnettavaksi" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Lisää kansio" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Lisää kansio..." @@ -456,11 +469,11 @@ msgstr "Lisää uusi kansio..." msgid "Add podcast" msgstr "Lisää podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Lisää podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Lisää hakutermi" @@ -524,6 +537,10 @@ msgstr "Lisää kappaleen keskeyttämislaskuri" msgid "Add song title tag" msgstr "Lisää tunniste kappaleen nimi" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Lisää kappale välimuistin" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Lisää tunniste " @@ -532,22 +549,34 @@ msgstr "Lisää tunniste " msgid "Add song year tag" msgstr "Lisää tunniste kappaleen levytys vuosi" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "LIsää kappale \"Omaan musiikkiin\", kun \"Tykkää\"-painiketta napsautetaan" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Lisää suoratoisto..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Lisää Grooveshark-suosikkeihin" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Lisää Grooveshark-soittolistaan" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Lisää omaan musiikkiin" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Lisää toiseen soittolistaan" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Lisää kirjanmerkkeihin" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Lisää soittolistaan" @@ -556,6 +585,10 @@ msgstr "Lisää soittolistaan" msgid "Add to the queue" msgstr "Lisää jonoon" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Lisää käyttäjä/ryhmä kirjanmerkkeihin" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Lisää wiimotedev-toiminto" @@ -585,15 +618,15 @@ msgstr "Lisätty tänään" msgid "Added within three months" msgstr "Lisätty kolmen kuukauden sisään" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Lisätään kappale musiikkikirjastoon" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Lisätään kappale suosikkeihin" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Kirjaston tarkempi järjestely..." @@ -601,12 +634,12 @@ msgstr "Kirjaston tarkempi järjestely..." msgid "After " msgstr "Jälkeen" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Kopioinnin jälkeen..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +647,11 @@ msgstr "Kopioinnin jälkeen..." msgid "Album" msgstr "Levy" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Albumi (ihanteellinen voimakkuus kaikille kappaleille)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +661,36 @@ msgstr "Levyn esittäjä" msgid "Album cover" msgstr "Kansikuva" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Levytiedot jamendo.comissa..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Levyt kansikuvineen" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Levyt vailla kansikuvia" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Kaikki tiedostot (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Kaikki kunnia Hypnotoadille!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Kaikki levyt" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Kaikki esittäjät" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Kaikki tiedostot (*)" @@ -665,19 +699,19 @@ msgstr "Kaikki tiedostot (*)" msgid "All playlists (%1)" msgstr "Kaikki soittolistat (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Kaikki kääntäjät" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Kaikki kappaleet" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Salli asiakkaan ladata musiikkia tältä tietokoneelta." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Salli lataukset" @@ -702,30 +736,30 @@ msgstr "Näytä pääikkuna aina" msgid "Always start playing" msgstr "Aloita aina toisto" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Spotifyn käyttö Clementinessä vaatii lisäosan. Haluatko ladata ja asentaa sen nyt?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "iTunes-tietokantaa ladatessa tapahtui virhe" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Virhe kirjoittaessa metatietoja kohteeseen '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Tapahtui määrittämätön virhe." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Ja:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Vihainen" @@ -734,13 +768,13 @@ msgstr "Vihainen" msgid "Appearance" msgstr "Ulkoasu" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Lisää tiedostoja/verkko-osoitteita soittolistalle" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Lisää nykyiselle soittolistalle" @@ -748,52 +782,47 @@ msgstr "Lisää nykyiselle soittolistalle" msgid "Append to the playlist" msgstr "Lisää soittolistalle" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Lisää vaimennusta äänisignaalin leikkautumisen estämiseksi" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Haluatko varmasti poistaa asetuksen \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Oletko varma että haluat poistaa tämän soittolistan?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Haluatko varmasti nollata tämän kappaleen tilastotiedot?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Oletko varma että haluat kirjoittaa kaikkien kirjastosi kappleiden tilastot suoraan kirjastosi tiedostoihin?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Esittäjä" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Esittäjätiedot" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Artistiradio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Esittäjän tunnisteet" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Esittäjän nimen ensimmäinen kirjain" @@ -801,9 +830,13 @@ msgstr "Esittäjän nimen ensimmäinen kirjain" msgid "Audio format" msgstr "Äänimuoto" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Äänen ulostulo" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Tunnistautuminen epäonnistui" @@ -811,7 +844,7 @@ msgstr "Tunnistautuminen epäonnistui" msgid "Author" msgstr "Tekijä" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Tekijät" @@ -827,7 +860,7 @@ msgstr "Automaattinen päivitys" msgid "Automatically open single categories in the library tree" msgstr "Laajenna automaattisesti yhden alitason sisältävät kohteet kirjaston puunäkymässä" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Käytettävissä" @@ -835,15 +868,15 @@ msgstr "Käytettävissä" msgid "Average bitrate" msgstr "Keskimääräinen bittinopeus" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Kuvatiedoston koko keskimäärin" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC-podcastit" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +897,7 @@ msgstr "Taustakuva" msgid "Background opacity" msgstr "Taustan läpinäkyvyys" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Varmuuskopioidaan tietokantaa" @@ -872,11 +905,7 @@ msgstr "Varmuuskopioidaan tietokantaa" msgid "Balance" msgstr "Tasapaino" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "En tykkää" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Taajuusjakauma" @@ -896,18 +925,17 @@ msgstr "Toiminta" msgid "Best" msgstr "Paras" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografian tarjoaa %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bittivirta" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +943,12 @@ msgstr "Bittivirta" msgid "Bitrate" msgstr "Bittinopeus" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Bittinopeus" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Block analyzer" @@ -931,7 +964,7 @@ msgstr "Sumennuksen määrä" msgid "Body" msgstr "Sisältö" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom analyzer" @@ -945,11 +978,11 @@ msgstr "Box" msgid "Browse..." msgstr "Selaa..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Puskurin kesto" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Puskuroidaan" @@ -961,43 +994,66 @@ msgstr "Mutta nämä lähteet ovat pois käytöstä:" msgid "Buttons" msgstr "Painikkeet" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Oletuksena Grooveshark järjestää kappaleet lisäyspäivän mukaan" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE-tiedostojen tuki" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Välimuistin polku:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Välimuistin käyttö" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Asetetaan välimuistiin %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Peru" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Captcha vaaditaan.\nYritä kirjautua Vk.comiin selaimella korjataksesi tämän ongelman." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Vaihda kansikuvaa" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Vaihda kirjasinkokoa..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Vaihda toiston tilaa" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Vaihda pikanäppäin..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Vaihda sekoituksen tilaa" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Vaihda kieltä" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1063,19 @@ msgstr "Mono-toistoasetuksen tilan vaihtaminen tulee voimaan seuraavassa kappale msgid "Check for new episodes" msgstr "Tarkista uudet jaksot" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Tarkista päivitykset..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Valitse Vk.comin välimuistikansio" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Anna nimi älykkäälle soittolistalle" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Valitse automaattisesti" @@ -1031,11 +1091,11 @@ msgstr "Valitse kirjasin..." msgid "Choose from the list" msgstr "Valitse listalta" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Valitse kuinka soittolista lajitellaan ja kuinka monta kappaletta se sisältää." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Valitse podcastien latauskansio" @@ -1044,7 +1104,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Valitse sivustot, joilta haluat Clementinen etsivän sanoituksia." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Classical" @@ -1052,17 +1112,17 @@ msgstr "Classical" msgid "Cleaning up" msgstr "Siivoaminen" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Tyhjennä" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Tyhjennä soittolista" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1075,8 +1135,8 @@ msgstr "Clementine-virhe" msgid "Clementine Orange" msgstr "Klementiinin oranssi" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementinen visualisointi" @@ -1098,9 +1158,9 @@ msgstr "Clementine voi toistaa Dropboxiin lähettämääsi musiikkia" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine voi toistaa Google Driveen lataamaasi musiikkia" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine voi toistaa Ubuntu Oneen lähettämääsi musiikkia" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine voi toistaa OneDriveen tallennettua musiikkia" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1173,13 @@ msgid "" "an account." msgstr "Clementine voi synkronoida tilauksesi muiden tietokoneiden ja podcast-sovellusten kanssa. Luo tunnus." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine epäonnistui projectM-visualisoinnin esittämisessä. Varmista Clementine-asennuksen toimivuus." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine ei voinut hakea tilauksesi tietoja, koska yhteydessäsi on jotain vikaa. Soitetut kappaleet pidetään välimuistissa ja ne lähetetään myöhemmin Last.fm:ään." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine-kuvakatselin" @@ -1138,11 +1191,11 @@ msgstr "Clementine ei löytänyt tuloksia tälle tiedostolle" msgid "Clementine will find music in:" msgstr "Clementine etsii musiikkia kohteista:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Napsauta tästä lisätäksesi musiikkia" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1205,10 @@ msgstr "Napsauta tästä lisätäksesi soittolistan suosikkeihisi, jolloin se ta msgid "Click to toggle between remaining time and total time" msgstr "Napsauta vaihtaaksesi näkymää: aikaa jäljellä / kokonaisaika" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1223,19 @@ msgstr "Sulje" msgid "Close playlist" msgstr "Sulje soittolista" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Sulje visualisointi" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Tämän ikkunan sulkeminen peruu latauksen." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Tämän ikkunan sulkeminen lopettaa levykansien etsimisen." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1187,73 +1243,78 @@ msgstr "Club" msgid "Colors" msgstr "Värit" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Pilkuin erotettu lista luokka:taso -määritteitä, jossa taso on väliltä 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentti" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Yhteisöradio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Täydennä tunnisteet automaattisesti" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Täydennä tunnisteet automaattisesti..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Säveltäjä" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "%1 - asetukset..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Grooveshark-asetukset..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm-asetukset..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Magnatune-asetukset..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" -msgstr "Pikanäppäinten asetukset..." +msgstr "Pikanäppäinten asetukset" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Muokkaa Spotifya..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Subsonicin asetukset..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Vk.com-asetukset..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Muokkaa hakua..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Kirjaston asetukset..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Muokkaa podcasteja..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Asetukset..." @@ -1261,11 +1322,11 @@ msgstr "Asetukset..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Yhdistä Wii Remote käyttämällä aktivoi/deaktivoi toimintoa" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Yhdistä laite" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Yhdistetään Spotifyyn" @@ -1275,12 +1336,16 @@ msgid "" "http://localhost:4040/" msgstr "Palvelin hylkäsi yhteyden, tarkista palvelimen osoite. Esimerkki: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Yhteys aikakatkaistiin, tarkista palvelimen osoite. Esimerkki: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Yhteysongelma tai omistaja on poistanut äänen käytöstä" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsoli" @@ -1296,17 +1361,21 @@ msgstr "Muunna kaikki musiikki" msgid "Convert any music that the device can't play" msgstr "Muuta musiikki, jota laite ei voi muuten toistaa" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Kopioi jakamisosoite leikepöydälle" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopioi leikepöydälle" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopioi laitteelle..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopioi kirjastoon" @@ -1314,156 +1383,152 @@ msgstr "Kopioi kirjastoon" msgid "Copyright" msgstr "Tekijänoikeus" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Yhteys Subsonic-palvelimeen epäonnistui, tarkista palvelimen osoite. Esimerkki: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "GStreamer-elementin \"%1\" luonti epäonnistui - varmista, että kaikki vaaditut GStreamer-liitännäiset on asennettu" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Soittolistan luominen epäonnistui" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Ei löydetty %1 -multiplekseriä, tarkista että sinulla on oikeat GStreamer-liitännäiset asennettuna" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Ei löydetty %1 -enkooderia, tarkista että sinulla on oikeat GStreamer-liitännäiset asennettuna" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Last.fm-radioaseman lataus epäonnistui" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Ei voitu avata kohdetiedostoa %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Kansikuvaselain" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Kansikuva sulautetusta kuvasta" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Kansikuva ladattu automaattisesti kohteesta %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Levynkansi poistettu" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Kansikuvaa ei ole asetettu" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Kansikuva asetettu kohteesta %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Kansikuvat kohteesta %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Luo uusi Grooveshark-soittolista" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Ristiinhäivytä kappaleet, kun kappale vaihtuu automaattisesti" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Ristiinhäivytä kappaleet, kun käyttäjä vaihtaa kappaletta" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1536,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Oma" @@ -1483,54 +1548,50 @@ msgstr "Omavalintainen kuva:" msgid "Custom message settings" msgstr "Omavalintaisen viestin asetukset" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Oma radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Mukautettu..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus-polku" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Tietokannan korruptio havaittu. Lue https://code.google.com/p/clementine-player/wiki/DatabaseCorruption saadaksesi ohjeet tietokannan palauttamiseksi." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Luotu" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Muokattu" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Päivää" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Oletus" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Vähennä ääntä - 4 %" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Vähennä äänenvoimakkuutta prosentilla" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Vähennä äänenvoimakkuutta" @@ -1538,6 +1599,11 @@ msgstr "Vähennä äänenvoimakkuutta" msgid "Default background image" msgstr "Oletustaustakuva" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Oletusasetukset" @@ -1546,30 +1612,30 @@ msgstr "Oletusasetukset" msgid "Delay between visualizations" msgstr "Viive visualisointien välillä" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Poista" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Poista Grooveshark-soittolista" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Poista ladattu data" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Poista tiedostot" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Poista laitteelta..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Poista levyltä..." @@ -1577,31 +1643,31 @@ msgstr "Poista levyltä..." msgid "Delete played episodes" msgstr "Poista soitetut jaksot" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Poista asetus" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Poista älykäs soittolista" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Poista alkuperäiset tiedostot" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Poistetaan tiedostoja" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Poista valitut kappaleet jonosta" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Poista kappale jonosta" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Kohde" @@ -1610,7 +1676,7 @@ msgstr "Kohde" msgid "Details..." msgstr "Tiedot..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Laite" @@ -1622,15 +1688,15 @@ msgstr "Laitteen ominaisuudet" msgid "Device name" msgstr "Laitteen nimi" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Laitteen ominaisuudet..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Laitteet" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1667,12 +1733,17 @@ msgstr "Kytke kesto pois päältä" msgid "Disable moodbar generation" msgstr "Poista mielialan luominen käytöstä" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." +msgid "Disabled" +msgstr "Ei käytössä" + +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." msgid "Disabled" msgstr "Poissa käytöstä" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Levy" @@ -1682,15 +1753,15 @@ msgid "Discontinuous transmission" msgstr "Keskeytyvä siirto" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Näkymäasetukset" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Näytä kuvaruutunäyttö" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Tee kirjaston täydellinen läpikäynti" @@ -1702,27 +1773,27 @@ msgstr "Älä muunna mitään musiikkia" msgid "Do not overwrite" msgstr "Älä korvaa" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Älä kertaa" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Älä näytä kohdassa \"Useita esittäjiä\"" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Älä sekoita" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Älä lopeta!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Lahjoita" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Kaksoisnapsauta avataksesi" @@ -1730,12 +1801,13 @@ msgstr "Kaksoisnapsauta avataksesi" msgid "Double clicking a song will..." msgstr "Kappaleen kaksoisnapsautus..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Poista %n jaksoa" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Latauskansio" @@ -1751,7 +1823,7 @@ msgstr "Latausjäsenyys" msgid "Download new episodes automatically" msgstr "Lataa uudet jaksot automaattisesti" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Lataus asetettu jonoon" @@ -1759,15 +1831,15 @@ msgstr "Lataus asetettu jonoon" msgid "Download the Android app" msgstr "Lataa Android-sovellus" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Lataa tämä levy" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Lataa tämä levy..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Lataa tämä jakso" @@ -1775,7 +1847,7 @@ msgstr "Lataa tämä jakso" msgid "Download..." msgstr "Lataa..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Ladataan (%1%)..." @@ -1784,23 +1856,23 @@ msgstr "Ladataan (%1%)..." msgid "Downloading Icecast directory" msgstr "Ladataan Icecast-hakemistoa" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Ladataan Jamendo-luetteloa" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Ladataan Magnatune-luetteloa" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Ladataan Spotify-liitännäistä" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Noudetaan metadataa" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Vaihda sijaintia vetämällä" @@ -1820,20 +1892,20 @@ msgstr "Kesto" msgid "Dynamic mode is on" msgstr "Dynaaminen tila päällä" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynaaminen satunnainen sekoitus" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Muokkaa älykästä soittolistaa..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Muokkaa tunnistetta \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Muokkaa tunnistetta..." @@ -1845,16 +1917,16 @@ msgstr "Muokkaa tunnisteita" msgid "Edit track information" msgstr "Muokkaa kappaleen tietoja" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Muokkaa kappaleen tietoja..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Muokkaa kappaleen tietoja..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Muokkaa..." @@ -1862,6 +1934,10 @@ msgstr "Muokkaa..." msgid "Enable Wii Remote support" msgstr "Käytä Wii-ohjainta" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Käytä automaattista välimuistia" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Käytä taajuuskorjainta" @@ -1876,7 +1952,7 @@ msgid "" "displayed in this order." msgstr "Kytke lähteitä päälle, jos haluat niiden näkyvän hakutuloksissa. Tulokset näytetään tässä järjestyksessä." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Päälle / pois Last.fm scrobbling" @@ -1904,15 +1980,10 @@ msgstr "Kirjoita URL-osoite kansikuvien lataamiseen Internetistä:" msgid "Enter a filename for exported covers (no extension):" msgstr "Syötä tiedostonimi kansille (ei tiedostopäätettä):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Anna uusi nimi tälle soittolistalle" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Anna esittäjä tai tunniste aloittaaksesi Last.fm:n kuuntelun." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1997,7 @@ msgstr "Kirjoita alle hakuehdot, joilla etsitään podcasteja iTunes Storesta" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Kirjoita alle hakuehdot, joilla etsitään podcasteja gpodder.net-sivustolta" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Etsi tästä" @@ -1935,11 +2006,11 @@ msgstr "Etsi tästä" msgid "Enter the URL of an internet radio stream:" msgstr "Anna suoratoiston osoite:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Anna kansion nimi" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Kirjoita tämä IP sovellukseen yhdistääksesi Clementineen." @@ -1947,21 +2018,22 @@ msgstr "Kirjoita tämä IP sovellukseen yhdistääksesi Clementineen." msgid "Entire collection" msgstr "Koko kokoelma" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Taajuuskorjain" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Vastaa --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Vastaa --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Virhe" @@ -1969,38 +2041,38 @@ msgstr "Virhe" msgid "Error connecting MTP device" msgstr "Virhe yhdistäessä MTP-laitteeseen" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Virhe kappaleita kopioidessa" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Virhe kappaleita poistaessa" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Virhe ladatessa Spotify-liitännäistä" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Virhe ladattaessa %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Virhe ladattaessa di.fm soittolistaa" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Virhe käsitellessä %1:%2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Virhe ladattaessa CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Aina soitetut" @@ -2032,7 +2104,7 @@ msgstr "6 tunnin välein" msgid "Every hour" msgstr "Joka tunti" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Älä käytä ristihäivytystä samalla levyllä tai samassa CUE-tiedostossa oleville kappaleille" @@ -2044,7 +2116,7 @@ msgstr "Olemassa olevat kansikuvat" msgid "Expand" msgstr "Laajenna" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Vanhenee %1" @@ -2065,36 +2137,36 @@ msgstr "Vie ladatut kansikuvat" msgid "Export embedded covers" msgstr "Vie upotetut kansikuvat" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Vienti valmistui" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Vietiin %1/%2 kansikuvaa (%3 ohitettu)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2176,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Häivytä keskeyttäessä ja palauttaessa kappaleen toisto" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Häivytä, kun kappale pysäytetään" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Häivytys" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Häivytyksen kesto" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "CD-aseman lukeminen epäonnistui" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Kansion nouto epäonnistui" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Podcastien nouto epäonnistui" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Podcastin lataus epäonnistui" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Tämän RSS-syötteen XML:n jäsennys epäonnistui" @@ -2148,11 +2220,11 @@ msgstr "Tämän RSS-syötteen XML:n jäsennys epäonnistui" msgid "Fast" msgstr "Nopea" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Suosikit" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Suosikkikappaleet" @@ -2168,11 +2240,11 @@ msgstr "Nouda automaattisesti" msgid "Fetch completed" msgstr "Nouto suoritettu" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Noudetaan Subsonic-kirjastoa" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Virhe kansikuvan noudossa" @@ -2180,7 +2252,7 @@ msgstr "Virhe kansikuvan noudossa" msgid "File Format" msgstr "Tiedostomuoto" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Tiedostopääte" @@ -2188,19 +2260,23 @@ msgstr "Tiedostopääte" msgid "File formats" msgstr "Tiedostomuodot" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Tiedoston nimi (ja polku)" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Tiedostonimi" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Tiedostonimen kaava:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tiedostokoko" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2286,7 @@ msgstr "Tiedostotyyppi" msgid "Filename" msgstr "Tiedostonimi" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Tiedostot" @@ -2218,15 +2294,19 @@ msgstr "Tiedostot" msgid "Files to transcode" msgstr "Muunnettavat tiedostot" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Etsi kirjastosta kappaleet, jotka sopivat hakuehtoihisi." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Luodaan sormenjälkeä kappaleesta..." -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Valmis" @@ -2234,7 +2314,7 @@ msgstr "Valmis" msgid "First level" msgstr "Ensimmäinen taso" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2330,12 @@ msgstr "Lisenssisyistä Spotify-tuki on erillinen liitännäinen." msgid "Force mono encoding" msgstr "Pakota monokoodaus" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Unohda laite" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2350,7 @@ msgstr "Laitteen unohtaminen poistaa sen listalta. Clementine joutuu käydä lai #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2378,23 @@ msgstr "Kuvanopeus" msgid "Frames per buffer" msgstr "Kehyksiä per puskuri" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Tuttavat" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Jäätynyt" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Täysi basso" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Täysi basso ja diskantti" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Täysi diskantti" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer-äänijärjestelmä" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Yleiset" @@ -2330,30 +2402,30 @@ msgstr "Yleiset" msgid "General settings" msgstr "Yleiset asetukset" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Tyylilaji" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Hanki tämän Grooveshark-soittolistan verkko-osoite" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Hanki tämän Grooveshark-kappaleen verkko-osoite" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Noudetaan Groovesharkin suosituimpia kappaleita" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Haetaan kanavia" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Haetaan suoratoisto kanavia" @@ -2365,11 +2437,11 @@ msgstr "Anna nimi:" msgid "Go" msgstr "Mene" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Siirry seuraavaan soittolistaan" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Siirry edelliseen soittolistaan" @@ -2377,7 +2449,7 @@ msgstr "Siirry edelliseen soittolistaan" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2459,7 @@ msgstr "Löydetty %1 / %2 kansikuvaa (%3 epäonnistui)" msgid "Grey out non existent songs in my playlists" msgstr "Muuta poistetut kappaleet harmaan värisiksi soittolistalla" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2467,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark-kirjautumisvirhe" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark-soittolistan verkko-osoite" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark-radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark-kappaleen osoite" @@ -2411,44 +2483,44 @@ msgstr "Grooveshark-kappaleen osoite" msgid "Group Library by..." msgstr "Järjestä kirjasto..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Järjestä" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Järjestä levyn mukaan" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Järjestä esittäjän mukaan" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Järjestä esittäjän/levyn mukaan" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Järjestä esittäjän/vuoden - levyn mukaan" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Järjestä tyylin/levyn mukaan" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Järjestä tyylin/esittäjän/levyn mukaan" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Ryhmittely" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML-sivu ei sisältänyt minkäänlaista RSS-syötettä" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Vastaanotettiin HTTP 3xx -tilakoodi ilman URL-osoitetta. Tarkista palvelimen asetukset." @@ -2457,7 +2529,7 @@ msgstr "Vastaanotettiin HTTP 3xx -tilakoodi ilman URL-osoitetta. Tarkista palvel msgid "HTTP proxy" msgstr "HTTP-välityspalvelin" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Iloinen" @@ -2473,25 +2545,25 @@ msgstr "Laitetiedot on saatavilla vain laitteen ollessa yhdistettynä." msgid "High" msgstr "Korkea" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Nopea (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Korkea (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Palvelinta ei löytynyt, tarkista palvelimen osoite. Esimerkki: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Tuntia" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2503,15 +2575,15 @@ msgstr "Minulla ei ole Magnatune-tunnusta" msgid "Icon" msgstr "Kuvake" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Kuvakkeet ylhäällä" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Tunnistetaan kappaletta" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2593,24 @@ msgstr "Jos jatkat, laite toimii hitaasti ja sille kopioidut kappaleet eivät v msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Jos tiedät podcastin verkko-osoitteen, kirjoita se alle ja napsauta Mene." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Älä huomioi sanaa \"The\" esiintyjien nimissä" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Kuvat (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Kuvat (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "%1 päivässä" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 viikossa" @@ -2549,7 +2621,7 @@ msgid "" "time a song finishes." msgstr "Dynaamisessa tilassa uusia kappaleita valitaan ja lisätään soittolistaan joka kerta kun yksi kappale on soitettu." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Saapuneet" @@ -2561,36 +2633,36 @@ msgstr "Näytä kansikuva ilmoituksen yhteydessä" msgid "Include all songs" msgstr "Sisällytä kaikki kappaleet" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Yhteensopimaton Subsonicin REST-protokollaversio. Asiakasohjelmisto on päivitettävä." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Yhteensopimaton Subsonicin REST-protokollaversio. Palvelin on päivitettävä." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Puutteelliset asetukset, varmista että kaikki kentät on täytetty." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Lisää ääntä - 4 %" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Lisää äänenvoimakkuutta prosentilla" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Lisää äänenvoimakkuutta" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indeksoidaan %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Tiedot" @@ -2598,55 +2670,55 @@ msgstr "Tiedot" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Lisää..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Asennettu" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Eheystarkistus" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Palvelutarjoajat" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Virheellinen API-avain" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Virheellinen muoto" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Virheellinen menetelmä" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Virheelliset parametrit" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Virheellinen resurssien määrittely" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Virheellinen palvelu" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Virheellinen istuntoavain" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Virheellinen käyttäjätunnus ja / tai salasana" @@ -2654,42 +2726,42 @@ msgstr "Virheellinen käyttäjätunnus ja / tai salasana" msgid "Invert Selection" msgstr "Käänteinen valinta" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendon eniten kuunnellut kappaleet" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendon suosituimmat kappaleet" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendon kuukauden suosituimmat kappaleet" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendon viikon suosituimmat kappaleet" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo-tietokanta" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Näytä parhaillaan soiva kappale" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Paina painikkeita %1 sekunti..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Paina painikkeita %1 sekuntia..." @@ -2698,11 +2770,12 @@ msgstr "Paina painikkeita %1 sekuntia..." msgid "Keep running in the background when the window is closed" msgstr "Pidä käynnissä taustalla, kun ikkuna suljetaan" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Säilytä alkuperäiset tiedostot" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Kissanpentuja" @@ -2710,11 +2783,11 @@ msgstr "Kissanpentuja" msgid "Language" msgstr "Kieli" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Kannettava/kuulokkeet" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Suuri halli" @@ -2722,58 +2795,24 @@ msgstr "Suuri halli" msgid "Large album cover" msgstr "Suuri kansikuva" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Suuri sivupalkki" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Viimeksi soitettu" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "Viimeksi toistettu" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm Custom Radio: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm-kirjasto - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Mix Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm-naapuriradio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm-radioasema - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm, samanlaisia esittäjiä kuin %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm Tag Radio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm on parhaillaan varattu, yritä uudelleen hetken kuluttua" @@ -2781,11 +2820,11 @@ msgstr "Last.fm on parhaillaan varattu, yritä uudelleen hetken kuluttua" msgid "Last.fm password" msgstr "Last.fm-salasana" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm-soittokerrat" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm-tunnisteet" @@ -2793,28 +2832,24 @@ msgstr "Last.fm-tunnisteet" msgid "Last.fm username" msgstr "Last.fm-tunnus" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm-wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Vähiten pidetyt kappaleet" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Jätä tyhjäksi oletusta varten. Esimerkkejä: \"/dev/dsp\", \"front\" jne." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Vasen" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Kesto" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Kirjasto" @@ -2822,24 +2857,24 @@ msgstr "Kirjasto" msgid "Library advanced grouping" msgstr "Kirjaston tarkennettu ryhmittely" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Ilmoitus kirjaston läpikäynnistä" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Kirjastohaku" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Rajat" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Kuuntele Grooveshark-kappaleita aieman kuuntelutottumuksesi perusteella" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2851,15 +2886,15 @@ msgstr "Lataa" msgid "Load cover from URL" msgstr "Lataa kansikuva osoitteesta" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Lataa kansikuva osoitteesta..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Lataa kansikuva levyltä" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Lataa kansikuva levyltä..." @@ -2867,84 +2902,89 @@ msgstr "Lataa kansikuva levyltä..." msgid "Load playlist" msgstr "Lataa soittolista" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Lataa soittolista..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Ladataan Last.fm-radioa" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Ladataan MTP-laitetta" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Ladataan iPod-tietokantaa" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Ladataan älykästä soittolistaa" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Ladataan kappaleita" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Ladataan suoratoistoa" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Ladataan kappaleita" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Lataa kappaleen tietoja" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Ladataan..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Lataa tiedostoja tai verkko-osoitteita, korvaa samalla nykyinen soittolista" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Kirjaudu sisään" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Kirjautuminen epäonnistui" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Kirjaudu ulos" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Long term prediction -profiili (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Tykkää" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Hidas (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Matala (256x256)" @@ -2956,12 +2996,17 @@ msgstr "Low complexity -profiili (LC)" msgid "Lyrics" msgstr "Sanoitukset" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Sanoitukset tarjoaa %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3018,15 @@ msgstr "MP3 256K" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2989,7 +3034,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune-lataus" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune-lataus valmistui" @@ -2997,15 +3042,20 @@ msgstr "Magnatune-lataus valmistui" msgid "Main profile (MAIN)" msgstr "Oletusprofiili (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Toteuta!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Toteuta!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Aseta soittolista käytettäväksi yhteydettömässä tilassa" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Virheellinen vastaus" @@ -3018,15 +3068,15 @@ msgstr "Määritä välityspalvelin itse" msgid "Manually" msgstr "Käsin" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Valmistaja" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Merkitse kuunnelluksi" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Merkitse uudeksi" @@ -3038,17 +3088,21 @@ msgstr "Täyttää jokaisen hakuehdon (AND)" msgid "Match one or more search terms (OR)" msgstr "Täyttää yhden tai useampia hakuehtoja (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Suurin bittinopeus" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Keskitaso (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Keskinkertainen (512x512)" @@ -3060,11 +3114,15 @@ msgstr "Jäsenyyden tyyppi" msgid "Minimum bitrate" msgstr "Pienin bittinopeus" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Puuttuvat projectM-asetukset" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Malli" @@ -3072,20 +3130,20 @@ msgstr "Malli" msgid "Monitor the library for changes" msgstr "Tarkkaile kirjastoa muutosten varalta" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono-toisto" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Kuukautta" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Mieliala" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Mielialapalkin tyyli" @@ -3093,15 +3151,19 @@ msgstr "Mielialapalkin tyyli" msgid "Moodbars" msgstr "Mielialapalkit" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Lisää" + +#: library/library.cpp:84 msgid "Most played" msgstr "Eniten soitetut" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Liitoskohta" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Liitoskohdat" @@ -3110,7 +3172,7 @@ msgstr "Liitoskohdat" msgid "Move down" msgstr "Siirrä alas" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Siirrä kirjastoon..." @@ -3119,7 +3181,7 @@ msgstr "Siirrä kirjastoon..." msgid "Move up" msgstr "Siirrä ylös" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musiikki" @@ -3127,56 +3189,32 @@ msgstr "Musiikki" msgid "Music Library" msgstr "Musiikkikirjasto" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Vaimenna" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Last.fm-kirjastoni" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Last.fm Mix -radio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Oma Last.fm-naapurusto" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Last.fm:n suositellut" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Oma Mix Radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Musiikkikirjasto" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Oma naapurustoni" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Oma radioasemani" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Omat suositukseni" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nimi" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nimi" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Nimeämisvalinnat" @@ -3184,23 +3222,19 @@ msgstr "Nimeämisvalinnat" msgid "Narrow band (NB)" msgstr "Kapeakaistainen (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Naapurit" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Verkon välityspalvelin" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Verkkokaukosäädin" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Ei koskaan" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Ei koskaan soitettu" @@ -3209,21 +3243,21 @@ msgstr "Ei koskaan soitettu" msgid "Never start playing" msgstr "Älä koskaan aloita toistoa" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Uusi kansio" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Uusi soittolista" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Uusi älykäs soittolista..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Uudet kappaleet" @@ -3231,24 +3265,24 @@ msgstr "Uudet kappaleet" msgid "New tracks will be added automatically." msgstr "Uudet kappaleet lisätään automaattisesti." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Uusimmat kappaleet" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Seuraava" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Seuraava kappale" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Ensi viikolla" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Ei visualisointia" @@ -3256,7 +3290,7 @@ msgstr "Ei visualisointia" msgid "No background image" msgstr "Ei taustakuvaa" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Ei kansikuvia vietäväksi." @@ -3264,7 +3298,7 @@ msgstr "Ei kansikuvia vietäväksi." msgid "No long blocks" msgstr "Ei pitkiä lohkoja" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Ei osumia haulle. Tyhjennä hakukenttä näyttääksesi koko soittolistan uudelleen." @@ -3278,11 +3312,11 @@ msgstr "Ei lyhyitä lohkoja" msgid "None" msgstr "Ei mitään" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Yksikään valitsemistasi kappaleista ei sovellu kopioitavaksi laitteelle" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normaali" @@ -3290,43 +3324,47 @@ msgstr "Normaali" msgid "Normal block type" msgstr "Normaalilohkotyyppi" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Ei saatavilla, kun käytössä on dynaaminen soittolista" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Ei yhdistetty" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Ei riittävästi sisältöä" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Ei riittävästi faneja" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Ei riittävästi jäseniä" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Ei tarpeeksi naapureita" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Ei asennettu" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Ei kirjautunut" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Ei liitetty - kaksoisnapsauta liittääksesi" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Mitään ei löytynyt" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Ilmoituksen tyyppi" @@ -3339,36 +3377,41 @@ msgstr "Ilmoitukset" msgid "Now Playing" msgstr "Nyt soi" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Kuvaruutunäytön esikatselu" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Pois" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Päällä" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3419,11 @@ msgid "" "192.168.x.x" msgstr "Hyväksy yhteydet vain seuraavilta verkkoalueilta:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Salli yhteydet vain paikallisverkosta" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Näytä vain ensimmäinen" @@ -3388,23 +3431,23 @@ msgstr "Näytä vain ensimmäinen" msgid "Opacity" msgstr "Läpinäkyvyys" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Avaa %1 selaimessa" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Avaa &ääni-CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Avaa OPML-tiedosto" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Avaa OPML-tiedosto..." @@ -3412,30 +3455,35 @@ msgstr "Avaa OPML-tiedosto..." msgid "Open device" msgstr "Avaa laite" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Avaa tiedosto..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Avaa Google Drivessa" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Avaa uudessa soittolistassa" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Avaa uudessa soittolistassa" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Avaa selaimessa" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Avaa..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Toiminto epäonnistui" @@ -3455,23 +3503,23 @@ msgstr "Valinnat..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Hallitse tiedostoja" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Hallitse tiedostoja..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Hallinnoidaan tiedostoja" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Alkuperäiset tunnisteet" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Muut valinnat" @@ -3479,7 +3527,7 @@ msgstr "Muut valinnat" msgid "Output" msgstr "Ulostulo" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Äänentoistolaite" @@ -3487,15 +3535,11 @@ msgstr "Äänentoistolaite" msgid "Output options" msgstr "Muunnoksen asetukset" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Äänentoistoliitännäinen" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Korvaa kaikki" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Korvaa olemassa olevat tiedostot" @@ -3507,15 +3551,15 @@ msgstr "Korvaa vain pienemmät" msgid "Owner" msgstr "Omistaja" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Käydään läpi Jamendo-luetteloa" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3568,20 @@ msgstr "Party" msgid "Password" msgstr "Salasana" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Keskeytä" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Keskeytä toisto" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Keskeytetty" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Esittäjä" @@ -3546,34 +3590,22 @@ msgstr "Esittäjä" msgid "Pixel" msgstr "Pikseli" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Pelkistetty sivupalkki" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Toista" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Toista esittäjä tai tunniste" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Toista esittäjäradio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Soittokertoja" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Toista omaa radiota..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Aloittaa tai pysäyttää soittamisen" @@ -3582,45 +3614,42 @@ msgstr "Aloittaa tai pysäyttää soittamisen" msgid "Play if there is nothing already playing" msgstr "Aloita toisto, jos mikään ei soi parhaillaan" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Toista tunnisteradio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Soita soittolistan . kappale" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Toista/Keskeytä" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Toisto" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Soittimen asetukset" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Soittolista" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Soittolista soitettiin loppuun" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Soittolistan valinnat" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Soittolistan tyyppi" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Soittolistat" @@ -3632,23 +3661,23 @@ msgstr "Sulje selain ja palaa Clementineen." msgid "Plugin status:" msgstr "Liitännäisen tila:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcastit" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Suosituimmat kappaleet" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Kuukauden suosituimmat kappaleet" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Suosituimmat kappaleet tänään" @@ -3657,22 +3686,23 @@ msgid "Popup duration" msgstr "Ponnahdusikkunan kesto" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Portti" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Esivahvistus" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Asetukset" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Asetukset..." @@ -3708,7 +3738,7 @@ msgstr "Paina näppäinyhdistelmää käyttääksesi" msgid "Press a key" msgstr "Paina näppäintä" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Paina näppäinyhdistelmää käyttääksesi %1 ..." @@ -3719,20 +3749,20 @@ msgstr "Kuvaruutunäytön valinnat" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Esikatselu" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Edellinen" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Edellinen kappale" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Tulosta versiotiedot" @@ -3740,21 +3770,25 @@ msgstr "Tulosta versiotiedot" msgid "Profile" msgstr "Profiili" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Edistyminen" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Edistyminen" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psykedeelinen" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Paina Wii Remoten nappia" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Aseta kappaleet satunnaiseen järjestykseen" @@ -3762,7 +3796,12 @@ msgstr "Aseta kappaleet satunnaiseen järjestykseen" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Laatu" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Laatu" @@ -3770,28 +3809,33 @@ msgstr "Laatu" msgid "Querying device..." msgstr "Kysytään tietoja laitteelta..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Jonohallinta" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Aseta valitut kappaleet jonoon" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Aseta kappale jonoon" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (sama äänenvoimakkuus kaikille kappaleille)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radiot" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Sadetta" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Sadetta" @@ -3799,48 +3843,48 @@ msgstr "Sadetta" msgid "Random visualization" msgstr "Satunnainen visualisointi" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Arvostele nykyinen kappale 0:n arvoiseksi" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Arvostele nykyinen kappale 1:n arvoiseksi" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Arvostele nykyinen kappale 2:n arvoiseksi" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Arvostele nykyinen kappale 3:n arvoiseksi" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Arvostele nykyinen kappale 4:n arvoiseksi" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Arvostele nykyinen kappale 5:n arvoiseksi" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Arvostelu" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Haluatko todella perua?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Uudelleenohjausraja on ylitetty, tarkista palvelimen asetukset." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Päivitä" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Päivitä luettelo" @@ -3848,19 +3892,15 @@ msgstr "Päivitä luettelo" msgid "Refresh channels" msgstr "Päivitä kanavat" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Päivitä kaverilista" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Päivitä asemalista" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Päivitä suoratoistokanavat" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3872,8 +3912,8 @@ msgstr "Muista Wii Remoten heilautus" msgid "Remember from last time" msgstr "Muista viime kerrasta" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Poista" @@ -3881,7 +3921,7 @@ msgstr "Poista" msgid "Remove action" msgstr "Poista toiminto" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Poista kaksoiskappaleet soittolistasta" @@ -3889,73 +3929,77 @@ msgstr "Poista kaksoiskappaleet soittolistasta" msgid "Remove folder" msgstr "Poista kansio" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Poista musiikkikirjastosta" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Poista kirjanmerkeistä" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Poista suosikeista" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Poista soittolistalta" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Poista soittolista" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Poista soittolistat" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Poistetaan kappaleita musiikkikirjastosta" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Poistetaan kappaleita suosikeista" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Nimeä soittolista \"%1\" uudelleen" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Nimeä uudelleen Grooveshark-soittolista" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Nimeä soittolista uudelleen" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Nimeä soittolista uudelleen..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Numeroi kappaleet tässä järjestyksessä ..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Kertaa" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Kertaa levy" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Kertaa soittolista" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Kertaa kappale" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Korvaa nykyinen soittolista" @@ -3964,15 +4008,15 @@ msgstr "Korvaa nykyinen soittolista" msgid "Replace the playlist" msgstr "Korvaa soittolista" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Korvaa välilyönnit alaviivoilla" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Replay Gain -tila" @@ -3980,24 +4024,24 @@ msgstr "Replay Gain -tila" msgid "Repopulate" msgstr "Täytä uudelleen" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Vaadi varmistuskoodi" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Oletukset" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Nollaa soittokerrat" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Toista kappale uudelleen, tai toista edellinen kappale, jos alle 8 sekunnin päästä alusta." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Rajoita ASCII-merkkeihin" @@ -4005,15 +4049,15 @@ msgstr "Rajoita ASCII-merkkeihin" msgid "Resume playback on start" msgstr "Jatka toistoa sovelluksen käynnistyttyä" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Noudetaan Grooveshark My Music -kappaleita" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Noudetaan Grooveshark-suosikkikappaleita" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Noudetaan Grooveshark-soittolistoja" @@ -4033,11 +4077,11 @@ msgstr "Kopioi levy" msgid "Rip CD" msgstr "Kopioi CD:n sisältö" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Kopioi ään-CD..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4049,25 +4093,25 @@ msgstr "Aja" msgid "SOCKS proxy" msgstr "SOCKS-välityspalvelin" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "SSL-käsittelyvirhe, tarkista palvelimen asetukset. SSLv3-valinta alla saattaa auttaa joissain tapauksissa." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Poista laite turvallisesti" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Poista laite turvallisesti kopioinnin jälkeen" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Näytteenottotaajuus" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Näytteenottotaajuus" @@ -4075,27 +4119,33 @@ msgstr "Näytteenottotaajuus" msgid "Save .mood files in your music library" msgstr "Tallenna .mood-tiedostot musiikkikirjastoon" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Tallenna levyn kansikuva" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Tallenna levyn kansikuva kiintolevylle..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Tallenna kuva" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Tallenna soittolista" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Tallenna soittolista" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Tallenna soittolista..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Tallenna asetus" @@ -4111,11 +4161,11 @@ msgstr "Tallenna tilastot tiedostoon, jos mahdollista" msgid "Save this stream in the Internet tab" msgstr "Tallenna tämä suoratoisto Internet-osioon" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Tallennetaan kappaleiden tilastoja kappaletiedostoihin" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Tallennetaan kappaleita" @@ -4127,7 +4177,7 @@ msgstr "Scalable sampling rate -profiili (SSR)" msgid "Scale size" msgstr "Skaalaa koko" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pisteet" @@ -4135,34 +4185,38 @@ msgstr "Pisteet" msgid "Scrobble tracks that I listen to" msgstr "Lähetä kappaletiedot kuuntelemistani kappaleista" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Etsi" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "Haku" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Etsi Icecast-asemia" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Etsi Jamendosta" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Etsi Magnatunesta" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Etsi Subsonicista" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Etsi automaattisesti" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Etsi kansikuvia..." @@ -4182,21 +4236,21 @@ msgstr "Etsi iTunesista" msgid "Search mode" msgstr "Hakutapa" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Haun asetukset" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Hakutulokset" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Hakusanat" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Etsitään Groovesharkista" @@ -4204,27 +4258,27 @@ msgstr "Etsitään Groovesharkista" msgid "Second level" msgstr "Toinen taso" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Siirry taaksepäin" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Siirry eteenpäin" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Siirry nykyisessä kappaleessa suhteellinen määrä" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Siirry nykyisessä kappaleessa tiettyyn kohtaan" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Valitse kaikki" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Poista valinnat" @@ -4232,7 +4286,7 @@ msgstr "Poista valinnat" msgid "Select background color:" msgstr "Valitse taustaväri:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Valitse taustakuva" @@ -4248,7 +4302,7 @@ msgstr "Valitse edustaväri:" msgid "Select visualizations" msgstr "Valitse visualisoinnit" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Valitse visualisoinnit..." @@ -4256,7 +4310,7 @@ msgstr "Valitse visualisoinnit..." msgid "Select..." msgstr "Valitse..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Sarjanumero" @@ -4268,51 +4322,51 @@ msgstr "Palvelimen osoite" msgid "Server details" msgstr "Palvelimen tiedot" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Ei yhteyttä palveluun" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Aseta %1 %2:een" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Säädä äänenvoimakkuus prosenttia" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Aseta arvo kaikille valituille kappaleille..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Asetukset" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Pikanäppäin" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Pikanäppäin toiminnolle %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Pikanäppäin toiminnolle %1 on jo olemassa" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Näytä" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Näytä kappaletiedot näytöllä" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Korosta soiva kappale hohtavalla animaatiolla" @@ -4340,15 +4394,15 @@ msgstr "Näytä ponnahdus tehtäväpalkista" msgid "Show a pretty OSD" msgstr "Näytä kuvaruutunäyttö" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Näytä tilapalkin yläpuolella" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Näytä kaikki kappaleet" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Näytä kaikki kappaleet" @@ -4360,32 +4414,36 @@ msgstr "Näytä kansikuva kirjastossa" msgid "Show dividers" msgstr "Näytä erottimet" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Näytä oikeassa koossa..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Näytä tiedostoselaimessa..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Näytä kirjastossa..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Näytä kohdassa \"Useita esittäjiä\"" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Näytä mielialapalkki" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Näytä vain kaksoiskappaleet" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Näytä vain vailla tunnistetta olevat" @@ -4394,8 +4452,8 @@ msgid "Show search suggestions" msgstr "Näytä hakuehdotukset" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Näytä \"tykkää\"- ja \"en tykkää\"-painikkeet" +msgid "Show the \"love\" button" +msgstr "Näytä \"Tykkää\"-painike" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4467,27 @@ msgstr "Näytä ilmoitusalueen kuvake" msgid "Show which sources are enabled and disabled" msgstr "Näytä mitkä lähteet ovat käytössä ja pois käytöstä" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Näytä/piilota" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Sekoita" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Sekoita levyt" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Sekoita kaikki" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Sekoita soittolista" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Sekoita tämän levyn kappaleet" @@ -4445,7 +4503,7 @@ msgstr "Kirjaudu ulos" msgid "Signing in..." msgstr "Kirjautuu sisään..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Samankaltaisia esittäjiä" @@ -4457,43 +4515,51 @@ msgstr "Koko" msgid "Size:" msgstr "Koko:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Siirry soittolistan edelliseen kappaleeseen" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Ohituskerrat" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Siirry soittolistan seuraavaan kappaleeseen" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Ohita valitut kappaleet" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Ohita kappale" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Pieni kansikuva" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Pieni sivupalkki" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Älykäs soittolista" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Älykkäät soittolistat" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4501,11 +4567,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Kappaletiedot" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Kappaletiedot" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogrammi" @@ -4525,15 +4591,23 @@ msgstr "Järjestä tyylin mukaan (Järjestä suosion mukaan)" msgid "Sort by station name" msgstr "Järjestä aseman nimen mukaan" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Järjestä soittolistan kappaleet aakkosjärjestykseen" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Järjestä kappaleet" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Järjestys" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Lähde" @@ -4549,7 +4623,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify-kirjautumisvirhe" @@ -4557,7 +4631,7 @@ msgstr "Spotify-kirjautumisvirhe" msgid "Spotify plugin" msgstr "Spotify-liitännäinen" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify-liitännäistä ei ole asennettu" @@ -4565,77 +4639,77 @@ msgstr "Spotify-liitännäistä ei ole asennettu" msgid "Standard" msgstr "Normaali" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Tähdellä merkitty" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Aloita levyn kopiointi" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Aloita muunnos" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Kirjoita jotain yllä olevaan hakukenttään täyttääksesi tämän hakutuloslistan" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Aloittaa %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Aloittaa ..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Asemat" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Pysäytä" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Lopeta jälkeen" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Pysäytä toistettavan kappaleen jälkeen" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Pysäytä toisto" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Lopeta soitto nykyisen kappaleen jälkeen" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Lopeta toisto kappaleen jälkeen: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Pysäytetty" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Suoratoisto" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4719,7 @@ msgstr "Suoratoisto Subsonic-palvelimelta vaatii kelvollisen palvelinlisenssin 3 msgid "Streaming membership" msgstr "Suoratoistojäsenyys" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Tilatut soittolistat" @@ -4653,7 +4727,7 @@ msgstr "Tilatut soittolistat" msgid "Subscribers" msgstr "Tilaajat" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4661,12 +4735,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Onnistui!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Onnistuneesti kirjoitettu %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Ehdotetut tunnisteet" @@ -4675,13 +4749,13 @@ msgstr "Ehdotetut tunnisteet" msgid "Summary" msgstr "Yhteenveto" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Erittäin nopea (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Erittäin suuri (2048x2048)" @@ -4693,43 +4767,35 @@ msgstr "Tuetut muodot" msgid "Synchronize statistics to files now" msgstr "Synkronoi tilastot tiedostoihin nyt" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synkronoi Spotify saapuneet" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synkronoi Spotify soittolistan" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synkronoi Spotify arvostellut kappaleet" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Järjestelmävärit" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Välilehdet ylhäällä" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tunniste" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Tunnistenoutaja" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Tunnisteradio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Tavoite bitrate" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4737,11 +4803,11 @@ msgstr "Techno" msgid "Text options" msgstr "Tekstivalinnat" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Kiitokset" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "\"%1\"-komentoa ei voitu suorittaa." @@ -4750,17 +4816,12 @@ msgstr "\"%1\"-komentoa ei voitu suorittaa." msgid "The album cover of the currently playing song" msgstr "Parhaillaan soivan kappaleen levyn kansikuva" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Kansio %1 ei ole kelvollinen" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Soittolista \"%1\" oli tyhjä tai sitä ei pystytty ladata." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Toisen arvo pitää olla suurempi kuin ensimmäinen!" @@ -4768,40 +4829,40 @@ msgstr "Toisen arvo pitää olla suurempi kuin ensimmäinen!" msgid "The site you requested does not exist!" msgstr "Hakemaasi sivua ei ole olemassa!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Hakemasi sivu ei ole kuva!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Subsonic-palvelimen kokeiluaika on ohi. Lahjoita saadaksesi lisenssiavaimen. Lisätietoja osoitteessa subsonic.org." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Versio, johon juuri päivitit Clementinen, vaatii kirjaston täydellisen läpikäynnin alla listattujen uusien ominaisuuksien vuoksi:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Albumilla on muita kappaleita" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Virhe yhteydessä gpodder.netiin" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Metatietojen hakemisessa Magnatune palvelusta ilmeni virhe" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Virhe jäsennettäessä vastausta iTunes Storesta" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4874,13 @@ msgid "" "deleted:" msgstr "Kappaleita poistaessa ilmeni virheitä. Seuraavien kappaleiden poisto epäonnistui:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Nämä tiedostot poistetaan laitteelta, haluatko varmasti jatkaa?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4900,13 @@ msgstr "Nämä asetukset ovat käytössä \"Muunna eri muotoon\"-ikkunassa, ja m msgid "Third level" msgstr "Kolmas taso" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Tämä toiminto luo tietokannan, jonka koko voi olla jopa 150 megatavua.\nHaluatko silti jatkaa?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Tämä levy ei ole saatavilla haluamassasi muodossa" @@ -4859,11 +4920,11 @@ msgstr "Laitteen tulee olla yhdistettynä ja avattuna, jotta Clementine voi tark msgid "This device supports the following file formats:" msgstr "Laite tukee seuraavia tiedostomuotoja:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Laite ei tule toimimaan kunnolla" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Kyseessä on MTP-laite, mutta Clementine on käännetty ilman libmtp-tukea." @@ -4872,7 +4933,7 @@ msgstr "Kyseessä on MTP-laite, mutta Clementine on käännetty ilman libmtp-tuk msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Kyseessä on iPod, mutta Clementine on käännetty ilman libgpod-tukea." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4943,33 @@ msgstr "Kytkit tämän laitteen tähän tietokoneeseen ensimmäistä kertaa. Cle msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Tämän valinnan voi vaihtaa asetuksien kohdasta \"Toiminta\"." -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Suoratoisto on tarjolla vain maksaville asiakkaille" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Tämän tyyppinen laite ei ole tuettu: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Nimi" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Ennen kuin alat käyttää Grooveshark-radiota, sinun tulisi kuunnella vähintään muutama kappale" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Tänään" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Kuvaruutunäyttö päälle / pois" @@ -4916,27 +4977,27 @@ msgstr "Kuvaruutunäyttö päälle / pois" msgid "Toggle fullscreen" msgstr "Koko näytön tila" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Vaihda jonon tila" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Valitse scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Kuvaruutunäyttö päälle / pois" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Huomenna" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Liian monta uudelleenohjausta" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Suosituimmat kappaleet" @@ -4944,21 +5005,25 @@ msgstr "Suosituimmat kappaleet" msgid "Total albums:" msgstr "Levyjä yhteensä:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Yhteensä tavuja siirretty" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Yhteensä verkko pyyntöjä tehty" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Kappale" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Kappaleet" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Muunna eri muotoon" @@ -4970,7 +5035,7 @@ msgstr "Muunnosloki" msgid "Transcoding" msgstr "Muunnos" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Muunnetaan %1 tiedostoa käyttäen %2 säiettä" @@ -4979,11 +5044,11 @@ msgstr "Muunnetaan %1 tiedostoa käyttäen %2 säiettä" msgid "Transcoding options" msgstr "Muunnosvalinnat" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4991,72 +5056,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Sammuta" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Osoite/osoitteet" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One -salasana" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One -käyttäjätunnus" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Kohteen %1 lataus epäonnistui (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Tuntematon" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Tuntematon sisältötyyppi" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Tuntematon virhe" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Poista kansikuva" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Poista tilaus" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Tulevat konsertit" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Päivitä" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Päivitä Grooveshark-soittolista" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Päivitä kaikki podcastit" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Päivitä muuttuneet kirjastokansiot" @@ -5064,7 +5129,7 @@ msgstr "Päivitä muuttuneet kirjastokansiot" msgid "Update the library when Clementine starts" msgstr "Päivitä kirjasto Clementine käynnistyessä" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Päivitä tämä podcast" @@ -5072,21 +5137,21 @@ msgstr "Päivitä tämä podcast" msgid "Updating" msgstr "Päivittäminen" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Päivitetään %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Päivitetään %1 %..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Päivitetään kirjastoa" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Käyttötaso" @@ -5094,11 +5159,11 @@ msgstr "Käyttötaso" msgid "Use Album Artist tag when available" msgstr "Käytä 'Album Artist' -tietuetta, jos mahdollista" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Käytä Gnomen pikanäppäimiä" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Käytä Replay Gainin metadataa, jos saatavilla" @@ -5118,7 +5183,7 @@ msgstr "Käytä omia värimäärityksiä" msgid "Use a custom message for notifications" msgstr "Käytä omaa viestiä ilmoituksissa" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Käytä verkkokaukosäädintä" @@ -5158,20 +5223,20 @@ msgstr "Käytä järjestelmän välityspalvelinasetuksia" msgid "Use volume normalisation" msgstr "Käytä äänen normalisointia" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Käytetty" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Käyttäjällä %1 ei ole Grooveshark Anywhere -tiliä" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Käyttöliittymä" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5258,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Muuttuva bittinopeus" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Useita esittäjiä" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versio %1" @@ -5211,7 +5276,7 @@ msgstr "Näkymä" msgid "Visualization mode" msgstr "Visualisointitila" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualisoinnit" @@ -5219,11 +5284,15 @@ msgstr "Visualisoinnit" msgid "Visualizations Settings" msgstr "Visualisointiasetukset" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Äänenvoimakkuus %1 %" @@ -5241,11 +5310,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Varoita suljettaessa soittolistan sisältävää välilehteä" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5322,7 @@ msgstr "Wav" msgid "Website" msgstr "Verkkosivu" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Viikkoa" @@ -5279,32 +5348,32 @@ msgstr "Voisit kokeilla..." msgid "Wide band (WB)" msgstr "Laajakaistainen (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii-ohjain %1: aktivoitu" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii-ohjain %1: yhdistetty" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii-ohjain %1: kriittinen lataustaso (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii-ohjain %1: kytketty pois" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii-ohjain %1: yhteys katkaistu" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii-ohjain %1: matala lataustaso (%2%)" @@ -5325,7 +5394,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media -ääni" @@ -5333,25 +5402,25 @@ msgstr "Windows Media -ääni" msgid "Without cover:" msgstr "Ilman kansikuvaa:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Haluatko siirtä albumin muut kappaleet luokkaan \"Useita esittäjiä\"?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Haluatko suorittaa kirjaston läpikäynnin nyt?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Kirjoita kaikki kappaletilastot kappaletiedostoihin" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Väärä käyttäjätunnus tai salasana." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5432,11 @@ msgstr "Vuosi" msgid "Year - Album" msgstr "Vuosi - Levy" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Vuotta" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Eilen" @@ -5375,13 +5444,13 @@ msgstr "Eilen" msgid "You are about to download the following albums" msgstr "Olet aikeissa ladata seuraavat levyt" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Haluatko varmasti poistaa %1 soittolistaa suosikeistasi?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5460,12 @@ msgstr "Olet aikeissa poistaa soittolistan, joka ei ole osa suosikkisoittolistoj msgid "You are not signed in." msgstr "Et ole kirjautunut sisään" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Olet kirjautunut tunnuksella %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Olet kirjautunut sisään." @@ -5404,13 +5473,13 @@ msgstr "Olet kirjautunut sisään." msgid "You can change the way the songs in the library are organised." msgstr "Voit vaihtaa tapaa, miten kappaleet järjestetään kirjastossa." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Voit kuunnella ilmaiseksi ilman käyttäjätunnusta, mutta Premium-jäsenet voivat kuunnella paremmalla äänenlaadulla ilman mainoksia." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5489,6 @@ msgstr "Voit kuunnella Magnatune-kappaleita ilmaiseksi ilman tunnusta. Jäsenyyd msgid "You can listen to background streams at the same time as other music." msgstr "Voit kuunnella taustaääniä samalla kun kuuntelet haluamaasi kappaletta." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Voit lähettää kappaletietosi ilmaiseksi, mutta vain maksavat käyttäjät voivat kuunnella Last.fm-suoratoistoa." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Voit käyttää Wii-ohjainta kauko-ohjaimena Clementinen hallintaan. Lisätietoja wiki-sivulla.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Sinulla ei ole Grooveshark Anywhere -tiliä." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Sinulla ei ole Spotify Premium tiliä." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Käytössäsi ei ole aktiivista tilausta" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Sinun ei tarvitse kirjautua sisään etsiäksesi ja kuunnellaksesi musiikkia SoundCloudista. Omien soittolistojen ja suoratoiston käyttäminen vaatii kuitenkin kirjautumisen." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Sinut on kirjattu ulos Spotifysta. Anna salasanasi uudelleen Asetukset-ikkunassa." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Sinut on kirjattu ulos Spotifysta. Anna salasanasi uudelleen." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Tykkäät tästä kappaleesta" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Avaa Järjestelmän asetukset ja salli Clementinen \"hallita tietokonettasi\" käyttääksesi Clementinen yleisiä pikanäppäimiä." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5547,11 @@ msgstr "Avaa Järjestelmäasetukset -> Käyttöapu ja ota käyttön \", 2013 # arnaudbienner , 2013-2014 # arnaudbienner , 2011-2012 -# Belvar , 2011 +# Belvar , 2011 # Brice , 2011 # Brice , 2011 # djabal , 2013 @@ -18,7 +18,7 @@ # Fl0w3D , 2013 # Gabriel Cossette , 2012 # hiveNzin0 , 2011 -# Belvar , 2011 +# Belvar , 2011 # hiveNzin0 , 2011 # IrieZion , 2012 # jb78180 , 2012 @@ -32,22 +32,22 @@ # mberta , 2012 # Marco Tulio Costa , 2012 # Faketag Fakenick <>, 2012 -# Tubuntu, 2013-2014 +# Tubuntu , 2013-2014 # IrieZion , 2012 # werdeil , 2012 # werdeil , 2012 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-31 19:36+0000\n" -"Last-Translator: arnaudbienner \n" +"PO-Revision-Date: 2014-05-12 07:05+0000\n" +"Last-Translator: TTOO \n" "Language-Team: French (http://www.transifex.com/projects/p/clementine/language/fr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -72,9 +72,9 @@ msgstr " jours" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -87,11 +87,16 @@ msgstr " pt" msgid " seconds" msgstr " secondes" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " morceaux" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 morceaux)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albums" @@ -101,12 +106,12 @@ msgstr "%1 albums" msgid "%1 days" msgstr "%1 jours" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "Il y a %1 jours" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 sur %2" @@ -116,48 +121,48 @@ msgstr "%1 sur %2" msgid "%1 playlists (%2)" msgstr "%1 listes de lecture (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 sélectionnés de" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 morceau" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 morceaux" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 morceaux trouvés" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 morceaux trouvés (%2 affichés)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 pistes" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 transférés" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1 : Module wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 autres auditeurs" @@ -171,18 +176,21 @@ msgstr "%L1 écoutes au total" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n échoué" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n terminé" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n manquant" @@ -194,24 +202,24 @@ msgstr "&Aligner le texte" msgid "&Center" msgstr "&Centrer" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personnaliser" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Aide" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Masquer %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Masquer..." @@ -219,23 +227,23 @@ msgstr "Masquer..." msgid "&Left" msgstr "&Gauche" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Musique" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "Aucu&n" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Liste de lecture" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Quitter" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Mode répétition" @@ -243,23 +251,23 @@ msgstr "Mode répétition" msgid "&Right" msgstr "&Droite" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Mode aléatoire" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Étirer les &colonnes pour s'adapter à la fenêtre" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Outils" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(différent pour plusieurs morceaux)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "et tous les contributeurs de Amarok" @@ -279,14 +287,10 @@ msgstr "0px" msgid "1 day" msgstr "1 jour" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "Une piste" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -296,7 +300,7 @@ msgstr "MP3 128k" msgid "40%" msgstr "40 %" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 pistes aléatoires" @@ -304,12 +308,6 @@ msgstr "50 pistes aléatoires" msgid "Upgrade to Premium now" msgstr "Mettre à jour vers la version Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Créer un nouveau compte ou réinitialiser votre mot de passe" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -320,6 +318,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Par défaut, Clementine sauvegarde les notes et les autres statistiques de vos morceaux dans une base de données séparée et ne modifiera pas vos fichiers.

Si cette option est sélectionnée, Clementine sauvegardera ces informations à la fois dans cette base de données et directement dans le fichier écouté, chaque fois qu'elles changeront.

Cela peut ne pas fonctionner pour tout les formats, car il n'existe pas de standard pour ça. De plus, les autres lecteurs de musique ne savent pas tous lire ces données.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Préfixe un mot par un nom de champ pour limiter la recherche à ce champ, ex. artiste:Bode recherche tous les artistes contenant le mot Bode dans la bibliothèque.

Champs disponibles: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -328,38 +337,38 @@ msgid "" "activated.

" msgstr "

Cela va enregistrer les notes et statistiques des morceaux dans les tags des fichiers pour tous les morceaux de votre bibliothèque.

Ce n'est pas nécessaire si l'option « Enregistrer les notes dans les tags du fichier si possible » a déjà été activée.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Les champs ont pour préfixe %. Exemples : %artist %album %title

\n\n

Si vous placez des accolades autour d'une portion de texte contenant un champ, celle-ci ne sera pas affichée si le contenu du champ n'est pas renseigné.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Un compte Grooveshark Anywhere est nécessaire." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Un compte Spotify Premium est nécessaire." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Un client peut se connecter seulement si un code correct a été saisi." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Une liste de lecture intelligente est une liste dynamique de morceaux provenants de votre bibliothèque. Il y a différents types de listes de lecture intelligentes, offrant différentes façons de sélectionner des morceaux." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Un morceau sera inclus dans la liste de lecture s'il correspond à ces conditions." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -379,36 +388,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "GLOIRE AU CRAPAUD HYPNOTIQUE !" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Abandonner" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "À propos de %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "À propos de Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "À propos de Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Détails du compte" @@ -420,11 +428,15 @@ msgstr "Informations sur le compte (Premium)" msgid "Action" msgstr "Action" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Activer/désactiver Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Flux des activités" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Ajouter un Podcast" @@ -440,39 +452,39 @@ msgstr "Ajouter un saut de ligne, si cela est supporté par le type de notificat msgid "Add action" msgstr "Ajouter une action" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Ajouter un autre flux..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Ajouter un dossier..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Ajouter un fichier" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Ajouter un fichier à transcoder" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Ajouter des fichiers à transcoder" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Ajouter un fichier..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Ajouter des fichiers à transcoder" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Ajouter un dossier" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Ajouter un dossier..." @@ -484,11 +496,11 @@ msgstr "Ajouter un nouveau dossier..." msgid "Add podcast" msgstr "Ajouter un podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Ajouter un podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Ajouter un terme de recherche" @@ -552,6 +564,10 @@ msgstr "Ajouter le compteur de sauts du morceau" msgid "Add song title tag" msgstr "Ajouter le tag titre du morceau" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Ajouter le morceau au cache" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Ajouter le tag piste du morceau" @@ -560,22 +576,34 @@ msgstr "Ajouter le tag piste du morceau" msgid "Add song year tag" msgstr "Ajouter le tag année du morceau" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Ajoute les pistes à « Ma musique » lorsque le bouton « j'aime » est cliqué" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Ajouter un flux..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Ajouter aux favoris Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Ajouter aux listes de lectures Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Ajouter à Ma musique" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Ajouter à une autre liste de lecture" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Ajouter aux favoris" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Ajouter à la liste de lecture" @@ -584,6 +612,10 @@ msgstr "Ajouter à la liste de lecture" msgid "Add to the queue" msgstr "Ajouter à la liste d'attente" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Ajoute l'utilisateur ou le groupe au favoris" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Ajouter des actions wiimote" @@ -613,15 +645,15 @@ msgstr "Ajouté aujourd'hui" msgid "Added within three months" msgstr "Ajouté au cours des 3 derniers mois" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Ajout du morceau dans ma musique" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Ajout du morceau aux favoris" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Groupement avancé..." @@ -629,12 +661,12 @@ msgstr "Groupement avancé..." msgid "After " msgstr "Après " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Après avoir copié..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -642,11 +674,11 @@ msgstr "Après avoir copié..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (volume idéal pour toutes les pistes)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -656,35 +688,36 @@ msgstr "Artiste de l'album" msgid "Album cover" msgstr "Pochette d'album" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informations de l'album sur jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albums ayant une pochette" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albums sans pochette" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Tous les fichiers (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Gloire au crapaud hypnotique !" +msgstr "Gloire au crapaud hypnotique!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Tous les albums" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Tous les artistes" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Tous les fichiers (*)" @@ -693,19 +726,19 @@ msgstr "Tous les fichiers (*)" msgid "All playlists (%1)" msgstr "Toutes les listes de lecture (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Tous les traducteurs" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Toutes les pistes" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Autoriser un client à télécharger de la musique à partir de cet ordinateur." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Autoriser les téléchargements" @@ -730,30 +763,30 @@ msgstr "Toujours afficher la fenêtre principale" msgid "Always start playing" msgstr "Toujours commencer à lire" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Un module externe est requis pour pouvoir utiliser Spotify. Voulez-vous le télécharger et l'installer maintenant ?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Une erreur est survenue lors du chargement de la base de données iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Une erreur est survenue pendant l'écriture des métadonnées dans « %1 »" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Une erreur inconnue est survenue." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Et :" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "En colère" @@ -762,13 +795,13 @@ msgstr "En colère" msgid "Appearance" msgstr "Apparence" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Ajouter des fichiers/URLs à la liste de lecture" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Ajouter à la liste de lecture actuelle" @@ -776,52 +809,47 @@ msgstr "Ajouter à la liste de lecture actuelle" msgid "Append to the playlist" msgstr "Ajouter à la liste de lecture" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Appliquer une compression pour prévenir les coupures" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Êtes-vous sûr de vouloir supprimer la valeur prédéfinie « %1 »" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Êtes-vous sur de vouloir supprimer cette liste de lecture ?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Êtes vous sûr de vouloir réinitialiser les statistiques de ce morceau ?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Êtes-vous sûr de vouloir enregistrer les statistiques du morceau dans le fichier du morceau pour tous les morceaux de votre bibliothèque ?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artiste" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Info artiste" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radio par artiste" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Mots-clés de l'artiste" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Initiale de l'artiste" @@ -829,9 +857,13 @@ msgstr "Initiale de l'artiste" msgid "Audio format" msgstr "Format audio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Sortie audio" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Échec de l'authentification" @@ -839,7 +871,7 @@ msgstr "Échec de l'authentification" msgid "Author" msgstr "Auteur" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Auteurs" @@ -855,7 +887,7 @@ msgstr "Mise à jour automatique" msgid "Automatically open single categories in the library tree" msgstr "Ouvrir automatiquement les catégories seules dans l'arbre de la bibliothèque" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Disponible" @@ -863,15 +895,15 @@ msgstr "Disponible" msgid "Average bitrate" msgstr "Débit moyen" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Taille moyenne de l'image" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -892,7 +924,7 @@ msgstr "Image d'arrière-plan" msgid "Background opacity" msgstr "Opacité de l'arrière-plan" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Sauvegarde de la base de données" @@ -900,11 +932,7 @@ msgstr "Sauvegarde de la base de données" msgid "Balance" msgstr "Balance" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Je déteste" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Spectrogramme à barres" @@ -924,18 +952,17 @@ msgstr "Comportement" msgid "Best" msgstr "Meilleur" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biographie de %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Débit" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -943,7 +970,12 @@ msgstr "Débit" msgid "Bitrate" msgstr "Débit" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Débit binaire" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Spectrogramme avec blocs" @@ -959,7 +991,7 @@ msgstr "Niveau de flou" msgid "Body" msgstr "Corps" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Spectrogramme « Boom »" @@ -973,11 +1005,11 @@ msgstr "Box" msgid "Browse..." msgstr "Parcourir..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Durée du tampon" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Mise en mémoire tampon" @@ -989,43 +1021,66 @@ msgstr "Mais ces sources sont désactivées :" msgid "Buttons" msgstr "Boutons" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Par défaut, Grooveshark trie les morceaux par date d'ajout" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Support des CUE sheet." -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Chemin du cache :" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Mise en cache" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Mise en cache %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Annuler" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Captcha est nécessaire.\nEssayez de vous connecter à Vk.com avec votre navigateur pour régler le problème." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Changer la couverture de l'album" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Changer la taille de la police..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Changer le mode de répétition" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Changer le raccourci..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Changer le mode aléatoire" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Changer la langue" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1035,15 +1090,19 @@ msgstr "Le changement de la préférence de lecture monophonique sera effectif p msgid "Check for new episodes" msgstr "Chercher de nouveaux épisodes" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Vérifier les mises à jour" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Choisissez le répertoire de cache Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Choisissez un nom pour votre liste de lecture intelligente" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Choisir automatiquement" @@ -1059,11 +1118,11 @@ msgstr "Choisir une police de caractères..." msgid "Choose from the list" msgstr "Choisir depuis la liste" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Choisissez comment la liste de lecture est triée et combien de morceaux elle contient." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Choisir le répertoire de téléchargement des podcasts" @@ -1072,7 +1131,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Sites web que vous voulez utiliser pour la recherche de paroles." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Classique" @@ -1080,17 +1139,17 @@ msgstr "Classique" msgid "Cleaning up" msgstr "Nettoyage en cours" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Effacer" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Vider la liste de lecture" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1103,8 +1162,8 @@ msgstr "Erreur de Clementine" msgid "Clementine Orange" msgstr "Orange Clémentine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Visualisation Clementine" @@ -1126,9 +1185,9 @@ msgstr "Clementine peut jouer les morceaux que vous avez envoyé sur Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine peut jouer les morceaux que vous avez envoyé sur Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine peut jouer les morceaux que vous avez envoyé sur Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine peut jouer les morceaux que vous avez envoyé sur OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1141,20 +1200,13 @@ msgid "" "an account." msgstr "Clementine peut synchroniser vos abonnements de podcasts avec d'autres ordinateurs et applications. Créer un compte." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine n'a pu charger les visualisations projectM. Vérifiez que Clementine est installé correctement." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine ne peut récupérer le statut de votre abonnement car il y a des problèmes avec votre connexion. Les morceaux joués vont être mis en cache et seront envoyés plus tard à Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Visionneur d'images de Clementine" @@ -1166,11 +1218,11 @@ msgstr "Clementine n'a pu trouver aucun résultat pour ce fichier" msgid "Clementine will find music in:" msgstr "Clementine trouvera de la musique dans :" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Cliquez ici pour créer votre bibliothèque musicale" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1180,12 +1232,15 @@ msgstr "Cliquez ici pour ajouter cette liste de lecture aux favoris et elle sera msgid "Click to toggle between remaining time and total time" msgstr "Cliquez pour basculer entre le temps restant et le temps total" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." -msgstr "Cliquer sur le bouton Login pour ouvrir votre navigateur web. Vous devriez retourner dans Clementine après vous être connecté." +msgstr "Cliquer sur le bouton « Se connecter » pour ouvrir votre navigateur web. Vous devriez retourner dans Clementine une fois connecté." #: widgets/didyoumean.cpp:37 msgid "Close" @@ -1195,19 +1250,19 @@ msgstr "Fermer" msgid "Close playlist" msgstr "Fermer la liste de lecture" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Fermer la visualisation" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Fermer cette fenêtre annulera le téléchargement." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Fermer cette fenêtre arrêtera la recherche de pochette d'albums." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1215,73 +1270,78 @@ msgstr "Club" msgid "Colors" msgstr "Couleurs" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Liste séparée par une virgule des classes:niveau, le niveau étant entre 1 et 3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Commentaire" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Radio communautaire" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Compléter les tags automatiquement" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Compléter les tags automatiquement..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compositeur" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Configurer %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Configurer Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configurer Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Configurer Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configurer les raccourcis clavier" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configurer Spotify…" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Configurer Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Configuration de Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Configurer la recherche globale..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configurer votre bibliothèque..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Configurer les podcasts..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configurer..." @@ -1289,11 +1349,11 @@ msgstr "Configurer..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Connecter Wii Remote en utilisant l'action activer/désactiver" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Connexion du périphérique" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Connexion à Spotify" @@ -1303,12 +1363,16 @@ msgid "" "http://localhost:4040/" msgstr "Connexion refusée par le serveur. Vérifiez son URL. Exemple : http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Connexion expirée. Vérifiez l'URL du serveur. Exemple : http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Problème de connexion ou audio désactivé par le propriétaire" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Console" @@ -1324,17 +1388,21 @@ msgstr "Convertir toutes les musiques" msgid "Convert any music that the device can't play" msgstr "Convertir la musique que le périphérique ne peut pas lire" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Copier l'URL partagée dans le presse-papier" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Copier dans le presse papier" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Copier sur le périphérique" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copier vers la bibliothèque..." @@ -1342,156 +1410,152 @@ msgstr "Copier vers la bibliothèque..." msgid "Copyright" msgstr "Droit d'auteur" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Impossible de se connecter à Subsonic ; vérifiez l'URL du serveur. Par exemple : http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Impossible de créer l'élément GStreamer « %1 » - vérifier que les modules externes GStreamer nécessaires sont installés." -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "La liste de lecture n'a pas pu être créée" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Impossible de trouver un multiplexeur pour %1, vérifiez que les bons modules externes GStreamer sont installés." -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Impossible de trouver un encodeur pour %1, vérifiez que les bons modules externes GStreamer sont installés." -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Impossible de charger la station radio last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Impossible d'ouvrir le fichier de sortie %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Gestionnaire de pochettes" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Pochette depuis une image embarquée" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Pochette automatiquement chargée depuis %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Pochette désactivée manuellement" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Pochette non définie" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Pochette définie depuis %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Pochettes depuis %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Créer une nouvelle liste de lecture Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Appliquer un fondu lors des changements de piste automatiques" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Appliquer un fondu lors des changements de piste manuels" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1499,7 +1563,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personnalisé" @@ -1511,54 +1575,50 @@ msgstr "Image personnalisée :" msgid "Custom message settings" msgstr "Paramètres de message personnalisé" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Radio personnalisée" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personnalisée..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Chemin DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Danse" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Une corruption de la base de données a été détectée. Veuillez lire https://code.google.com/p/clementine-player/wiki/DatabaseCorruption pour obtenir des informations sur la restauration de votre base de données." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Date de création" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Date de modification" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Jours" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Dé&faut" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Baisser le volume de 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Diminuer le volume de pour-cent" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Diminuer le volume" @@ -1566,6 +1626,11 @@ msgstr "Diminuer le volume" msgid "Default background image" msgstr "Image d'arrière-plan par défaut" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Périphérique par défaut à %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Par défaut" @@ -1574,30 +1639,30 @@ msgstr "Par défaut" msgid "Delay between visualizations" msgstr "Délai entre les visualisations" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Supprimer" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Supprimer la liste de lecture Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Effacer les données téléchargées" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Supprimer les fichiers" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Supprimer du périphérique..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Supprimer du disque..." @@ -1605,31 +1670,31 @@ msgstr "Supprimer du disque..." msgid "Delete played episodes" msgstr "Effacer les épisodes lus" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Effacer le pré-réglage" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Supprimer la liste de lecture intelligente" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Supprimer les fichiers originaux" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Suppression des fichiers" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Enlever les pistes sélectionnées de la file d'attente" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Enlever cette piste de la file d'attente" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destination" @@ -1638,7 +1703,7 @@ msgstr "Destination" msgid "Details..." msgstr "Détails..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Périphérique" @@ -1650,15 +1715,15 @@ msgstr "Propriétés du périphérique" msgid "Device name" msgstr "Nom du périphérique" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Propriétés du périphérique..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Périphériques" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Boîte de dialogue" @@ -1695,12 +1760,17 @@ msgstr "Désactiver la durée" msgid "Disable moodbar generation" msgstr "Désactiver la génération des barres d'humeur" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Désactivées" +msgstr "Désactivé" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Désactivé" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "CD" @@ -1710,15 +1780,15 @@ msgid "Discontinuous transmission" msgstr "Transmission discontinue" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Options d'affichage" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Afficher le menu à l'écran" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Refaire une analyse complète de la bibliothèque" @@ -1730,27 +1800,27 @@ msgstr "Ne pas convertir la musique" msgid "Do not overwrite" msgstr "Ne pas écraser" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ne pas répéter" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Ne pas classer dans la catégorie « Compilations d'artistes »" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Aléatoire : désactivé" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ne pas arrêter !" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Faire un don" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Double-cliquer pour ouvrir" @@ -1758,12 +1828,13 @@ msgstr "Double-cliquer pour ouvrir" msgid "Double clicking a song will..." msgstr "Double-cliquer sur un morceau..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Télécharger %n épisodes" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Dossier de téléchargement" @@ -1779,7 +1850,7 @@ msgstr "Adhésion au téléchargement" msgid "Download new episodes automatically" msgstr "Télécharger les nouveaux épisodes automatiquement" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Téléchargement en file" @@ -1787,15 +1858,15 @@ msgstr "Téléchargement en file" msgid "Download the Android app" msgstr "Télécharger l'application Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Télécharger cet album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Télécharger cet album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Télécharger cet épisode" @@ -1803,7 +1874,7 @@ msgstr "Télécharger cet épisode" msgid "Download..." msgstr "Télécharger..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Téléchargement (%1%)..." @@ -1812,23 +1883,23 @@ msgstr "Téléchargement (%1%)..." msgid "Downloading Icecast directory" msgstr "Téléchargement du catalogue d'Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Téléchargement du catalogue de Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Téléchargement du catalogue Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Téléchargement du module Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Téléchargement des métadonnées" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Déplacer pour repositionner" @@ -1848,20 +1919,20 @@ msgstr "Durée" msgid "Dynamic mode is on" msgstr "Le mode dynamique est activé" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Mix aléatoire dynamique" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Éditer la liste de lecture intelligente..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Modifier le tag « %1 »..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Modifier le tag..." @@ -1873,16 +1944,16 @@ msgstr "Modifier les tags" msgid "Edit track information" msgstr "Modifier la description de la piste" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Modifier la description de la piste..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Modifier la description des pistes..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Éditer..." @@ -1890,6 +1961,10 @@ msgstr "Éditer..." msgid "Enable Wii Remote support" msgstr "Activer le support Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Activer la mise en cache automatique" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Activer l'égaliseur" @@ -1904,7 +1979,7 @@ msgid "" "displayed in this order." msgstr "Activer les sources ci-dessous pour les inclure dans les résultats de la recherche.\nLes résultats seront affichés dans cet ordre." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Activer/désactiver le scrobbling Last.fm" @@ -1932,15 +2007,10 @@ msgstr "Saisissez une URL pour télécharger une pochette depuis Internet" msgid "Enter a filename for exported covers (no extension):" msgstr "Entrez un nom de fichier pour les pochettes exportées (sans extension) :" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Saisissez un nom pour la liste de lecture" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Saisissez un nom d'artiste ou n'importe quel tag pour écouter la radio Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1954,7 +2024,7 @@ msgstr "Saisissez un mot-clé ci-dessous pour trouver des podcasts sur l'Itunes msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Saisissez un mot-clé ci-dessous pour trouver des podcasts sur gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Saisissez les termes à rechercher ici" @@ -1963,11 +2033,11 @@ msgstr "Saisissez les termes à rechercher ici" msgid "Enter the URL of an internet radio stream:" msgstr "Saisissez l'adresse du flux d'une radio internet :" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Saisissez le nom du dossier" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Saisissez cette adresse IP dans l'application pour vous connecter à Clementine." @@ -1975,21 +2045,22 @@ msgstr "Saisissez cette adresse IP dans l'application pour vous connecter à Cle msgid "Entire collection" msgstr "Collection complète" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Égaliseur" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Equivalent à --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Equivalent à --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Erreur" @@ -1997,38 +2068,38 @@ msgstr "Erreur" msgid "Error connecting MTP device" msgstr "Erreur durant la connexion au périphérique MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Erreur lors de la copie des morceaux" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Erreur lors de la suppression des morceaux" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Erreur lors du téléchargement du module Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Erreur lors du chargement de %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Erreur du chargement de la liste de lecture di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Erreur lors du traitement de %1 : %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Erreur durant le chargement du CD audio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Déjà joués" @@ -2060,7 +2131,7 @@ msgstr "Toutes les 6 heures" msgid "Every hour" msgstr "Toutes les heures" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Excepté entre les pistes d'un même album ou d'une même CUE sheet" @@ -2072,7 +2143,7 @@ msgstr "Pochettes existantes" msgid "Expand" msgstr "Agrandir" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Expire au %1" @@ -2093,36 +2164,36 @@ msgstr "Exporter les pochettes téléchargées" msgid "Export embedded covers" msgstr "Exporter les pochettes intégrées" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Export terminé" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "%1 pochettes exportées sur %2 (%3 ignorées)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2132,42 +2203,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Fondu lors de la mise en pause et de la reprise" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Terminer par un fondu quand une piste s'arrête" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Fondu" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Durée du fondu" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Échec lors de la lecture du CD" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "La récupération du répertoire a échoué" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "La récupération des podcasts a échoué" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Le chargement du podcast a échoué" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "La lecture du flux RSS a échoué" @@ -2176,11 +2247,11 @@ msgstr "La lecture du flux RSS a échoué" msgid "Fast" msgstr "Rapide" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoris" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Pistes favorites" @@ -2196,11 +2267,11 @@ msgstr "Récupérer automatiquement" msgid "Fetch completed" msgstr "Téléchargement terminé" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Récupération de la bibliothèque Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Erreur lors de la récupération de la pochette" @@ -2208,7 +2279,7 @@ msgstr "Erreur lors de la récupération de la pochette" msgid "File Format" msgstr "Format de fichier" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Extension de fichier" @@ -2216,19 +2287,23 @@ msgstr "Extension de fichier" msgid "File formats" msgstr "Formats de fichier" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Fichier" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Fichier (sans le chemin)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Schéma du nom de fichier :" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Taille du fichier" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2238,7 +2313,7 @@ msgstr "Type de fichier" msgid "Filename" msgstr "Nom du fichier" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fichiers" @@ -2246,15 +2321,19 @@ msgstr "Fichiers" msgid "Files to transcode" msgstr "Fichiers à convertir" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Trouve les morceaux dans votre bibliothèque qui correspondent aux critères que vous spécifiez." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Trouver cet artiste" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Génération de l'empreinte audio" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Terminé" @@ -2262,7 +2341,7 @@ msgstr "Terminé" msgid "First level" msgstr "Premier niveau" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2278,12 +2357,12 @@ msgstr "Pour des raisons de licence, le support de Spotify est dans un module s msgid "Force mono encoding" msgstr "Forcer l’encodage en mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Oublier ce périphérique" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2298,7 +2377,7 @@ msgstr "« Oublier un périphérique » va supprimer le périphérique de ce #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2326,31 +2405,23 @@ msgstr "Images par seconde" msgid "Frames per buffer" msgstr "Images par tampon" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Amis" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Gelé" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Graves Max." -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Graves + Aigus Max." -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Aigus Max." -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Moteur audio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Général" @@ -2358,30 +2429,30 @@ msgstr "Général" msgid "General settings" msgstr "Configuration générale" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Obtenir une URL pour partager cette liste de lecture Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Obtenir une URL pour partager ce morceau Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Récupération des morceaux populaires Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Récupération des canaux" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Réception des flux" @@ -2393,11 +2464,11 @@ msgstr "Donner un nom" msgid "Go" msgstr "Go" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Aller à la liste de lecture suivante" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Aller à la liste de lecture précédente" @@ -2405,7 +2476,7 @@ msgstr "Aller à la liste de lecture précédente" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2415,7 +2486,7 @@ msgstr "%1 pochettes récupérées sur %2 (%3 échecs)" msgid "Grey out non existent songs in my playlists" msgstr "Griser les morceaux qui n'existent plus dans mes listes de lecture" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2423,15 +2494,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Erreur lors de la connexion à Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL de la liste de lecture Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Radio Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL du morceau Grooveshark" @@ -2439,44 +2510,44 @@ msgstr "URL du morceau Grooveshark" msgid "Group Library by..." msgstr "Grouper la Bibliothèque par..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grouper par" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Grouper par Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Grouper par Artiste" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Grouper par Artiste/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Grouper par Artiste/Année - Album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Grouper par Genre/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Grouper par Genre/Artiste/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Groupement" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "La page HTML ne contenait pas de flux RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Code de statuts HTTP 3xx reçu sans URL, vérifiez la configuration serveur." @@ -2485,7 +2556,7 @@ msgstr "Code de statuts HTTP 3xx reçu sans URL, vérifiez la configuration serv msgid "HTTP proxy" msgstr "Serveur mandataire HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Heureux" @@ -2501,25 +2572,25 @@ msgstr "Les informations sur le matériel sont disponibles uniquement lorsque le msgid "High" msgstr "Élevé" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Élevé (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Élevé (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Serveur introuvable. Vérifiez son URL. Exemple : http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Heures" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Crapaud hypnotique" @@ -2531,15 +2602,15 @@ msgstr "Je ne possède pas de compte Magnatune" msgid "Icon" msgstr "Icône" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Icônes au dessus" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identification du morceau" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2549,24 +2620,24 @@ msgstr "Si vous continuez, ce périphérique fonctionnera lentement et les morce msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Si vous connaissez l'adresse d'un podcast, saisissez-la ci-dessous et appuyez sur Go." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorer « The » dans les noms d'artiste" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Dans %1 jours" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Dans %1 semaines" @@ -2577,7 +2648,7 @@ msgid "" "time a song finishes." msgstr "En mode dynamique, de nouvelles pistes seront choisies et ajoutées à la fin de la liste de lecture chaque fois qu'un morceau se terminera." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Boîte de réception" @@ -2589,36 +2660,36 @@ msgstr "Inclure la pochette de l'album dans la fenêtre de notification" msgid "Include all songs" msgstr "Inclure tous les morceaux" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Incompatibilité du protocole Subsonic REST. Le client doit être mis à jour." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Incompatibilité du protocole Subsonic REST. Le serveur doit être mis à jour." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Configuration incomplète. Veuillez vérifier que tous les champs sont remplis." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Augmenter le volume de 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Augmenter le volume de pour-cent" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Augmenter le volume" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indexation de %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Information" @@ -2626,55 +2697,55 @@ msgstr "Information" msgid "Input options" msgstr "Réglages d'entrée" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Insérer..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Installé" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Vérification de l'intégrité" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Services de musique" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "API key invalide" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Format invalide" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Méthode invalide" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Paramètres invalides" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Ressource spécifiée invalide" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Service invalide" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Clé de session invalide" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Nom d'utilisateur et / ou mot de passe invalide" @@ -2682,42 +2753,42 @@ msgstr "Nom d'utilisateur et / ou mot de passe invalide" msgid "Invert Selection" msgstr "Inverser la sélection" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Morceaux les plus écoutés de Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Meilleurs morceaux Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Meilleurs morceaux Jamendo du mois" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Meilleurs morceaux Jamendo de la semaine" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Base de données Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Aller à la piste jouée actuellement" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Pressez le bouton pendant %1 seconde..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Pressez le bouton pendant %1 secondes..." @@ -2726,11 +2797,12 @@ msgstr "Pressez le bouton pendant %1 secondes..." msgid "Keep running in the background when the window is closed" msgstr "Laisser tourner en arrière plan lorsque la fenêtre est fermée" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Conserver les fichiers originaux" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Chatons" @@ -2738,11 +2810,11 @@ msgstr "Chatons" msgid "Language" msgstr "Langue" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Portable/Écouteurs" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Large Salle" @@ -2750,12 +2822,16 @@ msgstr "Large Salle" msgid "Large album cover" msgstr "Grande pochette d'album" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Barre latérale large" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Dernière écoute" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Dernière écoute" @@ -2763,45 +2839,7 @@ msgstr "Dernière écoute" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Radio personnalisée Last.fm : %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Bibliothèque - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Radio Last.fm Mix - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Radio voisin - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Station radio Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Artistes Last.fm similaires à %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Mot-clé pour la radio Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm est actuellement indisponible, veuillez réessayer dans quelques minutes" @@ -2809,11 +2847,11 @@ msgstr "Last.fm est actuellement indisponible, veuillez réessayer dans quelques msgid "Last.fm password" msgstr "Mot de passe" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Nombre d'écoutes Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Tags Last.fm" @@ -2821,28 +2859,24 @@ msgstr "Tags Last.fm" msgid "Last.fm username" msgstr "Nom d'utilisateur" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Pistes les moins aimées" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Laisser vide pour les paramètres par défaut. Exemples : \"/dev/dsp\", \"front\", etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Gauche" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durée" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliothèque" @@ -2850,24 +2884,24 @@ msgstr "Bibliothèque" msgid "Library advanced grouping" msgstr "Groupement avancé de la bibliothèque" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Avertissement de mise à jour de la bibliothèque" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Rechercher dans la bibliothèque" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limites" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Écoutez des morceaux Grooveshark basé sur ce que vous avez écouté auparavant" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "En direct" @@ -2879,15 +2913,15 @@ msgstr "Charger" msgid "Load cover from URL" msgstr "Charger une pochette à partir d'une URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Charger une pochette à partir d'une URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Charger la pochette depuis le disque" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Charger la pochette depuis le disque..." @@ -2895,84 +2929,89 @@ msgstr "Charger la pochette depuis le disque..." msgid "Load playlist" msgstr "Charger une liste de lecture" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Charger une liste de lecture..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Chargement de la radio Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Chargement du périphérique MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Chargement de la base de données iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Chargement de la liste de lecture intelligente" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Chargement des morceaux" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Chargement du flux" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Chargement des pistes" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Chargement des info des pistes" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Chargement..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Charger des fichiers/URLs, et remplacer la liste de lecture actuelle" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Se connecter" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Erreur lors de la connexion" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Déconnexion" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Profil de prédiction à long terme (PLT)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "J'aime" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Faible (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Faible (256x256)" @@ -2984,12 +3023,17 @@ msgstr "Profile à faible complexité (FC)" msgid "Lyrics" msgstr "Paroles" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Paroles récupérées depuis %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -3001,15 +3045,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -3017,7 +3061,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Télécharger Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Téléchargement Magnatune terminé" @@ -3025,15 +3069,20 @@ msgstr "Téléchargement Magnatune terminé" msgid "Main profile (MAIN)" msgstr "Profil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Voilà!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Ainsi soit-il!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Rendre la liste de lecture accessible hors ligne" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Réponse mal formatée" @@ -3046,15 +3095,15 @@ msgstr "Configuration manuelle du serveur mandataire" msgid "Manually" msgstr "Manuellement" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabricant" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Marquer comme lu" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Marquer comme nouveau" @@ -3066,17 +3115,21 @@ msgstr "Utiliser tous les termes de recherche (ET)" msgid "Match one or more search terms (OR)" msgstr "Utiliser un ou plusieurs termes de recherche (OU)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Maximum pour les résultats globaux de recherche" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Débit maximum" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Moyen (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Moyen (512x512)" @@ -3088,11 +3141,15 @@ msgstr "Type d'adhésion" msgid "Minimum bitrate" msgstr "Débit minimum" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Remplissage minimum du tampon" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Pré-réglages projectM manquants" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modèle" @@ -3100,20 +3157,20 @@ msgstr "Modèle" msgid "Monitor the library for changes" msgstr "Surveiller les modifications de la bibliothèque" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Lecture monophonique" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Mois" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Humeur" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Style de la barre d'humeur" @@ -3121,15 +3178,19 @@ msgstr "Style de la barre d'humeur" msgid "Moodbars" msgstr "Barre d'humeur" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Plus" + +#: library/library.cpp:84 msgid "Most played" msgstr "Les plus jouées" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Point de montage" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Points de montage" @@ -3138,7 +3199,7 @@ msgstr "Points de montage" msgid "Move down" msgstr "Déplacer vers le bas" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Déplacer vers la bibliothèque..." @@ -3147,7 +3208,7 @@ msgstr "Déplacer vers la bibliothèque..." msgid "Move up" msgstr "Déplacer vers le haut" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musique" @@ -3155,56 +3216,32 @@ msgstr "Musique" msgid "Music Library" msgstr "Bibliothèque musicale" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Sourdine" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Ma bibliothèque Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Ma radio mix Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Mes voisins Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Ma radio de recommandations Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Ma radio mix" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Ma musique" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mon voisinage" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Ma station de radio" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mes suggestions" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nom" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nom" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Options de nommage" @@ -3212,23 +3249,19 @@ msgstr "Options de nommage" msgid "Narrow band (NB)" msgstr "Bande étroite (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Voisins" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Serveur mandataire (proxy)" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Contrôle à distance" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Jamais" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Jamais joués" @@ -3237,21 +3270,21 @@ msgstr "Jamais joués" msgid "Never start playing" msgstr "Ne jamais commencer à lire" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nouveau dossier" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nouvelle liste de lecture" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nouvelle liste de lecture intelligente..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nouveaux morceaux" @@ -3259,24 +3292,24 @@ msgstr "Nouveaux morceaux" msgid "New tracks will be added automatically." msgstr "De nouvelles pistes seront ajoutées automatiquement." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Nouvelles pistes" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Suivant" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Piste suivante" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "La semaine prochaine" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Désactiver le spectrogramme" @@ -3284,7 +3317,7 @@ msgstr "Désactiver le spectrogramme" msgid "No background image" msgstr "Pas d'image d'arrière-plan" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Aucune pochette à exporter." @@ -3292,7 +3325,7 @@ msgstr "Aucune pochette à exporter." msgid "No long blocks" msgstr "Pas de bloc long" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Aucune correspondance trouvée. Videz le champ de recherche pour afficher à nouveau la totalité de la liste de lecture." @@ -3306,11 +3339,11 @@ msgstr "Pas de bloc court" msgid "None" msgstr "Aucun" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Aucun des morceaux sélectionnés n'était valide pour la copie vers un périphérique" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3318,43 +3351,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Type de bloc normal" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Indisponible durant l'utilisation d'une liste de lecture dynamique" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Déconnecté" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Pas assez de contenu" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Pas assez de fans" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Pas assez de membres" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Voisins insuffisants" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Non installé" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Non connecté" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Non monté – double-cliquez pour monter" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Rien trouvé" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Notifications" @@ -3367,36 +3404,41 @@ msgstr "Notifications" msgid "Now Playing" msgstr "Lecture en cours" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Prévisualisation de l'affichage à l'écran (OSD)" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Désactivé" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Activé" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3404,11 +3446,11 @@ msgid "" "192.168.x.x" msgstr "Accepter seulement les connexions de clients dont l'IP est dans les blocs :\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Autoriser uniquement les connexions depuis le réseau local" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Afficher seulement le premier" @@ -3416,23 +3458,23 @@ msgstr "Afficher seulement le premier" msgid "Opacity" msgstr "Opacité" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Ouvrir %1 dans le navigateur" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Lire un CD &audio" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Ouvrir un fichier OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Ouvrir un fichier OPML..." @@ -3440,30 +3482,35 @@ msgstr "Ouvrir un fichier OPML..." msgid "Open device" msgstr "Ouvrir le périphérique" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Ouvrir un fichier..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Ouvrir dans Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Ouvrir dans une nouvelle liste de lecture" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Ouvrir dans une nouvelle liste de lecture" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Ouvrir dans votre navigateur" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Ouvrir..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Opération échouée" @@ -3483,23 +3530,23 @@ msgstr "Options..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organiser les fichiers" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organisation des fichiers..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organisation des fichiers" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Tags originaux" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Autres options" @@ -3507,7 +3554,7 @@ msgstr "Autres options" msgid "Output" msgstr "Sortie" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Périphérique de sortie" @@ -3515,15 +3562,11 @@ msgstr "Périphérique de sortie" msgid "Output options" msgstr "Options de sortie" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Module de sortie" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Tout écraser" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Écraser les fichiers existants" @@ -3535,15 +3578,15 @@ msgstr "Écraser uniquement les plus petits" msgid "Owner" msgstr "Propriétaire" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Analyse du catalogue Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Soirée" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3552,20 +3595,20 @@ msgstr "Soirée" msgid "Password" msgstr "Mot de passe" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pause" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Mettre la lecture en pause" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "En pause" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Interprète" @@ -3574,34 +3617,22 @@ msgstr "Interprète" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Barre latérale simple" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Lecture" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Écouter une radio par artiste ou par tag" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Écouter la radio d'un artiste..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Compteur d'écoutes" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Jouer une radio personnalisée..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Lire ou mettre en pause, selon l'état courant" @@ -3610,45 +3641,42 @@ msgstr "Lire ou mettre en pause, selon l'état courant" msgid "Play if there is nothing already playing" msgstr "Lire s'il n'y a rien d'autre en cours de lecture" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Écouter la radio à partir d'un tag..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Jouer la ème piste de la liste de lecture" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Lecture/Pause" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Lecture sonore" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Options du lecteur" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Liste de lecture" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Liste de lecture terminée" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Options de la liste de lecture" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Type de liste de lecture" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Listes de lecture" @@ -3660,23 +3688,23 @@ msgstr "Merci de fermer votre navigateur et de retourner dans Clementine." msgid "Plugin status:" msgstr "État du module externe :" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Morceaux populaires" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Morceaux populaires ce mois-ci" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Morceaux populaires aujourd'hui" @@ -3685,22 +3713,23 @@ msgid "Popup duration" msgstr "Durée d'affichage de la fenêtre" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pré-ampli" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Préférences" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Préférences..." @@ -3736,7 +3765,7 @@ msgstr "Appuyez sur une combinaison de touches à utiliser pour" msgid "Press a key" msgstr "Appuyez sur une touche" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Appuyez sur une combinaison de touches à utiliser pour %1..." @@ -3747,20 +3776,20 @@ msgstr "Options de l'affichage à l'écran (OSD)" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Aperçu" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Précédent" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Piste précédente" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Afficher la version" @@ -3768,21 +3797,25 @@ msgstr "Afficher la version" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progression" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Progression" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psychédélique" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Appuyez sur le bouton Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Mettre les morceaux dans un ordre aléatoire" @@ -3790,36 +3823,46 @@ msgstr "Mettre les morceaux dans un ordre aléatoire" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Qualité" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Interrogation périphérique" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Gestionnaire de file d'attente" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Mettre les pistes sélectionnées en liste d'attente" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Mettre cette piste en liste d'attente" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (volume égalisé pour toutes les pistes)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Pluie" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Pluie" @@ -3827,48 +3870,48 @@ msgstr "Pluie" msgid "Random visualization" msgstr "Visualisation aléatoire" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Noter ce morceau 0 étoile" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Noter ce morceau 1 étoile" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Noter ce morceau 2 étoiles" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Noter ce morceau 3 étoiles" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Noter ce morceau 4 étoiles" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Noter ce morceau 5 étoiles" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Note" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Êtes-vous sûr de vouloir annuler ?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Limite de redirection excédée, vérifiez la configuration serveur." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Mettre à jour" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Mettre à jour le catalogue" @@ -3876,19 +3919,15 @@ msgstr "Mettre à jour le catalogue" msgid "Refresh channels" msgstr "Mettre à jour les canaux" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Actualiser la liste d'amis" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Mettre à jour la liste des stations" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Actualiser les flux" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3900,8 +3939,8 @@ msgstr "Mémoriser le mouvement de la Wiimote" msgid "Remember from last time" msgstr "Se souvenir de la dernière fois" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Supprimer" @@ -3909,7 +3948,7 @@ msgstr "Supprimer" msgid "Remove action" msgstr "Effacer l'action" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Supprimer les doublons de la liste de lecture" @@ -3917,73 +3956,77 @@ msgstr "Supprimer les doublons de la liste de lecture" msgid "Remove folder" msgstr "Supprimer un dossier" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Supprimer de ma musique" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Supprimer des favoris" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Supprimer des favoris" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Supprimer de la liste de lecture" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Supprimer la liste de lecture" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Supprimer les listes de lecture" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Suppression des morceaux de ma musique" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Suppression des morceaux des favoris" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Renommer la liste de lecture « %1 »" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Renommer cette liste de lecture Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Renommer la liste de lecture" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Renommer la liste de lecture..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Renuméroter les pistes dans cet ordre..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Répéter" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Répéter l'album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Répéter la liste de lecture" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Répéter la piste" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Remplacer la liste de lecture actuelle" @@ -3992,15 +4035,15 @@ msgstr "Remplacer la liste de lecture actuelle" msgid "Replace the playlist" msgstr "Remplacer la liste de lecture" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Remplace les espaces par des tiret-bas" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Mode du Replay Gain" @@ -4008,24 +4051,24 @@ msgstr "Mode du Replay Gain" msgid "Repopulate" msgstr "Repeupler" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Exiger un code d'authentification" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Réinitialiser" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Réinitialiser le compteur de lecture" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Redémarre le morceau ou lit le morceau précédent si utilisé durant les 8 premières secondes." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Limiter aux caractères ASCII" @@ -4033,15 +4076,15 @@ msgstr "Limiter aux caractères ASCII" msgid "Resume playback on start" msgstr "Redémarrer la lecture au démarrage" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Récupération des morceaux Grooveshark Ma musique" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Récupération des morceaux Grooveshark favoris" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Récupération des listes de lecture Grooveshark" @@ -4061,11 +4104,11 @@ msgstr "Extraire" msgid "Rip CD" msgstr "Extraire le CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Extraire le CD audio..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4077,25 +4120,25 @@ msgstr "Lancer" msgid "SOCKS proxy" msgstr "Serveur mandataire SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Erreur dans l'échange SSL. Vérifiez la configuration serveur. L'option SSLv3 ci-dessous peut résoudre certains problèmes." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Enlever le périphérique en toute sécurité" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Enlever le périphérique en toute sécurité à la fin de la copie" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Échantillonnage" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Échantillonnage" @@ -4103,27 +4146,33 @@ msgstr "Échantillonnage" msgid "Save .mood files in your music library" msgstr "Enregistrez les fichiers .mood dans la bibliothèque" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Sauvegarder les couvertures d'albums" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Enregistrer la pochette sur le disque..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Enregistrer l'image" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Enregistrer la liste de lecture" +msgstr "Sauvegarder la liste de lecture" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Sauvegarder la liste de lecture" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Enregistrer la liste de lecture..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Enregistrer pré-réglages" @@ -4139,11 +4188,11 @@ msgstr "Enregistrer les statistiques dans les tag du fichier si possible" msgid "Save this stream in the Internet tab" msgstr "Sauvegarder ce flux dans l'onglet Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Enregistrement des statistiques dans les fichiers des morceaux" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Sauvegarde des pistes" @@ -4155,7 +4204,7 @@ msgstr "Profil du taux d'échantillonnage" msgid "Scale size" msgstr "Taille redimensionnée" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Score" @@ -4163,10 +4212,14 @@ msgstr "Score" msgid "Scrobble tracks that I listen to" msgstr "Envoyer les titres des pistes que j'écoute (scrobble)" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Recherche" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Recherche" @@ -4174,23 +4227,23 @@ msgstr "Recherche" msgid "Search Icecast stations" msgstr "Rechercher des stations Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Recherche Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Recherche Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Recherche Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Rechercher automatiquement" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Chercher des pochettes pour cet album..." @@ -4210,21 +4263,21 @@ msgstr "Rechercher iTunes" msgid "Search mode" msgstr "Mode de recherche" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Options de recherche" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Résultats de recherche" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Termes de recherche" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Recherche sur Grooveshark" @@ -4232,27 +4285,27 @@ msgstr "Recherche sur Grooveshark" msgid "Second level" msgstr "Deuxième niveau" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Reculer" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Avancer" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Déplacer la lecture de la piste courante par une quantité relative" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Déplacer la lecture de la piste courante à une position absolue" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Tout sélectionner" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Ne rien sélectionner" @@ -4260,7 +4313,7 @@ msgstr "Ne rien sélectionner" msgid "Select background color:" msgstr "Sélectionner la couleur d'arrière-plan :" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Sélectionner une image d'arrière-plan" @@ -4276,7 +4329,7 @@ msgstr "Sélectionner la couleur d'avant-plan :" msgid "Select visualizations" msgstr "Sélectionner visualisation" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Sélectionner visualisation..." @@ -4284,7 +4337,7 @@ msgstr "Sélectionner visualisation..." msgid "Select..." msgstr "Sélectionner..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Numéro de série" @@ -4296,51 +4349,51 @@ msgstr "URL du serveur" msgid "Server details" msgstr "Détails du serveur" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Service hors-ligne" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Définir %1 à la valeur « %2 »..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Définir le volume à pourcents" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Définir une valeur pour toutes les pistes sélectionnées..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Paramètres" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Raccourci" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Raccourci pour %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Le raccourci pour %1 existe déjà" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Afficher" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Afficher l'OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Mettre en surbrillance la piste en lecture" @@ -4368,15 +4421,15 @@ msgstr "Afficher une pop-up à côté de la zone de notification" msgid "Show a pretty OSD" msgstr "Utiliser l'affichage à l'écran (OSD)" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Afficher au dessus de la barre d'état" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Afficher tous les morceaux" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Afficher tous les morceaux" @@ -4388,32 +4441,36 @@ msgstr "Afficher les pochettes des albums dans la bibliothèque" msgid "Show dividers" msgstr "Afficher les séparateurs" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Afficher en taille réelle..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Afficher les groupes dans le résultat global de recherche" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Afficher dans le navigateur de fichiers" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Afficher dans la bibliothèque..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Classer dans la catégorie « Compilations d'artistes »" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Afficher la barre d'humeur" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Afficher uniquement les doublons" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Afficher uniquement les morceaux sans tag" @@ -4422,8 +4479,8 @@ msgid "Show search suggestions" msgstr "Afficher les suggestions de recherche" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Afficher les boutons « j'aime » et « je déteste »" +msgid "Show the \"love\" button" +msgstr "Afficher le bouton « J'aime »" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4437,27 +4494,27 @@ msgstr "Afficher l'icône dans la zone de notifications" msgid "Show which sources are enabled and disabled" msgstr "Afficher quelles sources sont activées et désactivées" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Afficher/Masquer" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Aléatoire" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Aléatoire : albums" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Aléatoire : tout" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Mélanger la liste de lecture" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Aléatoire : pistes de cet album" @@ -4473,7 +4530,7 @@ msgstr "Se déconnecter" msgid "Signing in..." msgstr "Connexion..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Artistes similaires" @@ -4485,43 +4542,51 @@ msgstr "Taille" msgid "Size:" msgstr "Taille :" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Lire la piste précédente" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Compteur de morceaux sautés" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Lire la piste suivante" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Passer les pistes sélectionnées" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Passer la piste" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Petite pochette d'album" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Petite barre latérale" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Liste de lecture intelligente" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Listes de lecture intelligentes" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4529,11 +4594,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informations sur le morceau" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info morceau" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogramme" @@ -4553,15 +4618,23 @@ msgstr "Trier par genre (par popularité)" msgid "Sort by station name" msgstr "Trier par nom de station" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Trier les morceaux des listes de lecture par ordre alphabétique" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Trier les morceaux par" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Tri" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Source" @@ -4577,7 +4650,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Erreur lors de la connexion à Spotify" @@ -4585,7 +4658,7 @@ msgstr "Erreur lors de la connexion à Spotify" msgid "Spotify plugin" msgstr "Module externe Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Le module externe de Spotify n'est pas installé" @@ -4593,77 +4666,77 @@ msgstr "Le module externe de Spotify n'est pas installé" msgid "Standard" msgstr "Standard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Favoris" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Démarrer l'extraction" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Commencer la liste de lecture jouée actuellement" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Démarrer transcodage" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Commencer à écrire dans le champ de recherche ci-dessus pour remplir cette liste de résultats" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Lancement de %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Démarrage..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stations" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stop" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Arrêter après" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Arrêter la lecture après cette piste" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Arrêter la lecture" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Arrêter la lecture après ce morceau" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Arrêter la lecture après la piste : %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Interrompu" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Flux" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4673,7 +4746,7 @@ msgstr "La diffusion depuis un serveur Subsonic nécessite une clef de licence v msgid "Streaming membership" msgstr "Membres de streaming" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Listes de lecture abonnées" @@ -4681,7 +4754,7 @@ msgstr "Listes de lecture abonnées" msgid "Subscribers" msgstr "Abonnés" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4689,12 +4762,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Succès !" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 écrit avec succès" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Tags suggérés" @@ -4703,13 +4776,13 @@ msgstr "Tags suggérés" msgid "Summary" msgstr "Résumé" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Très élevé (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Très élevé (2048x2048)" @@ -4721,43 +4794,35 @@ msgstr "Formats supportés" msgid "Synchronize statistics to files now" msgstr "Synchroniser les statistiques vers les fichiers maintenant" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synchronisation de la boîte de réception Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synchronisation de la liste de lecture Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synchronisation des morceaux Spotify préférés" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Couleurs du système" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Onglets au dessus" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tag" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Compléteur de balises" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Radio par tag" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Débit cible" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4765,11 +4830,11 @@ msgstr "Techno" msgid "Text options" msgstr "Options du texte" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Merci à" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "La commande « %1 » ne peut pas être démarrée." @@ -4778,17 +4843,12 @@ msgstr "La commande « %1 » ne peut pas être démarrée." msgid "The album cover of the currently playing song" msgstr "La pochette d'album de la piste courante" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Le répertoire %1 est invalide" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "La liste de lecture « %1 » est vide ou ne peut être chargée" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "La seconde valeur doit être plus grande que la première !" @@ -4796,40 +4856,40 @@ msgstr "La seconde valeur doit être plus grande que la première !" msgid "The site you requested does not exist!" msgstr "Le site demandé n'existe pas !" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Le site demandé n'est pas une image !" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "La période d'essai pour le serveur Subsonic est terminée. Merci de faire un don pour avoir un clef de licence. Visitez subsonic.org pour plus d'informations." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "La nouvelle version de Clementine nécessite une mise à jour de votre bibliothèque pour supporter les nouvelles fonctionnalités suivantes :" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Il y a d'autres morceaux dans cet album" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Problème lors de la communication avec gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Il y a un problème pour obtenir les métadonnées à partir de Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Problème lors de la lecture de la réponse du service iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4841,13 +4901,13 @@ msgid "" "deleted:" msgstr "Il y a un problème pour supprimer certains morceaux. Les fichiers suivant n'ont pas été supprimés:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Ces fichiers vont être supprimés du périphérique, êtes-vous sûr de vouloir continuer ?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4867,13 +4927,13 @@ msgstr "Ces paramètres sont utilisés dans la boîte de dialogue « Transcoder msgid "Third level" msgstr "Troisième niveau" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Ceci va créer un base de données d'environ 150 Mo.\nÊtes-vous sûr de vouloir continuer ?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Cet album n'est pas disponible dans le format demandé" @@ -4887,11 +4947,11 @@ msgstr "Ce périphérique doit être connecté et ouvert pour que Clementine pui msgid "This device supports the following file formats:" msgstr "Ce périphérique supporte les formats suivant :" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Ce périphérique ne fonctionne pas correctement" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Ceci est un périphérique MTP, mais vous avez compilé Clementine sans le support libmtp." @@ -4900,7 +4960,7 @@ msgstr "Ceci est un périphérique MTP, mais vous avez compilé Clementine sans msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Ceci est un iPod, mais vous avez compilé Clementine sans le support libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4910,33 +4970,33 @@ msgstr "C'est la première fois que vous connectez ce périphérique. Clementine msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Cette option peut être modifiée dans les préférences de « Comportement »" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Ce flux n'est accessible qu'aux abonnés ayant payé" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Ce type de périphérique n'est pas supporté : %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titre" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Pour démarrer la radio Grooveshark, vous devez d'abord écouter quelques morceaux Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Aujourd'hui" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Basculer l'affichage de l'OSD" @@ -4944,27 +5004,27 @@ msgstr "Basculer l'affichage de l'OSD" msgid "Toggle fullscreen" msgstr "Basculer en mode plein écran" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Basculer l'état de la file d'attente" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Basculer le scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Basculer la visibilité de l'OSD" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Demain" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Trop de redirections" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Top titres" @@ -4972,21 +5032,25 @@ msgstr "Top titres" msgid "Total albums:" msgstr "Total albums :" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Nombre total d'octets transférés" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Nombre total de requêtes réseau effectuées" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Piste" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Pistes" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transcoder de la musique" @@ -4998,7 +5062,7 @@ msgstr "Journal du transcodeur" msgid "Transcoding" msgstr "Transcodage" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Transcodage de %1 fichiers en utilisant %2 threads" @@ -5007,11 +5071,11 @@ msgstr "Transcodage de %1 fichiers en utilisant %2 threads" msgid "Transcoding options" msgstr "Option de transcodage" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Spectrogramme « Turbine »" @@ -5019,72 +5083,72 @@ msgstr "Spectrogramme « Turbine »" msgid "Turn off" msgstr "Éteindre" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Mot de passe Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Nom d'utilisateur Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Très large bande (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Impossible de télécharger %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Inconnu" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Type de contenu inconnu" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Erreur de type inconnu" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Enlever cette pochette" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Ne pas passer les pistes sélectionnées" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Ne pas passer la piste" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Se désinscrire" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Concerts à venir" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Mise à jour" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Mise à jour de la liste de lecture Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Mettre à jour tous les podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Mettre à jour les dossiers de la bibliothèque" @@ -5092,7 +5156,7 @@ msgstr "Mettre à jour les dossiers de la bibliothèque" msgid "Update the library when Clementine starts" msgstr "Mettre à jour la bibliothèque quand Clementine démarre" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Mettre à jour ce podcast" @@ -5100,21 +5164,21 @@ msgstr "Mettre à jour ce podcast" msgid "Updating" msgstr "Mise à jour" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Mise à jour %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Mise à jour %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Mise à jour de la bibliothèque" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Usage" @@ -5122,11 +5186,11 @@ msgstr "Usage" msgid "Use Album Artist tag when available" msgstr "Utiliser le tag Album Artist lorsqu'il est disponible" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Utiliser les raccourcis de touches de Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Utiliser la métadonnée Replay Gain si disponible" @@ -5146,7 +5210,7 @@ msgstr "Utiliser un assortiment de couleurs personnalisé" msgid "Use a custom message for notifications" msgstr "Utiliser un message personnalisé pour les notifications" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Utiliser le contrôle à distance" @@ -5186,20 +5250,20 @@ msgstr "Utiliser les paramètres du système pour le serveur mandataire" msgid "Use volume normalisation" msgstr "Utiliser la normalisation de volume" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Utilisé" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "L'utilisateur %1 n'a pas de compte Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interface utilisateur" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5221,12 +5285,12 @@ msgstr "MP3 VBR" msgid "Variable bit rate" msgstr "Débit variable" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Compilations d'artistes" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Version %1" @@ -5239,7 +5303,7 @@ msgstr "Vue" msgid "Visualization mode" msgstr "Mode de visualisation" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualisations" @@ -5247,11 +5311,15 @@ msgstr "Visualisations" msgid "Visualizations Settings" msgstr "Paramètres de Visualisations" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Détecteur d’activité vocale" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5269,11 +5337,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "M'avertir lors de la fermeture d'un onglet de liste de lecture" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5281,7 +5349,7 @@ msgstr "Wav" msgid "Website" msgstr "Site Web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Semaines" @@ -5307,32 +5375,32 @@ msgstr "Pourquoi ne pas essayer..." msgid "Wide band (WB)" msgstr "Large bande (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wiimote %1 : activée" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wiimote %1 : connectée" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wiimote %1 : pile critique (%2 %) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wiimote %1 : désactivée" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wiimote %1 : déconnectée" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wiimote %1 : pile faible (%2 %)" @@ -5353,7 +5421,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "audio Windows Media" @@ -5361,25 +5429,25 @@ msgstr "audio Windows Media" msgid "Without cover:" msgstr "Sans pochette :" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Voulez-vous aussi déplacer les autres morceaux de cet album dans la catégorie « Compilations d'artistes » ?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Voulez-vous effectuer une analyse complète de la bibliothèque maintenant ?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Enregistrer toutes les statistiques dans les fichiers des morceaux" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nom d'utilisateur et/ou mot de passe invalide." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5391,11 +5459,11 @@ msgstr "Année" msgid "Year - Album" msgstr "Année - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Années" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Hier" @@ -5403,13 +5471,13 @@ msgstr "Hier" msgid "You are about to download the following albums" msgstr "Vous êtes sur le point de télécharger les albums suivants" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Vous allez supprimer %1 listes de lectures de vos favoris. Êtes-vous sûr ?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5419,12 +5487,12 @@ msgstr "Vous êtes sur le point de fermer une liste de lecture qui ne fait pas p msgid "You are not signed in." msgstr "Vous n'êtes pas connecté." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Vous êtes connecté en tant que %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Vous êtes connecté." @@ -5432,13 +5500,13 @@ msgstr "Vous êtes connecté." msgid "You can change the way the songs in the library are organised." msgstr "Vous pouvez changer la manière dont les morceaux de la bibliothèque sont organisés." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Vous pouvez écouter gratuitement sans compte mais les membres premiums peuvent écouter avec une meilleure qualité et sans publicité." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5448,13 +5516,6 @@ msgstr "Vous pouvez écouter gratuitement les morceaux de Magnatune sans avoir d msgid "You can listen to background streams at the same time as other music." msgstr "Vous pouvez écouter les bruits de fond en même temps qu'une autre musique." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Vous pouvez scrobbler des pistes gratuitement, mais seuls les abonnements payants peuvent écouter la radio Last.fm de Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Vous pouvez utiliser votre Wii Remote comme télécommande pour Clementine. Voir la page sur le wiki de Clementine pour plus d'information.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Vous n'avez pas de compte Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Vous n'avez pas de compte Spotify Premium." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Vous n'avez pas d'abonnement actif" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Vous ne devez pas être connecté à votre compte pour effectuer une recherche ou écouter de la musique sur SoundCloud. Par contre, vous devez être connecté à votre compte pour accéder à vos liste de lectures et votre flux." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Vous avez été déconnecté de Spotify, merci de ressaisir votre mot de passe dans la fenêtre des préférences." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Vous avez été déconnecté de Spotify, merci de ressaisir votre mot de passe." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Vous aimez cette piste" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Vous devez lancer les Préférences Système et permettre à Clementine de « contrôler votre ordinateur » pour utiliser les raccourcis globaux de Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5499,17 +5574,11 @@ msgstr "Vous devez lancer les Préférences Système et activer l'option « \n" "Language-Team: Irish (http://www.transifex.com/projects/p/clementine/language/ga/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: ga\n" "Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "lá" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -55,11 +55,16 @@ msgstr " pt" msgid " seconds" msgstr "soicindí" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "amhráin" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albaim" @@ -69,12 +74,12 @@ msgstr "%1 albaim" msgid "%1 days" msgstr "%1 lá" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 lá ó shin" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 ar %2" @@ -84,48 +89,48 @@ msgstr "%1 ar %2" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 roghnaithe de" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 amhrán" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 amhráin" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 amhráin aimsithe" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 amhráin aimsithe (ag taispeáint %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 rianta" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 aistrithe" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 éisteoirí eile" @@ -139,18 +144,21 @@ msgstr "" msgid "%filename%" msgstr "%comhadainm%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n teipthe" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n críochnaithe" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n fágtha" @@ -162,24 +170,24 @@ msgstr "&Ailínigh téacs" msgid "&Center" msgstr "&Lár" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Saincheaptha" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Breiseáin" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Cabhair" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Folaigh %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Folaigh..." @@ -187,23 +195,23 @@ msgstr "&Folaigh..." msgid "&Left" msgstr "&Clé" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Ceol" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Dada" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Scoir" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,23 +219,23 @@ msgstr "" msgid "&Right" msgstr "&Deas" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Sín colúin chun an fhuinneog a líonadh" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Uirlisí" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(éagsúil trasna iliomad amhráin)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "1 lá" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 rian" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 rianta fánacha" @@ -272,12 +276,6 @@ msgstr "50 rianta fánacha" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Tá cuntas Grooveshark Anywhere de dhíth." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -347,36 +356,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Maidir le %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Maidir le Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Maidir le Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Sonraí an chuntais" @@ -388,11 +396,15 @@ msgstr "Sonraí an chuntais (Premium)" msgid "Action" msgstr "Gníomh" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Gníomhachtaigh/díghníomhachtaigh Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Cuir podchraoladh leis" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "Cuir gníomh leis" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Cuir sruth eile leis..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Cuir comhadlann leis..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Cuir comhad leis" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Cuir comhad leis..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Cuir fillteán leis" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Cuir fillteán leis..." @@ -452,11 +464,11 @@ msgstr "Cuir fillteán nua leis..." msgid "Add podcast" msgstr "Cuir podchraoladh leis" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Cuir podchraoladh leis..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Cuir ní cuardaigh leis" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Cuir sruth leis..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -552,6 +580,10 @@ msgstr "" msgid "Add to the queue" msgstr "Cuir leis an scuaine" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -581,15 +613,15 @@ msgstr "Curtha leis inniu" msgid "Added within three months" msgstr "Curtha leis laistigh de trí mhí" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -597,12 +629,12 @@ msgstr "" msgid "After " msgstr "I ndiaidh" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "I ndiaidh macasamhlú..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "I ndiaidh macasamhlú..." msgid "Album" msgstr "Albam" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "Ealaíontóir an albaim" msgid "Album cover" msgstr "Clúdach an Albaim" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Faisnéis an albaim ar jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albaim le clúdaigh" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albaim gan clúdaigh" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Gach Comhad (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Gach albam" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Gach ealaíontóir" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Gach comhad (*)" @@ -661,19 +694,19 @@ msgstr "Gach comhad (*)" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Na haistritheoirí uile" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Gach rian" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "Taispeáin an phríomhfhuinneog i gcónaí" msgid "Always start playing" msgstr "Tosaigh ag seinm i gcónaí" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Agus:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "Cuma" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +777,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Ealaíontóir" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,9 +825,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Theip ar an bhfíordheimhniú" @@ -807,7 +839,7 @@ msgstr "Theip ar an bhfíordheimhniú" msgid "Author" msgstr "Údar" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Údair" @@ -823,7 +855,7 @@ msgstr "Nuashonrúchán uaithoibríoch" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Ar fáil" @@ -831,15 +863,15 @@ msgstr "Ar fáil" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podchraoltaí an BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +892,7 @@ msgstr "Íomhá an chúlra" msgid "Background opacity" msgstr "Teimhneacht an chúlra" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Toirmisc" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +920,17 @@ msgstr "Iompar" msgid "Best" msgstr "Is Fearr" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Beathaisnéis ó %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "Corp" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "Siortaigh..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "Cnaipí" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Cealaigh" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Athraigh ealaíon an chlúdaigh" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Athraigh méid na clófhoirne" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Athraigh an t-aicearra" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Athraigh an teanga" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "Lorg cláir nua" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Lorg nuashonruithe..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Roghnaigh go huathoibríoch" @@ -1027,11 +1086,11 @@ msgstr "Roghnaigh clófhoireann..." msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1048,17 +1107,17 @@ msgstr "" msgid "Cleaning up" msgstr "Ag glanadh" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Glan" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1071,8 +1130,8 @@ msgstr "Botún Clementine" msgid "Clementine Orange" msgstr "Clementine Orange" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Amharcléiriú Clementine" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Amharcóir íomhánna Clementine" @@ -1134,11 +1186,11 @@ msgstr "Níor éirigh le Clementine torthaí a aimsiú don gcomhad seo" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Brúigh anseo chun ceol a chuir leis" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "Dún" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Cealófar an t-íosluchtú má dhúntar an fhuinneog seo" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1183,73 +1238,78 @@ msgstr "Club" msgid "Colors" msgstr "Dathanna" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Trácht" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Críochnaigh clibeanna go huathoibríoch" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Críochnaigh clibeanna go huathoibríoch" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Cumadóir" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Cumraigh Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Cumraigh Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Cumraigh Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Cumraigh Aicearraí" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Cumraigh Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Cumraigh leabharlann..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Cumraigh podchraoltaí..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Cumraigh..." @@ -1257,11 +1317,11 @@ msgstr "Cumraigh..." msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Nasc gléas" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Ag nascadh le Spotify" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "Tiontaigh gach ceol" msgid "Convert any music that the device can't play" msgstr "Tiontaigh ceol ar bith nach féidir leis an ngléas a sheinm" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Macasamhlaigh go dtí an ngearrthaisce" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Macasamhlaigh go gléas..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Macasamhlaigh go leabharlann..." @@ -1310,156 +1378,152 @@ msgstr "Macasamhlaigh go leabharlann..." msgid "Copyright" msgstr "Cóipcheart" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Clúdaithe ó %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Síos" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Iomlaoid+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Saincheaptha" @@ -1479,54 +1543,50 @@ msgstr "Íomhá shaincheaptha:" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Saincheaptha..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Damhsa" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Dáta ar a chruthaíodh é" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Dáta ar a athraíodh é" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Lá" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Réamhshocrú" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Laghdaigh an airde" @@ -1534,6 +1594,11 @@ msgstr "Laghdaigh an airde" msgid "Default background image" msgstr "Íomhá réamhshocraithe an chúlra" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Réamhshocruithe" @@ -1542,30 +1607,30 @@ msgstr "Réamhshocruithe" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Scrios sonraí íosluchtaithe" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Scrios comhaid" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Scrios ón ngléas..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Scrios ón ndiosca..." @@ -1573,31 +1638,31 @@ msgstr "Scrios ón ndiosca..." msgid "Delete played episodes" msgstr "Scrios eagráin a seinneadh" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Scrios na comhaid bhunaidh" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Ag scriosadh comhaid" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Bain an rian as an scuaine" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Sprioc" @@ -1606,7 +1671,7 @@ msgstr "Sprioc" msgid "Details..." msgstr "Sonraí..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Gléas" @@ -1618,15 +1683,15 @@ msgstr "Airíonna an ghléis" msgid "Device name" msgstr "Ainm an ghléis" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Airíonna an ghléis..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Gléasanna" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Díchumasaithe" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diosca" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Roghanna taispeána" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "Ná tiontaigh ceol ar bith" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ná déan arís" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ná stad!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Brúigh faoi dhó chun é a oscailt" @@ -1726,12 +1796,13 @@ msgstr "Brúigh faoi dhó chun é a oscailt" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Íosluchtaigh %n eagráin" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Íosluchtaigh an chomhadlann" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "Íosluchtaigh eagráin nua go huathoibríoch" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Tá an t-íosluchtú i scuaine" @@ -1755,15 +1826,15 @@ msgstr "Tá an t-íosluchtú i scuaine" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Íosluchtaigh an t-albam seo" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Íosluchtaigh an t-albam seo..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Íosluchtaigh an t-eagrán seo" @@ -1771,7 +1842,7 @@ msgstr "Íosluchtaigh an t-eagrán seo" msgid "Download..." msgstr "Íosluchtaigh..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Ag íosluchtú (%1%)..." @@ -1780,23 +1851,23 @@ msgstr "Ag íosluchtú (%1%)..." msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Ag íosluchtú an breiseán do Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Ag íosluchtú meiteashonraí" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Cuir clib in eagar..." @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Eagar..." @@ -1858,6 +1929,10 @@ msgstr "Eagar..." msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Cumasaigh cothromóir" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "An cnuasach ar fad" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Cothromóir" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Botún" @@ -1965,38 +2036,38 @@ msgstr "Botún" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "A seinneadh riamh" @@ -2028,7 +2099,7 @@ msgstr "Gach 6 uair" msgid "Every hour" msgstr "Gach uair" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "Fairsingigh" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Éagann sé ar an %1" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2100,42 +2171,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Theip air an podchraoladh a luchtú" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "Gasta" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Na cinn is fearr leat" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Na rianta is fearr leat" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Iarmhír comhadainm" @@ -2184,19 +2255,23 @@ msgstr "Iarmhír comhadainm" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Comhadainm" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Méid comhaid" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "Cineál comhad" msgid "Filename" msgstr "Comhadainm" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Comhaid" @@ -2214,15 +2289,19 @@ msgstr "Comhaid" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Aimsigh amhráin i do leabharlann a chomhoireann leis an slat tomhais a shonraíonn tú." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Críochnaigh" @@ -2230,7 +2309,7 @@ msgstr "Críochnaigh" msgid "First level" msgstr "An chéad airde" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Déan dearmad faoin ngléas" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Cairde" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Dord iomlán" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Coiteann" @@ -2326,30 +2397,30 @@ msgstr "Coiteann" msgid "General settings" msgstr "Socruithe coiteann" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Ag fáil bealaí" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Ag fáil sruthanna" @@ -2361,11 +2432,11 @@ msgstr "Tabhair ainm dó:" msgid "Go" msgstr "Téigh" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2391,15 +2462,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "Aicmigh an leabharlann de réir..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Aicmigh de réir" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Aicmigh de réir albam" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Aicmigh de réir ealaíontóir" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Aicmigh de réir ealaíontóir/albam" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Aicmigh de réir ealaíontóir/bliain - albam" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "Seachfhreastalaí HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "Ard" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Ard (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Ard (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Uair" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "Níl cuntas Magnatune agam" msgid "Icon" msgstr "Deilbhín" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Deilbhíní ar barr" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Ag aithint an t-amhrán" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Íomhánna (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Íomhánna (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Bosca Isteach" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "Iniaigh gach amhrán" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Méadaigh an airde" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Eolas" @@ -2594,55 +2665,55 @@ msgstr "Eolas" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Ionsáigh..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Suiteáilte" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Dearbháil sláine" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Idirlíon" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Soláthraithe idirlín" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Bunachar sonraí Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Léim chuig an rian atá á seinm faoi láthair" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Coinnigh na comhaid bhunaidh" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "Teanga" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Ríomhaire glúine/Cluasáin" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Halla mór" @@ -2718,58 +2790,24 @@ msgstr "Halla mór" msgid "Large album cover" msgstr "Clúdach albaim mór" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "An ceann deiridh a seinneadh" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Leabharlann Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "Focal faire Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Clibeanna Last.fm" @@ -2789,28 +2827,24 @@ msgstr "Clibeanna Last.fm" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Aga" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Leabharlann" @@ -2818,24 +2852,24 @@ msgstr "Leabharlann" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Cuardach leabharlainne" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Teorainneacha" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Éist le hamhráin Grooveshark bunaithe ar amhráin ar éist tú le cheana" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Beo" @@ -2847,15 +2881,15 @@ msgstr "Luchtaigh" msgid "Load cover from URL" msgstr "Luchtaigh clúdach ó URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Luchtaigh clúdach ó URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Ag luchtú craolachán Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Ag luchtú gléas MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Ag luchtú bunachar sonraí iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Ag luchtú amhráin" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Ag luchtú sruth" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Ag luchtú rianta" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Ag luchtú..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Síniú isteach" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Grá" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Íseal (256x256)" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Liricí ó %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2969,15 +3013,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2985,7 +3029,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Íosluchtú Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Chríochnaigh an t-íosluchtú Magnatune" @@ -2993,15 +3037,20 @@ msgstr "Chríochnaigh an t-íosluchtú Magnatune" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Bíodh sé mar sin!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "De láimh" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Déantúsóir" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Rianaigh mar éiste" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Rianaigh mar nua" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Meánach (512x512)" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Samhail" @@ -3068,20 +3125,20 @@ msgstr "Samhail" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Míonna" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Na cinn is mó a seinneadh" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "Bog síos" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Bog go dtí an leabharlann..." @@ -3115,7 +3176,7 @@ msgstr "Bog go dtí an leabharlann..." msgid "Move up" msgstr "Bog suas" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Ceol" @@ -3123,56 +3184,32 @@ msgstr "Ceol" msgid "Music Library" msgstr "Leabharlann cheoil" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Balbhaigh" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Mo Leabharlann Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mo Chomharsanacht" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mo Mholtaí" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Ainm" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Roghanna aimniúcháin" @@ -3180,23 +3217,19 @@ msgstr "Roghanna aimniúcháin" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Comharsain" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Choíche" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nár seinneadh riamh" @@ -3205,21 +3238,21 @@ msgstr "Nár seinneadh riamh" msgid "Never start playing" msgstr "Ná tosaigh ag seinm riamh" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Amhráin nua" @@ -3227,24 +3260,24 @@ msgstr "Amhráin nua" msgid "New tracks will be added automatically." msgstr "Cuirfear rianta nua leis go huathoibríoch" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Na rianta is nuaí" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Ar aghaidh" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Rian ar aghaidh" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Gan anailíseoir" @@ -3252,7 +3285,7 @@ msgstr "Gan anailíseoir" msgid "No background image" msgstr "Gan íomhá sa chúlra" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "Dada" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Gan cheangail" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Níl dóthain comhaltaí ann" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Níl sé suiteáilte" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Níl tú sínithe isteach" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Cineál fógra" @@ -3335,36 +3372,41 @@ msgstr "Fógraí" msgid "Now Playing" msgstr "Ag seinm anois" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Taispeáin an chéad cheann amháin" @@ -3384,23 +3426,23 @@ msgstr "Taispeáin an chéad cheann amháin" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Oscail %1 i líonléitheoir" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "Oscail gléas" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Oscail comhad..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Oscail..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Theip ar an oibríocht" @@ -3451,23 +3498,23 @@ msgstr "Roghanna" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Eagraigh comhaid" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Eagraigh comhaid..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Ag eagrú comhaid" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Clibeanna bunaidh" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Roghanna eile" @@ -3475,7 +3522,7 @@ msgstr "Roghanna eile" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "Roghanna aschuir" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Forscríobh ar chomhaid atá ann cheana" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "Sealbhóir" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Cóisir" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "Cóisir" msgid "Password" msgstr "Focal faire" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Cuir ar sos" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Cuir athsheinm ar sos" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Curtha ar sos" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Seinn" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Seinn Ealaíontóir nó Clib" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "Seinn mura bhfuil aon rud eile ag seinm cheana féin" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Seinn/Cuir ar sos" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Athsheinm" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Roghanna an tseinnteora" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podchraoltaí" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Amhráin mhóréilimh" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Amhráin ar a bhfuil móréilimh orthu inniu" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Sainroghanna" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Sainroghanna..." @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "Brúigh cnaipe" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Réamhamharc" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Roimhe" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "An rian roimhe" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Clóbhuail eolas an leagain" @@ -3736,21 +3765,25 @@ msgstr "Clóbhuail eolas an leagain" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Dul chun cinn" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Cuir na hamhráin in eagar fánach" @@ -3758,85 +3791,95 @@ msgstr "Cuir na hamhráin in eagar fánach" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Caighdeán" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Bainisteoir na Scuaine" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Cuir na rianta roghnaithe i scuaine" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Cuir an rian i scuaine" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Craolacháin" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Báisteach" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Amharcléiriú fánach" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Cealaigh i ndáiríre?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Athnuaigh" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "Athnuaigh na bealaí" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Athnuaigh na sruthanna" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Bain" @@ -3877,7 +3916,7 @@ msgstr "Bain" msgid "Remove action" msgstr "Bain gníomh" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "Bain fillteán" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Athsheinn" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Athsheinn an t-albam" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Athsheinn an rian" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Athshocraigh" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rac" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Bain an gléas go sábháilte" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Cuir an íomhá i dtaisce" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,34 +4180,38 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Cuardaigh" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Cuardaigh Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Cuardaigh Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "Cuardaigh iTunes" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Roghanna cuardaithe" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Ag cuardach ar Ghrooveshark" @@ -4200,27 +4253,27 @@ msgstr "Ag cuardach ar Ghrooveshark" msgid "Second level" msgstr "An dara airde" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Aimsigh siar" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Aimsigh ar aghaidh" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Roghnaigh uile" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Ná roghnaigh ceann ar bith" @@ -4228,7 +4281,7 @@ msgstr "Ná roghnaigh ceann ar bith" msgid "Select background color:" msgstr "Roghnaigh dath an chúlra:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Roghnaigh íomhá don cúlra" @@ -4244,7 +4297,7 @@ msgstr "Roghnaigh dath an tulra:" msgid "Select visualizations" msgstr "Roghnaigh amharcléirithe" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Roghnaigh amharcléirithe..." @@ -4252,7 +4305,7 @@ msgstr "Roghnaigh amharcléirithe..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Sraithuimhir" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Socraigh %1 go \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Socraigh an airde chuig faoin gcéad" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Socraigh luach do gach rian roghnaithe..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Aicearra" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Aicearra do %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Tá an t-aicearra do %1 ann cheana" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Taispeáin" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Taispeáin gach amhrán" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Taispeáin na hamhráin ar fad" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "Taispeáin roinnteoirí" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Taispeáin lánmhéid..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Taispeáin i siortaitheoir na gcomhad..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Taispeáin na cinn nach bhfuil clib orthu amháin" @@ -4390,8 +4447,8 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Taispeáin na cnaipí \"grá\" agus \"toirmisc\"" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4405,27 +4462,27 @@ msgstr "Táispeáin deilbhín an tráidire" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Taispeáin/Folaigh" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Seinn go fánach" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Seinn na halbaim go fánach" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Seinn uile go fánach" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Seinn go fánach na rianta san albam seo" @@ -4441,7 +4498,7 @@ msgstr "Scoir" msgid "Signing in..." msgstr "Ag síniú isteach..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Ealaíontóirí cosúla" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Clúdach albaim beag" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Bog" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Rac bog" @@ -4497,11 +4562,11 @@ msgstr "Rac bog" msgid "Song Information" msgstr "Faisnéis an amhráin" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Faisnéis an amhráin" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Togh na hamhráin de réir" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Foinse" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "Breiseán Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Níl an breiseán Spotify suiteáilte" @@ -4561,77 +4634,77 @@ msgstr "Níl an breiseán Spotify suiteáilte" msgid "Standard" msgstr "Caighdeánach" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Réalt curtha leis" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Ag tosú %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Ag tosú..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Ionaid fhoirleata" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stad" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Stad i ndiaidh" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Stad i ndiaidh an rian seo" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Stad an athsheinm" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Stad ag seinm i ndiaidh an rian reatha" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Stadtha" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Sruth" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Clibeanna molta" @@ -4671,13 +4744,13 @@ msgstr "Clibeanna molta" msgid "Summary" msgstr "Achoimre" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Sár-ard (2048x2048)" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Clibeanna ar barr" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Clib" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4733,11 +4798,11 @@ msgstr "" msgid "Text options" msgstr "Roghanna téacs" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "A bhuí le" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "Clúdadh an albaim den amhrán atá á seinm faoi láthair" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Ní comhadlann bailí í %1" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Ní mór don dara luach a bheith níos mó ná an chéad cheann!" @@ -4764,40 +4824,40 @@ msgstr "Ní mór don dara luach a bheith níos mó ná an chéad cheann!" msgid "The site you requested does not exist!" msgstr "Níl an láithreán ar iarr tú air ann!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Ní íomhá é an láithreán a iarr tú air!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Tá amhráin san albam seo" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "Tharla fadhbanna ag scriosadh cuid de na hamhráin. Níorbh fhéidir na comhaid a leanas a scriosadh:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Scriosfar na comhaid seo ón ngléas, an bhfuil tú cinnte gur mian leat leanúint ar aghaidh?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "An triú airde" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Níl an gléas ag feidhmiú i gceart" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Teideal" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Chun craolachán Grooveshark a thosú, ba chóir duit éisteacht le roinnt amhráin eile ó Ghrooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Inniu" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Scoránaigh lánscáileán" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Líon iomlán na bearta aistrithe" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Rian" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "Múch" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(anna)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Níorbh fhéidir %1 a íosluchtú (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Anaithnid" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Botún anaithnid" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Díshocraigh an clúdach" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Nuashonraigh gach podchraoladh" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Nuashonraigh an podchraoladh seo" @@ -5068,21 +5132,21 @@ msgstr "Nuashonraigh an podchraoladh seo" msgid "Updating" msgstr "Ag nuashonrú" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Ag nuashonrú %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Ag nuashonrú %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Ag nuashonrú an leabharlann" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Úsáid" @@ -5090,11 +5154,11 @@ msgstr "Úsáid" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "Bain feidhm as tacair dhathanna shaincheaptha" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Caite" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Comhéadan" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Ealaíontóirí éagsúla" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Leagan %1" @@ -5207,7 +5271,7 @@ msgstr "Amharc" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Amharcléirithe" @@ -5215,11 +5279,15 @@ msgstr "Amharcléirithe" msgid "Visualizations Settings" msgstr "Socruithe amharcléirithe" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Airde %1%" @@ -5237,11 +5305,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5249,7 +5317,7 @@ msgstr "Wav" msgid "Website" msgstr "Láithreán gréasáin" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Seachtainí" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: gníomhachtaithe" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: nasctha" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: dínasctha" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: cadhnra íseal (%2%)" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Fuaim Windows Media" @@ -5329,25 +5397,25 @@ msgstr "Fuaim Windows Media" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "Bliain" msgid "Year - Album" msgstr "Bliain - Albam" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Bliain" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Inné" @@ -5371,13 +5439,13 @@ msgstr "Inné" msgid "You are about to download the following albums" msgstr "Tá tú ar tí na halbaim seo a leanas a íosluchtú" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "Níl tú sínithe isteach." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Tá tú sínithe isteach mar %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Tá tú sínithe isteach." @@ -5400,13 +5468,13 @@ msgstr "Tá tú sínithe isteach." msgid "You can change the way the songs in the library are organised." msgstr "Tig leat an dóigh a eagraítear na hamhráin sa leabharlann a athrú." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Níl cuntas Grooveshark Anywhere agat." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Níl cuntas Spotify Premium agat." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Is aoibhinn leat an rian seo" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "Caithfear Clementine a atosú chun an teanga a athrú." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Níl faic i do leabharlann!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Do bhí d'ainm úsáideora nó focal faire mícheart." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "A náid" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "cuir %n amhráin leis" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "i ndiaidh" @@ -5540,19 +5610,19 @@ msgstr "uathoibríoch" msgid "before" msgstr "roimh" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "idir" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "an ceann is mó ar dtús" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "ina bhfuil" @@ -5562,20 +5632,20 @@ msgstr "ina bhfuil" msgid "disabled" msgstr "díchumasaithe" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "diosca %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "nach bhfuil ann" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "a chríochnaíonn le" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "cothrom le" @@ -5583,11 +5653,11 @@ msgstr "cothrom le" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "comhadlann gpodder.net" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "níos mó ná" @@ -5595,54 +5665,55 @@ msgstr "níos mó ná" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "níos lú ná" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "na cinn is faide ar dtús" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "na cinn is nuaí ar dtús" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "ní ar an" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "na cinn is sine ar dtús" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "ar" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "roghanna" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "brúigh enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "bain %n amhráin" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "na cinn is giorra ar dtús" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "na cinn is lú ar dtús" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "a thosaíonn le" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "stad" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "rian %1" diff --git a/src/translations/gl.po b/src/translations/gl.po index 9d801487f..7490167a2 100644 --- a/src/translations/gl.po +++ b/src/translations/gl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Galician (http://www.transifex.com/projects/p/clementine/language/gl/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Language: gl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +44,9 @@ msgstr " días" msgid " kbps" msgstr "kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -59,11 +59,16 @@ msgstr "pt" msgid " seconds" msgstr " segundos" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " cancións" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 álbums" @@ -73,12 +78,12 @@ msgstr "%1 álbums" msgid "%1 days" msgstr "%1 días" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "hai %1 días" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 en %2" @@ -88,48 +93,48 @@ msgstr "%1 en %2" msgid "%1 playlists (%2)" msgstr "%1 listas de reprodución (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 escollidas de" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 canción" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 cancións" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 canción encontrada" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 cancións atopada (amosando %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 canción" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 descargado." -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Módulo Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 outros oíntes" @@ -143,18 +148,21 @@ msgstr "%L1 reproducións totais" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n fallou" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n completado(s)" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n restante" @@ -166,24 +174,24 @@ msgstr "&Aliñar Texto" msgid "&Center" msgstr "&Centrar" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personalizado" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Complementos" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Axuda" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Esconder %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Esconder..." @@ -191,23 +199,23 @@ msgstr "Esconder..." msgid "&Left" msgstr "&Esquerda" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Música" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Ningunha" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Lista de reprodución" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Saír" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Modo de repetición" @@ -215,23 +223,23 @@ msgstr "&Modo de repetición" msgid "&Right" msgstr "&Direita" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&Modo aleatorio" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Axustar as columnas á xanela" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Ferramentas" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...e a todos os que contribuíron con Amarok" @@ -251,14 +259,10 @@ msgstr "0px" msgid "1 day" msgstr "1 día" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 pista" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +272,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 pistas aleatorias" @@ -276,12 +280,6 @@ msgstr "50 pistas aleatorias" msgid "Upgrade to Premium now" msgstr "Pasarse a preferente" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Cree unha nova conta ou reestablezca o seu contrasinal" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +290,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Si non está seleccionado, Clementine tentará gardar as súas puntuacións e outras estadísticas solo en unha base de datos separada e non modificará os seus arquivos.

Si está seleccionado, gardará as estadísticas na base de datos e tamén directamente en cada arquivo cada vez que se modifiquen.

Teña en conta que pode que non funcione con tódolos formatos, e que non hai un estándar para facelo, así que outros reprodutores de música poden non ser capaces de reelas.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +309,38 @@ msgid "" "activated.

" msgstr "

Isto escribirá as valoracións e estatísticas das cancións nas etiquetas dos arquivos para as cancións de toda a súa biblioteca.

Isto non é necesario si a opción &Gardar as puntuacións nas etiquetas de ficheiro cando sexa posible" foi activada.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

As marcas de substitución comezan con %. Por exemplo: %artist %album %title.

\n

Se rodea seccións de texto que conteñen unha marca de substitución, esa sección non se amosará se a marca de substitución estará baleira.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Requírese unha conta Grooveshark Anywhere" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Precisas ter unha conta Premium en Spotify" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Os clientes só poden conectarse introducindo o código correcto." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Unha lista de reproducións intelixente é unha lista dinámica de cancións extraídas da túa colección. Ela ofréceche distintos xeitos de seleccionar as cancións." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Unha canción será incluída na lista de reprodución se reúne estas condicións" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-z" @@ -351,36 +360,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "Toda a gloria ao Hipnosapo" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Cancelar" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Acerca do %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Acerca de Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Acerca Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detalles da conta" @@ -392,11 +400,15 @@ msgstr "Detalles da conta (preferente)" msgid "Action" msgstr "Acción" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Activar/desactivar Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Engadir un podcast" @@ -412,39 +424,39 @@ msgstr "Engade unha nova liña se é suportado polo padrón de notificación" msgid "Add action" msgstr "Engadir acción" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Engadir outro fluxo…" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Engadir un cartafol…" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Engadir un ficheiro" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Engadir arquivo ó transcodificador" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Engadir arquivo(s) ó transcodificador" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Engadir ficheiro..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Engadir ficheiros para converter" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Engadir cartafol" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Engadir cartafol..." @@ -456,11 +468,11 @@ msgstr "Engadir novo cartafol" msgid "Add podcast" msgstr "Engadir un podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Engadir un podcast…" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Engade un termo de busca" @@ -524,6 +536,10 @@ msgstr "Engadir a etiqueta dos saltos" msgid "Add song title tag" msgstr "Engadir a etiqueta do título" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Engadir a etiqueta da pista" @@ -532,22 +548,34 @@ msgstr "Engadir a etiqueta da pista" msgid "Add song year tag" msgstr "Engadir a etiqueta do ano" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Engadir fluxo..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Engadir aos favoritos en Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Engadir ás listas en Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Engadir a outra lista de reprodución" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Engadir á lista" @@ -556,6 +584,10 @@ msgstr "Engadir á lista" msgid "Add to the queue" msgstr "Engadir á cola" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Engadir acción wiimotedev" @@ -585,15 +617,15 @@ msgstr "Engadido hoxe" msgid "Added within three months" msgstr "Engadido os derradeiros tres meses" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Engadir á música persoal" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Engadir aos favoritos" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Agrupamento avanzado…" @@ -601,12 +633,12 @@ msgstr "Agrupamento avanzado…" msgid "After " msgstr "Despois de " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Despóis de copiar..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +646,11 @@ msgstr "Despóis de copiar..." msgid "Album" msgstr "Álbum" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (sonoridade ideal para todas as pistas)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +660,36 @@ msgstr "Autor do álbum" msgid "Album cover" msgstr "Portada" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Información do Álbum en Jamendo.com" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Álbums con portada" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Álbums sen portada" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Todos os ficheiros" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Toda a gloria ao Hipnosapo" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Todos os álbums" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Todos os intérpretes" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Todos os ficheiros (*)" @@ -665,19 +698,19 @@ msgstr "Todos os ficheiros (*)" msgid "All playlists (%1)" msgstr "Todas as listas (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Todos os tradutores" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Todas as cancións" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Permita a un cliente descargar música dende este ordenador." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Permitir descargas" @@ -702,30 +735,30 @@ msgstr "Sempre amosar a xanela principal" msgid "Always start playing" msgstr "Sempre comezar reproducindo" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "É preciso un engadido adicional para usar Spotify en Clementine. Queres baixalo e instalalo agora?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Produciuse un erro ao cargar a base de datos de iTunes." -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Un erro aconteceu escrebendo metadados a '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Produciuse un erro non especificado." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "E:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Anoxado" @@ -734,13 +767,13 @@ msgstr "Anoxado" msgid "Appearance" msgstr "Aparencia" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Engadir ficheiros/URL á lista de reprodución" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Engadir á lista actual" @@ -748,52 +781,47 @@ msgstr "Engadir á lista actual" msgid "Append to the playlist" msgstr "Engadir á lista" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Aplicar compresión para evitar clipping" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Está certo que quer apagar o \"%1\" predefinido?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Está seguro de que quere eliminar a lista?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Está seguro de que quere restablecer as estatísticas da canción?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Seguro que quere escribir as estadísticas das cancións nos ficheiros para tódalas cancións na biblioteca?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Intérprete" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Información do intérprete" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radio do intérprete" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Etiquetas do intérprete" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Iniciais do intérprete" @@ -801,9 +829,13 @@ msgstr "Iniciais do intérprete" msgid "Audio format" msgstr "Formato do son" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autenticazón fallida" @@ -811,7 +843,7 @@ msgstr "Autenticazón fallida" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autores/as" @@ -827,7 +859,7 @@ msgstr "Actualización automática" msgid "Automatically open single categories in the library tree" msgstr "Expandir automaticamente as categorías únicas na árbore da colección." -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Dispoñíbel" @@ -835,15 +867,15 @@ msgstr "Dispoñíbel" msgid "Average bitrate" msgstr "Taxa de bits media" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Tamaño medio das imaxes" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcasts da BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +896,7 @@ msgstr "Imaxe de fondo" msgid "Background opacity" msgstr "Opacidad de fondo" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Gardando unha copia de seguranza da base de datos…" @@ -872,11 +904,7 @@ msgstr "Gardando unha copia de seguranza da base de datos…" msgid "Balance" msgstr "Equilibrio" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Prohibir a entrada" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Analisador da barra" @@ -896,18 +924,17 @@ msgstr "Comportamento" msgid "Best" msgstr "Mellor" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografía de %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Taxa de bits" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +942,12 @@ msgstr "Taxa de bits" msgid "Bitrate" msgstr "Taxa de bits" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Analisador de blocos" @@ -931,7 +963,7 @@ msgstr "Cantidade de blur" msgid "Body" msgstr "Corpo" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Analisador de Boom" @@ -945,11 +977,11 @@ msgstr "Box" msgid "Browse..." msgstr "Examinar..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Duración de almacenado en búfer" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Almacenando no búfer…" @@ -961,43 +993,66 @@ msgstr "Pero as seguintes orixes están desactivadas:" msgid "Buttons" msgstr "Botóns" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Compatibilidade con follas CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Cancelar" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Cambiar a portada" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Cambiar o tamaño da letra…" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Cambiar o modo de repetición" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Cambiar combinación de teclas" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Cambiar o modo aleatorio" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Cambiar o idioma" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1062,19 @@ msgstr "Se cambia a opción sobre a reprodución nunha única canle, o cambio se msgid "Check for new episodes" msgstr "Buscar novos episodios" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Verificar se há actualizazóns..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Escolla un nome para a súa lista intelixente" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Elixir automaticamente" @@ -1031,11 +1090,11 @@ msgstr "Escolla o tipo de letra…" msgid "Choose from the list" msgstr "Elixir da lista" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Escolla o criterio polo que se ordenará a lista, e a cantidade de cancións que a conformarán." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Escolla o cartafol no que descargar os podcasts" @@ -1044,7 +1103,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Escolla os sitios web nos que se buscarán as letras das cancións." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Clásica" @@ -1052,17 +1111,17 @@ msgstr "Clásica" msgid "Cleaning up" msgstr "Facendo limpeza…" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Limpar" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Baleirar a lista de reprodución" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1075,8 +1134,8 @@ msgstr "Erro de Clementine" msgid "Clementine Orange" msgstr "Naranxa Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Visualización de Clementine" @@ -1098,9 +1157,9 @@ msgstr "Clementine pode reproducir a súa música subida a Dropbox." msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine pode reproducir a súa música subida a Google Drive." -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine pode reproducir a súa música subida a Ubuntu One." +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1172,13 @@ msgid "" "an account." msgstr "Clementine pode sincronizar as súas listas de subscrición con resto dos seus computadores e outros aplicativos de podcast. Cree unha conta." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine non puido cargar ningunha visualización projectM. Asegúrese de que Clementine foi instalado correctamente." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine non puido descargar o seu estado de subscrición debido a problemas de rede. Almacenarase unha lista coas pistas reproducidas que se enviará máis tarde a Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Visor de imaxes de Clementine" @@ -1138,11 +1190,11 @@ msgstr "Clementine non puido atopar resultados para este ficheiro." msgid "Clementine will find music in:" msgstr "Clementine atopará música en:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Prema aquí para engadir música" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1204,10 @@ msgstr "Pulse aquí para marcar esta lista de reprodución como favorita e engad msgid "Click to toggle between remaining time and total time" msgstr "Prema aquí para cambiar entre o tempo restante e o tempo total." -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1222,19 @@ msgstr "Pechar" msgid "Close playlist" msgstr "Pechar a lista" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Cerrar visualización" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Se pecha esta xanela deterase a descarga." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Se pecha esta xanela deterase a busca de portadas de álbums." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Clube" @@ -1187,73 +1242,78 @@ msgstr "Clube" msgid "Colors" msgstr "Cores" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por comas de :, onde o nivel será un valor do 0 ao 3." -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentario" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Completar as etiquetas automaticamente." -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Completar as etiquetas automaticamente…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compositor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Configurar %1…" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Configura Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configurar Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Configura Maganatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configura atallos " -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configura Spotify" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Configurar Subsonic…" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Configurar a busca global…" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configurar a biblioteca..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Configurar os podcasts…" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configurar..." @@ -1261,11 +1321,11 @@ msgstr "Configurar..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Conecte controis de Wii mediante as accións de activar e desactivar." -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Conectar dispositivo" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Conectado con Spotify" @@ -1275,12 +1335,16 @@ msgid "" "http://localhost:4040/" msgstr "Conexión rexeitada polo servidor, comprobe o URL do servidor. Por exemplo: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Conexión fora de tempo, comprobe o URL do servidor. Por exemplo: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Consola" @@ -1296,17 +1360,21 @@ msgstr "Converter toda a música" msgid "Convert any music that the device can't play" msgstr "Converter calquera música que este dispositivo non poda reproducir" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Copiar no portapapeis" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Copiar para o dispositivo" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copiar para a biblioteca" @@ -1314,156 +1382,152 @@ msgstr "Copiar para a biblioteca" msgid "Copyright" msgstr "Dereitos de explotación" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Non foi posíbel conectar con Subsonic, comprobe o URL do servidor. Por exemplo, «http://localhost:4040/»." -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Non podes crear o elemento GStreamer «%1». Asegúrese de que ten instalados os complementos GStreamer." -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Non é posíbel atopar un multiplexor para %1. Asegúrese de que ten instalado os complementos GStreamer necesarios." -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Non é posíbel atopar un codificador para %1. Asegúrese de que ten instalado os complementos GStreamer necesarios." -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Non se pode cargar a estación de radio de last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Non se puido abrir o arquivo externo %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Xestor de portadas" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Covert art da imaxen incorporada" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "As portadas cargáronse automaticamente de %1." -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Covert art desmontado manualmente" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Covert art non montado" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Covert art montado de %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Portadas de %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Crear unha nova lista de Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Desvanecer ao cambiar de canción automaticamente." -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Desvanecer ao cambiar de canción manualmente." -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1535,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personalizado" @@ -1483,54 +1547,50 @@ msgstr "Imaxe personalizada:" msgid "Custom message settings" msgstr "Configuración de mensaxes personalizada" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Radio personalizada" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personalizado…" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Ruta a DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Detectáronse irregularidades na base de datos. Para informarse sobre como recuperar a súa base de datos, infórmese en https://code.google.com/p/clementine-player/wiki/DatabaseCorruption (en inglés)." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data de criazón" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de alterazón" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dias" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Predeterminado" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Diminuír o volume nun 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Diminuír o volume nun por cento" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Diminuír o volume" @@ -1538,6 +1598,11 @@ msgstr "Diminuír o volume" msgid "Default background image" msgstr "Imaxe de fondo predeterminada" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Restablecer" @@ -1546,30 +1611,30 @@ msgstr "Restablecer" msgid "Delay between visualizations" msgstr "Atraso entre as visualizacións" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Eliminar" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Eliminar a lista de Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Eliminar os datos descargados" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Eliminar arquivos " -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Eliminar do dispositivo" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Eliminar do disco" @@ -1577,31 +1642,31 @@ msgstr "Eliminar do disco" msgid "Delete played episodes" msgstr "Eliminar os episodios vistos" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Eliminar predefinido" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Elimminar lista de reprodución intelixente" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Eliminar os ficheiros orixinais" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Eliminando os ficheiros…" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Quitar as pistas seleccionadas da cola" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Quitar da cola" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destino" @@ -1610,7 +1675,7 @@ msgstr "Destino" msgid "Details..." msgstr "Detalles…" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Dispositivo" @@ -1622,15 +1687,15 @@ msgstr "Propiedades do dispositivo" msgid "Device name" msgstr "Nome do dispositivo" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Propiedades do dispositivo…" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Dispositivos" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1667,12 +1732,17 @@ msgstr "Desactivar a duración" msgid "Disable moodbar generation" msgstr "Desactivar a xeración da barra do ánimo." -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Desactivado" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1682,15 +1752,15 @@ msgid "Discontinuous transmission" msgstr "Transmisión entrecortada" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opcións de visualización" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Amosar a mensaxe en pantalla" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Analizar completamente a biblioteca" @@ -1702,27 +1772,27 @@ msgstr "Non converter nada" msgid "Do not overwrite" msgstr "Non sobrescribir" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Non repetir" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Non amosar en varios intérpretes" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Non desordenar" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Non deter!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Doar" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Prema dúas veces para abrir" @@ -1730,12 +1800,13 @@ msgstr "Prema dúas veces para abrir" msgid "Double clicking a song will..." msgstr "Ao premer dúas veces unha canción…" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Descargar %n episodios…" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Cartafol de descargas" @@ -1751,7 +1822,7 @@ msgstr "Grupo da descarga" msgid "Download new episodes automatically" msgstr "Descargar novos episodios automaticamente" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Cola de descarga" @@ -1759,15 +1830,15 @@ msgstr "Cola de descarga" msgid "Download the Android app" msgstr "Descargar o programa para Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Descargar o álbum" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Descargar o álbum…" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Descargar o episodio" @@ -1775,7 +1846,7 @@ msgstr "Descargar o episodio" msgid "Download..." msgstr "Descargar…" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Descargando (%1%)…" @@ -1784,23 +1855,23 @@ msgstr "Descargando (%1%)…" msgid "Downloading Icecast directory" msgstr "Descargando o cartafol de Icecast…" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Descargando o catálogo de Jamendo…" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Descargando o catálogo de Magnatune…" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Descargando o complemento de Spotify…" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Descargando metadatos…" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Arrastre para cambiar de posición" @@ -1820,20 +1891,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "O modo dinámico está activado" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Mestura aleatoria dinámica" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Editar a lista intelixente…" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Editar etiqueta \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Editar etiqueta..." @@ -1845,16 +1916,16 @@ msgstr "Editar etiquetas" msgid "Edit track information" msgstr "Editar información da pista" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Editar información da pista..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Editar informacións das pistas..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Editar..." @@ -1862,6 +1933,10 @@ msgstr "Editar..." msgid "Enable Wii Remote support" msgstr "Activar a compatibilidade con controis de Wii." +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Activar o ecualizador." @@ -1876,7 +1951,7 @@ msgid "" "displayed in this order." msgstr "Activar as seguintes orixes para incluílas nos resultados das buscas. Os resultados amosaranse na orde indicada." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Activar a sincronización con Last.fm." @@ -1904,15 +1979,10 @@ msgstr "Escriba un enderezo URL para descargar a imaxe da portada de internet:" msgid "Enter a filename for exported covers (no extension):" msgstr "Escriba un nome de arquivo para as portadas exportadas (sen extensión):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Escriba un novo nome para a lista" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Escriba o nome dun intérprete ou etiqueta para comezar a escoitar á súa radio de Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1996,7 @@ msgstr "Introduza uns criterios de busca abaixo para atopar podcasts en iTunes S msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Introduza uns criterios de busca abaixo para atopar podcasts en gpodder.net." -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Introduza aquí os criterios de busca." @@ -1935,11 +2005,11 @@ msgstr "Introduza aquí os criterios de busca." msgid "Enter the URL of an internet radio stream:" msgstr "Escriba o enderezo URL dunha radio de internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Escriba o nome do cartafol" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Introducir esta IP na App para conectar con Clementine." @@ -1947,21 +2017,22 @@ msgstr "Introducir esta IP na App para conectar con Clementine." msgid "Entire collection" msgstr "Colección completa" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ecualizador" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Equivalente a «--log-levels *:1»." -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Equivalente a «--log-levels *:3»." -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Erro" @@ -1969,38 +2040,38 @@ msgstr "Erro" msgid "Error connecting MTP device" msgstr "Erro conectando dispositivo MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Erro ao copiar as cancións" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Erro ao eliminar as cancións" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Erro ao baixar o engadido de Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Non foi posíbel cargar %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Erro ao cargar a lista de reprodución di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Erro ao procesarr %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Non foi posíbel cargar o CD de son." -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Reproducidas algunha vez" @@ -2032,7 +2103,7 @@ msgstr "Cada 6 horas" msgid "Every hour" msgstr "Cada hora" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Agás entre pistas do mesmo álbum ou na mesma folla CUE." @@ -2044,7 +2115,7 @@ msgstr "Portadas existentes" msgid "Expand" msgstr "Expandir" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Caduca o %1" @@ -2065,36 +2136,36 @@ msgstr "Exportar portadas descargadas" msgid "Export embedded covers" msgstr "Exportar portadas incrustadas" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Exportación acabada" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exportada %1 portada de %2 (%3 saltada/s)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2175,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Esvaecer gradualmente ó pausar / aparecer gradualmente ó reanudar" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Desvanecer ao deter unha pista." -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Desvanecendo" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Duración do desvanecimento" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Non foi posíbel descargar o directorio." -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Non foi posíbel descargar os podcasts." -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Non foi posíbel cargar o podcast." -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Non foi posíbel analizar o XML da fonte RSS." @@ -2148,11 +2219,11 @@ msgstr "Non foi posíbel analizar o XML da fonte RSS." msgid "Fast" msgstr "Rápido" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoritos" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Pistas favoritas" @@ -2168,11 +2239,11 @@ msgstr "Descargar automaticamente" msgid "Fetch completed" msgstr "Completouse a descarga" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Descargando a biblioteca de Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Produciuse un erro ao descargar a portada" @@ -2180,7 +2251,7 @@ msgstr "Produciuse un erro ao descargar a portada" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Extensión do ficheiro" @@ -2188,19 +2259,23 @@ msgstr "Extensión do ficheiro" msgid "File formats" msgstr "Formatos de ficheiro" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nome do ficheiro" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nome do ficheiro (sen camiño)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tamaño do ficheiro" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2285,7 @@ msgstr "Tipo de ficheiro" msgid "Filename" msgstr "Ruta" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Ficheiros" @@ -2218,15 +2293,19 @@ msgstr "Ficheiros" msgid "Files to transcode" msgstr "Ficheiros a converter" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Atope cancións na súa biblioteca que coincidan cos criterios indicados." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Obtendo un identificador para a canción…" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Rematar" @@ -2234,7 +2313,7 @@ msgstr "Rematar" msgid "First level" msgstr "Primeiro nivel" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2250,12 +2329,12 @@ msgstr "Por cuestións legais, para a compatibilidade con Spotify debe instalar msgid "Force mono encoding" msgstr "Forzar a codificación dunha canle." -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Esquecer o dispositivo" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2349,7 @@ msgstr "Ao esquecer un dispositivo, desaparecerá desta lista, e Clementine ter #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2377,23 @@ msgstr "Taxa de fotogramas" msgid "Frames per buffer" msgstr "Fotogramas por búfer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Amigos" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Conxelado" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Motor de son GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Xeral" @@ -2330,30 +2401,30 @@ msgstr "Xeral" msgid "General settings" msgstr "Configuración xeral" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Xénero" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Obter un enderezo URL para compartir esta lista de Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Obter un enderezo URL para compartir esta canción de Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Descargando as cancións populares de Grooveshark…" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Descargando as canles…" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Descargando os fluxos…" @@ -2365,11 +2436,11 @@ msgstr "Noméeo:" msgid "Go" msgstr "Ir" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Ir á seguinte lapela de lista" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Ir á lapela anterior de lista" @@ -2377,7 +2448,7 @@ msgstr "Ir á lapela anterior de lista" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2458,7 @@ msgstr "Descargáronse %1 das %2 portadas (quedaron %3 por descargar)." msgid "Grey out non existent songs in my playlists" msgstr "Marcar en gris as cancións da lista que non existan." -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2466,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Produciuse un erro ao intentar acceder a Grooveshark." -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL da lista de Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Radio de Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL da canción de Grooveshark" @@ -2411,44 +2482,44 @@ msgstr "URL da canción de Grooveshark" msgid "Group Library by..." msgstr "Agrupar a biblioteca por…" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Agrupar por" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Agrupar por álbum" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Agrupar por intérprete" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Agrupar por intérprete/álbum" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Agrupar por intérprete/ano" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Agrupar por Xénero/Álbum" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Agrupar por xénero/intérprete/álbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupación" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "A páxina web non contiña ningunha fonte RSS." -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Recibiuse o código de estado de HTTP 3xx sen un URL. Comprobe a configuración do servidor." @@ -2457,7 +2528,7 @@ msgstr "Recibiuse o código de estado de HTTP 3xx sen un URL. Comprobe a configu msgid "HTTP proxy" msgstr "HTTP proxy" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Contento" @@ -2473,25 +2544,25 @@ msgstr "A información do hardware está somente disponíbel cando o dispositivo msgid "High" msgstr "Alto" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Alto(%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Alto (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Anfitrión non atopado, comprobe o URL do servidor. Por exemplo: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Horas" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hipnosapo" @@ -2503,15 +2574,15 @@ msgstr "Non teño unha conta Magnatune" msgid "Icon" msgstr "Ícone" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ícones na cima" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identificando a canción…" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2592,24 @@ msgstr "Se continúas, o dispositivo poderá traballar moi amodo e as cancións msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Se coñece o enderezo URL dun podcast, introdúzao a continuación e prema «Ir»." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorar o artigo inglés, «The», no nome dos intérpretes." -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Imaxes(*.png *.jpg *.jpeg *.bmp *.gif *xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Imaxes(*.png *.jpg *.jpeg *.bmp *xpm *.pbm *.pgm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "En %1 días" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "En %1 semanas" @@ -2549,7 +2620,7 @@ msgid "" "time a song finishes." msgstr "No modo dinámico, engadiranse novas pistas á lista a medida que se reproduzan as que hai." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Inbox" @@ -2561,36 +2632,36 @@ msgstr "Incluír a portada do álbum na notificación." msgid "Include all songs" msgstr "Incluír todas as cancións" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "A versión do protocolo REST de Subsonic é incompatíbel. Debe anovar o cliente." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "A versión do protocolo REST de Subsonic é incompatíbel. Debe anovar o servidor." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "A configuración está incompleta. Asegúrese de que encheu todos os campos." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Incrementar o volume ao 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Incrementar o volume nun por cento" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Incrementar o volume" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indexando %1…" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Información" @@ -2598,55 +2669,55 @@ msgstr "Información" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Inserir" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Instalado" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Comprobación da integridade" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Fornecedores de internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Chave non válida da API" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Formato inválido" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Método inválido" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parámetros inválidos" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Recurso inválido especificado" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Servizo Inválido" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Chave de sesón non válida" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Nome de usuario ou contrasinal inválidos" @@ -2654,42 +2725,42 @@ msgstr "Nome de usuario ou contrasinal inválidos" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Pistas máis escoitadas de Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Os máis en Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo Top neste mes" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo Top nesta semana" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Base de dados de Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Ir á pista que se está a reproducir" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Gardar botóns para %1 second..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Gardar botóns para %1 seconds..." @@ -2698,23 +2769,24 @@ msgstr "Gardar botóns para %1 seconds..." msgid "Keep running in the background when the window is closed" msgstr "Continuar a execución en segundo plano ao pechar a xanela." -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Gardar os arquivos orixinais" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Michiños" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Idioma" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Portátil/Auscultadores" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Large Hall" @@ -2722,58 +2794,24 @@ msgstr "Large Hall" msgid "Large album cover" msgstr "Portada grande do álbum" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Barra lateral larga" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Últimos en soar" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Radio personalizada de Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Biblioteca da Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Radio de mestura de Last.fm — %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Radio dos veciños de Last.fm — %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Radio da Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Intérpretes de Last.fm parecidos a %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Radio de etiqueta de Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm está ocupada neste momento, por favor tente mais tarde en breve" @@ -2781,11 +2819,11 @@ msgstr "Last.fm está ocupada neste momento, por favor tente mais tarde en breve msgid "Last.fm password" msgstr "Contrasinal de Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Número de escoitas de Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Etiquetas de Last.fm" @@ -2793,28 +2831,24 @@ msgstr "Etiquetas de Last.fm" msgid "Last.fm username" msgstr "Nome de usuario de Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki de Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Pistas en peor estima" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Deixe baleiro para empregar o predeterminado. Exemplos: «/dev/dsp», «front», etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duración" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Biblioteca" @@ -2822,24 +2856,24 @@ msgstr "Biblioteca" msgid "Library advanced grouping" msgstr "Agrupamento avanzado da biblioteca" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Nota de análise da biblioteca" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Busca na biblioteca" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Límites" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Escoitar cancións de Grooveshark en base ao que escoitou previamente." -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Ao Vivo" @@ -2851,15 +2885,15 @@ msgstr "Cargar" msgid "Load cover from URL" msgstr "Cargar a portada dun URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Cargar a portada dun URL…" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Cargar a portada do computador" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Cargar a portada do computador…" @@ -2867,84 +2901,89 @@ msgstr "Cargar a portada do computador…" msgid "Load playlist" msgstr "Cargar unha lista" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Cargar unha lista…" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Cargando a radio de Last.fm…" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Cargando o dispositivo MTP…" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Cargando a base de datos do iPod…" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Cargando a lista intelixente…" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Cargando as cancións…" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Cargando o fluxo…" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Cargando as pistas…" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Cargando a información das pistas…" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Cargando…" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Carga ficheiros ou enderezos URL, substituíndo a lista actual." +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Acceder" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Non se puido acceder." +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Perfil de predición a longo prazo (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Gústame" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Baixa (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Baixa (256x256)" @@ -2956,12 +2995,17 @@ msgstr "Perfil de pouca complexidade (LC)" msgid "Lyrics" msgstr "Letras" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Letra de %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3017,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2989,7 +3033,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Descarga de Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Rematou a descarga de Magnatune." @@ -2997,15 +3041,20 @@ msgstr "Rematou a descarga de Magnatune." msgid "Main profile (MAIN)" msgstr "Perfil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Que así sexa!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Descargar a lista para usala sen internet" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Resposta mal formada" @@ -3018,15 +3067,15 @@ msgstr "Configuración manual do proxy." msgid "Manually" msgstr "Manualmente" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabricante" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Marcar como escoitada" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Marcar como nova" @@ -3038,17 +3087,21 @@ msgstr "Coincidencia con todos os termos (AND)" msgid "Match one or more search terms (OR)" msgstr "Coincidencia con algúns termos (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Taxa de bits máxima" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Medio (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Medio (512x512)" @@ -3060,11 +3113,15 @@ msgstr "Tipo de asociación" msgid "Minimum bitrate" msgstr "Taxa de bits mínima" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Predefinicións de Missing projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modelo" @@ -3072,20 +3129,20 @@ msgstr "Modelo" msgid "Monitor the library for changes" msgstr "Vixiar is cambios na colección." -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Reprodución nunha única canle." -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Meses" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Ánimo" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Estilo da barra do ánimo" @@ -3093,15 +3150,19 @@ msgstr "Estilo da barra do ánimo" msgid "Moodbars" msgstr "Barras do ánimo" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Máis tocados" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Ponto de montaxe" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Pontos de montaxe" @@ -3110,7 +3171,7 @@ msgstr "Pontos de montaxe" msgid "Move down" msgstr "Mover para abaixo" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Mover para a biblioteca..." @@ -3119,7 +3180,7 @@ msgstr "Mover para a biblioteca..." msgid "Move up" msgstr "Mover para acima" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Música" @@ -3127,56 +3188,32 @@ msgstr "Música" msgid "Music Library" msgstr "Colección de música" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Silencio" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "A miña colección de Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "A miña mistura de Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Veciñanza en Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "A miña Radio recomendada de Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "A miña Radio Mistura " - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Música persoal" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Veciñanza" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "A Miña Emisora" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "As miñas recomendazóns" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nome" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opcións de nomenclatura" @@ -3184,23 +3221,19 @@ msgstr "Opcións de nomenclatura" msgid "Narrow band (NB)" msgstr "Banda estreita (BE)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Veciños" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proxy de rede" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Mando por rede" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nunca" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nunca Reproducido" @@ -3209,21 +3242,21 @@ msgstr "Nunca Reproducido" msgid "Never start playing" msgstr "Nunca comezar reproducindo" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Novo cartafol" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nova lista de reprodución" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nova lista de reprodución intelixente" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Novas cancións" @@ -3231,24 +3264,24 @@ msgstr "Novas cancións" msgid "New tracks will be added automatically." msgstr "Engadir as novas pistas automaticamente." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Últimas pistas" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Próximo" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Seguinte pista" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "A vindeira semana" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Sen analisador" @@ -3256,7 +3289,7 @@ msgstr "Sen analisador" msgid "No background image" msgstr "Non hai imaxe de fondo." -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Non se exportaron portadas." @@ -3264,7 +3297,7 @@ msgstr "Non se exportaron portadas." msgid "No long blocks" msgstr "Non hai bloques grandes." -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Non se atoparon resultados. Baleira a caixa de busca para volver amosar a lista de reprodución enteira." @@ -3278,11 +3311,11 @@ msgstr "Non hai bloques pequenos." msgid "None" msgstr "Nengún" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nengunha das cancións seleccionadas é axeitada para sera copiada a un dispositivo " -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3290,43 +3323,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Tipo de bloque normal" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Non dispoñíbel encanto se use unha lista de reprodución dinámica" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Non conectado" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Conteúdo insuficiente" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Fans insuficientes" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Membros insuficientes" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Non ten veciños dabondo." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Non instalado" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Desconectado do servizo." -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Desmontado. Faga dobre clic para montalo." +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Tipo de notificación" @@ -3339,36 +3376,41 @@ msgstr "Notificacións" msgid "Now Playing" msgstr "Agora sonando" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Pré-visualizar no OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3418,11 @@ msgid "" "192.168.x.x" msgstr "Só aceptar conexións de clientes dentro dos intervalos de enderezos IP:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Admitir soamente conexións dende a rede local" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Amosar só o primeiro" @@ -3388,23 +3430,23 @@ msgstr "Amosar só o primeiro" msgid "Opacity" msgstr "Opacidade" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Abrir %1 no navegador" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Abrir un CD de &son…" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Abrir un ficheiro OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Abrir un ficheiro OPML…" @@ -3412,30 +3454,35 @@ msgstr "Abrir un ficheiro OPML…" msgid "Open device" msgstr "Abrir o dispositivo" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Abrir un ficheiro…" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Abrir en Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Abrir nunha nova lista" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Abrir…" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "A operazón fallou" @@ -3455,23 +3502,23 @@ msgstr "Configuración…" msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizar os ficheiros" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizar os ficheiros…" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organizando os ficheiros…" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Etiquetas orixinais" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Outras opcións" @@ -3479,7 +3526,7 @@ msgstr "Outras opcións" msgid "Output" msgstr "Saída" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Dispositivo de saída" @@ -3487,15 +3534,11 @@ msgstr "Dispositivo de saída" msgid "Output options" msgstr "Opcións de saída" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Engadido de saída" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Sobrescribir todo" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Substituír os ficheiros existentes" @@ -3507,15 +3550,15 @@ msgstr "Sobrescriba os máis pequenos soamente" msgid "Owner" msgstr "Dono" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Analizando o catálogo de Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Festa" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3567,20 @@ msgstr "Festa" msgid "Password" msgstr "Contrasinal" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pausa" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pausa" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pausado" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3546,34 +3589,22 @@ msgstr "Intérprete" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Barra lateral simple" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Reproducir" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Reproducir o intérprete ou a etiqueta" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Reproducir a radio dun intérprete…" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Escoitas" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Reproducir unha radio personalizada…" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Reproducir se está detido, pausar se está a reproducir" @@ -3582,45 +3613,42 @@ msgstr "Reproducir se está detido, pausar se está a reproducir" msgid "Play if there is nothing already playing" msgstr "Reproducir se non hai nada reproducíndose aínda." -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Reproducir a radio dunha etiqueta…" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Reproducir a ª pista da lista" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Reproducir/Pausa" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Reprodución" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opczóns do player" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lista de reprodución" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Lista de músicas terminada" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opcións da lista de reprodución" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tipo de lista" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Listas de reprodución" @@ -3632,23 +3660,23 @@ msgstr "Peche o navegador web e volva a Clementine." msgid "Plugin status:" msgstr "Estado do complemento:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Cancións populares" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Cancións populares do mes" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Cancións populares do día" @@ -3657,22 +3685,23 @@ msgid "Popup duration" msgstr "Duración do diálogo" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Porto" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Preeamplificazón" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Configuración" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Configuración…" @@ -3708,7 +3737,7 @@ msgstr "Prema unha combinación de botóns a empregar para" msgid "Press a key" msgstr "Prema unha tecla" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Prema unha combinación de teclas a empregar para %1…" @@ -3719,20 +3748,20 @@ msgstr "Opcións da pantalla xeitosa" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Vista previa" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Pista anterior" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Imprime a información da versión" @@ -3740,21 +3769,25 @@ msgstr "Imprime a información da versión" msgid "Profile" msgstr "Perfil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progreso" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Preme o botón Wiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Pon as cancións aleatoriamente" @@ -3762,85 +3795,95 @@ msgstr "Pon as cancións aleatoriamente" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Calidade" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Investigando no dispositivo" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Xestor da fila" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Engadir á lista" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Engadir á lista" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (mesmo volume para todas as pistas)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Chuvia" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Visualización aleatoria" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Califica a canción actual 0 estrelas" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Califica a canción actual 1 estrela" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Califica a canción actual 2 estrelas" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Califica a canción actual 3 estrelas" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Califica a canción actual 4 estrelas" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Califica a canción actual 5 estrelas" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Avaliación" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Cancelar mesmo?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Excedeuse o límite de redireccións, comprobe a configuración do servidor." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Actualizar" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Actualizar o catálogo" @@ -3848,19 +3891,15 @@ msgstr "Actualizar o catálogo" msgid "Refresh channels" msgstr "Actualizar as canles" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Actualizar a lista de amigos" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Actualizar a lista de emisoras" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Actualizar os fluxos" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3872,8 +3911,8 @@ msgstr "Lembrar o movemento do control de Wii" msgid "Remember from last time" msgstr "Lembrar por derradeira vez" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Remover" @@ -3881,7 +3920,7 @@ msgstr "Remover" msgid "Remove action" msgstr "Eliminar acción" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Eliminar as entradas duplicadas da lista" @@ -3889,73 +3928,77 @@ msgstr "Eliminar as entradas duplicadas da lista" msgid "Remove folder" msgstr "Eliminar cartafol" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Quitar da música persoal" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Retirar dos favoritos" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Eliminar da lista de reprodución" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Eliminar lista de reproducción" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Eliminar listas de reprodución" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Retirando cancións da música persoal…" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Retirando cancións de entre as favoritas…" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Renomear a lista «%1»" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Renomear a lista de Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Renomear lista de reprodución" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Renomear lista de reprodución" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Volver numerar as pistas na seguinte orde…" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repetir" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repetir álbum" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repetir lista de reprodución" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repetir a pista" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Substituír a actual lista de reprodución" @@ -3964,15 +4007,15 @@ msgstr "Substituír a actual lista de reprodución" msgid "Replace the playlist" msgstr "Substituír lista de reprodución" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Substituír espacios con barras-baixas" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Repetir mellora" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Modo Replay Gain" @@ -3980,24 +4023,24 @@ msgstr "Modo Replay Gain" msgid "Repopulate" msgstr "preencher novamente" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Requerir código de autenticación" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "reestablelecer" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Restabelecer conta de reproducións" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Reiniciar a pista, ou cambiar a anterior se non transcorreron 8 segundos dende o inicio." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Limitado a caracteres ASCII" @@ -4005,15 +4048,15 @@ msgstr "Limitado a caracteres ASCII" msgid "Resume playback on start" msgstr "Retomar a reprodución ó inicio" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Descargando cancións da música persoal de Grooveshark…" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Descargando as cancións favoritas de Grooveshark…" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Descargando as listas de Grooveshark…" @@ -4033,11 +4076,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4049,25 +4092,25 @@ msgstr "Executar" msgid "SOCKS proxy" msgstr "Proxy SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Erro do protocolo de enlace SSL, comprobe a configuración do servidor. A opción de SSLv3 podería solucionar algúns erros temporalmente." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Retirar o dispositivo de maneira segura." -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Retirar o dispositivo de maneira segura tras a copia." -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Frecuencia de mostraxe" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Frecuencia de mostraxe" @@ -4075,27 +4118,33 @@ msgstr "Frecuencia de mostraxe" msgid "Save .mood files in your music library" msgstr "Gardar os ficheiros .mood na súa biblioteca de música." -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Gardar a portada do álbum" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Almacenar a portada…" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Gardar imaxe" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Gardar lista de reprodución" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Gardar lista de reprodución..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Salvar os axustes" @@ -4111,11 +4160,11 @@ msgstr "Gardar as estadísticas nas etiquetas de ficheiro cando sexa posible" msgid "Save this stream in the Internet tab" msgstr "Gardar esta emisión na lapela Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Gardando as estadísticas nos ficheiros" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Gardando cortes" @@ -4127,7 +4176,7 @@ msgstr "Perfil de taxa de mostra escalábel (SSR)" msgid "Scale size" msgstr "Tamaño de escala" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Puntuación" @@ -4135,34 +4184,38 @@ msgstr "Puntuación" msgid "Scrobble tracks that I listen to" msgstr "Enviar as miñas escoitas" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Buscar" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Buscar nas emisoras Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Buscar en Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Buscar en Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Buscar en Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Buscar portadas de álbums…" @@ -4182,21 +4235,21 @@ msgstr "Buscar en iTunes" msgid "Search mode" msgstr "Modo búsqueda" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opcións de búsqueda" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Resultados da busca" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Termos de búsqueda" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Buscando en Grooveshark…" @@ -4204,27 +4257,27 @@ msgstr "Buscando en Grooveshark…" msgid "Second level" msgstr "Segundo nível" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Atrasar" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Avanzar" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Avanzar ou atrasar unha cantidade de tempo a pista actual." -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Situar o punto de reprodución da pista actual nunha posición determinada." -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Seleccionalo todo" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Non seleccionar nengún" @@ -4232,7 +4285,7 @@ msgstr "Non seleccionar nengún" msgid "Select background color:" msgstr "Escoller a cor de fondo:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Escoller a imaxe de fondo" @@ -4248,7 +4301,7 @@ msgstr "Escoller a cor principal:" msgid "Select visualizations" msgstr "Seleccionar as visualizacións" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Seleccionar as visualuzacións..." @@ -4256,7 +4309,7 @@ msgstr "Seleccionar as visualuzacións..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Número de serie" @@ -4268,51 +4321,51 @@ msgstr "URL do servidor" msgid "Server details" msgstr "Detalles do servidor" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Servizo Inválido" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Colocar %1 para \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Axusta o volume a por cento" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Axusta o volume para todos os cortes seleccionados" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Configuración" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Atallo" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Atallo para %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Atallo para %1 xa existe" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Mostrar" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Mostrar OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Mostrar unha animación escintilante no actual corte" @@ -4340,15 +4393,15 @@ msgstr "Mostrar unha xanela emerxente da bandexa do sistema " msgid "Show a pretty OSD" msgstr "Amosar unha pantalla xeitosa" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Mostrar" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Amosar todas as cancións" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Mostrar todas as cancións" @@ -4360,32 +4413,36 @@ msgstr "Amosar as portadas da biblioteca" msgid "Show dividers" msgstr "Amosar as divisións" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Mostrar tamaño completo " -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Mostrar no buscador de arquivos" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Amosar en varios intérpretes" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Amosar a barra do ánimo." -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Mostrar somente os duplicados" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Só amosar o que non estea etiquetado." @@ -4394,8 +4451,8 @@ msgid "Show search suggestions" msgstr "Fornecer suxestións para a busca." #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Amosar as botóns «Gústame» e «Saltar»." +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4466,27 @@ msgstr "Amosar unha icona na área de notificación." msgid "Show which sources are enabled and disabled" msgstr "Indicar que orixes están activas e cales están inactivas." -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Amosar/agochar" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Desordenar" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Desordenar os álbums" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Desordenalo todo" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Desordenar a lista" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Desordenar as pistas do álbum actual" @@ -4445,7 +4502,7 @@ msgstr "Saír" msgid "Signing in..." msgstr "Accedendo…" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Intérpretes semellantes" @@ -4457,43 +4514,51 @@ msgstr "Tamaño" msgid "Size:" msgstr "Tamaño:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Saltar para trás na lista de músicas" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Saltar a conta" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Saltar cara adiante na lista de reprodución" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Portada pequena do álbum" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Barra lateral pequena" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Lista de reprodución intelixente" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Listas de reprodución intelixentes" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4501,11 +4566,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Información da canción" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Información" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Espectrograma" @@ -4525,15 +4590,23 @@ msgstr "Ordenar pola popularidade do xénero" msgid "Sort by station name" msgstr "Ordenar polo nome da emisora" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Ordenar as cancións por:" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Orde" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Orixe" @@ -4549,7 +4622,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Produciuse un erro ao intentar acceder a Spotify." @@ -4557,7 +4630,7 @@ msgstr "Produciuse un erro ao intentar acceder a Spotify." msgid "Spotify plugin" msgstr "Complemento de Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "O complemento de Spotify non está instalado." @@ -4565,77 +4638,77 @@ msgstr "O complemento de Spotify non está instalado." msgid "Standard" msgstr "Estándar" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Vixiado" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Reproducir a playlist actualmente reproducindo" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Iniciar a conversión" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Comece a escribir algo na caixa de busca da parte superior para ir enchendo esta lista de resultados." -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Iniciando %1…" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Iniciando…" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Emisoras" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Deter" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Deter tras" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Deter a reprodución despois da pista actual" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Deter" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Deter despois da pista actual" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Detido" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Fluxo" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4718,7 @@ msgstr "Necesitará unha licenza válida para continuar usando o servidor de Sub msgid "Streaming membership" msgstr "Relación co fluxo:" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Listas que segue" @@ -4653,7 +4726,7 @@ msgstr "Listas que segue" msgid "Subscribers" msgstr "Subscritores" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4661,12 +4734,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Accedeuse correctamente." -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 almacenouse correctamente." -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Etiquetas suxeridas" @@ -4675,13 +4748,13 @@ msgstr "Etiquetas suxeridas" msgid "Summary" msgstr "Resumo" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Moi alta (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Moi alta (2048x2048)" @@ -4693,43 +4766,35 @@ msgstr "Formatos dispoñíbeis" msgid "Synchronize statistics to files now" msgstr "Sincronizar as estadísticas nos ficheiros agora" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Sincronizando coa caixa de entrada de Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Sincronizando coa lista de reprodución de Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Sincronizando cos cortes mais exitosos en Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Cores do sistema" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Abas na cima" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Etiqueta" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Buscador de etiquetas" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Radio de etiqueta" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Taxa de bits de destino" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tecno" @@ -4737,11 +4802,11 @@ msgstr "Tecno" msgid "Text options" msgstr "Opcións do texto" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Agradecimentos a" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "O \"%1\" comando non pode ser iniciado" @@ -4750,17 +4815,12 @@ msgstr "O \"%1\" comando non pode ser iniciado" msgid "The album cover of the currently playing song" msgstr "Portada do álbum da canción actual" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "O directorio %1 non é valido" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "A lista de reprodución «%1» está baleira ou non pode cargarse." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "O valor segundo debería ser maior que o primeiro" @@ -4768,40 +4828,40 @@ msgstr "O valor segundo debería ser maior que o primeiro" msgid "The site you requested does not exist!" msgstr "O sitio que procuras non existe" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "O sitio que procuras non é unha imaxe!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Acabou o período de proba do servidor de Subsonic. Faga unha doazón para conseguir unha chave de acceso. Visite subsonic.org para máis información." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "A súa nova versión de Clementine require volver analizar a súa biblioteca debido ás seguintes novas funcionalidades:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Hai outras cancións neste álbum" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Houbo un problema de comunicación con gpodder.net." -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Houbo un problema coa descarga de datos de Magnatune." -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Houbo un problema coa análise dos datos enviados por iTunes Store." -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4873,13 @@ msgid "" "deleted:" msgstr "Houbo problemas eliminando algunhas cancións. Os seguintes arquivos non puderon ser eliminados:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Estes arquivos serán eliminados do dispositivo, estás seguro de querer continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4899,13 @@ msgstr "Esta configuración emprégase para toda conversión de música." msgid "Third level" msgstr "Terceiro nivel" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "A acción xerará unha base de datos que podería chegar aos 150 MiB.\nQuere continuar?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Esta portada non está dispoñíbel no formato solicitado." @@ -4859,11 +4919,11 @@ msgstr "O dispositivo debe conectarse e abrirse para que Clementine poida saber msgid "This device supports the following file formats:" msgstr "O ficheiro é compatíbel cos seguintes formatos de ficheiro:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "O dispositivo non vai funcionar correctamente." -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Trátase dun dispositivo MTP. A súa copia de Clementine construíuse sen compatibilidade con este tipo de dispositivos." @@ -4872,7 +4932,7 @@ msgstr "Trátase dun dispositivo MTP. A súa copia de Clementine construíuse se msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Trátase dun iPod. A súa copia de Clementine construíuse sen compatibilidade con este tipo de dispositivos." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4942,33 @@ msgstr "É a primeira vez que conecta o dispositivo. Clementine analizará o seu msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Esta opción pode ser cambiada nas preferencias de \"Comportamento\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "O fluxo só está dispoñíbel para subscritores de pago." -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Clementine non é compatíbel con este tipo de dispositivo: %1." -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Título" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Para iniciar a radio de Grooveshark, antes debería escoitar máis cancións de Grooveshark." -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Hoxe" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Alternar o OSD xeitoso" @@ -4916,27 +4976,27 @@ msgstr "Alternar o OSD xeitoso" msgid "Toggle fullscreen" msgstr "Pantalla completa" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Alternar o estado da cola" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Alternar o envío de escoitas" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Alternar a visibilidade da pantalla xeitosa." -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Mañá" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Demasiadas redireccións" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Mellores pistas" @@ -4944,21 +5004,25 @@ msgstr "Mellores pistas" msgid "Total albums:" msgstr "Álbums totais:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Bytes enviados" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Solicitudes de rede" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Conversión de música" @@ -4970,7 +5034,7 @@ msgstr "Rexistro de conversión" msgid "Transcoding" msgstr "Convertendo…" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Convertendo %1 ficheiro empregando %2 fíos." @@ -4979,11 +5043,11 @@ msgstr "Convertendo %1 ficheiro empregando %2 fíos." msgid "Transcoding options" msgstr "Opcións de conversión" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4991,72 +5055,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Apagar" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Contrasinal de Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Nome de usuario de Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Banda ultralarga (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Non é posíbel descargar %1 (%2)." -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Descoñecido" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Tipo de contido descoñecido" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Erro descoñecido" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Anular a escolla da portada" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Anular a subscrición" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Vindeiros concertos" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Actualizar a lista de Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Actualizar todos os podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Actualizar os cartafoles da biblioteca con cambios" @@ -5064,7 +5128,7 @@ msgstr "Actualizar os cartafoles da biblioteca con cambios" msgid "Update the library when Clementine starts" msgstr "Actualizar a biblioteca ao iniciar Clementine." -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Actualizar o podcast" @@ -5072,21 +5136,21 @@ msgstr "Actualizar o podcast" msgid "Updating" msgstr "Actualizando…" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Actualizando %1…" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Actualizando (%1%)…" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "A actualizar a biblioteca" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Utilizazón" @@ -5094,11 +5158,11 @@ msgstr "Utilizazón" msgid "Use Album Artist tag when available" msgstr "Empregar a etiqueta do autor do álbum cando estea dispoñíbel." -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Empregar os atallos de Gnome." -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Empregar os datos de reprodución da ganancia cando estean dispoñíbeis." @@ -5118,7 +5182,7 @@ msgstr "Empregar unha combinación de cores personalizada." msgid "Use a custom message for notifications" msgstr "Empregar unha mensaxe personalizada para as notificación." -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Utilice un telecontrol de rede" @@ -5158,20 +5222,20 @@ msgstr "Empregar a configuración do proxy do sistema." msgid "Use volume normalisation" msgstr "Empregar a normalización do volume." -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Empregado" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "O usuario «%1» non ten conta de Grooveshark Anywhere («Grooveshark en calquera parte»)." -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interface de usuario" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5257,12 @@ msgstr "MP3 VBR" msgid "Variable bit rate" msgstr "Taxa de bits variábel" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Varios intérpretes" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versón %1" @@ -5211,7 +5275,7 @@ msgstr "Vista" msgid "Visualization mode" msgstr "Modo de visualización" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualizacións" @@ -5219,11 +5283,15 @@ msgstr "Visualizacións" msgid "Visualizations Settings" msgstr "Configuración das visualizacións" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Detección da voz" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5241,11 +5309,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Advírtame ao pechar unha pestana de lista de reprodución" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5321,7 @@ msgstr "Wav" msgid "Website" msgstr "Sitio web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Semanas" @@ -5279,32 +5347,32 @@ msgstr "Por que non intenta con…" msgid "Wide band (WB)" msgstr "Banda larga (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Mando %1 da Wii: activado." -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Mando %1 da Wii: conectado." -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Mando %1 da Wii: batería nas últimas (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Mando %1 da Wii: desactivado." -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Mando %1 da Wii: desconectado." -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Mando %1 da Wii: batería baixa (%2%)." @@ -5325,7 +5393,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Son de Windows Media" @@ -5333,25 +5401,25 @@ msgstr "Son de Windows Media" msgid "Without cover:" msgstr "Sin portada:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Quere mover tamén o resto das cancións do álbum a «Varios Intérpretes»?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Quere realizar unha análise completa agora?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Escribir as estadísticas de tódalas cancións nos ficheiros" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "O nome de usuario ou contrasinal non son correctos." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5431,11 @@ msgstr "Ano" msgid "Year - Album" msgstr "Ano - Álbum" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Anos" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Onte" @@ -5375,13 +5443,13 @@ msgstr "Onte" msgid "You are about to download the following albums" msgstr "Está a piques de descargar os seguintes álbums:" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Está a piques de eliminar %1 lista/s de reprodución dos seus favoritos, está seguro?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5459,12 @@ msgstr "Está a punto de eliminar permanentemente unha lista de reprodución que msgid "You are not signed in." msgstr "Desconectado do servizo." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Accedeu ao servizo como %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Conectado ao servizo." @@ -5404,13 +5472,13 @@ msgstr "Conectado ao servizo." msgid "You can change the way the songs in the library are organised." msgstr "Pode modificar a forma en que se organizan as cancións da biblioteca." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Pode escoitar de balde sen unha conta, pero os membros preferentes poden escoitar fluxos de maior calidade sen publicidade." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5488,6 @@ msgstr "Pode escoitar de balde as cancións de Magnatune sen ter unha conta. Se msgid "You can listen to background streams at the same time as other music." msgstr "Pode escoitar fluxos ambientais e outro tipo de música ao mesmo tempo." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Pode enviar escoitas de balde, pero só os subscritores de pago poden reproducir radios de Last.fm desde Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Pode empregar os mandos da Wii para controlar Clementine. Para máis información, consulte o wiki de Clementine.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Carece vostede dunha conta de Grooveshark Anywhere («Grooveshark en calquera parte»)." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Carece vostede dunha conta preferente de Spotify." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Carece vostede dunha subscrición activa." -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Desconectouse do servizo Spotify, volva introducir o contrasinal no diálogo de configuración." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Desconectouse do servizo Spotify, volva introducir o contrasinal." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Gústalle esta pista." -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5546,11 @@ msgstr "Ten que abrir a configuración do sistema e marcar a opción de «, 2013 # FIRST AUTHOR , 2010 # matanya , 2012 +# Oran Shuster , 2014 # ud1955 , 2013 # Yaron Shahrabani , 2012 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/clementine/language/he/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +20,7 @@ msgstr "" "Language: he\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +45,9 @@ msgstr "ימים" msgid " kbps" msgstr "קילו בתים לשניה" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " מילישניות" @@ -59,11 +60,16 @@ msgstr " נק׳" msgid " seconds" msgstr " שניות" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " שירים" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 אלבומים" @@ -73,12 +79,12 @@ msgstr "%1 אלבומים" msgid "%1 days" msgstr "%1 ימים" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "לפני %1 ימים" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 על %2" @@ -88,48 +94,48 @@ msgstr "%1 על %2" msgid "%1 playlists (%2)" msgstr "%1 רשימות השמעה (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "נבחרו %1 מתוך" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "שיר אחד (%1)" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 שירים" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "נמצאו %1 שירים" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "נמצאו %1 שירים (מוצגים %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 רצועות" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 הועברו" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: המודול Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 מאזינים אחרים" @@ -143,18 +149,21 @@ msgstr "%L1 השמעות" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n נכשלו" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n הושלמו" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n נותרו" @@ -166,24 +175,24 @@ msgstr "יישור &טקסט" msgid "&Center" msgstr "מ&רכז" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "ה&תאמה אישית" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "תוספות" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "ע&זרה" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "הסתרת %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "ה&סתרה..." @@ -191,23 +200,23 @@ msgstr "ה&סתרה..." msgid "&Left" msgstr "&שמאל" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "מוזיקה" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&ללא" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "רשימת השמעה" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "י&ציאה" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "מצב חזרה" @@ -215,23 +224,23 @@ msgstr "מצב חזרה" msgid "&Right" msgstr "&ימין" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "מצב ערבוב" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&מתיחת עמודות בהתאמה לחלון" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&כלים" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(באופן שונה על פני מספר שירים)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "וכל התורמים ל־Amarok" @@ -251,14 +260,10 @@ msgstr "" msgid "1 day" msgstr "יום אחד" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "רצועה אחת" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +273,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 רצועות אקראיות" @@ -276,12 +281,6 @@ msgstr "50 רצועות אקראיות" msgid "Upgrade to Premium now" msgstr "שדרוג לגרסת הפרמיום כעת" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +291,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +310,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

מילים שמורות מתחילות ב־%, לדוגמה: %artist %album %title

\n\n

סגירת טקסט בסוגריים מסולסלות משני צדיו תגרום להסתרתו במקרה שהטקסט מכיל מילה שמורה אשר לא מכילה כלום.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "נדרש חשבון Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "נדרש חשבון פרימיום של Spotify." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "לקוח יכול להתחבר רק אם הוזן הקוד הנכון." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "רשימת השמעה חכמה היא רשימה דינמית של שירים שמגיעים מספריית המוזיקה שלך. ישנם סוגים שונים של רשימות השמעה חכמות המציעות דרכים שונות לבחירת שירים." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "שיר יכלל ברשימת ההשמעה אם הוא עומד בתנאים אלו." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -351,36 +361,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "הללו את ה־Hypnotoad!" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "בטל" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "בערך %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "על אודות Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "על אודות Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "פרטי החשבון" @@ -392,11 +401,15 @@ msgstr "פרטי חשבון (פרימיום)" msgid "Action" msgstr "פעולה" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "הפעלה/כיבוי של Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "הוספת פודקאסט" @@ -412,39 +425,39 @@ msgstr "הוספת שורה חדשה אם נתמכת בסוג ההתרעה" msgid "Add action" msgstr "הוספת פעולה" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "הוספת תזרים אחר..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "הוספת תיקייה..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "הוספת קובץ" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "הוספת קובץ..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "הוספת קובצי מוזיקה להמרה" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "הוספת תיקייה" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "הוספת תיקייה..." @@ -456,11 +469,11 @@ msgstr "הוספת תיקייה חדשה..." msgid "Add podcast" msgstr "הוספת פודקאסט" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "הוספת פודקאסט..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "הוספת מונח לחיפוש" @@ -524,6 +537,10 @@ msgstr "הוספת מספר דילוגים לשיר" msgid "Add song title tag" msgstr "הוספת תג כותרת לשיר" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "הוספת תג פסקול לשיר" @@ -532,22 +549,34 @@ msgstr "הוספת תג פסקול לשיר" msgid "Add song year tag" msgstr "הוספת תג שנה לשיר" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "הוספת תזרים" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "הוספה לרשימת המועדפים של Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "הוספה לרשימת ההשמה של Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "הוספה לרשימת השמעה אחרת" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "הוספה לרשימת ההשמעה" @@ -556,6 +585,10 @@ msgstr "הוספה לרשימת ההשמעה" msgid "Add to the queue" msgstr "הוספה לתור" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "הוספת פעולת wiimotedev" @@ -585,15 +618,15 @@ msgstr "התווסף היום" msgid "Added within three months" msgstr "התווסף בשלושה החודשים האחרונים" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "הוספת שירים למוסיקה שלי" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "הוספת שיר למועדפים" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "קיבוץ מתקדם..." @@ -601,12 +634,12 @@ msgstr "קיבוץ מתקדם..." msgid "After " msgstr "לאחר " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "אחרי העתקה..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +647,11 @@ msgstr "אחרי העתקה..." msgid "Album" msgstr "אלבום" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "אלבום (עצמת שמע אידאלית לכל הרצועות)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +661,36 @@ msgstr "אמן אלבום" msgid "Album cover" msgstr "עטיפת אלבום" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "מידע על האלבום ב־jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "אלבומים עם עטיפה" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "אלבומים ללא עטיפה" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "כל הקבצים (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "הללו את ה־Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "כל האלבומים" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "כל האמנים" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "כל הקבצים (*)" @@ -665,19 +699,19 @@ msgstr "כל הקבצים (*)" msgid "All playlists (%1)" msgstr "כל רשימות ההשמעה (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "כל המתרגמים" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "כל הרצועות" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -702,30 +736,30 @@ msgstr "תמיד יש להציג את החלון המרכזי" msgid "Always start playing" msgstr "תמיד להתחיל לנגן" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "תוסף נדרש על מנת להשתמש ב־Spotify. האם להוריד ולהתקין אותו כעת?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "אירעה שגיאה בטעינת מסד הנתונים של iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "אירעה שגיאה בכתיבת המידע הנוסף לתוך '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "אירעה שגיאה לא מוגדרת" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "וגם:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "כָּעוּס" @@ -734,13 +768,13 @@ msgstr "כָּעוּס" msgid "Appearance" msgstr "מראה" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "הוסף קבצים/כתובות לסוף רשימת ההשמעה" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "הוספה לרשימת ההשמעה הנוכחית" @@ -748,52 +782,47 @@ msgstr "הוספה לרשימת ההשמעה הנוכחית" msgid "Append to the playlist" msgstr "הוספת לרשימת ההשמעה" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "הפעלת כיווץ כדי למנוע חיתוך" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "האם למחוק את האפשרות הקבועה „%1“?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "האם למחוק רשימת השמעה זו?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "האם לאפס את סטטיסטיקות השיר?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "אמן" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "מידע על האמן" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "רדיו אמן" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "תגיות אמן" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "ראשי תיבות של האמן" @@ -801,9 +830,13 @@ msgstr "ראשי תיבות של האמן" msgid "Audio format" msgstr "להמיר לתבנית" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "האימות נכשל" @@ -811,7 +844,7 @@ msgstr "האימות נכשל" msgid "Author" msgstr "יוצר" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "יוצרים" @@ -827,7 +860,7 @@ msgstr "עידכונים אוטומטיים" msgid "Automatically open single categories in the library tree" msgstr "פתיחה אוטומטית של קטגוריות בודדות בעץ הספרייה" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "פנוי" @@ -835,15 +868,15 @@ msgstr "פנוי" msgid "Average bitrate" msgstr "קצב סיביות ממוצע" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "גודל תמונה ממוצע" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC פודקאסט" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "מספר פעימות לדקה" @@ -864,7 +897,7 @@ msgstr "תמונת רקע" msgid "Background opacity" msgstr "שקיפות הרקע" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "מסד הנתונים מגובה" @@ -872,11 +905,7 @@ msgstr "מסד הנתונים מגובה" msgid "Balance" msgstr "איזון" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "חסימה" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "אנלייזר עמודות" @@ -896,18 +925,17 @@ msgstr "התנהגות" msgid "Best" msgstr "מיטבי" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "ביוגרפיה מתוך %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "קצב הסיביות" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +943,12 @@ msgstr "קצב הסיביות" msgid "Bitrate" msgstr "קצב סיביות" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "אנלייזר מקטעים" @@ -931,7 +964,7 @@ msgstr "כמות טשטוש" msgid "Body" msgstr "גוף" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "אנלייזר בום" @@ -945,11 +978,11 @@ msgstr "קופסא" msgid "Browse..." msgstr "עיון..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "משך הבאפר (buffer)" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "באגירה" @@ -961,43 +994,66 @@ msgstr "מקורות אלו מושבתים:" msgid "Buttons" msgstr "לחצנים" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "תמיכה ב־CUE sheet" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "ביטול" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "שינוי עטיפת האלבום" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "שינוי גודל גופן..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "שינוי מצב חזרה" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "שינוי קיצור הדרך..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "שינוי מצב ערבוב" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "שינוי השפה" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1063,19 @@ msgstr "שינוי העדפת השמעת מונו יהיה יעיל לניגון msgid "Check for new episodes" msgstr "בדיקת פרקים חדשים" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "בדיקת עדכונים..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "נא לבחור בשם עבור רשימת ההשמעה החכמה" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "בחירה אוטומטית" @@ -1031,11 +1091,11 @@ msgstr "בחירת גופן..." msgid "Choose from the list" msgstr "בחירה מהרשימה" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "נא לבחור כיצד רשימת ההשמעה תסודר וכמה שירים יהיו בה" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "בחירת תיקיית יעד להורדת פודקאסט" @@ -1044,7 +1104,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "ניתן לבחור באתרים שבהם Clementine יחפש אחר מילים לשירים." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "קלסית" @@ -1052,17 +1112,17 @@ msgstr "קלסית" msgid "Cleaning up" msgstr "מנקה" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "ניקוי" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "ניקוי רשימת ההשמעה" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1075,8 +1135,8 @@ msgstr "שגיאה ב־Clementine" msgid "Clementine Orange" msgstr "כתום קלמנטינה" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "אפקטים חזותיים של Clementine" @@ -1098,9 +1158,9 @@ msgstr "Clementine יאפשר נגינת מוסיקה שהעלית ל " msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine מאפשר נגינת מוסיקה שהעלית ל Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine יאפשר נגינת מוסיקה שהעלית ל " +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1173,13 @@ msgid "" "an account." msgstr "יש ל־Clementine אפשרות לסנכרן את ההרשמות שלך עם מחשבים אחרים ויישומי פודקאסט אחרים. יצירת חשבון." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "אין באפשרות Clementine לטעון אפקטים חזותיים של projectM. נא לוודא שהתקנת את Clementine כמו שצריך." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine נכשל בהשגת ההרשמות שלך עקב בעיה עם חיבור הרשת. השירים שיושמעו יישמרו במטמון ולאחר מכן יישלחו אל Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "מציג התמונות של Clementine" @@ -1138,11 +1191,11 @@ msgstr "Clementine נכשל במציאת תוצאות לקובץ זה" msgid "Clementine will find music in:" msgstr "Clementine ימצא מוסיקה ב:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "יש ללחוץ כאן כדי להוסיף מוזיקה" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1205,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "יש ללחוץ כאן על מנת לעבור בין הצגת הזמן הנותר לזמן הכולל" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1223,19 @@ msgstr "סגירה" msgid "Close playlist" msgstr "סגירת רשימת השמעה" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "סגירת האפקטים החזותיים" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "סגירת חלון זה תבטל את ההורדה." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "סגירת חלון זה תבטל את החיפוש אחר עטיפות אלבום." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "קלאב" @@ -1187,73 +1243,78 @@ msgstr "קלאב" msgid "Colors" msgstr "צבעים" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "רשימה מופרדת בפסיקים של class:level,level יכול להיות 0-3 " -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "הערה" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "השלמת תג אוטומטית" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "השלמת תגים אוטומטית..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "מלחין" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "הגדרת " -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "הגדרת Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "הגדרת Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "הגדרת Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "הגדרת קיצורי מקשים" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "הגדרת Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "הגדרת תת קולי" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "מגדיר חיפוש " -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "הגדרת הספרייה..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "הגדרת פודקאסטים..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "הגדרה..." @@ -1261,11 +1322,11 @@ msgstr "הגדרה..." msgid "Connect Wii Remotes using active/deactive action" msgstr "חיבור Wii Remotes בעזרת פעולת הפעלה/כיבוי" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "חיבור התקן" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "בהתחברות אל Spotify" @@ -1275,12 +1336,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "קונסול" @@ -1296,17 +1361,21 @@ msgstr "המרת כל המוזיקה" msgid "Convert any music that the device can't play" msgstr "המרת כל המוזיקה שהתקן זה לא מסוגל לנגן" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "העתקה אל הלוח" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "העתקה להתקן.." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "העתקה לספרייה..." @@ -1314,156 +1383,152 @@ msgstr "העתקה לספרייה..." msgid "Copyright" msgstr "זכויות יוצרים" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "לא ניתן להתחבר ל Subsonic, נא לבדוק כתובת שרת. לדוגמא: " -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "לא ניתן ליצור את רכיב ה־GStreamer „%1“ - יש לוודא שכל תוספי ה־GStreamer מותקנים כראוי" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "לא ניתן למצוא מרבב עבור %1, נא לוודא שתוספי ה־GStreamer הנכונים מותקנים כראוי" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "לא ניתן למצוא מקודד עבור %1, נא לוודא שתוספי ה־GStreamer הנכונים מותקנים כראוי" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "לא ניתן לטעון את תחנת הרדיו מ־last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "לא ניתן לפתוח את קובץ הפלט %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "מנהל העטיפות" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "עטיפת אלבום מתוך תמונה שבקובץ" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "עטיפת האלבום נטענה אוטומטית מתוך %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "עטיפת אלבום הוסרה ידנית" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "לא נבחרה עטיפת אלבום" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "עטיפת אלבום נבחרה מתוך %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "עטיפות מ־%1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "יצירת רשימת השמעה חדשה מ־Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "מעבר באמצעות עמעום בין רצועות, בהחלפה אוטומטית של רצועות" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "מעבר באמצעות עמעום בין רצועות, בהחלפה ידנית של רצועות" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1536,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "התאמה אישית" @@ -1483,54 +1548,50 @@ msgstr "תמונה מותאמת אישית:" msgid "Custom message settings" msgstr "הגדרות מותאמות אישית להודעות" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "רדיו מותאם אישית" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "התאמה אישית..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "נתיב DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "דאנס" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "זוהתה השחתה במסד הנתונים. נא לקרוא את ההוראות מהכתובת https://code.google.com/p/clementine-player/wiki/DatabaseCorruption לקבלת כיצד לשחזר את מסד הנתונים" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "תאריך יצירה" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "תאריך שינוי" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "ימים" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "בררת מח&דל" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "הנמכת עוצמת השמע ב־4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "הנמך את עוצמת השמע ב־ אחוזים" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "הנמכת עצמת השמע" @@ -1538,6 +1599,11 @@ msgstr "הנמכת עצמת השמע" msgid "Default background image" msgstr "תמונת בררת המחדל לרקע" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "בררות מחדל" @@ -1546,30 +1612,30 @@ msgstr "בררות מחדל" msgid "Delay between visualizations" msgstr "הפסקה בין אפקטים חזותיים" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "מחיקה" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "מחיקת רשימת השמעה של Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "מחיקת מידע שהתקבל" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "מחיקת קבצים" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "מחיקה מתוך התקן..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "מחיקה מתוך דיסק..." @@ -1577,31 +1643,31 @@ msgstr "מחיקה מתוך דיסק..." msgid "Delete played episodes" msgstr "מחיקת פרקים שנוגנו" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "מחיקת אפשרות מוגדרת מראש" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "מחיקת רשימת השמעה חכמה" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "מחיקת הקבצים המקוריים" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "הקבצים נמחקים" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "הסרת הרצועות הנבחרות מהתור" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "הסרת הרצועה מהתור" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "יעד" @@ -1610,7 +1676,7 @@ msgstr "יעד" msgid "Details..." msgstr "פרטים..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "התקן" @@ -1622,15 +1688,15 @@ msgstr "מאפייני ההתקן" msgid "Device name" msgstr "שם ההתקן" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "מאפייני ההתקן..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "התקנים" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1667,12 +1733,17 @@ msgstr "משך הנטרול" msgid "Disable moodbar generation" msgstr "מניעת יצירת סרגל האווירה" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "מנוטרל" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "דיסק" @@ -1682,15 +1753,15 @@ msgid "Discontinuous transmission" msgstr "תמסורת רציפה" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "הגדרות תצוגה" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "הצגת חיווי מסך" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "ביצוע סריקה חוזרת לכל הספרייה" @@ -1702,27 +1773,27 @@ msgstr "אין להמיר שום מוזיקה" msgid "Do not overwrite" msgstr "אל תדרוס" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "ללא חזרה" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "לא להציג באמנים שונים" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "ללא קפיצות" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "לא להפסיק!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "לתרום" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "לחיצה כפולה לפתיחה" @@ -1730,12 +1801,13 @@ msgstr "לחיצה כפולה לפתיחה" msgid "Double clicking a song will..." msgstr "לחיצה כפולה על שיר לביצוע..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "ירדו %n פרקים" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "הורדת תיקייה" @@ -1751,7 +1823,7 @@ msgstr "חברות המאפשרת הורדה" msgid "Download new episodes automatically" msgstr "הורדת פרקים חדשים אוטומטית" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "ההורדה נכנסה לתור" @@ -1759,15 +1831,15 @@ msgstr "ההורדה נכנסה לתור" msgid "Download the Android app" msgstr "הורדת אפליקציית אנדרויד" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "הורדת האלבום הזה" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "הורדת האלבום הזה..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "הורדת הפרק הזה" @@ -1775,7 +1847,7 @@ msgstr "הורדת הפרק הזה" msgid "Download..." msgstr "בהורדה..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "בהורדה (%1%)..." @@ -1784,23 +1856,23 @@ msgstr "בהורדה (%1%)..." msgid "Downloading Icecast directory" msgstr "תיקיית Icecast בהורדה" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "הקטלוג של Jamendo מתקבל" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "הקטלוג של Magnatune מתקבל" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "התוסף של Spotify מתקבל" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "נתוני העל מתקבלים" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "נא לגרור למיקום הרצוי" @@ -1820,20 +1892,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "מצב דינמי פעיל" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "מיקס דינמי אקראי" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "עריכת רשימת השמעה חכמה..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "עריכת תגית..." @@ -1845,16 +1917,16 @@ msgstr "עריכת תגיות" msgid "Edit track information" msgstr "עריכת פרטי הרצועה" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "עריכת פרטי הרצועה..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "עריכת פרטי רצועות..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "עריכה..." @@ -1862,6 +1934,10 @@ msgstr "עריכה..." msgid "Enable Wii Remote support" msgstr "הפעלת תמיכה ב־Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "הפעלת אקולייזר" @@ -1876,7 +1952,7 @@ msgid "" "displayed in this order." msgstr "אפשור המקורות להלן כדי לכלול אותם בתוצאות חיפוש. תוצאות יוצגו בסדר זה." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "הפעלה/נטרול Last.fm scrobbling" @@ -1904,15 +1980,10 @@ msgstr "הכנסת כתובת להורדת עטיפה מהאינטרנט:" msgid "Enter a filename for exported covers (no extension):" msgstr "הכנס שם קובץ לייצוא עטיפות (ללא סיומת):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "שם חדש לרשימת השמעה זו" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "יש להזין אמן או תגית כדי להתחיל להאזין לרדיו של Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1997,7 @@ msgstr "יש להזין ביטוי לחיפוש על מנת למצוא פודק msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "יש להזין ביטוי לחיפוש על מנת למצוא פודקאסטים ב־gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "ניתן להזין כאן מונחים לחיפוש" @@ -1935,11 +2006,11 @@ msgstr "ניתן להזין כאן מונחים לחיפוש" msgid "Enter the URL of an internet radio stream:" msgstr "כתובת תחנת הרדיו האינטרנטית:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "הזנת שם התיקייה" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "הכנס כתובת IP באפליקציה על מנת להתחבר ל-Clementine" @@ -1947,21 +2018,22 @@ msgstr "הכנס כתובת IP באפליקציה על מנת להתחבר ל-Cl msgid "Entire collection" msgstr "כל האוסף" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "אקולייזר" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "זהה לאפשרות --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "זהה לאפשרות--log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "שגיאה" @@ -1969,38 +2041,38 @@ msgstr "שגיאה" msgid "Error connecting MTP device" msgstr "שגיאה בחיבור להתקן מולטימדיה" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "שגיאה בהעתקת שירים" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "שגיאה במחיקת שירים" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "שגיאה בהורדת תוסף Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "שגיאה בטעינת %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "שגיאה בטעינת רשימת ההשמעה של di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "שגיאה בעיבוד %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "שגיאה בטעינת דיסק מוזיקה" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "לא נוגן אף פעם" @@ -2032,69 +2104,69 @@ msgstr "בכל 6 שעות" msgid "Every hour" msgstr "בכל שעה" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "מלבד בין שירים באותו אלבום או אותו CUE sheet" #: ../bin/src/ui_albumcoverexport.h:208 msgid "Existing covers" -msgstr "" +msgstr "עטיפות קיימות" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" msgstr "הרחבה" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "התפוגה היא ב־%1" #: ../bin/src/ui_albumcovermanager.h:226 msgid "Export Covers" -msgstr "" +msgstr "ייצא עטיפות" #: ../bin/src/ui_albumcoverexport.h:203 msgid "Export covers" -msgstr "" +msgstr "ייצא עטיפות" #: ../bin/src/ui_albumcoverexport.h:206 msgid "Export downloaded covers" -msgstr "" +msgstr "ייצא עטיפות שהורדו" #: ../bin/src/ui_albumcoverexport.h:207 msgid "Export embedded covers" -msgstr "" +msgstr "ייצא עטיפות שהוטמעו" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" -msgstr "" +msgstr "ייצא %1 עטיפות מתוך %2(%3 דולגו)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2176,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "עמעום המוזיקה בעצירת רצועה" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "עמעום מוזיקה" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "משך זמן עמעום המוזיקה" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "אחזור התיקייה נכשל" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "אחזור הפודקאסטים נכשל" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "בטעינת הפודקאסט נכשלה" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "ניתוח קובץ ה־XML להזנת ה־RSS נכשל" @@ -2148,11 +2220,11 @@ msgstr "ניתוח קובץ ה־XML להזנת ה־RSS נכשל" msgid "Fast" msgstr "מהר" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "מועדפים" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "רצועות מועדפות" @@ -2168,11 +2240,11 @@ msgstr "אחזור אוטומטי" msgid "Fetch completed" msgstr "אחזור המידע הושלם" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "טעינת ספרית Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "שגיאה באחזור המידע על העטיפה" @@ -2180,7 +2252,7 @@ msgstr "שגיאה באחזור המידע על העטיפה" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "סיומת הקובץ" @@ -2188,19 +2260,23 @@ msgstr "סיומת הקובץ" msgid "File formats" msgstr "סוג הקובץ" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "שם הקובץ" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "שם הקובץ (ללא נתיב)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "גודל הקובץ" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2286,7 @@ msgstr "סוג הקובץ" msgid "Filename" msgstr "שם הקובץ" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "קבצים" @@ -2218,15 +2294,19 @@ msgstr "קבצים" msgid "Files to transcode" msgstr "קובצי מוזיקה להמרה" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "חיפוש שירים בספרייה על פי קריטריונים מוגדרים." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "ניתוח טביעת האצבע של השיר" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "סיום" @@ -2234,7 +2314,7 @@ msgstr "סיום" msgid "First level" msgstr "רמה ראשונה" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2330,12 @@ msgstr "עקב בעיות רישוי, התמיכה ב־Spotify נמצאת בתו msgid "Force mono encoding" msgstr "אילוץ קידוד mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "התעלמות מההתקן" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2350,7 @@ msgstr "„התעלמות מההתקן“ יסיר את ההתקן מרשימה #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2378,23 @@ msgstr "קצב מסגרות" msgid "Frames per buffer" msgstr "מסגרות לאגירה" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "חברים" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "קפוא" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "בס מלא" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "בס מלא + טרבל" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "טרבל מלא" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "מנוע השמע של GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "כללי" @@ -2330,30 +2402,30 @@ msgstr "כללי" msgid "General settings" msgstr "הגדרות כלליות" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "סגנון" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "הצגת הכתובת על מנת לשתף את רשימת ההשמעה הזו מ־Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "הצגת הכתובת על מנת לשתף את השיר הזה מ־Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "רשימת השירים הפופולריים ב־Grooveshark מתקבלת" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "ערוצים מתקבלים" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "הזרמות מתקבלות" @@ -2365,11 +2437,11 @@ msgstr "שם עבור הפריט:" msgid "Go" msgstr "מעבר" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "מעבר ללשונית רשימת ההשמעה הבאה" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "מעבר ללשונית רשימת ההשמעה הקודמת" @@ -2377,7 +2449,7 @@ msgstr "מעבר ללשונית רשימת ההשמעה הקודמת" msgid "Google Drive" msgstr "גוגל דרייב" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2459,7 @@ msgstr "נמצאו %1 עטיפות מתוך %2 (%3 נכשלו)" msgid "Grey out non existent songs in my playlists" msgstr "ברשימת ההשמעה, סימון שירים שאינם קיימים באפור" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2467,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "שגיאה בהתחברות ל־Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "הכתובת לרשימת ההשמעה ב־Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "רדיו Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "הכתובת השיר ב־Grooveshark" @@ -2411,44 +2483,44 @@ msgstr "הכתובת השיר ב־Grooveshark" msgid "Group Library by..." msgstr "קיבוץ ספרייה על פי..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "קיבוץ על פי" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "קיבוץ על פי אלבום" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "קיבוץ על פי אמן" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "קיבוץ על פי אמן/אלבום" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "קיבוץ על פי אמן/שנת אלבום" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "קיבוץ על פי סגנון/אלבום" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "קיבוץ על פי סגנון/אמן/אלבום" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "קיבוץ" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "דף ה־HTML לא כלל שום הזנת RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2457,7 +2529,7 @@ msgstr "" msgid "HTTP proxy" msgstr "מתווך HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "שמח" @@ -2473,25 +2545,25 @@ msgstr "מידע על החומרה זמין רק כאשר ההתקן מחובר. msgid "High" msgstr "גבוה" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "גבוה (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "גבוה (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "שעות" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2503,15 +2575,15 @@ msgstr "אין לי חשבון Magnatune" msgid "Icon" msgstr "צלמית" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "צלמיות למעלה" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "מזהה שיר" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2593,24 @@ msgstr "אם בחירתך תהיה להמשיך, ההתקן יעבוד לאט ו msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "אם כתובת ההפודקאסט ידועה לך, נא להכניס אותה וללחוץ על מעבר." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "התעלמות מה־\"The\" בשם האמן" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "קובצי תמונה (‎*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "קובצי תמונה (‎*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "בעוד %1 ימים" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "בעוד %1 שבועות" @@ -2549,7 +2621,7 @@ msgid "" "time a song finishes." msgstr "במצב דינמי שירים חדשים יבחרו ויתווספו לרשימת ההשמעה בכל פעם ששיר יסתיים" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "תיבת נכנסת" @@ -2561,36 +2633,36 @@ msgstr "אומנות אלבום בתוך ההתרעה" msgid "Include all songs" msgstr "הכללת כל השירים" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "גרסת סותרת של פרוטוקול Subsonic REST . לקוח חייב שדרוג." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "גרסת סותרת של פרוטוקול Subsonic REST . שרת חייב שדרוג." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "הגברת עצמת השמע ב־4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "הגבר את עוצמת השמע ב־ אחוזים" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "הגברת עוצמת השמע" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "יצירת מפתחות " -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "מידע" @@ -2598,55 +2670,55 @@ msgstr "מידע" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "הוספה..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "הותקן" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "בדיקת שלמות" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "אינטרנט" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "ספקי אינטרנט" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "מפתח API לא תקין" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "תבנית לא תקינה" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "שיטה לא תקינה" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "פרמטרים לא תקינים" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "צויין משאב לא תקין" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "שירות לא תקין" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "מפתח הפעלה לא תקין" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "משתמש ו/או ססמה שגויים" @@ -2654,42 +2726,42 @@ msgstr "משתמש ו/או ססמה שגויים" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "הרצועות הכי מושמעות ב־Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "הרצועות המדורגות ביותר ב־Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "הרצועות החמות ביותר החודש ב-־amendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "הרצועות החמות ביותר השבוע ב־Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "מסד הנתונים של Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "קפיצה לרצועה המתנגנת כעת" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "השארת הלחצנים ל־%1 שניות..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "השארת הלחצנים ל-%1 שניות..." @@ -2698,23 +2770,24 @@ msgstr "השארת הלחצנים ל-%1 שניות..." msgid "Keep running in the background when the window is closed" msgstr "להמשיך ולהריץ ברקע כאשר החלון סגור" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "שמירה על הקבצים המקוריים" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "גורי חתולים" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "שפה" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "מחשב נייד/אוזניות" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "חלל גדול" @@ -2722,58 +2795,24 @@ msgstr "חלל גדול" msgid "Large album cover" msgstr "עטיפת אלבום גדולה" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "סרגל צד גדול" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "השמעה אחרונה" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm רדיו מותאם אישית: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "ספריית Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm רדיו מיקס - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "רדיו השכן מ־Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "תחנת רדיו מ־Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "אמנים דומים ב־Last.fm ל־%1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "רדיו תגית מ־Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm עסוק כרגע, מומלץ לנסות שוב מאוחר יותר" @@ -2781,11 +2820,11 @@ msgstr "Last.fm עסוק כרגע, מומלץ לנסות שוב מאוחר יו msgid "Last.fm password" msgstr "ססמת Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "מונה השמעות של Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "תגיות מ־Last.fm" @@ -2793,28 +2832,24 @@ msgstr "תגיות מ־Last.fm" msgid "Last.fm username" msgstr "שם המשתמש ב־Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "הוויקי של Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "הרצועות הכי פחות אהובות" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "יש להשאיר ריק בשביל בררת מחדל. דוגמאות: \"/dev/dsp\", \"front\", וכו׳." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "שמאל" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "אורך" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "ספרייה" @@ -2822,24 +2857,24 @@ msgstr "ספרייה" msgid "Library advanced grouping" msgstr "קיבוץ מתקדם של הספרייה" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "הודעה על סריקה מחודשת של הספרייה" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "חיפוש בספרייה" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "הגבלות" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "האזנה לשירים מ־Grooveshark בהתבסס על שירים שהושמעו בעבר" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "חי" @@ -2851,15 +2886,15 @@ msgstr "טעינה" msgid "Load cover from URL" msgstr "טעינת עטיפה מכתובת" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "טעינת עטיפה מכתובת..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "טעינת עטיפה מדיסק" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "טעינת עטיפה מהדיסק..." @@ -2867,84 +2902,89 @@ msgstr "טעינת עטיפה מהדיסק..." msgid "Load playlist" msgstr "טעינת רשימת השמעה" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "טעינת רשימת השמעה..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "רדיו מ־Last.fm בטעינה" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "התקן המולטימדיה נטען" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "מסד נתונים של ה־iPod נטען" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "רשימת השמעה חכמה נטענת" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "השירים נטענים" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "מדיה זורמת בטעינה" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "הרצועות נטענות" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "נטען מידע אודות השירים" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "בטעינה..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "טעינת קבצים/כתובות, תוך החלפת רשימת ההשמעה הנוכחית" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "כניסה" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "ההתחברות נכשלה" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "פרופיל תחזית ארוכת טווח(LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "אהוב" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "נמוך (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "‏נמוך (‎256x256‎)" @@ -2956,12 +2996,17 @@ msgstr "פרופיל מורכבות נמוכה (LC)" msgid "Lyrics" msgstr "מילות השיר" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "מילות השיר מתוך %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3018,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2989,7 +3034,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "הורדה מ־Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "ההורדה מ־Magnatune הסתיימה" @@ -2997,15 +3042,20 @@ msgstr "ההורדה מ־Magnatune הסתיימה" msgid "Main profile (MAIN)" msgstr "הפרופיל הראשי (ראשי)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "ביצוע!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "הפיכת רשימת ההשמעה לזמינה גם ללא חיבור רשת" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "תגובה שגויה" @@ -3018,15 +3068,15 @@ msgstr "הגדרה ידנית של שרת מתווך" msgid "Manually" msgstr "ידני" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "יצרן" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "סימון כהושמע" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "סימון כחדש" @@ -3038,17 +3088,21 @@ msgstr "הכללת כל נתוני החיפוש (AND)" msgid "Match one or more search terms (OR)" msgstr "הכללת נתון אחד או יותר מנתוני החיפוש (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "קצב סיביות מירבי" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "בינוני (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "בינוני (512x512)" @@ -3060,11 +3114,15 @@ msgstr "סוג חברות" msgid "Minimum bitrate" msgstr "קצב סיביות מזערי" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "חסרות אפשרויות קבועות של projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "דגם" @@ -3072,20 +3130,20 @@ msgstr "דגם" msgid "Monitor the library for changes" msgstr "מעקב אחר שינויים בספרייה" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "השמעת מונו" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "חודשים" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "מצב רוח" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "סגנון סרגל האווירה" @@ -3093,15 +3151,19 @@ msgstr "סגנון סרגל האווירה" msgid "Moodbars" msgstr "סרגלי אווירה" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "הכי מושמעים" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "נקודת עגינה" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "נקודות עגינה" @@ -3110,7 +3172,7 @@ msgstr "נקודות עגינה" msgid "Move down" msgstr "הזזה מטה" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "העברה לספרייה..." @@ -3119,7 +3181,7 @@ msgstr "העברה לספרייה..." msgid "Move up" msgstr "הזזה מעלה" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "מוזיקה" @@ -3127,56 +3189,32 @@ msgstr "מוזיקה" msgid "Music Library" msgstr "ספריית המוזיקה" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "השתקה" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "ספריית ה־Last.fm שלי" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Last.fm רדיו מיקס" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "השכנים שלי ב־Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "המלצות הרדיו שלי בL־ast.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "רדיו המיקס שלי" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "המוסיקה שלי" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "השכונה שלי" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "תחנת הרדיו שלי" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "ההמלצות שלי" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "שם" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "אפשרויות הקצאת שם" @@ -3184,23 +3222,19 @@ msgstr "אפשרויות הקצאת שם" msgid "Narrow band (NB)" msgstr "פס צר (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "שכנים" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "מתווך רשת" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "רשת מרוחקת" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "לעולם לא" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "לא נוגן אף פעם" @@ -3209,21 +3243,21 @@ msgstr "לא נוגן אף פעם" msgid "Never start playing" msgstr "אין להתחיל להשמיע אף פעם" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "תיקייה חדשה" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "רשימת השמעה חדשה" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "רשימת השמעה חכמה חדשה..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "שירים חדשים" @@ -3231,24 +3265,24 @@ msgstr "שירים חדשים" msgid "New tracks will be added automatically." msgstr "רצועות חדשות יצורפו באופן אוטומטי." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "הרצועות הכי חדשות" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "הבא" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "הרצועה הבאה" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "השבוע הבא" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "ללא אנלייזר" @@ -3256,15 +3290,15 @@ msgstr "ללא אנלייזר" msgid "No background image" msgstr "ללא תמונת רקע" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." -msgstr "" +msgstr "אין עטיפות לייצא." #: ../bin/src/ui_transcoderoptionsaac.h:146 msgid "No long blocks" msgstr "ללא מקטעים ארוכים" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "לא נמצא פריט תואם. יש לנקות את תיבת החיפוש על מנת לראות את כל רשימת ההשמעה שוב." @@ -3278,11 +3312,11 @@ msgstr "ללא מקטעים קצרים" msgid "None" msgstr "אין" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "אף אחד מהשירים הנבחרים לא היה ראוי להעתקה להתקן" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "נורמאלי" @@ -3290,43 +3324,47 @@ msgstr "נורמאלי" msgid "Normal block type" msgstr "סוג מקטע רגיל" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "לא זמין בזמן שימוש ברשימת השמעה דינמית" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "לא מחובר" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "אין מספיק תוכן" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "אין מספיק מעריצים" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "אין מספיק חברים" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "אין מספיק שכנים" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "לא מותקן" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "לא מחובר" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "לא מעוגן - יש ללחוץ לחיצה כפולה כדי לעגן" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "סוג התרעות" @@ -3339,36 +3377,41 @@ msgstr "התרעות" msgid "Now Playing" msgstr "מתנגן עכשיו" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "תצוגה מקדימה של חיווי המסך" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3419,11 @@ msgid "" "192.168.x.x" msgstr "קבלת חיבורים רק מלקוח בתוך טווחי ה-IP:⏎\n10.x.x.x⏎\n172.16.0.0 - 172.31.255.255⏎\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "הצגת הראשון בלבד" @@ -3388,23 +3431,23 @@ msgstr "הצגת הראשון בלבד" msgid "Opacity" msgstr "שקיפות" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "פתיחת %1 בדפדפן" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "פתיחת &דיסק שמע..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "פתיחת קובץ " -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "פתיחת קובץ " @@ -3412,30 +3455,35 @@ msgstr "פתיחת קובץ " msgid "Open device" msgstr "פתיחת התקן" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "פתיחת קובץ..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "פתיחה ב " -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "פתיחה ברשימת השמעה חדשה" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "פתיחה..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "הפעולה נכשלה" @@ -3455,31 +3503,31 @@ msgstr "אפשרויות" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "ארגון קבצים" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "ארגון קבצים..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "הקבצים מאורגנים" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "תגים מקוריים" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "אפשרויות נוספות" #: ../bin/src/ui_albumcoverexport.h:204 msgid "Output" -msgstr "" +msgstr "פלט" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "התקן פלט" @@ -3487,15 +3535,11 @@ msgstr "התקן פלט" msgid "Output options" msgstr "אפשרויות פלט" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "תוסף פלט" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "דריסת קבצים קיימים" @@ -3507,15 +3551,15 @@ msgstr "" msgid "Owner" msgstr "בעלים" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "הקטלוג של Jamendo מפוענח" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "מסיבה" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,56 +3568,44 @@ msgstr "מסיבה" msgid "Password" msgstr "ססמה" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "השהייה" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "השהיית הנגינה" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "מושהה" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "מבצע" #: ../bin/src/ui_albumcoverexport.h:215 msgid "Pixel" -msgstr "" +msgstr "פיקסל" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "סרגל צד פשוט" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "נגינה" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "נגינה אמן או תגית" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "ניגון רדיו אמן..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "מונה השמעות" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "ניגון רדיו מותאם אישית..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "ניגון אם מושהה, השהייה אם מנגן" @@ -3582,45 +3614,42 @@ msgstr "ניגון אם מושהה, השהייה אם מנגן" msgid "Play if there is nothing already playing" msgstr "השמעה אם אין שום שמושמע כרגע" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "ניגון רדיו תגית..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "נגן הרצועה ה־ מרשימת ההשמעה" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "ניגון/השהייה" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "השמעה" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "אפשרויות נגן" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "רשימת השמעה" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "רשימת ההשמעה הסתיימה" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "אפשרויות רשימת ההשמעה" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "סוג רשימת ההשמעה" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "רשימות השמעה" @@ -3632,23 +3661,23 @@ msgstr "נא לסגור את הדפדפן ולחזור ל Clementine" msgid "Plugin status:" msgstr "מצב התוסף:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "פודקאסטים" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "פופ" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "שירים פופולריים" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "שירים פופולריים החודש" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "שירים פופולריים היום" @@ -3657,22 +3686,23 @@ msgid "Popup duration" msgstr "משך זמן חלונית קופצת" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "פתחה" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "הגברה טרומית" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "מאפיינים" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "מאפיינים..." @@ -3708,7 +3738,7 @@ msgstr "יש ללחוץ על צירוף לחצנים שיוקצה עבור" msgid "Press a key" msgstr "יש ללחוץ על מקש כלשהו" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "יש ללחוץ על צירוף מקשים שיוקצה עבור %1..." @@ -3719,20 +3749,20 @@ msgstr "אפשרויות חיווי המסך" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "תצוגה מקדימה" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "הקודם" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "רצועה קודמת" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Print out version information" @@ -3740,21 +3770,25 @@ msgstr "Print out version information" msgid "Profile" msgstr "פרופיל" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "התקדמות" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "יש ללחוץ על הלחצן ב־Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "הוספת שירים ברצף אקראי" @@ -3762,85 +3796,95 @@ msgstr "הוספת שירים ברצף אקראי" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "איכות" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "התקן מתושאל..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "מנהל התור" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "הוספת הרצועות הנבחרות" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "הוספת הרצועה לתור" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "רדיו (עצמה זהה לכל הרצועות)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "רדיו" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "גשם" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "אפקטים חזותיים אקראיים" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "דירוג השיר הנוכחי ללא כוכבים" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "דירוג השיר הנוכחי עם כוכב אחד" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "דירוג השיר הנוכחי עם 2 כוכבים" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "דירוג השיר הנוכחי עם 3 כוכבים" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "דירוג השיר הנוכחי עם 4 כוכבים" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "דירוג השיר הנוכחי עם 5 כוכבים" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "דירוג" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "האם לבטל?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "רענון" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "רענון הקטלוג" @@ -3848,19 +3892,15 @@ msgstr "רענון הקטלוג" msgid "Refresh channels" msgstr "רענון הערוצים" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "רענון רשימת החברים" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "רענון רשימת התחנות" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "רענון ההזרמות" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "רגאיי" @@ -3872,8 +3912,8 @@ msgstr "שמירת הנפת ה־Wii remote" msgid "Remember from last time" msgstr "שמירה מהפעם הקודמת" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "הסרה" @@ -3881,7 +3921,7 @@ msgstr "הסרה" msgid "Remove action" msgstr "הסרת הפעולה" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "הסרת כפילויות מרשימת ההשמעה" @@ -3889,73 +3929,77 @@ msgstr "הסרת כפילויות מרשימת ההשמעה" msgid "Remove folder" msgstr "הסרת תיקייה" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "הסרה מהמוסיקה שלי" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "הסרה מרשימת המועדפים" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "הסרה מרשימת ההשמעה" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "הסר רשימת השמעה" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" -msgstr "" +msgstr "הסר רשימות השמעה" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "הסרת שירים מהמוסיקה שלי" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "הסרת שירים מרשימת המועדפים" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "שינוי שם רשימת ההשמעה %1 " -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "שינוי שם רשימת ההשמעה מ־Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "שינוי שם רשימת ההשמעה" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "שינוי שם רשימת ההשמעה..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "מספור הרצועות מחדש על פי הסדר הנוכחי..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "חזרה" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "חזרה על האלבום" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "חזרה על רשימת ההשמעה" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "חזרה על הרצועה" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "החלפת רשימת ההשמעה הנוכחית" @@ -3964,15 +4008,15 @@ msgstr "החלפת רשימת ההשמעה הנוכחית" msgid "Replace the playlist" msgstr "החלפת רשימת ההשמעה" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "החלפת רווחים עם קו תחתון" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "הגברת ניגון חוזר" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3980,24 +4024,24 @@ msgstr "" msgid "Repopulate" msgstr "איכלוס מחדש" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "איפוס" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "איפוס מונה ההשמעות" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "הגבלה לתווי ASCII" @@ -4005,15 +4049,15 @@ msgstr "הגבלה לתווי ASCII" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "מאחזר מ-Grooveshark את השירים שלי" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "מתקבלת רשימת השירים המועדפים מ־Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "מתקבלות רשימות ההשמעה מ־Grooveshark" @@ -4033,11 +4077,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "רוק" @@ -4049,25 +4093,25 @@ msgstr "הרצה" msgid "SOCKS proxy" msgstr "מתווך SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "הסרת התקן באופן בטוח" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "הסרת ההתקן באופן בטוח לאחר סיום ההעתקה" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "קצב הדגימה" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "קצב דגימה" @@ -4075,27 +4119,33 @@ msgstr "קצב דגימה" msgid "Save .mood files in your music library" msgstr "שמירת קבצי .מַצַב רוּחַ בספרית המוסיקה שלך" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "שמירת עטיפת האלבום" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "שמירת עטיפת האלבום לכונן..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "שמירת התמונה" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "שמירת רשימת ההשמעה" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "שמירת רשימת ההשמעה..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "שמירה כאפשרות מוגדרת מראש" @@ -4111,11 +4161,11 @@ msgstr "שמור תגיות סטטיסטיקות בתוך קובץ כשמתאפ msgid "Save this stream in the Internet tab" msgstr "שמירת המדיה הזורמת הזו בלשונית האינטרנט" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "שומר סטטיסטיקת שירים לתוך קובץ שירים" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "שמירת רצועות" @@ -4127,7 +4177,7 @@ msgstr "פרופיל קצב דגימה משתנה (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "ניקוד" @@ -4135,34 +4185,38 @@ msgstr "ניקוד" msgid "Scrobble tracks that I listen to" msgstr "עדכון הפרופיל עם הרצועות הנשמעות" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "חיפוש" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "חיפוש תחנות Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "חיפוש ב־Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "חיפוש ב־Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "חיפוש Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "חיפוש אחר עטיפות אלבום..." @@ -4182,21 +4236,21 @@ msgstr "חיפוש ב־iTunes" msgid "Search mode" msgstr "מצב חיפוש" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "אפשרויות חיפוש" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "תוצאות החיפוש" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "מונחי חיפוש" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "מתבצע חיפוש ב־Grooveshark" @@ -4204,27 +4258,27 @@ msgstr "מתבצע חיפוש ב־Grooveshark" msgid "Second level" msgstr "שלב שני" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "דילוג אחורה" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "דילוג קדימה" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "דילוג בתוך הרצועה המתנגנת כעת למיקום יחסי" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "דילוג בתוך הרצועה המתנגנת כעת למיקום מוחלט" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "בחירת הכול" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "ביטול הבחירה" @@ -4232,7 +4286,7 @@ msgstr "ביטול הבחירה" msgid "Select background color:" msgstr "בחירת צבע הרקע:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "בחירת תמונת הרקע" @@ -4248,7 +4302,7 @@ msgstr "בחירת צבע החזית:" msgid "Select visualizations" msgstr "בחירת אפקטים חזותיים" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "בחירת אפקטים חזותיים..." @@ -4256,7 +4310,7 @@ msgstr "בחירת אפקטים חזותיים..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "מספר סידורי" @@ -4268,51 +4322,51 @@ msgstr "כתובת שרת" msgid "Server details" msgstr "פרטי שרת" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "שירות לא מקוון" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "הגדרת %1 בתור „%2“..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "הגדרת עצמת השמע ל־ אחוזים" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "הגדרת הערך לכל הרצועות הנבחרות..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "קיצור דרך" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "קיצור דרך עבור %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "קיצור דרך עבור %1 קיים כבר" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "הצגה" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "הצגת חיווי המסך" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "הנפשה זוהרת על הרצועה הנוכחית" @@ -4340,15 +4394,15 @@ msgstr "הצגת חלונית קופצת ממגשית המערכת" msgid "Show a pretty OSD" msgstr "הצגת חיווי מסך נאה" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "הצגה מעל לשורת המצב" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "הצגת כל השירים" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "הצגת כל השירים" @@ -4360,32 +4414,36 @@ msgstr "הצגת עטיפת אלבום בספרייה" msgid "Show dividers" msgstr "הצגת חוצצים" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "הצגה על מסך מלא..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "הצגה בסייר הקבצים..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "הצגה תחת אמנים שונים" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "הצגת סרגל האווירה" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "הצגת כפילויות בלבד" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "הצגת לא מתוייגים בלבד" @@ -4394,8 +4452,8 @@ msgid "Show search suggestions" msgstr "הצגת הצעות חיפוש" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "הצגת הלחצנים „אהוב“ ו„חסימה“" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4467,27 @@ msgstr "הצגת סמל באזור הדיווחים" msgid "Show which sources are enabled and disabled" msgstr "הצגת מקורות מאופשרים ובלתי מאופשרים" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "הצגה/הסתרה" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "ערבוב" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "ערבוב אלבומים" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "ערבוב עם הכול" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "ערבוב רשימת ההשמעה" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "ערבוב שירים באלבום זה" @@ -4445,55 +4503,63 @@ msgstr "ניתוק" msgid "Signing in..." msgstr "כניסה..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "אמנים דומים" #: ../bin/src/ui_albumcoverexport.h:212 msgid "Size" -msgstr "" +msgstr "גודל" #: ../bin/src/ui_albumcoverexport.h:214 msgid "Size:" -msgstr "" +msgstr "גודל:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "סקא" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "דילוג אחורה ברשימת ההשמעה" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "מונה דילוגים" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "דילוג קדימה ברשימת ההשמעה" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "עטיפת אלבום קטנה" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "סרגל צד קטן" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "רשימת השמעה חכמה" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "רשימות השמעה חכמות" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "רך" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "רוק קל" @@ -4501,11 +4567,11 @@ msgstr "רוק קל" msgid "Song Information" msgstr "מידע על השיר" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "מידע על השיר" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "סונוגרמה" @@ -4525,15 +4591,23 @@ msgstr "מיון על פי סגנון (פופולריות)" msgid "Sort by station name" msgstr "מיון על פי שם התחנה" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "מיון שירים על פי" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "מיון" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "מקור" @@ -4549,7 +4623,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "שגיאה בהתחברות ל־Spotify" @@ -4557,7 +4631,7 @@ msgstr "שגיאה בהתחברות ל־Spotify" msgid "Spotify plugin" msgstr "תוסף Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "תוסף Spotify אינו מותקן" @@ -4565,77 +4639,77 @@ msgstr "תוסף Spotify אינו מותקן" msgid "Standard" msgstr "סטנדרטי" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "מסומן בכוכב" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "התחלת רשימת ההשמעה המתנגנת כעת" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "התחלת ההתמרה" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "נא להקליד משהו בתיבת החיפוש למעלה כדי למלא את רשימת תוצאות חיפוש זה" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "התחלת המרת %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "מופעל..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "תחנות" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "הפסקה" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "הפסקה אחרי" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "הפסקה אחרי רצועה זו" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "הפסקת הנגינה" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "הפסקת הנגינה אחרי הרצועה הנוכחית" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "בעצירה" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "מדיה זורמת" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4719,7 @@ msgstr "השידור משרת Subsonic דורש חשבון פעיל לאחר ת msgid "Streaming membership" msgstr "חברות המאפשרת הזרמת מדיה" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "מינוי על רשימות ההשמעה" @@ -4653,7 +4727,7 @@ msgstr "מינוי על רשימות ההשמעה" msgid "Subscribers" msgstr "מנויים" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4661,12 +4735,12 @@ msgstr "" msgid "Success!" msgstr "הצלחה!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "נכתב בהצלחה %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "תגים מוצעים" @@ -4675,13 +4749,13 @@ msgstr "תגים מוצעים" msgid "Summary" msgstr "סיכום" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "סופר גבוה (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "סופר גבוה (2048x2048)" @@ -4693,43 +4767,35 @@ msgstr "תבניות נתמכות" msgid "Synchronize statistics to files now" msgstr "מסנכרן סטטיסטיות לתוך קובץ" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "התיבה הנכנסת ב־Spotify מסונכרנת" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "רשימת ההשמעה מ־Spotify מסונכרנת" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "השירים המסומנים בכוכב ב‏־Spotify מסונכרנים" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "צבעי המערכת" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "לשוניות למעלה" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "תגית" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "משיג תגים" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "רדיו תגית" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "קצב הסיביות של היעד" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "טכנו" @@ -4737,11 +4803,11 @@ msgstr "טכנו" msgid "Text options" msgstr "אפשרויות טקסט" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "תודתנו נתונה לבאים" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "לא ניתן להפעיל את הפקודה „%1“." @@ -4750,17 +4816,12 @@ msgstr "לא ניתן להפעיל את הפקודה „%1“." msgid "The album cover of the currently playing song" msgstr "עטיפת האלבום של השיר המתנגן כעת" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "התיקייה %1 לא חוקית" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "רשימת ההשמעה %1 ריקה או שלא ניתן היה לטעון אותה." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "הערך השני חייב להיות גדול יותר מהערך הראשון!" @@ -4768,40 +4829,40 @@ msgstr "הערך השני חייב להיות גדול יותר מהערך הר msgid "The site you requested does not exist!" msgstr "האתר שביקשת לא קיים!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "האתר אותו ביקשת אינו תמונה!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "תמה תקופת הניסיון לשרת Subsonic. נא תרומתך לקבלת מפתח רישיון. לפרטים, נא לבקר ב subsonic.org " -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "הגרסה החדשה של Clementine אליה שדרגת דורשת סריקה חוזרת של הספרייה בגלל התכונות החדשות הבאות:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "אין שירים נוספים באלבום זה" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "אירעה תקלה בתקשורת עם gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "אירעה תקלה בקבלת המידע הנוסף מתוך Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "אירעה תקלה בניתוח התגובה מ־iTunes " -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4874,13 @@ msgid "" "deleted:" msgstr "אירעה תקלה במחיקת חלק מהשירים. הקבצים הבאים לא נמחקו:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "קבצים אלו ימחקו מההתקן, האם להמשיך?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4900,13 @@ msgstr "אפשרויות אלו בשימוש במסך \"המרת מוזיקה\", msgid "Third level" msgstr "רמה שלישית" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "פעולה זו עשויה ליצור בסיס נתונים שעלול להיות בגודל של 150 מגה-בייט.\nהאם להמשיך בכל זאת?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "אלבום זה לא זמין בפורמט המבוקש" @@ -4859,11 +4920,11 @@ msgstr "ההתקן הזה חייב להיות מחובר ופתוח על מנת msgid "This device supports the following file formats:" msgstr "ההתקן הזה תומך בפורמטים הבאים:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "ההתקן הזה לא יעבוד כראוי" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "התקן זה הוא התקן מסוג MTP, אולם Clementine לא קומפל עם תמיכה ב-libmtp." @@ -4872,7 +4933,7 @@ msgstr "התקן זה הוא התקן מסוג MTP, אולם Clementine לא ק msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "זהו iPod, אולם Clementine לא קומפל עם תמיכה ב-libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4943,33 @@ msgstr "זוהי הפעם הראשונה שחיברת את ההתקן הזה. Cl msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "המדיה הזורמת הזו היא עבור חברות בתשלום בלבד" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "סוג התקן זה לא נתמך: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "כותרת" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "על מנת להאזין לרדיו Grooveshark, עליך להאזין קודם למספר שירים אחרים מ־Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "היום" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "החלפה ל/ממצב חיווי נאה" @@ -4916,49 +4977,53 @@ msgstr "החלפה ל/ממצב חיווי נאה" msgid "Toggle fullscreen" msgstr "הפעלה או כיבוי של מסך מלא" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "החלף מצב התור" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "החלפה לscrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "הפעלה או כיבוי נראות ההצגה היפה על המסך" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "מחר" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "הפניות רבות מדי" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "מסלול עליון" #: ../bin/src/ui_albumcovermanager.h:221 msgid "Total albums:" -msgstr "" +msgstr "סך הכל אלבומים:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "סך הכל בתים שהועברו" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "סך הכל בקשות שנשלחו" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "רצועה" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "ממיר קבצי המוזיקה" @@ -4970,7 +5035,7 @@ msgstr "יומן ממיר קבצי המוזיקה" msgid "Transcoding" msgstr "ממיר" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "התחלת המרת %1 קבצים בעזרת %2 תהליכים" @@ -4979,11 +5044,11 @@ msgstr "התחלת המרת %1 קבצים בעזרת %2 תהליכים" msgid "Transcoding options" msgstr "אפשרויות המרה" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4991,72 +5056,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "כבה" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "אובונטו One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra wide band (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "לא ניתן להוריד %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "לא ידוע" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "סוג התוכן לא ידוע" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "שגיאה לא ידועה" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "הסרת עטיפה" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "הסרת מינוי" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "קונצרטים צפויים" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "עדכון רשימת ההשמעה ב־Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "עדכון כל הפודקאסטים" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "עדכון תיקיות שהשתנו בספרייה" @@ -5064,7 +5129,7 @@ msgstr "עדכון תיקיות שהשתנו בספרייה" msgid "Update the library when Clementine starts" msgstr "עדכון הספרייה בזמן הפעלת Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "עדכון פודקאסט זה" @@ -5072,21 +5137,21 @@ msgstr "עדכון פודקאסט זה" msgid "Updating" msgstr "מתבצע עדכון" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "עדכון %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "עדכון %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "הספרייה בעדכון" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "בשימוש" @@ -5094,11 +5159,11 @@ msgstr "בשימוש" msgid "Use Album Artist tag when available" msgstr "שימוש בתג אלבום אמן כאשר זמין" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "השתמש בקיצורי המקלדת של גנום" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "שימוש במידע נוסף על הגברת ניגון חוזר אם זמין" @@ -5118,7 +5183,7 @@ msgstr "שימוש בערכת צבעים מותאמת אישית" msgid "Use a custom message for notifications" msgstr "שימוש בהודעות מותאמות אישית להתרעות" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5158,20 +5223,20 @@ msgstr "שימוש בהגדרות המתווך של המערכת" msgid "Use volume normalisation" msgstr "שימוש בנורמליזציה של עצמת השמע" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "בשימוש" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "למשתמש %1 אין חשבון Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "מנשק משתמש" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5258,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "קצב סיביות משתנה" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "אמנים שונים" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "גרסה %1" @@ -5211,7 +5276,7 @@ msgstr "הצגה" msgid "Visualization mode" msgstr "מצב אפקטים חזותיים" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "אפקטים חזותיים" @@ -5219,11 +5284,15 @@ msgstr "אפקטים חזותיים" msgid "Visualizations Settings" msgstr "הגדרת אפקטים חזותיים" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "זיהוי פעולות קול" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "עצמת שמע %1%" @@ -5241,11 +5310,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5322,7 @@ msgstr "Wav" msgid "Website" msgstr "אתר" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "שבועות" @@ -5279,32 +5348,32 @@ msgstr "מדוע לא לנסות..." msgid "Wide band (WB)" msgstr "פס רחב (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: מופעל" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: מחובר" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: סוללה קריטית (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: כבוי" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: מנותק" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: סוללה חלשה (%2%)" @@ -5325,33 +5394,33 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "שמע של Windows Media" #: ../bin/src/ui_albumcovermanager.h:222 msgid "Without cover:" -msgstr "" +msgstr "ללא עטיפה:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "האם ברצונך להעביר גם את שאר השירים באלבום לאמנים שונים?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "האם ברצונך לבצע סריקה חוזרת כעת?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "רשום את כל הסטטיסטיקות עבור השירים לתוך קבצי שירים" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "שם משתמש או סיסמא שגויים" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5432,11 @@ msgstr "שינוי" msgid "Year - Album" msgstr "שינוי - אלבום" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "שנים" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "אתמול" @@ -5375,13 +5444,13 @@ msgstr "אתמול" msgid "You are about to download the following albums" msgstr "האלבומים הבאים מועמדים להורדה" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5460,12 @@ msgstr "" msgid "You are not signed in." msgstr "לא נכנסת." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "כבר נכנסת בשם %1" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "מחובר" @@ -5404,13 +5473,13 @@ msgstr "מחובר" msgid "You can change the way the songs in the library are organised." msgstr "ניתן לשנות את הדרך שבה השירים מסודרים בספרייה שלך." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "ניתן להאזין בחינם ללא חשבון, אך בעלי חשבון פרימיום יכולים להאזין להזרמות באיכות גבוהה יותר וללא פרסומות." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5489,6 @@ msgstr "ניתן להאזין לשירים מ־Magnatune בחינם ללא חש msgid "You can listen to background streams at the same time as other music." msgstr "ניתן להאזין למוזיקת רקע תוך כדי האזנה למוזיקה אחרת." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "ניתן להאזין לרצועות בחינם, אולם רק חברות בתשלום מאפשרת להזרים מ־Clementine לרדיו שב־Last.fm." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "ניתן להשתמש ב־Wii Remote כשלט רחוק ל־Clementine. ניתן לקרוא את העמוד בוויקי של Clementine לקבלת מידע נוסף.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "אין לך חשבון Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "אין לך חשבון פרימיום ב־Spotify." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "אינך בעל מנוי פעיל" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "נותקת מ־Spotify, נא להכניס מחדש את הססמה בחלון ההגדרות." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "נותקת מ־Spotify, נא להכניס מחדש את הססמה." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "רצועה זו מוצאת חן בעיניך" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5547,11 @@ msgstr "באפשרותך לפתוח את הגדרות המערכת ולהפעי msgid "You will need to restart Clementine if you change the language." msgstr "יש להפעיל מחדש את Clementine לאחר שינוי השפה." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "אין אפשרות לנגן תחנות רדיו של Last.fm מכיוון שאינך מנוי." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "כתובת ה-IP שלך:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "הפרטים שהוקלדו עבור Last.fm אינם נכונים" @@ -5489,42 +5559,43 @@ msgstr "הפרטים שהוקלדו עבור Last.fm אינם נכונים" msgid "Your Magnatune credentials were incorrect" msgstr "פרטי החיבור שלך ל־Magnatune שגויים." -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "הספרייה שלך ריקה!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "רדיו המדיות הזורמות שלך" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "ה־scrobbles שלך: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "למערכת שלך חסרה תמיכה ב־OpenGL, אפקטים חזותיים אינם זמינים." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "שם המשתמש או הססמה שגויים" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "אפס" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "הוספת %n שירים" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "אחרי" @@ -5544,19 +5615,19 @@ msgstr "אוטומטי" msgid "before" msgstr "לפני" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "בין" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "הכי גדול קודם" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "פעימות לדקה" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "מכיל" @@ -5566,20 +5637,20 @@ msgstr "מכיל" msgid "disabled" msgstr "מנוטרל" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "דיסק %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "אינו מכיל" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "מסתיים ב־" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "שווה ל־" @@ -5587,11 +5658,11 @@ msgstr "שווה ל־" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "ספריית gpodder.net " -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "גדול מ־" @@ -5599,54 +5670,55 @@ msgstr "גדול מ־" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "באחרון" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "קילוסיביות לשניה" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "קטן מ־" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "הארוך ביותר ראשון" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "העברת %n שירים" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "החדש ביותר ראשון" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "לא שווה" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "לא באחרון" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "לא ב־" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "הישן ביותר ראשון" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "ב־" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "אפשרויות" @@ -5658,36 +5730,37 @@ msgstr "" msgid "press enter" msgstr "נא להיכנס" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "הסרת %n שירים" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "הקצר ביותר ראשון" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "ערבול שירים" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "הקטן ביותר ראשון" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "מיון שירים" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "מתחיל ב־" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "הפסקה" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "רצועה %1" diff --git a/src/translations/he_IL.po b/src/translations/he_IL.po index 74e41cfcf..d69dc02a7 100644 --- a/src/translations/he_IL.po +++ b/src/translations/he_IL.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Hebrew (Israel) (http://www.transifex.com/projects/p/clementine/language/he_IL/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -14,7 +14,7 @@ msgstr "" "Language: he_IL\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -39,9 +39,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -54,11 +54,16 @@ msgstr "" msgid " seconds" msgstr "" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -68,12 +73,12 @@ msgstr "" msgid "%1 days" msgstr "" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -83,48 +88,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -138,18 +143,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "" @@ -161,24 +169,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -186,23 +194,23 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -210,23 +218,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -246,14 +254,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -263,7 +267,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -271,12 +275,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -287,6 +285,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -295,38 +304,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -346,36 +355,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -387,11 +395,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -407,39 +419,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -451,11 +463,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -519,6 +531,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -527,22 +543,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -551,6 +579,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -580,15 +612,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -596,12 +628,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -609,11 +641,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -623,35 +655,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -660,19 +693,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -697,30 +730,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -729,13 +762,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -743,52 +776,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -796,9 +824,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -806,7 +838,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -822,7 +854,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -830,15 +862,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -859,7 +891,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -867,11 +899,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -891,18 +919,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -910,7 +937,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -926,7 +958,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -940,11 +972,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -956,43 +988,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1002,15 +1057,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1026,11 +1085,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1039,7 +1098,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1047,17 +1106,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1070,8 +1129,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1093,8 +1152,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1108,20 +1167,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1133,11 +1185,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1147,7 +1199,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1162,19 +1217,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1182,73 +1237,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1256,11 +1316,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1270,12 +1330,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1291,17 +1355,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1309,156 +1377,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "" @@ -1466,7 +1530,7 @@ msgstr "" msgid "Ctrl+Up" msgstr "" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1478,54 +1542,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1533,6 +1593,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1541,30 +1606,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1572,31 +1637,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1605,7 +1670,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1617,15 +1682,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1662,12 +1727,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1677,15 +1747,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1697,27 +1767,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1725,12 +1795,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1746,7 +1817,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1754,15 +1825,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1770,7 +1841,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1779,23 +1850,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1815,20 +1886,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1840,16 +1911,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1857,6 +1928,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1871,7 +1946,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1899,15 +1974,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1921,7 +1991,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1930,11 +2000,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1942,21 +2012,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1964,38 +2035,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2027,7 +2098,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2039,7 +2110,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2060,36 +2131,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2099,42 +2170,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2143,11 +2214,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2163,11 +2234,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2175,7 +2246,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2183,19 +2254,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2205,7 +2280,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2213,15 +2288,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2229,7 +2308,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2245,12 +2324,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2265,7 +2344,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2293,31 +2372,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2325,30 +2396,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2360,11 +2431,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2372,7 +2443,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2382,7 +2453,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2390,15 +2461,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2406,44 +2477,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2452,7 +2523,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2468,25 +2539,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2498,15 +2569,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2516,24 +2587,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2544,7 +2615,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2556,36 +2627,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2593,55 +2664,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2649,42 +2720,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2693,11 +2764,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2705,11 +2777,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2717,12 +2789,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2730,45 +2806,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2776,11 +2814,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2788,28 +2826,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2817,24 +2851,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2846,15 +2880,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2862,84 +2896,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2951,12 +2990,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2968,15 +3012,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2984,7 +3028,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2992,15 +3036,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3013,15 +3062,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3033,17 +3082,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3055,11 +3108,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3067,20 +3124,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3088,15 +3145,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3105,7 +3166,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3114,7 +3175,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3122,56 +3183,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3179,23 +3216,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3204,21 +3237,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3226,24 +3259,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3251,7 +3284,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3259,7 +3292,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3273,11 +3306,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3285,43 +3318,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3334,36 +3371,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3371,11 +3413,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3383,23 +3425,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3407,30 +3449,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3450,23 +3497,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3474,7 +3521,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3482,15 +3529,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3502,15 +3545,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3519,20 +3562,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3541,34 +3584,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3577,45 +3608,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3627,23 +3655,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3652,22 +3680,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3703,7 +3732,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3714,20 +3743,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3735,21 +3764,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3757,7 +3790,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3765,28 +3803,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3794,48 +3837,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3843,19 +3886,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3867,8 +3906,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3876,7 +3915,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3884,73 +3923,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3959,15 +4002,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3975,24 +4018,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4000,15 +4043,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4028,11 +4071,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4044,25 +4087,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4070,27 +4113,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4106,11 +4155,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4122,7 +4171,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4130,10 +4179,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4141,23 +4194,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4177,21 +4230,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4199,27 +4252,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4227,7 +4280,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4243,7 +4296,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4251,7 +4304,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4263,51 +4316,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4335,15 +4388,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4355,32 +4408,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4389,7 +4446,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4404,27 +4461,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4440,7 +4497,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4452,43 +4509,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4496,11 +4561,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4520,15 +4585,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4544,7 +4617,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4552,7 +4625,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4560,77 +4633,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4640,7 +4713,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4648,7 +4721,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4656,12 +4729,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4670,13 +4743,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4688,43 +4761,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4732,11 +4797,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4745,17 +4810,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4763,40 +4823,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4808,13 +4868,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4834,13 +4894,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4854,11 +4914,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4867,7 +4927,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4877,33 +4937,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4911,27 +4971,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4939,21 +4999,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4965,7 +5029,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4974,11 +5038,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4986,72 +5050,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5059,7 +5123,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5067,21 +5131,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5089,11 +5153,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5113,7 +5177,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5153,20 +5217,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5188,12 +5252,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5206,7 +5270,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5214,11 +5278,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5236,11 +5304,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5248,7 +5316,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5274,32 +5342,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5320,7 +5388,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5328,25 +5396,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5358,11 +5426,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5370,13 +5438,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5386,12 +5454,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5399,13 +5467,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5415,13 +5483,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5466,17 +5541,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5484,42 +5553,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5539,19 +5609,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5561,20 +5631,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5582,11 +5652,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5594,54 +5664,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5653,36 +5724,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/hi.po b/src/translations/hi.po index 34396a7d3..d6addfeaa 100644 --- a/src/translations/hi.po +++ b/src/translations/hi.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Hindi (http://www.transifex.com/projects/p/clementine/language/hi/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +17,7 @@ msgstr "" "Language: hi\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -42,9 +42,9 @@ msgstr "" msgid " kbps" msgstr "kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "ms" @@ -57,11 +57,16 @@ msgstr "pt" msgid " seconds" msgstr "सेकंड्स" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "गाने" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 एल्बम " @@ -71,12 +76,12 @@ msgstr "%1 एल्बम " msgid "%1 days" msgstr "%1 दिन" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 दिन पहले " -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -86,48 +91,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 प्लेलिस्ट (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 चयन किया " -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 गाना " -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 gane" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 गाने mile" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 गाने मिले ( %2 प्रदर्शित है )" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 tracks" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 hastantarit" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1 Wiimotedev modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 अन्य shrota" @@ -141,18 +146,21 @@ msgstr "कुल %L1 बार चलाया" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n असफल " -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n samapt" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n शेष hain" @@ -164,24 +172,24 @@ msgstr "&संरेखित lipi" msgid "&Center" msgstr "&kendra" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&anukul" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&saha" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&chipaye %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&chipaye" @@ -189,23 +197,23 @@ msgstr "&chipaye" msgid "&Left" msgstr "&baye" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&कोई nahi" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&बंद" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -213,23 +221,23 @@ msgstr "" msgid "&Right" msgstr "&dayen" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&खीचे कॉलम विंडो फिट करने के लिए" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&upkaran" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(कई गानो में विभिन्नता)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "और बाकि सारे आमरोक सहयोगि.." @@ -249,14 +257,10 @@ msgstr "" msgid "1 day" msgstr "1 din" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 giit" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -266,7 +270,7 @@ msgstr "128k एमपी3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 यादृच्छिक giit" @@ -274,12 +278,6 @@ msgstr "50 यादृच्छिक giit" msgid "Upgrade to Premium now" msgstr "आज ही परीमियम मे उननयन करे" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -290,6 +288,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -298,38 +307,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Grooveshark Anywhere khaate ke zaroorat hai" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Spotify Premium khaate ke zaroorat hai" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -349,36 +358,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -390,11 +398,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -410,39 +422,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -454,11 +466,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -522,6 +534,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -530,22 +546,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -554,6 +582,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -583,15 +615,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -599,12 +631,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -612,11 +644,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -626,35 +658,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Saare kalakaar" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -663,19 +696,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -700,30 +733,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -732,13 +765,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -746,52 +779,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Kalakar" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -799,9 +827,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -809,7 +841,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -825,7 +857,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -833,15 +865,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -862,7 +894,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -870,11 +902,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -894,18 +922,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -913,7 +940,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -929,7 +961,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -943,11 +975,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -959,43 +991,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1005,15 +1060,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1029,11 +1088,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1042,7 +1101,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1050,17 +1109,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1073,8 +1132,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1096,8 +1155,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1111,20 +1170,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1136,11 +1188,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1150,7 +1202,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1165,19 +1220,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1185,73 +1240,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1259,11 +1319,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1273,12 +1333,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1294,17 +1358,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1312,156 +1380,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1469,7 +1533,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1481,54 +1545,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1536,6 +1596,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1544,30 +1609,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1575,31 +1640,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1608,7 +1673,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1620,15 +1685,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1665,12 +1730,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1680,15 +1750,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1700,27 +1770,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1728,12 +1798,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1749,7 +1820,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1757,15 +1828,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1773,7 +1844,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1782,23 +1853,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1818,20 +1889,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1843,16 +1914,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1860,6 +1931,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1874,7 +1949,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1902,15 +1977,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1924,7 +1994,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1933,11 +2003,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1945,21 +2015,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1967,38 +2038,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2030,7 +2101,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2042,7 +2113,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2063,36 +2134,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2102,42 +2173,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2146,11 +2217,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2166,11 +2237,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2178,7 +2249,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2186,19 +2257,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2208,7 +2283,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2216,15 +2291,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2232,7 +2311,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2248,12 +2327,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2268,7 +2347,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2296,31 +2375,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2328,30 +2399,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2363,11 +2434,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2375,7 +2446,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2385,7 +2456,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2393,15 +2464,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2409,44 +2480,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2455,7 +2526,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2471,25 +2542,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2501,15 +2572,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2519,24 +2590,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2547,7 +2618,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2559,36 +2630,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2596,55 +2667,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2652,42 +2723,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2696,11 +2767,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2708,11 +2780,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2720,12 +2792,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2733,45 +2809,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2779,11 +2817,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2791,28 +2829,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2820,24 +2854,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2849,15 +2883,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2865,84 +2899,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2954,12 +2993,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2971,15 +3015,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2987,7 +3031,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2995,15 +3039,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3016,15 +3065,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3036,17 +3085,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3058,11 +3111,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3070,20 +3127,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3091,15 +3148,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3108,7 +3169,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3117,7 +3178,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3125,56 +3186,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3182,23 +3219,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3207,21 +3240,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3229,24 +3262,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3254,7 +3287,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3262,7 +3295,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3276,11 +3309,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3288,43 +3321,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3337,36 +3374,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3374,11 +3416,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3386,23 +3428,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3410,30 +3452,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3453,23 +3500,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3477,7 +3524,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3485,15 +3532,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3505,15 +3548,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3522,20 +3565,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3544,34 +3587,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3580,45 +3611,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3630,23 +3658,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3655,22 +3683,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3706,7 +3735,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3717,20 +3746,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3738,21 +3767,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3760,7 +3793,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3768,28 +3806,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3797,48 +3840,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3846,19 +3889,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3870,8 +3909,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3879,7 +3918,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3887,73 +3926,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3962,15 +4005,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3978,24 +4021,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4003,15 +4046,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4031,11 +4074,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4047,25 +4090,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4073,27 +4116,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4109,11 +4158,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4125,7 +4174,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4133,10 +4182,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4144,23 +4197,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4180,21 +4233,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4202,27 +4255,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4230,7 +4283,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4246,7 +4299,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4254,7 +4307,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4266,51 +4319,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4338,15 +4391,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4358,32 +4411,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4392,7 +4449,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4407,27 +4464,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4443,7 +4500,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4455,43 +4512,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4499,11 +4564,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4523,15 +4588,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4547,7 +4620,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4555,7 +4628,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4563,77 +4636,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4643,7 +4716,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4651,7 +4724,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4659,12 +4732,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4673,13 +4746,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4691,43 +4764,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4735,11 +4800,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4748,17 +4813,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4766,40 +4826,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4811,13 +4871,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4837,13 +4897,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4857,11 +4917,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4870,7 +4930,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4880,33 +4940,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4914,27 +4974,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4942,21 +5002,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4968,7 +5032,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4977,11 +5041,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4989,72 +5053,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5062,7 +5126,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5070,21 +5134,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5092,11 +5156,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5116,7 +5180,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5156,20 +5220,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5191,12 +5255,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5209,7 +5273,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5217,11 +5281,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5239,11 +5307,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5251,7 +5319,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5277,32 +5345,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5323,7 +5391,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5331,25 +5399,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5361,11 +5429,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5373,13 +5441,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5389,12 +5457,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5402,13 +5470,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5418,13 +5486,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5469,17 +5544,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5487,42 +5556,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5542,19 +5612,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5564,20 +5634,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5585,11 +5655,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5597,54 +5667,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5656,36 +5727,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/hr.po b/src/translations/hr.po index a726e1907..e978a102b 100644 --- a/src/translations/hr.po +++ b/src/translations/hr.po @@ -11,15 +11,15 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-28 14:34+0000\n" -"Last-Translator: gogo \n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Croatian (http://www.transifex.com/projects/p/clementine/language/hr/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: hr\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +44,9 @@ msgstr " dana" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " msek" @@ -59,11 +59,16 @@ msgstr " točka" msgid " seconds" msgstr " sekundi" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " pjesme" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 pjesma)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albuma" @@ -73,12 +78,12 @@ msgstr "%1 albuma" msgid "%1 days" msgstr "%1 dana" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dana prije" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 na %2" @@ -88,48 +93,48 @@ msgstr "%1 na %2" msgid "%1 playlists (%2)" msgstr "%1 popisi izvođenja (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 odabranih od" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 pjesma" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 pjesme" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 pronađenih pjesma" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 pronađenih pjesama (prikazuje %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 pjesama" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 preuzeto" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: module Wiimote uređaja" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 drugih slušatelja" @@ -143,18 +148,21 @@ msgstr "%L1 ukupno izvođenja" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n nije uspjelo" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n završeno" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n preostalo" @@ -166,24 +174,24 @@ msgstr "&Poravnaj tekst" msgid "&Center" msgstr "&Centriraj" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Podešeno" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Dodaci" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Pomoć" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Sakrij %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Sakrij..." @@ -191,23 +199,23 @@ msgstr "&Sakrij..." msgid "&Left" msgstr "&Lijevo" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Glazba" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nijedan" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Popis izvođenja" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Zatvorite Clementine" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Način ponavljanja" @@ -215,23 +223,23 @@ msgstr "Način ponavljanja" msgid "&Right" msgstr "&Desno" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Način naizmjeničnog sviranja" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Rastegni stupce da stanu u prozor" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Alati" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(različito kroz više pjesama)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...i svi Amarokovi suradnici" @@ -251,14 +259,10 @@ msgstr "0 piksela" msgid "1 day" msgstr "1 dan" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 pjesma" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +272,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40 %" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 naizmjeničnih pjesama" @@ -276,12 +280,6 @@ msgstr "50 naizmjeničnih pjesama" msgid "Upgrade to Premium now" msgstr "Nadogradite odmah na Premium račun" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Napravite novi račun ili ponovno postavite svoju lozinku" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +290,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Ako nije odabrano, Clementine će pokušati spremiti vaše ocjene i ostalu statistiku u odvojenu bazu podataka bez promjene vaših datoteka.

Ako je odabrano, Clementine će spremiti statistiku u oboje, u bazu podataka i izravno u datoteku svaki puta kada je datoteka izmjenjena.

Imajte na umu da to možda neće raditi sa svakim formatom i ako ne postoji standard za to izvođenje ostali glazbeni svirači možda ih neće moći pročitati.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Prefiks riječi s nazivom polja za ograničavanje pretraživanja na tom polju, npr. izvođač:Bode pretražuje fonoteku za sve izvođače koji sadrže riječ Bode.

Dostupna polja: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +309,38 @@ msgid "" "activated.

" msgstr "

Ovo će zapisati ocjene i statistike pjesama u oznaku datoteke za sve pjesme u vašoj fonoteci.

Ovo nije potrebno ako je "Spremi ocjene i statistiku u datoteku oznaka" mogućnost uvijek aktivirana.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Znakovi započeti s %, npr: %izvođač %album %pjesma

\n\n

Ako imate dijelove teksta koji sadrže znakove sa vitičastom zagradom, taj dio će biti sakriven ako su oznake prazne.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Grooveshark Anywhere račun je potreban." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Spotify Premium račun je obvezan." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Klijent se može povezati samo ako je ispravan kôd upisan." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Pametni popis izvođenja je dinamični popis pjesama koje dolaze iz vaše fonoteke. Ima različitih vrsta popisa izvođenja koje nude drugačiji način izbora pjesama." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Pjesma će biti odabrana u popisu izvođenja ako se podudara sa ovm uvjetima" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -351,36 +360,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "SVA SLAVA HYPNOTOADU!" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Prekini" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "O Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "O Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Pojedinosti računa" @@ -392,11 +400,15 @@ msgstr "Pojedinosti računa (Premium)" msgid "Action" msgstr "Radnja" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktiviraj/deaktiviraj Wii Daljinski upravljač" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Aktivnosti streama" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Dodajte podcast" @@ -412,39 +424,39 @@ msgstr "Dodaj novu liniju ako je podržana od vrste obavijesti" msgid "Add action" msgstr "Dodajte radnju" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Dodajte novi stream..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Dodajte direktorij..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Dodaj datoteku" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Dodaj datoteku u enkôder" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Dodaj datoteku(e) u enkôder" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Dodajte datoteku..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Dodajte datoteku za transkôdiranje..." -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Dodajte mapu" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Dodajte mapu..." @@ -456,11 +468,11 @@ msgstr "Dodajte novu mapu" msgid "Add podcast" msgstr "Dodajte podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Dodajte podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Dodajte izraz za traženje" @@ -524,6 +536,10 @@ msgstr "Dodajte oznaku brojeva preskakanja pjesme" msgid "Add song title tag" msgstr "Dodajte oznaku naziva pjesme" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Dodaj pjesmu u priručnu memoriju" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Dodajte oznaku broja pjesme" @@ -532,22 +548,34 @@ msgstr "Dodajte oznaku broja pjesme" msgid "Add song year tag" msgstr "Dodajte oznaku godine pjesme" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Dodaj pjesmu u \"Moja glazba\" kada je \"Sviđa mi se\" tipka kliknuta" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Dodajte stream..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Dodaj u Grooveshark omiljene" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Dodaj u Grooveshark popis izvođenja" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Dodaj u Moja glazba" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Dodajte na drugi popis izvođenja" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Dodaj u zabilješku" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Dodajte u popis izvođenja" @@ -556,6 +584,10 @@ msgstr "Dodajte u popis izvođenja" msgid "Add to the queue" msgstr "Odaberite za reprodukciju i dodajte na popis izvođenja" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Dodaj korisnika/grupu u zabilješku" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Dodajte radnju Wiimote uređaja" @@ -585,15 +617,15 @@ msgstr "Dodano danas" msgid "Added within three months" msgstr "Dodano tijekom tri mjeseca" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Dodavanje glazbe u Moju glazbu" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Dodavanje pjesme u omiljene" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Napredno grupiranje..." @@ -601,12 +633,12 @@ msgstr "Napredno grupiranje..." msgid "After " msgstr "Nakon " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Nakon kopiranja..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +646,11 @@ msgstr "Nakon kopiranja..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (idealna glasnoća za sve pjesme)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +660,36 @@ msgstr "Izvođač albuma" msgid "Album cover" msgstr "Omot albuma" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Album info na jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumi sa omotima" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumi bez omota" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Sve datoteke" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Sva slava Hypnotoadu!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Svi albumi" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Svi izvođači" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Sve datoteke (*)" @@ -665,19 +698,19 @@ msgstr "Sve datoteke (*)" msgid "All playlists (%1)" msgstr "Svi popisi izvođenja (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Svi prevoditelji" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Sve pjesme" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Dopusti klijentu da preuzme glazbu sa ovog računala." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Dopusti preuzimanja" @@ -702,30 +735,30 @@ msgstr "Uvijek prikaži glavni prozor" msgid "Always start playing" msgstr "Uvijek započinji reprodukciju glazbe" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Dodatni dodatak je potreban za korištenje Spotify-a u Clementineu. Želite li dodatak preuzeti i odmah ga instalirati?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Greška je nastala tijekom učitavanja iTunes baze podataka" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Greška je nastala zapisivanjem metapodataka '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Dogodila se neodređena greška." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "I:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Bijesan" @@ -734,13 +767,13 @@ msgstr "Bijesan" msgid "Appearance" msgstr "Izgled" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Dodajte datoteku/URL u popis izvođenja" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Dodajte na trenutni popis izvođenja" @@ -748,52 +781,47 @@ msgstr "Dodajte na trenutni popis izvođenja" msgid "Append to the playlist" msgstr "Pjesma će biti dodana na popis izvođenja" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Primjenite kompresiju da spriječite isječak" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Sigurno želite izbrisati \"%1\" postavke?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Sigurno želite izbrisati ovaj popis izvođenja?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Sigurno želite resetirati statistiku pjesama?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Sigurno želite zapisati statistiku pjesama u datoteke pjesama za sve pjesme u vašoj fonoteci?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Izvođač" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Info izvođača" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Izvođač radia" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Vrsta glazbe izvođača" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Prvi izvođač" @@ -801,9 +829,13 @@ msgstr "Prvi izvođač" msgid "Audio format" msgstr "Format zvuka" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Zvučni izlaz" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Provjera autentičnosti nije uspjela" @@ -811,7 +843,7 @@ msgstr "Provjera autentičnosti nije uspjela" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autori" @@ -827,7 +859,7 @@ msgstr "Automatsko ažuriranje" msgid "Automatically open single categories in the library tree" msgstr "Automatski otvori pojedine kategorije u stablu fonoteke" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Dostupno" @@ -835,15 +867,15 @@ msgstr "Dostupno" msgid "Average bitrate" msgstr "Prosječna brzina prijenosa" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Prosječna veličina slike" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC podcasti" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +896,7 @@ msgstr "Slika pozadine" msgid "Background opacity" msgstr "Prozirnost pozadine" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Sigurnosno kopiranje baze podataka" @@ -872,11 +904,7 @@ msgstr "Sigurnosno kopiranje baze podataka" msgid "Balance" msgstr "Balansiranje" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Zabrana" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Bar analizator" @@ -896,18 +924,17 @@ msgstr "Ponašanje" msgid "Best" msgstr "Najbolje" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Životopis sa %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Brzina prijenosa" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +942,12 @@ msgstr "Brzina prijenosa" msgid "Bitrate" msgstr "Brzina prijenosa" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Brzina prijenosa" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blok analizator" @@ -931,7 +963,7 @@ msgstr "Zamućenje" msgid "Body" msgstr "Pojedinosti" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom analizator" @@ -945,11 +977,11 @@ msgstr "Box" msgid "Browse..." msgstr "Pogledaj..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Trajanje međuspremnika" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Međupohrana" @@ -961,43 +993,66 @@ msgstr "Ovi izvori su onemogućeni:" msgid "Buttons" msgstr "Tipke" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Uobičajeno, Grooveshark razvrstava pjesme prema datumu dodavanja" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Podrška za CUE listu" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Putanja priručne memorije:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Priručna memorija" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Priručna memorija %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Otkaži" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Captcha je potrebna.\nProbajte se prijaviti na Vk.com s vašim preglednikom, za popravak problema." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Promijenite omot albuma" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Promijeni veličinu slova..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Promjenu načina ponavljanja" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Promijeni prečac..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Promijenite naizmjenični mod" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Promijeni jezik" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1062,19 @@ msgstr "Promjena postavke mono reprodukcije imati će učinka na sljedeće repro msgid "Check for new episodes" msgstr "Provjeri za nove nastavke" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Provjeri ima li nadogradnja" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Odaberite Vk.com direktorij priručne memorije" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Izaberite naziv za svoj pametni popis izvođenja" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Automatski odabir" @@ -1031,11 +1090,11 @@ msgstr "Odaberite slova..." msgid "Choose from the list" msgstr "Odaberite sa popisa" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Odaberite kako je popis izvođenja razvrstan i koliko pjesama sadrži." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Odaberi direktorij preuzimanja podcasta" @@ -1044,7 +1103,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Odaberite web stranice koje će Clementine koristit za pretragu teksta pjesama." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasičan" @@ -1052,17 +1111,17 @@ msgstr "Klasičan" msgid "Cleaning up" msgstr "Brisanje" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Isprazni" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Ispraznite popis izvođenja" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1075,8 +1134,8 @@ msgstr "Clementine greška" msgid "Clementine Orange" msgstr "Clementine narančasto" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine vizualizacija" @@ -1098,9 +1157,9 @@ msgstr "Clementine može reproducirati glazbu koju ste spremili na Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine može reproducirati glazbu koju ste spremili na Google Disk" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine može reproducirati glazbu koju ste spremili na Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine može reproducirati glazbu koju ste spremili na OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1172,13 @@ msgid "" "an account." msgstr "Clementine može uskladiti vaš popis pretplate sa vašim ostalim računalima i podcast aplikacijama. Napravite račun." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine ne može učitati nijednu projektM vizualizaciju. Provjerite da li je Clementine instaliran ispravno." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine ne može preuzeti status vaše pretplate jer postoji problemi sa vašom vezom. Svirane pjesme biti će spremljene i poslane kasnije u Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine preglednik slika" @@ -1138,11 +1190,11 @@ msgstr "Clementine nije pronašao rezultate za ovu datoteku" msgid "Clementine will find music in:" msgstr "Clementine će potražiti glazbu u:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Kliknite ovdje kako biste dodali glazbu!" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1204,10 @@ msgstr "Kliknite ovdje za dodavanje ovog popis izvođenja u omiljeno, popis izvo msgid "Click to toggle between remaining time and total time" msgstr "Kliknite za odabir između preostalog vremena reprodukcije i ukupnog vremena reprodukcije" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1222,19 @@ msgstr "Zatvori" msgid "Close playlist" msgstr "Zatvori popis izvođenja" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Zatvorite vizualizaciju" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Zatvaranje ovog prozora poništit će download." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Zatvaranje ovog prozora zaustavit će pretragu omota albuma" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klub" @@ -1187,73 +1242,78 @@ msgstr "Klub" msgid "Colors" msgstr "Boje" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Zarezom odvojen popis klasa:razina, razina je 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Društveni radio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Završi oznake automatski" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Završite oznake automatski..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Skladatelj" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Konfiguracija %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Podesi Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Podesi Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Podesi Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Podesi prečace" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Podesite Spotify ..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Podesi Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Podesite Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Podesite globalno pretraživanje..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Podesi fonoteku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Podesite podcaste..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Podesi..." @@ -1261,11 +1321,11 @@ msgstr "Podesi..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Spoji Wii Daljinski upravljač koristeći aktiviraj/deaktiviraj naredbu" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Spoji uređaj" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Spajanje Spotify-a" @@ -1275,12 +1335,16 @@ msgid "" "http://localhost:4040/" msgstr "Veza je odbijena od strane poslužitelja, provjerite URL poslužitelja. Npr. http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Veza je istekla, provjerite URL poslužitelja. Npr. http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Poteškoće s povezivanjem ili je zvuk onemogućio vlasnik" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konzola" @@ -1296,17 +1360,21 @@ msgstr "Konvertiraj svu glazbu" msgid "Convert any music that the device can't play" msgstr "Konvertiraj svu glazbu koju uređaj može reproducirati" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Kopiraj dijeljeni URL u međuspremnik" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiraj u međuspremnik" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopirajte na uređaj..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopirajte u fonoteku..." @@ -1314,156 +1382,152 @@ msgstr "Kopirajte u fonoteku..." msgid "Copyright" msgstr "Autorsko pravo" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Nemoguće se povezati na Subsonic, provjerite URL poslužitelja. Npr; http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nije moguče stvoriti GStreamer element \"%1\" - provjerite imate li sve GStreamer pluginove instalirane" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Nemoguće stvaranje popisa izvođenja" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nije moguče pronaći muxer %1, provjerite imate li sve GStreamer pluginove instalirane" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Nije moguće pronaći enkôder za %1, provjerite imate li ispravne GStreamer pluginove instalirane" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Nije moguće učitati Last.fm radio stanicu" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Nije moguće otvoriti izlaznu datoteku %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Upravljanje omotima" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Omot albuma iz ugrađene slike" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Omot albuma učitan automatski iz %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Omot albuma ručno uklonjen" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Omot albuma nije postavljen" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Omot albuma postavljen iz %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Omoti sa %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Napravite novi Grooveshark popis izvođenja" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Postepeno utišaj kada se pjesma mijenja automatski" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Postepeno utišaj kada se pjesma mijenja ručno" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1535,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Prilagođeno" @@ -1483,54 +1547,50 @@ msgstr "Odaberite sliku pozadine:" msgid "Custom message settings" msgstr "Prilagođene postavke poruka" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Ručno odabrani radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Prilagođeno..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus putanja" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Baza podataka je oštećena. Pročitajte na https://code.google.com/p/clementine-player/wiki/DatabaseCorruption upute kako obnoviti bazu podataka" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Izrađeno datuma" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Izmjenjeno datuma" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dani" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Za&dano" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Smanji glasnoću zvuka za 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Smanji glanoću zvuka za posto" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Smanji glasnoću zvuka" @@ -1538,6 +1598,11 @@ msgstr "Smanji glasnoću zvuka" msgid "Default background image" msgstr "Uobičajena slika pozadine" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Zadani uređaj na %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Zadano" @@ -1546,30 +1611,30 @@ msgstr "Zadano" msgid "Delay between visualizations" msgstr "Pauza između vizualizacija" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Izbriši" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Izbrišite Grooveshark popis izvođenja" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Obriši preuzete podatke" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Izbrišite datoteku" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Izbrišite sa uređaja..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Izbrišite sa diska..." @@ -1577,31 +1642,31 @@ msgstr "Izbrišite sa diska..." msgid "Delete played episodes" msgstr "Obriši reproducirane nastavke" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Izbrišite predložak" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Izbrišite pametni popis izvođenja" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Izbriši orginalne datoteke" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Brisanje datoteka" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Uklonite označenu pjesmu sa reprodukcije" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Uklonite označenu pjesmu za reprodukciju" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Odredište" @@ -1610,7 +1675,7 @@ msgstr "Odredište" msgid "Details..." msgstr "Pojedinosti..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Uređaj" @@ -1622,15 +1687,15 @@ msgstr "Mogućnosti uređaja" msgid "Device name" msgstr "Naziv uređaja" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Mogućnosti uređaja..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Uređaji" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Dijalog" @@ -1667,12 +1732,17 @@ msgstr "Onemogućite vrijeme trajanja" msgid "Disable moodbar generation" msgstr "Onemogući generiranje traka tonaliteta" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Onemogući" +msgstr "Onemogućeno" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Onemogućeno" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1682,15 +1752,15 @@ msgid "Discontinuous transmission" msgstr "Isprekidani prijenos" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Mogućnosti zaslona" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Prikaži zaslonski prikaz (OSD)" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Pretražite ponovno cijelu fonoteku" @@ -1702,27 +1772,27 @@ msgstr "Ne konvertiraj glazbu" msgid "Do not overwrite" msgstr "Nemoj prepisati" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ne ponavljaj" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Ne prikazuj u različitim izvođačima" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ne sviraj naizmjenično" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ne zaustavljaj!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Donirajte" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Za otvaranje kliknite dva puta" @@ -1730,12 +1800,13 @@ msgstr "Za otvaranje kliknite dva puta" msgid "Double clicking a song will..." msgstr "Dvostrukim klikom pjesma će..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Preuzeto %n nastavaka" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Preuzmi direktorij" @@ -1751,7 +1822,7 @@ msgstr "Učlani se" msgid "Download new episodes automatically" msgstr "Preuzmi automatski nove nastavke" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Zahtjev preuzimanja" @@ -1759,15 +1830,15 @@ msgstr "Zahtjev preuzimanja" msgid "Download the Android app" msgstr "Preuzmite Android aplikaciju" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Preuzmi ovaj album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Preuzmi ovaj album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Preuzmi ovaj nastavak" @@ -1775,7 +1846,7 @@ msgstr "Preuzmi ovaj nastavak" msgid "Download..." msgstr "Preuzmi..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Preuzimanje (%1%)..." @@ -1784,23 +1855,23 @@ msgstr "Preuzimanje (%1%)..." msgid "Downloading Icecast directory" msgstr "Preuzimanje Icecast direktorija" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Preuzimanje Jamendo kataloga" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Preuzimanje Magnatune kataloga" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Preuzimanje Spotify dodatka" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Preuzimanje metapodataka" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Promijenite položaj pomicanjem mišem" @@ -1814,26 +1885,26 @@ msgstr "" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Trajanje" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dinamičan način je uključen" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dinamičan naizmjeničan mix" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Uredite pametni popis izvođenja..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Uredi oznaku \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Uredite oznake..." @@ -1845,16 +1916,16 @@ msgstr "Uredite oznake" msgid "Edit track information" msgstr "Uredite informacije o pjesmi" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Uredite informacije o pjesmi..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Uredite informacije pjesama..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Uredite ..." @@ -1862,6 +1933,10 @@ msgstr "Uredite ..." msgid "Enable Wii Remote support" msgstr "Omogući podršku Wii Daljinskog upravljanja" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Omogući automatsku priručnu memoriju" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Omogući ekvalizator" @@ -1876,7 +1951,7 @@ msgid "" "displayed in this order." msgstr "Omogućite izvore ispod da bi ih uključili u rezultate pretraživanja. Rezultati će biti prikazani ovim redosljedom." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Omogući/Onemogući Last.fm scrobblanje" @@ -1904,15 +1979,10 @@ msgstr "Upišite URL da bi mogli preuzeti omot sa interneta:" msgid "Enter a filename for exported covers (no extension):" msgstr "Upišite naziv za izvezene omote (bez vrste datoteke):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Upišite novi naziv za popis izvođenja" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Upišite izvođača ili oznaku za početak slušanja Last.fm radia." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1996,7 @@ msgstr "Upišite uvjete pretraživanja ispod za pronalaženje podcasta u iTunes msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Upišite uvjete pretraživanja ispod za pronalaženje podcasta na " -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Upišite zahtjev za pretraživanje ovdje" @@ -1935,11 +2005,11 @@ msgstr "Upišite zahtjev za pretraživanje ovdje" msgid "Enter the URL of an internet radio stream:" msgstr "Upišite URL internet radio streama:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Upišite naziv mape" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Upišite ovu IP adresu u aplikaciju za spajanje na Clementine." @@ -1947,21 +2017,22 @@ msgstr "Upišite ovu IP adresu u aplikaciju za spajanje na Clementine." msgid "Entire collection" msgstr "Cijelu kolekciju" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekvalizator" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Odgovara --log-levels *: 1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Odgovara --log-levels *: 3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Greška" @@ -1969,38 +2040,38 @@ msgstr "Greška" msgid "Error connecting MTP device" msgstr "Greška pri spajanju na MTP uređaj" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Greška u kopiranju pjesama" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Greška u brisanju pjesama" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "greška pri preuzimanju Spotify dodatka" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Greška pri učitavanju %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Greška pri učitavanju di.fm popisa izvođenja" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Greška pri obradi %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Greška pri učitavanju glazbenog CD-a" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Ikada reproducirano" @@ -2032,7 +2103,7 @@ msgstr "Svakih 6 sati" msgid "Every hour" msgstr "Svakih sat vremena" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Osim između pjesama na istom albumu ili na istom CUE popisu" @@ -2044,7 +2115,7 @@ msgstr "Postojeći omoti" msgid "Expand" msgstr "Proširi" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Istječe %1" @@ -2065,36 +2136,36 @@ msgstr "Izvezi preuzete omote" msgid "Export embedded covers" msgstr "Izvezi umetnute omote" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Izvoz završen" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Izvezeno %1 omota od ukupno %2 (%3 preskočena)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2175,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Postepeno utišaj pri pauziranju reprodukcije / postepeno pojačaj pri ponovnom pokretanju reprodukcije" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Utišaj kada se zaustavlja pjesma" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Utišavanje" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Trajanje utišavanja" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" -msgstr "" +msgstr "Nemoguće čitanje CD uređaja" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Neuspjelo dohvaćanje direktorija" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Neuspjelo preuzimanje podcasta" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Neuspjelo učitavanje podcasta" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Neuspjela raščlamba XML-a za ovaj RSS izvor" @@ -2148,11 +2219,11 @@ msgstr "Neuspjela raščlamba XML-a za ovaj RSS izvor" msgid "Fast" msgstr "Brzo" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Omiljeno" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Omiljene pjesme" @@ -2168,19 +2239,19 @@ msgstr "Preuzmi automatski" msgid "Fetch completed" msgstr "Preuzimanje završeno" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Dohvaćanje Subsonic fonoteke" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Greška pri preuzimanju omota" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Format datoteke" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Ekstenzija datoteke" @@ -2188,19 +2259,23 @@ msgstr "Ekstenzija datoteke" msgid "File formats" msgstr "Format datoteke" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Naziv datoteke" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Naziv datoteke (bez putanje)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Naziv datoteke uzorka:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Veličina datoteke" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2285,7 @@ msgstr "Vrsta datoteke" msgid "Filename" msgstr "Naziv datoteke" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Datoteke" @@ -2218,15 +2293,19 @@ msgstr "Datoteke" msgid "Files to transcode" msgstr "Datoteke za enkôdiranje" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Pronađite pjesme u svojoj fonoteci koji se poklapa sa zadanim uvjetom." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Potraži ovog izvođača" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Prepoznavanje pjesme" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Kraj" @@ -2234,7 +2313,7 @@ msgstr "Kraj" msgid "First level" msgstr "Prva razina" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2329,12 @@ msgstr "Zbog razloga licenciranja Spotify-a podrška je u posebnom dodatku." msgid "Force mono encoding" msgstr "Forsiraj mono enkôdiranje" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Zaboravi uređaj" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2349,7 @@ msgstr "Zaboravljanje uređaja uklonit će ga sa ovog popisa i Clementine će mo #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2377,23 @@ msgstr "Broj sličica" msgid "Frames per buffer" msgstr "Okvira po međuspremniku" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Prijatelji" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Smrznt" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Pun Bas" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Pun Bas + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Pun Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer zvučni pogon" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Općenito" @@ -2330,30 +2401,30 @@ msgstr "Općenito" msgid "General settings" msgstr "Opće postavke" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Vrsta glazbe" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Preuzmi URL za dijeljenje ovog Grooveshark popisa izvođenja" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Preuzmi URL za dijeljenje ove Grooveshark pjesme" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Pribavljanje Grooveshark popularnih pjesama" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Pribavljanje kanala" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Pribavljanje streamova" @@ -2365,11 +2436,11 @@ msgstr "Upišite naziv streama:" msgid "Go" msgstr "Idi" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Idi na sljedeću karticu popisa izvođenja" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Idi na prijašnju karticu popisa izvođenja" @@ -2377,7 +2448,7 @@ msgstr "Idi na prijašnju karticu popisa izvođenja" msgid "Google Drive" msgstr "Google Disk" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2458,7 @@ msgstr "Preuzeto %1 omota od %2 (%3 nije preuzeto)" msgid "Grey out non existent songs in my playlists" msgstr "Posivi pjesme kojih nema na popisu izvođenja" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2466,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark greška prijave" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark popis izvođenja je URL" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL Grooveshark pjesmi" @@ -2411,44 +2482,44 @@ msgstr "URL Grooveshark pjesmi" msgid "Group Library by..." msgstr "Grupiraj fonoteku po..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupiraj po" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Grupiraj po Albumu" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Grupiraj po Izvođaču" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Grupiraj po Izvođaču/Albumu" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Grupiraj po Izvođaču/Godini-Albumu" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Grupiraj po Vrsti glazbe/Albumu" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Grupiraj po Vrsti glazbe/Izvođaču/Albumu" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupiranje" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML stranica ne sadrži niti jedan RSS izvor" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "HTTP 3xx status kôd je primljen bez URL-a, potvrdite podešavanje poslužitelja." @@ -2457,7 +2528,7 @@ msgstr "HTTP 3xx status kôd je primljen bez URL-a, potvrdite podešavanje poslu msgid "HTTP proxy" msgstr "HTTP proxy" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Sretan" @@ -2473,25 +2544,25 @@ msgstr "Informacije o hardveru samo su dostupne dok je uređaj spojen" msgid "High" msgstr "Najbrže" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Puno (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Visoka (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Udaljeno računalo nije pronađeno, provjerite URL poslužitelja. Npr. http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Sati" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2503,15 +2574,15 @@ msgstr "Nemam Magnatune račun" msgid "Icon" msgstr "Ikona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikona na vrh" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Prepoznavanje pjesme" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2592,24 @@ msgstr "Ako nastavite, ovaj uređaj će raditi sporo i pjesme kopirane na njega msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Ako vam je poznat URL podcasta, upišite ga ispod i pritisnite Idi." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignoriraj \"The\" u nazivu izvođača" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Za %1 dana" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Za %1 tjedna" @@ -2549,7 +2620,7 @@ msgid "" "time a song finishes." msgstr "U dinamičkom modu nove pjesme će biti izabrane i dodane u popis izvođenja svaki puta kada je pjesma odsvirana." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Pristigle poruke" @@ -2561,135 +2632,135 @@ msgstr "Prikaži omot albuma u obavijesti" msgid "Include all songs" msgstr "Obuhvati sve pjesme" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Nekompatibilna Subsonic REST protokol inačica. Klijent se mora nadograditi." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Nekompatibilna Subsonic REST protokol inačica. Poslužitelj se mora nadograditi." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Nepotpuno podešavanje, pobrinite se da su sva polja popunjena." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Pojačaj glasnoću zvuka za 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Povećaj glanoću zvuka za posto" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Pojačaj glasnoću zvuka" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indeksiranje %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informacije" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Ulazne mogućnosti" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Umetni..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Instaliran" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Provjera integriteta" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internet pružatelji usluga" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Neispravan API ključ" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Neispravan format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Neispravna metoda" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Neispravni parametri" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Neispravan izvor naveden" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Neispravna usluga" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Neispravan ključ sesije" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Neispravno korisničko ime i/ili lozinka" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Obrni odabir" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo najslušanija pjesma" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo top pjesma" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo top pjesma mjeseca" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo top pjesma tjedna" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo baza podataka" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Prebaci na trenutno reproduciranu pjesmu" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Držite tipke za %1 sekundu..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Držite tipke za %1 sekundu..." @@ -2698,11 +2769,12 @@ msgstr "Držite tipke za %1 sekundu..." msgid "Keep running in the background when the window is closed" msgstr "Nastavi izvođenje u pozadini kada je prozor zatvoren" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Zadrži orginalne datoteke" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Mačići" @@ -2710,11 +2782,11 @@ msgstr "Mačići" msgid "Language" msgstr "Jezik" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Slušalice" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Velika dvorana" @@ -2722,12 +2794,16 @@ msgstr "Velika dvorana" msgid "Large album cover" msgstr "Veliki omot albuma" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Velika bočna traka" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Zadnje reproducirano" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Zadnje reproducirano" @@ -2735,45 +2811,7 @@ msgstr "Zadnje reproducirano" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm naručen radio: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm fonoteka - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm mix radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm susjedni radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm radio stanica - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm srodni izvođači u %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm oznaka radio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm je trenutno zauzet, pokušajte ponovno za nekoliko minuta" @@ -2781,11 +2819,11 @@ msgstr "Last.fm je trenutno zauzet, pokušajte ponovno za nekoliko minuta" msgid "Last.fm password" msgstr "Last.fm lozinka" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm broj izvođenja" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm preporuke" @@ -2793,28 +2831,24 @@ msgstr "Last.fm preporuke" msgid "Last.fm username" msgstr "Last.fm korisničko ime" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Najmanje omiljene pjesme" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Ostavite prazno za zadano. Naprimjer: \"/dev/dsp\", \"front\", itd." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Lijevo" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Trajanje" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Fonoteka" @@ -2822,24 +2856,24 @@ msgstr "Fonoteka" msgid "Library advanced grouping" msgstr "Napredno grupiranje fonoteke" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Obavijest o ponovnom pretraživanju fonoteke" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Pretraživanje fonoteke" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Granice" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Slušajte Grooveshark pjesme temeljene na prijašnjim slušanjima" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2851,15 +2885,15 @@ msgstr "Učitaj" msgid "Load cover from URL" msgstr "Učitajte omot sa URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Učitajte omot sa URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Učitaj omot sa diska" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Učitajte omot sa diska..." @@ -2867,84 +2901,89 @@ msgstr "Učitajte omot sa diska..." msgid "Load playlist" msgstr "Otvorite popis izvođenja" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Otvorite popis izvođenja..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Učitaj Last.fm radio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Učitaj MTP uređaj" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Učitaj iPod bazu podataka" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Učitaj pametni popis izvođenja" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Učitavanje pjesama" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Učitaj stream" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Učitavanje pjesama" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Učitavanje informacija o pjesmi" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Učitavanje..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Učitaj Datoteke/URL, zamijeni trenutni popis izvođenja" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Prijava" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Neuspjela prijava" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Odjava" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Profil dugoročnog predviđanja (DP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Sviđa mi se" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Malo (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Niska (256x256)" @@ -2956,12 +2995,17 @@ msgstr "Profil niske složenosti (NS)" msgid "Lyrics" msgstr "Tekstovi pjesama" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Tekstovi pjesama sa %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3017,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2989,7 +3033,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune preuzimanje" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune preuzimanje završeno" @@ -2997,15 +3041,20 @@ msgstr "Magnatune preuzimanje završeno" msgid "Main profile (MAIN)" msgstr "Glavni profil (GLAVNI)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Učinite tako!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Učinite tako!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Učini popis izvođenja dostupnim kada je veza prekinuta" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Neispravan odgovor" @@ -3018,15 +3067,15 @@ msgstr "Ručno proxy podešavanje" msgid "Manually" msgstr "Ručno" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Proizvođač" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Označi kao preslušano" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Označi kao novo" @@ -3038,17 +3087,21 @@ msgstr "Svaki uvjet za pretragu se mora podudarati (AND)" msgid "Match one or more search terms (OR)" msgstr "Jedan ili više uvjeta za pretragu se mora podudarati (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Maksimalno rezultata globalne pretrage" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maksimalna brzina prijenosa" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Srednje (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Srednja (512x512)" @@ -3060,11 +3113,15 @@ msgstr "Vrsta članstva" msgid "Minimum bitrate" msgstr "Minimalna brzina prijenosa" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Minimalan ispun međuspremnika" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Nedostaju projectM predložci" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3072,20 +3129,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Nadziri fonoteku radi promjena" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono reprodukcija" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Mjeseci" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Tonalitet" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Stil trake tonaliteta" @@ -3093,15 +3150,19 @@ msgstr "Stil trake tonaliteta" msgid "Moodbars" msgstr "Traka tonaliteta" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Više" + +#: library/library.cpp:84 msgid "Most played" msgstr "Najviše reproducirano" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Točka montiranja" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Točka montiranja" @@ -3110,7 +3171,7 @@ msgstr "Točka montiranja" msgid "Move down" msgstr "Pomakni dolje" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Premjesti u fonoteku..." @@ -3119,7 +3180,7 @@ msgstr "Premjesti u fonoteku..." msgid "Move up" msgstr "Pomakni gore" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Glazba" @@ -3127,56 +3188,32 @@ msgstr "Glazba" msgid "Music Library" msgstr "Fonoteka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Utišaj" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Moja Last.fm fonoteka" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Moj Last.fm mix radio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Moj Last.fm susjed" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Moj Last.fm preporučeni radio" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Moj mix radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Moja glazba" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Moje susjedstvo" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Moje radio stanice" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Moje preporuke" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Naziv" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Naziv" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Mogućnosti promjene naziva" @@ -3184,23 +3221,19 @@ msgstr "Mogućnosti promjene naziva" msgid "Narrow band (NB)" msgstr "Uskopojasni (UP)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Susjedi" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Mrežni Proxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Mrežno upravljanje" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nikada" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nikada reproducirano" @@ -3209,21 +3242,21 @@ msgstr "Nikada reproducirano" msgid "Never start playing" msgstr "Nikada ne započinji reprodukciju glazbe" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nova mapa" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Novi popis izvođenja" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Novi pametni popis izvođenja" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nove pjesme" @@ -3231,24 +3264,24 @@ msgstr "Nove pjesme" msgid "New tracks will be added automatically." msgstr "Nova pjesma bit će automatski dodana." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Najnovija pjesma" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Sljedeća pjesma" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Sljedeća pjesma" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Sljedeći tjedan" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Bez analizatora" @@ -3256,7 +3289,7 @@ msgstr "Bez analizatora" msgid "No background image" msgstr "Bez slike pozadine" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Nema omota za izvoz." @@ -3264,7 +3297,7 @@ msgstr "Nema omota za izvoz." msgid "No long blocks" msgstr "Bez dugih blokova" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nema pronađenih podudaranja. Ispraznite okvir za pretraživanje da bi se ponovno pokazao popis izvođenja." @@ -3278,11 +3311,11 @@ msgstr "Bez kratkih blokova" msgid "None" msgstr "Ništa" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nijedna od odabranih pjesama nije prikladna za kopiranje na uređaj" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normalan" @@ -3290,43 +3323,47 @@ msgstr "Normalan" msgid "Normal block type" msgstr "Normalna vrsta blokova" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Nije dostupno tijekom korištenja dinamičkog popis izvođenja" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nije spojeno" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nema dovoljno sadržaja" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nema dovoljno obožavatelja" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nema dovoljno članova" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nema dovoljno susjeda" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Nije instaliran" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Niste prijavljeni" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Nije montirano - dva put klikni za montiranje" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Ništa pronađeno" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Vrsta obavijesti" @@ -3339,36 +3376,41 @@ msgstr "Obavijesti" msgid "Now Playing" msgstr "Sada se reproducira" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD Prikaz" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Isključi" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Uključi" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3418,11 @@ msgid "" "192.168.x.x" msgstr "Prihvati samo veze s klijentima unutar IP raspona:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Samo dopusti veze sa lokalne mreže" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Samo prikaži prvi" @@ -3388,23 +3430,23 @@ msgstr "Samo prikaži prvi" msgid "Opacity" msgstr "Zasjenjenost" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Otvori %1 u pregledniku" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Otvorite &glazbeni CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Otvori OPML datoteku" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Otvori OPML datoteku..." @@ -3412,30 +3454,35 @@ msgstr "Otvori OPML datoteku..." msgid "Open device" msgstr "Otvorite uređaj" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Otvorite datoteku..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Otvori u Google Disku" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Otvorite u novom popisu izvođenja" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Otvorite u novom popisu izvođenja" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Otvori u svojem pregledniku" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Otvorite..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Radnja nije izvršena" @@ -3455,23 +3502,23 @@ msgstr "Mogućnosti..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizirajte datoteke" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizirajte datoteke..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organiziranje datoteka" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Orginalne oznake" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Druge mogućnosti" @@ -3479,7 +3526,7 @@ msgstr "Druge mogućnosti" msgid "Output" msgstr "Izlaz" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Izlazni uređaj" @@ -3487,15 +3534,11 @@ msgstr "Izlazni uređaj" msgid "Output options" msgstr "Izlazne mogućnosti" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Izlazni priključak" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Prepiši sve" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Prekopiraj preko postojeće datoteke" @@ -3507,15 +3550,15 @@ msgstr "Prepiši samo manje" msgid "Owner" msgstr "Vlasnik" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Raščlanjivanje Jamendo kataloga" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3567,20 @@ msgstr "Party" msgid "Password" msgstr "Lozinka" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pauziraj reprodukciju" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pauziraj reprodukciju" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Reprodukcija pauzirana" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Izvođač" @@ -3546,34 +3589,22 @@ msgstr "Izvođač" msgid "Pixel" msgstr "Piksela" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Jednostavna bočna traka" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Pokreni reprodukciju" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Reproduciraj izvođača ili oznaku" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Reproduciraj Izvođača radia..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Broj izvođenja" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Reproduciraj ručno odabrani radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Reproduciraj ako se zaustavi, pauziraj ako svira" @@ -3582,45 +3613,42 @@ msgstr "Reproduciraj ako se zaustavi, pauziraj ako svira" msgid "Play if there is nothing already playing" msgstr "Reproduciraj glazbu ako se trenutno ništa ne reproducira" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Reproduciraj odabrani radio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Reproduciraj pjesmu iz popisa izvođenja" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Pokreni reprodukciju/Pauziraj" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Reprodukcija" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Mogućnosti preglednika" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Popis izvođenja" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Popis izvođenja je završen" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Mogućnosti popisa izvođenja" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Vrsta popisa izvođenja" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Popis izvođenja" @@ -3632,23 +3660,23 @@ msgstr "Odaberite vaš preglednik i vratite se u Clementine." msgid "Plugin status:" msgstr "Status dodatka:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasti" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Popularne pjesme" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Popularne pjesme mjeseca" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Danas popularne pjesme" @@ -3657,22 +3685,23 @@ msgid "Popup duration" msgstr "Trajanje skočnog prozora, obavijesti ili ljepšeg OSD-a" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Ulaz" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pred-pojačanje" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Mogućnosti" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Mogućnosti..." @@ -3708,7 +3737,7 @@ msgstr "Pritisni kombinaciju tipka za korištenje" msgid "Press a key" msgstr "Pritisni tipku" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Pritisni kombinaciju tipka za korištenje %1..." @@ -3719,20 +3748,20 @@ msgstr "Mogućnosti ljepšeg OSD-a" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Prikaz" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Prijašnja pjesma" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Prijašnja pjesma" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Ispiši podatke o verziji" @@ -3740,21 +3769,25 @@ msgstr "Ispiši podatke o verziji" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Napredak" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Napredak" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psihodelično" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Pritisni Wiiremote tipku" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Stavi pjesmu u naizmjenični redosljed" @@ -3762,36 +3795,46 @@ msgstr "Stavi pjesmu u naizmjenični redosljed" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kvaliteta" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Tražim uređaj..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Upravljanje odabranim pjesmama za reprodukciju" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Odaberite označenu pjesmu za reprodukciju" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Odaberite pjesmu za reprodukciju" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (jednaka glasnoća za sve pjesme)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio stanice" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Kiša" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Kiša" @@ -3799,48 +3842,48 @@ msgstr "Kiša" msgid "Random visualization" msgstr "Naizmjenična vizualizacija" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Ocjenite trenutnu pjesmu sa 0 zvijezdica" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Ocjenite trenutnu pjesmu sa 1 zvijezdicom" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Ocjenite trenutnu pjesmu sa 2 zvijezdice" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Ocjenite trenutnu pjesmu sa 3 zvijezdice" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Ocjenite trenutnu pjesmu sa 4 zvijezdice" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Ocjenite trenutnu pjesmu sa 5 zvijezdica" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Ocjena" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Stvarno želite prekinuti?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Ograničenje preusmjeravanja je premašeno, potvrdite podešavanje poslužitelja." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Osvježi" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Osvježi katalog" @@ -3848,19 +3891,15 @@ msgstr "Osvježi katalog" msgid "Refresh channels" msgstr "Osvježi kanale" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Osvježi popis prijatelja" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Osvježi popis stanica" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Osvježi streamove" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3872,8 +3911,8 @@ msgstr "Zapamti wiiremote zamah" msgid "Remember from last time" msgstr "Zapamti od prošlog pokretanja" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Uklonite" @@ -3881,7 +3920,7 @@ msgstr "Uklonite" msgid "Remove action" msgstr "Uklonite radnju" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Ukloni duplikate iz popisa izvođenja" @@ -3889,73 +3928,77 @@ msgstr "Ukloni duplikate iz popisa izvođenja" msgid "Remove folder" msgstr "Uklonite mapu" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Ukoni iz Moje glazbe" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Ukloni iz zabilješki" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Ukloni iz omiljenih" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Uklonite iz popisa izvođenja" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Ukloni popis izvođenja" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Ukloni popise izvođenja" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Uklanjanje pjesama iz Moje glazbe" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Uklanjanje pjesama iz omiljenih" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Promijeni naziv \"%1\" popisa izvođenja" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Promijeni naziv Grooveshark popisa izvođenja" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Preimenujte popis izvođenja" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Preimenujte popis izvođenja..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Promjenite redosljed pjesama ovim redosljedom..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Ponovi" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Ponovi album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Ponovi popis izvođenja" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Ponovi pjesmu" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Zamijenite trenutni popis izvođenja" @@ -3964,15 +4007,15 @@ msgstr "Zamijenite trenutni popis izvođenja" msgid "Replace the playlist" msgstr "Zamijenite popis izvođenja" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Zamjeni razmake sa podcrtama" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Ponavljanje pojačanja" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Način pred-pjačanja" @@ -3980,24 +4023,24 @@ msgstr "Način pred-pjačanja" msgid "Repopulate" msgstr "Izmješajte pjesme" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Potreban je kôd autentifikacije" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Poništite" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Poništite broj izvođenja" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Ponovno pokreni pjesmu ili sviraj prijašnju pjesmu unutar 8 sekundi od početka reprodukcije." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Ograniči na ASCII znakove" @@ -4005,15 +4048,15 @@ msgstr "Ograniči na ASCII znakove" msgid "Resume playback on start" msgstr "Nastavi reprodukciju od prošloga pokretanja" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Primanje Grooveshark pjesama Moje glazbe" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Dobivanje Grooveshark omiljenih pjesama" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Dobivanje Grooveshark popisa izvođenja" @@ -4027,17 +4070,17 @@ msgstr "Desno" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Ripaj" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "Ripaj CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." -msgstr "" +msgstr "Ripaj glazbeni CD..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4049,25 +4092,25 @@ msgstr "Pokreni" msgid "SOCKS proxy" msgstr "SOCKS proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Greška SSL sigurnog povezivanja, provjerite podešavanja poslužitelja. SSLv3 mogućnost ispod može zaobići neke probleme." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Sigurno ukloni uređaj" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Sigurno ukloni uređaj nakon kopiranja" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Frekvencija" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Frekvencija" @@ -4075,27 +4118,33 @@ msgstr "Frekvencija" msgid "Save .mood files in your music library" msgstr "Spremi .mood datoteke u vašu fonoteku" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Spremite omot albuma" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Spremite omot na disk..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Preuzmi sliku" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Spremite popis izvođenja" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Spremite popis izvođenja" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Spremite popis izvođenja..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Spremite predložak" @@ -4111,11 +4160,11 @@ msgstr "Spremi statistiku u datoteku oznaka kada je moguće" msgid "Save this stream in the Internet tab" msgstr "Spremite ovaj stream u internet kartici" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Spremanje statistike pjesama u datoteke pjesama" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Spremam pjesme" @@ -4127,7 +4176,7 @@ msgstr "Profil skalabilne brzine uzorkovanja (SBU)" msgid "Scale size" msgstr "Promijeni veličinu" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pogodci" @@ -4135,10 +4184,14 @@ msgstr "Pogodci" msgid "Scrobble tracks that I listen to" msgstr "Scrobblaj pjesmu koju slušam" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Traži" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Traži" @@ -4146,23 +4199,23 @@ msgstr "Traži" msgid "Search Icecast stations" msgstr "Pretražite Icecast stanice" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Icecast Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Pretražite Magnatune stanice" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Subsonic pretraživanje" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Pretraži automatski" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Pretražite omote albuma..." @@ -4182,21 +4235,21 @@ msgstr "Pretraži iTunes" msgid "Search mode" msgstr "Način pretraživanja" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Mogućnosti pretraživanja" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Rezultati pretrage" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Uvjeti pretraživanja" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Pretraživanje Groovesharka" @@ -4204,27 +4257,27 @@ msgstr "Pretraživanje Groovesharka" msgid "Second level" msgstr "Druga razina" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Traži unatrag" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Traži unaprijed" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Traži pjesmu koja se tranutno izvodi po ralativnom broju" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Traži pjesmu koja se tranutno izvodi po apsolutnom položaju" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Odaberi sve" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Odaberi ništa" @@ -4232,7 +4285,7 @@ msgstr "Odaberi ništa" msgid "Select background color:" msgstr "Odaberite boju pozadine:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Odaberite sliku pozadine" @@ -4248,7 +4301,7 @@ msgstr "Odaberite boju slova:" msgid "Select visualizations" msgstr "Odaberite vizualizaciju" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Odaberite vizualizaciju..." @@ -4256,7 +4309,7 @@ msgstr "Odaberite vizualizaciju..." msgid "Select..." msgstr "Odaberi..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Serijski broj" @@ -4268,51 +4321,51 @@ msgstr "URL poslužitelja" msgid "Server details" msgstr "Pojedinosti poslužitelja" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Usluga nedostupna" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Postavite %1 na \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Postavi glasnoću zvuka na posto" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Postavi vrijednosti za sve odabrane pjesme..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Postavke" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Prečac" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Prečac za %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Prečac za %1 već postoji" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Prikaži" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Prikaži OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Prikaži sjajnu animaciju za trenutnu pjesmu" @@ -4340,15 +4393,15 @@ msgstr "Prikažite skočni prozor iz trake sustava" msgid "Show a pretty OSD" msgstr "Prikaži ljepši OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Prikaži iznad statusne trake" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Prikaži sve pjesme" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Prikaži sve pjesme" @@ -4360,32 +4413,36 @@ msgstr "Prikaži omot albuma u fonoteci" msgid "Show dividers" msgstr "Prikaži razdjelnike u stablu fonoteke" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Prikaži u punoj veličini..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Prikaži grupe u rezultatima globalne pretrage" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Prikaži u pregledniku datoteka..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Prikaži u fonoteci..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Prikaži u različitim izvođačima" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Prikaži traku tonaliteta" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Prikaži samo duplicirane pjesme" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Prikaži samo neoznačene pjesme" @@ -4394,8 +4451,8 @@ msgid "Show search suggestions" msgstr "Prikaži prijedloge pretraživanja" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Prikaži \"Sviđa mi se\" i \"Zabrana\" tipku" +msgid "Show the \"love\" button" +msgstr "Prikaži \"Sviđa mi se\" tipku" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4466,27 @@ msgstr "Prikaži ikonu u traci sustava" msgid "Show which sources are enabled and disabled" msgstr "Prikaži omogućene i onemogućene izvore" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Prikaži/Sakrij" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Sviraj naizmjenično" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Sviraj naizmjenično albume" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Sviraj naizmjenično sve" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Izmješajte popis izvođenja" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Sviraj naizmjenično pjesme u ovom albumu" @@ -4445,7 +4502,7 @@ msgstr "Odjavi se" msgid "Signing in..." msgstr "Prijavljivanje..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Srodni izvođači" @@ -4457,43 +4514,51 @@ msgstr "Veličina" msgid "Size:" msgstr "Razlučivost:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Preskoči unatrag u popisu izvođenja" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Preskoči računanje" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Preskoči unaprijed u popisu izvođenja" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Preskoči odabrane pjesme" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Preskoči pjesmu" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Mali omot albuma" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Mala bočna traka" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Pametni popis izvođenja" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Pametni popisi izvođenja" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4501,11 +4566,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informacije o pjesmi" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info pjesme" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4525,15 +4590,23 @@ msgstr "Razvrstaj po vrsti glazbe (po popularnosti)" msgid "Sort by station name" msgstr "Razvrstaj po nazivu stanica" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Razvrstaj popise izvođenja abecednim redosljedom" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Razvrstaj pjesmu po" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Razvrstavanje" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Izvor" @@ -4549,7 +4622,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify greška prijave" @@ -4557,7 +4630,7 @@ msgstr "Spotify greška prijave" msgid "Spotify plugin" msgstr "Spotify dodatak" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify dodatak nije instaliran" @@ -4565,77 +4638,77 @@ msgstr "Spotify dodatak nije instaliran" msgid "Standard" msgstr "Standardno" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Sa zvjezdicom" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "Pokreni ripanje" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Pokrenite popis izvođenja koji se trenutno izvodi" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Započni enkôdiranje" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Počnite tipkati nešto iznad u okvir za pretragu da bi ispunili taj popis rezultata pretraživanja" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Započinjem %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Započinjem..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stanice" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Zaustavi reprodukciju" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Zaustavi nakon" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Zaustavi reprodukciju nakon ove pjesme" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Zaustavi reprodukciju" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Zaustavi reprodukciju nakon trenutne pjesme" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Zaustavi reprodukciju nakon pjesme: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Reprodukcija zaustavljena" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4718,7 @@ msgstr "Streamanje sa Subsonic poslužitelja zahtijeva valjanu licencu poslužit msgid "Streaming membership" msgstr "Streaming račun" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Pretplaćeni popis izvođenja" @@ -4653,7 +4726,7 @@ msgstr "Pretplaćeni popis izvođenja" msgid "Subscribers" msgstr "Pretplatnici" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4661,12 +4734,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Uspješno!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Uspješno zapisano %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Predložene oznake" @@ -4675,13 +4748,13 @@ msgstr "Predložene oznake" msgid "Summary" msgstr "Sažetak" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Super visoko (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super visoka (2048x2048)" @@ -4693,43 +4766,35 @@ msgstr "Podržani formati" msgid "Synchronize statistics to files now" msgstr "Uskaldi statistiku sa datotekama odmah" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Sinkronizacija Spotify ulaznog spremnika" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Sinkroniziranje Spotify popisa izvođenja" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Sinkronizacija Spotify pjesama označenim zvjezdicama" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Boje sustava" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Kartice pri vrhu" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Oznake" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Preuzimanje oznaka" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Označi radio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Ciljana brzina prijenosa" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4737,11 +4802,11 @@ msgstr "Techno" msgid "Text options" msgstr "Mogućnosti teksta" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Zahvaljujemo" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "\"%1\" naredba se ne može pokrenuti." @@ -4750,17 +4815,12 @@ msgstr "\"%1\" naredba se ne može pokrenuti." msgid "The album cover of the currently playing song" msgstr "Omot albuma trenutno reproducirane pjesme" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Direktorij %1 nije valjan" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Popis izvođenja '%1' je prazan ili se ne može očitati." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Druga vrijednost mora biti veća od prve!" @@ -4768,40 +4828,40 @@ msgstr "Druga vrijednost mora biti veća od prve!" msgid "The site you requested does not exist!" msgstr "Stranica koju ste zatražili ne postoji!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Stranica koju ste zatražli nije slika!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Probno razdoblje za Subsonic poslužitelj je završeno. Molim, donirajte za dobivanje ključa licence. Posjetite subsonic.org za više pojedinosti." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Inačica Clementinea koju ste upravo ažurirali zahtjeva ponovnu pretragu cijele fonoteke zbog novih mogućnosti navedenih ispod:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Postoje i druge pjesme u ovom albumu" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Dogodio se problem u komunikaciji sa gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Dogodio se problem u preuzimanju metapodataka iz Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Dogodio se problem pri raščlambi odgovora iz iTunes trgovine" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4873,13 @@ msgid "" "deleted:" msgstr "Dogodio se problem u brisanju nekih pjesama. Sljedeće datoteke ne mogu biti obrisane:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Ove datoteke bit će obrisane sa uređaja, sigurno želite nastaviti?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4899,13 @@ msgstr "Ove postavke se koriste u dijalogu \"Enkôdiranje glazbe\" i kada enkôd msgid "Third level" msgstr "Treća razina" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Ova radnja stvorit će bazu podataka koja može biti velika oko 150 MB.\nŽelite li svejedno nastaviti?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Ovaj album nije dostupan u zadanom formatu" @@ -4859,11 +4919,11 @@ msgstr "Ovaj uređaj mora biti spojen i otvoren prije nego što Clementine vidi msgid "This device supports the following file formats:" msgstr "Uređaj podržava sljedeće formate datoteka:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Uređaj neće raditi ispravno" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Ovo je MTP uređaj, kompajlirali ste Clementine bez libmtp potpore." @@ -4872,7 +4932,7 @@ msgstr "Ovo je MTP uređaj, kompajlirali ste Clementine bez libmtp potpore." msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Ovo je iPod uređaj, kompajlirali ste Clementine bez libgpod potpore." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4942,33 @@ msgstr "Ovo je prvi put da ste spojeni na ovaj uređaj. Clementine će sada pret msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Ova mogućnost se može promijeniti u \"Ponašanje\" osobitostima" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Ovaj stream je samo za pretplaćene korisnike" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Ova vrst uređaja nije podržana: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Naziv" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Za pokretanje Grooveshark radija, Prvo biste trebali poslušati nekoliko drugih Grooveshark pjesama" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Danas" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Uključi/Isključi ljepši OSD" @@ -4916,27 +4976,27 @@ msgstr "Uključi/Isključi ljepši OSD" msgid "Toggle fullscreen" msgstr "Cijelozaslonski prikaz" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Uključi/isključi stanje reda čekanja" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Uključi/Isključi skrobblanje" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Uključi/Isključi vidljivost za ljepši OSD" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Sutra" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Previše preusmjeravanja" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Najpopularnije pjesme" @@ -4944,21 +5004,25 @@ msgstr "Najpopularnije pjesme" msgid "Total albums:" msgstr "Ukupno albuma:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Ukupno preuzeto bajtova" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Ukupno mrežnih zahtjeva" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Broj" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Pjesme" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Enkôdiranje glazbe" @@ -4970,7 +5034,7 @@ msgstr "Log enkôdiranja" msgid "Transcoding" msgstr "Enkôdiranje" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Enkôdiranje %1 datoteka koristeći %2 zadana" @@ -4979,11 +5043,11 @@ msgstr "Enkôdiranje %1 datoteka koristeći %2 zadana" msgid "Transcoding options" msgstr "Mogućnosti enkôdiranja" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4991,72 +5055,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Isključivanje" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(ovi)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One lozinka" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One korisničko ime" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra širokopojasni (UŠP)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Nije moguće preuzeti %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Nepoznato" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Nepoznata vrsta sadržaja" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Nepoznata greška" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Uklonite omot" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Ukloni preskakanje odabrane pjesme" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Ukloni preskakanje pjesme" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Otkažite pretplatu" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Nadolazeći koncerti" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Ažuriranje" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Ažuriraj Grooveshark popis izvođenja" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Ažuriraj sve podcaste" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Ažurirajte promjene u mapi fonoteke" @@ -5064,7 +5128,7 @@ msgstr "Ažurirajte promjene u mapi fonoteke" msgid "Update the library when Clementine starts" msgstr "Ažuriraj fonoteku kada se Clementine pokrene" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Ažuriraj ovaj podcast" @@ -5072,21 +5136,21 @@ msgstr "Ažuriraj ovaj podcast" msgid "Updating" msgstr "Ažuriranje" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Ažuriranje %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Ažuriranje %1..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Ažuriranje fonoteke" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Upotreba" @@ -5094,11 +5158,11 @@ msgstr "Upotreba" msgid "Use Album Artist tag when available" msgstr "Koristi oznaku izvođača albuma kada je dostupna" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Koristi Gnome prečace" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Koristi ponovno dobivene metapodatake ako su dostupni" @@ -5118,7 +5182,7 @@ msgstr "Koristi prilagođene boje" msgid "Use a custom message for notifications" msgstr "Koristi prilagođene poruke za obavijesti" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Koristi mrežni daljinski upravljač" @@ -5158,20 +5222,20 @@ msgstr "Koristi proxy postavke sustava" msgid "Use volume normalisation" msgstr "Koristi normalizaciju glasnoće zvuka" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Iskorišteno" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Korisnik %1 nema Grooveshark Anywhere račun" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Korisničko sučelje" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5257,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Promjenjiva brzina prijenosa" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Razni izvođači" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Inačica %1" @@ -5211,7 +5275,7 @@ msgstr "Pogled" msgid "Visualization mode" msgstr "Način vizualizacije" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Vizualizacija" @@ -5219,11 +5283,15 @@ msgstr "Vizualizacija" msgid "Visualizations Settings" msgstr "Mogućnosti vizualizacije" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Detekcija govorne aktivnosti" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Glasnoća zvuka %1%" @@ -5241,11 +5309,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Upozori me pri zatvaranju kartice popisa izvođenja" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5321,7 @@ msgstr "Wav" msgid "Website" msgstr "Web stranica" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Tjedni" @@ -5279,32 +5347,32 @@ msgstr "Mogli biste još poslušati..." msgid "Wide band (WB)" msgstr "Širokopojasni (ŠP)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Daljinski upravljač %1: aktiviran" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Daljinski upravljač %1: spojen" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Daljinski upravljač %1: baterija kritično (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Daljinski upravljač %1: deaktiviran" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Daljinski upravljač %1: odspojen" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Daljinski upravljač %1: slaba baterija (%2%)" @@ -5325,7 +5393,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5333,25 +5401,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Bez omota:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Želite li preseliti druge pjesme sa ovog albuma u razne izvođače?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Želite li pokrenuti ponovnu potpunu prtetragu odmah?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Zapiši svu statistiku pjesama u datoteke pjesama" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Pogrešno korisničko ime ili lozinka." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5431,11 @@ msgstr "Godina" msgid "Year - Album" msgstr "Godina - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Godine" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Jučer" @@ -5375,13 +5443,13 @@ msgstr "Jučer" msgid "You are about to download the following albums" msgstr "Preuzeti ćete sljedeće albume" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Uklonit ćete %1 popisa izvođenja iz omiljenih, sigurno želite nastaviti?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5459,12 @@ msgstr "Ukloniti ćete popis izvođenja koji nije dio vaših omiljenih popisa iz msgid "You are not signed in." msgstr "Niste prijavljeni." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Prijavljeni ste kao %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Prijavljeni ste." @@ -5404,13 +5472,13 @@ msgstr "Prijavljeni ste." msgid "You can change the way the songs in the library are organised." msgstr "Možete promijeniti način na koji su pjesme organizirane u fonoteci." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Možete slušati besplatno bez računa dok Premium članovi mogu slušati streamove u većoj kvaliteti bez reklama." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5488,6 @@ msgstr "Možete slušati Magnatune pjesme besplatno bez računa. Učlanjenjem uk msgid "You can listen to background streams at the same time as other music." msgstr "Možete slušati streamove u pozadini u isto vrijeme kao i ostalu glazbu." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Možete scrobblat pjesme besplatno, ali samo pretplatnici mogu slušati streamove Last.fm radia iz Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Možete koristiti vaš Wii Daljinski upravljač za daljinsko upravljanje Clementineom. Za više informacija pogledajte Clementine wiki stranicu.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Nemate Grooveshark Anywhere račun." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Nemate Spotify Premium račun." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Nemate aktivnu pretplatu" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Za pretraživanje i slušanje glazbe ne morate biti prijavljeni na SoundCloud. Međutim, ipak se morate prijaviti za pristup vašim popisima izvođenja i streamovima." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Odjavljeni ste iz Spotify-a, ponovno upišite vašu lozinku u mogućnostima." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Odjavljeni ste iz Spotify-a, ponovno upišite vašu lozinku." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Sviđa vam se ova pjesma" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Morate pokrenuti Osbitosti sustava i dopustiti Clementinu da \"upravlja vašim računalom\" za korištenje globalnih prečaca u Clementinu." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5546,11 @@ msgstr "Morate pokrenuti mogućnosti sustava i uključiti ih \"\n" "Language-Team: Hungarian (http://www.transifex.com/projects/p/clementine/language/hu/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,7 +23,7 @@ msgstr "" "Language: hu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -48,9 +48,9 @@ msgstr " napok" msgid " kbps" msgstr " kbit/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -63,11 +63,16 @@ msgstr " pt" msgid " seconds" msgstr " másodperc" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " számok" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -77,12 +82,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 nap" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 nappal ezelőtt" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1, %2" @@ -92,48 +97,48 @@ msgstr "%1, %2" msgid "%1 playlists (%2)" msgstr "%1 lejátszási lista (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 kiválasztva" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 szám" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 szám" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 szám megtalálva" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 szám megtalálva (mutatva %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 szám" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 átküldve" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 hallgató" @@ -147,18 +152,21 @@ msgstr "%L1 összes lejátszás" msgid "%filename%" msgstr "%fájlnév%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n meghiúsult" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n befejezve" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n hátralévő" @@ -170,24 +178,24 @@ msgstr "&Szöveg igazítása" msgid "&Center" msgstr "&Középre" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Egyéni" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Extrák" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Súgó" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&%1 elrejtése" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Elrejtés..." @@ -195,23 +203,23 @@ msgstr "&Elrejtés..." msgid "&Left" msgstr "&Balra" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Zene" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Egyik sem" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Lejátszási lista" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Kilépés" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Ismétlési mód" @@ -219,23 +227,23 @@ msgstr "Ismétlési mód" msgid "&Right" msgstr "&Jobbra" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Véletlenszerű lejátszási mód" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Oszlopszélességek igazítása az ablakhoz" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Eszközök" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(különbözik több számnál)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...és az összes Amarok közreműködő" @@ -255,14 +263,10 @@ msgstr "0px" msgid "1 day" msgstr "1 nap" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 szám" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -272,7 +276,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 véletlen szám" @@ -280,12 +284,6 @@ msgstr "50 véletlen szám" msgid "Upgrade to Premium now" msgstr "Válts Prémiumra most" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -296,6 +294,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -304,38 +313,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

A száminformációk behelyettesítéséhez a címkék % jellel kezdődnek és a megfelelő angol szavak alkotják, pl.: %artist %album %title

\n\n

Ha egy szövegrészt kapcsos zárójelekkel fog közre, akkor az rejtve marad, ha a benne lévő címke helyére nem helyettesíthető semmi.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Grooveshark Anywhere fiók szükséges." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Spotify prémium fiók szükséges" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Az intelligens lejátszási listák dinamikusan jönnek létre a zenetáradból. Többféle ilyen lista létezik, melyek különféle módon nyújtanak lehetőséget a számok rendezésére." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Egy szám fel lesz véve a listára, ha kielégíti az alábbi feltételeket." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -355,36 +364,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "MINDEN DICSŐSÉG A HYPNOTOADÉ!" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "A(z) %1 névjegye" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "A Clementine névjegye" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt névjegye…" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Fiók részletek" @@ -396,11 +404,15 @@ msgstr "Fiók részletek (prémium)" msgid "Action" msgstr "Esemény" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wiiremote aktiválása/deaktiválása" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Podcast hozzáadása" @@ -416,39 +428,39 @@ msgstr "Sortörés hozzáadása ha az értesítés támogatja" msgid "Add action" msgstr "Esemény felvétele" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Új adatfolyam hozzáadása" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Mappa hozzáadása" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Új fájl" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Fájl hozzáadása" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Fájlok felvétele átkódoláshoz" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Mappa hozzáadása" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Mappa hozzáadása..." @@ -460,11 +472,11 @@ msgstr "Új mappa hozzáadása…" msgid "Add podcast" msgstr "Podcast hozzáadása" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Podcast hozzáadása..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Keresési feltétel megadása" @@ -528,6 +540,10 @@ msgstr "Számkihagyás számláló hozzáadása" msgid "Add song title tag" msgstr "Számcím címke hozzáadása" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Szám sorszámának hozzáadása" @@ -536,22 +552,34 @@ msgstr "Szám sorszámának hozzáadása" msgid "Add song year tag" msgstr "Szám évének hozzáadása" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Adatfolyam hozzáadása…" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Hozzáadás a Grooveshark kedvencekhez" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Hozzáadás a Grooveshark lejátszólistákhoz" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Hozzáadás másik lejátszási listához" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Hozzáadás a lejátszási listához" @@ -560,6 +588,10 @@ msgstr "Hozzáadás a lejátszási listához" msgid "Add to the queue" msgstr "Sorbaállít" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Wiimotedev esemény hozzáadása" @@ -589,15 +621,15 @@ msgstr "Hozzáadva ma" msgid "Added within three months" msgstr "Hozzáadva három hónapon belül" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Számok hozzáadása a Zenéimhez" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Számok hozzáadása a kedvencekhez" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Egyedi csoportosítás…" @@ -605,12 +637,12 @@ msgstr "Egyedi csoportosítás…" msgid "After " msgstr "Utána" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Másolás után…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -618,11 +650,11 @@ msgstr "Másolás után…" msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideális hangerő minden számhoz)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -632,35 +664,36 @@ msgstr "Album-előadó" msgid "Album cover" msgstr "Albumborító" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Album információ a jamendo.com-ról…" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumok borítóval" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumok bórító nélkül" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Minden fájl (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Minden Dicsőség a Hypnotoadnak!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Minden album" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Minden előadó" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Minden fájl (*)" @@ -669,19 +702,19 @@ msgstr "Minden fájl (*)" msgid "All playlists (%1)" msgstr "Minden lejátszási lista (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Minden fordító" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Minden szám" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Letöltések engedélyezése" @@ -706,30 +739,30 @@ msgstr "Mindig mutassa a főablakot" msgid "Always start playing" msgstr "Mindig indítja a lejátszást" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "A Spotify használatához külön beépülő szükséges. Szeretnéd most letölteni és telepíteni?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Hiba történt az iTunes adatbázis betöltése közben" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Hiba történt '%1' metaadatainak írása közben" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "És:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Mérges" @@ -738,13 +771,13 @@ msgstr "Mérges" msgid "Appearance" msgstr "Megjelenés" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Fájlok/URL-ek hozzáadása a lejátszási listához" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Hozzáfűz az aktuális listához" @@ -752,52 +785,47 @@ msgstr "Hozzáfűz az aktuális listához" msgid "Append to the playlist" msgstr "Hozzáadja a lejátszási listához" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Tömörítés engedélyezése a túlvezérlés elkerülése érdekében" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Biztos benne, hogy törli a \"%1\" beállítást?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Biztosan törölni szeretnéd ezt a lejátszási listát?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Biztos vagy benne, hogy visszaállítod ennek a számnak a statisztikáit?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Előadó" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Előadó infó" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Előadó rádió" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Előadó címkék" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Előadó kezdése" @@ -805,9 +833,13 @@ msgstr "Előadó kezdése" msgid "Audio format" msgstr "Hang formátum" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "A hitelesítés meghiúsult" @@ -815,7 +847,7 @@ msgstr "A hitelesítés meghiúsult" msgid "Author" msgstr "Szerző" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Szerzők" @@ -831,7 +863,7 @@ msgstr "Automatikus frissítés" msgid "Automatically open single categories in the library tree" msgstr "Egyelemű kategóriák automatikus listázása a zenetárban" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Elérhető" @@ -839,15 +871,15 @@ msgstr "Elérhető" msgid "Average bitrate" msgstr "Átlagos bitráta" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Átlagos képméret" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC podcastok" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +900,7 @@ msgstr "Háttérkép" msgid "Background opacity" msgstr "Háttér áttetszősége" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Adatbázis biztonsági mentése" @@ -876,11 +908,7 @@ msgstr "Adatbázis biztonsági mentése" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Tiltás" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Oszlop" @@ -900,18 +928,17 @@ msgstr "Viselkedés" msgid "Best" msgstr "Legjobb" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Életrajz innen: %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitráta" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -919,7 +946,12 @@ msgstr "Bitráta" msgid "Bitrate" msgstr "Bitráta" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blokk" @@ -935,7 +967,7 @@ msgstr "" msgid "Body" msgstr "Törzs" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Fellendülés" @@ -949,11 +981,11 @@ msgstr "" msgid "Browse..." msgstr "Tallózás…" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Pufferelés" @@ -965,43 +997,66 @@ msgstr "De ezek a források le vannak tiltva:" msgid "Buttons" msgstr "Gombok" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE fájl támogatás" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Mégsem" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Albumborító módosítása" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Betűméret megváltoztatása..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Ismétlési mód megváltoztatása" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Billentyűparancs módosítása..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Véletlenszerű lejátszási mód megváltoztatása" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Nyelv váltása" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1011,15 +1066,19 @@ msgstr "A mono lejátszás bekapcsolása csak a következő zeneszámnál lesz msgid "Check for new episodes" msgstr "Új epizódok keresése" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Frissítés keresése..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Válassz egy nevet az intelligens lejátszási listádnak" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Automatikus választás" @@ -1035,11 +1094,11 @@ msgstr "Betűtípus választása..." msgid "Choose from the list" msgstr "Választás a listáról" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Válaszd ki, hogy a lejátszási lista hogyan legyen rendezve és hány számot tartalmazzon." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Válassza ki podcastok letöltési helyét" @@ -1048,7 +1107,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Válaszd ki a weboldalakat, amelyekről a Clementine dalszövegeket kereshet." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasszikus" @@ -1056,17 +1115,17 @@ msgstr "Klasszikus" msgid "Cleaning up" msgstr "Tisztítás" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Kiürít" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Lejátszási lista űrítése" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1079,8 +1138,8 @@ msgstr "Clementine hiba" msgid "Clementine Orange" msgstr "Clementine Narancs" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine Megjelenítés" @@ -1102,9 +1161,9 @@ msgstr "A Clementine képes lejátszani a számait amit ön feltöltött a Dropb msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "A Clementine képes lejátszani a számait amit ön feltöltött a Google Drive-ba" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "A Clementine képes lejátszani a számait amit ön feltöltött az Ubuntu One-ba" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1117,20 +1176,13 @@ msgid "" "an account." msgstr "A Clementine képes szinkronizálni feliratkozásait más számítógépekkel és podcast alkalmazásokkal. Készítsen egy felhasználót." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "A Clementine egy projectM megjelenítést sem tud betölteni. Ellenőrizze, hogy megfelelően telepítette a Clementinet." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "A Clementine nem tudja frissíteni a fiókodhoz tartozó információkat, mert problémák adódtak az kapcsolatban. A lejátszott számokhoz tartozó információk mentve lesznek és később küldésre kerülnek a Last.fm-hez." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine képmegjelenítő" @@ -1142,11 +1194,11 @@ msgstr "Nincsenek találatok ehhez a fájlhoz" msgid "Clementine will find music in:" msgstr "A Clementine ezen források között fog zenéket keresni:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Zene felvételéhez kattintson ide" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1156,7 +1208,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Kattintásra vált a hátralévő és a teljes idő kijelzése között" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1171,19 +1226,19 @@ msgstr "Bezár" msgid "Close playlist" msgstr "Lejátszólista bezárása" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Megjelenítés bezárása" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Ezen ablak bezárása megszakítja a letöltést." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Ezen ablak bezárása megszakítja az albumborítók keresését." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1191,73 +1246,78 @@ msgstr "Club" msgid "Colors" msgstr "Színek" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Vesszővel tagolt lista az osztály:szint pároknak, a szintek 0-3 értékeket vehetnek fel" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Megjegyzés" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Címkék automatikus kiegészítése" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Címkék automatikus kiegészítése" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Zeneszerző" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "%1 beállítása..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Grooveshark beállítás..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm beállítása" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Magnatune beállítása..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Billentyűkombinációk beállítása" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Spotify beállítása..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Globális keresés beállítása..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Zenetár beállítása..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Podcastok beállítása…" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Beállítás..." @@ -1265,11 +1325,11 @@ msgstr "Beállítás..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Wii távvezérlő csatlakoztatása az aktiválás/deaktiválás esemény használatával" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Eszköz csatlakoztatása" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Csatlakozás a Spotifyhoz" @@ -1279,12 +1339,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konzol" @@ -1300,17 +1364,21 @@ msgstr "Minden szám tömörítése" msgid "Convert any music that the device can't play" msgstr "Az eszköz által nem támogatott számok konvertálása" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Másolás vágólapra" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Másolás eszközre..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Másolás a zenetárba..." @@ -1318,156 +1386,152 @@ msgstr "Másolás a zenetárba..." msgid "Copyright" msgstr "Szerzői jog" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nem hozható létre a \"%1\" GStreamer objektum. Ellenőrizze, hogy telepített minden szükséges GStreamer modult." -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 kódolásához nem található muxer, ellenőrizze, hogy telepítve van-e a megfelelő GStreamer beépülő" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Nem található megfelelő kódoló %1 tömörítéséhez. Ellenőrizze, hogy a GStreamer beépülők megfelelően vannak-e telepítve" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Nem sikerült betölteni a Last.fm rádióállomást" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "A %1 célfájl megnyitása sikertelen" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Borítókezelő" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Albumborító a beágyazott képből" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Az albumborítót %1 helyről automatikusan betölti" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Az albumborító manuálisan eltávolítva" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Albumborító nincs beállítva" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Albumborító beállítva %1 helyről" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Borítók %1 helyről" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Új Grooveshark lejátszólista létrehozása" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Átúsztatás használata számok automatikus váltásánál" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Átúsztatás használata számok manuális váltásánál" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1475,7 +1539,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Egyéni" @@ -1487,54 +1551,50 @@ msgstr "Egyéni kép:" msgid "Custom message settings" msgstr "Egyedi üzenetbeállítások" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Egyéni rádió" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Egyéni..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus elérési útvonal" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Adatbázis sérülés található. Kérjük olvassa el a https://code.google.com/p/clementine-player/wiki/DatabaseCorruption honlapot további információkért, hogy hogyan állítsa vissza adatbázisát." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Létrehozás dátuma" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Módosítás dátuma" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Nap" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&alapértelmezés" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Hangerő csökkentése 4%-kal" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Hangerő csökkentése" @@ -1542,6 +1602,11 @@ msgstr "Hangerő csökkentése" msgid "Default background image" msgstr "Alapértelmezett háttérkép" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Alapértelmezések" @@ -1550,30 +1615,30 @@ msgstr "Alapértelmezések" msgid "Delay between visualizations" msgstr "Megjelenítések között váltás ideje" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Törlés" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Grooveshark lejátszólista törlése" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Letöltött adatok törlése" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Fájlok törlése" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Törlés az eszközről..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Törlés a lemezről..." @@ -1581,31 +1646,31 @@ msgstr "Törlés a lemezről..." msgid "Delete played episodes" msgstr "Lejátszott epizódok törlése" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Beállítás törlése" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Intelligens lejátszási lista törlése" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Az eredeti fájlok törlése" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Fájlok törlése" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Kiválasztott számok törlése a sorból" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Szám törlése a sorból" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Cél" @@ -1614,7 +1679,7 @@ msgstr "Cél" msgid "Details..." msgstr "Részletek…" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Eszköz" @@ -1626,15 +1691,15 @@ msgstr "Eszköztulajdonságok" msgid "Device name" msgstr "Eszköznév" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Eszköztulajdonságok..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Eszközök" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1671,12 +1736,17 @@ msgstr "Időtartam letiltása" msgid "Disable moodbar generation" msgstr "Hangulatsáv generáció letiltása" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Tiltva" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Lemez" @@ -1686,15 +1756,15 @@ msgid "Discontinuous transmission" msgstr "Szakaszos átvitel" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Beállítások megtekintése" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "OSD mutatása" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Teljes zenetár újraolvasása" @@ -1706,27 +1776,27 @@ msgstr "Ne konvertáljon egy számot sem" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ne ismételjen" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Ne mutassa a különböző előadók között" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ne keverje össze" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ne álljon meg!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dupla kattintás a megnyitáshoz" @@ -1734,12 +1804,13 @@ msgstr "Dupla kattintás a megnyitáshoz" msgid "Double clicking a song will..." msgstr "Dupla kattintásra egy számon..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "%n epizód letöltése" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Letöltési mappa" @@ -1755,7 +1826,7 @@ msgstr "Tagsági információk betöltése" msgid "Download new episodes automatically" msgstr "Új epizódok automatikus letöltése" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Letöltés sorba állítva" @@ -1763,15 +1834,15 @@ msgstr "Letöltés sorba állítva" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Album letöltése" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Album letöltése..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Epizód letöltése" @@ -1779,7 +1850,7 @@ msgstr "Epizód letöltése" msgid "Download..." msgstr "Letöltés…" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Letöltés (%1%)..." @@ -1788,23 +1859,23 @@ msgstr "Letöltés (%1%)..." msgid "Downloading Icecast directory" msgstr "Icecast könyvtár letöltése" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Jamendo katalógus letöltése" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Magnatune katalógus letöltése" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Spotify beépülő letöltése" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Metaadat letöltése" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Fogja meg az áthelyezéshez" @@ -1824,20 +1895,20 @@ msgstr "Időtartam" msgid "Dynamic mode is on" msgstr "Dinamikus mód bekapcsolva" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dinamikus véletlenszerű mix" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Intelligens lejátszási lista szerkesztése..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Címke módosítása..." @@ -1849,16 +1920,16 @@ msgstr "Címkék szerkesztése" msgid "Edit track information" msgstr "Száminformációk szerkesztése" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Száminformációk szerkesztése..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Száminformációk szerkesztése" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Szerkesztés..." @@ -1866,6 +1937,10 @@ msgstr "Szerkesztés..." msgid "Enable Wii Remote support" msgstr "Wii távvezérlő támogatás engedélyezése" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Hangszínszabályzó engedélyezése" @@ -1880,7 +1955,7 @@ msgid "" "displayed in this order." msgstr "Engedélyezze a forrásokat, hogy bevegye őket a keresési eredmények közé. Az eredmények ebben a sorrendben fognak megjelenni." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Last.fm scrobbling engedélyezése/tiltása" @@ -1908,15 +1983,10 @@ msgstr "Albumborító letöltése az alábbi URL-ről:" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Adjon meg új nevet ennek a lejátszási listának" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Adjon meg egy előadót vagy címkét, hogy Last.fm rádiót hallgathasson." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1930,7 +2000,7 @@ msgstr "Adjon meg egy keresési kifejezést podcastok kereséséhez az iTunes St msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Adjon meg egy keresési kifejezést podcastok kereséséhez a gpodder.neten" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Adja meg a keresési kifejezést" @@ -1939,11 +2009,11 @@ msgstr "Adja meg a keresési kifejezést" msgid "Enter the URL of an internet radio stream:" msgstr "Adja meg egy rádió adatfolyam URL címét:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Adja meg a mappa nevét" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1951,21 +2021,22 @@ msgstr "" msgid "Entire collection" msgstr "A teljes kollekció" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Hangszínszabályzó" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Megegyezik a --log-levels *:1 kapcsolóval" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Megegyezik a --log-levels *:3 kapcsolóval" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Hiba" @@ -1973,38 +2044,38 @@ msgstr "Hiba" msgid "Error connecting MTP device" msgstr "Hiba történt az MTP eszközhöz való csatlakozás közben" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Hiba történt a számok másolása közben" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Hiba történt a számok törlése közben" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Hiba a Spotify beépülő letöltése közben" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Hiba %1 betöltésekor" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Hiba a di.fm lejátszólista letöltésekor" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Hiba %1: %2 feldolgozásakor" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Hiba az hang CD betöltése közben" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Valaha játszott" @@ -2036,7 +2107,7 @@ msgstr "Minden 6. órában" msgid "Every hour" msgstr "Minden órában" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Kivéve az azonos albumon vagy azonos CUE fájlban lévő számok között" @@ -2048,7 +2119,7 @@ msgstr "Meglévő borítók" msgid "Expand" msgstr "Kibontás" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Lejár ekkor: %1" @@ -2069,36 +2140,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2108,42 +2179,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Elhalkulás szám megállításakor" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Elhalkulás" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Elhalkulás hossza" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "A mappa lekérése meghiúsult" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Nem sikerült letölteni a podcastot" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Nem sikerült betölteni a podcastot" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Nem sikerült feldolgozni az XML fájlt ehhez az RSS hírforráshoz" @@ -2152,11 +2223,11 @@ msgstr "Nem sikerült feldolgozni az XML fájlt ehhez az RSS hírforráshoz" msgid "Fast" msgstr "Gyors" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Kedvencek" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Kedvenc számok" @@ -2172,11 +2243,11 @@ msgstr "Letöltés automatikusan" msgid "Fetch completed" msgstr "Letöltés sikeres" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Hiba a borító betöltése közben" @@ -2184,7 +2255,7 @@ msgstr "Hiba a borító betöltése közben" msgid "File Format" msgstr "Fájl formátum" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Fájlkiterjesztés" @@ -2192,19 +2263,23 @@ msgstr "Fájlkiterjesztés" msgid "File formats" msgstr "Fájl formátumok" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Fájlnév" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Fájlnév (útvonal nélkül)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Fájlméret" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2214,7 +2289,7 @@ msgstr "Fájltípus" msgid "Filename" msgstr "Fájlnév" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fájlok" @@ -2222,15 +2297,19 @@ msgstr "Fájlok" msgid "Files to transcode" msgstr "Átkódolandó fájlok" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Azon számok megkeresése, melyek kielégítik az általad megadott feltételeket." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Ujjlenyomat generálása a számhoz" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Befejez" @@ -2238,7 +2317,7 @@ msgstr "Befejez" msgid "First level" msgstr "Első szinten" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2254,12 +2333,12 @@ msgstr "Licencelési okok miatt a Spotify támogatást külön beépülőben kel msgid "Force mono encoding" msgstr "Mono kódolás kényszerítése" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Eszköz elfelejtése" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2274,7 +2353,7 @@ msgstr "Egy eszköz elfelejtésekor a Clementine törli erről a listáról és #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2302,31 +2381,23 @@ msgstr "Frissítési gyakoriság" msgid "Frames per buffer" msgstr "Képkockák pufferenként" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Barátok" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Fagyos" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Teljes basszus" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Teljes basszus + Magas" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Teljes magas" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer hang meghajtó" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Általános" @@ -2334,30 +2405,30 @@ msgstr "Általános" msgid "General settings" msgstr "Általános beállítások" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Műfaj" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "URL lekérése ezen Grooveshark lejátszási lista megosztásához" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "URL lekérése ezen Grooveshark lejátszási lista megosztásához" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Grooveshark népszerű számok beszerezése" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Csatornák betöltése" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Adatfolyamok lekérése" @@ -2369,11 +2440,11 @@ msgstr "Adjon meg egy nevet:" msgid "Go" msgstr "Ugrás" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Váltás a következő lejátszási lista lapra" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Váltás az előző lejátszási lista lapra" @@ -2381,7 +2452,7 @@ msgstr "Váltás az előző lejátszási lista lapra" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2391,7 +2462,7 @@ msgstr "%1 borító a %2-ból/ből letöltve (%3 sikertelen)" msgid "Grey out non existent songs in my playlists" msgstr "Nem létező számok szürke színnel jelölése a lejátszási listákon" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2399,15 +2470,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark belépési hiba" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark lejátszási lista URL-je" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark rádió" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark szám URL-je" @@ -2415,44 +2486,44 @@ msgstr "Grooveshark szám URL-je" msgid "Group Library by..." msgstr "Zenetár csoportosítása..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Csoportosítás" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Album szerint" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Előadó szerint" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Előadó/Album szerint" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Előadó/Év - Album szerint" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Műfaj/Album szerint" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Műfaj/Előadó/Album szerint" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "A HTML oldal nem tartalmaz RSS forrást" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2461,7 +2532,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP proxy" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Boldog" @@ -2477,25 +2548,25 @@ msgstr "A hardverjellemzők csak csatlakoztatott eszköz esetén tekinthetők me msgid "High" msgstr "Magas" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Magas (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Magas (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Óra" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2507,15 +2578,15 @@ msgstr "Nincs Magnatune fiókom" msgid "Icon" msgstr "Ikon" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikonok felül" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Zeneszám azonosítása" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2525,24 +2596,24 @@ msgstr "Ha folytatja, az eszköz lassan fog működni és a rá másolt számok msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Ha tudja a podcast URL-jét, akkor írja be és nyomja meg az Ugrás gombot." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "A \"The\" mellőzése előadó nevekben" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Képek (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Képek (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "%1 napon belül" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 héten belül" @@ -2553,7 +2624,7 @@ msgid "" "time a song finishes." msgstr "Dinamikus módban új számok lesznek kiválasztva és hozzáadva a lejátszási listához, amikor egy zeneszám véget ér." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Beérkezett üzenetek" @@ -2565,36 +2636,36 @@ msgstr "Albumborító megjelenítése az értesítésben" msgid "Include all songs" msgstr "Vegyen bele minden számot" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Hangerő növelése 4%-kal" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Hangerő növelése" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "%1 indexelése" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Információ" @@ -2602,55 +2673,55 @@ msgstr "Információ" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Beszúrás..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Telepítve" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Integritás ellenőrzése" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internet szolgáltatók" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Érvénytelen API kulcs" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Érvénytelen formátum" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Érvénytelen eljárás" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Érvénytelen paraméterek" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Hibás eszközspecifikáció" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Érvénytelen szolgáltatás" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Érvénytelen munkafolyamat kulcs" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Érvénytelen felhasználói név és/vagy jelszó" @@ -2658,42 +2729,42 @@ msgstr "Érvénytelen felhasználói név és/vagy jelszó" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Legtöbbet hallgatott számok a Jamendon" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Legnépszerűbb számok a Jamendon" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "A hónap legnépszerűbb számai a Jamedon" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "A Jamendo legnépszerűbb számai a héten" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo adatbázis" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Ugrás a most lejátszott számra" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Tartsa nyomva a gombokat %1 másodpercig" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Tartsa nyomva a gombokat %1 másodpercig" @@ -2702,23 +2773,24 @@ msgstr "Tartsa nyomva a gombokat %1 másodpercig" msgid "Keep running in the background when the window is closed" msgstr "Futás a háttérben bezárt ablak esetén is" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Eredeti fájlok megőrzése" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Kismacskák" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Nyelv" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Fejhallgató" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Nagy terem" @@ -2726,58 +2798,24 @@ msgstr "Nagy terem" msgid "Large album cover" msgstr "Nagy albumborító" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Nagy oldalsáv" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Utoljára lejátszva" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm Egyéni Rádió: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Zenetár - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Mix Rádió - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Szomszédos Rádió - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Rádió Állomás - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm Hasonló Előadók - %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm Címke Rádió: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "A Last.fm nem elérhető, kérlek próbáld később" @@ -2785,11 +2823,11 @@ msgstr "A Last.fm nem elérhető, kérlek próbáld később" msgid "Last.fm password" msgstr "Last.fm jelszó" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm lejátszás számláló" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm címkék" @@ -2797,28 +2835,24 @@ msgstr "Last.fm címkék" msgid "Last.fm username" msgstr "Last.fm felhasználói név" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Legkevésbé kedvelt számok" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Hagyja üresen az alapértelmezéshez. Példák: \"/dev/dsp\", \"front\", stb." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Balra" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Időtartam" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Zenetár" @@ -2826,24 +2860,24 @@ msgstr "Zenetár" msgid "Library advanced grouping" msgstr "Zenetár egyedi csoportosítása" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Zenetár újraolvasási figyelmeztetés" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Keresés a zenetárban" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Szűrések" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Grooveshark zenék hallgatása, az előzőleg hallgatott zeneszámok alapján" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Élő" @@ -2855,15 +2889,15 @@ msgstr "Betöltés" msgid "Load cover from URL" msgstr "Borító letöltése URL-ről" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Borító letöltése URL-ről..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Borító betöltése lemezről" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Borító betöltése lemezről..." @@ -2871,84 +2905,89 @@ msgstr "Borító betöltése lemezről..." msgid "Load playlist" msgstr "Lejátszási lista betöltése" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Lejátszási lista betöltése..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm rádió betöltése" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "MTP eszköz beolvasása" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod adatbázis betöltése" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Inteligens lejátszási lista betöltése" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Számok betöltése" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Adatfolyam betöltése" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Számok betöltése" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Szám információk betöltése" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Töltés..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Fájlok/URL-ek betöltése, lejátszási lista cseréje" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Bejelentkezés" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Sikertelen bejelentkezés" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Hosszú távú előrejelzésen alapuló profil (LTP" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Kedvenc" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Alacsony (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Alacsony (256x256)" @@ -2960,12 +2999,17 @@ msgstr "Alacsony komplexitású profil (LC)" msgid "Lyrics" msgstr "Dalszövegek" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "%1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2977,15 +3021,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2993,7 +3037,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune Letöltés" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Letöltés a Magnatuneról befejezve" @@ -3001,15 +3045,20 @@ msgstr "Letöltés a Magnatuneról befejezve" msgid "Main profile (MAIN)" msgstr "Fő profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Lejátszólista elérhetővé tétele offline módban is" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Hibásan formázott válasz" @@ -3022,15 +3071,15 @@ msgstr "Kézi proxybeállítás" msgid "Manually" msgstr "Manuálisan" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Gyártó" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Megjelölés meghallgatottként" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Megjelölés újként" @@ -3042,17 +3091,21 @@ msgstr "Illeszkedés minden keresési feltételre (ÉS)" msgid "Match one or more search terms (OR)" msgstr "Illeszkedés legalább egy keresési feltételre (VAGY)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maximális bitráta" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Közepes (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Közepes (512x512)" @@ -3064,11 +3117,15 @@ msgstr "Tagság típusa" msgid "Minimum bitrate" msgstr "Minimális bitráta" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Hiányzó projectM beállítások" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modell" @@ -3076,20 +3133,20 @@ msgstr "Modell" msgid "Monitor the library for changes" msgstr "Zenetár figyelése változások után" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono lejátszás" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Hónap" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Hangulat" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Hangulatsáv stílus" @@ -3097,15 +3154,19 @@ msgstr "Hangulatsáv stílus" msgid "Moodbars" msgstr "Hangulatsávok" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Gyakran játszott" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Csatolási pont" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Csatolási pontok" @@ -3114,7 +3175,7 @@ msgstr "Csatolási pontok" msgid "Move down" msgstr "Mozgatás lefelé" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Áthelyezés a zenetárba..." @@ -3123,7 +3184,7 @@ msgstr "Áthelyezés a zenetárba..." msgid "Move up" msgstr "Mozgatás felfelé" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Zene" @@ -3131,56 +3192,32 @@ msgstr "Zene" msgid "Music Library" msgstr "Zenetár" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Némítás" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "A Last.fm zenetáram" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "A Last.fm mix rádióm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "A Last.fm szomszédaim" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "A Last.fm ajánlott rádióm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Az én mixem rádió" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Zenéim" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Szomszédaim" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "A rádióadóm" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Ajánlásaim" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Név" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Elnevezési opciók" @@ -3188,23 +3225,19 @@ msgstr "Elnevezési opciók" msgid "Narrow band (NB)" msgstr "Keskenysávú (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Szomszédok" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Hálózati Proxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Soha" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Sohasem játszott" @@ -3213,21 +3246,21 @@ msgstr "Sohasem játszott" msgid "Never start playing" msgstr "Soha ne indítsa el a lejátszást" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Új mappa" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Új lejátszási lista" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Új intelligens lejátszási lista..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Új számok" @@ -3235,24 +3268,24 @@ msgstr "Új számok" msgid "New tracks will be added automatically." msgstr "Az új számok automatikusan fel lesznek véve." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Legújabb számok" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Következő" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Következő szám" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Következő héten" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Kikapcsolva" @@ -3260,7 +3293,7 @@ msgstr "Kikapcsolva" msgid "No background image" msgstr "Nincs háttérkép" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3268,7 +3301,7 @@ msgstr "" msgid "No long blocks" msgstr "Hosszú blokkok nélkül" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nincs egyezés. Törölje a keresési feltételeket, hogy újra lássa a teljes lejátszási listát." @@ -3282,11 +3315,11 @@ msgstr "Rövid blokkok nélkül" msgid "None" msgstr "Egyik sem" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Egy kiválasztott szám sem alkalmas az eszközre való másoláshoz" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normális" @@ -3294,43 +3327,47 @@ msgstr "Normális" msgid "Normal block type" msgstr "Normál blokkok" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Nem elérhető dinamikus lejátszási lista használatakor" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nincs kapcsolat" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nincs elég tartalom" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nincs elég rajongó" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nincs elég tag" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nincs elég szomszédja" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Nincs telepítve" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Nem vagy bejelentkezve" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Nincs csatolva - kattintson duplán a csatoláshoz" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Értesítés módja" @@ -3343,36 +3380,41 @@ msgstr "Értesítések" msgid "Now Playing" msgstr "Most játszott" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD Előnézet" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "OGG FLAC" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3380,11 +3422,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Csak a legelsőt mutassa" @@ -3392,23 +3434,23 @@ msgstr "Csak a legelsőt mutassa" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "%1 megnyitása a böngészőben" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "&Hang CD megnyitása..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "OPML-fájl megnyitása" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "OPML-fájl megnyitása..." @@ -3416,30 +3458,35 @@ msgstr "OPML-fájl megnyitása..." msgid "Open device" msgstr "Eszköz megnyitása" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Fájl megnyitása..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Google Drive megnyitása" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Megnyitás új lejátszási listán" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Megnyitás böngészőben" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Megnyitás..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "A művelet sikertelen" @@ -3459,23 +3506,23 @@ msgstr "Beállítások..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Fájlok rendezése" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Fájlok rendezése..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Fájlok rendezés alatt" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Eredeti címkék" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Egyéb beállítások" @@ -3483,7 +3530,7 @@ msgstr "Egyéb beállítások" msgid "Output" msgstr "Kimenet" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3491,15 +3538,11 @@ msgstr "" msgid "Output options" msgstr "Kimenet beállításai" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Létező fájlok felülírása" @@ -3511,15 +3554,15 @@ msgstr "" msgid "Owner" msgstr "Tulajdonos" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Jamendo katalógus feldolgozása" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3528,20 +3571,20 @@ msgstr "Party" msgid "Password" msgstr "Jelszó" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Szünet" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Lejátszás szüneteltetése" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Szüneteltetve" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3550,34 +3593,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Egyszerű oldalsáv" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Lejátszás" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Előadó vagy Címke lejátszása" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Előadó rádió lejátszása" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Lejátszások száma" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Egyéni rádió lejátszása..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Lejátszás, ha le van állítva, különben szünet" @@ -3586,45 +3617,42 @@ msgstr "Lejátszás, ha le van állítva, különben szünet" msgid "Play if there is nothing already playing" msgstr "Lejátszás, ha nincs lejátszás folyamatban" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Címke rádió lejátszása..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "A(z) . szám lejátszása a listában" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Lejátszás/Szünet" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Lejátszás" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Lejátszó beállítások" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lejátszási lista" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "A lejátszási lista befejezve" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Lejátszási lista beállítások" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Lejátszási lista típus" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Lejátszási lista" @@ -3636,23 +3664,23 @@ msgstr "Zárja be a böngészőjét, és térjen vissza a Clementine-be" msgid "Plugin status:" msgstr "Beépülő állapot:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcastok" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Népszerű dalok" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "A hónap népszerű számai" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "A nap népszerű számai" @@ -3661,22 +3689,23 @@ msgid "Popup duration" msgstr "Értesítés időtartama" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Előerősítő" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Beállítások" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Beállítások..." @@ -3712,7 +3741,7 @@ msgstr "Nyomja meg a használni kívánt billentyűkombinációt" msgid "Press a key" msgstr "Nyomjon meg egy billentyűt" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Nyomjon meg egy billentyű kombinációt a %1 használatához..." @@ -3723,20 +3752,20 @@ msgstr "Pretty OSD beállítások" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Előnézet" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Előző" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Előző szám" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Verzió információ mutatása..." @@ -3744,21 +3773,25 @@ msgstr "Verzió információ mutatása..." msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Folyamat" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Nyomja meg a Wiiremote gombot" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Számok felvétele véletlenszerű rendezésben" @@ -3766,85 +3799,95 @@ msgstr "Számok felvétele véletlenszerű rendezésben" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Minőség" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Eszköz lekérdezése..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Sorkezelő" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Sorba állítja a kiválasztott számokat" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Szám sorba állítása" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Rádió (egyenlő hangerő minden számhoz)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Rádiók" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Eső" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Véletlenszerű megjelenítés" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "A most játszott szám értékelése 0 csillaggal" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "A most játszott szám értékelése 1 csillaggal" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "A most játszott szám értékelése 2 csillaggal" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "A most játszott szám értékelése 3 csillaggal" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "A most játszott szám értékelése 4 csillaggal" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "A most játszott szám értékelése 5 csillaggal" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Értékelés" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Tényleg mégse?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Frissítés" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Katalógus frissítése" @@ -3852,19 +3895,15 @@ msgstr "Katalógus frissítése" msgid "Refresh channels" msgstr "Csatornák frissítése" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Barátok listájának frissítése" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Állomáslista frissítése" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Adatfolyamok frissítése" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3876,8 +3915,8 @@ msgstr "Emlékezzen a Wii távvezérlő mozdulatra" msgid "Remember from last time" msgstr "Ahogy legutoljára volt" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Eltávolítás" @@ -3885,7 +3924,7 @@ msgstr "Eltávolítás" msgid "Remove action" msgstr "Esemény eltávolítása" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Duplikációk eltávolítása a lejátszási listáról" @@ -3893,73 +3932,77 @@ msgstr "Duplikációk eltávolítása a lejátszási listáról" msgid "Remove folder" msgstr "Mappa eltávolítása" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Eltávolítás a Zenéimből" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Eltávolítás a kedvencekből" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Eltávolítás a lejátszási listáról" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Számok eltávolítása a Zenéimből" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Számok eltávolítása a kedvencekből" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "„%1” lejátszólista átnevezése" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Grooveshark lejátszólista átnevezése" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Lejátszási lista átnevezése" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Lejátszási lista átnevezése..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Számok újraszámozása ebben a sorrendben..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Ismétlés" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Album ismétlése" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Lejátszási lista ismétlése" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Szám ismétlése" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Az aktuális lista cseréje" @@ -3968,15 +4011,15 @@ msgstr "Az aktuális lista cseréje" msgid "Replace the playlist" msgstr "Lejátszási lista cseréje" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Szóközök alulvonásokkal való helyettesítése" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3984,24 +4027,24 @@ msgstr "" msgid "Repopulate" msgstr "Újbóli feltöltés" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Visszaállítás" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Lejátszás számlálók visszaállítása" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Korlátozás ASCII karakterekre" @@ -4009,15 +4052,15 @@ msgstr "Korlátozás ASCII karakterekre" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "„Grooveshark - Zenéim” zeneszámok lekérése" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "„Grooveshark - kedvencek” zeneszámok lekérése" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Grooveshark lejátszási listák lekérése" @@ -4037,11 +4080,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4053,25 +4096,25 @@ msgstr "Futtatás" msgid "SOCKS proxy" msgstr "SOCKS proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Eszköz biztonságos eltávolítása" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Eszköz biztonságos eltávolítása másolás után" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Mintavételi sűrűség" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Mintavétel" @@ -4079,27 +4122,33 @@ msgstr "Mintavétel" msgid "Save .mood files in your music library" msgstr "A .mood fájlok mentés a zenekönyvtárba" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Albumborító mentése" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Borító mentése lemezre..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Kép mentése" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Lejátszási lista mentése" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Lejátszási lista mentése..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Beállítás mentése" @@ -4115,11 +4164,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "Adatfolyam mentése az Internet fül alá" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Számok mentése" @@ -4131,7 +4180,7 @@ msgstr "Skálázható mintavételezési profil (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pontszám" @@ -4139,34 +4188,38 @@ msgstr "Pontszám" msgid "Scrobble tracks that I listen to" msgstr "Az általam hallgatott számok Scrobble funkcióval történő figyelése" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Keresés" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Icecast állomások keresése" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Keresés Jamendo-n" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Keresés a Magnatune-on" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Keresés Subsonic-ban" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Automatikus keresés" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Albumborítók keresése..." @@ -4186,21 +4239,21 @@ msgstr "Keresés iTunes-on" msgid "Search mode" msgstr "Keresési mód" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Keresési beállítások" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Találatok" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Keresési feltételek" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Keresés Groovesharkon" @@ -4208,27 +4261,27 @@ msgstr "Keresés Groovesharkon" msgid "Second level" msgstr "Második szinten" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Léptetés hátra" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Léptetés előre" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Léptetés hátra" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "A lejátszott szám adott pozícióra léptetése" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Összes kiválasztása" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Kiválasztás megszüntetése" @@ -4236,7 +4289,7 @@ msgstr "Kiválasztás megszüntetése" msgid "Select background color:" msgstr "Válassz háttérszínt:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Háttérkép kiválasztása" @@ -4252,7 +4305,7 @@ msgstr "Válassz előtéri színt:" msgid "Select visualizations" msgstr "Megjelenítések kiválasztása" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Megjelenítések kiválasztása..." @@ -4260,7 +4313,7 @@ msgstr "Megjelenítések kiválasztása..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Sorozatszám" @@ -4272,51 +4325,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "A szolgáltatás nem üzemel" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 beállítása \"%2\"-ra/re..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Hangerő beállítása százalékra" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Érték beállítása minden kiválasztott számnak..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Beállítások" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Billentyűparancs" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "%1 billentyűparancsa" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "%1 billentyűparancsa már létezik" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Megjelenítés" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "OSD megjelenítése" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Ragyogás animáció megjelenítése a játszott számon a lejátszási listában" @@ -4344,15 +4397,15 @@ msgstr "Értesítés megjelenítése a rendszertálcán" msgid "Show a pretty OSD" msgstr "Pretty OSD megjelenítése" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Jelenítse meg az állapotsáv fölött" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Minden szám mutatása" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Minden számot mutasson" @@ -4364,32 +4417,36 @@ msgstr "Albumborító megjelenítése a zenetárban" msgid "Show dividers" msgstr "Elválasztók mutatása" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Jelenítse meg teljes méretben..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Mutassa a fájlböngészőben..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Jelenítse meg a különböző előadók között" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Hangulatsáv megjelenítése" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Csak az ismétlődések mutatása" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Csak a címke nélküliek mutatása" @@ -4398,8 +4455,8 @@ msgid "Show search suggestions" msgstr "Keresési javaslatok megjelenítése" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Jelenítse meg a \"kedvenc\" és \"tiltás\" gombokat" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4413,27 +4470,27 @@ msgstr "Tálcaikon megjelenítése" msgid "Show which sources are enabled and disabled" msgstr "Mutassa melyik forrás van engedélyezve vagy letiltva" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Megjelenítés/Elrejtés" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Keverés" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Albumok összekeverése" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Az összes véletlenszerűen" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Lejátszási lista véletlenszerűen" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Zeneszámok összekeverése az albumokban" @@ -4449,7 +4506,7 @@ msgstr "Kijelentkezés" msgid "Signing in..." msgstr "Belépés..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Hasonló előadók" @@ -4461,43 +4518,51 @@ msgstr "Méret" msgid "Size:" msgstr "Méret:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Visszalépés a lejátszási listában" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Kihagyások száma" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Léptetés előre a lejátszási listában" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Kis albumborító" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Kis oldalsáv" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Intelligens lejátszási lista" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Intelligens lejátszási listák" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Lágy" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Lágy Rock" @@ -4505,11 +4570,11 @@ msgstr "Lágy Rock" msgid "Song Information" msgstr "Száminformációk" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Szám infó" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Szonográfia" @@ -4529,15 +4594,23 @@ msgstr "Rendezés műfaj szerint (népszerűség alapján)" msgid "Sort by station name" msgstr "Rendezés állomásnév alapján" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Számok rendezése" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Rendezés" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Forrás" @@ -4553,7 +4626,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Hiba a Spotifyra való bejelentkezéskor" @@ -4561,7 +4634,7 @@ msgstr "Hiba a Spotifyra való bejelentkezéskor" msgid "Spotify plugin" msgstr "Spotify beépülő" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "A Spotify beépülő nincs telepítve" @@ -4569,77 +4642,77 @@ msgstr "A Spotify beépülő nincs telepítve" msgid "Standard" msgstr "Normál" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Kedvenc" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Az éppen lejátszott lista indítása" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Átkódolás indítása" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Kezdjen el írni valamit a keresési mezőbe, hogy kitöltse ezt a keresési eredmény listát" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 indítása" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Indítás…" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Állomások" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Leállít" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Megállít utána" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Leállítás az aktuális szám után" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Lejátszás leállítása" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Leállítás az aktuális szám után" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Leállítva" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Adatfolyam" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4649,7 +4722,7 @@ msgstr "" msgid "Streaming membership" msgstr "Adatfolyam tagság" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Feliratkozott lejátszólisták" @@ -4657,7 +4730,7 @@ msgstr "Feliratkozott lejátszólisták" msgid "Subscribers" msgstr "Feliratkozók" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4665,12 +4738,12 @@ msgstr "" msgid "Success!" msgstr "Siker!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 sikeresen írva" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Javasolt címkék" @@ -4679,13 +4752,13 @@ msgstr "Javasolt címkék" msgid "Summary" msgstr "Összegzés" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Nagyon magas (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Nagyon magas (2048x2048)" @@ -4697,43 +4770,35 @@ msgstr "Támogatott formátumok" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Spotify üzenetek szinkronizálása" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Spotify lejátszási lista szinkronizálása" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Spotify csillagozott számok szinronizálása" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Rendszer színek" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Lapfülek felül" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Címke" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Címke letöltő" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Címkerádió" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Cél bitráta" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4741,11 +4806,11 @@ msgstr "Techno" msgid "Text options" msgstr "Szövegopciók" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Köszönet" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "A \"%1\" parancs nem végrehajtható." @@ -4754,17 +4819,12 @@ msgstr "A \"%1\" parancs nem végrehajtható." msgid "The album cover of the currently playing song" msgstr "A jelenleg játszott szám albumborítója" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "A %1 mappa érvénytelen" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "A '%1' lejátszási lista üres vagy érvénytelen." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "A második éréknek nagyobbnak kell lennie, mint az elsőnek!" @@ -4772,40 +4832,40 @@ msgstr "A második éréknek nagyobbnak kell lennie, mint az elsőnek!" msgid "The site you requested does not exist!" msgstr "A kért oldal nem létezik!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "A kért oldal nem egy kép!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "A Clementine most frissült verziójának szüksége van a teljes zenetár újraolvasására az alább sorolt új funkciók használatához:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Vannak más zeneszámok is ebben az albumban" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Probléma lépett fel a gpodder.nettel való kommunikálás közben" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Hiba lépett fel az adatok Magnatuneról való letöltése közben" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Hiba történt az iTunes Store-ból érkező adatok feldolgozásakor" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4817,13 +4877,13 @@ msgid "" "deleted:" msgstr "Néhány szám törlése közben hiba lépett fel. Az alábbi fájlokat nem sikerült törölni:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Ezek a fájlok törölve lesznek az eszközről. Biztos benne, hogy folytatja?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4843,13 +4903,13 @@ msgstr "Ezek a beállítások a „Zene átkódolása” ablakban lesznek haszn msgid "Third level" msgstr "Harmadik szinten" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Ez a művelet létrehoz egy adatbázist, amely akár 150 MB méretű is lehet.\nEnnek ellenére is folytatod?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Ez az album nem elérhető a kért formátumban" @@ -4863,11 +4923,11 @@ msgstr "A Clementine csak az eszköz csatlakoztatása és megnyitása után kép msgid "This device supports the following file formats:" msgstr "Ez az eszköz az alábbi fájlformátumokat támogatja:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Az eszköz nem fog megfelelően működni" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Ez egy MTP eszköz, de a Clementine libmtp támogatás nélkül lett fordítva." @@ -4876,7 +4936,7 @@ msgstr "Ez egy MTP eszköz, de a Clementine libmtp támogatás nélkül lett for msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Ez az eszköz egy iPod, de a Clementine libgpod támogatás nélkül lett fordítva." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4886,33 +4946,33 @@ msgstr "Ez az első alkalom, hogy csatlakoztatta ezt az eszközt. A Clementine msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Ez az adatfolyam csak előfizetőknek érhető el" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "A %1 eszköztípus nem támogatott" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Cím" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "A Grooveshark rádió elindításához előbb meg kell hallgatnia néhány más Grooveshark zeneszámot." -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Ma" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "OSD ki-bekapcsolása" @@ -4920,27 +4980,27 @@ msgstr "OSD ki-bekapcsolása" msgid "Toggle fullscreen" msgstr "Teljes képernyő" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Sorállapot megjelenítése" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Scrobble funkció váltása" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Holnap" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Túl sok átirányítás" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Népszerű számok" @@ -4948,21 +5008,25 @@ msgstr "Népszerű számok" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Összes átküldött bájt" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Összes hálózati kérés" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Szám" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Zene átkódolása" @@ -4974,7 +5038,7 @@ msgstr "Átkódolási napló" msgid "Transcoding" msgstr "Átkódolás" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Átkódolás %1 fájlt %2 folyamatban" @@ -4983,11 +5047,11 @@ msgstr "Átkódolás %1 fájlt %2 folyamatban" msgid "Transcoding options" msgstr "Kódolási opciók" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4995,72 +5059,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Kikapcsolás" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(-ek)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One jelszó" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One felhasználónév" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra szélessávú (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "%1 (%2) nem letölthető" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Ismeretlen" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Ismeretlen tartalom" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Ismeretlen hiba" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Borító törlése" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Leiratkozás" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Következő koncertek" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Grooveshark lejátszólisták frissítése" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Összes podcast frissítése" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Megváltozott zenetárbeli könyvtárak frissítése" @@ -5068,7 +5132,7 @@ msgstr "Megváltozott zenetárbeli könyvtárak frissítése" msgid "Update the library when Clementine starts" msgstr "Zenetár frissítése a Clementine indításakor" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Podcast frissítése" @@ -5076,21 +5140,21 @@ msgstr "Podcast frissítése" msgid "Updating" msgstr "Frissítés" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "%1 frissítése" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "%1 frissítése..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Zenetár frissítése" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Kihasználtság" @@ -5098,11 +5162,11 @@ msgstr "Kihasználtság" msgid "Use Album Artist tag when available" msgstr "Album előadója címke használata (ha elérhető)" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gnome gyorsbillentyűk használata" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Replay Gain adatok használata, ha elérhetőek" @@ -5122,7 +5186,7 @@ msgstr "Saját színkészlet használata" msgid "Use a custom message for notifications" msgstr "Egyéni üzenet használata értesítésnél" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5162,20 +5226,20 @@ msgstr "A rendszer proxy beállításainak használata" msgid "Use volume normalisation" msgstr "Hangerő normalizálása" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Használt" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "%1 felhasználónak nincs Grooveshark Anywhere fiókja" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Kezelőfelület" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5197,12 +5261,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Változó bitráta" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Különböző előadók" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "%1 Verzió" @@ -5215,7 +5279,7 @@ msgstr "Nézet" msgid "Visualization mode" msgstr "Megjelenítés módja" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Megjelenítések" @@ -5223,11 +5287,15 @@ msgstr "Megjelenítések" msgid "Visualizations Settings" msgstr "Megjelenítések Beállításai" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Hangtevékenység felismerése" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Hangerő %1%" @@ -5245,11 +5313,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "WAV" @@ -5257,7 +5325,7 @@ msgstr "WAV" msgid "Website" msgstr "Weboldal" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Hét" @@ -5283,32 +5351,32 @@ msgstr "Miért nem próbálja..." msgid "Wide band (WB)" msgstr "Széles sávú (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii távvezérlő %1: aktiválva" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii távvezérlő %1: kapcsolódva" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii távvezérlő %1: kritikus teleptöltés (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii távvezérlő %1: deaktiválva" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii távvezérlő %1: lekapcsolódva" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii távvezérlő %1: alacsony teleptöltés (%2%)" @@ -5329,7 +5397,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5337,25 +5405,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Szeretné a többi számot ebből az albumból áthelyezni a Vegyes előadók közé is?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Akarsz futtatni egy teljes újraolvasást most?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5367,11 +5435,11 @@ msgstr "Év" msgid "Year - Album" msgstr "Év - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Év" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Tegnap" @@ -5379,13 +5447,13 @@ msgstr "Tegnap" msgid "You are about to download the following albums" msgstr "A következő albumokat készül letölteni" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5395,12 +5463,12 @@ msgstr "" msgid "You are not signed in." msgstr "Nem vagy bejelentkezve." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Be vagy jelentkezve, mint %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Be vagy jelentkezve." @@ -5408,13 +5476,13 @@ msgstr "Be vagy jelentkezve." msgid "You can change the way the songs in the library are organised." msgstr "Megváltoztathatja a számok zenetárban való rendezésének módját." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Felhasználói fiók nélkül is hallgathat zenéket, de a prémium tagok ezt jobb minőségben és reklámok nélkül tehetik." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5424,13 +5492,6 @@ msgstr "Hallgathat Magnatune számokat ingyen, előfizetés nélkül. Előfizet msgid "You can listen to background streams at the same time as other music." msgstr "Háttér adatfolyamatokat hallgathatsz egy időben más számokkal is." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Scrobble funkcióval ingyenesen figyeltetheted a számokat, de csak előfizetők hallgathatnak Last.fm rádiót a Clementineből." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "A Clementine távvezérléshez használhat Wii távvezérlőt is. Részletekért tekintse meg a Clementine wiki oldalát.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Nincs Grooveshark Anywhere fiókod." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Nincs Spotify prémium fiókod." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Nincs aktív feliratkozása" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Kijelentkezett a Spotify-ből, kérem írja be még egyszer a jelszavát a Beállítások ablakban." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Kijelentkezett a Spotify-ből, kérem írja be még egyszer a jelszavát." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Kedveled ezt a számot" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5475,17 +5550,11 @@ msgstr "A Rendszerbeállításokban engedélyeznie kell a \"\n" "Language-Team: Armenian (http://www.transifex.com/projects/p/clementine/language/hy/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: hy\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -55,11 +55,16 @@ msgstr "" msgid " seconds" msgstr " վայրկյան" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " երգ" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 ալբոմ" @@ -69,12 +74,12 @@ msgstr "%1 ալբոմ" msgid "%1 days" msgstr "%1 օր" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 օր առաջ" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 երգ" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 երգ" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 երգ գտավ" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 երգ գտավ (ցույց տրվում է %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -139,18 +144,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n ավարտված" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n մնացած" @@ -162,24 +170,24 @@ msgstr "" msgid "&Center" msgstr "&Կենտրոն" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Օգնություն" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -187,23 +195,23 @@ msgstr "" msgid "&Left" msgstr "&Ձախ" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Դուրս գալ" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,23 +219,23 @@ msgstr "" msgid "&Right" msgstr "&Աջ" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "1 օր" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -272,12 +276,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ՏՎԵՔ ԲՈԼՈՐ ՓԱՌՔ «ՀԻՊՆՈՍԻ ԵՆԹԱՐԿՎԱԾ ՄԱՐԴ ԴՈԴՈՇ»" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "Գործողություն" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -452,11 +464,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -552,6 +580,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -581,15 +613,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -597,12 +629,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -661,19 +694,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +777,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,9 +825,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -807,7 +839,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -823,7 +855,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -831,15 +863,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +892,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +920,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1027,11 +1086,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1048,17 +1107,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1071,8 +1130,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1186,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1183,73 +1238,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1317,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1310,156 +1378,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1534,6 +1594,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1607,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,31 +1638,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1606,7 +1671,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1618,15 +1683,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1796,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,23 +1851,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1929,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2036,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2255,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2214,15 +2289,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,7 +2309,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2397,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2594,55 +2665,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2718,12 +2790,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2818,24 +2852,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2847,15 +2881,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3068,20 +3125,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,7 +3176,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3123,56 +3184,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3238,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3252,7 +3285,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3335,36 +3372,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3451,23 +3498,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3475,7 +3522,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3791,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,28 +3804,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3877,7 +3916,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,10 +4180,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4142,23 +4195,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4281,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4305,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4447,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,27 +4462,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4497,11 +4562,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4733,11 +4798,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5090,11 +5154,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5207,7 +5271,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,11 +5279,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5237,11 +5305,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5371,13 +5439,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5540,19 +5610,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,20 +5632,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/ia.po b/src/translations/ia.po index 25f350206..80dbd5e5e 100644 --- a/src/translations/ia.po +++ b/src/translations/ia.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/clementine/language/ia/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +17,7 @@ msgstr "" "Language: ia\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -42,9 +42,9 @@ msgstr " dies" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -57,11 +57,16 @@ msgstr "" msgid " seconds" msgstr " secundas" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -71,12 +76,12 @@ msgstr "" msgid "%1 days" msgstr "%1 dies" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dies retro" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -86,48 +91,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -141,18 +146,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "" @@ -164,24 +172,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Adjuta" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -189,23 +197,23 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Musica" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -213,23 +221,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Instrumen&tos" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -249,14 +257,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -266,7 +270,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -274,12 +278,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -290,6 +288,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -298,38 +307,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -349,36 +358,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -390,11 +398,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -410,39 +422,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -454,11 +466,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -522,6 +534,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -530,22 +546,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -554,6 +582,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -583,15 +615,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -599,12 +631,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -612,11 +644,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -626,35 +658,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -663,19 +696,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -700,30 +733,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -732,13 +765,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -746,52 +779,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -799,9 +827,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -809,7 +841,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -825,7 +857,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -833,15 +865,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -862,7 +894,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -870,11 +902,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -894,18 +922,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -913,7 +940,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -929,7 +961,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -943,11 +975,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -959,43 +991,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1005,15 +1060,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1029,11 +1088,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1042,7 +1101,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1050,17 +1109,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1073,8 +1132,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1096,8 +1155,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1111,20 +1170,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1136,11 +1188,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1150,7 +1202,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1165,19 +1220,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1185,73 +1240,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1259,11 +1319,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1273,12 +1333,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1294,17 +1358,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1312,156 +1380,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1469,7 +1533,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1481,54 +1545,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1536,6 +1596,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1544,30 +1609,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1575,31 +1640,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1608,7 +1673,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1620,15 +1685,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1665,12 +1730,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1680,15 +1750,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1700,27 +1770,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1728,12 +1798,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1749,7 +1820,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1757,15 +1828,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1773,7 +1844,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1782,23 +1853,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1818,20 +1889,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1843,16 +1914,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1860,6 +1931,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1874,7 +1949,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1902,15 +1977,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1924,7 +1994,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1933,11 +2003,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1945,21 +2015,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1967,38 +2038,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2030,7 +2101,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2042,7 +2113,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2063,36 +2134,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2102,42 +2173,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2146,11 +2217,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2166,11 +2237,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2178,7 +2249,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2186,19 +2257,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2208,7 +2283,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2216,15 +2291,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2232,7 +2311,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2248,12 +2327,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2268,7 +2347,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2296,31 +2375,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2328,30 +2399,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2363,11 +2434,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2375,7 +2446,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2385,7 +2456,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2393,15 +2464,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2409,44 +2480,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2455,7 +2526,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2471,25 +2542,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2501,15 +2572,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2519,24 +2590,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2547,7 +2618,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2559,36 +2630,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2596,55 +2667,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2652,42 +2723,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2696,11 +2767,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2708,11 +2780,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2720,12 +2792,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2733,45 +2809,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2779,11 +2817,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2791,28 +2829,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2820,24 +2854,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2849,15 +2883,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2865,84 +2899,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2954,12 +2993,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2971,15 +3015,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2987,7 +3031,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2995,15 +3039,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3016,15 +3065,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3036,17 +3085,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3058,11 +3111,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3070,20 +3127,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3091,15 +3148,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3108,7 +3169,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3117,7 +3178,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3125,56 +3186,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3182,23 +3219,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3207,21 +3240,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3229,24 +3262,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3254,7 +3287,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3262,7 +3295,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3276,11 +3309,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3288,43 +3321,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3337,36 +3374,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3374,11 +3416,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3386,23 +3428,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3410,30 +3452,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3453,23 +3500,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3477,7 +3524,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3485,15 +3532,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3505,15 +3548,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3522,20 +3565,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3544,34 +3587,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3580,45 +3611,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3630,23 +3658,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3655,22 +3683,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Preferentias" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Preferentias..." @@ -3706,7 +3735,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3717,20 +3746,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3738,21 +3767,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3760,7 +3793,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3768,28 +3806,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3797,48 +3840,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3846,19 +3889,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3870,8 +3909,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3879,7 +3918,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3887,73 +3926,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3962,15 +4005,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3978,24 +4021,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4003,15 +4046,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4031,11 +4074,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4047,25 +4090,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4073,27 +4116,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4109,11 +4158,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4125,7 +4174,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4133,10 +4182,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4144,23 +4197,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4180,21 +4233,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4202,27 +4255,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4230,7 +4283,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4246,7 +4299,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4254,7 +4307,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4266,51 +4319,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4338,15 +4391,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4358,32 +4411,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4392,7 +4449,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4407,27 +4464,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4443,7 +4500,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4455,43 +4512,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4499,11 +4564,11 @@ msgstr "" msgid "Song Information" msgstr "Information de canto" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4523,15 +4588,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4547,7 +4620,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4555,7 +4628,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4563,77 +4636,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4643,7 +4716,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4651,7 +4724,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4659,12 +4732,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4673,13 +4746,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4691,43 +4764,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4735,11 +4800,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4748,17 +4813,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4766,40 +4826,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4811,13 +4871,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4837,13 +4897,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4857,11 +4917,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4870,7 +4930,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4880,33 +4940,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4914,27 +4974,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4942,21 +5002,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4968,7 +5032,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4977,11 +5041,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4989,72 +5053,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Incognite" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Error Incognite" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "De-subscriber" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Actualisar lista de reproduction de Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Actualisar omne podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5062,7 +5126,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "Actualisar le bibliotheca quando initia Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Actualisar iste podcast" @@ -5070,21 +5134,21 @@ msgstr "Actualisar iste podcast" msgid "Updating" msgstr "Actualisante" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Usage" @@ -5092,11 +5156,11 @@ msgstr "Usage" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5116,7 +5180,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5156,20 +5220,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Usate" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interfacie de usator" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5191,12 +5255,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Varie artistas" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5209,7 +5273,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5217,11 +5281,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5239,11 +5307,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5251,7 +5319,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5277,32 +5345,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5323,7 +5391,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5331,25 +5399,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5361,11 +5429,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5373,13 +5441,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5389,12 +5457,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5402,13 +5470,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5418,13 +5486,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5469,17 +5544,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5487,42 +5556,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5542,19 +5612,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5564,20 +5634,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5585,11 +5655,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5597,54 +5667,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5656,36 +5727,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/id.po b/src/translations/id.po index 210b8262b..369afc40d 100644 --- a/src/translations/id.po +++ b/src/translations/id.po @@ -6,16 +6,17 @@ # Andre Mata Ludji <>, 2012 # Nurissalam Nurissalam , 2013 # FIRST AUTHOR , 2011 +# hasssan , 2014 # chocolateshirt , 2013 # nix.Lilium , 2012 # operamaniac , 2013 # tjung , 2012-2013 # tjung , 2013 -# tjung , 2013 +# tjung , 2013-2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/clementine/language/id/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,7 +24,7 @@ msgstr "" "Language: id\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -48,9 +49,9 @@ msgstr " hari" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -63,11 +64,16 @@ msgstr " pt" msgid " seconds" msgstr " detik" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " lagu" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 lagu)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -77,12 +83,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 hari" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 hari yang lalu" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 pada %2" @@ -92,48 +98,48 @@ msgstr "%1 pada %2" msgid "%1 playlists (%2)" msgstr "%1 daftar main (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 terpilih dari" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 lagu" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 lagu" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 songs found" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 lagu ditemukan (menunjukkan %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 lagu" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 telah ditransfer" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1 modul Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 pendengar lainnya" @@ -147,18 +153,21 @@ msgstr "%L1 total dimainkan" msgid "%filename%" msgstr "nama %berkas" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n gagal" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n telah selesai" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n yang tersisa" @@ -170,24 +179,24 @@ msgstr "&Luruskan teks" msgid "&Center" msgstr "&Tengah" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Pengaturan" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Ekstra" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Bantuan" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Sembunyikan %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Sembunyikan..." @@ -195,23 +204,23 @@ msgstr "&Sembunyikan..." msgid "&Left" msgstr "&Kiri" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Musik" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Tidak Ada" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Daftar Main" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Keluar" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Mode &perulangan" @@ -219,23 +228,23 @@ msgstr "Mode &perulangan" msgid "&Right" msgstr "&Kanan" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Mode peng&acakan" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Tarik kolom agar pas dengan jendela" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Peralatan" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(berbeda diantara berbagai lagu)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...dan semua kontributor Amarok" @@ -255,14 +264,10 @@ msgstr "0px" msgid "1 day" msgstr "1 Hari" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 lagu" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -272,7 +277,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 lagu acak" @@ -280,12 +285,6 @@ msgstr "50 lagu acak" msgid "Upgrade to Premium now" msgstr "Tingkatkan ke Premium sekarang" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Buat akun baru atau reset kata sandi" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -296,6 +295,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Jika tidak dicek, Clementine akan mencoba untuk menyimpan data rating anda dan statistik lainya hanya dalam sebuah database terpisah dan tidak akan merubah berkas anda.

Jika dicek, Clementine akan menyimpan statistik di database dan langsung keberkas setiap berkas-berkas itu berubah.

Tolong catat bahwa hal tersebut mungkin tidak akan bekerja pada setiap format, dan tidak ada anjuran untuk melakukan hal tersebut, pemutar musik lain mungkin tidak akan bisa membacanya.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -304,38 +314,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Tanda dimulai dengan %, sebagai contoh: %artis %album %judul

\n\n

Apabila anda mengelilingi bagian dari teks yang mengandung tanda kurung kurawal, maka bagian tersebut akan tersembunyi bila tanda tersebut kosong.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Akun Grooveshark Anywhere diperlukan" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Akun Premium Spotify diperlukan." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Klien hanya dapat melakukan koneksi jika kode yang dimasukkan benar." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Daftar main pintar adalah daftar dinamis yang diambil dari pustaka lagu anda. Ada beberapa jenis daftar lagu pintar yang menawarkan cara yang berbeda untuk memilih lagu" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Lagu akan dimasukkan ke dalam daftar jika lagu memenuhi kondisi berikut." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -355,36 +365,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "KEMENANGAN UNTUK SANG HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Batal" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Tentang %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Tentang Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Tentang Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detail akun" @@ -396,11 +405,15 @@ msgstr "Rincian akun (Premium)" msgid "Action" msgstr "Aksi" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wiiremote aktif/tidak aktif" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Tambah Podcast" @@ -416,39 +429,39 @@ msgstr "Tambah garis baru jika didukung oleh tipe notifikasi" msgid "Add action" msgstr "Tambah aksi" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Tambah stream lainnya..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Tambah direktori..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Tambah berkas" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Tambahkan berkas ke transcoder" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Tambahkan berkas(-berkas) ke transcoder" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Tambah berkas..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Tambah berkas untuk ditranskode" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Tambah folder" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Tambah folder..." @@ -460,11 +473,11 @@ msgstr "Tambah folder baru..." msgid "Add podcast" msgstr "Tambah podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Tambah podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Tambah kata pencarian" @@ -528,6 +541,10 @@ msgstr "Tambah nilai jumlah lewat pada lagu" msgid "Add song title tag" msgstr "Tambah tag judul pada lagu" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Tambah label trek lagu" @@ -536,22 +553,34 @@ msgstr "Tambah label trek lagu" msgid "Add song year tag" msgstr "Tambah tag tahun pada lagu" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Tambah stream..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Tambah ke favorit Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Tambah ke daftar main Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Tambah ke daftar main lainnya" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Tambah ke daftar main" @@ -560,6 +589,10 @@ msgstr "Tambah ke daftar main" msgid "Add to the queue" msgstr "Tambah ke antrian" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Tambah aksi wiimotedev" @@ -589,15 +622,15 @@ msgstr "Ditambah hari ini" msgid "Added within three months" msgstr "Ditambah pada tiga bulan terakhir" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Menambah lagu ke Musik Saya" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Menambah lagu ke favorit" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Pengelompokkan lanjut..." @@ -605,12 +638,12 @@ msgstr "Pengelompokkan lanjut..." msgid "After " msgstr "Setelah " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Setelah menyalin..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -618,11 +651,11 @@ msgstr "Setelah menyalin..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (kenyaringan ideal untuk semua trek)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -632,35 +665,36 @@ msgstr "Album penyanyi" msgid "Album cover" msgstr "Sampul album" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Info album di jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Album dengan sampul" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Album tanpa sampul" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Semua Berkas (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Kemenangan untuk Sang Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Semua album" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Semua artis" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Semua berkas (*)" @@ -669,19 +703,19 @@ msgstr "Semua berkas (*)" msgid "All playlists (%1)" msgstr "Semua playlist (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Semua translator" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Semua lagu" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Izinkan klien mengunduh musik dari komputer ini." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Izinkan unduhan" @@ -706,30 +740,30 @@ msgstr "Selalu tunjukkan jendela utama" msgid "Always start playing" msgstr "Selalu mulai mainkan" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Plugin tambahan dibutukan untuk menggunakan Spotify di Clementine. Apakah anda ingin mendownload dang menginstallnya sekarang?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Kesalahan terjadi saat memuat database iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Kesalahan terjadi saat menulis metadata ke '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Telah terjadi error tak spesifik" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Dan:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Marah" @@ -738,13 +772,13 @@ msgstr "Marah" msgid "Appearance" msgstr "Tampilan" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Tempel file/URL ke playlist" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Tambah ke playlist sementara" @@ -752,52 +786,47 @@ msgstr "Tambah ke playlist sementara" msgid "Append to the playlist" msgstr "Tambah ke playlist" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Terapkan kompresi untuk mencegah clipping" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Anda yakin untuk menghapus preset \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Hapus playlist ini?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Apakah anda ingin mengatur ulang statistik lagu?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Apa anda yakin ingin menuliskan statistik lagu kedalam berkas lagu untuk semua lagu di perpustakan anda?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artis" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Info Artis" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radio Artis" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Label artis" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Inisial Artis" @@ -805,9 +834,13 @@ msgstr "Inisial Artis" msgid "Audio format" msgstr "Format audio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Output suara" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Otentifikasi gagal" @@ -815,7 +848,7 @@ msgstr "Otentifikasi gagal" msgid "Author" msgstr "Penulis" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Penulis" @@ -831,7 +864,7 @@ msgstr "Update Otomatis" msgid "Automatically open single categories in the library tree" msgstr "Buka sebuah kategori secara otomatis di pustaka" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Tersedia" @@ -839,15 +872,15 @@ msgstr "Tersedia" msgid "Average bitrate" msgstr "Bitrate rata-rata" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Ukuran rata-rata gambar" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +901,7 @@ msgstr "Gambar latar belakang" msgid "Background opacity" msgstr "Keburaman Latar Belakang" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Buat cadangan database" @@ -876,11 +909,7 @@ msgstr "Buat cadangan database" msgid "Balance" msgstr "Seimbang" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Larangan" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Penganalisa batang" @@ -900,18 +929,17 @@ msgstr "Perilaku" msgid "Best" msgstr "Terbaik" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografi dari %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -919,7 +947,12 @@ msgstr "Bit rate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Laju Bit" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Penganalisa blok" @@ -935,7 +968,7 @@ msgstr "Jumlah blur" msgid "Body" msgstr "Badan" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Penganalisa dentuman" @@ -949,11 +982,11 @@ msgstr "Box" msgid "Browse..." msgstr "Menelusuri..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Durasi Buffer" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Menyangga..." @@ -965,43 +998,66 @@ msgstr "Tapi sumber -sumber ini telah mati:" msgid "Buttons" msgstr "Tombol" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Dukungan lembar CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Batal" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Ganti cover" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Ganti ukuran huruf..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Ubah mode ulang" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Ubah shortcut..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Ubah mode pengacakan" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Ganti bahasa" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1011,15 +1067,19 @@ msgstr "Mengganti pemutaran mono akan berlaku saat lagu berikut dimainkan" msgid "Check for new episodes" msgstr "Perbarui episode baru" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Cek pembaruan..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Pilih nama untuk playlist pintar" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Pilih otomatis" @@ -1035,11 +1095,11 @@ msgstr "Pilih huruf..." msgid "Choose from the list" msgstr "Pilih dari daftar" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Pilih bagaiman playlist diurutkan dan berapa banyak lagu di dalamnya." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Pilih direktori unduhan podcast" @@ -1048,7 +1108,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Pilih situs yang digunakan Clementine saat mencari lirik." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasik" @@ -1056,17 +1116,17 @@ msgstr "Klasik" msgid "Cleaning up" msgstr "Pembersihan" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Bersih" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Bersihkan playlist" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1079,8 +1139,8 @@ msgstr "Error Clementine" msgid "Clementine Orange" msgstr "Clementine Orange" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Visualisasi Clementine" @@ -1102,9 +1162,9 @@ msgstr "Clementine dapat memutar musik yang Anda unggah ke Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine dapat memutar musik yang telah Anda diunggah ke Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine dapat memutar musik yang Anda unggah ke Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1117,20 +1177,13 @@ msgid "" "an account." msgstr "Clementine dapat menyinkronkan daftar langganan Anda dengan komputer lain dan aplikasi podcast. Buat akun." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine tidak dapat memuat semua visualisasi projectM. Periksa apakah Anda telah menginstal Clementine dengan benar." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine tidak bisa mendapatkan status berlangganan Anda karena ada masalah dengan koneksi Anda. Lagu yang diputar akan dicache dan dikirim lagi nanti ke Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Penampil gambar Clementine" @@ -1142,11 +1195,11 @@ msgstr "Clementine tidak dapat menemukan hasil untuk file ini" msgid "Clementine will find music in:" msgstr "Clementine akan mencari musik di:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klik di sini untuk menambahkan musik" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1156,7 +1209,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Klik untuk beralih antara waktu tersisa dan total waktu" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1171,19 +1227,19 @@ msgstr "Tutup" msgid "Close playlist" msgstr "Tutup daftar lagu" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Tutup visualisasi" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Menutup jendela ini akan membatalkan semua download." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Menutup jendela ini akan menghentikan pencarian semua sampul album." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klub" @@ -1191,73 +1247,78 @@ msgstr "Klub" msgid "Colors" msgstr "Warna-warna" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Daftar koma terpisah dari kelas: tingkat, tingkat ini adalah 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Komunitas Radio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Isi tag secara otomatis" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Isi tag secara otomatis..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Pengarang" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Konfigurasi %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Konfigurasi Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Konfigurasi Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Konfigurasi Magnature" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Konfigurasi Jalan Pintas" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Konfigurasi Spotify" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Konfigurasi Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Konfigurasi Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Konfigurasi pencarian global..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Konfigurasi Pustaka" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Konfigurasi podcast..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Konfigurasi..." @@ -1265,11 +1326,11 @@ msgstr "Konfigurasi..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Sambungkan Remote Wii menggunakan aksi aktif/non-aktif" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Hubungkan perangkat" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Menghubungkan ke Spotify" @@ -1279,12 +1340,16 @@ msgid "" "http://localhost:4040/" msgstr "Koneksi ditolak oleh server, periksa URL server. Contoh: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Koneksi melewati batas waktu, periksa URL server. Contoh: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsol" @@ -1300,17 +1365,21 @@ msgstr "Konversi semua musik" msgid "Convert any music that the device can't play" msgstr "Konversi semua musik yang tidak dapat dimainkan oleh perangkat itu." -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Salin ke papan klip" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Salin ke perangkat..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Salin ke Pustaka ..." @@ -1318,156 +1387,152 @@ msgstr "Salin ke Pustaka ..." msgid "Copyright" msgstr "Hak cipta" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Tidak dapat melakukan koneksi ke Subsonic, cek URL server. Contoh:\nhttp://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Tidak dapat membuat elemen GStreamer \"%1\" - pastikan Anda memiliki semua pengaya GStreamer yang telah terinstal" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Tidak bisa membuat playlist" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Tidak dapat menemukan muxer untuk %1, periksa Anda memiliki pengaya GStreamer terinstal dengan benar" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Tidak dapat menemukan enkoder untuk %1, periksa Anda memiliki pengaya GStreamer terinstal dengan benar" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Tidak dapat memuat stasiun radio last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Tidak dapat membuka berkas keluaran %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Sampul Manajer" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Sampul dari gambar tertanam" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Sampul dimuat secara otomatis dari %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Sampul tidak diset secara manual" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Sampul tidak diatur" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Sampul diatur dari %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Sampul mulai dari %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Buat daftar lagu baru Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Pudaran-suara ketika mengubah trek secara otomatis" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Pudaran-suara ketika mengubah trek secara manual" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1475,7 +1540,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Ubahsuaian" @@ -1487,54 +1552,50 @@ msgstr "Ubahsuaian" msgid "Custom message settings" msgstr "Ubahsuaian pengaturan pesan" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Ubahsuaian radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Ubahsuaian..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Jalur Dbus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dansa" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Kerusakan database terdeteksi. Harap baca https://code.google.com/p/clementine-player/wiki/DatabaseCorruption untuk instruksi bagaimana cara untuk mendapatkan kembali database Anda" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Tanggal dibuat" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Tanggal dimodifikasi" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Hari" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "De&fault" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Kurangi volume 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Kurangi volume persen" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Kurangi volume" @@ -1542,6 +1603,11 @@ msgstr "Kurangi volume" msgid "Default background image" msgstr "Gambar latar belakang standar" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Standar" @@ -1550,30 +1616,30 @@ msgstr "Standar" msgid "Delay between visualizations" msgstr "Penundaan antar visualisasi" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Hapus" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Hapus daftar lagu Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Hapus data yang sudah diunduh" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Hapus file" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Hapus dari perangkat..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Hapus dari disk..." @@ -1581,31 +1647,31 @@ msgstr "Hapus dari disk..." msgid "Delete played episodes" msgstr "Hapus episode yang sudah diputar" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Hapus pengaturan sebelumnya" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Hapus daftar lagu pintar" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Hapus file asli" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Menghapus file" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Batalkan antrian trek terpilih" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Batalkan antrian trek" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Tujuan" @@ -1614,7 +1680,7 @@ msgstr "Tujuan" msgid "Details..." msgstr "Detail..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Perangkat" @@ -1626,17 +1692,17 @@ msgstr "Properti perangkat" msgid "Device name" msgstr "Nama perangkat" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Properti perangkat..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Perangkat-perangkat" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Dialog" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1671,12 +1737,17 @@ msgstr "Nonaktifkan durasi" msgid "Disable moodbar generation" msgstr "Nonaktifkan generasi moodbar" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Nonaktifkan " +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Piringan" @@ -1686,15 +1757,15 @@ msgid "Discontinuous transmission" msgstr "Transmisi diskontinu" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opsi tampilan" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Tampilkan pada layar-tampilan" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Lakukan scan ulang pustaka keseluruhan" @@ -1706,27 +1777,27 @@ msgstr "Jangan ubah jenis musik apa pun" msgid "Do not overwrite" msgstr "Jangan tulis timpa" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Jangan ulang" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Jangan menunjukkan berbagai artis" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Jangan acak" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Jangan berhenti" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Donasi" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Kilk ganda untuk buka" @@ -1734,12 +1805,13 @@ msgstr "Kilk ganda untuk buka" msgid "Double clicking a song will..." msgstr "Klik ganda lagu akan ..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Memuat %n episode" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Unduh direktori" @@ -1755,7 +1827,7 @@ msgstr "Unduh keanggotaan" msgid "Download new episodes automatically" msgstr "Unduh episode baru secara otomatis" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Antri unduh" @@ -1763,15 +1835,15 @@ msgstr "Antri unduh" msgid "Download the Android app" msgstr "Unduh Android app" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Unduh album ini" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Unduh album ini..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Unduh episode ini" @@ -1779,7 +1851,7 @@ msgstr "Unduh episode ini" msgid "Download..." msgstr "Unduh..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Memuat (%1%)..." @@ -1788,23 +1860,23 @@ msgstr "Memuat (%1%)..." msgid "Downloading Icecast directory" msgstr "Unduh direktori Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Mengunduh katalok Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Unduh katalog Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Unduh pengaya Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Unduh metadata" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Seret untuk memposisikan ulang" @@ -1818,26 +1890,26 @@ msgstr "" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Durasi" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Mode dinamik berjalan" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Campuran random dinamik" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Sunting daftar lagu pintar..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Sunting label..." @@ -1849,16 +1921,16 @@ msgstr "Sunting label-label" msgid "Edit track information" msgstr "Sunting informasi trek" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Sunting informasi trek..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Sunting informasi trek..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Sunting..." @@ -1866,6 +1938,10 @@ msgstr "Sunting..." msgid "Enable Wii Remote support" msgstr "Aktifkan dukungan Remote Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Aktifkan ekualiser" @@ -1880,7 +1956,7 @@ msgid "" "displayed in this order." msgstr "Aktifkasi sumber di bawah ini untuk memasukkan mereka dalam hasil pencarian. Hasil akan ditampilkan dalam urutan ini." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Aktifkan/Nonaktifkan Last.fm scrobbling" @@ -1908,15 +1984,10 @@ msgstr "Masukkan URL untuk mengunduh sampul dari Internet:" msgid "Enter a filename for exported covers (no extension):" msgstr "Masukkan nama berkas untuk eksport sampul (tanpa ekstensi):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Masukkan nama baru untuk daftar lagu ini" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Masukkan artis atau label untuk memulai mendengarkan radio Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1930,7 +2001,7 @@ msgstr "Masukkan pencarian istilah di bawah ini untuk mencari podcast di Toko iT msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Masukkan pencarian istilah di bawah ini untuk mencari podcast di gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Masukkan pencarian istilah di sini" @@ -1939,11 +2010,11 @@ msgstr "Masukkan pencarian istilah di sini" msgid "Enter the URL of an internet radio stream:" msgstr "Masukkan URL aliran radio internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Masukkan nama folder" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Masukan IP ini kedalam Aplikasi untuk mengkoneksikan Clementine." @@ -1951,21 +2022,22 @@ msgstr "Masukan IP ini kedalam Aplikasi untuk mengkoneksikan Clementine." msgid "Entire collection" msgstr "Semua koleksi" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekualiser" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Setara dengan --log-level *: 1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Setara dengan --log-level *: 3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Kesalahan" @@ -1973,38 +2045,38 @@ msgstr "Kesalahan" msgid "Error connecting MTP device" msgstr "Kesalahan koneksi perangkat MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Kesalahan saat menyalin lagu" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Kesalahan saat menghapus lagu" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Kesalahan pengunduhan pengaya Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Kesalahan pemuatan %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Kesalahan pemuatan daftar lagu di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Proses kesalahan %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Kesalahan ketika pemuatan CD audio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Pernah dimainkan" @@ -2036,7 +2108,7 @@ msgstr "Setiap 6 jam" msgid "Every hour" msgstr "Setiap jam" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Kecuali antara trek pada album yang sama atau di lembar CUE yang sama" @@ -2048,7 +2120,7 @@ msgstr "Sampul yang sudah tersedia" msgid "Expand" msgstr "Perluas" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Kadaluarsa pada %1" @@ -2069,36 +2141,36 @@ msgstr "Eksport unduhan sampul" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Eksport selesai" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2108,42 +2180,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Pudar ketika menghentikan trek" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Memudar" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Durasi memudar" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Gagal mengambil direktori" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Gagal mengambil podcast" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Gagal memuat podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Gagal mengurai XML untuk penyuap RSS ini" @@ -2152,11 +2224,11 @@ msgstr "Gagal mengurai XML untuk penyuap RSS ini" msgid "Fast" msgstr "Cepat" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favorit" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Trek kesukaan" @@ -2172,19 +2244,19 @@ msgstr "Pengambilkan secara otomatis" msgid "Fetch completed" msgstr "Pengambilan telah selesai" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Ambil pustaka Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Kesalahan pengambilan sampul " #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Format Berkas" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Ekstensi file" @@ -2192,19 +2264,23 @@ msgstr "Ekstensi file" msgid "File formats" msgstr "Format file" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nama file" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nama berkas (tanpa jalur)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Ukuran file" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2214,7 +2290,7 @@ msgstr "Tipe file" msgid "Filename" msgstr "Nama file" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "File" @@ -2222,15 +2298,19 @@ msgstr "File" msgid "Files to transcode" msgstr "Transcode berkas" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Cari lagu di perpustakaan Anda yang sesuai dengan kriteria yang Anda tentukan." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Cari artis ini" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Sidik jari lagu" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Selesai" @@ -2238,7 +2318,7 @@ msgstr "Selesai" msgid "First level" msgstr "Tingkat pertama" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2254,12 +2334,12 @@ msgstr "Karena alasan lisensi, dukungan plugin Spotify dibuat terpisah." msgid "Force mono encoding" msgstr "Paksa pengkodean mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Lupakan perangkat" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2274,7 +2354,7 @@ msgstr "Melupakan perangkat akan menghapusnya dari daftar ini dan Clementine har #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2302,31 +2382,23 @@ msgstr "Laju bingkai" msgid "Frames per buffer" msgstr "Laju bingkai per penyangga" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Teman" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Beku" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Bass Penuh" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Bass + Treble Penuh" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Treble Penuh" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer audio engine" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Umum" @@ -2334,30 +2406,30 @@ msgstr "Umum" msgid "General settings" msgstr "Pengaturan umum" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Dapatkan URL untuk bagikan daftar lagu Grooveshark ini" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Dapatkan URL untuk bagikan lagu Grooveshark ini" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Mendapatkan lagu populer Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Mendapatkan saluran" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Mendapatkan aliran" @@ -2369,11 +2441,11 @@ msgstr "Berikan nama:" msgid "Go" msgstr "Jalankan" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Buka tab daftar lagu berikutnya" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Buka tab daftar lagu sebelumnya" @@ -2381,7 +2453,7 @@ msgstr "Buka tab daftar lagu sebelumnya" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2391,7 +2463,7 @@ msgstr "Punya %1 mencakup dari %2 ( %3 gagal)" msgid "Grey out non existent songs in my playlists" msgstr "Pengabuan lagu yang sudah tidak ada dari daftar lagu" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2399,15 +2471,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Kesalahan saat login Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL daftar lagu Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Radio Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL lagu Grooveshark" @@ -2415,44 +2487,44 @@ msgstr "URL lagu Grooveshark" msgid "Group Library by..." msgstr "Kelompokan Pustaka berdasarkan..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Kelompokkan" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Kelompokkan menurut Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Kelompokkan menurut Artis" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Kelompokkan menurut Artis/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Kelompokkan menurut Artis/Tahun - Album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Kelompokkan menurut Genre/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Kelompokkan menurut Genre/Artis/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Pengelompokan" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "Halaman HTML tidak memiliki penyuap RSS apa pun" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "HTTP 3xx status kode diterima tanpa URL, verifikasi konfigurasi server." @@ -2461,7 +2533,7 @@ msgstr "HTTP 3xx status kode diterima tanpa URL, verifikasi konfigurasi server." msgid "HTTP proxy" msgstr "proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Bahagia" @@ -2477,25 +2549,25 @@ msgstr "Informasi hardware hanya tersedia ketika perangkat terhubung." msgid "High" msgstr "Tinggi" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Tinggi (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Tinggi (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Tidk bisa menemukan host, periksa kembali URL server. Contoh: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Jam" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2507,15 +2579,15 @@ msgstr "Saya tidak memiliki akun Magnatune" msgid "Icon" msgstr "Ikon" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikon di atas" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Mengidentifikasi lagu" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2525,24 +2597,24 @@ msgstr "Jika anda lanjutkan, perangkat ini akan bekerja lambat dan lagu-lagu yan msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "jika Anda tahu URL podcast, masukkan dan tekan Jalankan." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Abaikan \"The\" dalam nama artis" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Dalam %1 hari" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Dalam %1 minggu" @@ -2553,7 +2625,7 @@ msgid "" "time a song finishes." msgstr "Dalam mode dinamis trek baru akan dipilih dan ditambahkan ke daftar putar setiap lagu selesai." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Kotak masuk" @@ -2565,92 +2637,92 @@ msgstr "Sertakan sampul album dalam pemberitahuan" msgid "Include all songs" msgstr "Libatkan semua lagu" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Versi protokol Subsonic REST tak kompatibel. Klien harus diperbarui." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Versi protokol Subsonic REST tak kompatibel. Server harus diperbarui." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Naikkan volume menjadi 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Naikkan volume persen" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Naikkan volume" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Mengindeks %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informasi" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Opsi masukan" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "sisipkan" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Terinstall" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Cek kesatuan" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "penyedia layanan internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Kunci API tidak sah" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Format tidak sah" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Metode tidak sah" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parameter tidak sah" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Sumber daya khusus tidak sah" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Layanan tidak sah" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Sesi kunci tidak sah" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Nama pengguna dan/atau kata sandi tidak sah" @@ -2658,42 +2730,42 @@ msgstr "Nama pengguna dan/atau kata sandi tidak sah" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Trek Jamendo yang Paling Sering Didengar" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Trek Jamendo Terpopuler" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Trek Jamendo Terpopuler Bulanan" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Trek Jamendo Terpopuler Mingguan" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "database Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Lompat ke trek yang sedang didengarkan sekarang" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Jaga tombol selama %1 detik..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Jaga tombol selama %1 detik..." @@ -2702,11 +2774,12 @@ msgstr "Jaga tombol selama %1 detik..." msgid "Keep running in the background when the window is closed" msgstr "Tetap jalankan di belakang layar ketika jendela ditutup" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Simpan berkas-berkas asli" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Anak kucing" @@ -2714,11 +2787,11 @@ msgstr "Anak kucing" msgid "Language" msgstr "Bahasa" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Headphone" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Balai Besar" @@ -2726,58 +2799,24 @@ msgstr "Balai Besar" msgid "Large album cover" msgstr "Sampul album besar" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Bilah samping besar" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Terakhir dimainkan" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Ubahsuaian Last.fm Radio: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Pustaka Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Radio Campuran Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Radio Tetangga Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Stasiun Radio Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Penyanyi Serupa Last.fm ke %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Label Radio Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm sekarang sedang sibuk, cobalah beberapa saat kemudian" @@ -2785,11 +2824,11 @@ msgstr "Last.fm sekarang sedang sibuk, cobalah beberapa saat kemudian" msgid "Last.fm password" msgstr "Kata sandi Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Jumlah putaran Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Label-label Last.fm" @@ -2797,28 +2836,24 @@ msgstr "Label-label Last.fm" msgid "Last.fm username" msgstr "Username Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Trek paling tidak disukai" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Kosongkan untuk standarnya. Contoh: \"/dev/dsp\", \"front\", dll." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Kiri" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durasi" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Pustaka" @@ -2826,24 +2861,24 @@ msgstr "Pustaka" msgid "Library advanced grouping" msgstr "Pengelompokan pustaka lanjutan" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Pemberitahuan pemindaian ulang Pustaka" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Pencarian pustaka" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Batas" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Mendengarkan lagu di Grooveshark berdasarkan jenis lagu yang Anda dengar sebelumnya" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Langsung" @@ -2855,15 +2890,15 @@ msgstr "Memuat" msgid "Load cover from URL" msgstr "Memuat sampul dari URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Memuat sampul dari URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Muat sampul dari cakram" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Memuat sampul dari media penyimpan..." @@ -2871,84 +2906,89 @@ msgstr "Memuat sampul dari media penyimpan..." msgid "Load playlist" msgstr "Memuat daftar lagu" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Memuat daftar lagu..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Pemuatan radio Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Pemuatan perangkat MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Pemuatan database iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Pemuatan daftar lagu pintar" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Pemuatan lagu-lagu" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Pemuatan aliran" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Pemuatan trek" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Pemuatan info trek" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Pemuatan..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Memuat berkas-berkas/URLs, menggantikan daftar lagu yang sekarang" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Masuk" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Gagal masuk" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Keluar" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Profil prediksi jangka panjang (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Suka" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Rendah (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Rendah(256x256)" @@ -2960,12 +3000,17 @@ msgstr "Profil kompleksitas rendah (LC)" msgid "Lyrics" msgstr "Lirik" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Lirik dari %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2977,15 +3022,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2993,7 +3038,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Unduh Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Unduh Magnatune telah selesai" @@ -3001,15 +3046,20 @@ msgstr "Unduh Magnatune telah selesai" msgid "Main profile (MAIN)" msgstr "Profil utama (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Buatlah begitu!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Buat daftar lagu tersedia offline" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Tanggapan cacat" @@ -3022,15 +3072,15 @@ msgstr "Konfigurasi proxy manual" msgid "Manually" msgstr "Secara manual" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Produsen" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Tandai sebagai sudah mendengar" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Tandai sebagai baru" @@ -3042,17 +3092,21 @@ msgstr "Cocokkan setiap pencarian istilah (AND)" msgid "Match one or more search terms (OR)" msgstr "Cocokkan satu atau lebih pencarian istilah (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Max hasil pencarian global" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Laju bit maksimum" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Menengah (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Menengah (512x512)" @@ -3064,11 +3118,15 @@ msgstr "Tipe keanggotaan" msgid "Minimum bitrate" msgstr "Laju bit minimum" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Minimum pengisian penyangga" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Kehilangan pengaturan projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3076,20 +3134,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Monitor perubahan pustaka" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Pemutaran mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Bulan" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Mood" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Gaya moodbar" @@ -3097,15 +3155,19 @@ msgstr "Gaya moodbar" msgid "Moodbars" msgstr "Moodbars" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Tambah lagi" + +#: library/library.cpp:84 msgid "Most played" msgstr "Paling sering diputar" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Titik pasang" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Titik pasang" @@ -3114,7 +3176,7 @@ msgstr "Titik pasang" msgid "Move down" msgstr "Pindah ke bawah" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Pindah ke pustaka..." @@ -3123,7 +3185,7 @@ msgstr "Pindah ke pustaka..." msgid "Move up" msgstr "Pindah ke atas" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musik" @@ -3131,56 +3193,32 @@ msgstr "Musik" msgid "Music Library" msgstr "Pustaka Musik" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Bisu" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Pustaka Last.fm Saya" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Radio Campuran Last.fm Saya" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Lingkungan Last.fm Saya" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Rekomendasi Radio Last.fm Saya" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Radio Campuran Saya" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Musik Ku" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Lingkungan Saya" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Stasiun Radio Saya" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Rekomendasi Saya" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nama" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nama" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Pilihan penamaan" @@ -3188,23 +3226,19 @@ msgstr "Pilihan penamaan" msgid "Narrow band (NB)" msgstr "Narrow band (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Tetangga" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proxy Jaringan" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Remote Jaringan" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Tidak Pernah" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Tidak pernah dimainkan" @@ -3213,21 +3247,21 @@ msgstr "Tidak pernah dimainkan" msgid "Never start playing" msgstr "Jangan pernah putar" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Folder baru" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Playlist baru" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Daftar lagu pintar baru..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Lagu-lagu baru" @@ -3235,24 +3269,24 @@ msgstr "Lagu-lagu baru" msgid "New tracks will be added automatically." msgstr "Trek baru akan ditambah secara otomatis." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Trek terbaru" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Berikut" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Trek berikutnya" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Minggu depan" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Tidak ada penganalisa" @@ -3260,7 +3294,7 @@ msgstr "Tidak ada penganalisa" msgid "No background image" msgstr "Tidak ada gambar latar belakang" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Tidak ada sampul untuk diekspor" @@ -3268,7 +3302,7 @@ msgstr "Tidak ada sampul untuk diekspor" msgid "No long blocks" msgstr "Tanpa blok panjang" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Tidak ada yang cocok. Kosongkan kotak pencarian untuk menampilkan lagi daftar lagu keseluruhan." @@ -3282,11 +3316,11 @@ msgstr "Tidak ada blok pendek" msgid "None" msgstr "Tidak ada" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Tak satu pun dari lagu-lagu yang dipilih cocok untuk disalin ke perangkat" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3294,43 +3328,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Tipe blok normal" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Tidak tersedia saat menggunakan daftar putar dinamis" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Tidak terhubung" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Konten tidak cukup" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Penggemar tidak cukup" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Anggota tidak cukup" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Tetangga tidak cukup" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Tidak terinstall" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Belum masuk" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Tidak terpasang - klik dua kali untuk memasang" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Tidak menemukan apapun" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Tipe notifikasi" @@ -3343,36 +3381,41 @@ msgstr "Notifikasi" msgid "Now Playing" msgstr "sekarang diputar" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Pratinjau OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" -msgstr "" +msgstr "Mati" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" -msgstr "" +msgstr "Nyala" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3380,11 +3423,11 @@ msgid "" "192.168.x.x" msgstr "Hanya menerima koneksi dari klien dalam jankauan ip:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Hanya diperbolehkan koneksi dari jaringan lokal" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Hanya tunjukkan yang pertama" @@ -3392,23 +3435,23 @@ msgstr "Hanya tunjukkan yang pertama" msgid "Opacity" msgstr "Opasitas" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Buka %1 di browser" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Buka &audio CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Buka berkas OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Buka berkas OPML..." @@ -3416,30 +3459,35 @@ msgstr "Buka berkas OPML..." msgid "Open device" msgstr "Buka perangkat" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Buka berkas..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Buka di Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Buka daftar lagu baru" -#: songinfo/echonestbiographies.cpp:96 -msgid "Open in your browser" +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: songinfo/echonestbiographies.cpp:97 +msgid "Open in your browser" +msgstr "Buka di penjelajah Anda" + +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Buka..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Proses gagal" @@ -3459,23 +3507,23 @@ msgstr "Pilihan" msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Mengatur Berkas" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Mengatur Berkas..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Mengorganisir berkas" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Label asli" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Pilihan lainnya" @@ -3483,7 +3531,7 @@ msgstr "Pilihan lainnya" msgid "Output" msgstr "Keluaran" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Perangkat output" @@ -3491,15 +3539,11 @@ msgstr "Perangkat output" msgid "Output options" msgstr "Pilihan keluaran" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Pengaya keluaran" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Tulis ulang semua" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Timpa file yang sudah ada" @@ -3511,15 +3555,15 @@ msgstr "Hanya tulis ulang yang lebih kecil" msgid "Owner" msgstr "Pemilik" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Menguraikan katalog Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Pesta" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3528,20 +3572,20 @@ msgstr "Pesta" msgid "Password" msgstr "Kata sandi" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Jeda" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Menjeda pemutaran" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Jeda" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Penyanyi" @@ -3550,34 +3594,22 @@ msgstr "Penyanyi" msgid "Pixel" msgstr "Piksel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Bilah samping polos" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Putar" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Putar artis atau Label" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Putar artis radio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Jumlah putar" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Putar ubahsuaian radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Putar jika berhenti, jeda jika sedang putar" @@ -3586,45 +3618,42 @@ msgstr "Putar jika berhenti, jeda jika sedang putar" msgid "Play if there is nothing already playing" msgstr "Putar jika sudah tidak ada yang harus diputar" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Putar label radio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Putar trek ke dalam daftar lagu" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Putar/Jeda" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Pemutaran" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Pilihan pemutar" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Daftar lagu" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Daftar lagu selesai" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Pilihan daftar lagu" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tipe daftar lagu" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Daftar lagu" @@ -3636,23 +3665,23 @@ msgstr "Silakan tutup browser Anda dan kembali ke Clementine." msgid "Plugin status:" msgstr "Status plugin:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Lagu populer" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Lagu populer bulan ini" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Lagu populer bulan ini" @@ -3661,22 +3690,23 @@ msgid "Popup duration" msgstr "Durasi popup" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Gerbang" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pre-amp" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Preferensi" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Preferensi..." @@ -3712,7 +3742,7 @@ msgstr "Tekan kombinasi tombol untuk menggunakan" msgid "Press a key" msgstr "Tekan tombol" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Tekan kombinasi tombol untuk menggunakan %1..." @@ -3723,20 +3753,20 @@ msgstr "Pilihan Pretty OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Pratinjau" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Sebelumnya" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Trek sebelumnya" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Cetak versi informasi" @@ -3744,21 +3774,25 @@ msgstr "Cetak versi informasi" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Perkembangan" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Tekan tombol Wii Remote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Tempatkan lagu dalam posisi acak" @@ -3766,36 +3800,46 @@ msgstr "Tempatkan lagu dalam posisi acak" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kualitas" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Query perangkat" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Manajer antrian" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Antri trek terpilih" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Antri trek" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (samakan kenyaringan untuk semua trek)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio-radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Hujan" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Hujan" @@ -3803,48 +3847,48 @@ msgstr "Hujan" msgid "Random visualization" msgstr "Visualisasi acak" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Nilai lagu saat ini 0 bintang" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Nilai lagu saat ini 1 bintang" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Nilai lagu saat ini 2 bintang" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Nilai lagu saat ini 3 bintang" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Nilai lagu saat ini 4 bintang" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Nilai lagu saat ini 5 bintang" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Penilaian" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Benar-benar membatalkan?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Segarkan" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Segarkan katalog" @@ -3852,19 +3896,15 @@ msgstr "Segarkan katalog" msgid "Refresh channels" msgstr "Segarkan saluran" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Segarkan daftar teman" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Segarkan daftar stasiun" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Segarkan aliran" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3876,8 +3916,8 @@ msgstr "Ingat ayunan Wii remote" msgid "Remember from last time" msgstr "Ingat dari waktu terakhir" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Hapus" @@ -3885,7 +3925,7 @@ msgstr "Hapus" msgid "Remove action" msgstr "Hilangkan tindakan" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Buang duplikasi daftar lagu" @@ -3893,73 +3933,77 @@ msgstr "Buang duplikasi daftar lagu" msgid "Remove folder" msgstr "Hapus folder" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Buang dari Musik Ku" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Buang dari favorit" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Hapus dari playlist" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Menghapus daftar putar" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Buang daftar lagu" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Buang lagu dari Musik Ku" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Buang lagu dari favorit" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Ubah nama daftar lagu \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Ubah nama daftar lagu Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Ganti nama playlist" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Ubah nama daftar lagu..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Memberi nomor baru trek dalam urutan ini ..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Ulangi" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Ulangi album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Ulangi daftar lagu" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Ulang trek" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Ganti playlist sementara" @@ -3968,15 +4012,15 @@ msgstr "Ganti playlist sementara" msgid "Replace the playlist" msgstr "Ganti playlist" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Menggantikan spasi dengan garis bawah" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Penguatan Putar Ulang" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Mode Penguatan Ulang" @@ -3984,24 +4028,24 @@ msgstr "Mode Penguatan Ulang" msgid "Repopulate" msgstr "Mengisi kembali" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Memerlukan kode otentikasi" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Set Ulang" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Set ulang jumlah putaran" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Batasi ke karakter ASCII" @@ -4009,15 +4053,15 @@ msgstr "Batasi ke karakter ASCII" msgid "Resume playback on start" msgstr "Lanjutkan pemutaran saat memulai Clementine" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Ambil lagu Grooveshark Musik Ku " -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Mengambil lagu favorit Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Mengambil daftar lagu Grooveshark" @@ -4037,11 +4081,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4053,25 +4097,25 @@ msgstr "Jalankan" msgid "SOCKS proxy" msgstr "Proxy SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Aman untuk melepas perangkat" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Aman untuk melepas perangkat setelah menyalin" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Laju sampel" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Laju sampel" @@ -4079,27 +4123,33 @@ msgstr "Laju sampel" msgid "Save .mood files in your music library" msgstr "Simpan berkas .mood ke dalam pustaka musik Anda" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Simpan sampul album" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Simpan sampul ke media penyimpan..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Simpan gambar" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Simpan playlist" +msgstr "Simpan daftar lagu" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Simpan daftar lagu" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Simpan playlist..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Simpan pratinjau" @@ -4115,11 +4165,11 @@ msgstr "Simpan statistik dalam berkas tag bila memungkinkan" msgid "Save this stream in the Internet tab" msgstr "Simpan aliran ini di tab Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Menyimpan statistik lagu kedalam berkas lagu" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Menyimpan trek" @@ -4131,7 +4181,7 @@ msgstr "Profil Laju Sampel Terukur (LST)" msgid "Scale size" msgstr "Skala ukuran" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Nilai" @@ -4139,10 +4189,14 @@ msgstr "Nilai" msgid "Scrobble tracks that I listen to" msgstr "Trek Scrobble yang saya dengar" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Cari" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Cari" @@ -4150,23 +4204,23 @@ msgstr "Cari" msgid "Search Icecast stations" msgstr "Cari stasiun Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Cari Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Cari Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Pencarian Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" -msgstr "" +msgstr "Otomatis mencari" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Cari sampul album untuk..." @@ -4186,21 +4240,21 @@ msgstr "Pencarian iTunes" msgid "Search mode" msgstr "Mode pencarian" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Cari pilihan" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Hasil pencarian" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Cari istilah" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Mencari di Grooveshark" @@ -4208,27 +4262,27 @@ msgstr "Mencari di Grooveshark" msgid "Second level" msgstr "Tingkat kedua" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Mencari mundur" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Mencari maju" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Carilah trek yang sedang diputar dengan jumlah relatif" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Carilah lagu yang sedang diputar ke posisi absolut" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Pilih Semua" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Pilih Tidak Ada" @@ -4236,7 +4290,7 @@ msgstr "Pilih Tidak Ada" msgid "Select background color:" msgstr "Pilih warna latar belakang:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Pilih gambar latar belakang" @@ -4252,15 +4306,15 @@ msgstr "Pilih warna latar depan:" msgid "Select visualizations" msgstr "Pilih visualisasi" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Pilih visualisasi..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "Pilih..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Nomor seri" @@ -4272,51 +4326,51 @@ msgstr "Server URL" msgid "Server details" msgstr "Detil-detil server" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Layanan offline" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Atur %1 to \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Atur volume ke persen" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Atur nilai untuk semua trek terpilih..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Pengaturan" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Jalan pintas" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Jalan pintas untuk %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Jalan pintas untuk %1 yang sudah ada" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Tunjukkan" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Tunjukkan OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Tampilkan animasi bersinar di trek saat ini" @@ -4344,15 +4398,15 @@ msgstr "Tampilkan popup dari system tray" msgid "Show a pretty OSD" msgstr "Tampilkan OSD cantik" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Tampilkan di atas status bar" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Tunjukkan semua lagu" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Tunjukkan semua lagu" @@ -4364,32 +4418,36 @@ msgstr "Tampilkan sampul di pustaka" msgid "Show dividers" msgstr "Tampilkan pembagi" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Tampilkan ukuran penuh" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Tunjukkan grup dalam hasil pencarian global" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Tampilkan di browser berkas" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." -msgstr "" +msgstr "Tampilkan dalam pustaka..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Tampilkan berbagai artis" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Tunjukkan moodbar" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Tampilkan hanya yang duplikat" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Tampilkan hanya yang tak berlabel" @@ -4398,8 +4456,8 @@ msgid "Show search suggestions" msgstr "Tunjukkan saran pencarian" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Tampilkan tombol \"cinta\" dan \"larangan\"" +msgid "Show the \"love\" button" +msgstr "Tunjukkan tombol \"love\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4413,27 +4471,27 @@ msgstr "Tampilkan ikon tray" msgid "Show which sources are enabled and disabled" msgstr "Tampilkan sumber yang diaktifkan dan dinonaktifkan" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Tampilkan/Sembunyikan" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Acak" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Acak album" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Acak Semua" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Acak daftar lagu" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Acak trek dalam album ini" @@ -4449,7 +4507,7 @@ msgstr "Keluar" msgid "Signing in..." msgstr "Masuk" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Artis serupa" @@ -4461,43 +4519,51 @@ msgstr "Ukuran" msgid "Size:" msgstr "Ukuran:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Lewati daftar lagu mundur" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Lewati hitungan" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Lewati daftar laju maju" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Sampul album kecil" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Bilah samping kecil" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Daftar lagu pintar" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Daftar lagu pintar" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4505,11 +4571,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informasi Lagu" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info lagu" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4529,15 +4595,23 @@ msgstr "Urut berdasarkan genre (popularitas)" msgid "Sort by station name" msgstr "Urut berdasarkan nama stasiun" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Urut daftar lagu secara alfabet" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Urut lagu berdasarkan" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Mengurutkan" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Sumber" @@ -4553,7 +4627,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify masuk error" @@ -4561,7 +4635,7 @@ msgstr "Spotify masuk error" msgid "Spotify plugin" msgstr "Plugin Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Plugin Spotify tidak terinstal" @@ -4569,77 +4643,77 @@ msgstr "Plugin Spotify tidak terinstal" msgid "Standard" msgstr "Standar" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Berbintang" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Mulai putar daftar lagu terkini" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Mulai transcoding" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Mulai mengetik sesuatu di kotak pencarian di atas untuk mengisi daftar hasil pencarian" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Memulai %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Memulai..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stasiun-stasiun" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Berhenti" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Berhenti setelah" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Berhenti setelah trek ini" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Hentikan pemutaran" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Hentikan putaran setelah trek yang ini" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Berhenti" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4649,7 +4723,7 @@ msgstr "Streaming dari server Subsonic memerlukan lisensi server yang sah setela msgid "Streaming membership" msgstr "Stream keanggotaan" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Daftar lagu langganan" @@ -4657,7 +4731,7 @@ msgstr "Daftar lagu langganan" msgid "Subscribers" msgstr "Pelanggan" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4665,12 +4739,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Sukses!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Berhasil tertulis %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Label yang disarankan" @@ -4679,13 +4753,13 @@ msgstr "Label yang disarankan" msgid "Summary" msgstr "Ringkasan" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Super tinggi (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super tinggi (2048x2048)" @@ -4697,43 +4771,35 @@ msgstr "Format yang didukung" msgid "Synchronize statistics to files now" msgstr "Sinkronisasi statistik ke berkas sekarang" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Sinkronisasi inbox Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Sinkronisasi daftar lagu Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Sinkronisasi trek Spotify berbintang" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Warna sistem" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Tab di atas" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Label" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Pengambil label" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Label radio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Target laju bit" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tekno" @@ -4741,11 +4807,11 @@ msgstr "Tekno" msgid "Text options" msgstr "Pilihan teks" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Terima kasih kepada" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Perintah \"%1\" tidak dapat dimulai" @@ -4754,17 +4820,12 @@ msgstr "Perintah \"%1\" tidak dapat dimulai" msgid "The album cover of the currently playing song" msgstr "Sampul album dari lagu yang sedang dimainkan" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Direktori %1 tidak sah" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Daftar lagu '%1' kosong atau tidak dapat dimuat" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Nilai kedua harus lebih besar dari yang pertama!" @@ -4772,40 +4833,40 @@ msgstr "Nilai kedua harus lebih besar dari yang pertama!" msgid "The site you requested does not exist!" msgstr "Situs yang Anda minta tidak ada!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Situs yang Anda minta bukan gambar!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Masa uji coba untuk server Subsonic sudah berakhir. Silakan donasi untuk mendapatkan kunci lisensi. Kunjungi subsonic.org untuk lebih detil." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Versi Clementine yang baru saja Anda diperbarui memerlukan pemindaian ulang penuh pada pustaka karena fitur-fitur baru yang tercantum di bawah ini:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Ada lagu lainnya dalam album ini" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Ada masalah komunikasi dengan gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Ada masalah pengambilan metadata dari Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Ada masalah dalam respon penguraian dari Toko iTunes" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4817,13 +4878,13 @@ msgid "" "deleted:" msgstr "Ada masalah dalam menghapus beberapa lagu. Berkas-berkas berikut tidak dapat dihapus:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Berkas-berkas berikut akan dihapus dari perangkat, Anda yakin ingin melanjutkan?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4843,13 +4904,13 @@ msgstr "Pengaturan ini digunakan dalam dialog \"Transcode Music\", dan ketika me msgid "Third level" msgstr "Tingkat ketiga" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Tindakan ini akan membuat database yang bisa menjadi sebesar 150 MB. \nApakah Anda ingin melanjutkan?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Album ini tidak tersedia dalam format yang diminta" @@ -4863,11 +4924,11 @@ msgstr "Perangkat ini harus terhubung dan dibuka sebelum Clementine dapat meliha msgid "This device supports the following file formats:" msgstr "Perangkat ini mendukung format file berikut:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Perangkat ini tidak akan bekerja dengan baik" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Ini adalah perangkat MTP, tetapi Anda mengkompilasi Clementine tanpa dukungan libmtp." @@ -4876,7 +4937,7 @@ msgstr "Ini adalah perangkat MTP, tetapi Anda mengkompilasi Clementine tanpa duk msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Ini adalah iPod, tetapi Anda mengkompilasi Clementine tanpa dukungan libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4886,33 +4947,33 @@ msgstr "Ini adalah pertama kalinya Anda telah menghubungkan perangkat ini. Cleme msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Pilihan ini dapat diubah di pengaturan \"Sifat\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Stream ini hanya untuk pelanggan berbayar" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Tipe perangkat ini tidak didukung: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Judul" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Untuk memulai radio Grooveshark, Anda harus terlebih dahulu mendengarkan beberapa lagu Grooveshark lainnya" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Hari Ini" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Aktifkan Pretty OSD" @@ -4920,27 +4981,27 @@ msgstr "Aktifkan Pretty OSD" msgid "Toggle fullscreen" msgstr "Aktifkan layar penuh" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Alihkan status antrian" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Alihkan scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Alihkan visibilitas tampilan layar cantik" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Besok" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Terlalu banyak pengalihan" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Trek puncak" @@ -4948,21 +5009,25 @@ msgstr "Trek puncak" msgid "Total albums:" msgstr "Total album:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Jumlah byte yang ditransfer" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Total permintaan jaringan yang dibuat" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Trek" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transcode Musik" @@ -4974,7 +5039,7 @@ msgstr "Transcode Log" msgid "Transcoding" msgstr "Transcoding" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Transcoding berkas %1 menggunakan thread %2" @@ -4983,11 +5048,11 @@ msgstr "Transcoding berkas %1 menggunakan thread %2" msgid "Transcoding options" msgstr "Pilihan transcoding" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbin" @@ -4995,72 +5060,72 @@ msgstr "Turbin" msgid "Turn off" msgstr "Matikan" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Password Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Username Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Lebar pita ultra (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Tidak dapat mengunduh %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Tidak diketahui" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Tipe-isi tidak diketahui" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Kesalahan tidak diketahui" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Batalkan setingan sampul" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Berhenti berlangganan" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Konser mendatang" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Perbarui" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Perbarui daftar lagu Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Perbarui semua podcast" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Perbarui perubahan folder pustaka " @@ -5068,7 +5133,7 @@ msgstr "Perbarui perubahan folder pustaka " msgid "Update the library when Clementine starts" msgstr "Perbarui pustaka ketika memulai Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Perbarui podcast ini" @@ -5076,21 +5141,21 @@ msgstr "Perbarui podcast ini" msgid "Updating" msgstr "Memperbaharui" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Perbarui %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Perbarui %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Perbarui pustaka" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Penggunaan" @@ -5098,11 +5163,11 @@ msgstr "Penggunaan" msgid "Use Album Artist tag when available" msgstr "Gunakan label Album Artis ketika tersedia" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gunakan tombol pintas Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Gunakan metadata penguatan putar ulang jika tersedia" @@ -5122,7 +5187,7 @@ msgstr "Gunakan kumpulan warna rekaan" msgid "Use a custom message for notifications" msgstr "Gunakan notifikasi ubahsuaian pesan" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Gunakan remot kontrol jaringan" @@ -5162,20 +5227,20 @@ msgstr "Gunakan pengaturan sistem proxy" msgid "Use volume normalisation" msgstr "Gunakan normalisasi volume" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Bekas" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Pengguna %1 tidak memiliki akun Grooveshark dimana pun" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Antarmuka" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5197,12 +5262,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Variabel laju bit" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Berbagai artis" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versi %1" @@ -5215,7 +5280,7 @@ msgstr "Tampilan" msgid "Visualization mode" msgstr "Mode visualisasi" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualisasi" @@ -5223,11 +5288,15 @@ msgstr "Visualisasi" msgid "Visualizations Settings" msgstr "Pengaturan Visualisasi" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Deteksi aktivitas suara" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5245,11 +5314,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Peringatkan saya ketika menutup tab playlist" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5257,7 +5326,7 @@ msgstr "Wav" msgid "Website" msgstr "Situs web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Mingguan" @@ -5283,32 +5352,32 @@ msgstr "Kenapa tidak coba..." msgid "Wide band (WB)" msgstr "Pita Lebar (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Remote Wii %1: aktif" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Remote Wii %1: terkoneksi" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Remote Wii %1: baterai kritis (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: non-aktif" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Remote Wii %1: terputus" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Remote Wii %1: baterai lemah (%2%)" @@ -5329,7 +5398,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5337,25 +5406,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Tanpa sampul:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Apakah Anda ingin memindahkan lagu lainnya dalam album ini seperti Beragam Artis?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Apakah Anda ingin menjalankan pemindaian ulang penuh sekarang?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Tulis semua statistik lagu kedalam berkas lagu" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nama pengguna dan kata sandi salah." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5367,11 +5436,11 @@ msgstr "Tahun" msgid "Year - Album" msgstr "Tahun - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Tahun" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Kemarin" @@ -5379,13 +5448,13 @@ msgstr "Kemarin" msgid "You are about to download the following albums" msgstr "Anda akan mendownload album-album berikut" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Anda akan membuang daftar lagu %1 dari favorit, Anda yakin?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5395,12 +5464,12 @@ msgstr "" msgid "You are not signed in." msgstr "Anda belum mendaftar masuk." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Anda mendaftar masuk sebagai %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Anda sudah terdaftar." @@ -5408,13 +5477,13 @@ msgstr "Anda sudah terdaftar." msgid "You can change the way the songs in the library are organised." msgstr "Anda dapat mengubah cara pengaturan lagu di perpustakaan." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Anda dapat mendengarkan secara gratis tanpa akun, tetapi anggota Premium dapat mendengarkan aliran berkualitas tinggi tanpa iklan." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5424,13 +5493,6 @@ msgstr "Anda dapat mendengarkan lagu Magnatune secara gratis tanpa akun. Pembeli msgid "You can listen to background streams at the same time as other music." msgstr "Anda dapat mendengarkan aliran latar belakang pada saat yang sama sebagai musik lainnya." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Anda dapat scrobble lagu secara gratis, tetapi hanya pelanggan berbayar bisa streaming Last.fm radio dari Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Anda dapat menggunakan Remote Wii sebagai remote control untuk Clementine. Lihat halaman pada wiki Clementineuntuk informasi lebih lanjut.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Anda tidak memiliki akun Grooveshark dimana pun." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Anda tidak memiliki akun Spotify Premium" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Anda tidak memiliki langganan yang aktif" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Anda sudah keluar dari Spotify, harap masukkan kembali kata sandi Anda di dialog pengaturan." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Anda sudah keluar dari Spotify, harap masukkan kembali kata sandi Anda." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Anda suka trek ini" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Anda perlu untuk memulai Sistem Preferensi dan membiarkan Clementine \"kontrol komputer anda\" untuk menggunakan cara pintas global di Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5475,17 +5551,11 @@ msgstr "Anda perlu untuk memulai Sistem Preferensi dan menyalakan \"\n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/clementine/language/is/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,7 +16,7 @@ msgstr "" "Language: is\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -41,9 +41,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -56,11 +56,16 @@ msgstr " pt" msgid " seconds" msgstr " sekúndur" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " lög" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 plötur" @@ -70,12 +75,12 @@ msgstr "%1 plötur" msgid "%1 days" msgstr "%1 dagar" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dögum síðan" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -85,48 +90,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 lagalistar (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 valið af" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 lag" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 lög" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 lög fundin" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 lög fundin (sýni %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 lög" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimodedev eining" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -140,18 +145,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n misheppnaðist" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n lokið" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n eftir" @@ -163,24 +171,24 @@ msgstr "&Samstilla texta" msgid "&Center" msgstr "&Miðjað" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Sérsnið" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Hjálp" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Fela %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Fela" @@ -188,23 +196,23 @@ msgstr "&Fela" msgid "&Left" msgstr "&Vinstri" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Ekkert" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Hætta" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -212,23 +220,23 @@ msgstr "" msgid "&Right" msgstr "&Hægri" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Teygja á dálkum til að koma glugga fyrir" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(breytilegt yfir mörg lög)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...og allir Amarok stuðningsaðilar" @@ -248,14 +256,10 @@ msgstr "" msgid "1 day" msgstr "1 dagur" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 lag" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -265,7 +269,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 slembin lög" @@ -273,12 +277,6 @@ msgstr "50 slembin lög" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -289,6 +287,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -297,38 +306,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Lag birtist á lagalista að ákveðnum skilyrðum uppfylltum" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -348,36 +357,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Um %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Um Clementine" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Um Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Nánar um notanda" @@ -389,11 +397,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Virkt/óvirkt Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -409,39 +421,39 @@ msgstr "" msgid "Add action" msgstr "Bæta við aðgerð" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Bæta við öðrum straumi" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Bæta við möppu..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Bæta við skrá..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Bæta við skrá til að millikóða" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Bæta við möppu" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Bæta við möppu..." @@ -453,11 +465,11 @@ msgstr "Bæta við nýrri möppu..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Bæta við leitarorði" @@ -521,6 +533,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -529,22 +545,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Bæta við straumi..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Bæta við lagalista" @@ -553,6 +581,10 @@ msgstr "Bæta við lagalista" msgid "Add to the queue" msgstr "Bæta við biðröð" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Bæta við wiimotedev ferli" @@ -582,15 +614,15 @@ msgstr "Bætt við í dag" msgid "Added within three months" msgstr "Bætt við innan síðustu þriggja mánaða" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Þróuð flokkun" @@ -598,12 +630,12 @@ msgstr "Þróuð flokkun" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Eftir afritun..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -611,11 +643,11 @@ msgstr "Eftir afritun..." msgid "Album" msgstr "Plata" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Plata (kjörstyrkur hljóðs fyrir öll lög)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -625,35 +657,36 @@ msgstr "Listamenn á plötu" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Plötuupplýsingar á jamendo.com" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Plötur með plötuumslagi" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Plötur án plötuumslaga" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Allar skrár (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Allar plötur" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Allir listamenn" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Allar skrár (*)" @@ -662,19 +695,19 @@ msgstr "Allar skrár (*)" msgid "All playlists (%1)" msgstr "Allir lagalistar (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Allir þýðendur" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Öll lög" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -699,30 +732,30 @@ msgstr "Alltaf að sýna aðalglugga" msgid "Always start playing" msgstr "Alltaf hefja spilun" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Villa kom upp við hleðslu iTunes gagnagrunns" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Villa kom upp við skrifun lýsigagna á %1" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Og:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -731,13 +764,13 @@ msgstr "" msgid "Appearance" msgstr "Útlit" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Bætar við skrám/URL í lagalista" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Bæta við núverandi lagalista" @@ -745,52 +778,47 @@ msgstr "Bæta við núverandi lagalista" msgid "Append to the playlist" msgstr "Bæta við lagalistann" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Ertu viss um að þú viljir eyða \"%1\" forstillingunni?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Flytjandi" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Upplýsingar um höfund" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -798,9 +826,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Auðkenning mistókst" @@ -808,7 +840,7 @@ msgstr "Auðkenning mistókst" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Höfundar" @@ -824,7 +856,7 @@ msgstr "Sjálfvirk uppfærsla" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Tiltækt" @@ -832,15 +864,15 @@ msgstr "Tiltækt" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +893,7 @@ msgstr "" msgid "Background opacity" msgstr "Gegnsæi bakgrunns" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -869,11 +901,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Bannað" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -893,18 +921,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -912,7 +939,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -928,7 +960,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -942,11 +974,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -958,43 +990,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1004,15 +1059,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1028,11 +1087,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1041,7 +1100,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1049,17 +1108,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1072,8 +1131,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1095,8 +1154,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1110,20 +1169,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1135,11 +1187,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1149,7 +1201,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1164,19 +1219,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1184,73 +1239,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1258,11 +1318,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1272,12 +1332,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1293,17 +1357,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1311,156 +1379,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1468,7 +1532,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1480,54 +1544,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1535,6 +1595,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1543,30 +1608,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1574,31 +1639,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Eyða upprunalegum skrám" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Eyði gögnum" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Áfangastaður" @@ -1607,7 +1672,7 @@ msgstr "Áfangastaður" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1619,15 +1684,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1664,12 +1729,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1679,15 +1749,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1699,27 +1769,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ekki endurtaka" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ekki hætta!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Tvíklikka til að opna" @@ -1727,12 +1797,13 @@ msgstr "Tvíklikka til að opna" msgid "Double clicking a song will..." msgstr "Tvíklikka á lag mun..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Niðurhalsskrá" @@ -1748,7 +1819,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1756,15 +1827,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Niðurhala þessari plötu" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Niðurhala þessari plötu..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1772,7 +1843,7 @@ msgstr "" msgid "Download..." msgstr "Niðurhala..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1781,23 +1852,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Niðurhala Spotify viðbót" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Dragðu til að endurstaðsetja" @@ -1817,20 +1888,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1842,16 +1913,16 @@ msgstr "" msgid "Edit track information" msgstr "Breyta upplýsingum um lag" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Breyta upplýsingum um lag..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Breyta upplýsingum um lög..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Breyta..." @@ -1859,6 +1930,10 @@ msgstr "Breyta..." msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1873,7 +1948,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1901,15 +1976,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1923,7 +1993,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1932,11 +2002,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1944,21 +2014,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Tónjafnari" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Villa" @@ -1966,38 +2037,38 @@ msgstr "Villa" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Villa við afritun laga" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Villa við eyðingu laga" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Villa kom upp við niðurhal á Spotify viðbót" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2029,7 +2100,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2041,7 +2112,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2062,36 +2133,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2101,42 +2172,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2145,11 +2216,11 @@ msgstr "" msgid "Fast" msgstr "Hratt" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Uppáhalds lög" @@ -2165,11 +2236,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2177,7 +2248,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2185,19 +2256,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Skráarnafn" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Skráarstærð" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2207,7 +2282,7 @@ msgstr "Tegund skráar" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Gögn" @@ -2215,15 +2290,19 @@ msgstr "Gögn" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Lokið" @@ -2231,7 +2310,7 @@ msgstr "Lokið" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2247,12 +2326,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2267,7 +2346,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2295,31 +2374,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2327,30 +2398,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2362,11 +2433,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2374,7 +2445,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2384,7 +2455,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2392,15 +2463,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2408,44 +2479,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2454,7 +2525,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2470,25 +2541,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2500,15 +2571,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2518,24 +2589,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2546,7 +2617,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2558,36 +2629,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2595,55 +2666,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2651,42 +2722,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2695,11 +2766,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2707,11 +2779,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2719,12 +2791,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2732,45 +2808,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2778,11 +2816,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2790,28 +2828,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2819,24 +2853,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2848,15 +2882,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2864,84 +2898,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2953,12 +2992,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2970,15 +3014,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2986,7 +3030,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2994,15 +3038,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3015,15 +3064,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3035,17 +3084,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3057,11 +3110,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3069,20 +3126,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3090,15 +3147,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3107,7 +3168,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3116,7 +3177,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3124,56 +3185,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3181,23 +3218,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3206,21 +3239,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3228,24 +3261,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3253,7 +3286,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3261,7 +3294,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3275,11 +3308,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3287,43 +3320,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3336,36 +3373,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3373,11 +3415,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3385,23 +3427,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3409,30 +3451,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3452,23 +3499,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3476,7 +3523,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3484,15 +3531,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3504,15 +3547,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3521,20 +3564,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3543,34 +3586,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3579,45 +3610,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3629,23 +3657,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3654,22 +3682,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3705,7 +3734,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3716,20 +3745,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3737,21 +3766,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3759,7 +3792,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3767,28 +3805,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3796,48 +3839,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3845,19 +3888,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3869,8 +3908,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3878,7 +3917,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3886,73 +3925,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3961,15 +4004,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3977,24 +4020,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4002,15 +4045,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4030,11 +4073,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4046,25 +4089,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4072,27 +4115,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4108,11 +4157,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4124,7 +4173,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4132,10 +4181,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4143,23 +4196,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4179,21 +4232,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4201,27 +4254,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4229,7 +4282,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4245,7 +4298,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4253,7 +4306,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4265,51 +4318,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4337,15 +4390,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4357,32 +4410,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4391,7 +4448,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4406,27 +4463,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4442,7 +4499,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4454,43 +4511,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4498,11 +4563,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4522,15 +4587,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4546,7 +4619,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4554,7 +4627,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4562,77 +4635,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4642,7 +4715,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4650,7 +4723,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4658,12 +4731,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4672,13 +4745,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4690,43 +4763,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4734,11 +4799,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4747,17 +4812,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4765,40 +4825,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4810,13 +4870,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4836,13 +4896,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4856,11 +4916,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4869,7 +4929,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4879,33 +4939,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4913,27 +4973,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4941,21 +5001,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4967,7 +5031,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4976,11 +5040,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4988,72 +5052,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5061,7 +5125,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5069,21 +5133,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5091,11 +5155,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5115,7 +5179,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5155,20 +5219,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5190,12 +5254,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5208,7 +5272,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5216,11 +5280,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5238,11 +5306,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5250,7 +5318,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5276,32 +5344,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5322,7 +5390,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5330,25 +5398,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5360,11 +5428,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5372,13 +5440,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5388,12 +5456,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5401,13 +5469,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5417,13 +5485,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5468,17 +5543,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5486,42 +5555,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5541,19 +5611,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5563,20 +5633,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5584,11 +5654,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5596,54 +5666,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5655,36 +5726,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/it.po b/src/translations/it.po index 129c3286a..5781da640 100644 --- a/src/translations/it.po +++ b/src/translations/it.po @@ -11,15 +11,15 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-05-11 11:21+0000\n" +"Last-Translator: Vincenzo Reale \n" "Language-Team: Italian (http://www.transifex.com/projects/p/clementine/language/it/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +44,9 @@ msgstr "giorni" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -59,11 +59,16 @@ msgstr " punti" msgid " seconds" msgstr " secondi" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " brani" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 brani)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -73,12 +78,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 giorni" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 giorni fa" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 di %2" @@ -88,48 +93,48 @@ msgstr "%1 di %2" msgid "%1 playlists (%2)" msgstr "%1 scalette (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 selezionate di" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 brano" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 brani" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 brani trovati" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 brani trovati (mostrati %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 tracce" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 trasferiti" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: modulo Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 altri ascoltatori" @@ -143,18 +148,21 @@ msgstr "%L1 riproduzioni totali" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n non riusciti" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n completati" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n rimanenti" @@ -166,24 +174,24 @@ msgstr "&Allinea il testo" msgid "&Center" msgstr "&Centrato" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personalizzata" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extra" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Aiuto" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Nascon&di %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Nascon&di..." @@ -191,23 +199,23 @@ msgstr "Nascon&di..." msgid "&Left" msgstr "A &sinistra" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Musica" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nessuna" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Scale&tta" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Esci" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Modalità di &ripetizione" @@ -215,23 +223,23 @@ msgstr "Modalità di &ripetizione" msgid "&Right" msgstr "A dest&ra" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Modalità di me&scolamento" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Allunga le colonne per adattarle alla fines&tra" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "S&trumenti" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(differente tra diversi brani)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...e tutti i collaboratori di Amarok" @@ -251,14 +259,10 @@ msgstr "0px" msgid "1 day" msgstr "un giorno" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "una traccia" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +272,7 @@ msgstr "MP3 128k" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 tracce casuali" @@ -276,12 +280,6 @@ msgstr "50 tracce casuali" msgid "Upgrade to Premium now" msgstr "Aggiorna subito a Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Crea un nuovo account o ripristina la tua password" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +290,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Se non marcata, Clementine proverà a salvare le valutazioni e le altre statistiche in un database separato senza modificare i tuoi file.

Se marcata, salverà le statistiche sia nel database che direttamente nei file ad ogni modifica.

Nota che potrebbe non funzionare per ogni formato e, dato che non esiste uno standard, altri lettori musicali potrebbero non essere in grado di leggerli.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Anteponi una parola con un nome di campo per limitare la ricerca a quel campo, ad es. artist:Bode cerca nella raccolta tutti gli artisti che contengono la parola Bode.

Campi disponibili: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +309,38 @@ msgid "" "activated.

" msgstr "

Scriverà le valutazioni e le statistiche nei tag dei brani della tua raccolta di brani.

Non è necessaria se l'opzione "Salva le valutazioni e le statistiche nei tag dei brani" è sempre stata attiva." -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Le variabili iniziano con %, ad esempio: %artist %album %title

\n\n

Se racchiudi sezioni di testo che contengono una variabile tra parentesi \ngraffe, queste sezioni saranno nascoste se la variabile non contiene alcun \nvalore.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "È richiesto un account Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "È richiesto un account Premium di Spotify" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Un client può connettersi solo se viene digitato il codice corretto." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Una scaletta veloce è un elenco dinamico di brani che deriva dalla tua raccolta. Ci sono diversi tipi di scaletta veloce che offrono modi diversi per selezionare un brano." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Un brano sarà incluso nella scaletta se verifica queste condizioni." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -351,36 +360,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "GLORIA ALL'IPNOROSPO" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Interrompi" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Informazioni su %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Informazioni su Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Informazioni su Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Dettagli dell'account" @@ -392,11 +400,15 @@ msgstr "Dettagli dell'account (Premium)" msgid "Action" msgstr "Azione" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Attiva/disattiva Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Flussi di attività" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Aggiungi podcast" @@ -412,39 +424,39 @@ msgstr "Aggiungi una nuova riga se supportato dal tipo di notifica" msgid "Add action" msgstr "Aggiungi azione" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Aggiungi un altro flusso..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Aggiungi cartella..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Aggiungi file" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Aggiungi file al transcodificatore" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Aggiungi file al transcodificatore" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Aggiungi file..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Aggiungi file da transcodificare" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Aggiungi cartella" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Aggiungi cartella..." @@ -456,11 +468,11 @@ msgstr "Aggiungi nuova cartella..." msgid "Add podcast" msgstr "Aggiungi podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Aggiungi podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Aggiungi termine di ricerca" @@ -524,6 +536,10 @@ msgstr "Aggiungi contatore salti al brano" msgid "Add song title tag" msgstr "Aggiungi il tag titolo al brano" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Aggiungi brano alla cache" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Aggiungi il tag traccia al brano" @@ -532,22 +548,34 @@ msgstr "Aggiungi il tag traccia al brano" msgid "Add song year tag" msgstr "Aggiungi il tag anno al brano" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Aggiungi i brani a \"La mia musica\" quando viene premuto il pulsante \"Mi piace\"" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Aggiungi flusso..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Aggiungi ai preferiti di Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Aggiungi alle scalette di Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Aggiungi alla mia musica" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Aggiungi a un'altra scaletta" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Aggiungi ai segnalibri" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Aggiungi alla scaletta" @@ -556,6 +584,10 @@ msgstr "Aggiungi alla scaletta" msgid "Add to the queue" msgstr "Aggiungi alla coda" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Aggiungi utente/gruppo ai segnalibri" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Aggiungi azione wiimotedev" @@ -585,15 +617,15 @@ msgstr "Aggiunti oggi" msgid "Added within three months" msgstr "Aggiunti negli ultimi tre mesi" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Aggiunta brani alla mia musica" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Aggiungere brani ai preferiti" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Raggruppamento avanzato..." @@ -601,12 +633,12 @@ msgstr "Raggruppamento avanzato..." msgid "After " msgstr "Dopo " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Dopo la copia..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +646,11 @@ msgstr "Dopo la copia..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (volume ideale per tutte le tracce)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +660,36 @@ msgstr "Artista dell'album" msgid "Album cover" msgstr "Copertina dell'album" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informazioni album su jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Album con copertina" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Album senza copertina" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Tutti i file (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Gloria, gloria all'ipnorospo!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Tutti gli album" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Tutti gli artisti" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Tutti i file (*)" @@ -665,19 +698,19 @@ msgstr "Tutti i file (*)" msgid "All playlists (%1)" msgstr "Tutte le scalette (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Tutti i traduttori" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Tutte le tracce" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Permetti a un client di scaricare musica da questo computer." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Consenti gli scaricamenti" @@ -702,30 +735,30 @@ msgstr "Mostra sempre la finestra principale" msgid "Always start playing" msgstr "Inizia sempre la riproduzione" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Un plugin aggiuntivo è richiesto per utilizzare Spotify in Clementine. Vuoi scaricarlo e installarlo subito?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Si è verificato un errore durante la il caricamento del database di iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Si è verificato un errore durante la scrittura dei metadati su '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Si è verificato un errore non specificato." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "E:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Arrabbiato" @@ -734,13 +767,13 @@ msgstr "Arrabbiato" msgid "Appearance" msgstr "Aspetto" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Aggiungi file/URL alla scaletta" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Aggiungi alla scaletta attuale" @@ -748,52 +781,47 @@ msgstr "Aggiungi alla scaletta attuale" msgid "Append to the playlist" msgstr "Aggiungi alla scaletta" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Applica la compressione per evitare il fruscio" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Sei sicuro di voler eliminare la preimpostazione \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Sei sicuro di voler eliminare questa scaletta?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Sei sicuro di voler azzerare le statistiche del brano?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Sei sicuro di voler scrivere le statistiche nei file dei brani della tua scaletta?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Info artista" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radio dell'artista" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Tag Artista" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Iniziale dell'artista" @@ -801,9 +829,13 @@ msgstr "Iniziale dell'artista" msgid "Audio format" msgstr "Formato audio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Uscita audio" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autenticazione non riuscita" @@ -811,7 +843,7 @@ msgstr "Autenticazione non riuscita" msgid "Author" msgstr "Autore" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autori" @@ -827,7 +859,7 @@ msgstr "Aggiornamento automatico" msgid "Automatically open single categories in the library tree" msgstr "Apri automaticamente categorie singole nell'albero della raccolta" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Disponibile" @@ -835,15 +867,15 @@ msgstr "Disponibile" msgid "Average bitrate" msgstr "Bitrate medio" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Dimensione immagine media" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +896,7 @@ msgstr "Immagine di sfondo" msgid "Background opacity" msgstr "Opacità dello sfondo" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Copia di sicurezza del database" @@ -872,11 +904,7 @@ msgstr "Copia di sicurezza del database" msgid "Balance" msgstr "Bilanciamento" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Vieta" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Analizzatore a barre" @@ -896,18 +924,17 @@ msgstr "Comportamento" msgid "Best" msgstr "Migliore" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografia da %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +942,12 @@ msgstr "Bitrate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Bitrate" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Analizzatore a blocchi" @@ -931,7 +963,7 @@ msgstr "Sfocatura" msgid "Body" msgstr "Corpo" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Analizzatore Boom" @@ -945,11 +977,11 @@ msgstr "Box" msgid "Browse..." msgstr "Sfoglia..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Durata del buffer" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Riempimento buffer in corso" @@ -961,43 +993,66 @@ msgstr "Queste fonti sono disabilitate:" msgid "Buttons" msgstr "Pulsanti" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "In modo predefinito, Grooveshark ordina i brani per data di aggiunta" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Supporto CUE sheet" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Percorso della cache:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Memorizzazione in cache" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Memorizzazione in cache di %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Annulla" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Il captcha è necessario.\nProva ad accedere a Vk.com con il browser, per risolvere il problema." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Cambia copertina" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Cambia dimensione dei caratteri..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Cambia la modalità di ripetizione" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Cambia la scorciatoia..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Cambia la modalità di mescolamento" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Cambia la lingua" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1062,19 @@ msgstr "La modifica dell'impostazione di riproduzione mono avrà effetto per i p msgid "Check for new episodes" msgstr "Verifica la presenza di nuove puntate" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Controlla aggiornamenti..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Scegli la cartella della cache di Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Scegli un nome per la scaletta veloce" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Scegli automaticamente" @@ -1031,11 +1090,11 @@ msgstr "Scegli carattere..." msgid "Choose from the list" msgstr "Scegli dall'elenco" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Scegli l'ordinamento della scaletta e quanti brani conterrà." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Scegli la cartella di destinazione dei podcast" @@ -1044,7 +1103,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Scegli i i siti web che Clementine utilizzerà durante la ricerca dei testi." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Classica" @@ -1052,17 +1111,17 @@ msgstr "Classica" msgid "Cleaning up" msgstr "Svuota" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Svuota" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Svuota la scaletta" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1075,8 +1134,8 @@ msgstr "Errore di Clementine" msgid "Clementine Orange" msgstr "Arancione clementino" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Visualizzazioni di Clementine" @@ -1098,9 +1157,9 @@ msgstr "Clementine può riprodurre la musica che hai caricato su Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine può riprodurre la musica che hai caricato su Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine può riprodurre la musica che hai caricato su Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine può riprodurre musica che hai caricato su OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1172,13 @@ msgid "" "an account." msgstr "Clementine può sincronizzare l'elenco delle tue sottoscrizioni con altri tuoi computer e applicazioni di gestione dei podcast. Crea un account." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine non può caricare alcuna visualizzazione projectM. Controlla che Clementine sia installato correttamente." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine non è in grado di scaricare lo stato di sottoscrizione a causa di problemi di connessione. Le tracce riprodotte saranno memorizzate in cache e inviate successivamente a Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Visualizzatore immagini di Clementine" @@ -1138,11 +1190,11 @@ msgstr "Clementine non ha trovato risultati per questo file" msgid "Clementine will find music in:" msgstr "Clementine troverà la musica in:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Fai clic qui per aggiungere della musica" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1204,10 @@ msgstr "Fai clic qui per aggiungere questa scaletta alle preferite in modo da sa msgid "Click to toggle between remaining time and total time" msgstr "Clic per passare dal tempo rimanente al tempo totale" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1222,19 @@ msgstr "Chiudi" msgid "Close playlist" msgstr "Chiudi la scaletta" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Chiudi la visualizzazione" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "La chiusura di questa finestra annullerà lo scaricamento." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "La chiusura di questa finestra fermerà la ricerca delle copertine." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1187,73 +1242,78 @@ msgstr "Club" msgid "Colors" msgstr "Colori" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Elenco separato da virgole di classe:livello, livello è 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Commento" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Radio della comunità" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Completa automaticamente i tag" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Completa automaticamente i tag..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compositore" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Configura %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Configura Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configura Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Configura Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configura scorciatoie" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configura Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Configura Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Configura Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Configura la ricerca globale..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configura raccolta..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Configura podcast..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configura..." @@ -1261,11 +1321,11 @@ msgstr "Configura..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Connetti i Wii Remote utilizzando l'azione attiva/disattiva" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Connetti dispositivo" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Connessione a Spotify in corso" @@ -1275,12 +1335,16 @@ msgid "" "http://localhost:4040/" msgstr "Connessione rifiutata dal server, controlla l'URL del server. Esempio: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Connessione scaduta, controlla l'URL del server. Esempio: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Problemi di connessione o l'audio è disabilitato dal proprietario" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Console" @@ -1296,17 +1360,21 @@ msgstr "Converti tutta la musica" msgid "Convert any music that the device can't play" msgstr "Converti qualsiasi musica che il dispositivo non può riprodurre" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Copia l'URL di condivisione negli appunti" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Copia negli appunti" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Copia su dispositivo..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copia nella raccolta..." @@ -1314,156 +1382,152 @@ msgstr "Copia nella raccolta..." msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Impossibile connettersi a Subsonic, controlla l'URL del server. Esempio: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Impossibile creare l'elemento «%1» di GStreamer - assicurati che tutti i plugin necessari siano installati" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Impossibile creare la scaletta" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Impossibile trovare un multiplatore per %1, verifica l'installazione del plugin GStreamer corretto" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Impossibile trovare un codificatore per %1, verifica l'installazione del plugin GStreamer corretto" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Impossibile caricare la stazione radio di last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Impossibile aprire il file di uscita %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Gestore delle copertine" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Copertina da immagine integrata" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Copertina caricata automaticamente da %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Copertina rimossa manualmente" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Copertina non impostata" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Copertina impostata da %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Copertine da %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Creare una nuova scaletta di Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Dissolvenza incrociata al cambio automatico di traccia" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Dissolvenza incrociata al cambio manuale di traccia" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Maiusc+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Maiusc+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Maiusc+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1535,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personalizzato" @@ -1483,54 +1547,50 @@ msgstr "Immagine personalizzata:" msgid "Custom message settings" msgstr "Impostazioni messaggio personalizzato" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Radio personalizzata" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personalizzato..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Percorso DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Il database risulta danneggiato. Leggi https://code.google.com/p/clementine-player/wiki/DatabaseCorruption per le istruzioni su come ripristinare il database" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data di modifica" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data di creazione" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Giorni" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Prede&finita" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Riduci il volume del 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Riduci il volume del percento" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Riduci il volume" @@ -1538,6 +1598,11 @@ msgstr "Riduci il volume" msgid "Default background image" msgstr "Immagine di sfondo predefinita" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Dispositivo predefinito su %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Valori predefiniti" @@ -1546,30 +1611,30 @@ msgstr "Valori predefiniti" msgid "Delay between visualizations" msgstr "Ritardo tra le visualizzazioni" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Elimina" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Elimina scaletta di Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Elimina i dati scaricati" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Elimina i file" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Elimina da dispositivo..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Elimina dal disco..." @@ -1577,31 +1642,31 @@ msgstr "Elimina dal disco..." msgid "Delete played episodes" msgstr "Elimina le puntate scaricate" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Elimina la preimpostazione" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Elimina la scaletta veloce" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Elimina i file originali" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Eliminazione dei file" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Rimuovi le tracce selezionate dalla coda" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Rimuovi tracce dalla coda" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinazione" @@ -1610,7 +1675,7 @@ msgstr "Destinazione" msgid "Details..." msgstr "Dettagli..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Dispositivo" @@ -1622,15 +1687,15 @@ msgstr "Proprietà del dispositivo" msgid "Device name" msgstr "Nome del dispositivo" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Proprietà del dispositivo..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Dispositivi" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Finestra" @@ -1667,12 +1732,17 @@ msgstr "Disabilita la durata" msgid "Disable moodbar generation" msgstr "Disabilita la creazione della barra dell'atmosfera" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Disabilitata" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Disabilitata" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1682,15 +1752,15 @@ msgid "Discontinuous transmission" msgstr "Trasmissione discontinua" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opzioni di visualizzazione" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Visualizza l'on-screen-display" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Esegui una nuova scansione completa della raccolta" @@ -1702,27 +1772,27 @@ msgstr "Non convertire qualsiasi musica" msgid "Do not overwrite" msgstr "Non sovrascrivere" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Non ripetere" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Non mostrare in artisti vari" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Non mescolare" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Non fermare!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Donazione" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Doppio clic per aprire" @@ -1730,12 +1800,13 @@ msgstr "Doppio clic per aprire" msgid "Double clicking a song will..." msgstr "Al doppio clic su un brano..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Scarica %n puntate" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Cartella degli scaricamenti" @@ -1751,7 +1822,7 @@ msgstr "Scaricamento" msgid "Download new episodes automatically" msgstr "Scarica automaticamente le nuove puntate" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Scaricamento accodato" @@ -1759,15 +1830,15 @@ msgstr "Scaricamento accodato" msgid "Download the Android app" msgstr "Scarica l'applicazione per Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Scarica questo album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Scarica questo album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Scarica questa puntata" @@ -1775,7 +1846,7 @@ msgstr "Scarica questa puntata" msgid "Download..." msgstr "Scarica..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Scaricamento in corso (%1%)..." @@ -1784,23 +1855,23 @@ msgstr "Scaricamento in corso (%1%)..." msgid "Downloading Icecast directory" msgstr "Scaricamento directory Icecast in corso" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Scaricamento catalogo Jamendo in corso" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Scaricamento catalogo Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Scarica il plugin di Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Scaricamento metadati in corso" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Trascina per riposizionare" @@ -1820,20 +1891,20 @@ msgstr "Durata" msgid "Dynamic mode is on" msgstr "La modalità dinamica è attiva" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Misto casuale dinamico" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Modifica la scaletta veloce..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Modifica tag \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Modifica tag..." @@ -1845,16 +1916,16 @@ msgstr "Modifica i tag" msgid "Edit track information" msgstr "Modifica informazioni della traccia" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Modifica informazioni sulla traccia..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Modifica le informazioni sulle tracce..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Modifica..." @@ -1862,6 +1933,10 @@ msgstr "Modifica..." msgid "Enable Wii Remote support" msgstr "Abilita il supporto del Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Abilita la memorizzazione automatica in cache" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Abilita equalizzatore" @@ -1876,7 +1951,7 @@ msgid "" "displayed in this order." msgstr "Abilita le fonti seguenti per includerle nei risultati di ricerca. I risultati saranno visualizzati in questo ordine." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Abilita/Disabilita lo scrobble di Last.fm" @@ -1904,15 +1979,10 @@ msgstr "Inserisci un URL per scaricare una copertina da Internet:" msgid "Enter a filename for exported covers (no extension):" msgstr "Digita un nome file per le copertine esportate (nessuna estensione):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Inserisci un nuovo nome per questa scaletta" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Inserisci un artista o un tag per iniziare l'ascolto di una radio Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1996,7 @@ msgstr "Digita i termini di ricerca qui sotto per trovare podcast sull'iTunes St msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Digita i termini di ricerca qui sotto per trovare podcast su gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Inserisci qui i termini di ricerca" @@ -1935,11 +2005,11 @@ msgstr "Inserisci qui i termini di ricerca" msgid "Enter the URL of an internet radio stream:" msgstr "Inserisci l'URL di flusso radio in Internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Digita il nome della cartella" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Digita questo IP nell'applicazione per connetterti a Clementine." @@ -1947,21 +2017,22 @@ msgstr "Digita questo IP nell'applicazione per connetterti a Clementine." msgid "Entire collection" msgstr "Collezione completa" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizzatore" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Equivalente a --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Equivalente a --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Errore" @@ -1969,38 +2040,38 @@ msgstr "Errore" msgid "Error connecting MTP device" msgstr "Errore in fase di collegamento del dispositivo MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Errore durante la copia dei brani" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Errore durante l'eliminazione dei brani" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Errore di scaricamento del plugin di Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Errore durante il caricamento di %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Errore durante il caricamento della scaletta di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Errore durante l'elaborazione di %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Errore nel caricamento del CD audio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Mai riprodotte" @@ -2032,7 +2103,7 @@ msgstr "Ogni 6 ore" msgid "Every hour" msgstr "Ogni ora" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Ad eccezione delle tracce dello stesso album o dello stesso CUE sheet" @@ -2044,7 +2115,7 @@ msgstr "Copertine esistenti" msgid "Expand" msgstr "Espandi" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Scade il %1" @@ -2065,36 +2136,36 @@ msgstr "Esporta le copertine scaricate" msgid "Export embedded covers" msgstr "Esporta le copertine integrate" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Esporta completate" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Esportate %1 copertine di %2 (%3 saltate)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2175,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Dissolvenza in uscita in pausa / dissolvenza in entrata al ripristino" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Dissolvenza all'interruzione di una traccia" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Dissolvenza" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Durata della dissolvenza" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Lettura del CD non riuscita" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Recupero della cartella non riuscito" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Recupero del podcast non riuscito" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Caricamento del podcast non riuscito" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Analisi XML non riuscita per questa fonte RSS" @@ -2148,11 +2219,11 @@ msgstr "Analisi XML non riuscita per questa fonte RSS" msgid "Fast" msgstr "Veloce" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Preferiti" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Tracce preferite" @@ -2168,11 +2239,11 @@ msgstr "Scarica automaticamente" msgid "Fetch completed" msgstr "Scaricamento completato" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Scaricamento della libreria di Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Errore di scaricamento della copertina" @@ -2180,7 +2251,7 @@ msgstr "Errore di scaricamento della copertina" msgid "File Format" msgstr "Formato file" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Estensione file" @@ -2188,19 +2259,23 @@ msgstr "Estensione file" msgid "File formats" msgstr "Formati dei file" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nome file" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nome file (senza percorso)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Modello di nome del file:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dimensione file" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2285,7 @@ msgstr "Tipo file" msgid "Filename" msgstr "Nome file" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "File" @@ -2218,15 +2293,19 @@ msgstr "File" msgid "Files to transcode" msgstr "File da transcodificare" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Trova i brani nella tua raccolta che corrispondono ai criteri specificati." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Trova questo artista" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Creazione impronta del brano" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Fine" @@ -2234,7 +2313,7 @@ msgstr "Fine" msgid "First level" msgstr "Primo livello" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2329,12 @@ msgstr "Per motivi di licenza, il supporto di Spotify è in un plugin separato." msgid "Force mono encoding" msgstr "Forza codifica mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Elimina dispositivo" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2349,7 @@ msgstr "L'eliminazione di un dispositivo lo rimuoverà da questo elenco e Clemen #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2377,23 @@ msgstr "Velocità fotogrammi" msgid "Frames per buffer" msgstr "Struttura per buffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Amici" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Gelido" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Bassi al massimo" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Bassi e alti al massimo" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Alti al massimo" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Motore audio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Generale" @@ -2330,30 +2401,30 @@ msgstr "Generale" msgid "General settings" msgstr "Impostazioni generali" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genere" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Ottieni un URL per condividere questa scaletta di Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Ottieni un URL per condividere questo brano di Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Ottenere i brani più ascoltati di Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Recupero dei canali" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Recupero flussi" @@ -2365,11 +2436,11 @@ msgstr "Dagli un nome:" msgid "Go" msgstr "Vai" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Vai alla scheda della scaletta successiva" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Vai alla scheda della scaletta precedente" @@ -2377,7 +2448,7 @@ msgstr "Vai alla scheda della scaletta precedente" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2458,7 @@ msgstr "Ottenute %1 copertine di %2 (%3 non riuscito)" msgid "Grey out non existent songs in my playlists" msgstr "Colora di grigio i brani della scaletta non esistenti" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2466,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Errore di accesso a Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL della scaletta di Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Radio di Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL del brano di Grooveshark" @@ -2411,44 +2482,44 @@ msgstr "URL del brano di Grooveshark" msgid "Group Library by..." msgstr "Raggruppa raccolta per..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Raggruppa per" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Raggruppa per album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Raggruppa per artista" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Raggruppa per artista/album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Raggruppa per artista/anno - album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Raggruppa per genere/album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Raggruppa per genere/artista/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppo" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "La pagina HTML non contiene alcuna fonte RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Ricevuto codice di stato HTTP 3xx senza URL, verifica la configurazione del server." @@ -2457,7 +2528,7 @@ msgstr "Ricevuto codice di stato HTTP 3xx senza URL, verifica la configurazione msgid "HTTP proxy" msgstr "Proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Felice" @@ -2473,25 +2544,25 @@ msgstr "Le informazioni hardware sono disponibili solo quando il dispositivo è msgid "High" msgstr "Alto" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Alto (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Alta (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Host non trovato, controlla l'URL del server. Esempio: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Ore" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Ipnorospo" @@ -2503,15 +2574,15 @@ msgstr "Non ho un account Magnatune" msgid "Icon" msgstr "Icona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Icone in alto" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identificazione del brano in corso" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2592,24 @@ msgstr "Se continui, il dispositivo funzionerà lentamente e i brani copiati su msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Se conosci l'URL di un podcast, digitalo qui sotto e premi Vai." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignora \"The\" nei nomi degli artisti" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Immagini (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Immagini (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Tra %1 giorni" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Tra %1 settimane" @@ -2549,7 +2620,7 @@ msgid "" "time a song finishes." msgstr "Nella modalità dinamica le nuove tracce saranno scelte e aggiunte alla scaletta al termine di ogni brano." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "In arrivo" @@ -2561,135 +2632,135 @@ msgstr "Includi copertina nella notifica" msgid "Include all songs" msgstr "Includi tutti i brani" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Versione del protocollo REST di Subsonic incompatibile. Aggiornare il client." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Versione del protocollo REST di Subsonic incompatibile. Aggiornare il server." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Configurazione incompleta, assicurati che tutti i campi siano popolati." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Aumenta il volume del 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Aumenta il volume del percento" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Aumenta il volume" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indicizzazione di %1 in corso..." -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informazioni" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Opzioni di ingresso" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Inserisci..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Installati" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Controllo d'integrità" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Fornitori Internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Chiave API non valida" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Formato non valido" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Metodo non valido" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parametri non validi" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Risorsa specificata non valida" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Servizio non valido" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Chiave di sessione non valida" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Nome utente e/o password non valida" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Inverti la selezione" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Tracce più ascoltate di Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Tracce preferite di Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Tracce preferite del mese di Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Tracce preferite della settimana di Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Database di Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Salta alla traccia in riproduzione" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Trattieni i pulsanti per %1 secondo..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Trattieni i pulsanti per %1 secondi..." @@ -2698,11 +2769,12 @@ msgstr "Trattieni i pulsanti per %1 secondi..." msgid "Keep running in the background when the window is closed" msgstr "Mantieni l'esecuzione sullo sfondo quando la finestra è chiusa" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Mantieni i file originali" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Gattini" @@ -2710,11 +2782,11 @@ msgstr "Gattini" msgid "Language" msgstr "Lingua" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Portatile/Cuffie" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Sala grande" @@ -2722,12 +2794,16 @@ msgstr "Sala grande" msgid "Large album cover" msgstr "Copertina grande" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Pannello laterale grande" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Ultima riproduzione" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Ultima riproduzione" @@ -2735,45 +2811,7 @@ msgstr "Ultima riproduzione" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Radio personalizzata di Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Raccolta di Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Radio mista di Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Radio dei vicini di Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Stazione radio di Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Artisti simili a %1 di Last.fm" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Radio del tag di Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Al momento Last.fm non è disponibile, prova ancora tra qualche minuto" @@ -2781,11 +2819,11 @@ msgstr "Al momento Last.fm non è disponibile, prova ancora tra qualche minuto" msgid "Last.fm password" msgstr "Password di Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Contatore riproduzioni di Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Etichette di Last.fm" @@ -2793,28 +2831,24 @@ msgstr "Etichette di Last.fm" msgid "Last.fm username" msgstr "Nome utente di Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki di Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Tracce meno apprezzate" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Lascia vuoto il campo per il valore predefinito. Esempi: \"/dev/dsp\", \"front\", ecc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Sinistra" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durata" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Raccolta" @@ -2822,24 +2856,24 @@ msgstr "Raccolta" msgid "Library advanced grouping" msgstr "Raggruppamento avanzato della raccolta" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Notifica nuova scansione della raccolta" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Cerca nella raccolta" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limiti" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Ascolta brani di Grooveshark in base a quello che hai ascoltato in precedenza" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2851,15 +2885,15 @@ msgstr "Carica" msgid "Load cover from URL" msgstr "Carica copertina da URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Carica copertina da URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Carica copertina dal disco" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Carica copertina da disco..." @@ -2867,84 +2901,89 @@ msgstr "Carica copertina da disco..." msgid "Load playlist" msgstr "Carica la scaletta" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Carica la scaletta..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Caricamento radio Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Caricamento del dispositivo MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Caricamento database dell'iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Caricamento scaletta veloce" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Caricamento brani in corso" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Caricamento flusso" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Caricamento delle tracce" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Caricamento informazioni della traccia" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Caricamento in corso..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Carica file/URL, sostituendo la scaletta attuale" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Accedi" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Accesso non riuscito" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Disconnetti" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Profilo con predizione di lungo termine (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Mi piace" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Basso (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Bassa (256x256)" @@ -2956,12 +2995,17 @@ msgstr "Profilo a bassa complessità (LC)" msgid "Lyrics" msgstr "Testi" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Testi da %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3017,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2989,7 +3033,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Scaricamento di Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Scaricamento di Magnatune completato" @@ -2997,15 +3041,20 @@ msgstr "Scaricamento di Magnatune completato" msgid "Main profile (MAIN)" msgstr "Profilo principale (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Procedi" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Procedi" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Rendi la scaletta disponibile non in linea" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Risposta non corretta" @@ -3018,15 +3067,15 @@ msgstr "Configurazione manuale del proxy" msgid "Manually" msgstr "Manualmente" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Produttore" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Marca come ascoltata" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Marca come nuova" @@ -3038,17 +3087,21 @@ msgstr "Verifica ogni termine di ricerca (AND)" msgid "Match one or more search terms (OR)" msgstr "Verifica uno o più termini di ricerca (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Numero massimo di risultati della ricerca globale" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Bitrate massimo" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Medio (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Media (512x512)" @@ -3060,11 +3113,15 @@ msgstr "Tipo d'iscrizione" msgid "Minimum bitrate" msgstr "Bitrate minimo" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Valore minimo buffer" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Preimpostazioni projectM mancanti" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modello" @@ -3072,20 +3129,20 @@ msgstr "Modello" msgid "Monitor the library for changes" msgstr "Controlla i cambiamenti alla raccolta" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Riproduzione mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Mesi" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Atmosfera" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Stile della barra dell'atmosfera" @@ -3093,15 +3150,19 @@ msgstr "Stile della barra dell'atmosfera" msgid "Moodbars" msgstr "Barre dell'atmosfera" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Altro" + +#: library/library.cpp:84 msgid "Most played" msgstr "Più riprodotti" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Punto di mount" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Punti di mount" @@ -3110,7 +3171,7 @@ msgstr "Punti di mount" msgid "Move down" msgstr "Sposta in basso" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Sposta nella raccolta..." @@ -3119,7 +3180,7 @@ msgstr "Sposta nella raccolta..." msgid "Move up" msgstr "Sposta in alto" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musica" @@ -3127,56 +3188,32 @@ msgstr "Musica" msgid "Music Library" msgstr "Raccolta musicale" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Silenzia" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "La mia libreria di Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "La mia radio mista di Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "I miei vicini di Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "La mia radio consigliata di Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "La mia radio mista" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "La mia musica" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "I miei vicini" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "La mia stazione radio" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "I miei consigli" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nome" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nome" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opzioni di assegnazione dei nomi" @@ -3184,23 +3221,19 @@ msgstr "Opzioni di assegnazione dei nomi" msgid "Narrow band (NB)" msgstr "Banda stretta (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Vicini" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proxy di rete" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Telecomando di rete" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Mai" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Mai riprodotte" @@ -3209,21 +3242,21 @@ msgstr "Mai riprodotte" msgid "Never start playing" msgstr "Non iniziare mai la riproduzione" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nuova cartella" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nuova scaletta" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nuova scaletta veloce..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nuovi brani" @@ -3231,24 +3264,24 @@ msgstr "Nuovi brani" msgid "New tracks will be added automatically." msgstr "Le nuove tracce saranno aggiunte automaticamente." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Tracce più recenti" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Successivo" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Traccia successiva" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Settimana prossima" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Nessun analizzatore" @@ -3256,7 +3289,7 @@ msgstr "Nessun analizzatore" msgid "No background image" msgstr "Nessuna immagine di sfondo" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Nessuna copertina da esportare." @@ -3264,7 +3297,7 @@ msgstr "Nessuna copertina da esportare." msgid "No long blocks" msgstr "Nessun blocco lungo" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nessuna corrispondenza trovata. Svuota il campo di ricerca per mostrare nuovamente la scaletta completa." @@ -3278,11 +3311,11 @@ msgstr "Nessun blocco corto" msgid "None" msgstr "Nessuna" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nessuna delle canzoni selezionate era adatta alla copia su un dispositivo" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normale" @@ -3290,43 +3323,47 @@ msgstr "Normale" msgid "Normal block type" msgstr "Tipo di blocco normale" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Non disponibile mentre si utilizza una scaletta dinamica" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Non connesso" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Contenuti non sufficienti" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Non ci sono abbastanza ammiratori" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Membri non sufficienti" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Vicini non sufficienti" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Non installati" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Accesso non effettuato" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Non montato - doppio clic per montare" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Nessun risultato" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Tipo di notifica" @@ -3339,36 +3376,41 @@ msgstr "Notifiche" msgid "Now Playing" msgstr "In riproduzione" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Anteprima OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Spento" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Acceso" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3418,11 @@ msgid "" "192.168.x.x" msgstr "Accetta connessioni da client all'interno degli intervalli di IP: 10.x.x.x 172.16.0.0 - 172.31.255.255 192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Consenti solo connessioni dalla rete locale" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Mostra solo la prima" @@ -3388,23 +3430,23 @@ msgstr "Mostra solo la prima" msgid "Opacity" msgstr "Opacità" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Apri %1 nel browser" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Apri CD &audio..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Apri file OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Apri file OPML..." @@ -3412,30 +3454,35 @@ msgstr "Apri file OPML..." msgid "Open device" msgstr "Apri dispositivo" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Apri file..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Apri in Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Apri in nuova scaletta" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Apri in una nuova scaletta" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Apri nel browser" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Apri..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operazione non riuscita" @@ -3455,23 +3502,23 @@ msgstr "Opzioni..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizza file" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizza file..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organizzazione file" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Tag originali" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Altre opzioni" @@ -3479,7 +3526,7 @@ msgstr "Altre opzioni" msgid "Output" msgstr "Uscita" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Dispositivo di uscita" @@ -3487,15 +3534,11 @@ msgstr "Dispositivo di uscita" msgid "Output options" msgstr "Opzioni di uscita" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Plugin di uscita" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Sovrascrivi tutte" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Sovrascrivi i file esistenti" @@ -3507,15 +3550,15 @@ msgstr "Sovrascrivi solo le più piccole" msgid "Owner" msgstr "Proprietario" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Analisi del catalogo di Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Festa" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3567,20 @@ msgstr "Festa" msgid "Password" msgstr "Password" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pausa" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Sospendi riproduzione" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "In pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Musicista" @@ -3546,34 +3589,22 @@ msgstr "Musicista" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Barra laterale semplice" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Riproduci" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Riproduci artista o tag" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Riproduci radio dell'artista..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Contatore di riproduzione" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Riproduci radio personalizzata..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Riproduci se fermata, sospendi se in riproduzione" @@ -3582,45 +3613,42 @@ msgstr "Riproduci se fermata, sospendi se in riproduzione" msgid "Play if there is nothing already playing" msgstr "Riproduci se non c'è altro in riproduzione" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Riproduci radio del tag..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Riproduci la traccia numero della scaletta" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Riproduci/Pausa" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Riproduzione" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opzioni del lettore" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Scaletta" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Scaletta terminata" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opzioni della scaletta" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tipo di scaletta" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Scalette" @@ -3632,23 +3660,23 @@ msgstr "Chiudi il browser e ritorna a Clementine." msgid "Plugin status:" msgstr "Stato del plugin:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Brani popolari" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "I brani più ascoltati del mese" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "I brani più ascoltati oggi" @@ -3657,22 +3685,23 @@ msgid "Popup duration" msgstr "Durata del fumetto" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Porta" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Preamplificazione" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Preferenze" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Preferenze..." @@ -3708,7 +3737,7 @@ msgstr "Premi una combinazione da utilizzare per" msgid "Press a key" msgstr "Premi un tasto" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Premi una combinazione di tasto da utilizzare per %1..." @@ -3719,20 +3748,20 @@ msgstr "Opzioni OSD gradevole" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Anteprima" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Precedente" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Traccia precedente" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Mostra le informazioni di versione" @@ -3740,21 +3769,25 @@ msgstr "Mostra le informazioni di versione" msgid "Profile" msgstr "Profilo" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Avanzamento" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Avanzamento" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psichedelica" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Premi pulsante del Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Metti i brani in ordine casuale" @@ -3762,7 +3795,12 @@ msgstr "Metti i brani in ordine casuale" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Qualità" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Qualità" @@ -3770,28 +3808,33 @@ msgstr "Qualità" msgid "Querying device..." msgstr "Interrogazione dispositivo..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Gestore della coda" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Accoda le tracce selezionate" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Accoda la traccia" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (volume uguale per tutte le tracce)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Pioggia" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Pioggia" @@ -3799,48 +3842,48 @@ msgstr "Pioggia" msgid "Random visualization" msgstr "Visualizzazione casuale" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Valuta il brano corrente con 0 stelle" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Valuta il brano corrente con 1 stella" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Valuta il brano corrente con 2 stelle" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Valuta il brano corrente con 3 stelle" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Valuta il brano corrente con 4 stelle" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Valuta il brano corrente con 5 stelle" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Valutazione" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Vuoi davvero annullare?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Limite di redirezioni superato, verifica la configurazione del server." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Aggiorna" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Aggiorna catalogo" @@ -3848,19 +3891,15 @@ msgstr "Aggiorna catalogo" msgid "Refresh channels" msgstr "Aggiorna i canali" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Aggiorna l'elenco degli amici" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Aggiorna l'elenco delle stazioni" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Aggiorna i flussi" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3872,8 +3911,8 @@ msgstr "Ricorda il movimento del Wii remote" msgid "Remember from last time" msgstr "Ricorda l'ultima sessione" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Rimuovi" @@ -3881,7 +3920,7 @@ msgstr "Rimuovi" msgid "Remove action" msgstr "Rimuovi azione" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Rimuovi duplicati dalla scaletta" @@ -3889,73 +3928,77 @@ msgstr "Rimuovi duplicati dalla scaletta" msgid "Remove folder" msgstr "Rimuovi cartella" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Rimuovi dalla mia musica" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Rimuovi dai segnalibri" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Rimuovi dai preferiti" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Rimuovi dalla scaletta" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Rimuovi la scaletta" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Rimuovi scalette" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Rimozione brani dalla mia musica" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Rimozione brani dai preferiti" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Rinomina la scaletta \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Rinomina scaletta di Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Rinomina la scaletta" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Rinomina la scaletta..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Ricorda l'ordine delle tracce..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Ripeti" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Ripeti album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Ripeti scaletta" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Ripeti traccia" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Sostituisci la scaletta attuale" @@ -3964,15 +4007,15 @@ msgstr "Sostituisci la scaletta attuale" msgid "Replace the playlist" msgstr "Sostituisci la scaletta" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Sostituisci gli spazi con trattini bassi" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Guadagno di riproduzione" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Modalità guadagno di riproduzione" @@ -3980,24 +4023,24 @@ msgstr "Modalità guadagno di riproduzione" msgid "Repopulate" msgstr "Ripopolamento" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Richiedi il codice di autenticazione" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Azzera" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Azzera i contatori" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Riavvia la traccia, o riproduci la traccia precedente se entro 8 secondi dall'avvio." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Limita ai caratteri ASCII" @@ -4005,15 +4048,15 @@ msgstr "Limita ai caratteri ASCII" msgid "Resume playback on start" msgstr "Riprendi la riproduzione all'avvio" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Recupero brani dalla mia musica di Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Recuperare i brani preferiti di Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Recuperare le scalette di Grooveshark" @@ -4027,17 +4070,17 @@ msgstr "Destra" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Estrai" #: ui/ripcd.cpp:116 msgid "Rip CD" msgstr "Estrai CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Estrai CD &audio..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4049,25 +4092,25 @@ msgstr "Esegui" msgid "SOCKS proxy" msgstr "Proxy SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Errore di handshake SSL, verifica la configurazione del server. L'opzione SSLv3 seguente potrebbe risolvere alcuni problemi." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Rimuovi il dispositivo in sicurezza" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Rimuovi il dispositivo in sicurezza al termine della copia" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Campionamento" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Campionamento" @@ -4075,27 +4118,33 @@ msgstr "Campionamento" msgid "Save .mood files in your music library" msgstr "Salva i file .mood nella raccolta" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Salva la copertina dell'album" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Salva la copertina su disco..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Salva l'immagine" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Salva la scaletta" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Salva la scaletta" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Salva la scaletta..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Salva la preimpostazione" @@ -4111,11 +4160,11 @@ msgstr "Salva le statistiche nei tag dei file quando è possibile" msgid "Save this stream in the Internet tab" msgstr "Salva questo flusso nella scheda Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Salvare le statistiche dei brani nei file" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Salvataggio tracce in corso" @@ -4127,7 +4176,7 @@ msgstr "Profilo con campionamento scalabile (SSR)" msgid "Scale size" msgstr "Riscala le dimensioni" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Punteggio" @@ -4135,10 +4184,14 @@ msgstr "Punteggio" msgid "Scrobble tracks that I listen to" msgstr "Scrobbling delle tracce ascoltate" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Cerca" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Cerca" @@ -4146,23 +4199,23 @@ msgstr "Cerca" msgid "Search Icecast stations" msgstr "Cerca le stazioni Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Cerca in Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Cerca in Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Cerca su Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Cerca automaticamente" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Cerca copertine degli album..." @@ -4182,21 +4235,21 @@ msgstr "Cerca in iTunes" msgid "Search mode" msgstr "Modalità di ricerca" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opzioni di ricerca" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Cerca risultati" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Termini di ricerca" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Cercare su Grooveshark" @@ -4204,27 +4257,27 @@ msgstr "Cercare su Grooveshark" msgid "Second level" msgstr "Secondo livello" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Scorri indietro" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Scorri in avanti" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Sposta la traccia in riproduzione di una quantità relativa" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Sposta la traccia in riproduzione su una posizione assoluta" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Seleziona tutto" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Selezione nulla" @@ -4232,7 +4285,7 @@ msgstr "Selezione nulla" msgid "Select background color:" msgstr "Seleziona il colore di sfondo:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Seleziona l'immagine di sfondo" @@ -4248,7 +4301,7 @@ msgstr "Seleziona il colore di primo piano:" msgid "Select visualizations" msgstr "Seleziona visualizzazioni" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Seleziona visualizzazioni..." @@ -4256,7 +4309,7 @@ msgstr "Seleziona visualizzazioni..." msgid "Select..." msgstr "Seleziona..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Numero seriale" @@ -4268,51 +4321,51 @@ msgstr "URL del server" msgid "Server details" msgstr "Dettagli del server" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Servizio non in linea" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Imposta %1 a \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Imposta il volume al percento" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Imposta valore per tutte le tracce selezionate..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Impostazioni" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Scorciatoia" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Scorciatoia per %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "La scorciatoia per %1 esiste già" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Mostra" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Mostra OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Mostra un'animazione luminosa sulla traccia corrente" @@ -4340,15 +4393,15 @@ msgstr "Mostra un fumetto dal vassoio di sistema" msgid "Show a pretty OSD" msgstr "Mostra un OSD gradevole" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Mostra la barra di stato superiore" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Mostra tutti i brani" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Mostra tutti i brani" @@ -4360,32 +4413,36 @@ msgstr "Mostra le copertine nella raccolta" msgid "Show dividers" msgstr "Mostra separatori" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Mostra a dimensioni originali..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Mostra i gruppo nei risultati della ricerca globale" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Mostra nel navigatore file..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Mostra nella raccolta..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Mostra in artisti vari" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Mostra la barra dell'atmosfera" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Mostra solo i duplicati" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Mostra solo i brani senza tag" @@ -4394,8 +4451,8 @@ msgid "Show search suggestions" msgstr "Mostra i suggerimenti di ricerca" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Mostra i pulsanti \"Mi piace\" e \"Vieta\"" +msgid "Show the \"love\" button" +msgstr "Mostra il pulsante \"Mi piace\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4466,27 @@ msgstr "Mostra icona nel vassoio" msgid "Show which sources are enabled and disabled" msgstr "Mostra le fonti abilitate e disabilitate" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Mostra/Nascondi" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Mescola" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Mescola gli album" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Mescola tutto" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Mescola la scaletta" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Mescola le tracce di questo album" @@ -4445,7 +4502,7 @@ msgstr "Disconnetti" msgid "Signing in..." msgstr "Registrazione in corso..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Artisti simili" @@ -4457,43 +4514,51 @@ msgstr "Dimensioni" msgid "Size:" msgstr "Dimensioni:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Salta indietro nella scaletta" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Salta il conteggio" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Salta in avanti nella scaletta" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Salta le tracce selezionate" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Salta la traccia" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Copertine piccole" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Pannello laterale piccolo" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Scaletta veloce" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Scalette veloci" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Leggere" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Rock leggero" @@ -4501,11 +4566,11 @@ msgstr "Rock leggero" msgid "Song Information" msgstr "Informazioni brano" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info brano" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogramma" @@ -4525,15 +4590,23 @@ msgstr "Ordina per genere (popolarità)" msgid "Sort by station name" msgstr "Ordina per nome della stazione" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Ordine alfabetico dei brani della scaletta" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Ordina i brani per" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Ordinamento" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Fonte" @@ -4549,7 +4622,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Errore di accesso a Spotify" @@ -4557,7 +4630,7 @@ msgstr "Errore di accesso a Spotify" msgid "Spotify plugin" msgstr "Plugin di Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Plugin di Spotify non installato" @@ -4565,77 +4638,77 @@ msgstr "Plugin di Spotify non installato" msgid "Standard" msgstr "Standard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Preferiti" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "Avvia l'estrazione" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Avvia la scaletta attualmente in riproduzione" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Avvia transcodifica" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Inizia a scrivere qualcosa nella casella di ricerca per riempire l'elenco dei risultati di ricerca." -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Avvio di %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Avvio in corso..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stazioni" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Ferma" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Ferma dopo" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Ferma dopo questa traccia" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Ferma riproduzione" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Ferma la riproduzione dopo la traccia corrente" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Ferma la riproduzione dopo la traccia: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Fermato" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Flusso" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4718,7 @@ msgstr "La trasmissione da un server Subsonic richiede una licenza server valida msgid "Streaming membership" msgstr "Trasmissione" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Scalette sottoscritte" @@ -4653,7 +4726,7 @@ msgstr "Scalette sottoscritte" msgid "Subscribers" msgstr "Sottoscrittori" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4661,12 +4734,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Successo!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 scritto correttamente" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Tag consigliati" @@ -4675,13 +4748,13 @@ msgstr "Tag consigliati" msgid "Summary" msgstr "Riepilogo" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Molto alto (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Molto alta (2048x2048)" @@ -4693,43 +4766,35 @@ msgstr "Formati supportati" msgid "Synchronize statistics to files now" msgstr "Sincronizza le statistiche nei file ora" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Sincronizzazione inbox di Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Sincronizzazione scaletta di Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Sincronizzazione tracce preferite di Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Colori di sistema" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Schede in alto" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tag" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Strumento di recupero dei tag" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Radio del tag" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Bitrate finale" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4737,11 +4802,11 @@ msgstr "Techno" msgid "Text options" msgstr "Opzioni testo" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Grazie a" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Il comando \"%1\" non può essere avviato." @@ -4750,17 +4815,12 @@ msgstr "Il comando \"%1\" non può essere avviato." msgid "The album cover of the currently playing song" msgstr "La copertina dell'album del brano in riproduzione" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "La cartella %1 non è valida" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "La scaletta '%1' è vuota o non può essere caricata." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Il secondo valore deve essere più grande del primo!" @@ -4768,40 +4828,40 @@ msgstr "Il secondo valore deve essere più grande del primo!" msgid "The site you requested does not exist!" msgstr "Il sito richiesto non esiste!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Il sito richiesto non è un'immagine!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Il periodo di prova per il server Subsonic è scaduto. Effettua una donazione per ottenere una chiave di licenza. Visita subsonic.org per i dettagli." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "La versione di Clementine appena aggiornata richiedere una scansione completa della raccolta, a causa delle nuove funzionalità elencate in seguito:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Ci sono altri brani in questo album" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Si è verificato un problema durante la comunicazione con gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Si è verificato un problema durante il recupero dei dati aggiuntivi da Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Si è verificato un problema di elaborazione della risposta dall'iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4873,13 @@ msgid "" "deleted:" msgstr "Si sono verificati dei problemi durante l'eliminazione di alcuni brani. I seguenti file potrebbero non essere eliminati:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Questi file saranno eliminati dal dispositivo, sei sicuro di voler continuare?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4899,13 @@ msgstr "Queste impostazioni sono utilizzate nella finestra \"Transcodifica music msgid "Third level" msgstr "Terzo livello" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Questa azione creerà un database che potrebbe arrivare fino a 150 MB.\nVuoi continuare comunque?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "L'album non è disponibile nel formato richiesto" @@ -4859,11 +4919,11 @@ msgstr "Il dispositivo deve essere collegato e aperto prima che Clementine possa msgid "This device supports the following file formats:" msgstr "Questo dispositivo utilizza i seguenti formati file:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Il dispositivo non funzionerà correttamente" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Questo è un dispositivo MTP, ma hai compilato Clementine senza il supporto a libmtp." @@ -4872,7 +4932,7 @@ msgstr "Questo è un dispositivo MTP, ma hai compilato Clementine senza il suppo msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Questo è un iPod, ma hai compilato Clementine senza il supporto a libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4942,33 @@ msgstr "È la prima volta che si connette questo dispositivo. Clementine effettu msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Questa opzione può essere modificata nelle preferenze di \"Comportamento\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Questo flusso è riservato ai soli abbonati" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Questi tipo di dispositivo non è supportato: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titolo" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Per avviare una radio di Grooveshark, devi prima ascoltare alcuni brani" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Oggi" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Commuta Pretty OSD" @@ -4916,27 +4976,27 @@ msgstr "Commuta Pretty OSD" msgid "Toggle fullscreen" msgstr "Attiva la modalità a schermo intero" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Cambia lo stato della coda" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Commuta lo scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Commuta la visibilità di Pretty OSD" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Domani" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Troppe redirezioni" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Tracce preferite" @@ -4944,21 +5004,25 @@ msgstr "Tracce preferite" msgid "Total albums:" msgstr "Album totali:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Totale byte trasferiti" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Totale richieste di rete effettuate" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Traccia" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Tracce" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transcodifica musica" @@ -4970,7 +5034,7 @@ msgstr "Log di transcodifica" msgid "Transcoding" msgstr "Transcodifica" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Transcodifica di %1 file utilizzando %2 thread" @@ -4979,11 +5043,11 @@ msgstr "Transcodifica di %1 file utilizzando %2 thread" msgid "Transcoding options" msgstr "Opzioni di transcodifica" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4991,72 +5055,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Spegni" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Password di Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Nome utente di Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Banda ultra larga (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Impossibile scaricare %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Sconosciuto" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Tipo di contenuto sconosciuto" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Errore sconosciuto" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Rimuovi copertina" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Ripristina le tracce selezionate" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Ripristina la traccia" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Rimuovi sottoscrizione" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Prossimi concerti" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Aggiorna" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Aggiorna la scaletta di Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Aggiorna tutti i podcast" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Aggiorna le cartelle modificate della raccolta" @@ -5064,7 +5128,7 @@ msgstr "Aggiorna le cartelle modificate della raccolta" msgid "Update the library when Clementine starts" msgstr "Aggiorna la raccolta all'avvio di Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Aggiorna questo podcast" @@ -5072,21 +5136,21 @@ msgstr "Aggiorna questo podcast" msgid "Updating" msgstr "Aggiornamento in corso" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Aggiornamento di %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Aggiornamento %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Aggiornamento raccolta" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Utilizzo" @@ -5094,11 +5158,11 @@ msgstr "Utilizzo" msgid "Use Album Artist tag when available" msgstr "Usa il tag Artista dell'album se disponibile" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Utilizza le scorciatoie di Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Utilizza i metadati del guadagno di riproduzione se disponibili" @@ -5118,7 +5182,7 @@ msgstr "Usa un insieme di colori personalizzato" msgid "Use a custom message for notifications" msgstr "Usa un messaggio personalizzato per le notifiche" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Usa un telecomando in rete" @@ -5158,20 +5222,20 @@ msgstr "Utilizza le impostazioni di sistema del proxy" msgid "Use volume normalisation" msgstr "Usa la normalizzazione del volume" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Utilizzato" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "L'utente %1 non ha un account di Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interfaccia utente" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5257,12 @@ msgstr "MP3 VBR" msgid "Variable bit rate" msgstr "Bitrate variabile" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Artisti vari" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versione %1" @@ -5211,7 +5275,7 @@ msgstr "Visualizza" msgid "Visualization mode" msgstr "Modalità di visualizzazione" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualizzazioni" @@ -5219,11 +5283,15 @@ msgstr "Visualizzazioni" msgid "Visualizations Settings" msgstr "Impostazioni di visualizzazione" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Rilevazione attività vocale" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5241,11 +5309,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Avvisami alla chiusura di una scheda della scaletta" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5321,7 @@ msgstr "Wav" msgid "Website" msgstr "Sito web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Settimane" @@ -5279,32 +5347,32 @@ msgstr "Perché non provi..." msgid "Wide band (WB)" msgstr "Banda larga (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: attivato" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: connesso" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: livello batteria critico (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: disattivato" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: disconnesso" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: livello batteria basso (%2%)" @@ -5325,7 +5393,7 @@ msgstr "Windows media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5333,25 +5401,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Senza copertina:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Vuoi spostare anche gli altri brani di questo album in Artisti vari?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Vuoi eseguire subito una nuova scansione completa?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Scrivi le statistiche dei brani nei file" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nome utente o password non validi." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5431,11 @@ msgstr "Anno" msgid "Year - Album" msgstr "Anno - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Anni" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Ieri" @@ -5375,13 +5443,13 @@ msgstr "Ieri" msgid "You are about to download the following albums" msgstr "Stai per scaricare i seguenti album" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Stai per rimuovere %1 scalette dai preferiti, sei sicuro?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5459,12 @@ msgstr "Stai per rimuovere una scaletta che non fa parte delle tue scalette pref msgid "You are not signed in." msgstr "Non sei registrato." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Sei registrato come %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Sei registrato." @@ -5404,13 +5472,13 @@ msgstr "Sei registrato." msgid "You can change the way the songs in the library are organised." msgstr "Puoi modificare l'organizzazione dei brani nella raccolta." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Puoi ascoltare gratuitamente senza un account, ma i membri Premium possono ascoltare i flussi di alta qualità senza pubblicità." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5488,6 @@ msgstr "Puoi ascoltare i brani di Magnatune gratuitamente e senza avere un accou msgid "You can listen to background streams at the same time as other music." msgstr "Puoi ascoltare sullo sfondo i flussi mentre ascolti altra musica" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Puoi inviare informazioni sulle tracce gratuitamente, ma solo gli abbonati a pagamento possono ascoltare le radio Last.fm da Clementine" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Puoi utilizzare un Wii Remote come telecomando per Clementine. Vedi la pagina sul wiki di Clementine per ulteriori informazioni.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Non hai un account Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Non hai un account Premium Spotify." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Non hai una sottoscrizione attiva" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Non è necessario effettuare l'accesso per cercare e ascoltare musica su SoundCloud. Tuttavia, bisogna autenticarsi per accedere alle scalette e al flusso." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Ti sei disconnesso da Spotify, reinserisci la password nella finestra Impostazioni." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Ti sei disconnesso da Spotify, reinserisci la password." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Ti piace questa traccia" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Devi eseguire le preferenze di sistema e consentire a Clementine di \"controllare il tuo computer\" per utilizzare le scorciatoie globali in Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5546,11 @@ msgstr "Devi aprire le preferenze di sistema e attivare \", 2010 +# monorod , 2014 # Masaki , 2013 # Masaki , 2011-2012 +# Geefo Power, 2014 +# Fumiyasu Satoh, 2014 # Yoshihito YOSHINO , 2012-2013 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Japanese (http://www.transifex.com/projects/p/clementine/language/ja/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,14 +21,14 @@ msgstr "" "Language: ja\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" "You can favorite playlists by clicking the star icon next to a playlist name\n" "\n" "Favorited playlists will be saved here" -msgstr "" +msgstr "\n\nプレイリスト名の横にある星アイコンをクリックするとプレイリストをお気に入りにできます。\n\nお気に入りにしたプレイリストはここに保存されます" #: ../bin/src/ui_podcastsettingspage.h:246 msgid " days" @@ -43,9 +46,9 @@ msgstr " 日" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ミリ秒" @@ -58,11 +61,16 @@ msgstr " pt" msgid " seconds" msgstr " 秒" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " 曲" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 曲)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 枚のアルバム" @@ -72,12 +80,12 @@ msgstr "%1 枚のアルバム" msgid "%1 days" msgstr "%1 日" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 日前" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -87,48 +95,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 プレイリスト (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 個選択中" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 曲" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 曲" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 曲見つかりました" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 曲見つかりました (%2 曲を表示中)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" -msgstr "%1 個のトラック" +msgstr "%1 トラック" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 転送済み" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wii リモコンデバイスモジュール" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 人のリスナー" @@ -142,18 +150,21 @@ msgstr "合計 %L1 回再生" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n 曲失敗しました" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n が完了しました" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n 曲残っています" @@ -165,24 +176,24 @@ msgstr "テキストの配置(&A)" msgid "&Center" msgstr "中央揃え(&C)" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "カスタム(&C)" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "おまけ(&E)" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "ヘルプ(&H)" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "%1 を非表示にする(&H)" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "非表示にする(&H)..." @@ -190,23 +201,23 @@ msgstr "非表示にする(&H)..." msgid "&Left" msgstr "左揃え(&L)" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "ミュージック(&M)" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "なし(&N)" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "プレイリスト(&P)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "終了(&Q)" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "リピートモード(&R)" @@ -214,29 +225,29 @@ msgstr "リピートモード(&R)" msgid "&Right" msgstr "右揃え(&R)" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "シャッフルモード(&S)" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "列の幅をウィンドウに合わせる(&S)" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "ツール(&T)" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(複数の曲で一致しません)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" -msgstr "... および Amarok に貢献されたすべての方々" +msgstr "... および Amarok に貢献したすべての方々" #: ../bin/src/ui_albumcovermanager.h:223 ../bin/src/ui_albumcovermanager.h:224 msgid "0" -msgstr "" +msgstr "0" #: ../bin/src/ui_trackslider.h:70 ../bin/src/ui_trackslider.h:74 msgid "0:00:00" @@ -250,14 +261,10 @@ msgstr "0px" msgid "1 day" msgstr "1 日" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 トラック" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -265,21 +272,15 @@ msgstr "128k MP3" #: ../bin/src/ui_appearancesettingspage.h:291 msgid "40%" -msgstr "" +msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "ランダムな 50 トラック" #: ../bin/src/ui_digitallyimportedsettingspage.h:165 msgid "Upgrade to Premium now" -msgstr "今すぐプレミアムへアップグレードする" - -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" +msgstr "今すぐプレミアム版へアップグレードする" #: ../bin/src/ui_librarysettingspage.h:195 msgid "" @@ -289,6 +290,17 @@ msgid "" "directly into the file each time they changed.

Please note it might " "not work for every format and, as there is no standard for doing so, other " "music players might not be able to read them.

" +msgstr "

チェックなしの場合, Clementine はあなたの評価や統計情報を独立したデータベースだけに保存し、ファイルは変更しません。

チェックありの場合は、変更があるたびにデータベースとファイルの両方に保存します。

標準の方式がないため、すべての形式で動作するわけではありません。ほかのプレイヤーは読み込めない可能性があります。

" + +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" msgstr "" #: ../bin/src/ui_librarysettingspage.h:199 @@ -299,38 +311,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" -msgstr "

トークンは % で始まります (例: %artist %album %title)。

\n\n

トークンを含むテキストの一部を「{ }」で囲むと、トークンが空の場合、{ } の選択部分が非表示になります。

" +msgstr "

トークンは % で始まります (例: %artist %album %title)。

\n\n

トークンを含むテキストの一部を「{ }」で囲むと、トークンが空の場合、{ } で選択した部分が非表示になります。

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Grooveshark Anywhere のアカウントが必要です。" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Spotify のプレミアムアカウントが必要です。" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." -msgstr "" +msgstr "正しいコードを入力したクライアントだけ接続できます。" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." -msgstr "スマートプレイリストは、ライブラリから一定の条件に従って抽出されるプレイリストです。さまざまな選曲方法を提供する、さまざまなスマートプレイリストがあります。" +msgstr "スマートプレイリストは、ライブラリから一定の条件に従って抽出されるプレイリストです。さまざまな選曲方法を提供する様々なスマートプレイリストがあります。" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "曲がこれらの条件に一致する場合はこのプレイリストに含まれます。" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -350,52 +362,55 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "中止" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1 について" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Clementine について..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt について..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "アカウントの詳細" #: ../bin/src/ui_digitallyimportedsettingspage.h:161 msgid "Account details (Premium)" -msgstr "アカウントの詳細 (プレミアム)" +msgstr "アカウントの詳細 (プレミアム版)" #: ../bin/src/ui_wiimotesettingspage.h:191 msgid "Action" msgstr "アクション" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wii リモコンのアクティブ・非アクティブを切り替える" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "ポッドキャストの追加" @@ -411,39 +426,39 @@ msgstr "改行を追加 (通知形式が対応している場合)" msgid "Add action" msgstr "アクションの追加" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "別のストリームを追加..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "ディレクトリを追加..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "ファイルを追加" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" -msgstr "" +msgstr "ファイルをトランスコーダーに追加する" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" -msgstr "" +msgstr "ファイルをトランスコーダーに追加する" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "ファイルを追加..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" -msgstr "トランスコードするファイルの追加" +msgstr "変換するファイルを追加" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "フォルダーを追加" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "フォルダーを追加..." @@ -455,25 +470,25 @@ msgstr "新しいフォルダーを追加..." msgid "Add podcast" msgstr "ポッドキャストを追加" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "ポッドキャストを追加..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "検索条件を追加" #: ../bin/src/ui_notificationssettingspage.h:380 msgid "Add song album tag" -msgstr "曲のアルバムタグを追加" +msgstr "曲にアルバムタグを追加" #: ../bin/src/ui_notificationssettingspage.h:386 msgid "Add song albumartist tag" -msgstr "曲のアルバムアーティストタグを追加" +msgstr "曲にアルバムアーティストタグを追加" #: ../bin/src/ui_notificationssettingspage.h:377 msgid "Add song artist tag" -msgstr "曲のアーティストタグを追加" +msgstr "曲にアーティストタグを追加" #: ../bin/src/ui_notificationssettingspage.h:422 msgid "Add song auto score" @@ -481,11 +496,11 @@ msgstr "" #: ../bin/src/ui_notificationssettingspage.h:392 msgid "Add song composer tag" -msgstr "曲の作曲者タグを追加" +msgstr "曲に作曲者タグを追加" #: ../bin/src/ui_notificationssettingspage.h:401 msgid "Add song disc tag" -msgstr "曲のディスクタグを追加" +msgstr "曲にディスクタグを追加" #: ../bin/src/ui_notificationssettingspage.h:429 msgid "Add song filename" @@ -493,19 +508,19 @@ msgstr "曲のファイル名を追加" #: ../bin/src/ui_notificationssettingspage.h:407 msgid "Add song genre tag" -msgstr "曲のジャンルタグを追加" +msgstr "曲にジャンルタグを追加" #: ../bin/src/ui_notificationssettingspage.h:398 msgid "Add song grouping tag" -msgstr "" +msgstr "曲の分類タグを追加する" #: ../bin/src/ui_notificationssettingspage.h:410 msgid "Add song length tag" -msgstr "曲の長さタグを追加" +msgstr "曲に曲の長さのタグを追加" #: ../bin/src/ui_notificationssettingspage.h:395 msgid "Add song performer tag" -msgstr "" +msgstr "曲の演奏者タグを追加する" #: ../bin/src/ui_notificationssettingspage.h:413 msgid "Add song play count" @@ -513,7 +528,7 @@ msgstr "曲の再生回数を追加" #: ../bin/src/ui_notificationssettingspage.h:419 msgid "Add song rating" -msgstr "" +msgstr "曲の評価を追加する" #: ../bin/src/ui_notificationssettingspage.h:416 msgid "Add song skip count" @@ -523,6 +538,10 @@ msgstr "曲のスキップ回数を追加" msgid "Add song title tag" msgstr "曲のタイトルタグを追加" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "曲をキャッシュに追加する" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "曲のトラックタグを追加" @@ -531,21 +550,33 @@ msgstr "曲のトラックタグを追加" msgid "Add song year tag" msgstr "曲の年タグを追加" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "「Love」ボタンをクリックしたときに「マイミュージック」に曲を追加する" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "ストリームを追加..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Grooveshark のお気に入りに追加" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" -msgstr "Grooveshark のプレイリストに追加" +msgstr "Grooveshark のプレイリストに追加する" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "マイミュージックに追加する" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" -msgstr "別のプレイリストに追加" +msgstr "別のプレイリストに追加する" + +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "ブックマークに追加する" #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" @@ -555,6 +586,10 @@ msgstr "プレイリストに追加する" msgid "Add to the queue" msgstr "キューに追加する" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "ユーザー/グループをブックマークに追加する" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Wii リモコンデバイスのアクションの追加" @@ -584,28 +619,28 @@ msgstr "今日追加されたもの" msgid "Added within three months" msgstr "3 ヶ月以内に追加されたもの" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "曲をマイミュージックに追加中" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "曲をお気に入りに追加中" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "高度なグループ化..." #: ../bin/src/ui_podcastsettingspage.h:247 msgid "After " -msgstr "" +msgstr "後" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "コピー後..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -613,11 +648,11 @@ msgstr "コピー後..." msgid "Album" msgstr "アルバム" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "アルバム (すべてのトラックで最適な音量)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -627,35 +662,36 @@ msgstr "アルバムアーティスト" msgid "Album cover" msgstr "アルバムカバー" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "jamendo.com のアルバム情報..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "カバー付きのアルバム" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" -msgstr "カバーなしのアルバム" +msgstr "カバーなしのアルバム数" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "すべてのファイル (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "All Glory to the Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "すべてのアルバム" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "すべてのアーティスト" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "すべてのファイル (*)" @@ -664,21 +700,21 @@ msgstr "すべてのファイル (*)" msgid "All playlists (%1)" msgstr "すべてのプレイリスト (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "すべての翻訳者" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "すべてのトラック" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." -msgstr "" +msgstr "クライアントがこのコンピューターから曲をダウンロードするのを許可する" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" -msgstr "" +msgstr "ダウンロードを許可する" #: ../bin/src/ui_transcoderoptionsaac.h:140 msgid "Allow mid/side encoding" @@ -701,98 +737,93 @@ msgstr "メインウィンドウを常に表示する" msgid "Always start playing" msgstr "常に再生を開始する" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Clementine で Spotify を利用するには追加のプラグインが必要です。今すぐダウンロードしてインストールしますか?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "iTunes のデータベースを読み込み中にエラーが発生しました" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "メタデータを '%1' へ書き込み中にエラーが発生しました" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "原因不明のエラーが発生しました。" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "そして:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" -msgstr "" +msgstr "怒り" #: ../bin/src/ui_songinfosettingspage.h:155 #: ../bin/src/ui_appearancesettingspage.h:271 msgid "Appearance" msgstr "外観" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "ファイル・URL をプレイリストに追加する" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" -msgstr "現在のプレイリストに追加" +msgstr "現在のプレイリストに追加する" #: ../bin/src/ui_behavioursettingspage.h:217 msgid "Append to the playlist" -msgstr "プレイリストに追加" +msgstr "プレイリストに追加する" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "クリップ防止のために音量を制限する" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" -msgstr "プリセット \"%1\" を削除してもよろしいですか?" +msgstr "プリセット「%1」を削除してもよろしいですか?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "本当にこのプレイリストを削除しますか?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "この曲の統計をリセットしてもよろしいですか?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" -msgstr "" +msgstr "ライブラリーのすべての曲の統計情報を曲ファイルに保存してもよろしいですか?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "アーティスト" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "アーティストの情報" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "アーティストラジオ" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "アーティストタグ" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "アーティストの頭文字" @@ -800,9 +831,13 @@ msgstr "アーティストの頭文字" msgid "Audio format" msgstr "オーディオ形式" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "オーディオ出力" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "認証に失敗しました" @@ -810,7 +845,7 @@ msgstr "認証に失敗しました" msgid "Author" msgstr "作者" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "作者" @@ -826,7 +861,7 @@ msgstr "自動更新中" msgid "Automatically open single categories in the library tree" msgstr "下位カテゴリが 1 つしかないときは、ライブラリツリーを自動で開く" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "空き" @@ -834,15 +869,15 @@ msgstr "空き" msgid "Average bitrate" msgstr "平均ビットレート" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "平均画像サイズ" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC ポッドキャスト" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,19 +898,15 @@ msgstr "背景画像" msgid "Background opacity" msgstr "背景の不透明度" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "データベースをバックアップ中" #: ../bin/src/ui_equalizer.h:173 msgid "Balance" -msgstr "" +msgstr "バランス" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "はじき出す" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "バー表示" @@ -895,18 +926,17 @@ msgstr "動作" msgid "Best" msgstr "良" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "%1 からのバイオグラフィ" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "ビットレート" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -914,7 +944,12 @@ msgstr "ビットレート" msgid "Bitrate" msgstr "ビットレート" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "ビットレート" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "ブロック表示" @@ -924,19 +959,19 @@ msgstr "ブロックタイプ" #: ../bin/src/ui_appearancesettingspage.h:288 msgid "Blur amount" -msgstr "" +msgstr "ぼかし量" #: ../bin/src/ui_notificationssettingspage.h:449 msgid "Body" msgstr "本文" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "ブームアナライザー" #: ../bin/src/ui_boxsettingspage.h:103 msgid "Box" -msgstr "" +msgstr "Box" #: ../bin/src/ui_magnatunedownloaddialog.h:146 #: ../bin/src/ui_podcastsettingspage.h:242 @@ -944,11 +979,11 @@ msgstr "" msgid "Browse..." msgstr "参照..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" -msgstr "" +msgstr "バッファーの長さ" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "バッファ中" @@ -960,43 +995,66 @@ msgstr "ただし次のソースは無効になっています:" msgid "Buttons" msgstr "ボタン" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "オーディオ CD" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE シートのサポート" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "キャッシュのパス:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "キャッシュ中" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "%1 キャッシュ中" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "キャンセル" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Captcha (キャプチャ) が必要です。\nブラウザーで Vk.com にログインして問題を修正してください。" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "カバーアートの変更" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "フォントサイズの変更..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "リピートモードの変更" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "ショートカットの変更..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "シャッフルモードの変更" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "言語の変更" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1006,15 +1064,19 @@ msgstr "モノラル再生の設定変更は次に再生する曲から反映さ msgid "Check for new episodes" msgstr "新しいエピソードのチェック" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "更新のチェック..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Vk.com のキャッシュディレクトリーを選択する" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "スマートプレイリストの名前を選択してください" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "自動的に選択する" @@ -1030,11 +1092,11 @@ msgstr "フォントの選択..." msgid "Choose from the list" msgstr "一覧から選択する" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "プレイリストの並び順と、プレイリスト内に何曲含めるかを選択してください。" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "ポッドキャストのダウンロードディレクトリを選択してください" @@ -1043,7 +1105,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "歌詞の検索時に Clementine が使用する Web サイトを選択してください。" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "クラシック" @@ -1051,17 +1113,17 @@ msgstr "クラシック" msgid "Cleaning up" msgstr "整理" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "クリア" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "プレイリストをクリア" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1074,8 +1136,8 @@ msgstr "Clementine のエラー" msgid "Clementine Orange" msgstr "Clementine オレンジ" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine ビジュアライゼーション" @@ -1087,7 +1149,7 @@ msgstr "Clementine はこのデバイスへコピーする際、このデバイ #: ../bin/src/ui_boxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Box" -msgstr "" +msgstr "Clementine は Box にアップロードしたミュージックを再生できます" #: ../bin/src/ui_dropboxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Dropbox" @@ -1097,9 +1159,9 @@ msgstr "Clementine は Dropbox にアップロードしたミュージックを msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine は Google Drive にアップロードしたミュージックを再生できます" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine は Ubuntu One にアップロードしたミュージックを再生できます" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine は OneDrive にアップロードしたミュージックを再生できます" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1110,22 +1172,15 @@ msgid "" "Clementine can synchronize your subscription list with your other computers " "and podcast applications. Create " "an account." -msgstr "Clementine は購読リストを他のコンピューターやポッドキャストアプリケーションと同期できます。 アカウントを作成する。" +msgstr "Clementine は購読リストを他のコンピューターやポッドキャストアプリケーションと同期できます。 アカウントを作成する" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine は projectM のビジュアライゼーションを読み込めませんでした。Clementine が正しくインストールされているか確認してください。" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "接続に問題があるため、あなたの購読情報を取得できませんでした。再生したトラックはキャッシュされ、後で Last.fm に送信されます。" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine 画像ビューアー" @@ -1137,21 +1192,24 @@ msgstr "このファイルの検索結果を見つけられませんでした。 msgid "Clementine will find music in:" msgstr "Clementine は次にあるミュージックを検索します:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "ミュージックを追加するにはここをクリックします" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" -msgstr "" +msgstr "プレイリストをお気に入りにするにはクリックしてください。サイドバーの「プレイリスト」パネルからアクセスできるようになります。" #: ../bin/src/ui_trackslider.h:72 msgid "Click to toggle between remaining time and total time" msgstr "ここをクリックすると、残り時間と合計時間の表示を切り替えます" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1166,19 +1224,19 @@ msgstr "閉じる" msgid "Close playlist" msgstr "プレイリストを閉じる" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "ビジュアライゼーションを閉じる" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "このウィンドウを閉じるとダウンロードをキャンセルします。" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "このウィンドウを閉じるとアルバムカバーの検索を中止します。" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "クラブ" @@ -1186,73 +1244,78 @@ msgstr "クラブ" msgid "Colors" msgstr "色" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "コンマ区切りの クラス:レベル のリスト、レベルは 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "コメント" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "コミュニティラジオ" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "タグの自動補完" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "タグを自動補完..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "作曲者" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "%1 の設定..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Grooveshark の設定..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm の設定..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Magnatune の設定..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "ショートカットの設定" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Spotify の設定..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." -msgstr "" +msgstr "Subsonic を設定..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "VK.com の設定..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "全体検索の設定..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "ライブラリの設定..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "ポッドキャストの設定..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "設定..." @@ -1260,11 +1323,11 @@ msgstr "設定..." msgid "Connect Wii Remotes using active/deactive action" msgstr "アクティブ・非アクティブの切り替えアクションを使用して Wii リモコンを接続する" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "デバイスの接続" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Spotify に接続中" @@ -1272,14 +1335,18 @@ msgstr "Spotify に接続中" msgid "" "Connection refused by server, check server URL. Example: " "http://localhost:4040/" -msgstr "" +msgstr "接続がサーバーに拒否されました。サーバーの URL を確認してください。例: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" -msgstr "" +msgstr "接続がタイムアウトしました。サーバーの URL を確認してください。例: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "接続の問題またはオーディオが所有者により無効化されています" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "コンソール" @@ -1295,17 +1362,21 @@ msgstr "すべての曲を変換する" msgid "Convert any music that the device can't play" msgstr "デバイスが再生できないすべての曲を変換する" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "URL をクリップボードにコピーする" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "クリップボードにコピー" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "デバイスへコピー..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "ライブラリへコピー..." @@ -1313,156 +1384,152 @@ msgstr "ライブラリへコピー..." msgid "Copyright" msgstr "著作権" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" -msgstr "" +msgstr "Subsonic に接続できませんでした。サーバーの URL を確認してください。例: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" -msgstr "GStreamer 要素 \"%1\" を作成できませんでした。必要な GStreamer プラグインがすべてインストールされていることを確認してください" +msgstr "GStreamer 要素「%1」を作成できませんでした。必要な GStreamer プラグインがすべてインストールされていることを確認してください" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "プレイリストを作成できません" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 のミュクサーを見つけることができませんでした。正しい GStreamer プラグインがインストールされていることをチェックしてください" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "%1 のエンコーダーを見つけることができませんでした。正しい GStreamer プラグインがインストールされていることをチェックしてください" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "last.fm ラジオ局を読み込めませんでした" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "出力ファイル %1 を開けませんでした" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "カバーマネージャー" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "埋め込み画像からのカバーアート" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "%1 から自動的に読み込まれたカバーアート" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "カバーアートは手動で未設定にされています" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "カバーアートが設定されていません" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "%1 からのカバーアートセット" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "%1 からのカバー" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "新規 Grooveshark プレイリストの作成" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "トラックが自動で変更するときにクロスフェードする" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "トラックを手動で変更したときにクロスフェードする" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" -msgstr "" +msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1470,7 +1537,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "カスタム" @@ -1482,54 +1549,50 @@ msgstr "カスタム画像:" msgid "Custom message settings" msgstr "カスタムメッセージの設定" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "カスタムラジオ" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "カスタム..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus のパス" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" -msgstr "Dance" +msgstr "ダンス" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "データベースの破損が見つかりました。データベースの復旧方法については https://code.google.com/p/clementine-player/wiki/DatabaseCorruption をお読みください" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "作成日時" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "更新日時" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "日" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "既定(&F)" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "音量を 4% 下げます" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" -msgstr "" +msgstr "音量を % 下げる" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "音量を下げる" @@ -1537,6 +1600,11 @@ msgstr "音量を下げる" msgid "Default background image" msgstr "既定の背景画像" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "既定" @@ -1545,30 +1613,30 @@ msgstr "既定" msgid "Delay between visualizations" msgstr "ビジュアライゼーションの間の遅延" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "削除" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Grooveshark プレイリストの削除" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "ダウンロード済みデータを削除" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "ファイルの削除" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "デバイスから削除..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "ディスクから削除..." @@ -1576,31 +1644,31 @@ msgstr "ディスクから削除..." msgid "Delete played episodes" msgstr "再生したエピソードの削除" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "プリセットの削除" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "スマートプレイリストを削除" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "元のファイルを削除する" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "ファイルの削除中" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "選択されたトラックをキューから削除する" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "トラックをキューから削除" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "フォルダー" @@ -1609,7 +1677,7 @@ msgstr "フォルダー" msgid "Details..." msgstr "詳細..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "デバイス" @@ -1621,17 +1689,17 @@ msgstr "デバイスのプロパティ" msgid "Device name" msgstr "デバイス名" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "デバイスのプロパティ..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "デバイス" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "ダイアログ" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1664,32 +1732,37 @@ msgstr "長さを無効にする" #: ../bin/src/ui_appearancesettingspage.h:296 msgid "Disable moodbar generation" -msgstr "ムードバーの生成をやめる" +msgstr "ムードバーを生成しない" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "無効" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "無効" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "ディスク" #: ../bin/src/ui_transcoderoptionsspeex.h:234 msgid "Discontinuous transmission" -msgstr "" +msgstr "不連続送信 (DTX)" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "画面のオプション" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "OSD を表示する" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "ライブラリ全体を再スキャン" @@ -1699,29 +1772,29 @@ msgstr "すべてのミュージックを変換しない" #: ../bin/src/ui_albumcoverexport.h:209 msgid "Do not overwrite" -msgstr "" +msgstr "上書きしない" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "リピートしない" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "さまざまなアーティストに表示しない" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "シャッフルしない" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "中止しないでください!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" -msgstr "" +msgstr "寄付する" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "ダブルクリックで開く" @@ -1729,12 +1802,13 @@ msgstr "ダブルクリックで開く" msgid "Double clicking a song will..." msgstr "曲をダブルクリックした際の動作..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "%n 個のエピソードをダウンロード" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "ダウンロードディレクトリ" @@ -1750,23 +1824,23 @@ msgstr "メンバーシップのダウンロード" msgid "Download new episodes automatically" msgstr "新しいエピソードを自動的にダウンロードする" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "ダウンロードがキューに追加されました" #: ../bin/src/ui_networkremotesettingspage.h:202 msgid "Download the Android app" -msgstr "" +msgstr "Android アプリをダウンロードする" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "このアルバムのダウンロード" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "このアルバムをダウンロード..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "このエピソードをダウンロード" @@ -1774,7 +1848,7 @@ msgstr "このエピソードをダウンロード" msgid "Download..." msgstr "ダウンロード..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "ダウンロード中 (%1%)..." @@ -1783,23 +1857,23 @@ msgstr "ダウンロード中 (%1%)..." msgid "Downloading Icecast directory" msgstr "Icecast ディレクトリをダウンロード中" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Jamendo カタログをダウンロード中" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Magnatune カタログをダウンロード中" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Spotify のプラグインをダウンロード中" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "メタデータをダウンロード中" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "位置を変更するにはドラッグします" @@ -1809,30 +1883,30 @@ msgstr "Dropbox" #: ui/equalizer.cpp:119 msgid "Dubstep" -msgstr "" +msgstr "ダブステップ" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "長さ" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "ダイナミックモードはオンです" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "ダイナミックランダムミックス" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "スマートプレイリストの編集..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." -msgstr "" +msgstr "タグ「%1」を編集..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "タグの編集..." @@ -1844,16 +1918,16 @@ msgstr "タグの編集" msgid "Edit track information" msgstr "トラック情報の編集" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "トラック情報の編集..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "トラック情報の編集..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "編集..." @@ -1861,6 +1935,10 @@ msgstr "編集..." msgid "Enable Wii Remote support" msgstr "Wii リモコンサポートを有効にする" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "自動的にキャッシュを有効にする" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "イコライザーを有効にする" @@ -1875,13 +1953,13 @@ msgid "" "displayed in this order." msgstr "下のソースを有効にすると検索結果に含まれます。結果はこの並び順で表示されます。" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Last.fm の scrobbling を有効・無効にする" #: ../bin/src/ui_transcoderoptionsspeex.h:235 msgid "Encoding complexity" -msgstr "" +msgstr "Complexity エンコーディング" #: ../bin/src/ui_transcoderoptionsmp3.h:197 msgid "Encoding engine quality" @@ -1901,17 +1979,12 @@ msgstr "インターネットからカバーアートをダウンロードする #: ../bin/src/ui_albumcoverexport.h:205 msgid "Enter a filename for exported covers (no extension):" -msgstr "" +msgstr "エクスポートするカバーのファイル名を入力してください (拡張子なし):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "このプレイリストの名前を入力してください" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Last.fm ラジオの聴取を開始するにはアーティストタグを入力してください。" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1925,7 +1998,7 @@ msgstr "iTunes Store のポッドキャストを検索するには、下に検 msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "gpodder.net 上のポッドキャストを検索するには、下に検索条件を入力してください" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "ここに検索条件を入力してください" @@ -1934,33 +2007,34 @@ msgstr "ここに検索条件を入力してください" msgid "Enter the URL of an internet radio stream:" msgstr "インターネットラジオストリームの URL を入力してください:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "フォルダ名を入力してください" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." -msgstr "" +msgstr "この IP アドレスをアプリケーションに入力して Clementine に接続してください。" #: ../bin/src/ui_libraryfilterwidget.h:87 msgid "Entire collection" msgstr "コレクション全体" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "イコライザー" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "--log-levels *:1 と同じ" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "--log-levels *:3 と同じ" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "エラー" @@ -1968,38 +2042,38 @@ msgstr "エラー" msgid "Error connecting MTP device" msgstr "MTP デバイスの接続エラー" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "曲のコピーエラー" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "曲の削除エラー" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Spotify プラグインのダウンロードエラー" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "%1 の読み込みエラー" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "di.fm プレイリストの読み込みエラー" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "%1 の処理エラー: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "音楽 CD を読み込み中にエラーが発生しました" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "再生したことがある" @@ -2031,69 +2105,69 @@ msgstr "6 時間おき" msgid "Every hour" msgstr "1 時間おき" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "同じアルバムもしくはキューシートのトラック同士の場合は除外する" #: ../bin/src/ui_albumcoverexport.h:208 msgid "Existing covers" -msgstr "" +msgstr "既存のカバー" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" msgstr "広げる" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" -msgstr "" +msgstr "期限: %1" #: ../bin/src/ui_albumcovermanager.h:226 msgid "Export Covers" -msgstr "" +msgstr "カバーをエクスポート" #: ../bin/src/ui_albumcoverexport.h:203 msgid "Export covers" -msgstr "" +msgstr "カバーをエクスポートする" #: ../bin/src/ui_albumcoverexport.h:206 msgid "Export downloaded covers" -msgstr "" +msgstr "ダウンロードしたカバーをエクスポートする" #: ../bin/src/ui_albumcoverexport.h:207 msgid "Export embedded covers" -msgstr "" +msgstr "埋め込みカバーをエクスポートする" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" -msgstr "" +msgstr "エクスポートが完了しました" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" -msgstr "" +msgstr "%2 個中 %1 個のカバーをエクスポートしました (%3 個スキップしました)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2103,42 +2177,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" -msgstr "" +msgstr "一時停止/再開時にフェードアウト/インする" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "トラックの停止時にフェードアウトする" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "フェード" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "フェードの長さ" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" -msgstr "" +msgstr "CD ドライブの読み込みが失敗しました" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "ディレクトリの取得に失敗しました" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "ポッドキャストの取得に失敗しました" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "ポッドキャストの読み込みに失敗しました" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "この RSS フィードの XML の分析に失敗しました" @@ -2147,11 +2221,11 @@ msgstr "この RSS フィードの XML の分析に失敗しました" msgid "Fast" msgstr "速" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "お気に入り" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "お気に入りのトラック" @@ -2167,19 +2241,19 @@ msgstr "自動的に取得する" msgid "Fetch completed" msgstr "取得完了" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" -msgstr "" +msgstr "Subsonic ライブラリーを取得" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "カバーの取得エラー" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "ファイル形式" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "ファイル拡張子" @@ -2187,19 +2261,23 @@ msgstr "ファイル拡張子" msgid "File formats" msgstr "ファイル形式" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "ファイル名" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "ファイル名 (パスなし)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "ファイル名パターン:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "ファイルサイズ" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2209,7 +2287,7 @@ msgstr "ファイルの種類" msgid "Filename" msgstr "ファイル名" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "ファイル" @@ -2217,15 +2295,19 @@ msgstr "ファイル" msgid "Files to transcode" msgstr "トランスコードするファイル" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "指定する条件に一致するライブラリから曲を検索します。" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "このアーティストを検索する" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "曲の特徴を検出しています" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "完了" @@ -2233,7 +2315,7 @@ msgstr "完了" msgid "First level" msgstr "第 1 階層" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2249,12 +2331,12 @@ msgstr "ライセンス上の理由で Spotify サポートは別プラグイン msgid "Force mono encoding" msgstr "モノラルエンコーディングを強制する" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "デバイスを忘れる" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2269,7 +2351,7 @@ msgstr "デバイスを忘れるとこの一覧から削除して Clementine は #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2295,33 +2377,25 @@ msgstr "フレームレート" #: ../bin/src/ui_transcoderoptionsspeex.h:236 msgid "Frames per buffer" -msgstr "" +msgstr "バッファーあたりのフレーム数" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "友だち" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" -msgstr "" +msgstr "冷淡" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer オーディオエンジン" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "全般" @@ -2329,30 +2403,30 @@ msgstr "全般" msgid "General settings" msgstr "全般設定" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "ジャンル" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Grooveshark で人気の曲を取得中" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "チャンネルの取得中" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "ストリームの取得中" @@ -2364,11 +2438,11 @@ msgstr "名前を入力してください:" msgid "Go" msgstr "進む" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "次のプレイリストタブへ" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "前のプレイリストタブへ" @@ -2376,7 +2450,7 @@ msgstr "前のプレイリストタブへ" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2386,7 +2460,7 @@ msgstr "%2 個中 %1 個のカバーを取得しました (%3 個失敗しまし msgid "Grey out non existent songs in my playlists" msgstr "プレイリスト上の存在しない曲をグレーで表示する" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2394,15 +2468,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark ログインエラー" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark プレイリストの URL" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark ラジオ" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark の曲の URL" @@ -2410,55 +2484,55 @@ msgstr "Grooveshark の曲の URL" msgid "Group Library by..." msgstr "ライブラリのグループ化..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "グループ化" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "アルバムでグループ化" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "アーティストでグループ化" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "アーティスト/アルバムでグループ化" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "アーティスト/年 - アルバムでグループ化" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "ジャンル/アルバムでグループ化" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "ジャンル/アーティスト/アルバムでグループ化" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" -msgstr "" +msgstr "分類" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML ページに RSS フィードが含まれていませんでした" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." -msgstr "" +msgstr "HTTP ステータスコード 3XX を URL なしで受信しました。サーバーの設定を確認してください。" #: ../bin/src/ui_networkproxysettingspage.h:163 msgid "HTTP proxy" msgstr "HTTP プロキシ" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" -msgstr "" +msgstr "幸せ" #: ../bin/src/ui_deviceproperties.h:371 msgid "Hardware information" @@ -2472,45 +2546,45 @@ msgstr "ハードウェアの情報はデバイス接続中のみ利用できま msgid "High" msgstr "高" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "高 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "高 (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" -msgstr "" +msgstr "ホストが見つかりません。サーバーの URL を確認してください。例: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "時間" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" #: ../bin/src/ui_magnatunesettingspage.h:159 msgid "I don't have a Magnatune account" -msgstr "Magnatune アカウントがありません" +msgstr "Magnatune アカウントなし" #: ../bin/src/ui_deviceproperties.h:370 msgid "Icon" msgstr "アイコン" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "アイコンを上に配置" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "曲の識別中" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2520,24 +2594,24 @@ msgstr "続行すると、このデバイスは低速で動作しコピーされ msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "ポッドキャストの URL がある場合は、下に入力して進むを押してください。" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" -msgstr "アーティスト名の \"The\" を無視する" +msgstr "アーティスト名の「The」を無視する" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "画像 (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "画像 (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "%1 日以内" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 週以内" @@ -2546,11 +2620,11 @@ msgstr "%1 週以内" msgid "" "In dynamic mode new tracks will be chosen and added to the playlist every " "time a song finishes." -msgstr "" +msgstr "ダイナミックモードでは、新しいトラックは曲が終わるたびにプレイリストに選択・追加されます。" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" -msgstr "" +msgstr "受信箱" #: ../bin/src/ui_notificationssettingspage.h:443 msgid "Include album art in the notification" @@ -2558,137 +2632,137 @@ msgstr "通知にアルバムアートを含める" #: ../bin/src/ui_querysearchpage.h:118 msgid "Include all songs" -msgstr "すべての曲を含む" +msgstr "すべての曲を含める" + +#: internet/subsonicsettingspage.cpp:85 +msgid "Incompatible Subsonic REST protocol version. Client must upgrade." +msgstr "Subsonic REST プロトコルバージョンの互換性がありません。クライアントをアップグレードする必要があります。" #: internet/subsonicsettingspage.cpp:90 -msgid "Incompatible Subsonic REST protocol version. Client must upgrade." -msgstr "" - -#: internet/subsonicsettingspage.cpp:94 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." -msgstr "" +msgstr "Subsonic REST プロトコルバージョンの互換性がありません。サーバーをアップグレードする必要があります。" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." -msgstr "" +msgstr "設定は完了していません。すべての入力欄を埋めてください。" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "音量を 4% 上げます" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" -msgstr "" +msgstr "音量を % 上げる" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "音量を上げる" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "%1 のインデックスを作成しています。" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "情報" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "入力オプション" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "挿入..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "インストール済み" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" -msgstr "" +msgstr "整合性の検査" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "インターネット" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "インターネットプロバイダ" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "不正な API キーです" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "不正な形式です" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "不正なメソッドです" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "不正なパラメーターです" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "不正なリソースが指定されました" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "不正なサービスです" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "不正なセッションキーです" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "ユーザー名またはパスワードが違います" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "選択を反転する" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo の最も聴かれているトラック" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo のトップトラック" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo の今月のトップトラック" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo の今週のトップトラック" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo のデータベース" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "現在再生中のトラックへジャンプ" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "ボタンを %1 秒長押し..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "ボタンを %1 秒長押し..." @@ -2697,11 +2771,12 @@ msgstr "ボタンを %1 秒長押し..." msgid "Keep running in the background when the window is closed" msgstr "ウィンドウを閉じたときバックグラウンドで起動し続ける" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "元のファイルを保持する" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Kittens" @@ -2709,70 +2784,36 @@ msgstr "Kittens" msgid "Language" msgstr "言語" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "ノートパソコン・ヘッドフォン" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" -msgstr "Large Hall" +msgstr "広間" #: widgets/nowplayingwidget.cpp:94 msgid "Large album cover" msgstr "大きいアルバムカバー" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "大きいサイドバー" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "最終再生" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "最後に再生" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm カスタムラジオ: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm ライブラリ - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm ミックスラジオ - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm ご近所さんのラジオ - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm ラジオ局 - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm %1 にテイストの似たアーティスト" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm タグラジオ: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm は現在混雑しています。数分後にやり直してください" @@ -2780,11 +2821,11 @@ msgstr "Last.fm は現在混雑しています。数分後にやり直してく msgid "Last.fm password" msgstr "Last.fm のパスワード" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm の再生回数" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm タグ" @@ -2792,28 +2833,24 @@ msgstr "Last.fm タグ" msgid "Last.fm username" msgstr "Last.fm のユーザー名" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "嫌いなトラック" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "既定にするには空のままにします。例: \"/dev/dsp\"、\"front\"、など" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" -msgstr "" +msgstr "左" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "長さ" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "ライブラリ" @@ -2821,26 +2858,26 @@ msgstr "ライブラリ" msgid "Library advanced grouping" msgstr "ライブラリの高度なグループ化" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" -msgstr "" +msgstr "ライブラリー再スキャン通知" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "ライブラリ検索" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "制限" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "以前聴いた曲をもとに Grooveshark の曲を聴きます" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" -msgstr "Live" +msgstr "ライブ" #: ../bin/src/ui_albumcovermanager.h:217 msgid "Load" @@ -2850,15 +2887,15 @@ msgstr "読み込み" msgid "Load cover from URL" msgstr "URL からカバーの読み込み" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "URL からカバーの読み込み..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "ディスクからカバーの読み込み" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "ディスクからカバーの読み込み..." @@ -2866,101 +2903,111 @@ msgstr "ディスクからカバーの読み込み..." msgid "Load playlist" msgstr "プレイリストの読み込み" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "プレイリストの読み込み..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm ラジオの読み込み中" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "MTP デバイスの読み込み中" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod データベースの読み込み中" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "スマートプレイリストの読み込み中" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "曲の読み込み中" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "ストリームの読み込み中" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "トラックの読み込み中" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "トラック情報の読み込み中" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "読み込んでいます..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "ファイル・URL を読み込んで、現在のプレイリストを置き換えます" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "ログイン" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" -msgstr "" +msgstr "ログインは失敗しました" + +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "ログアウト" #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" -msgstr "" +msgstr "Long Term Prediction プロファイル (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Love" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "低 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "低 (256x256)" #: ../bin/src/ui_transcoderoptionsaac.h:135 msgid "Low complexity profile (LC)" -msgstr "" +msgstr "Low Complexity プロファイル (LC)" #: ../bin/src/ui_songinfosettingspage.h:159 msgid "Lyrics" msgstr "歌詞" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "%1 からの歌詞" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2972,15 +3019,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2988,23 +3035,28 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune ダウンロード" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune ダウンロードが完了しました" #: ../bin/src/ui_transcoderoptionsaac.h:134 msgid "Main profile (MAIN)" -msgstr "" +msgstr "Main プロファイル (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" -msgstr "" +msgstr "Make it so!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Make it so!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" -msgstr "" +msgstr "プレイリストをオフラインで利用可能にする" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "不正な応答です" @@ -3017,17 +3069,17 @@ msgstr "プロキシの手動構成" msgid "Manually" msgstr "手動" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "製造元" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" -msgstr "" +msgstr "視聴済みマークを付ける" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" -msgstr "" +msgstr "新曲マークを付ける" #: ../bin/src/ui_querysearchpage.h:116 msgid "Match every search term (AND)" @@ -3037,17 +3089,21 @@ msgstr "すべての検索条件に一致する (AND)" msgid "Match one or more search terms (OR)" msgstr "1 つ以上の検索条件に一致する (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "検索結果の最大件数" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "最高ビットレート" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "中 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "中 (512x512)" @@ -3059,11 +3115,15 @@ msgstr "メンバーシップの種類" msgid "Minimum bitrate" msgstr "最低ビットレート" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "projectM プリセットがありません" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "モデル" @@ -3071,20 +3131,20 @@ msgstr "モデル" msgid "Monitor the library for changes" msgstr "ライブラリの変更を監視する" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "モノラル再生" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "ヶ月" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "ムード" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "ムードバーの形式" @@ -3092,15 +3152,19 @@ msgstr "ムードバーの形式" msgid "Moodbars" msgstr "ムードバー" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "もっと" + +#: library/library.cpp:84 msgid "Most played" msgstr "最も再生している" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "マウントポイント" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "マウントポイント" @@ -3109,7 +3173,7 @@ msgstr "マウントポイント" msgid "Move down" msgstr "下へ移動" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "ライブラリへ移動..." @@ -3118,7 +3182,7 @@ msgstr "ライブラリへ移動..." msgid "Move up" msgstr "上へ移動" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "ミュージック" @@ -3126,80 +3190,52 @@ msgstr "ミュージック" msgid "Music Library" msgstr "ミュージックライブラリ" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "ミュート" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "マイ Last.fm ライブラリ" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "マイ Last.fm ミックスラジオ" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "マイ Last.fm のご近所さん" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "マイ Last.fm のおすすめラジオ" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "マイミックスラジオ" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "マイミュージック" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "ご近所さん" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "ラジオ局" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "おすすめ" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "名前" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "名前" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "名前のオプション" #: ../bin/src/ui_transcoderoptionsspeex.h:230 msgid "Narrow band (NB)" -msgstr "" - -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "ご近所さんたち" +msgstr "低速回線 (NB)" #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "ネットワークプロキシ" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" -msgstr "" +msgstr "Network Remote" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "なし" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "再生したことがない" @@ -3208,21 +3244,21 @@ msgstr "再生したことがない" msgid "Never start playing" msgstr "再生を開始しない" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "新しいフォルダー" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "新しいプレイリスト" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "新しいスマートプレイリスト..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "新しい曲" @@ -3230,102 +3266,106 @@ msgstr "新しい曲" msgid "New tracks will be added automatically." msgstr "新しいトラックは自動的に追加されます。" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "最新のトラック" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "次へ" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "次のトラック" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "次週" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" -msgstr "アナライザーがありません" +msgstr "アナライザーなし" #: ../bin/src/ui_appearancesettingspage.h:285 msgid "No background image" msgstr "背景画像なし" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." -msgstr "" +msgstr "エクスポートしたカバーはありません" #: ../bin/src/ui_transcoderoptionsaac.h:146 msgid "No long blocks" -msgstr "" +msgstr "長いブロックなし" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "見つかりません。再びプレイリスト全体を表示するには検索ボックスをクリアします。" #: ../bin/src/ui_transcoderoptionsaac.h:145 msgid "No short blocks" -msgstr "" +msgstr "短いブロックなし" #: ../bin/src/ui_groupbydialog.h:128 ../bin/src/ui_groupbydialog.h:142 #: ../bin/src/ui_groupbydialog.h:156 msgid "None" msgstr "なし" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "デバイスへのコピーに適切な曲が選択されていません" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" -msgstr "" +msgstr "ふつう" #: ../bin/src/ui_transcoderoptionsaac.h:144 msgid "Normal block type" -msgstr "" +msgstr "通常ブロックタイプ" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "ダイナミック プレイリストの使用中は利用できません" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "接続されていません" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "内容が足りません" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "ファンが足りません" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "メンバーが足りません" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "ご近所さんが足りません" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "未インストール" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "ログインしていません" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "マウントされていません - マウントするにはダブルクリックします" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "該当なし" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "通知の種類" @@ -3338,72 +3378,77 @@ msgstr "通知" msgid "Now Playing" msgstr "再生中" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD のプレビュー" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" -msgstr "" +msgstr "オフ" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" -msgstr "" +msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" -msgstr "" +msgstr "オン" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" "172.16.0.0 - 172.31.255.255\n" "192.168.x.x" -msgstr "" +msgstr "以下の IP アドレス範囲のクライアントからのみ接続を受け付けます:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" -msgstr "" +msgstr "ローカルネットワークからのみ接続を許可する" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "先頭のみ表示する" #: ../bin/src/ui_appearancesettingspage.h:290 msgid "Opacity" -msgstr "" +msgstr "不透明度" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "%1 をブラウザーで開く" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "オーディオ CD を開く(&A)..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "OPML ファイルを開く" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "OPML ファイルを開く..." @@ -3411,30 +3456,35 @@ msgstr "OPML ファイルを開く..." msgid "Open device" msgstr "デバイスを開く" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "ファイルを開く..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Google Drive で開く" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "新しいプレイリストで開く" -#: songinfo/echonestbiographies.cpp:96 -msgid "Open in your browser" -msgstr "" +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "新しいプレイリストで開く" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: songinfo/echonestbiographies.cpp:97 +msgid "Open in your browser" +msgstr "ブラウザーで開く" + +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "開く..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "操作が失敗しました" @@ -3452,69 +3502,65 @@ msgstr "オプション..." #: ../bin/src/ui_transcodersettingspage.h:181 msgid "Opus" -msgstr "" +msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "ファイルの整理" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "ファイルの整理..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "ファイルの整理中" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "元のタグ" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "その他のオプション" #: ../bin/src/ui_albumcoverexport.h:204 msgid "Output" -msgstr "" +msgstr "出力" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" -msgstr "" +msgstr "出力デバイス" #: ../bin/src/ui_transcodedialog.h:211 ../bin/src/ui_ripcd.h:318 msgid "Output options" msgstr "出力のオプション" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" -msgstr "" +msgstr "すべて上書きする" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "既存のファイルを上書きする" #: ../bin/src/ui_albumcoverexport.h:211 msgid "Overwrite smaller ones only" -msgstr "" +msgstr "小さいサイズの場合のみ上書きする" #: ../bin/src/ui_podcastinfowidget.h:195 msgid "Owner" msgstr "所有者" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Jamendo カタログの分析中" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" -msgstr "Party" +msgstr "パーティー" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3523,56 +3569,44 @@ msgstr "Party" msgid "Password" msgstr "パスワード" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "一時停止" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "再生を一時停止します" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "一時停止中" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" -msgstr "" +msgstr "演奏者" #: ../bin/src/ui_albumcoverexport.h:215 msgid "Pixel" -msgstr "" +msgstr "ピクセル" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "プレーンサイドバー" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "再生" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "アーティストまたはタグの再生" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "アーティストラジオの再生..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "再生回数" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "カスタムラジオの再生..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "停止中は再生し、再生中は一時停止します" @@ -3581,45 +3615,42 @@ msgstr "停止中は再生し、再生中は一時停止します" msgid "Play if there is nothing already playing" msgstr "再生中の曲がない場合は再生する" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "タグラジオの再生..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "プレイリストの 番目のトラックを再生する" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "再生・一時停止" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "再生" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "プレーヤーのオプション" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "プレイリスト" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "プレイリストが完了しました" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "プレイリストのオプション" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "プレイリストの種類" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "プレイリスト" @@ -3631,23 +3662,23 @@ msgstr "ブラウザーを閉じて Clementine に戻ってください。" msgid "Plugin status:" msgstr "プラグインの状態:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "ポッドキャスト" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "人気の曲" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "今月人気の曲" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "今日人気の曲" @@ -3656,22 +3687,23 @@ msgid "Popup duration" msgstr "ポップアップの長さ" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "ポート" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "プリアンプ" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "環境設定" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "環境設定..." @@ -3707,7 +3739,7 @@ msgstr "使用するボタンの組み合わせを押してください:" msgid "Press a key" msgstr "キーを押してください" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "%1 に使用するキーの組み合わせを押してください..." @@ -3718,20 +3750,20 @@ msgstr "Pretty OSD のオプション" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "プレビュー" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "前へ" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "前のトラック" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "バージョン情報を出力" @@ -3739,58 +3771,72 @@ msgstr "バージョン情報を出力" msgid "Profile" msgstr "プロファイル" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "進行状況" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "進行状況" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" -msgstr "" +msgstr "サイケデリック" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Wii リモコンのボタンを押してください" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" -msgstr "曲をランダムに並び替えます" +msgstr "曲をランダムに並び替える" #: ../bin/src/ui_transcoderoptionsflac.h:81 #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "品質" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "デバイスを照会しています..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "キューマネージャー" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "選択されたトラックをキューに追加" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "トラックをキューに追加" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "ラジオ (すべてのトラックで均一の音量)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "ラジオ" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Rain" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Rain" @@ -3798,48 +3844,48 @@ msgstr "Rain" msgid "Random visualization" msgstr "ランダムなビジュアライゼーション" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" -msgstr "現在の曲を星 0 つと評価します" +msgstr "現在の曲を星 0 つと評価する" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" -msgstr "現在の曲を星 1 つと評価します" +msgstr "現在の曲を星 1 つと評価する" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" -msgstr "現在の曲を星 2 つと評価します" +msgstr "現在の曲を星 2 つと評価する" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" -msgstr "現在の曲を星 3 つと評価します" +msgstr "現在の曲を星 3 つと評価する" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" -msgstr "現在の曲を星 4 つと評価します" +msgstr "現在の曲を星 4 つと評価する" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" -msgstr "現在の曲を星 5 つと評価します" +msgstr "現在の曲を星 5 つと評価する" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "評価" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "本当に取り消しますか?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." -msgstr "" +msgstr "リダイレクト回数制限を超えました。サーバーの設定を確認してください。" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "更新" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "カタログの更新" @@ -3847,21 +3893,17 @@ msgstr "カタログの更新" msgid "Refresh channels" msgstr "チャンネルの更新" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "友だち一覧の更新" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "局の一覧の更新" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "ストリームの更新" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" -msgstr "Reggae" +msgstr "レゲエ" #: ../bin/src/ui_wiimoteshortcutgrabber.h:126 msgid "Remember Wii remote swing" @@ -3871,8 +3913,8 @@ msgstr "Wii リモコンのスイングを記憶する" msgid "Remember from last time" msgstr "最後から記憶する" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "削除" @@ -3880,7 +3922,7 @@ msgstr "削除" msgid "Remove action" msgstr "アクションの削除" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "重複するものをプレイリストから削除" @@ -3888,73 +3930,77 @@ msgstr "重複するものをプレイリストから削除" msgid "Remove folder" msgstr "フォルダーの削除" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "マイミュージックから削除する" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "ブックマークから削除する" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "お気に入りから削除する" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "プレイリストから削除" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" -msgstr "" +msgstr "プレイリストを削除する" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" -msgstr "" +msgstr "プレイリストを削除する" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "マイミュージックから曲を削除しています" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "お気に入りから曲を削除しています" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" -msgstr "\"%1\" プレイリストの名前を変更" +msgstr "プレイリスト「%1」の名前を変更" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Grooveshark のプレイリストの名前を変更" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "プレイリストの名前の変更" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "プレイリストの名前の変更..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "この順序でトラック番号を振る..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "リピート" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "アルバムをリピート" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "プレイリストをリピート" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "トラックをリピート" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "現在のプレイリストを置き換える" @@ -3963,56 +4009,56 @@ msgstr "現在のプレイリストを置き換える" msgid "Replace the playlist" msgstr "プレイリストを置き換える" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "スペースをアンダースコアに置換する" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "リプレイゲイン" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" -msgstr "" +msgstr "リプレイゲインモード" #: ../bin/src/ui_dynamicplaylistcontrols.h:112 msgid "Repopulate" msgstr "再装着" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" -msgstr "" +msgstr "認証コードを要求する" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "リセット" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "再生回数のリセット" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." -msgstr "" +msgstr "トラックを再開 (開始8秒以内なら前のトラックを再生)" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "ASCII 文字に限定する" #: ../bin/src/ui_behavioursettingspage.h:205 msgid "Resume playback on start" -msgstr "" +msgstr "起動時に再生を再開する" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Grooveshark のマイミュージックの曲を取得中" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Grooveshark のお気に入りの曲を取得中" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Grooveshark のプレイリストを取得中" @@ -4022,21 +4068,21 @@ msgstr "Clementine に戻る" #: ../bin/src/ui_equalizer.h:174 msgid "Right" -msgstr "" +msgstr "右" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "リッピングする" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "CD をリンピングする" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." -msgstr "" +msgstr "オーディオ CD をリッピング..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "ロック" @@ -4048,85 +4094,91 @@ msgstr "実行" msgid "SOCKS proxy" msgstr "SOCKS プロキシ" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." -msgstr "" +msgstr "SSL ハンドシェークエラーです。サーバーの設定を確認してください。下の SSLv3 オプションで問題を回避できるかもしれません。" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "デバイスを安全に取り外す" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "コピー後にデバイスを安全に取り外す" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "サンプルレート" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "サンプルレート" #: ../bin/src/ui_appearancesettingspage.h:295 msgid "Save .mood files in your music library" -msgstr "" +msgstr "ミュージックライブラリーに .mood ファイルを保存する" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "カバーアートの保存" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "カバーをディスクに保存..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "画像の保存" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "プレイリストの保存" +msgstr "プレイリストを保存する" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "プレイリストを保存する" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "プレイリストの保存..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "プリセットの保存" #: ../bin/src/ui_librarysettingspage.h:193 msgid "Save ratings in file tags when possible" -msgstr "" +msgstr "可能であれば評価をファイルのタグに保存する" #: ../bin/src/ui_librarysettingspage.h:197 msgid "Save statistics in file tags when possible" -msgstr "" +msgstr "可能であれば統計情報をファイルのタグに保存する" #: ../bin/src/ui_addstreamdialog.h:115 msgid "Save this stream in the Internet tab" msgstr "このストリームを [インターネット] タブに保存する" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" -msgstr "" +msgstr "曲の統計情報を曲ファイルに保存中" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "トラックの保存中" #: ../bin/src/ui_transcoderoptionsaac.h:136 msgid "Scalable sampling rate profile (SSR)" -msgstr "" +msgstr "Scalable Sampling Rate プロファイル (SSR)" #: ../bin/src/ui_albumcoverexport.h:213 msgid "Scale size" -msgstr "" +msgstr "サイズを調整する" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "スコア" @@ -4134,10 +4186,14 @@ msgstr "スコア" msgid "Scrobble tracks that I listen to" msgstr "聴取するトラックを Scrobble する" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "検索" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "検索" @@ -4145,29 +4201,29 @@ msgstr "検索" msgid "Search Icecast stations" msgstr "Icecast 局の検索" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Jamendo の検索" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Magnatune の検索" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" -msgstr "" +msgstr "Subsonic を検索する" + +#: ui/albumcoverchoicecontroller.cpp:73 +msgid "Search automatically" +msgstr "自動的に検索する" #: ui/albumcoverchoicecontroller.cpp:66 -msgid "Search automatically" -msgstr "" - -#: ui/albumcoverchoicecontroller.cpp:62 msgid "Search for album covers..." msgstr "アルバムカバーの検索..." #: ../bin/src/ui_globalsearchview.h:208 msgid "Search for anything" -msgstr "" +msgstr "何かを検索" #: ../bin/src/ui_gpoddersearchpage.h:76 msgid "Search gpodder.net" @@ -4181,21 +4237,21 @@ msgstr "iTunes を検索" msgid "Search mode" msgstr "検索モード" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "検索オプション" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "検索結果" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "検索条件" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Grooveshark を検索中" @@ -4203,27 +4259,27 @@ msgstr "Grooveshark を検索中" msgid "Second level" msgstr "第 2 階層" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "後方へシーク" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "前方へシーク" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "現在再生中のトラックを相対値でシークする" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "現在再生中のトラックの絶対的な位置へシークする" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "すべて選択" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "選択しない" @@ -4231,7 +4287,7 @@ msgstr "選択しない" msgid "Select background color:" msgstr "背景色の選択:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "背景画像の選択" @@ -4247,77 +4303,77 @@ msgstr "前景色の選択:" msgid "Select visualizations" msgstr "ビジュアライゼーションの選択" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "ビジュアライゼーションの選択..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "選択..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "シリアル番号" #: ../bin/src/ui_subsonicsettingspage.h:126 msgid "Server URL" -msgstr "" +msgstr "サーバー URL" #: ../bin/src/ui_subsonicsettingspage.h:125 msgid "Server details" -msgstr "" +msgstr "サーバーの詳細" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "サービスがオフラインです" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." -msgstr "%1 を \"%2\" に設定します..." +msgstr "%1 を「%2」に設定します..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "音量を パーセントへ設定しました" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "すべての選択されたトラックの音量を設定しました..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" -msgstr "" +msgstr "設定" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "ショートカット" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "%1 のショートカット" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "%1 のショートカットは既に存在します" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "表示" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "OSD の表示" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "現在のトラックを光らせるアニメーションを表示する" #: ../bin/src/ui_appearancesettingspage.h:293 msgid "Show a moodbar in the track progress bar" -msgstr "" +msgstr "進行状況バーにムードバーを表示する" #: ../bin/src/ui_notificationssettingspage.h:434 msgid "Show a native desktop notification" @@ -4339,52 +4395,56 @@ msgstr "システムトレイからポップアップを表示する" msgid "Show a pretty OSD" msgstr "Pretty OSD を表示する" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "ステータスバーの上に表示" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" -msgstr "すべての曲を表示" +msgstr "すべての曲を表示する" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" -msgstr "すべての曲を表示" +msgstr "すべての曲を表示する" #: ../bin/src/ui_librarysettingspage.h:209 msgid "Show cover art in library" -msgstr "ライブラリにカバーアートを表示" +msgstr "ライブラリにカバーアートを表示する" #: ../bin/src/ui_librarysettingspage.h:210 msgid "Show dividers" msgstr "区切りを表示する" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "原寸表示..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "検索結果にグループを表示する" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "ファイルブラウザーで表示..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." -msgstr "" +msgstr "ライブラリーに表示..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "さまざまなアーティストに表示" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" -msgstr "" +msgstr "ムードバーを表示する" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "重複するものだけ表示" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "タグのないものだけ表示" @@ -4393,8 +4453,8 @@ msgid "Show search suggestions" msgstr "検索のおすすめを表示する" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "\"Love\" および \"はじき出す\" ボタンを表示する" +msgid "Show the \"love\" button" +msgstr "\"Love\"ボタンを表示する" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4406,29 +4466,29 @@ msgstr "トレイアイコンを表示する" #: ../bin/src/ui_globalsearchsettingspage.h:152 msgid "Show which sources are enabled and disabled" -msgstr "有効および無効になっているソースを表示" +msgstr "有効および無効になっているソースを表示する" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "表示・非表示の切り替え" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "シャッフル" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "アルバムをシャッフル" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "すべてシャッフル" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "プレイリストのシャッフル" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "このアルバムのトラックをシャッフル" @@ -4444,55 +4504,63 @@ msgstr "サインアウト" msgid "Signing in..." msgstr "サインインしています..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "テイストの似たアーティスト" #: ../bin/src/ui_albumcoverexport.h:212 msgid "Size" -msgstr "" +msgstr "サイズ" #: ../bin/src/ui_albumcoverexport.h:214 msgid "Size:" -msgstr "" +msgstr "サイズ:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "プレイリストで後ろにスキップ" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "スキップ回数" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "プレイリストで前にスキップ" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "選択したトラックをスキップする" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "トラックをスキップする" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "小さいアルバムカバー" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "小さいサイドバー" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "スマートプレイリスト" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "スマートプレイリスト" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4500,11 +4568,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "曲の情報" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "曲の情報" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4524,15 +4592,23 @@ msgstr "ジャンルで整列 (人気順)" msgid "Sort by station name" msgstr "局名で整列" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "プレイリストの曲を名前順に整列" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "曲の並べ替え" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "並べ替え中" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "ソース" @@ -4548,7 +4624,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify ログインエラー" @@ -4556,7 +4632,7 @@ msgstr "Spotify ログインエラー" msgid "Spotify plugin" msgstr "Spotify プラグイン" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify プラグインはインストールされていません" @@ -4564,123 +4640,123 @@ msgstr "Spotify プラグインはインストールされていません" msgid "Standard" msgstr "標準" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" -msgstr "" +msgstr "星付き" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "リッピングを開始する" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "現在再生中のプレイリストを開始する" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "トランスコードの開始" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "この検索結果のリストを補完するには、上の検索ボックスに何か入力してください。" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 の開始中" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "開始しています..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "局" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "停止" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "次で停止" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "このトラックで停止" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "再生の停止" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "現在のトラックで停止" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" -msgstr "" +msgstr "トラック %1 の後に再生を停止" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "停止しました" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "ストリーム" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." -msgstr "" +msgstr "Subsonic サーバーのストリーミング再生は 30日のお試し期間後はサーバーライセンスを取得する必要があります。" #: ../bin/src/ui_magnatunesettingspage.h:160 msgid "Streaming membership" msgstr "ストリーミングのメンバーシップ" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" -msgstr "" +msgstr "購読しているプレイリスト" #: ../bin/src/ui_podcastinfowidget.h:196 msgid "Subscribers" -msgstr "" +msgstr "購読者" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" -msgstr "" +msgstr "Subsonic" #: ../data/oauthsuccess.html:36 msgid "Success!" msgstr "成功!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 の書き込みに成功しました" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" -msgstr "" +msgstr "お薦めのタグ" #: ../bin/src/ui_edittagdialog.h:681 #: ../bin/src/ui_notificationssettingspage.h:448 msgid "Summary" msgstr "要約" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "最高 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "最高 (2048x2048)" @@ -4690,45 +4766,37 @@ msgstr "サポートされている形式" #: ../bin/src/ui_librarysettingspage.h:201 msgid "Synchronize statistics to files now" -msgstr "" +msgstr "統計情報をいますぐ同期する" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" -msgstr "" +msgstr "Spotify の受信箱を同期中" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" -msgstr "" +msgstr "Spotify のプレイリストを同期中" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" -msgstr "" +msgstr "Spotify の星付きトラックを同期中" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" -msgstr "" +msgstr "システムの色" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "タブを上に配置" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "タグ" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "タグ取得ツール" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "タグラジオ" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "目標ビットレート" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "テクノ" @@ -4736,30 +4804,25 @@ msgstr "テクノ" msgid "Text options" msgstr "文字のオプション" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "謝辞" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." -msgstr "コマンド \"%1\" は開始できませんでした。" +msgstr "コマンド「%1」を開始できませんでした。" #: ../bin/src/ui_appearancesettingspage.h:282 msgid "The album cover of the currently playing song" msgstr "再生中の曲のアルバムカバー" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "ディレクトリ %1 は不正です" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "プレイリスト '%1' は空であるか読み込めませんでした。" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "2 つ目の値は 1 つ目より大きくする必要があります!" @@ -4767,40 +4830,40 @@ msgstr "2 つ目の値は 1 つ目より大きくする必要があります!" msgid "The site you requested does not exist!" msgstr "指定されたサイトは存在しません!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "指定されたサイトは画像ではありません!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." -msgstr "" +msgstr "Subsonic サーバーのお試し期間は終了しました。寄付してライセンスキーを取得してください。詳細は subsonic.org を参照してください。" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "更新したこのバージョンの Clementine は、次の新機能によりライブラリ全体の再スキャンが必要です。" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "gpodder.net との通信に問題がありました" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Magnatune からのメタデータ取得に問題がありました" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "iTunes Store からの応答の分析に問題がありました" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4812,17 +4875,17 @@ msgid "" "deleted:" msgstr "曲の削除に問題がありました。次のファイルは削除できませんでした:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "これらのファイルはデバイスから削除されます。続行してもよろしいですか?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" -msgstr "" +msgstr "これらのファイルは完全にディスクから削除されます。継続しますか?" #: ../bin/src/ui_librarysettingspage.h:187 msgid "These folders will be scanned for music to make up your library" @@ -4832,19 +4895,19 @@ msgstr "これらのフォルダーはライブラリを作成するためにス msgid "" "These settings are used in the \"Transcode Music\" dialog, and when " "converting music before copying it to a device." -msgstr "以下の設定は \"ミュージックのトランスコード\" ダイアログや、音楽を変換してデバイスへコピーする前に使われます。" +msgstr "以下の設定は「ミュージックのトランスコード」ダイアログや、音楽を変換してデバイスへコピーする前に使われます。" #: ../bin/src/ui_groupbydialog.h:153 msgid "Third level" msgstr "第 3 階層" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "この操作は 150 メガバイト以上のデータベースを作る可能性があります。\n操作を続行しますか?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "このアルバムは要求されたフォーマットでは利用できません" @@ -4858,11 +4921,11 @@ msgstr "Clementine がこのデバイスのサポートするファイル形式 msgid "This device supports the following file formats:" msgstr "このデバイスは次のファイル形式をサポートしています:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "このデバイスは適切に動作しません" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "これは MTP デバイスですが、Clementine は libmtp サポートなしでコンパイルされています。" @@ -4871,7 +4934,7 @@ msgstr "これは MTP デバイスですが、Clementine は libmtp サポート msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "これは iPod ですが、Clementine は libgpod サポートなしでコンパイルされています。" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4879,35 +4942,35 @@ msgstr "このデバイスに初めて接続しました。Clementine はミュ #: playlist/playlisttabbar.cpp:186 msgid "This option can be changed in the \"Behavior\" preferences" -msgstr "" +msgstr "このオプションは環境設定の「動作」で変更できます。" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "このストリームは有料会員専用です" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "この種類のデバイスはサポートされていません: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "タイトル" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Grooveshark のラジオを開始するには、まず始めに他の Grooveshark の曲をいくつか聴くとよいでしょう" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "今日" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Pretty OSD の切り替え" @@ -4915,49 +4978,53 @@ msgstr "Pretty OSD の切り替え" msgid "Toggle fullscreen" msgstr "全画面表示の切り替え" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "キュー状態の切り替え" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "scrobbling の切り替え" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "pretty OSD 表示の切り替え" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "明日" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "リダイレクトが多すぎます" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" -msgstr "" +msgstr "上位のトラック" #: ../bin/src/ui_albumcovermanager.h:221 msgid "Total albums:" -msgstr "" +msgstr "全アルバム数:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "合計転送バイト数" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "合計ネットワーク要求回数" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "トラック" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "トラック" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "ミュージックのトランスコード" @@ -4969,7 +5036,7 @@ msgstr "トランスコーダーのログ" msgid "Transcoding" msgstr "トランスコード" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "%2 個のスレッドを使用して %1 個のファイルをトランスコードしています" @@ -4978,11 +5045,11 @@ msgstr "%2 個のスレッドを使用して %1 個のファイルをトラン msgid "Transcoding options" msgstr "トランスコードのオプション" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4990,72 +5057,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "オフにする" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" -msgstr "" +msgstr "超高速回線 (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "%1 をダウンロードできません (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "不明" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "不明なコンテンツタイプ" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "不明なエラー" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "カバーを未設定にする" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "選択したトラックをスキップしない" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "トラックをスキップしない" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "購読解除" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" -msgstr "" +msgstr "次のコンサート" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "更新" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Grooveshark のプレイリストを更新" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "すべてのポッドキャストを更新" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "変更されたライブラリフォルダーを更新" @@ -5063,7 +5130,7 @@ msgstr "変更されたライブラリフォルダーを更新" msgid "Update the library when Clementine starts" msgstr "Clementine の起動時にライブラリを更新する" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "このポッドキャストを更新" @@ -5071,21 +5138,21 @@ msgstr "このポッドキャストを更新" msgid "Updating" msgstr "更新" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "%1 の更新中" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "更新しています %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "ライブラリの更新中" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "使用量" @@ -5093,17 +5160,17 @@ msgstr "使用量" msgid "Use Album Artist tag when available" msgstr "利用可能ならアルバムアーティストタグを使用する" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gnome のショートカットキーを使用する" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "利用可能ならリプレイゲインのメタデータを使用する" #: ../bin/src/ui_subsonicsettingspage.h:129 msgid "Use SSLv3" -msgstr "" +msgstr "SSLv3 を使用する" #: ../bin/src/ui_wiimotesettingspage.h:189 msgid "Use Wii Remote" @@ -5117,9 +5184,9 @@ msgstr "カスタム色設定を使用する" msgid "Use a custom message for notifications" msgstr "通知にカスタムメッセージを使用する" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" -msgstr "" +msgstr "ネットワークリモコンを使用する" #: ../bin/src/ui_networkproxysettingspage.h:167 msgid "Use authentication" @@ -5139,7 +5206,7 @@ msgstr "Wii リモコンの状態の報告に通知を使用する" #: ../bin/src/ui_transcoderoptionsaac.h:139 msgid "Use temporal noise shaping" -msgstr "" +msgstr "Temporal Noise Shaping (TNS) を使用する" #: ../bin/src/ui_behavioursettingspage.h:198 msgid "Use the system default" @@ -5157,20 +5224,20 @@ msgstr "システムのプロキシ設定を使用する" msgid "Use volume normalisation" msgstr "音量の正規化を使用する" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "使用中" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "ユーザー %1 には Grooveshark Anywhere のアカウントがありません。" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "ユーザーインターフェース" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5192,12 +5259,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "可変ビットレート" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "さまざまなアーティスト" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "バージョン %1" @@ -5210,7 +5277,7 @@ msgstr "表示" msgid "Visualization mode" msgstr "ビジュアライゼーションモード" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "ビジュアライゼーション" @@ -5218,11 +5285,15 @@ msgstr "ビジュアライゼーション" msgid "Visualizations Settings" msgstr "ビジュアライゼーションの設定" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" -msgstr "" +msgstr "有音/無音検出 (VAD)" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "音量 %1%" @@ -5240,11 +5311,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" -msgstr "" +msgstr "プレイリストタブを閉じるときに警告する" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5252,7 +5323,7 @@ msgstr "Wav" msgid "Website" msgstr "ウェブサイト" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "週" @@ -5276,34 +5347,34 @@ msgstr "おすすめの検索..." #: ../bin/src/ui_transcoderoptionsspeex.h:229 msgid "Wide band (WB)" -msgstr "" +msgstr "高速回線 (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii リモコン %1: アクティブになりました" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii リモコン %1: 接続されました" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii リモコン %1: バッテリーがありません (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii リモコン %1: 非アクティブになりました" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii リモコン %1: 切断されました" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii リモコン %1: バッテリーが少なくなりました (%2%)" @@ -5324,33 +5395,33 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media オーディオ" #: ../bin/src/ui_albumcovermanager.h:222 msgid "Without cover:" -msgstr "" +msgstr "カバーなし:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "このアルバムにある他の曲も さまざまなアーティスト に移動しますか?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "全体の再スキャンを今すぐ実行しますか?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" -msgstr "" +msgstr "すべての曲の統計情報を曲ファイルに書き込む" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." -msgstr "" +msgstr "ユーザー名またはパスワードが違います。" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5362,11 +5433,11 @@ msgstr "年" msgid "Year - Album" msgstr "年 - アルバム" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "年" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "昨日" @@ -5374,28 +5445,28 @@ msgstr "昨日" msgid "You are about to download the following albums" msgstr "次のアルバムをダウンロードしようとしています" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" -msgstr "" +msgstr "プレイリスト「%1」をお気に入りから削除します。よろしいですか?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" -msgstr "" +msgstr "お気に入りに含まれていないプレイリストを削除しようとしています。このプレイリストは削除されます(この操作は元に戻せません)。\n削除してもよろしいですか?" #: ../bin/src/ui_loginstatewidget.h:172 msgid "You are not signed in." msgstr "サインインしていません。" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "%1 でサインインしています。" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "サインインしています。" @@ -5403,13 +5474,13 @@ msgstr "サインインしています。" msgid "You can change the way the songs in the library are organised." msgstr "ライブラリの曲を整理する方法を変更できます。" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "アカウントがなくても無料で聴くことができますが、プレミアムメンバーは広告なしでより高音質で聴くことができます。" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5419,13 +5490,6 @@ msgstr "Magnatune の曲はアカウントなしで無料で聴くことがで msgid "You can listen to background streams at the same time as other music." msgstr "バックグラウンドストリームを別のミュージックとして同時に聴くことができます。" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "トラックは無料で Scrobble できますが、有料会員になると Clementine から Last.fm ラジオを配信できます。" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Clementine のリモートコントロールとして Wii リモコンを使用できます。詳細はClementine wiki のページをご覧ください。\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Grooveshark Anywhere のアカウントがありません。" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Spotify のプレミアムアカウントがありません。" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Spotify からログアウトしました。設定ダイアログでパスワードを再入力してください。" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Spotify からログアウトしました。パスワードを再入力してください。" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "このトラックは Love されています" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5470,17 +5548,11 @@ msgstr "Clementine でグローバルショートカットを使用するには msgid "You will need to restart Clementine if you change the language." msgstr "言語を変更するには Clementine の再起動が必要です。" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" -msgstr "" +msgstr "あなたの IP アドレス:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Last.fm の認証情報が間違っています" @@ -5488,44 +5560,45 @@ msgstr "Last.fm の認証情報が間違っています" msgid "Your Magnatune credentials were incorrect" msgstr "Magnatune の認証情報が間違っています" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "ライブラリは空です!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "ラジオストリーム" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Scrobble 回数: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "システムが OpenGL をサポートしていないため、ビジュアライゼーションを利用できません。" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "ユーザー名またはパスワードが間違っています。" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "%n 曲の追加" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" -msgstr "が次の値より後" +msgstr "が次の日付以後" #: ../bin/src/ui_searchtermwidget.h:270 msgid "ago" @@ -5541,21 +5614,21 @@ msgstr "自動" #: smartplaylists/searchterm.cpp:206 msgid "before" -msgstr "が次の値より前" +msgstr "が次の日付以前" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" -msgstr "が次の値の間" +msgstr "が次の時間範囲内" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "大きい順" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "が次を含む" @@ -5565,20 +5638,20 @@ msgstr "が次を含む" msgid "disabled" msgstr "無効" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "ディスク %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "が次を含まない" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "が次で終わる" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "が次に一致する" @@ -5586,107 +5659,109 @@ msgstr "が次に一致する" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net ディレクトリ" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "が次より大きい" #: ../bin/src/ui_deviceviewcontainer.h:99 msgid "iPods and USB devices currently don't work on Windows. Sorry!" -msgstr "" +msgstr "iPod と USB デバイスは現在のところ Windows では動作しません。すみません!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" -msgstr "" +msgstr "が次の時間以内" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "が次より小さい" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "長い順" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "%n 曲の移動" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "新しい順" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "が次と異なる" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" -msgstr "" +msgstr "が次の時間以前" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" -msgstr "が次の値でない" +msgstr "が次の日付でない" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "古い順" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" -msgstr "が次の値" +msgstr "が次の日付" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "オプション" #: ../bin/src/ui_networkremotesettingspage.h:203 msgid "or scan the QR code!" -msgstr "" +msgstr "または QR コードをスキャン!" #: widgets/didyoumean.cpp:56 msgid "press enter" msgstr "enter を押してください" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "%n 曲の削除" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "短い順" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "曲のシャッフル" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "小さい順" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "曲の並び替え" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "が次で始まる" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "停止" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "トラック %1" diff --git a/src/translations/ka.po b/src/translations/ka.po index 9702c1fee..e2ca26bc9 100644 --- a/src/translations/ka.po +++ b/src/translations/ka.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Georgian (http://www.transifex.com/projects/p/clementine/language/ka/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,7 +16,7 @@ msgstr "" "Language: ka\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -41,9 +41,9 @@ msgstr "" msgid " kbps" msgstr " კბწმ" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " მწმ" @@ -56,11 +56,16 @@ msgstr "" msgid " seconds" msgstr " წამი" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " სიმღერა" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 ალბომი" @@ -70,12 +75,12 @@ msgstr "%1 ალბომი" msgid "%1 days" msgstr "%1 დღე" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 დღის წინ" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -85,48 +90,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 რეპერტუარი (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "არჩეულია %1 სიმღერა" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1-დან" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1-დან" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "ნაპოვნია %1 სიმღერა" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "ნაპოვნია %1 სიმღერა (ნაჩვენებია %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 ჩანაწერი" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev მოდული" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -140,18 +145,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "დარჩა %n" @@ -163,24 +171,24 @@ msgstr "" msgid "&Center" msgstr "&ცენტრირება" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "დამა&ტებითი" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&დახმარება" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&დამალვა %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -188,23 +196,23 @@ msgstr "" msgid "&Left" msgstr "მარ&ცხენა" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&მუსიკა" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -212,23 +220,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&ხელსაწყოები" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -248,14 +256,10 @@ msgstr "" msgid "1 day" msgstr "1 დღე" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "%n ჩანაწერი" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -265,7 +269,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 შემთხვევითი ჩანაწერი" @@ -273,12 +277,6 @@ msgstr "50 შემთხვევითი ჩანაწერი" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -289,6 +287,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -297,38 +306,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Spotify-ის Premium ანგარიში აუცილებელია." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -348,36 +357,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "დიდება ჰიპნოგომბეშოს" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1-ის შესახებ" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Clementine-ის შესახებ..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt-ის შესახებ..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "ანგარიშის დეტალები" @@ -389,11 +397,15 @@ msgstr "" msgid "Action" msgstr "მოქმედება" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wiiremote-ის აქტივაცია/დეაქტივაცია" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "პოდკასტის დამატება" @@ -409,39 +421,39 @@ msgstr "" msgid "Add action" msgstr "მოქმედების დამატება" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "სხვა ნაკადის დამატება..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "დირექტორიის დამატება..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "ფაილის დამატება..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "გადასაკოდირებელი ფაილების დამატება" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "დასტის დამატება" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "დასტის დამატება..." @@ -453,11 +465,11 @@ msgstr "ახალი დასტის დამატება..." msgid "Add podcast" msgstr "პოდკასტის დამატება" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "პოდკასტის დამატება..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -521,6 +533,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -529,22 +545,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "ნაკადის დამატება..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "სხვა რეპერტუარში დამატება" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "რეპერტუარში დამატება" @@ -553,6 +581,10 @@ msgstr "რეპერტუარში დამატება" msgid "Add to the queue" msgstr "რიგში დამატება" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -582,15 +614,15 @@ msgstr "დაემატა დღეს" msgid "Added within three months" msgstr "დაემატა სამი თვის მანძილზე" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -598,12 +630,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "კოპირების შემდეგ..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -611,11 +643,11 @@ msgstr "კოპირების შემდეგ..." msgid "Album" msgstr "ალბომი" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "ალბომი (იდეალური ხმის სიმაღლე ყველა ჩანაწერისთვის)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -625,35 +657,36 @@ msgstr "ალბომის შემსრულებელი" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "ინფორმაცია ალბობის შესახებ jamendo.com-ზე..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "ალბომები ყდებით" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "ალბომები ყდების გარეშე" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "ყველა ფაილი (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "ყველა ალბომი" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "ყველა შემსრულებელი" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "ყველა ფაილი (*)" @@ -662,19 +695,19 @@ msgstr "ყველა ფაილი (*)" msgid "All playlists (%1)" msgstr "ყველა რეპერტუარი (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "ყველა თარჯიმანი" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "ყველა ჩანაწერი" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -699,30 +732,30 @@ msgstr "მთავარი ფანჯრის ყოველთვის msgid "Always start playing" msgstr "ყოველთვის დაიწყე დაკვრა" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "და:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -731,13 +764,13 @@ msgstr "" msgid "Appearance" msgstr "იერსახე" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -745,52 +778,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "შემსრულებელი" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "შემსრულებლის ინფო" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "შემსრულებლის რადიო" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "შემსრულებლის ჭდეები" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "შემსრულებლის ინიციალი" @@ -798,9 +826,13 @@ msgstr "შემსრულებლის ინიციალი" msgid "Audio format" msgstr "აუდიოფორმატი" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "ავტენრიფიკაცი ვერ მოხერხდა" @@ -808,7 +840,7 @@ msgstr "ავტენრიფიკაცი ვერ მოხერხდ msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "ავტორები" @@ -824,7 +856,7 @@ msgstr "ავტომატურად განახლება" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "ხელმისაწვდომი" @@ -832,15 +864,15 @@ msgstr "ხელმისაწვდომი" msgid "Average bitrate" msgstr "საშუალო ბიტური სიჩქარე" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC-ის პოდკასტები" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +893,7 @@ msgstr "" msgid "Background opacity" msgstr "ფონის გაუმჭვირვალობა" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -869,11 +901,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -893,18 +921,17 @@ msgstr "ქცევა" msgid "Best" msgstr "საუკეთესო" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "ბიტური სიჩქარე" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -912,7 +939,12 @@ msgstr "ბიტური სიჩქარე" msgid "Bitrate" msgstr "ბიტური სიჩქარე" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -928,7 +960,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -942,11 +974,11 @@ msgstr "" msgid "Browse..." msgstr "ნუსხა..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -958,43 +990,66 @@ msgstr "" msgid "Buttons" msgstr "ღილაკები" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE sheet-ის მხარდაჭერა" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "გაუქმება" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "ალბომის ყდის შეცვლა" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "შრიფტის ზომის შეცვლა..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "გამეორების რეჯიმის შეცვლა" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "მალმხმობის შეცვლა..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "შემთხვევითი რეჟიმის შეცვლა" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "ენის შეცვლა" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1004,15 +1059,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "განახლებებზე შემოწმება..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "ავტომატურად არჩევა" @@ -1028,11 +1087,11 @@ msgstr "აირჩიეთ შრიფტი..." msgid "Choose from the list" msgstr "აირჩიეთ სიიდან" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1041,7 +1100,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "კლასიკური" @@ -1049,17 +1108,17 @@ msgstr "კლასიკური" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "გასუფთავება" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "რეპერტუარის გასუფთავება" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1072,8 +1131,8 @@ msgstr "Clementine-ის შეცდომა" msgid "Clementine Orange" msgstr "Clementine-ის ფორთოხალი" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine-ის ვიზუალიზაცია" @@ -1095,8 +1154,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1110,20 +1169,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1135,11 +1187,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1149,7 +1201,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1164,19 +1219,19 @@ msgstr "დაკეტვა" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "ვიზუალიზაციის დაკეტვა" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "კლუბი" @@ -1184,73 +1239,78 @@ msgstr "კლუბი" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "კომენტარი" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "ჭდეების ავტომატური შევსება" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "ჭდეების ავტომატური შევსება..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "კომპოზიტორი" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Grooveshark-ის გამართვა..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm-ის გამართვა..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Magnatune-ის გამართვა..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "მალმხმობების გამართვა" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Spotify-ის გამართვა..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "ბიბლიოთეკის გამართვა..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "გამართვა..." @@ -1258,11 +1318,11 @@ msgstr "გამართვა..." msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1272,12 +1332,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1293,17 +1357,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1311,156 +1379,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1468,7 +1532,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1480,54 +1544,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "ცეკვა" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "შექმნის თარიღი" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "ცვლილების თარიღი" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "დღე" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "ხმის 4%-ით შემცირება" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "ხმის შემცირება" @@ -1535,6 +1595,11 @@ msgstr "ხმის შემცირება" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "ნაგულისხმები" @@ -1543,30 +1608,30 @@ msgstr "ნაგულისხმები" msgid "Delay between visualizations" msgstr "დაყოვნება ვიზუალიზაციებს შორის" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "ფაილების წაშლა" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "მოწყობილობიდან წაშლა..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "დისკიდან წაშლა..." @@ -1574,31 +1639,31 @@ msgstr "დისკიდან წაშლა..." msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "ორიგინალი ფაილების წაშლა" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "ფაილების წაშლა" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1607,7 +1672,7 @@ msgstr "" msgid "Details..." msgstr "დეტალები..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "მოწყობილობა" @@ -1619,15 +1684,15 @@ msgstr "მოწყობილობის პარამეტრები" msgid "Device name" msgstr "მოწყობილობის სახელი" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "მოწყობილობის პარამეტრები..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "მოწყობილობები" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1664,12 +1729,17 @@ msgstr "ხანგრძლივობის გათიშვა" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "გათიშული" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "დისკი" @@ -1679,15 +1749,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "პარამეტრების ჩვენება" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1699,27 +1769,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "არ გაიმეორო" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "არ შეურიო" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "არ გაჩერდე!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1727,12 +1797,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1748,7 +1819,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1756,15 +1827,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "ამ ალბომის ჩამოტვირთვა" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "ამ ალბომის ჩამოტვირთვა..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1772,7 +1843,7 @@ msgstr "" msgid "Download..." msgstr "ჩამოტვირთვა..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1781,23 +1852,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "მეტამონაცემების ჩამოტვირთვა" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1817,20 +1888,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "ჭდის რედაქტირება..." @@ -1842,16 +1913,16 @@ msgstr "ჭდეების რედაქტირება" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "რედაქტირება..." @@ -1859,6 +1930,10 @@ msgstr "რედაქტირება..." msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "ეკვალაიზერის ჩართვა" @@ -1873,7 +1948,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1901,15 +1976,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1923,7 +1993,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1932,11 +2002,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1944,21 +2014,22 @@ msgstr "" msgid "Entire collection" msgstr "მთელი კოლექცია" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "ეკვალაიზერი" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "შეცდომა" @@ -1966,38 +2037,38 @@ msgstr "შეცდომა" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "შეცდომა სიმღერების კოპირებისას" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "შეცდომა სიმღერების წაშლისას" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2029,7 +2100,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2041,7 +2112,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2062,36 +2133,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2101,42 +2172,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2145,11 +2216,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2165,11 +2236,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2177,7 +2248,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2185,19 +2256,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2207,7 +2282,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "ფაილები" @@ -2215,15 +2290,19 @@ msgstr "ფაილები" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2231,7 +2310,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2247,12 +2326,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2267,7 +2346,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2295,31 +2374,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2327,30 +2398,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2362,11 +2433,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2374,7 +2445,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2384,7 +2455,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2392,15 +2463,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2408,44 +2479,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2454,7 +2525,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2470,25 +2541,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2500,15 +2571,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2518,24 +2589,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2546,7 +2617,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2558,36 +2629,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2595,55 +2666,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "ინტერნეტი" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2651,42 +2722,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2695,11 +2766,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2707,11 +2779,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2719,12 +2791,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2732,45 +2808,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2778,11 +2816,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2790,28 +2828,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "ბიბლიოთეკა" @@ -2819,24 +2853,24 @@ msgstr "ბიბლიოთეკა" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2848,15 +2882,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2864,84 +2898,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "შეყვარება" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2953,12 +2992,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2970,15 +3014,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2986,7 +3030,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2994,15 +3038,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3015,15 +3064,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3035,17 +3084,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3057,11 +3110,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3069,20 +3126,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3090,15 +3147,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3107,7 +3168,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3116,7 +3177,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "მუსიკა" @@ -3124,56 +3185,32 @@ msgstr "მუსიკა" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "გაჩუმება" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3181,23 +3218,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3206,21 +3239,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3228,24 +3261,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "შემდეგი ჩანაწერი" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3253,7 +3286,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3261,7 +3294,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3275,11 +3308,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3287,43 +3320,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3336,36 +3373,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3373,11 +3415,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3385,23 +3427,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "&აუდიო CD-ის გახსნა..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3409,30 +3451,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "ფაილის გახსნა..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3452,23 +3499,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "ფაილების ორგანიზება" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "ფაილების ორგანიზება..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3476,7 +3523,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3484,15 +3531,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "არსებული ფაილების შეცვლა" @@ -3504,15 +3547,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3521,20 +3564,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3543,34 +3586,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "დაკვრა" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3579,45 +3610,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "რეპერტუარი" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "რეპერტუარი დასრულდა" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3629,23 +3657,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3654,22 +3682,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3705,7 +3734,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3716,20 +3745,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "წინა ჩანაწერი" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3737,21 +3766,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3759,7 +3792,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3767,28 +3805,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3796,48 +3839,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3845,19 +3888,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3869,8 +3908,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3878,7 +3917,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3886,73 +3925,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3961,15 +4004,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3977,24 +4020,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4002,15 +4045,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4030,11 +4073,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4046,25 +4089,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4072,27 +4115,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4108,11 +4157,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4124,7 +4173,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4132,34 +4181,38 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "ძებნა" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4179,21 +4232,21 @@ msgstr "" msgid "Search mode" msgstr "ძებნის რეჟიმი" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4201,27 +4254,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4229,7 +4282,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4245,7 +4298,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4253,7 +4306,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4265,51 +4318,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4337,15 +4390,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4357,32 +4410,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4391,7 +4448,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4406,27 +4463,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4442,7 +4499,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4454,43 +4511,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4498,11 +4563,11 @@ msgstr "" msgid "Song Information" msgstr "ინფორმაცია სიმღერაზე" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "ინფორმაცია" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4522,15 +4587,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4546,7 +4619,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4554,7 +4627,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4562,77 +4635,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "გაჩერება" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4642,7 +4715,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4650,7 +4723,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4658,12 +4731,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4672,13 +4745,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4690,43 +4763,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4734,11 +4799,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4747,17 +4812,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4765,40 +4825,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4810,13 +4870,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4836,13 +4896,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4856,11 +4916,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4869,7 +4929,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4879,33 +4939,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4913,27 +4973,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4941,21 +5001,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4967,7 +5031,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4976,11 +5040,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4988,72 +5052,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "ყველა პოდკასტის განახლება" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5061,7 +5125,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5069,21 +5133,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5091,11 +5155,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5115,7 +5179,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5155,20 +5219,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5190,12 +5254,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5208,7 +5272,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5216,11 +5280,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5238,11 +5306,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5250,7 +5318,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5276,32 +5344,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5322,7 +5390,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5330,25 +5398,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5360,11 +5428,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5372,13 +5440,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5388,12 +5456,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5401,13 +5469,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5417,13 +5485,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5468,17 +5543,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5486,42 +5555,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5541,19 +5611,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5563,20 +5633,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5584,11 +5654,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5596,54 +5666,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5655,36 +5726,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "გაჩერერება" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/kk.po b/src/translations/kk.po index ecd7830e7..3093134d6 100644 --- a/src/translations/kk.po +++ b/src/translations/kk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Kazakh (http://www.transifex.com/projects/p/clementine/language/kk/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: kk\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr " күн" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " мсек" @@ -55,11 +55,16 @@ msgstr "" msgid " seconds" msgstr " сек" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -69,12 +74,12 @@ msgstr "" msgid "%1 days" msgstr "%1 күн" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -139,18 +144,21 @@ msgstr "" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n сәтсіз" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n аяқталған" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n қалды" @@ -162,24 +170,24 @@ msgstr "Мә&тін туралануы" msgid "&Center" msgstr "Ор&тасы" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "Таң&дауыңызша" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Көмек" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "%1 жасыру" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Жа&сыру..." @@ -187,23 +195,23 @@ msgstr "Жа&сыру..." msgid "&Left" msgstr "&Сол жақ" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Му&зыка" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Ешнәрсе" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Шығу" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,23 +219,23 @@ msgstr "" msgid "&Right" msgstr "&Оң жақ" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Са&ймандар" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "1 күн" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 трек" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -272,12 +276,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1 туралы" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt туралы..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "Әрекет" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Файлды қосу" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Файлды қосу..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Буманы қосу" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Буманы қосу..." @@ -452,11 +464,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -552,6 +580,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -581,15 +613,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -597,12 +629,12 @@ msgstr "" msgid "After " msgstr "Кейін" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "" msgid "Album" msgstr "Альбом" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "Альбом әртісі" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Барлық файлдар (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Барлық файлдар (*)" @@ -661,19 +694,19 @@ msgstr "Барлық файлдар (*)" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Және:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Ашулы" @@ -730,13 +763,13 @@ msgstr "Ашулы" msgid "Appearance" msgstr "Сыртқы түрі" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +777,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Орындайтын" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,9 +825,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Аутентификация сәтсіз" @@ -807,7 +839,7 @@ msgstr "Аутентификация сәтсіз" msgid "Author" msgstr "Авторы" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Авторлары" @@ -823,7 +855,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Қолжетерлік" @@ -831,15 +863,15 @@ msgstr "Қолжетерлік" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +892,7 @@ msgstr "Фон суреті" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +920,17 @@ msgstr "Мінез-құлығы" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "Шолу..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "Батырмалар" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Бас тарту" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Қарiп өлшемiн өзгерту..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "Жаңа эпизодтарға тексеру" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Жаңартуларға тексеру..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1027,11 +1086,11 @@ msgstr "Қаріпті таңдау..." msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Классикалық" @@ -1048,17 +1107,17 @@ msgstr "Классикалық" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Тазарту" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1071,8 +1130,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1186,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "Жабу" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Клубтық" @@ -1183,73 +1238,78 @@ msgstr "Клубтық" msgid "Colors" msgstr "Түстер" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Түсіндірме" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Композитор" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "%1 баптау..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Баптау..." @@ -1257,11 +1317,11 @@ msgstr "Баптау..." msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Алмасу буферіне көшіру" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1310,156 +1378,152 @@ msgstr "" msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Таңдауыңызша" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Таңдауыңызша..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Билеу" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Жасалған күні" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Түзетілген күні" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Күн" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Ба&стапқы" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1534,6 +1594,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1607,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Өшіру" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Файлдарды өшіру" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,31 +1638,31 @@ msgstr "" msgid "Delete played episodes" msgstr "Ойналған эпизодтарды өшіру" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Файлдарды өшіру" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Мақсаты" @@ -1606,7 +1671,7 @@ msgstr "Мақсаты" msgid "Details..." msgstr "Көбірек..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Құрылғы" @@ -1618,15 +1683,15 @@ msgstr "" msgid "Device name" msgstr "Құрылғы аты" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Құрылғылар" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Сөндірулі" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1796,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "%n эпизодты жүктеп алу" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "Жүктеп алу..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Жүктелуде (%1%)..." @@ -1780,23 +1851,23 @@ msgstr "Жүктелуде (%1%)..." msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Түзету..." @@ -1858,6 +1929,10 @@ msgstr "Түзету..." msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Эквалайзер" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Қате" @@ -1965,38 +2036,38 @@ msgstr "Қате" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "Жаю" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "Жылдам" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Таңдамалы" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Файл кеңейтілуі" @@ -2184,19 +2255,23 @@ msgstr "Файл кеңейтілуі" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Файл аты" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Файл өлшемі" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "Файл түрі" msgid "Filename" msgstr "Файл аты" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Файлдар" @@ -2214,15 +2289,19 @@ msgstr "Файлдар" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Аяқтау" @@ -2230,7 +2309,7 @@ msgstr "Аяқтау" msgid "First level" msgstr "Бiрiншi деңгей" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Достар" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Жалпы" @@ -2326,30 +2397,30 @@ msgstr "Жалпы" msgid "General settings" msgstr "Жалпы баптаулары" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанры" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "Өту" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Қалайша топтау" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Бақытты" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "Жоғары" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Сағат" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "Таңбаша" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Ақпарат" @@ -2594,55 +2665,55 @@ msgstr "Ақпарат" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Кірістіру..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Орнатылған" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Интернет" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Пішімі қате" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "Тіл" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2718,12 +2790,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Ұзындығы" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Жинақ" @@ -2818,24 +2852,24 @@ msgstr "Жинақ" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2847,15 +2881,15 @@ msgstr "Жүктеу" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "Ойнату тізімін жүктеу" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Ойнату тізімін жүктеу..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Жүктелуде..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Кіру" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "Қолмен" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Шығарушы" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Жаңа етіп белгілеу" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Модель" @@ -3068,20 +3125,20 @@ msgstr "Модель" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Көңіл-күй" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Тіркеу нүктесі" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "Төмен жылжыту" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,7 +3176,7 @@ msgstr "" msgid "Move up" msgstr "Жоғары жылжыту" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Музыка" @@ -3123,56 +3184,32 @@ msgstr "Музыка" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Дыбысын басу" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Аты" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Ешқашан" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Бұрын ойналмаған" @@ -3205,21 +3238,21 @@ msgstr "Бұрын ойналмаған" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Жаңа бума" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Жаңа ойнату тізімі" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Келесі" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Келесі аптада" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3252,7 +3285,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "Жоқ" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Қалыпты" @@ -3286,43 +3319,47 @@ msgstr "Қалыпты" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3335,36 +3372,41 @@ msgstr "Хабарламалар" msgid "Now Playing" msgstr "Қазір ойналуда" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "Мөлдірсіздік" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Файлды ашу..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Ашу..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Әрекет сәтсіз" @@ -3451,23 +3498,23 @@ msgstr "Опциялар..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Басқа опциялар" @@ -3475,7 +3522,7 @@ msgstr "Басқа опциялар" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "Иесі" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "" msgid "Password" msgstr "Пароль" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Аялдату" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Ойнатуды аялдату" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Аялдатылған" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Орындайтын" @@ -3542,34 +3585,22 @@ msgstr "Орындайтын" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Ойнату" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Ойнату үрдісі" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасттар" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Поп" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Порт" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Баптаулар" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Баптаулар..." @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Алдын-ала қарау" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Алдыңғы" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "Профиль" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Барысы" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,36 +3791,46 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Сапасы" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Рейтинг" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Жаңарту" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Регги" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Өшіру" @@ -3877,7 +3916,7 @@ msgstr "Өшіру" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "Буманы өшіру" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Таңдамалылардан өшіру" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "\"%1\" ойнату тізімінің атын ауыстыру" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Ойнату тізімінің атын ауыстыру" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Ойнату тізімінің атын ауыстыру..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Қайталау" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Тастау" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Рок" @@ -4045,25 +4088,25 @@ msgstr "Орындау" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Дискреттеу жиілігі" @@ -4071,27 +4114,33 @@ msgstr "Дискреттеу жиілігі" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Суретті сақтау" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Ойнату тізімін сақтау" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Ойнату тізімін сақтау..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Баптауды сақтау" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Нәтиже" @@ -4131,34 +4180,38 @@ msgstr "Нәтиже" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Іздеу" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Барлығын таңдау" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Ештеңе таңдамау" @@ -4228,7 +4281,7 @@ msgstr "Ештеңе таңдамау" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Фон суретін таңдаңыз" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4305,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Жарлық" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Көрсету" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4447,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,27 +4462,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Альбомдарды араластыру" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "Шығу" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ска" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4497,11 +4562,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Сұрыптау" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Қайнар көзі" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "Қалыпты" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 іске қосылу" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Іске қосылу..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Тоқтату" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Ойнатуды тоқтату" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Тоқтатылған" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Ағындық" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "Сәтті!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "Ақпарат" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Тег" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Техно" @@ -4733,11 +4798,11 @@ msgstr "Техно" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Алғыстар" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Аталуы" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Бүгін" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Толық экранға өту/шығу" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Ертең" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Трек" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "Сөндіру" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "%1 (%2) жүктеп алу мүмкін емес" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Белгісіз" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Белгісіз қате" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Жазылудан бас тарту" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "Жаңартуда" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "%1 жаңарту" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "%1% жаңарту..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Жинақты жаңарту" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Қолданылуы" @@ -5090,11 +5154,11 @@ msgstr "Қолданылуы" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Қолдануда" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Пайдаланушы интерфейсі" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "%1 нұсқасы" @@ -5207,7 +5271,7 @@ msgstr "Түрі" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,11 +5279,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "%1% бөлімі" @@ -5237,11 +5305,11 @@ msgstr "WAV" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "Веб сайт" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "Шығ. жылы" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Кеше" @@ -5371,13 +5439,13 @@ msgstr "Кеше" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Нөл" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "кейін" @@ -5540,19 +5610,19 @@ msgstr "автоматты түрде" msgid "before" msgstr "дейін" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "құрамында бар" @@ -5562,20 +5632,20 @@ msgstr "құрамында бар" msgid "disabled" msgstr "сөндірулі" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "диск %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "опциялар" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/ko.po b/src/translations/ko.po index ab28db315..53d596228 100644 --- a/src/translations/ko.po +++ b/src/translations/ko.po @@ -10,11 +10,13 @@ # FIRST AUTHOR , 2011 # 현구 임 , 2012 # kladess , 2013 +# kladess , 2014 # Thomas Min , 2013 +# whdgmawkd , 2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Korean (http://www.transifex.com/projects/p/clementine/language/ko/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,7 +24,7 @@ msgstr "" "Language: ko\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -47,9 +49,9 @@ msgstr "일" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -62,11 +64,16 @@ msgstr " pt" msgid " seconds" msgstr " 초" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " 노래" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 곡)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1개 앨범" @@ -76,12 +83,12 @@ msgstr "%1개 앨범" msgid "%1 days" msgstr "%1일" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1일 전" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -91,48 +98,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 재생목록 (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "다음 중 %1개 선택됨" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1개 노래" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1개 노래" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1개 노래 찾음" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1개 노래 찾음 (%2개 표시 중)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1개 트랙" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" -msgstr "%1 이동함" +msgstr "%1 이동됨" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wii 리모컨 모듈" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "다른 청취자 %L1명" @@ -146,18 +153,21 @@ msgstr "총 %L1번 재생" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" -msgstr "%n 실패함" +msgstr "%n 실패" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n 끝냄" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n 남음" @@ -169,24 +179,24 @@ msgstr "글자 정렬(&A)" msgid "&Center" msgstr "가운데(&C)" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "사용자 정의(&C)" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "효과음(&E)" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "도움말(&H)" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "%1 숨김(&H)" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "숨기기(&H)..." @@ -194,23 +204,23 @@ msgstr "숨기기(&H)..." msgid "&Left" msgstr "왼쪽(&L)" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "음악(&M)" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "없음(&N)" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "재생목록(&P)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "종료(&Q)" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "반복 모드(&R)" @@ -218,23 +228,23 @@ msgstr "반복 모드(&R)" msgid "&Right" msgstr "오른쪽(&R)" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "셔플 모드(&S)" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "창 크기에 맞게 글자열 넓히기(&S)" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "도구(&T)" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(전반적으로 다양한 곡)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...그리고 Amarok에 기여해 주신 모든 분들" @@ -254,14 +264,10 @@ msgstr "0px" msgid "1 day" msgstr "1일" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1개 트랙" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -271,7 +277,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "무작위 50개 트랙" @@ -279,12 +285,6 @@ msgstr "무작위 50개 트랙" msgid "Upgrade to Premium now" msgstr "프리미엄으로 업그레이드하기" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -295,6 +295,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -303,38 +314,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

토큰은 %로 시작하니다, 예제: %artist %album %title

⏎\n⏎\n

만약 중괄호를 포함하고 있는 토큰을 포함한 텍스트 단원을 감싸고 있고 토큰이 비어 있다면, 그 단원은 감춰질 것입니다.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "그루브샤크 Anywhere 계정이 필요합니다." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." -msgstr "스포티피 프리미엄 계정이 필요합니다." +msgstr "Spotify 프리미엄 계정이 필요합니다." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "스마트 재생 목록은 라이브러리에서 불러온 음악의 다이나믹 목록입니다. 다른 방식으로 노래를 선택할 수 있는 스마트 재생 목록의 또 다른 형태입니다." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "노래가 이러한 조건과 일치하면 재생 목록에 포함됩니다." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -354,36 +365,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "HYPNOTOAD에 모든 영광을" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "중단" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1 정보" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." -msgstr "클레멘타인 정보" +msgstr "Clementine 정보" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt 정보" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "계정 정보" @@ -395,11 +405,15 @@ msgstr "계정 상세정보 (프리미엄)" msgid "Action" msgstr "동작" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wii 리모컨 사용/중지" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "팟케스트 추가" @@ -415,39 +429,39 @@ msgstr "알림 형식이 지원한다면 새로운 줄 추가" msgid "Add action" msgstr "동작 추가" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "다른 스트림 추가..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "디렉토리 추가..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "파일 추가" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" -msgstr "" +msgstr "transcoder에 파일 추가" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" -msgstr "" +msgstr "transcoder 파일(들) 추가" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "파일 추가..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "변환할 파일 추가" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "폴더 추가" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "폴더 추가..." @@ -459,11 +473,11 @@ msgstr "새로운 폴더 추가..." msgid "Add podcast" msgstr "팟케스트 추가" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "팟케스트 추가..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "검색 조건 추가" @@ -527,6 +541,10 @@ msgstr "무시 횟수 추가" msgid "Add song title tag" msgstr "제목 태그 추가" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "캐시에 음악 추가" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "트랙 태그 추가" @@ -535,22 +553,34 @@ msgstr "트랙 태그 추가" msgid "Add song year tag" msgstr "연도 태그 추가" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "\"좋아요\" 버튼을 클릭하면 노래가 \"내 음악\"에 추가됩니다." + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "스트림 추가..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" -msgstr "그루브샤크 즐겨찾기에 추가" +msgstr "Grooveshark 즐겨찾기에 추가" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" -msgstr "그루브샤크 재생목록에 추가" +msgstr "Grooveshark 재생목록에 추가" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "내 음악에 추가" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "다른 재생목록에 추가" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "북마크에 추가" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "재생목록에 추가" @@ -559,6 +589,10 @@ msgstr "재생목록에 추가" msgid "Add to the queue" msgstr "대기열에 추가" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "북마크에 사용자/그룹 추가" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Wii 리모컨 동작 추가" @@ -588,15 +622,15 @@ msgstr "오늘 추가됨" msgid "Added within three months" msgstr "3개월 이내에 추가됨" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "내 음악에 음악 추가" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "즐겨찾기에 곡 추가" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "고급 그룹화..." @@ -604,12 +638,12 @@ msgstr "고급 그룹화..." msgid "After " msgstr "이후" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "복사 한 후...." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -617,11 +651,11 @@ msgstr "복사 한 후...." msgid "Album" msgstr "앨범" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "앨범 (모든 트랙에 이상적인 음량)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -631,35 +665,36 @@ msgstr "앨범 가수" msgid "Album cover" msgstr "앨범 표지" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." -msgstr "자멘도 앨범 정보..." +msgstr " jamendo.com 앨범 정보..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "앨범 표지가 있는 앨범" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "앨범 표지가 없는 앨범" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "모든 파일 (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Hypnotoad에 모든 영광을!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "모든 앨범" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "모든 음악가" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "모든 파일 (*)" @@ -668,21 +703,21 @@ msgstr "모든 파일 (*)" msgid "All playlists (%1)" msgstr "전체 재생목록 (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "모든 번역가" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "모든 트랙" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" -msgstr "" +msgstr "다운로드 허용" #: ../bin/src/ui_transcoderoptionsaac.h:140 msgid "Allow mid/side encoding" @@ -705,30 +740,30 @@ msgstr "항상 메인 창 표시함" msgid "Always start playing" msgstr "항상 재생 시작" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" -msgstr "클레멘타인엔서 스포티피를 이용하시려면 추가 플러그인이 있어야 합니다. 지금 설치하시겠습니까?" +msgstr "Clementine에서 Spotify를 이용하시려면 추가 플러그인이 있어야 합니다. 지금 설치하시겠습니까?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "iTunes 데이터베이스를 불러오는 중 오류 발생" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "'%1'에 메타데이터를 쓰던 중 오류 발생" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "지정되지 않은 에러가 발생" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "그리고:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "화난" @@ -737,13 +772,13 @@ msgstr "화난" msgid "Appearance" msgstr "외형" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "재생목록에 파일/URL 추가" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "현재 재생목록에 추가" @@ -751,52 +786,47 @@ msgstr "현재 재생목록에 추가" msgid "Append to the playlist" msgstr "재생목록에 추가" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "클리핑 방지를 위한 압축 적용" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "\"%1\" 프리셋을 정말 지우시겠습니까?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "이 재생목록을 지우시겠습니까?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "이 곡의 통계를 초기화하시겠습니까?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "라이브러리의 모든 곡의 해당하는 음악 파일에 음악 통계를 작성 하시겠습니까?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "음악가" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "음악가 정보" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "음악가 라디오" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "음악가 태그" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "음악가 이니셜" @@ -804,9 +834,13 @@ msgstr "음악가 이니셜" msgid "Audio format" msgstr "오디오 형식" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "오디오 출력" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "인증 실패" @@ -814,7 +848,7 @@ msgstr "인증 실패" msgid "Author" msgstr "작성자" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "작성자" @@ -830,7 +864,7 @@ msgstr "자동 업데이트" msgid "Automatically open single categories in the library tree" msgstr "라이브러리 트리에 자동으로 하나의 카테고리로 열기" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "이용 가능" @@ -838,15 +872,15 @@ msgstr "이용 가능" msgid "Average bitrate" msgstr "평균 비트 전송률" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "평균 이미지 크기" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC 팟케스트" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -867,7 +901,7 @@ msgstr "배경 그림" msgid "Background opacity" msgstr "배경 투명도" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "데이터베이스 백업" @@ -875,11 +909,7 @@ msgstr "데이터베이스 백업" msgid "Balance" msgstr "밸런스" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "싫어요" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "막대" @@ -899,18 +929,17 @@ msgstr "행동" msgid "Best" msgstr "최고" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "%1의 바이오그래피" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "비트 전송률" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -918,7 +947,12 @@ msgstr "비트 전송률" msgid "Bitrate" msgstr "비트 전송률" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "비트레이트" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "블록" @@ -932,9 +966,9 @@ msgstr "블러 정도" #: ../bin/src/ui_notificationssettingspage.h:449 msgid "Body" -msgstr "" +msgstr "본문" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "붐" @@ -948,11 +982,11 @@ msgstr "Box" msgid "Browse..." msgstr "찾아보기..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "버퍼 시간" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "버퍼링" @@ -964,43 +998,66 @@ msgstr "하지만 다음 출처는 사용할 수 없습니다:" msgid "Buttons" msgstr "버튼" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "큐 시트 지원" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "캐시 경로:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "캐시 중" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "%1 캐시 중" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "취소" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Captcha 가 필요합니다.\n이 문제의 해결하려면 브라우저에서 Vk.com로 접속하여 로그인을 시도하세요. " + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "커버 아트 바꾸기" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "글꼴 크기 바꾸기..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "반복 모드 " -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "단축키 바꾸기..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "셔플 모드 " -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "언어 변경" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1010,15 +1067,19 @@ msgstr "" msgid "Check for new episodes" msgstr "새로운 에피소드 확인" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "업데이트 확인..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Vk.com 캐시 디렉터리 선택" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "스마트 재생목록에 이름 추가" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "자동 선택" @@ -1034,20 +1095,20 @@ msgstr "글꼴 선택..." msgid "Choose from the list" msgstr "목록에서 선택" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "재생목록의 정렬 방식과 최대 곡수를 선택하세요." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "팟케스트 다운로드 경로를 선택하세요" #: ../bin/src/ui_songinfosettingspage.h:160 msgid "" "Choose the websites you want Clementine to use when searching for lyrics." -msgstr "클레멘타인이 가사를 찾기위해 이용할 사이트를 선택하세요." +msgstr "Clementine이 가사를 찾기위해 이용할 사이트를 선택하세요." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "클래식" @@ -1055,97 +1116,90 @@ msgstr "클래식" msgid "Cleaning up" msgstr "자동 정리" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "비우기" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "재생목록 비우기" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" -msgstr "클레멘타인" +msgstr "Clementine" #: ../bin/src/ui_errordialog.h:93 msgid "Clementine Error" -msgstr "클레멘타인 오류" +msgstr "Clementine 오류" #: ../bin/src/ui_notificationssettingspage.h:457 msgid "Clementine Orange" -msgstr "클레멘타인 오렌지" +msgstr "Clementine 오렌지" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" -msgstr "클레멘타인 시각화" +msgstr "Clementine 시각화" #: ../bin/src/ui_deviceproperties.h:376 msgid "" "Clementine can automatically convert the music you copy to this device into " "a format that it can play." -msgstr "클레멘타인은 이 장치에서 복사한 곡을 재생 가능한 형식으로 자동 변환할 수 있습니다." +msgstr "Clementine은 이 장치에서 복사한 곡을 재생 가능한 형식으로 자동 변환할 수 있습니다." #: ../bin/src/ui_boxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Box" -msgstr "클레멘타인은 당신이 Box에 업로드한 음악을 재생할 수 있습니다." +msgstr "Clementine은 당신이 Box에 업로드한 음악을 재생할 수 있습니다." #: ../bin/src/ui_dropboxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Dropbox" -msgstr "클레멘타인은 당신이 드롭박스에 업로드한 음악을 재생할 수 있습니다." +msgstr "Clementine은 당신이 Dropbox에 업로드한 음악을 재생할 수 있습니다." #: ../bin/src/ui_googledrivesettingspage.h:104 msgid "Clementine can play music that you have uploaded to Google Drive" -msgstr "클레멘타인은 당신이 구글 드라이브에 업로드한 음악을 재생할 수 있습니다." +msgstr "Clementine은 당신이 Google Drive에 업로드한 음악을 재생할 수 있습니다." -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "클레멘타인은 당신이 우분투 원에 업로드한 음악을 재생할 수 있습니다." +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." -msgstr "클레멘타인은 트랙이 변할 때 메시지를 표시할 수 있습니다." +msgstr "Clementine은 트랙이 변할 때 메시지를 표시할 수 있습니다." #: ../bin/src/ui_podcastsettingspage.h:250 msgid "" "Clementine can synchronize your subscription list with your other computers " "and podcast applications. Create " "an account." -msgstr "클레멘타인은 당신의 다른 컴퓨터와 팟케스트 어플리케이션과 당신의 구독 목록을 동기화 할 수 있습니다. 계정을 만드세요." +msgstr "Clementine은 당신의 다른 컴퓨터와 팟케스트 어플리케이션과 당신의 구독 목록을 동기화 할 수 있습니다. 계정을 만드세요." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." -msgstr "클레멘타인은 프로젝트M 시각화를 불러올 수 없습니다. 클레멘타인이 제대로 설치되었는지 확인해 보세요." +msgstr "Clementine이 projectM 시각화를 불러올 수 없습니다. Clementine이 제대로 설치되었는지 확인해 보세요." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "연결에 문제가 있어서 클레멘타인이 당신의 가입 정보를 가져올 수 없습니다. 재생중인 트랙은 캐시로 저장되고 나중에 Last.fm에 보낼 것입니다." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" -msgstr "클레멘타인 이미지 뷰어" +msgstr "Clementine 이미지 뷰어" #: ../bin/src/ui_trackselectiondialog.h:206 msgid "Clementine was unable to find results for this file" -msgstr "클레멘타인은 이 파일의 결과를 검색할 수 없습니다" +msgstr "Clementine은 이 파일의 결과를 검색할 수 없습니다" #: ../bin/src/ui_globalsearchview.h:210 msgid "Clementine will find music in:" -msgstr "클레멘타인이 음악을 찾을 수 있습니다." +msgstr "Clementine이 음악을 찾을 수 있습니다." -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "음악을 추가하려면 여기를 클릭하세요" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1155,12 +1209,15 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "남은 시간과 전체 시간을 바꾸려면 클릭하세요" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." -msgstr "로그인 버튼을 클릭하면 웹 브라우저가 열립니다. 당신이 로그인을 한 후에 클레멘타인으로 반환하여야 합니다." +msgstr "로그인 버튼을 클릭하면 웹 브라우저가 열립니다. 당신이 로그인을 한 후에 Clementine으로 되돌아 와야 합니다." #: widgets/didyoumean.cpp:37 msgid "Close" @@ -1170,19 +1227,19 @@ msgstr "닫기" msgid "Close playlist" msgstr "재생목록 닫기" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "시각화 닫기" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "이 창을 닫으면 다운로드가 취소됩니다." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "이 창을 닫으면 앨범 표지 검색이 중지됩니다." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "클럽" @@ -1190,73 +1247,78 @@ msgstr "클럽" msgid "Colors" msgstr "색상" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "콤마로 클래스:단계의 목록을 나눔, 단계는 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "설명" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "커뮤니티 라디오" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "자동으로 태그 저장" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "자동으로 태그 저장..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "작곡가" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "%1 설정..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." -msgstr "그루브샤크 설정..." +msgstr "Grooveshark 설정..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm 설정..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." -msgstr "매그나튠 설정..." +msgstr "Magnatune 설정..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "단축키 설정" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." -msgstr "스포티피 설정..." +msgstr "Spotify 설정..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." -msgstr "서브소닉 설정" +msgstr "Subsonic 설정" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Vk.com 설정..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "글로벌 검색 설정..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "라이브러리 설정..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "팟케스트 설정..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "설정..." @@ -1264,26 +1326,30 @@ msgstr "설정..." msgid "Connect Wii Remotes using active/deactive action" msgstr "사용/중지 실행으로 Wii 리모컨 연결" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "장치 연결" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" -msgstr "스포티피에 연결 중" +msgstr "Spotify에 연결 중" #: internet/subsonicsettingspage.cpp:107 msgid "" "Connection refused by server, check server URL. Example: " "http://localhost:4040/" -msgstr "" +msgstr "서버에서 연결을 거부하였습니다. 서버의 주소를 확인하세요. 예)http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" -msgstr "" +msgstr "연결 시간이 초과되었습니다. 서버의 주소를 확인하세요. 예)http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "연결 문제 또는 오디오가 사용자에 의한 비활성화" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "콘솔" @@ -1299,17 +1365,21 @@ msgstr "모든 곡 변환" msgid "Convert any music that the device can't play" msgstr "장치가 재생할 수 없는 곡 변환" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "공유 URL 복사" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "클립보드로 복사" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "장치에 복사..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "라이브러리에 복사..." @@ -1317,156 +1387,152 @@ msgstr "라이브러리에 복사..." msgid "Copyright" msgstr "저작권" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" -msgstr "서브소닉에 접속할 수 없습니다. 서버 URL을 확인 하세요. 예시:http://localhost:4040/" +msgstr "Subsonic에 접속할 수 없습니다. 서버 URL을 확인 하세요. 예시:http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "GStreamer 요소 \"%1\"를 찾을 수 없습니다 - 필요한 모든 GStreamer 플러그인이 설치되어 있는지 확인하세요" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "재생목록을 생성할수 없습니다." + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 먹서를 찾을 수 없습니다, GStreamer 플러그인이 올바르게 설치되어 있는지 확인하세요" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "%1 인코더를 찾을 수 없습니다, GStreamer 플러그인이 올바르게 설치되어 있는지 확인하세요" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "last.fm 라디오 방송국을 불러올 수 없습니다" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "출력 파일 %1를 열 수 없습니다" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "커버 관리자" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "내장된 이미지로부터 커버 아트 사용" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "%1에서 자동으로 커버 아트를 불러옴" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "커버 아트를 수동으로 설정하지 않음" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "커버 아트를 설정하지 않음" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "%1에서 커버 아트를 설정함" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "%1에서 커버" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" -msgstr "새로운 그루브샤크 재생목록 만들기" +msgstr "새로운 Grooveshark 재생목록 만들기" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "트랙을 자동으로 바꿀 때 크로스-페이드" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "트랙을 직접 바꿀 때 크로스-페이드" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" -msgstr "" +msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1474,7 +1540,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "사용자 정의" @@ -1486,54 +1552,50 @@ msgstr "사용자 정의 이미지:" msgid "Custom message settings" msgstr "사용자 정의 메시지 설정" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "사용자 정의 라디오" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "사용자 정의..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus 경로" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "댄스" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "생성한 날짜" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "수정한 날짜" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "일" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "기본값(&f)" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "4% 단위로 음량 줄이기" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "% 단위로 음량 줄이기" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "음량 줄이기" @@ -1541,6 +1603,11 @@ msgstr "음량 줄이기" msgid "Default background image" msgstr "기본 배경 그림" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "기본값" @@ -1549,30 +1616,30 @@ msgstr "기본값" msgid "Delay between visualizations" msgstr "시각화 사이의 시간 간격" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "삭제" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" -msgstr "그루브샤크 재생목록 지우기" +msgstr "Grooveshark 재생목록 지우기" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "다운로드된 데이터 삭제" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "파일 삭제" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "장치에서 삭제..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "디스크에서 삭제..." @@ -1580,31 +1647,31 @@ msgstr "디스크에서 삭제..." msgid "Delete played episodes" msgstr "재생된 에피소드 삭제" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "프리셋 삭제" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "스마트 재생목록 지우기" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "원본 파일 삭제" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "파일 삭제 중" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "선택한 트랙을 대기열에서 해제" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "트랙을 대기열에서 해제" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "대상" @@ -1613,7 +1680,7 @@ msgstr "대상" msgid "Details..." msgstr "세부 내용..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "장치" @@ -1625,17 +1692,17 @@ msgstr "장치 속성" msgid "Device name" msgstr "장치 이름" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "장치 속성..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "장치" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "다이얼로그" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1643,15 +1710,15 @@ msgstr "이것을 원하셨습니까" #: ../bin/src/ui_digitallyimportedsettingspage.h:160 msgid "Digitally Imported" -msgstr "디지탈리 임포티드" +msgstr "Digitally Imported" #: ../bin/src/ui_digitallyimportedsettingspage.h:164 msgid "Digitally Imported password" -msgstr "디지탈리 임포티드 비밀번호" +msgstr "Digitally Imported 비밀번호" #: ../bin/src/ui_digitallyimportedsettingspage.h:162 msgid "Digitally Imported username" -msgstr "디지탈리 임포티드 사용자명" +msgstr "Digitally Imported 사용자명" #: ../bin/src/ui_networkproxysettingspage.h:159 msgid "Direct internet connection" @@ -1664,18 +1731,23 @@ msgstr "디렉토리" #: ../bin/src/ui_notificationssettingspage.h:440 msgid "Disable duration" -msgstr "" +msgstr "지속 해제" #: ../bin/src/ui_appearancesettingspage.h:296 msgid "Disable moodbar generation" msgstr "분위기 막대 생성 " -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "사용 안함" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "사용 안함" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "디스크" @@ -1685,15 +1757,15 @@ msgid "Discontinuous transmission" msgstr "불연속적인 전송" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "옵션 표시" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "OSD 표시" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "전체 라이브러리 다시 읽기" @@ -1703,29 +1775,29 @@ msgstr "어떤 곡도 변환하지 않기" #: ../bin/src/ui_albumcoverexport.h:209 msgid "Do not overwrite" -msgstr "" +msgstr "덮어쓸 수 없음" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "반복하지 않기" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "다양한 음악가에 표시하지 않기" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "섞지 않기" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "멈추지 마세요!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "기부" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "열려면 더블클릭하세요" @@ -1733,12 +1805,13 @@ msgstr "열려면 더블클릭하세요" msgid "Double clicking a song will..." msgstr "노래를 더블클릭하면..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "에피소드 %n 다운로드" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "디렉토리 다운로드" @@ -1754,23 +1827,23 @@ msgstr "멤버십 다운로드" msgid "Download new episodes automatically" msgstr "자동으로 새로운 에피소드 다운로드" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "다운로드 대기열 추가됨" #: ../bin/src/ui_networkremotesettingspage.h:202 msgid "Download the Android app" -msgstr "" +msgstr "Android 앱 다운로드" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "이 앨범 다운로드" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "이 앨범 다운로드..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "이 에피소드 다운로드" @@ -1778,7 +1851,7 @@ msgstr "이 에피소드 다운로드" msgid "Download..." msgstr "다운로드..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "다운로드 중 (%1%)..." @@ -1787,56 +1860,56 @@ msgstr "다운로드 중 (%1%)..." msgid "Downloading Icecast directory" msgstr "Icecast 디렉토리 다운로드 중" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" -msgstr "자멘도 카탈로그 다운로드 중" +msgstr "Jamendo 카탈로그 다운로드 중" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" -msgstr "매그나튠 카탈로그 다운로드 중" +msgstr "Magnatune 카탈로그 다운로드 중" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" -msgstr "스포티피 플러그인 다운로드 중" +msgstr "Spotify 플러그인 다운로드 중" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "메타데이터 다운로드 중" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "재배치하려면 드래그하세요" #: ../bin/src/ui_dropboxsettingspage.h:103 msgid "Dropbox" -msgstr "드롭박스" +msgstr "Dropbox" #: ui/equalizer.cpp:119 msgid "Dubstep" -msgstr "" +msgstr "덥스탭" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "지속" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "다이나믹 모드가 켜졌습니다" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "다이나믹 랜덤 믹스" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "스마트 재생목록 편집..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." -msgstr "" +msgstr "태그 수정 \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "태그 편집..." @@ -1848,16 +1921,16 @@ msgstr "태그 편집" msgid "Edit track information" msgstr "트랙 정보 편집" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "트랙 정보 편집..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "트랙 정보 편집..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "편집..." @@ -1865,13 +1938,17 @@ msgstr "편집..." msgid "Enable Wii Remote support" msgstr "Wii 리모컨 모드 사용" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "자동 캐싱 허용" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "이퀄라이저 사용" #: ../bin/src/ui_wiimotesettingspage.h:187 msgid "Enable shortcuts only when Clementine is focused" -msgstr "클레멘타인이 활성화 되었을 때에만 단축키 허용" +msgstr "Clementine이 활성화 되었을 때에만 단축키 허용" #: ../bin/src/ui_globalsearchsettingspage.h:147 msgid "" @@ -1879,7 +1956,7 @@ msgid "" "displayed in this order." msgstr "검색 결과에 아래의 소스들을 포함시킵니다. 검색 결과는 다음의 순서대로 표시됩니다." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Last.fm 스크로블 켜기/끄기" @@ -1905,17 +1982,12 @@ msgstr "인터넷에서 다운로드할 커버의 URL 주소를 입력하세요" #: ../bin/src/ui_albumcoverexport.h:205 msgid "Enter a filename for exported covers (no extension):" -msgstr "" +msgstr "내보낼 커버의 파일이름을 입력(확장자 제외):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "새로운 재생목록 이름을 입력하세요" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Last.fm 라디오에서 듣고 싶은 음악가태그를 입력하세요." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1929,7 +2001,7 @@ msgstr "iTunes 스토어에서 팟케스트를 찾기 위한 검색 조건을 msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "gpodder.net에서 팟케스트를 찾기 위한 검색 조건을 아래에 입력하세요." -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "여기에 검색할 단어를 입력하세요" @@ -1938,33 +2010,34 @@ msgstr "여기에 검색할 단어를 입력하세요" msgid "Enter the URL of an internet radio stream:" msgstr "인터넷 라디오 스트림 URL 주소를 입력하세요" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "폴더의 이름 입력" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." -msgstr "클레멘타인에 연결하기 위한 앱에서 다음의 IP를 입력하세요." +msgstr "Clementine에 연결하기 위한 앱에서 다음의 IP를 입력하세요." #: ../bin/src/ui_libraryfilterwidget.h:87 msgid "Entire collection" msgstr "전체 선택" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "이퀄라이저" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" -msgstr "" +msgstr "동등한 --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" -msgstr "" +msgstr "동등한 --log-level *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "오류" @@ -1972,38 +2045,38 @@ msgstr "오류" msgid "Error connecting MTP device" msgstr "MTP 장치에 연결 오류" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "노래 복사 오류" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "노래 삭제 오류" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" -msgstr "스포티피 플러그인 다운로드 오류" +msgstr "Spotify 플러그인 다운로드 오류" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "%1 불러오기 오류" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "dl.fm 재생목록 불러오기 오류" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "%1: %2 처리 오류" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "오디오 CD 불러오기 오류" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "재생한 적 있음" @@ -2035,19 +2108,19 @@ msgstr "매 6시간" msgid "Every hour" msgstr "매 시간" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "같은 앨범이나 같은 큐 시트의 트랙 사이에선 제외" #: ../bin/src/ui_albumcoverexport.h:208 msgid "Existing covers" -msgstr "" +msgstr "존재하는 커버" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" msgstr "확장" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "만료 일자: " @@ -2068,36 +2141,36 @@ msgstr "다운로드된 커버 내보내기" msgid "Export embedded covers" msgstr "내장된 커버 내보내기" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "내보내기 완료" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" -msgstr "" +msgstr "%2개의 앨범 표지중 %1개 내보냄. (%3개 건너뜀)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2107,42 +2180,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "일시정지시 페이드 아웃/ 다시시작시 페이드 인" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "트랙 정지 시 페이드 아웃" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "페이드 아웃" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "페이드 아웃 시간" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" -msgstr "" +msgstr "CD 드라이브 읽기 실패" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" -msgstr "" +msgstr "폴더 가져오기 실패" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "팟케스트 가져오기 실패" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "팟케스트 열기 실패" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "RSS 피드를 위한 XML 파싱이 실패되었습니다." @@ -2151,11 +2224,11 @@ msgstr "RSS 피드를 위한 XML 파싱이 실패되었습니다." msgid "Fast" msgstr "빠른" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "좋아하는" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "좋아하는 트랙" @@ -2171,19 +2244,19 @@ msgstr "자동으로 가져오기" msgid "Fetch completed" msgstr "가져오기 완료" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" -msgstr "서브소닉 라이브러리 가져오기" +msgstr "Subsonic 라이브러리 가져오기" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "커버 가져오기 오류" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "파일 형식" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "파일 확장자" @@ -2191,19 +2264,23 @@ msgstr "파일 확장자" msgid "File formats" msgstr "파일 " -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "파일 " -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "파일 이름 (경로 제외)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "파일 명 규칙:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "파일 크기" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2213,7 +2290,7 @@ msgstr "파일 형태" msgid "Filename" msgstr "파일 " -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "파일" @@ -2221,15 +2298,19 @@ msgstr "파일" msgid "Files to transcode" msgstr "변환할 파일들" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "라이브러리에서 지정한 기준과 일치하는 노래를 찾습니다." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "이 음악가 찾기" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "노래 " -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "마침" @@ -2237,7 +2318,7 @@ msgstr "마침" msgid "First level" msgstr "첫 단계" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2247,22 +2328,22 @@ msgstr "글꼴 크기" #: ../bin/src/ui_spotifysettingspage.h:213 msgid "For licensing reasons Spotify support is in a separate plugin." -msgstr "" +msgstr "라이선스 문제로 인하여 Spotify 는 별도의 플러그인에서 지원합니다." #: ../bin/src/ui_transcoderoptionsmp3.h:204 msgid "Force mono encoding" msgstr "강제 모노 인코딩" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "장치를 잃어버림" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." -msgstr "" +msgstr "장치를 잃어버렸을 경우 목록에서 제거하고 Clementine이 다음 연결할 때 모든 음악을 다시 스캔합니다." #: ../bin/src/ui_deviceviewcontainer.h:98 #: ../bin/src/ui_searchproviderstatuswidget.h:94 @@ -2273,7 +2354,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2301,31 +2382,23 @@ msgstr "프레임레이트" msgid "Frames per buffer" msgstr "프레임/" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "친구들" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "얼음" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "베이스 강화" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "베이스+고음 강화" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "고음 강화" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "G스트리머 오디오 엔진" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "일반 " @@ -2333,30 +2406,30 @@ msgstr "일반 " msgid "General settings" msgstr "일반 " -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "장르" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Grooveshark 재생목록을 공유하기 위한 URL 얻기" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr " Grooveshark 음악을 공유하기 위한 URL 얻기" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" -msgstr "그루브샤크에서 인기곡 가져오기" +msgstr "Grooveshark에서 인기곡 가져오기" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "채널 " -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "스트림 " @@ -2368,99 +2441,99 @@ msgstr "이름 지정:" msgid "Go" msgstr "Go" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "다음 재생목록 탭으로 가기" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "이전 재생목록 탭으로 가기" #: ../bin/src/ui_googledrivesettingspage.h:103 msgid "Google Drive" -msgstr "구글 드라이브" +msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" -msgstr "" +msgstr "%2 중 %1개 커버 가져옴 (%3 실패 됨)" #: ../bin/src/ui_behavioursettingspage.h:206 msgid "Grey out non existent songs in my playlists" -msgstr "" +msgstr "내 재생목록에서 존재하지 않는 음악 회색화" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" -msgstr "그루브샤크" +msgstr "Grooveshark" #: internet/groovesharkservice.cpp:408 msgid "Grooveshark login error" -msgstr "그루브샤크 로그인 에러" +msgstr "Grooveshark 로그인 에러" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark 재생목록 URL" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" -msgstr "그루브샤크 라디오" +msgstr "Grooveshark 라디오" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" -msgstr "그루브샤크 음악 URL" +msgstr "Grooveshark 음악 URL" #: ../bin/src/ui_groupbydialog.h:124 msgid "Group Library by..." msgstr "그룹 라이브러리..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "그룹" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "앨범에 의한 그룹" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "음악가에 의한 그룹" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "음악가/앨범에 의한 그룹" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "음악가/년도에 의한 그룹 - 앨범" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "장르/앨범에 의한 그룹" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "장르/음악가/앨범에 의한 그룹" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "그룹화" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML 페이지가 어떠한 RSS 피드를 포함하지 않습니다." -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." -msgstr "" +msgstr "URL이 없이 HTTP 3XX 상태코드가 수신 되었습니다. 서버 설정을 확인하세요." #: ../bin/src/ui_networkproxysettingspage.h:163 msgid "HTTP proxy" msgstr "HTTP " -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "행복" @@ -2476,72 +2549,72 @@ msgstr "하드웨어 정보는 장치가 연결되어있는 동안에만 가능 msgid "High" msgstr "높음" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "높음 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "높음 (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" -msgstr "" +msgstr "호스트가 발견되지 않았습니다. 서버의 주소를 확인하세요. 예)http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "시간" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "최면 두꺼비 대왕" #: ../bin/src/ui_magnatunesettingspage.h:159 msgid "I don't have a Magnatune account" -msgstr "매그나튠 계정을 가지고 있지 않습니다." +msgstr "Magnatune 계정을 가지고 있지 않습니다." #: ../bin/src/ui_deviceproperties.h:370 msgid "Icon" msgstr "아이콘" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "상단에 아이콘" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "음악을 식별하는 " -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." -msgstr "" +msgstr "계속 한다면, 이 장치는 느리고 복사된 음악들이 작동 되지 않을 수 있습니다." #: ../bin/src/ui_addpodcastbyurl.h:77 msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "팟케스트에 URL을 알고 있다면, 아래에 입력하고 버튼을 누르세요." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "음악가 이름에서 \"The\" 제거" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "그림 (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2552,9 +2625,9 @@ msgid "" "time a song finishes." msgstr "다이나믹 모드에서는 곡이 끝날 때마다 자동으로 재생목록에 곡이 추가됩니다." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" -msgstr "" +msgstr "수신함" #: ../bin/src/ui_notificationssettingspage.h:443 msgid "Include album art in the notification" @@ -2564,135 +2637,135 @@ msgstr "알림에 앨범 아트 포함" msgid "Include all songs" msgstr "모든 음악 포함" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." -msgstr "호환되지 않는 서브소닉 REST 프로토콜 버전입니다. 클라이언트를 업그레이드 해야만 합니다." +msgstr "호환되지 않는 Subsonic REST 프로토콜 버전입니다. 클라이언트를 업그레이드 해야만 합니다." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." -msgstr "호환되지 않는 서브소닉 REST 프로토콜 버전입니다. 서버를 업그레이드 해야만 합니다." +msgstr "호환되지 않는 Subsonic REST 프로토콜 버전입니다. 서버를 업그레이드 해야만 합니다." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "4% 단위로 음량 올리기" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "% 단위로 음량 올리기" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "음량 올리기" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "색인 %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "정보" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "옵션 " -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "추가..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "설치 됨" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "인터넷" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "인터넷 " -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "잘못된 API " -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "잘못된 형식" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "잘못된 방법" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "잘못된 매개변수" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "잘못된 리소스가 지정되었습니다." -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "잘못된 서비스" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "잘못된 세션 키" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "잘못된 사용자명 또는(그리고) 비밀번호입니다." #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "선택 반전" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" -msgstr "자멘도" +msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" -msgstr "자멘도 가장 많이 들은 트랙" +msgstr "Jamendo 가장 많이 들은 트랙" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" -msgstr "자멘도 최고의 트랙" +msgstr "Jamendo 최고의 트랙" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" -msgstr "자멘도 이 달의 최고 트랙" +msgstr "Jamendo 이 달의 최고 트랙" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" -msgstr "자멘도 금주의 최그 트랙" +msgstr "Jamendo 금주의 최그 트랙" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" -msgstr "자멘도 데이터베이스" +msgstr "Jamendo 데이터베이스" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "현재 재생 중인 트랙 건너뛰기" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "%1 초 동안 버튼 유지..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "%1 초 동안 버튼 유지..." @@ -2701,23 +2774,24 @@ msgstr "%1 초 동안 버튼 유지..." msgid "Keep running in the background when the window is closed" msgstr "창을 닫을 때 백그라운드에서 계속 실행" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "원본 파일들 " -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "고양이" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" -msgstr "Language" +msgstr "언어" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "노트북/헤드폰" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "거대한 홀" @@ -2725,12 +2799,16 @@ msgstr "거대한 홀" msgid "Large album cover" msgstr "큰 앨범 표지" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "큰 사이드바" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "마지막으로 재생됨" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "마지막으로 재생됨" @@ -2738,45 +2816,7 @@ msgstr "마지막으로 재생됨" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm 사용자 정의 라디오: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm 라이브러리 - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm 믹스 라디오 - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm 이웃 라디오 - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm 라디오 방송국 - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm %1 와 유사한 음악가" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm 태그 라디오: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm 이 현재 바쁩니다. 잠시 후 다시 시도해 주세요." @@ -2784,11 +2824,11 @@ msgstr "Last.fm 이 현재 바쁩니다. 잠시 후 다시 시도해 주세요." msgid "Last.fm password" msgstr "Last.fm 비밀번호" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm 재생 횟수" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm 태그" @@ -2796,28 +2836,24 @@ msgstr "Last.fm 태그" msgid "Last.fm username" msgstr "Last.fm 사용자명" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm 위키" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Last.fm 좋아하는 트랙" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "왼쪽" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "길이" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "라이브러리 " @@ -2825,24 +2861,24 @@ msgstr "라이브러리 " msgid "Library advanced grouping" msgstr "향상된 그룹 " -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "라이브러리 재탐색 알림" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "라이브러리 " -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "제한" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "라이브" @@ -2854,15 +2890,15 @@ msgstr "열기" msgid "Load cover from URL" msgstr "URL로 부터 커버 열기" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "URL로 부터 커버 열기..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "디스크로부터 커버 열기" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "디스크로부터 커버열기..." @@ -2870,101 +2906,111 @@ msgstr "디스크로부터 커버열기..." msgid "Load playlist" msgstr "재생목록 불러오기" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "재생목록 불러오기..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm 라디오 여는 중" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "MTP 장치 여는 중" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod 데이터베이스 여는 중" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "스마트 재생목록 불러오기 중" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "음악 여는 중" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "스트림 여는 중" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "트랙 여는 중" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "트랙 정보 불러오는중" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "여는 중..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "현재 재생목록을 교체할 파일/URL 불러오기" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "로그인" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "로그인 실패" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "로그아웃" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" -msgstr "" +msgstr "장기 예측 프로파일(LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "좋아요" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "낮음 (%1fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "낮음 (256x256)" #: ../bin/src/ui_transcoderoptionsaac.h:135 msgid "Low complexity profile (LC)" -msgstr "" +msgstr "저복잡도 프로파일(LC)" #: ../bin/src/ui_songinfosettingspage.h:159 msgid "Lyrics" msgstr "가사" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "%1 의 가사" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "MP4 AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2976,41 +3022,46 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" -msgstr "매그나튠" +msgstr "Magnatune" #: ../bin/src/ui_magnatunedownloaddialog.h:131 msgid "Magnatune Download" -msgstr "매그나튠 다운로드" +msgstr "Magnatune 다운로드" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" -msgstr "매그나튠 다운로드 완료됨" +msgstr "Magnatune 다운로드 완료 됨" #: ../bin/src/ui_transcoderoptionsaac.h:134 msgid "Main profile (MAIN)" msgstr "메인 프로필 (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" -msgstr "" +msgstr "Make it so!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Make it so!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "재생목록을 오프라인에서 재생 가능하도록 설정" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" -msgstr "" +msgstr "잘못된 응답" #: ../bin/src/ui_networkproxysettingspage.h:160 msgid "Manual proxy configuration" @@ -3021,17 +3072,17 @@ msgstr "수동 프록시 설정" msgid "Manually" msgstr "수동적" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "제조회사" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" -msgstr "" +msgstr "들음으로 기록" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" -msgstr "" +msgstr "새로 기록" #: ../bin/src/ui_querysearchpage.h:116 msgid "Match every search term (AND)" @@ -3041,17 +3092,21 @@ msgstr "모든 검색조건 일치 (AND)" msgid "Match one or more search terms (OR)" msgstr "하나 이상의 검색조건 일치 (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "최고 비트 전송률" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "중간 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "중간 (512x512)" @@ -3063,11 +3118,15 @@ msgstr "멤버쉽 유형" msgid "Minimum bitrate" msgstr "최저 비트 전송률" -#: visualisations/projectmvisualisation.cpp:132 -msgid "Missing projectM presets" +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" msgstr "" -#: devices/deviceproperties.cpp:152 +#: visualisations/projectmvisualisation.cpp:131 +msgid "Missing projectM presets" +msgstr "projectM 프리셋들이 누락되었습니다" + +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "모형" @@ -3075,20 +3134,20 @@ msgstr "모형" msgid "Monitor the library for changes" msgstr "라이브러리의 변화를 감지" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "모노 재생" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "개월" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "분위기" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "분위기 막대 " @@ -3096,15 +3155,19 @@ msgstr "분위기 막대 " msgid "Moodbars" msgstr "분위기 막대" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "더 " + +#: library/library.cpp:84 msgid "Most played" msgstr "자주 재생됨" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "마운트 지점" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "마운트 지점" @@ -3113,7 +3176,7 @@ msgstr "마운트 지점" msgid "Move down" msgstr "아래로 이동" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "라이브러리로 이동..." @@ -3122,7 +3185,7 @@ msgstr "라이브러리로 이동..." msgid "Move up" msgstr "위로 이동" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "음악" @@ -3130,56 +3193,32 @@ msgstr "음악" msgid "Music Library" msgstr "음악 라이브러리" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "음소거" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "내 Last.fm 라이브러리" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "내 Last.fm 믹스 라디오" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "내 Last.fm 이웃들" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "내 Last.fm 추천 라디오" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "내 믹스 라디오" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "내 음악" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "내 이웃들" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "내 라디오 방송국" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "내 추천목록" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "이름" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "이름" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "명명 옵션" @@ -3187,46 +3226,42 @@ msgstr "명명 옵션" msgid "Narrow band (NB)" msgstr "협대역(NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "이웃" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "네트워크 프록시" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "네트워크 리모콘" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" -msgstr "" +msgstr "없음" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "재생한 적 없음" #: ../bin/src/ui_behavioursettingspage.h:210 #: ../bin/src/ui_behavioursettingspage.h:224 msgid "Never start playing" -msgstr "" +msgstr "재생을 시작하지 않음" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "새 폴더" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "새로운 재생목록" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "새 스마트 재생목록" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "새로운 음악" @@ -3234,24 +3269,24 @@ msgstr "새로운 음악" msgid "New tracks will be added automatically." msgstr "새로운 음악을 자동으로 추가함" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "새로운 트랙" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "다음" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "다음 트랙" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "다음 주" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "없음" @@ -3259,33 +3294,33 @@ msgstr "없음" msgid "No background image" msgstr "배경 그림 없음" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "내보낼수 있는 커버가 없습니다." #: ../bin/src/ui_transcoderoptionsaac.h:146 msgid "No long blocks" -msgstr "" +msgstr "긴 블록 " -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "일치하는 결과를 찾을 수 없습니다. 검색창을 비우시면 전체 재생목록을 보실 수 있습니다." #: ../bin/src/ui_transcoderoptionsaac.h:145 msgid "No short blocks" -msgstr "" +msgstr "짧은 블록 " #: ../bin/src/ui_groupbydialog.h:128 ../bin/src/ui_groupbydialog.h:142 #: ../bin/src/ui_groupbydialog.h:156 msgid "None" msgstr "없음" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" -msgstr "" +msgstr "선택된 음악들이 장치에 복사되기 적합하지 않음" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "일반" @@ -3293,43 +3328,47 @@ msgstr "일반" msgid "Normal block type" msgstr "일반 블록 형식" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "다이나믹 재생목록을 사용 중일 때는 사용할 수 없습니다." -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "연결되지 않음" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "내용이 충분하지 않습니다." -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "팬이 충분하지 않습니다." -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "회원이 충분하지 않습니다." -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "이웃이 충분하지 않습니다." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "설치되지 않음" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "로그인 되지 않음" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "마운트 되지 않음 - 마운트 하려면 더블클릭" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "찾을 수 없음" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "알림 형태" @@ -3342,36 +3381,41 @@ msgstr "알림" msgid "Now Playing" msgstr "지금 재생중" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD 미리보기" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" -msgstr "" +msgstr "꺼짐" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "OGG Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" +msgstr "켜짐" + +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3379,11 +3423,11 @@ msgid "" "192.168.x.x" msgstr "다음의 ip 대역에 포함된 클라이언트의 연결만 받아들입니다 :\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" -msgstr "" +msgstr "로컬 네트워크로 부터의 연결만 허용" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "처음에만 보이기" @@ -3391,23 +3435,23 @@ msgstr "처음에만 보이기" msgid "Opacity" msgstr "투명도" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "브라우저에서 %1 열기" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "오디오 CD 열기(&a)..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "OPML 파일 열기" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "OPML 파일 열기" @@ -3415,30 +3459,35 @@ msgstr "OPML 파일 열기" msgid "Open device" msgstr "장치 열기" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "파일 열기..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" -msgstr "구글 드라이브에서 열기" +msgstr "Google Drive에서 열기" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "새로운 재생목록에서 열기" -#: songinfo/echonestbiographies.cpp:96 -msgid "Open in your browser" -msgstr "" +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "새로운 재생목록에서 열기" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: songinfo/echonestbiographies.cpp:97 +msgid "Open in your browser" +msgstr "브라우저에서 열기" + +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "열기..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "작업이 실패됨" @@ -3458,31 +3507,31 @@ msgstr "옵션..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "파일 정리" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "파일 정리..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "파일 정리 중..." -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "원본 태그" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "그 외 옵션" #: ../bin/src/ui_albumcoverexport.h:204 msgid "Output" -msgstr "" +msgstr "출력" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "출력 장치" @@ -3490,15 +3539,11 @@ msgstr "출력 장치" msgid "Output options" msgstr "저장 옵션" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "출력 플러그인" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "모두 덮어쓰기" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "기존 파일들 " @@ -3510,15 +3555,15 @@ msgstr "" msgid "Owner" msgstr "소유자" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" -msgstr "자멘도 목록 구성 중" +msgstr "Jamendo 목록 구성 중" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "파티" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3527,20 +3572,20 @@ msgstr "파티" msgid "Password" msgstr "비밀번호" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "일시중지" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "재생 일시중지" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "일시중지됨" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "연주가" @@ -3549,34 +3594,22 @@ msgstr "연주가" msgid "Pixel" msgstr "픽셀" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "일반 사이드바" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "재생" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "음악가 또는 태그 재생" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "음악가 라디오 재생..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "재생 횟수" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "사용자 정의 라디오 재생..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "중지중일때 재생, 재생중일때 중지" @@ -3585,73 +3618,70 @@ msgstr "중지중일때 재생, 재생중일때 중지" msgid "Play if there is nothing already playing" msgstr "이미 재생되는 곡이 없다면 재생" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "태그 라디오 재생..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "재생목록 번째의 곡 재생" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "재생/일시중지" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "재생" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "플레이어 옵션" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "재생목록" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "재생목록 끝남" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "재생목록 옵션" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "재생목록 종류" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "재생목록" #: ../data/oauthsuccess.html:38 msgid "Please close your browser and return to Clementine." -msgstr "브라우저를 닫고 클레멘타인으로 돌아오세요" +msgstr "브라우저를 닫고 Clementine으로 돌아오세요" #: ../bin/src/ui_spotifysettingspage.h:214 msgid "Plugin status:" msgstr "플러그인 상태:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "팟케스트" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "팝" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "인기곡" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "이번달의 인기곡" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "오늘의 인기곡" @@ -3660,22 +3690,23 @@ msgid "Popup duration" msgstr "팝업 시간" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "포트" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "프리-엠프" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "환경설정" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "환경설정..." @@ -3705,16 +3736,16 @@ msgstr "프리셋:" #: ../bin/src/ui_wiimoteshortcutgrabber.h:124 msgid "Press a button combination to use for" -msgstr "" +msgstr "을 사용하기 위한 조합 키를 누르세요" #: ../bin/src/ui_globalshortcutgrabber.h:73 msgid "Press a key" msgstr "a키를 누르세요" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." -msgstr "" +msgstr "%1에 사용하기 위한 키조합을 누르세요..." #: ../bin/src/ui_notificationssettingspage.h:451 msgid "Pretty OSD options" @@ -3722,20 +3753,20 @@ msgstr "예쁜 OSD 옵션" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "미리보기" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "이전" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "이전 트랙" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "출력 버전 정보" @@ -3743,58 +3774,72 @@ msgstr "출력 버전 정보" msgid "Profile" msgstr "프로필" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "진행" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "진행" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" -msgstr "" +msgstr "사이키델릭" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Wii 리모콘 버튼을 누르세요" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" -msgstr "" +msgstr "무작위 순서에 곡을 " #: ../bin/src/ui_transcoderoptionsflac.h:81 #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "음질" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "장치 질의..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "대기열 관리자" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "선택한 트랙을 큐에 추가" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "대기열 트랙" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "라디오 (모든 트랙을 같은 볼륨으로)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "라디오" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "빗소리" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "빗소리" @@ -3802,48 +3847,48 @@ msgstr "빗소리" msgid "Random visualization" msgstr "랜덤 시각화" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "현재 음악에 별점 0점 평가" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "현재 음악에 별점 1점 평가" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "현재 음악에 별점 2점 평가" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "현재 음악에 별점 3점 평가" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "현재 음악에 별점 4점 평가" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "현재 음악에 별점 5점 평가" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "등급" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "정말 취소 하시겠습니까?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "새로고침" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "목록 새로고침" @@ -3851,19 +3896,15 @@ msgstr "목록 새로고침" msgid "Refresh channels" msgstr "채널 새로고침" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "친구 목록 새로고침" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "방송국 목록 새로고침" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "스트림 새로고침" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "레게" @@ -3875,8 +3916,8 @@ msgstr "Wii 리모콘 스윙 기억하기" msgid "Remember from last time" msgstr "마지막 기억" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "제거" @@ -3884,7 +3925,7 @@ msgstr "제거" msgid "Remove action" msgstr "제거 행동" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "재생목록에서 중복 제거" @@ -3892,73 +3933,77 @@ msgstr "재생목록에서 중복 제거" msgid "Remove folder" msgstr "폴더 제거" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "내 음악에서 제거" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "북마크에서 제거" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "즐겨찾기에서 제거" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "재생목록에서 제거" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" -msgstr "" +msgstr "재생목록 삭제" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "재생목록 제거" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "내 음악에서 음악 제거 중" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "즐겨찾기에서 곡 제거 중" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "재생목록 \"%1\" 이름 바꾸기" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" -msgstr "그루브샤크 재생목록 이름 바꾸기" +msgstr "Grooveshark 재생목록 이름 바꾸기" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "재생목록 이름 바꾸기" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "재생목록 이름 바꾸기..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." -msgstr "" +msgstr "이 순서에서 트랙 번호를 다시 부여..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "반복" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "앨범 " -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "재생 목록 반복" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "한 곡 반복" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "현재 재생목록 교체" @@ -3967,62 +4012,62 @@ msgstr "현재 재생목록 교체" msgid "Replace the playlist" msgstr "재생목록 교체" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "공백을 및줄로 대체" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "리플레이 게인" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "리플레이 게인 모드" #: ../bin/src/ui_dynamicplaylistcontrols.h:112 msgid "Repopulate" -msgstr "" +msgstr "다시 채우기" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" -msgstr "" +msgstr "인증 코드 " -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "초기화" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "재생 횟수 초기화" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "ASCII 문자로 제한" #: ../bin/src/ui_behavioursettingspage.h:205 msgid "Resume playback on start" -msgstr "" +msgstr "시작할 때 재생목록 일시정지" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Grooveshark 에서 내 음악을 받아오는 중" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" -msgstr "그루브샤크에서 인기곡을 받아오는 중" +msgstr "Grooveshark에서 인기곡을 받아오는 중" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" -msgstr "그루브샤크 재생목록을 받아오는 중" +msgstr "Grooveshark 재생목록을 받아오는 중" #: ../data/oauthsuccess.html:5 msgid "Return to Clementine" -msgstr "클레멘타인으로 되돌아가기" +msgstr "Clementine으로 되돌아가기" #: ../bin/src/ui_equalizer.h:174 msgid "Right" @@ -4030,17 +4075,17 @@ msgstr "오른쪽" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "굽기" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "CD " -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." -msgstr "" +msgstr "오디오 CD " -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "록" @@ -4052,25 +4097,25 @@ msgstr "실행" msgid "SOCKS proxy" msgstr "SOCKS 프록시" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "안전하게 장치 제거" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "복사 후 안전하게 장치 제거" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "샘플 레이트" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "샘플 레이트" @@ -4078,27 +4123,33 @@ msgstr "샘플 레이트" msgid "Save .mood files in your music library" msgstr "음악 라이브러리에 .mood 파일 저장" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "앨범 표지 저장" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "커버를 디스크에 저장..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "그림 저장" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "재생목록 저장" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "재생목록 저장" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "재생목록 저장..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "프리셋 저장" @@ -4114,13 +4165,13 @@ msgstr "가능하면 파일 태그에 통계를 저장" msgid "Save this stream in the Internet tab" msgstr "인터넷 탭에 이 스트림을 저장" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" -msgstr "" +msgstr "트랙 저장 중" #: ../bin/src/ui_transcoderoptionsaac.h:136 msgid "Scalable sampling rate profile (SSR)" @@ -4130,18 +4181,22 @@ msgstr "Scalable sampling rate profile (SSR)" msgid "Scale size" msgstr "축척 크기" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "점수" #: ../bin/src/ui_lastfmsettingspage.h:156 msgid "Scrobble tracks that I listen to" -msgstr "" +msgstr "내가 들은 Scrobble 트랙" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "검색" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "검색" @@ -4149,23 +4204,23 @@ msgstr "검색" msgid "Search Icecast stations" msgstr "Icecast 방송국 검색" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" -msgstr "자멘도 검색" +msgstr "Jamendo 검색" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Magnature 검색" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" -msgstr "서브소닉 검색" +msgstr "Subsonic 검색" + +#: ui/albumcoverchoicecontroller.cpp:73 +msgid "Search automatically" +msgstr "자동적으로 찾기" #: ui/albumcoverchoicecontroller.cpp:66 -msgid "Search automatically" -msgstr "" - -#: ui/albumcoverchoicecontroller.cpp:62 msgid "Search for album covers..." msgstr "앨범 표지 검색..." @@ -4185,49 +4240,49 @@ msgstr "iTunes 검색" msgid "Search mode" msgstr "모드 검색" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "옵션 검색" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "검색 결과" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "검색 조건" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" -msgstr "그루브샤크에서 검색" +msgstr "Grooveshark에서 검색" #: ../bin/src/ui_groupbydialog.h:139 msgid "Second level" -msgstr "" +msgstr "두 번째 단계" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "뒤로 탐색" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "앞으로 탐색" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" -msgstr "" +msgstr "현재 재생중인 트랙을 상대 양으로 탐색" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" -msgstr "" +msgstr "현재 재생중인 트랙을 절대 위치로 탐색" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "모두 선택" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "선택 없음" @@ -4235,7 +4290,7 @@ msgstr "선택 없음" msgid "Select background color:" msgstr "배경 색상 선택" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "배경 그림 선택" @@ -4251,15 +4306,15 @@ msgstr "전경 색상 선택" msgid "Select visualizations" msgstr "시각화 선택" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "시각화 선택..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "선택..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "시리얼 넘버" @@ -4271,51 +4326,51 @@ msgstr "서버 URL" msgid "Server details" msgstr "서버 자세히" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "서비스 오프라인" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." -msgstr "" +msgstr "%1을 \"%2\"로 설정..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "음량을 퍼센트로 설정" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "모든 선택 트랙의 값을 설정..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" -msgstr "" +msgstr "설정" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "단축키" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "단축키: %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "%1위한 단축키가 이미 존재합니다." -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "보기" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "OSD 보기" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "현재 트랙에서 빛나는 애니메이션 보기" @@ -4325,7 +4380,7 @@ msgstr "트랙 진행 막대에 분위기 막대 표시" #: ../bin/src/ui_notificationssettingspage.h:434 msgid "Show a native desktop notification" -msgstr "네이트브 데스크탑 알림 보기" +msgstr "네이티브 데스크탑 알림 보기" #: ../bin/src/ui_notificationssettingspage.h:442 msgid "Show a notification when I change the repeat/shuffle mode" @@ -4343,15 +4398,15 @@ msgstr "시스템 트레이에서 팝업 보기" msgid "Show a pretty OSD" msgstr "예쁜 OSD 보기" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "상태 표시 줄 위에 보기" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "모든 음악 보기" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "모든 음악 보기" @@ -4363,32 +4418,36 @@ msgstr "라이브러리에서 커버아트 보기" msgid "Show dividers" msgstr "분할 표시" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "전체화면 보기..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "글로벌 검색 결과에서 그룹 보기" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "파일 브라우져에서 보기..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." -msgstr "" +msgstr "라이브러리에서 보기..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "다양한 음악가에서 보기" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "분위기 막대 " -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "복사본만 보기" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "태그되지 않은 것만 보기" @@ -4397,8 +4456,8 @@ msgid "Show search suggestions" msgstr "검색 제안 표시" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "\"좋아요\"와 \"싫어요\"버튼 보기" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4412,27 +4471,27 @@ msgstr "트레이 아이콘 보기" msgid "Show which sources are enabled and disabled" msgstr "출처의 사용가능 여부 보기" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "보기/숨기기" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "섞기" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "앨범 섞기" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "전부 " -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "재생 목록 섞기" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "이 앨범에 있는 곡 섞기" @@ -4448,7 +4507,7 @@ msgstr "로그아웃" msgid "Signing in..." msgstr "로그인..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "유사한 음악가" @@ -4460,43 +4519,51 @@ msgstr "크기" msgid "Size:" msgstr "크기:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "스카" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "재생목록에서 뒤로 넘기기" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" -msgstr "" +msgstr "넘긴 회수" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "재생목록에서 앞으로 넘기기" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "선택된 트랙들 " + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "트랙 " + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "작은 앨범 표지" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "작은 사이드바" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "스마트 재생목록" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "스마트 재생목록" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "소프트" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "소프트 록" @@ -4504,11 +4571,11 @@ msgstr "소프트 록" msgid "Song Information" msgstr "음악 정보" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "음악 정보" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "소노그래프" @@ -4528,15 +4595,23 @@ msgstr "장르에 의한 정렬(인기순)" msgid "Sort by station name" msgstr "방송국 이름으로 정렬" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "음악 정렬" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "정렬" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "출처" @@ -4550,95 +4625,95 @@ msgstr "Speex" #: ../bin/src/ui_spotifysettingspage.h:207 msgid "Spotify" -msgstr "스포티피" +msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" -msgstr "스포티피 로그인 에러" +msgstr "Spotify 로그인 에러" #: ../bin/src/ui_spotifysettingspage.h:212 msgid "Spotify plugin" -msgstr "스포티피 플러그인" +msgstr "Spotify 플러그인" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" -msgstr "스포티피 플러그인이 설치되지 않았습니다." +msgstr "Spotify 플러그인이 설치되지 않았습니다." #: ../bin/src/ui_transcoderoptionsmp3.h:201 msgid "Standard" msgstr "표준" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "볊점" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "굽기 시작" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "변환 시작" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 시작중" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "시작중..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "방송국" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "중지" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "이후 정지" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "이번 트랙 이후 정지" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "재생 " -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" -msgstr "" +msgstr "현재 트랙 이후 재생 정지" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" -msgstr "" +msgstr "%1 트랙 재생 후 정지" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "중지됨" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "스트림" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4648,7 +4723,7 @@ msgstr "" msgid "Streaming membership" msgstr "스트리밍 멤버쉽" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "구독중인 재생목록" @@ -4656,20 +4731,20 @@ msgstr "구독중인 재생목록" msgid "Subscribers" msgstr "구독자" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" -msgstr "서브소닉" +msgstr "Subsonic" #: ../data/oauthsuccess.html:36 msgid "Success!" msgstr "성공!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 작성 완료" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "제안된 태그" @@ -4678,13 +4753,13 @@ msgstr "제안된 태그" msgid "Summary" msgstr "요약" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "아주 높음 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "아주 높음 (2048x2048)" @@ -4696,43 +4771,35 @@ msgstr "지원가능한 형식" msgid "Synchronize statistics to files now" msgstr "지금 파일들의 통계들을 동기화" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" -msgstr "" +msgstr "Spotify inbox와 동기화 중" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" -msgstr "스포티피 재생목록 동기화중" +msgstr "Spotify 재생목록 동기화중" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" -msgstr "" +msgstr "Sportify 별점 트랙 동기화 중" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "시스템 색상" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "상단 탭" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "태그" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "태그 가져오기" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "태그 라디오" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "목표 비트 전송률" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "테크노" @@ -4740,89 +4807,84 @@ msgstr "테크노" msgid "Text options" msgstr "문자 옵션" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "감사합니다" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." -msgstr "" +msgstr "\"%1\" 명령이 시작 되지 않았습니다." #: ../bin/src/ui_appearancesettingspage.h:282 msgid "The album cover of the currently playing song" msgstr "재생 중인 음악의 앨범 표지" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "디렉터리 %1 이 유효하지 않습니다." -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "재생목록 '%1'이 비어있거나 재생이 불가능한 상태입니다." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" -msgstr "" +msgstr "두 번재 값이 반드시 첫 번째 값 보다 커야 합니다!" #: ui/coverfromurldialog.cpp:71 msgid "The site you requested does not exist!" msgstr "요청한 사이트가 존재하지 않습니다!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "요청하신 사이트는 이미지가 아닙니다!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." -msgstr "서브소닉의 시험 기간이 끝났습니다. 라이센스 키를 얻기위한 기부를 해주세요. 자세한 사항은 subsonic.org 에서 확인하세요." +msgstr "Subsonic의 시험 기간이 끝났습니다. 라이센스 키를 얻기위한 기부를 해주세요. 자세한 사항은 subsonic.org 에서 확인하세요." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "이 앨범과 다른 음악" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "gpodder.net과 통신하는데 문제가 발생하였습니다." -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" -msgstr "매그나튠 으로부터 메타데이터를 가져오는데 문제가 발생했습니다" +msgstr "Magnatune 으로부터 메타데이터를 가져오는데 문제가 발생했습니다" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "iTunes 스토어로부터 응답을 처리하는데 문제가 발생했습니다." -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" -msgstr "" +msgstr "음악을 복사하는 도중 문제가 발생하였습니다. 복사에 실패한 파일 :" #: ui/organiseerrordialog.cpp:61 msgid "" "There were problems deleting some songs. The following files could not be " "deleted:" -msgstr "" +msgstr "음악을 삭제하는 도중 문제가 발생하였습니다. 삭제에 실패한 파일 :" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "파일들이 장치로 부터 삭제 될 것 입니다. 계속 진행 하시겠습니까?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4840,15 +4902,15 @@ msgstr "" #: ../bin/src/ui_groupbydialog.h:153 msgid "Third level" -msgstr "" +msgstr "세 번째 단계" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "이 행동은 150MB 보다 큰 데이터 베이스를 생성할 것입니다.\n계속 진행하시겠습니까?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "이 앨범은 요청된 형식이 아닙니다." @@ -4862,56 +4924,56 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "이 장치는 다음의 파일 형식을 지원합니다:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" -msgstr "" +msgstr "이 기기는 완벽하게 작동하지 않을 수 있음." -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." -msgstr "" +msgstr "MTP 장치이지만 libmtp 지원을 하지 않도록 Clementine이 컴파일 되었습니다." #: devices/devicemanager.cpp:575 msgid "This is an iPod, but you compiled Clementine without libgpod support." -msgstr "" +msgstr "iPod 장치이지만 libgpod 지원을 하지 않도록 Clementine이 컴파일 되었습니다." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." -msgstr "" +msgstr "이 장치는 처음 연결 되었습니다. Clementine은 지금 장치에서 음악 파일들을 탐색할 것 입니다. - 시간이 조금 걸릴수 도 있습니다." #: playlist/playlisttabbar.cpp:186 msgid "This option can be changed in the \"Behavior\" preferences" -msgstr "" +msgstr "이 옵션은 환경설정의 \"행동\" 에서 변경할 수 있습니다." -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "이 스트림은 유료 subscribers만 사용할 수 있습니다" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" -msgstr "" +msgstr "이 장치의 형태는 지원되지 않습니다: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "제목" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Grooveshark 라디오를 시청하시려면, 먼저 Grooveshark에서 몇 곡을 들으셔야 합니다." -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "오늘" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "예쁜 OSD 토글" @@ -4919,27 +4981,27 @@ msgstr "예쁜 OSD 토글" msgid "Toggle fullscreen" msgstr "전체화면 토글" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "대기열 상황 토글" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "내일" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "너무 많은 리다이렉트" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "상위 트랙" @@ -4947,21 +5009,25 @@ msgstr "상위 트랙" msgid "Total albums:" msgstr "총 앨범수:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "전송된 총 바이트" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "트랙" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "음악 변환" @@ -4973,7 +5039,7 @@ msgstr "변환 기록" msgid "Transcoding" msgstr "변환" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "%2개의 쓰레드를 이용하여 %1 파일을 변환 중" @@ -4982,11 +5048,11 @@ msgstr "%2개의 쓰레드를 이용하여 %1 파일을 변환 중" msgid "Transcoding options" msgstr "변환 옵션" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "트루오디오" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "터빈" @@ -4994,80 +5060,80 @@ msgstr "터빈" msgid "Turn off" msgstr "끄기" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(들)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "우분투 원" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "초광대역 (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "알 수 없는" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "알 수 없는 content-type" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "알 수 없는 오류" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "커버 해제" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "선택된 트랙들 넘기기 " + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "트랙 넘기기 " + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "구독 안함" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "다가오는 콘서트" -#: internet/groovesharkservice.cpp:1200 -msgid "Update Grooveshark playlist" -msgstr "그루브샤크 재생목록 업데이트" +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "갱신" -#: podcasts/podcastservice.cpp:319 +#: internet/groovesharkservice.cpp:1238 +msgid "Update Grooveshark playlist" +msgstr "Grooveshark 재생목록 업데이트" + +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "모든 팟케스트 업데이트" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "변경된 라이브러리 폴더 업데이트" #: ../bin/src/ui_librarysettingspage.h:191 msgid "Update the library when Clementine starts" -msgstr "클레멘타인이 시작될 때 라이브러리 업데이트" +msgstr "Clementine이 시작될 때 라이브러리 업데이트" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "이 팟케스트 업데이트" @@ -5075,21 +5141,21 @@ msgstr "이 팟케스트 업데이트" msgid "Updating" msgstr "업데이트 중" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "업데이트 중 %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "업데이트 중 %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "라이브러리 업데이트 중" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "사용" @@ -5097,17 +5163,17 @@ msgstr "사용" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gnome의 단축키를 사용합니다." -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "가능하면 리플레이 게인 메타데이터를 사용" #: ../bin/src/ui_subsonicsettingspage.h:129 msgid "Use SSLv3" -msgstr "" +msgstr "SSL 버전 3 사용" #: ../bin/src/ui_wiimotesettingspage.h:189 msgid "Use Wii Remote" @@ -5121,9 +5187,9 @@ msgstr "사용자 정의 색상 사용" msgid "Use a custom message for notifications" msgstr "알림을 위한 사용자 정의 메시지 설정" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" -msgstr "" +msgstr "네트워크 리모콘 사용" #: ../bin/src/ui_networkproxysettingspage.h:167 msgid "Use authentication" @@ -5161,20 +5227,20 @@ msgstr "시스템 프록시 설정 사용" msgid "Use volume normalisation" msgstr "음량 표준화 사용" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "사용 됨" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" -msgstr "사용자 %1 은(는) 그루브샤크 Anywhere 계정이 아닙니다" +msgstr "사용자 %1 은(는) Grooveshark Anywhere 계정이 아닙니다" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "사용자 인터페이스" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5185,7 +5251,7 @@ msgstr "사용자명" #: ../bin/src/ui_behavioursettingspage.h:207 msgid "Using the menu to add a song will..." -msgstr "" +msgstr "음악 추가를 하였을 때..." #: ../bin/src/ui_magnatunedownloaddialog.h:142 #: ../bin/src/ui_magnatunesettingspage.h:173 @@ -5196,12 +5262,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "가변 비트 전송률" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "다양한 음악가" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "버전 %1" @@ -5214,7 +5280,7 @@ msgstr "보기" msgid "Visualization mode" msgstr "시각화 모드" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "시각화" @@ -5222,11 +5288,15 @@ msgstr "시각화" msgid "Visualizations Settings" msgstr "시각화 설정" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "음량 %1%" @@ -5244,11 +5314,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" -msgstr "" +msgstr "재생목록 탭을 닫으면 알림" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5256,13 +5326,13 @@ msgstr "Wav" msgid "Website" msgstr "웹 사이트" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "주" #: ../bin/src/ui_behavioursettingspage.h:201 msgid "When Clementine starts" -msgstr "클레멘타인이 시작할 때" +msgstr "Clementine이 시작할 때" #: ../bin/src/ui_librarysettingspage.h:204 msgid "" @@ -5282,39 +5352,39 @@ msgstr "다음의 검색어는 어떠시나요..." msgid "Wide band (WB)" msgstr "광대역 (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii 리모콘 %1: 활성화" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii 리모콘 %1: 연결됨" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii 리모콘 %1: 배터리 위험(%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii 리모콘 %1: 비 활성화" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii 리모콘 %1: 연결 끊김" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii 리모콘 %1: 낮은 배터리(%2%)" #: ../bin/src/ui_wiimotesettingspage.h:182 msgid "Wiimotedev" -msgstr "" +msgstr "Wii 리모콘 개발" #: ../bin/src/ui_digitallyimportedsettingspage.h:181 msgid "Windows Media 128k" @@ -5328,7 +5398,7 @@ msgstr "윈도우 미디어 40k" msgid "Windows Media 64k" msgstr "윈도우 미디어 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "윈도우 미디어 오디오" @@ -5336,25 +5406,25 @@ msgstr "윈도우 미디어 오디오" msgid "Without cover:" msgstr "커버 제외:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "지금 전부 다시 검색해도 좋습니까?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "모든 음악에 통계를 작성" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "잘못된 사용자명 또는 비밀번호 입니다." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5366,11 +5436,11 @@ msgstr "년도" msgid "Year - Album" msgstr "년도 - 앨범" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "년도" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "어제" @@ -5378,13 +5448,13 @@ msgstr "어제" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" -msgstr "" +msgstr "즐겨찾기에서 재생목록 %1(을)를 제거합니다. 계속하시겠습니까?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5394,12 +5464,12 @@ msgstr "" msgid "You are not signed in." msgstr "로그인 하지 않았습니다." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "%1 로 로그인 하였습니다." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "로그인 되었습니다." @@ -5407,63 +5477,70 @@ msgstr "로그인 되었습니다." msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." -msgstr "" +msgstr "계정과 관계 없이 무료로 들을 수 있지만 프리미엄 회원은 광고 없이 고음질 스트림으로 들을 수 있습니다." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." -msgstr "계정이 없이 무료로 매그나튠의 음악을 들을 수 있습니다. 회원권을 구입하면 각 트랙의 마지막의 메시지를 지웁니다." +msgstr "계정이 없이 무료로 Magnatune의 음악을 들을 수 있습니다. 회원권을 구입하면 각 트랙의 마지막의 메시지를 지웁니다." #: ../bin/src/ui_backgroundstreamssettingspage.h:57 msgid "You can listen to background streams at the same time as other music." msgstr "다른 음악과 동시에 배경 음악을 들을 수 있습니다. " -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. See the page on the " "Clementine wiki for more information.\n" -msgstr "클레멘타인에서 Wii 리모콘을 사용할 수 있습니다. 더 알고 싶으면 클레멘타인 위키의 페이지를 확인 하세요.\n" +msgstr "Clementine에서 Wii 리모콘을 사용할 수 있습니다. 더 알고 싶으면 Clementine 위키의 페이지를 확인 하세요.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." -msgstr "당신은 그루브샤크 Anywhere 계정을 가지고 있지 않습니다." +msgstr "당신은 Grooveshark Anywhere 계정을 가지고 있지 않습니다." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." -msgstr "" +msgstr "당신은 Spotify 프리미엄 계정이 아닙니다." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." -msgstr "스포티피에서 로그아웃 되셨습니다. 설정에서 비밀번호를 재입력하여 주십시오." +msgstr "Spotify에서 로그아웃 되셨습니다. 설정에서 비밀번호를 재입력하여 주십시오." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." -msgstr "스포티피에서 로그아웃 되셨습니다. 비밀번호를 재입력하여 주십시오." +msgstr "Spotify에서 로그아웃 되셨습니다. 비밀번호를 재입력하여 주십시오." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "이 트랙을 좋아합니다." -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5472,62 +5549,57 @@ msgstr "" #: ../bin/src/ui_behavioursettingspage.h:200 msgid "You will need to restart Clementine if you change the language." -msgstr "언어를 변경을 하였다면 클레멘타인을 재시작 해야합니다." +msgstr "언어를 변경을 하였다면 Clementine을 재시작 해야합니다." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "당신의 IP 주소:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" -msgstr "" +msgstr "당신의 Last.fm 계정정보가 부정확 합니다." #: internet/magnatunesettingspage.cpp:113 msgid "Your Magnatune credentials were incorrect" -msgstr "매그나튠의 계정정보가 잘 못되었습니다." +msgstr "Magnatune의 계정정보가 잘 못 되었습니다." -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "라이브러리가 비었습니다!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "당신의 라디오 스트림" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" -msgstr "" +msgstr "당신의 scrobbles: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "당신의 시스템은 OpenGL을 지원하지 않아서, 시각화를 사용할 수 없습니다." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "사용자명 또는 비밀번호가 틀렸습니다." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "제로" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "%n 곡 추가" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "이후" @@ -5547,19 +5619,19 @@ msgstr "자동" msgid "before" msgstr "이전" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "사이" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" -msgstr "" +msgstr "큰 순서" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "포함" @@ -5569,20 +5641,20 @@ msgstr "포함" msgid "disabled" msgstr "사용 안함" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "%1 디스크" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "포함 되지 않음" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "같음" @@ -5590,107 +5662,109 @@ msgstr "같음" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net 디렉토리" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" #: ../bin/src/ui_deviceviewcontainer.h:99 msgid "iPods and USB devices currently don't work on Windows. Sorry!" -msgstr "" +msgstr "죄송합니다. iPods 과 USB 장치가 현재 Windows 에서 작동하지 않습니다. " -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "%n 곡 이동" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" -msgstr "" +msgstr "최신 순서" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "같지 않음" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" -msgstr "" +msgstr "오래된것을 먼저" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "옵션" #: ../bin/src/ui_networkremotesettingspage.h:203 msgid "or scan the QR code!" -msgstr "" +msgstr "또는 QR 코드를 스캔하세요!" #: widgets/didyoumean.cpp:56 msgid "press enter" msgstr "엔터를 누르세요" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "%n 곡 제거" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" -msgstr "" +msgstr "짧은 순서" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "섞인 노래들" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" -msgstr "" +msgstr "작은 순서" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "음악 정렬" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "중지" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/lt.po b/src/translations/lt.po index f476818e2..1ab9ad9af 100644 --- a/src/translations/lt.po +++ b/src/translations/lt.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Lithuanian (http://www.transifex.com/projects/p/clementine/language/lt/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Language: lt\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +44,9 @@ msgstr "dienos" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -59,11 +59,16 @@ msgstr " pt" msgid " seconds" msgstr " sek." -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " dainos" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albumų" @@ -73,12 +78,12 @@ msgstr "%1 albumų" msgid "%1 days" msgstr "%1 dienų" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "prieš %1 dienų" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 šaltinyje %2" @@ -88,48 +93,48 @@ msgstr "%1 šaltinyje %2" msgid "%1 playlists (%2)" msgstr "%1 grojaraščiai (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 pažymėta iš" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 daina" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 dainos" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 rasta dainų" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 rasta dainų (rodoma %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 takeliai" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 perkelta" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wii pulto modulis" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 kitų klausytojų" @@ -143,18 +148,21 @@ msgstr "%L1 viso perklausymų" msgid "%filename%" msgstr "%failovardas%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n nepavyko" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n baigta" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n pervadinama" @@ -166,24 +174,24 @@ msgstr "&Lygiuoti tekstą" msgid "&Center" msgstr "&Centras" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Pasirinktinas" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Ekstra" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Pagalba" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Slėpti %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Paslėpti..." @@ -191,23 +199,23 @@ msgstr "&Paslėpti..." msgid "&Left" msgstr "&Kairė" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Muzika" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nieko" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Grojaraštis" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Baigti" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Kartojimo režimas" @@ -215,23 +223,23 @@ msgstr "Kartojimo režimas" msgid "&Right" msgstr "&Dešinė" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Maišymo veiksena" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Ištempti stulpelius, kad užpildytų langą" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Įrankiai" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(skirtinga daugelyje dainų)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...ir visiems prisidėjusiems prie Amarok" @@ -251,14 +259,10 @@ msgstr "0px" msgid "1 day" msgstr "1 diena" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 daina" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +272,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 atsitiktinių dainų" @@ -276,12 +280,6 @@ msgstr "50 atsitiktinių dainų" msgid "Upgrade to Premium now" msgstr "Naujinti į Premium dabar" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Sukurti naują paskyrą arba atkurti Jūsų slaptažodį" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +290,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Jei nepažymėta, Clementine bandys išsaugoti jūsų vertinimus ir statistiką kitoje duomenų bazėje ir nekeis jūsų failų.

Jei pažymėta, statistika bus saugoma duomenų bazėje ir pačiame faile.

Turėkite omeny jog tai gali neveikti su kai kuriais formatais, nėra standarto kaip tai daryti, nekurie grotuvai gali nesugebėti perskaityti tų duomenų.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +309,38 @@ msgid "" "activated.

" msgstr "

Tai įrašys dainos įvertinimą ir statistiką į failo žymes visoms jūsų fonotekos dainoms.

Tai nereikalinga jei "Saugoti įvertinimus ir statistiką failo žymėse" pasirinkti visada buvo įjungta.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Atpažinimo ženklas prasideda iš %, pav.: %albumas %pavadinimas

\n\n

Jei bus teksto skyriai, kurie turi atpažinimo ženklą su riestiniais skliausteliais, tas skyrius bus paslėptas, jei atpažinimo ženklas yra tuščias.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Reikalinga Grooveshark Betkur paskyra." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Reikalingas mokamas Spotify vartotojas" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Klientas gali prisijungti tik tada jei įvestas teisingas kodas." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Išmanusis grojaraštis yra dinaminis sąrašas sudaromas iš jūsų fonotekos. Išmaniųjų grojaraščių yra keli tipai kurie siūlo skirtingai atrinkti dainas." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Daina bus įtraukta į grojaraštį jei atitiks šias sąlygas" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -351,36 +360,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "Šlovė HYPNOTOAD'ui" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Nutraukti" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Apie %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Apie Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Apie Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Paskyros informacija" @@ -392,11 +400,15 @@ msgstr "Paskyros informacija (Premium)" msgid "Action" msgstr "Veiksmas" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktyvuoti/Deaktyvuoti Wii pultą" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Pridėti srautą" @@ -412,39 +424,39 @@ msgstr "Jeigu pranešimo tipas palaiko, tai pridedama nauja eilutė" msgid "Add action" msgstr "Pridėti veiksmą" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Pridėti kitą srautą..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Pridėti nuorodą..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Pridėti failą" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Pridėti failą perkodavimui" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Pridėti failus perkodavimui" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Pridėti failą..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Pridėti failus perkodavimui" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Pridėti aplankalą" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Pridėti aplanką..." @@ -456,11 +468,11 @@ msgstr "Pridėti naują aplankalą..." msgid "Add podcast" msgstr "Pridėti srautą" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Pridėti srautą..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Pridėti paieškos frazę" @@ -524,6 +536,10 @@ msgstr "Nustatyti kūrinio prametimų skaičių" msgid "Add song title tag" msgstr "Pridėti žymę kūrinio pavadinimui" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Pridėti žymę kūrinio numeriui" @@ -532,22 +548,34 @@ msgstr "Pridėti žymę kūrinio numeriui" msgid "Add song year tag" msgstr "Pridėti žymę kūrionio metams" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Pridėti srautą..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Pridėti į Grooveshark mėgstamiausius" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Pridėti į Grooveshark grojaraščius" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Pridėti prie kito grojaraščio" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Įdėti į grojaraštį" @@ -556,6 +584,10 @@ msgstr "Įdėti į grojaraštį" msgid "Add to the queue" msgstr "Įdėti į eilę" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Pridėti Wii pulto veiksmą" @@ -585,15 +617,15 @@ msgstr "Pridėta šiandien" msgid "Added within three months" msgstr "Pridėta tryjų mėnesių tarpe" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Daina pridedama į Mano muziką" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Daina pridedama į mėgstamiausius" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Platesnis grupavimas..." @@ -601,12 +633,12 @@ msgstr "Platesnis grupavimas..." msgid "After " msgstr "Po" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Po kopijavimo..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +646,11 @@ msgstr "Po kopijavimo..." msgid "Album" msgstr "Albumas" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Albumas (idealus garsumas visoms dainoms)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +660,36 @@ msgstr "Albumo atlikėjas" msgid "Album cover" msgstr "Albumo viršelis" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Albumo info iš jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumai su viršeliais" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumai be viršelių" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Visi Failai (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Šlovė Hypnotoad'ui!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Visi albumai" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Visi atlikėjai" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Visi failai (*)" @@ -665,19 +698,19 @@ msgstr "Visi failai (*)" msgid "All playlists (%1)" msgstr "Visi grojaraščiai (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Visi vertėjai" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Visos dainos" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Leisti klientui atsisiųsti muziką iš šio kompiuterio." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Leisti atsiuntimus" @@ -702,30 +735,30 @@ msgstr "Visada rodyti pagrindinį langą" msgid "Always start playing" msgstr "Visada pradėti grojant" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Kad naudotumėte Spotify Clementine grotuve, jums reikia papildomo išplėtimo. Ar parsiųsti ir įdiegti jį dabar?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Iškilo klaida įkeliant iTunes duomenų bazę" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Klaida rašant meta duomenis į '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Įvyko nežinoma klaida." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Ir:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Piktas" @@ -734,13 +767,13 @@ msgstr "Piktas" msgid "Appearance" msgstr "Išvaizda" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Įterpti failus/URL į grojaraštį" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Įterpti į esamą grojaraštį" @@ -748,52 +781,47 @@ msgstr "Įterpti į esamą grojaraštį" msgid "Append to the playlist" msgstr "Įterpti į grojaraštį" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Pritaikyti suspaudimą, kad išvengti nukirtimų" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Ar tikrai norite ištrinti \"%1\" šabloną?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Ar tikrai norite pašalinti šį grojaraštį?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Ar tikrai norite atstatyti šios dainos statistiką?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Ar tikrai norite įrašyti dainos statistiką į dainos failą visoms dainoms Jūsų fonotekoje?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Atlikėjas" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Atlikėjo info" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Atlikėjo radijas" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Atlikėjo žymės" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Atlikėjo inicialai" @@ -801,9 +829,13 @@ msgstr "Atlikėjo inicialai" msgid "Audio format" msgstr "Audio formatas" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autorizacija nepavyko" @@ -811,7 +843,7 @@ msgstr "Autorizacija nepavyko" msgid "Author" msgstr "Autorius" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autoriai" @@ -827,7 +859,7 @@ msgstr "Automatinis atnaujinimas" msgid "Automatically open single categories in the library tree" msgstr "Automatiškai atverti pavienias kategorijas fonotekos sąraše" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Galimas" @@ -835,15 +867,15 @@ msgstr "Galimas" msgid "Average bitrate" msgstr "Vidutinis bitų dažnis" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Vidutinis paveikslo dydis" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC srautas" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +896,7 @@ msgstr "Fono pavaikslėlis" msgid "Background opacity" msgstr "Fono nepermatomumas" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Daroma duomenų bazės atsarginė kopija" @@ -872,11 +904,7 @@ msgstr "Daroma duomenų bazės atsarginė kopija" msgid "Balance" msgstr "Balansas" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Užblokuoti" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Barograma" @@ -896,18 +924,17 @@ msgstr "Elgsena" msgid "Best" msgstr "Geriausias" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografija iš %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitų greitis" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +942,12 @@ msgstr "Bitų greitis" msgid "Bitrate" msgstr "Bitų dažnis" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blokograma" @@ -931,7 +963,7 @@ msgstr "Suliejimo kiekis" msgid "Body" msgstr "Turinys" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Bumograma" @@ -945,11 +977,11 @@ msgstr "„Box“" msgid "Browse..." msgstr "Naršyti..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Buferio trukmė" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Kaupiamas buferis" @@ -961,43 +993,66 @@ msgstr "Bet šie šaltiniai yra išjungti" msgid "Buttons" msgstr "Mygtukai" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "\"CUE sheet\" palaikymas" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Atšaukti" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Keisti viršelio paveikslėlį" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Keisti šrifto dydį..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Keisti kartojimo režimą" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Keisti greituką..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Keisti maišymo režimą" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Keisti kalbą" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1062,19 @@ msgstr "Mono perklausos nustatymų keitimas suveiks kitoms grojamoms dainoms." msgid "Check for new episodes" msgstr "Tikrinti, ar nėra naujų epizodų" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Atnaujinimų tikrinimas..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Parinkite pavadinimą išmaniajam grojaraščiui" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Automatiškai parinkti" @@ -1031,11 +1090,11 @@ msgstr "Pasirinkite šifrą..." msgid "Choose from the list" msgstr "Parinkti iš sąrašo" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Pasirinkite kaip grojaraštis bus rikiuojamas ir kiek dainų turės" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Pasirinkite srauto siutimo vietą" @@ -1044,7 +1103,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Parinkite tinklapius, kuriuose „Clementine“ galėtų ieškoti lyrikos." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasika" @@ -1052,17 +1111,17 @@ msgstr "Klasika" msgid "Cleaning up" msgstr "Valoma" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Išvalyti" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Išvalyti grojaraštį" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "„Clementine“" @@ -1075,8 +1134,8 @@ msgstr "„Clementine“ klaida" msgid "Clementine Orange" msgstr "„Clementine“ Oranžinė" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "„Clementine“ vizualizacija" @@ -1098,9 +1157,9 @@ msgstr "Clementine gali groti Jūsų į Dropbox įkeltą muziką" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine gali groti Jūsų į Google diską įkeltą muziką" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine gali groti Jūsų į Ubuntu One įkeltą muziką" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1172,13 @@ msgid "" "an account." msgstr "Clementine gali sinchronizuoti jūsų fonoteką su kitais jūsų kompiuteriais ir srauto aplikacijomis. Sukurti sąskaitą." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "„Clementine“ negalėjo įkelti jokios „projectM“ vizualizacijos. Įsitikinkite ar tinkamai įdiegėte „Clementine“." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine negalėjo nustatyti jūsų vartotojo tipo, nes yra problemų su jūsų internetu. Grojami kūriniai bus išsaugoti ir nusiųsti vėliau į Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "„Clementine“ nuotraukų peržiūra" @@ -1138,11 +1190,11 @@ msgstr "„Clementine“ nepavyko rasti rezultatų šiam failui" msgid "Clementine will find music in:" msgstr "Clementine ras muziką:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Paspauskite čia, kad pridėti muziką" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1204,10 @@ msgstr "Spauskite, kad pažymėti šį grojaraštį, tam kad jis būtų išsaugo msgid "Click to toggle between remaining time and total time" msgstr "Spustelėkite, kad perjungti tarp likusio laiko ir viso laiko" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1222,19 @@ msgstr "Uždaryti" msgid "Close playlist" msgstr "Užverti grojaraštį" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Uždaryti vizualizacijas" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Uždarant šį langą bus atšaukti atsisiuntimai." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Uždarant šį langą bus sustabdyta albumo viršelių paieška." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klubinė" @@ -1187,73 +1242,78 @@ msgstr "Klubinė" msgid "Colors" msgstr "Spalvos" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Kableliais išskirtas sąrašas iš klasės:lygio, lygis yra nuo 0 iki 3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentaras" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Užbaigti žymes automatiškai" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Pabaigti žymes automatiškai..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Kompozitorius" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Konfigūruoti %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Konfigūruoti Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Konfigūruoti „Last.fm“..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Konfigūruoti „Magnatune“..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Konfigūruoti sparčiuosius klavišus" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Konfigūruoti Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Konfigūruoti subsonix" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Nustatyti visuotinę paiešką..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Konfigūruoti fonoteką..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Konfigūruojamas srautas... " -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Konfigūruoti..." @@ -1261,11 +1321,11 @@ msgstr "Konfigūruoti..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Prijungti Wii pultą naudojant aktyvuoti/deaktyvuoti veiksmą" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Prijungti įrenginį" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Jungiamasi prie Spotify" @@ -1275,12 +1335,16 @@ msgid "" "http://localhost:4040/" msgstr "Ryšį serveris atmetė, patikrinkite serverio URL. Pvz.: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Baigėsi prisijungimo laikas, patikrinkite serverio URL. Pavyzdys: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Pultas" @@ -1296,17 +1360,21 @@ msgstr "Konvertuoti visą muziką" msgid "Convert any music that the device can't play" msgstr "Konvertuoti visą įrenginio nepalaikomą muziką" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopijuoti į atmintinę" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopijuoti į įrenginį..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopijuoti į fonoteką..." @@ -1314,156 +1382,152 @@ msgstr "Kopijuoti į fonoteką..." msgid "Copyright" msgstr "Teisės" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Prisijungti prie subsonic nepavyko, patikrinkite serverio URL. Pavyzdys: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nepavyko sukurti „GStreamer“ elemento \"%1\" - įsitikinkite ar įdiegti visi reikalingi „GStreamer“ plėtiniai" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nepavyko rasti maišytuvo %1, įsitikinkite ar įdiegti visi reikalingi „GStreamer“ plėtiniai" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Nepavyko rasti koduotuvo %1, įsitikinkite ar įdiegti visi reikalingi „GStreamer“ plėtiniai" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Nepavyko įkelti „Last.fm“ radijo stoties" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Nepavyko atverti išvesties failo %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Viršelių tvarkyklė" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Viršelio paveikslėlis iš įdėtos nuotraukos" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Viršelio paveikslėlis įkeltas automatiškai iš %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Viršelio paveikslėlis savarankiškai pašalintas" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Viršelio paveikslėlis nenustatytas" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Viršelio paveikslėlis nustatytas iš %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Viršeliai iš %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Kurti naują Grooveshark grojaraštį" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Naudoti „Cross-fade“ funkciją kai takeliai keičiami automatiškai" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Naudoti „Cross-fade“ funkciją kai takeliai keičiami savarankiškai" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1535,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Pasirinktinis" @@ -1483,54 +1547,50 @@ msgstr "Pasirinktinis paveikslėlis" msgid "Custom message settings" msgstr "Specifiniai žinutės nustatymai" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Pasirinktinis radijas" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Pasirinktinis..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "„DBus“ kelias" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Šokių" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Aptikta duomenų bazės klaida. Prašome skaityti https://code.google.com/p/clementine-player/wiki/DatabaseCorruption esančias instrukcijas kaip atstatyti Jūsų duomenų bazę" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Sukūrimo data" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Pakeitimo data" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dienos" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Numatytas" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Sumažinti garsą per 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Patildyti procentais" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Sumažinti garsą" @@ -1538,6 +1598,11 @@ msgstr "Sumažinti garsą" msgid "Default background image" msgstr "Numatytasis fono paveikslėlis" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Numatyti" @@ -1546,30 +1611,30 @@ msgstr "Numatyti" msgid "Delay between visualizations" msgstr "Delsa tarp vizualizacijų" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Trinti" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Šalinti Grooveshark grojaraštį" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Naikinti atsiųstus duomenis" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Ištrinti failus" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Ištrinti iš įrenginio..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Ištrinti iš disko..." @@ -1577,31 +1642,31 @@ msgstr "Ištrinti iš disko..." msgid "Delete played episodes" msgstr "Ištrinti atliktus epizodus" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Ištrinti šabloną" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Ištrinti išmanųjį grojaraštį" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Ištrinti originalius failus" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Trinami failai" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Iš eilės pažymėtus takelius" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Iš eilės takelį" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Kopijuoti į aplanką" @@ -1610,7 +1675,7 @@ msgstr "Kopijuoti į aplanką" msgid "Details..." msgstr "Detalės..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Įrenginys" @@ -1622,15 +1687,15 @@ msgstr "Įrenginio savybės" msgid "Device name" msgstr "Įrenginio pavadinimas" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Įrenginio savybės..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Įrenginiai" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1667,12 +1732,17 @@ msgstr "Išjungti trukmę" msgid "Disable moodbar generation" msgstr "Išjungti moodbar generavimą" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Išjungtas" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Diskas" @@ -1682,15 +1752,15 @@ msgid "Discontinuous transmission" msgstr "Nevientisa transliacija" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Rodymo nuostatos" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Rodyti OSD" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Pilnai perskanuoti fonoteką" @@ -1702,27 +1772,27 @@ msgstr "Nekonvertuoti jokios muzikos" msgid "Do not overwrite" msgstr "Ne perrašyti" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Nekartoti" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Nerodyti įvairiuose atlikėjuose" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Nemaišyti" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Nesustoti!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Paremti pinigais" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Du kart spustelėkite norėdami atverti" @@ -1730,12 +1800,13 @@ msgstr "Du kart spustelėkite norėdami atverti" msgid "Double clicking a song will..." msgstr "Du kartus spūstelėjus dainą..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Atsiųsti %n epizodus" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Atsisiuntimų aplankas" @@ -1751,7 +1822,7 @@ msgstr "Atsiųsti narystę" msgid "Download new episodes automatically" msgstr "Atsisiųsti naujus epizodus automatiškai" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Atsiuntimas eilėje" @@ -1759,15 +1830,15 @@ msgstr "Atsiuntimas eilėje" msgid "Download the Android app" msgstr "Atsisiųsti Android programą" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Atsisiųsti šį albumą" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Atsisiunčiamas šis albumas" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Atsiųsti šį epizodą" @@ -1775,7 +1846,7 @@ msgstr "Atsiųsti šį epizodą" msgid "Download..." msgstr "Atsisiųsti..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Atsiunčiama (%1%)..." @@ -1784,23 +1855,23 @@ msgstr "Atsiunčiama (%1%)..." msgid "Downloading Icecast directory" msgstr "Atsiunčiamas Icecast aplankas" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Atsiunčiamas Jamendo katalogas" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Atsiunčiamas Magnatune katalogas" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Siunčiamas Spotify plėtinys" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Atsiunčiami metaduomenys" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Temkite, kad pakeisti poziciją" @@ -1820,20 +1891,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Dinaminė veiksena yra įjungta" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dinaminis atsitiktinis maišymas" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Taisyti išmanųjį grojaraštį..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Taisyti žymę..." @@ -1845,16 +1916,16 @@ msgstr "Taisyti žymes" msgid "Edit track information" msgstr "Taisyti takelio informaciją" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Taisyti takelio informaciją..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Taisyti takelių informaciją..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Keisti..." @@ -1862,6 +1933,10 @@ msgstr "Keisti..." msgid "Enable Wii Remote support" msgstr "Įgalinti Wii nuotolinio pulto palaikymą" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Įjungti glodintuvą" @@ -1876,7 +1951,7 @@ msgid "" "displayed in this order." msgstr "Įjunkite žemiau esančius šaltinius, kad įtraukti juos į paieškos rezultatus. Rezultatai bus rodomi šia tvarka." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Įjungti/Išjungti „Last.fm scrobbling“" @@ -1904,15 +1979,10 @@ msgstr "Įveskite URL, kad atsisiųsti viršelį iš interneto:" msgid "Enter a filename for exported covers (no extension):" msgstr "Įrašykite failo vardą eksportuotiems viršeliams (be plėtinio):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Įveskite naują pavadinimą šiam grojaraščiui" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Įveskite atlikėją arba žymę, kad pradėti klausytis Last.fm radijo." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1996,7 @@ msgstr "Įrašykite paieškos kriterijus žemiau, kad rasti transliacijas itunes msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Įrašykite paieškos kriterijus žemiau, kad rasti transliacijas gpodder.net svetainėje" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Įveskite paieškos žodžius čia" @@ -1935,11 +2005,11 @@ msgstr "Įveskite paieškos žodžius čia" msgid "Enter the URL of an internet radio stream:" msgstr "Įveskite internetinio radijo srauto URL:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Įveskite naujo aplanko pavadinimą" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Programoje įveskite šį adresą ir prisijungsite prie Clementine." @@ -1947,21 +2017,22 @@ msgstr "Programoje įveskite šį adresą ir prisijungsite prie Clementine." msgid "Entire collection" msgstr "Visa kolekcija" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Glodintuvas" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Tai atitinka --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Tai atitinka --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Klaida" @@ -1969,38 +2040,38 @@ msgstr "Klaida" msgid "Error connecting MTP device" msgstr "Klaida prijungiant MTP įrenginį" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Klaida kopijuojant dainas" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Klaida trinant dainas" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Klaida siunčiant Spotify plėtinį" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Klaida įkeliant %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Klaida įkeliant di.fm grojaraštį" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Klaida apdorojant %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Klaida įkeliant audio CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Bet kada grota" @@ -2032,7 +2103,7 @@ msgstr "Kas 6 valandas" msgid "Every hour" msgstr "Kiekvieną valandą" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Išskyrus tarp takelių tame pačiame albume arba tame pačiame CUE lape" @@ -2044,7 +2115,7 @@ msgstr "Esantys viršeliai" msgid "Expand" msgstr "Išplėsti" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Baigsis galiojimas %1" @@ -2065,36 +2136,36 @@ msgstr "Eksportuoti atsisiųstus viršelius" msgid "Export embedded covers" msgstr "Eksportuoti įterptus viršelius" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Eksportavimas baigtas" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Eksportuota %1 viršelių iš %2 (%3 praleista)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2175,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Laipsniškai tildyti pristabdant / garsinti tęsiant" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Palaipsniui nutilti kai stabdomas takelis" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Pradingimas" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Suliejimo trukmė" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Nepavyko atsiųsti direktorijos" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Nepavyko atsiųsti garso prenumeratos" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Nepavyko įkelti garso prenumeratos" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Nepavyko apdoroti XML šiam RSS srautui" @@ -2148,11 +2219,11 @@ msgstr "Nepavyko apdoroti XML šiam RSS srautui" msgid "Fast" msgstr "Greitai" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Mėgstamiausi" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Megstami takeliai" @@ -2168,11 +2239,11 @@ msgstr "Gauti automatiškai" msgid "Fetch completed" msgstr "Parsiuntimas baigtas" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Gaunama Subsonic biblioteka" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Viršelio atsiuntimo klaida" @@ -2180,7 +2251,7 @@ msgstr "Viršelio atsiuntimo klaida" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Failo plėtinys" @@ -2188,19 +2259,23 @@ msgstr "Failo plėtinys" msgid "File formats" msgstr "Failų formatai" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Failo vardas" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Failo vardas (be kelio)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Failo dydis" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2285,7 @@ msgstr "Failo tipas" msgid "Filename" msgstr "Failopavadinimas" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Failai" @@ -2218,15 +2293,19 @@ msgstr "Failai" msgid "Files to transcode" msgstr "Failai perkodavimui" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Rasti fonotekoje dainas, kurios atitinka jūsų nurodytus kriterijus." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Skenuojama daina" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Baigti" @@ -2234,7 +2313,7 @@ msgstr "Baigti" msgid "First level" msgstr "Pirmas lygis" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2329,12 @@ msgstr "Dėl licencijavimo priežasčių Spotify palaikymas yra įjungiamas per msgid "Force mono encoding" msgstr "Įjungti tik mono kodavimą" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Pamiršti įrenginį" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2349,7 @@ msgstr "Pamirštant įrenginys bus pašalintas iš šio sąrašo ir Clementine t #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2377,23 @@ msgstr "Kadrų dažnis" msgid "Frames per buffer" msgstr "Kadrai per buferį" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Draugai" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Užšaldyta" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Visi žemi tonai" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Visi žemi ir aukšti tonai" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Visi aukšti tonai" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer audio variklis" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Bendri" @@ -2330,30 +2401,30 @@ msgstr "Bendri" msgid "General settings" msgstr "Pagrindiniai nustatymai" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žanras" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Gauti URL šio Grooveshark grojaraščio bendrinimui" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Gauti URL šios Grooveshark dainos bendrinimui" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Gaunamos Grooveshark populiarios dainos" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "gaunami kanalai" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Gaunami srautai" @@ -2365,11 +2436,11 @@ msgstr "Suteikti pavadinimą" msgid "Go" msgstr "Eiti" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Eiti į sekančią grojaraščių kortelę" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Eiti į praeitą grojarasčių kortelę" @@ -2377,7 +2448,7 @@ msgstr "Eiti į praeitą grojarasčių kortelę" msgid "Google Drive" msgstr "Google diskas" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2458,7 @@ msgstr "VaizdasGauta %1 viršelių iš %2 (%3 nepavyko)" msgid "Grey out non existent songs in my playlists" msgstr "Pažymėti pilkai neegzistuojančias dainas mano grojaraštyje" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2466,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark prisijungimo klaida" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark grojaraščio URL" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark radijas" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark dainos URL" @@ -2411,44 +2482,44 @@ msgstr "Grooveshark dainos URL" msgid "Group Library by..." msgstr "Grupuoti fonoteką pagal..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupuoti pagal" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Grupuoti pagal Albumą" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Grupuoti pagal Atlikėją" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Grupuoti pagal Atlikėją/Albumą" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Grupuoti pagal Atlikėją/Metus - Albumą" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Grupuoti pagal Žanrą/Albumą" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Grupuoti pagal Žanrą/Atlikėją/Albumą" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupavimas" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML puslapis neturėjo jokio RSS srauto" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "HTTP 3xx būsenos kodas gautas be URL, patikrinkite serverio konfigūraciją." @@ -2457,7 +2528,7 @@ msgstr "HTTP 3xx būsenos kodas gautas be URL, patikrinkite serverio konfigūrac msgid "HTTP proxy" msgstr "HTTP įgaliotasis serveris" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Laimingas" @@ -2473,25 +2544,25 @@ msgstr "Aparatūros informacija prieinama tik kai įrenginys yra prijungtas." msgid "High" msgstr "Aukšta" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Aukšta (%1 kps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Aukšta (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Mazgas nerastas, patikrinkite serverio URL. Pavyzdys: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Valandos" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad'as" @@ -2503,15 +2574,15 @@ msgstr "Aš neturiu Magnatune paskyros" msgid "Icon" msgstr "Piktograma" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Piktogramos viršuje" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Nustatoma daina" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2592,24 @@ msgstr "Jei tęsite, šis įrenginys dirbs lėtai ir nukopijuotos dainos gali ne msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Jei žinote garso prenumeratos URL, įveskite jį ir spauskite „Eiti“." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Nepaisyti \"The\" atlikėjų varduose" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Paveikslai (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Paveikslai (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Po %1 d." -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Po %1 sav." @@ -2549,7 +2620,7 @@ msgid "" "time a song finishes." msgstr "Dinamiškame režime nauji kūriniais bus parinkti ir pridėti į grojaraštį kaskart, kai dabar grojamas kūrinys baigsis." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Gautieji" @@ -2561,36 +2632,36 @@ msgstr "Rodyti albumo paveikslus pranešime" msgid "Include all songs" msgstr "Įtraukti visas dainas" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Nesuderinama Subsonic REST protokolo versija. Reikia atnaujinti klientą." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Nesuderinama Subsonic REST protokolo versija. Serveris turi atsinaujinti." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Nepilna konfigūracija, įsitikinkite kad visi laukai užpildyti." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Pagarsinti 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Pagarsinti procentais" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Pagarsinti" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indeksuojama %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informacija" @@ -2598,55 +2669,55 @@ msgstr "Informacija" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Įterpti..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Įdiegta" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Vientisumo tikrinimas" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internetas" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Interneto tiekėjai" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Netinkamas API raktas" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Netinkamas formatas" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Netinkamas metodas" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Netinkami parametrai" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Nurodytas netinkamas šaltinis" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Netinkama paslauga" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Netinkamas sesijos raktas" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Neteisingas naudotojo vardas ir/arba slaptažodis" @@ -2654,42 +2725,42 @@ msgstr "Neteisingas naudotojo vardas ir/arba slaptažodis" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo Daugiausia klausyti takeliai" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo Top takeliai" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo mėnesio Top takeliai" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo savaitės Top takelia" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo duomenų bazė" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Peršokti prie dabar grojamo takelio" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Laikykite mygtukus %1 sek." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Laikyti mygtukus %1 sekundžių..." @@ -2698,23 +2769,24 @@ msgstr "Laikyti mygtukus %1 sekundžių..." msgid "Keep running in the background when the window is closed" msgstr "Veikti fone kai langas uždaromas" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Palikti originialius failus" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Kačiukai" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Kalba" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Nešiojamojo kompiuterio kolonėlės/ausinės" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Didelė salė" @@ -2722,58 +2794,24 @@ msgstr "Didelė salė" msgid "Large album cover" msgstr "Didelis albumo viršelio paveikslėlis" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Didelė juosta" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Vėliausiai grota" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm Savitas Radijas: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Biblioteka - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Mix Radijas - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Kaimyninis Radijas - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Radijo Stotis - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm Panašūs Atlikėjai į %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm Žymės Radijas: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm šiuo metu užimtas, prašome pamėginti po kelių minučių" @@ -2781,11 +2819,11 @@ msgstr "Last.fm šiuo metu užimtas, prašome pamėginti po kelių minučių" msgid "Last.fm password" msgstr "Last.fm slaptažodis" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm grojimų skaitliukas" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm žymės" @@ -2793,28 +2831,24 @@ msgstr "Last.fm žymės" msgid "Last.fm username" msgstr "Last.fm naudotojo vardas" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Mažiausiai populiarūs takeliai" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Palikite tuščią numatytoms reikšmėms. Pavyzdžiai: \"/dev/dsp\", \"front\", ir t.t." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Kairė" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Trukmė" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Fonoteka" @@ -2822,24 +2856,24 @@ msgstr "Fonoteka" msgid "Library advanced grouping" msgstr "Sudėtingesnis fonotekos grupavimas" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Fonotekos perskanavimo žinutė" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Fonotekos paieška" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Apribojimai" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Klausyti Grooveshark dainų pagal jūsų anksčiau klausytas dainas" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Gyvai" @@ -2851,15 +2885,15 @@ msgstr "Įkelti" msgid "Load cover from URL" msgstr "Įkelti viršelį iš URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Įkelti viršelį iš URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Įkelti viršelį iš disko" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Įkelti viršelį iš disko..." @@ -2867,84 +2901,89 @@ msgstr "Įkelti viršelį iš disko..." msgid "Load playlist" msgstr "Įkelti grojaraštį" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Įkelti grojaraštį..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Įkeliama Last.fm radijo stotis" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Įkeliamas MTP įrenginys" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Įkeliama iPod duomenų bazė" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Įkeliamas išmanusis grojaraštis" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Keliamos dainos" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Įkeliamas srautas" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Įkeliami takeliai" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Užkraunama kūrinio informacija" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Įkeliama..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Įkelia failus/URL, pakeičiant esamą sąrašą" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Prisijungti" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Prisijungimas nepavyko" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Ilgalaikio nuspėjimo profilis (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Meilė" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Žema (%1 kps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Žema (256x256)" @@ -2956,12 +2995,17 @@ msgstr "Žemo sudėtingumo profilis (LC)" msgid "Lyrics" msgstr "Dainų žodžiai" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Žodžiai iš %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3017,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2989,7 +3033,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune atsiuntimas" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune atsiuntimas baigtas" @@ -2997,15 +3041,20 @@ msgstr "Magnatune atsiuntimas baigtas" msgid "Main profile (MAIN)" msgstr "Pagrindinis profilis" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Padaryti tai taip!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Padaryti šį grojaraštį prieinamą atsijungus" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Netinkamas atsakymas" @@ -3018,15 +3067,15 @@ msgstr "Rankinis tarpinės stoties konfigūravimas" msgid "Manually" msgstr "Rankiniu būdu" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Gamintojas" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Pažymėti kaip klausytą" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Pažymėti kaip naują" @@ -3038,17 +3087,21 @@ msgstr "Atitikti kiekvieną paieškos frazę (IR)" msgid "Match one or more search terms (OR)" msgstr "Atitinka vieną ar daugiau paieškos frazių (ARBA)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maksimalus bitrate" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Vidutinė (%1 kps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Vidutinė (512x512)" @@ -3060,11 +3113,15 @@ msgstr "Narystės tipas" msgid "Minimum bitrate" msgstr "Minimalus bitrate" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Trūksta projectM šablonų" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modelis" @@ -3072,20 +3129,20 @@ msgstr "Modelis" msgid "Monitor the library for changes" msgstr "Stebėti fonoteką dėl pasikeitimų" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono grojimas" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Mėnesiai" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Nuotaika" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Nuotaikos juostos stilius" @@ -3093,15 +3150,19 @@ msgstr "Nuotaikos juostos stilius" msgid "Moodbars" msgstr "Nuotaikos juostos" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Dažniausiai grota" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Prijungimo vieta" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Prijungimo vietos" @@ -3110,7 +3171,7 @@ msgstr "Prijungimo vietos" msgid "Move down" msgstr "Perkelti žemyn" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Perkelti į fonoteką" @@ -3119,7 +3180,7 @@ msgstr "Perkelti į fonoteką" msgid "Move up" msgstr "Perkelti aukštyn" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Muzika" @@ -3127,56 +3188,32 @@ msgstr "Muzika" msgid "Music Library" msgstr "Fonoteka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Nutildyti" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Mano Last.fm fonoteka" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Mano Last.fm Mix radijas" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Mano Last.fm kaiminystė" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Mano Last.fm rekomenduotos stotys" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Mano Mix radijas" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Mano muzika" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mano kaiminystė" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Mano radijo stotis" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mano rekomendacijos" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Veiksmas" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Pavadinimų nustatymai" @@ -3184,23 +3221,19 @@ msgstr "Pavadinimų nustatymai" msgid "Narrow band (NB)" msgstr "Siauras dažnis (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Kaimynai" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Tinklo įgaliotasis serveris" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Nutolęs tinklas" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Naujesni" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Niekada negrota" @@ -3209,21 +3242,21 @@ msgstr "Niekada negrota" msgid "Never start playing" msgstr "Niekada nepradėti groti" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Naujas aplankas" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Naujas grojaraštis" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Naujas išmanusis grojaraštis..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Naujos dainos" @@ -3231,24 +3264,24 @@ msgstr "Naujos dainos" msgid "New tracks will be added automatically." msgstr "Nauji takeliai bus pridėti automatiškai." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Naujausi takeliai" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Toliau" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Kitas takelis" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Kitą savaitę" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Jokio analizatoriaus" @@ -3256,7 +3289,7 @@ msgstr "Jokio analizatoriaus" msgid "No background image" msgstr "Išjungti fono paveikslėlį" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Nėra eksportuotinų viršelių." @@ -3264,7 +3297,7 @@ msgstr "Nėra eksportuotinų viršelių." msgid "No long blocks" msgstr "Jokių ilgų blokų" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nieko nerasta. Išvalykite paieškos laukelį, kad vėl matyti visą sąrašą." @@ -3278,11 +3311,11 @@ msgstr "Jokių trumpų blokų" msgid "None" msgstr "Nėra" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nei viena iš pažymėtų dainų netinka kopijavimui į įrenginį" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normalus" @@ -3290,43 +3323,47 @@ msgstr "Normalus" msgid "Normal block type" msgstr "Normalus bloko tipas" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Negalimas naudojant dinaminį grojaraštį" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Neprisijungus" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nepakanka turinio" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nepakanka gerbėjų" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nepakanka narių" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nepakanka kaimynų" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Neįdiegta" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Neprisijungęs" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Neprijungtas - du kartus spragtelėkite, kad prijungti" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Pranešimo tipas" @@ -3339,36 +3376,41 @@ msgstr "Pranešimai" msgid "Now Playing" msgstr "Dabar leidžiama" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD peržiūra" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3418,11 @@ msgid "" "192.168.x.x" msgstr "Priimti tik klientus iš šio IP ruožo:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Leisti tik ryšius iš vietinio tinklo" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Rodyti tik pirmą" @@ -3388,23 +3430,23 @@ msgstr "Rodyti tik pirmą" msgid "Opacity" msgstr "Permatomumas" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Atverti %1 naršyklėje" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Atverti &audio CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Atverti OPML failą" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Atverti OPML failą..." @@ -3412,30 +3454,35 @@ msgstr "Atverti OPML failą..." msgid "Open device" msgstr "Atverti įrenginį" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Atverti failą..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Atverti Google diske" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Atverti naujame grojaraštyje" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Atverti..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operacija nepavyko" @@ -3455,23 +3502,23 @@ msgstr "Pasirinktys..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Tvarkyti failus" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Tvarkyti failus..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Tvarkomi failai" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Originalios žymės" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Kitos parinktys" @@ -3479,7 +3526,7 @@ msgstr "Kitos parinktys" msgid "Output" msgstr "Išvestis" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Išvesties įrenginys" @@ -3487,15 +3534,11 @@ msgstr "Išvesties įrenginys" msgid "Output options" msgstr "Išvesties parinktys" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Išvesties įskiepis" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Perrašyti viską" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Perrašyti egzistuojančius failus" @@ -3507,15 +3550,15 @@ msgstr "Perrašyti tik mažesnius" msgid "Owner" msgstr "Savininkas" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Apdorojamas Jamendo katalogas" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Vakarėlis" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3567,20 @@ msgstr "Vakarėlis" msgid "Password" msgstr "Slaptažodis" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pristabdyti" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Sulaikyti grojimą" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pristabdyta" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Atlikėjas" @@ -3546,34 +3589,22 @@ msgstr "Atlikėjas" msgid "Pixel" msgstr "Pikselis" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Paprasta juosta" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Groti" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Groti Atlikėją ar Žymę" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Groti Atlikėjoradijo stotį" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Grojimo skaitiklis" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Groti savitą radijo stotį..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Groti jei sustabdyta, Pristabdyti jei grojama" @@ -3582,45 +3613,42 @@ msgstr "Groti jei sustabdyta, Pristabdyti jei grojama" msgid "Play if there is nothing already playing" msgstr "Groti jei jau kas nors negroja" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Groti pažymėtą radijo stotį..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Groti takelį grojaraštyje" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Groti/Pristabdyti" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Grojimas" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Leistuvo parinktys" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Grojaraštis" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Grojaraštis baigtas" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Grojaraščio parinktys" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Grojaraščio tipas" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Grojaraščiai" @@ -3632,23 +3660,23 @@ msgstr "Prašome uždaryti Jūsų naršyklę, kad grįžti į Clementine." msgid "Plugin status:" msgstr "Plėtinio būklė:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Populiarios dainos" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Populiarios mėnesio dainos" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Populiarios šiandienos dainos" @@ -3657,22 +3685,23 @@ msgid "Popup duration" msgstr "Pranešino rodymo trukmė" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Prievadas" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Sustiprinti" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Nustatymai" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Nustatymai..." @@ -3708,7 +3737,7 @@ msgstr "Spauskite mygtukų kombinaciją panaudojimui" msgid "Press a key" msgstr "Paspauskite klavišą" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Spauskite mygtukų kombinaciją panaudojimui %1..." @@ -3719,20 +3748,20 @@ msgstr "Gražus OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Peržiūra" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Atgal" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Ankstesnis takelis" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Išvesti versijos informaciją" @@ -3740,21 +3769,25 @@ msgstr "Išvesti versijos informaciją" msgid "Profile" msgstr "Profilis" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progresas" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Spauskite Wii pulto mygtuką" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Dėti dainas atsitiktine tvarka" @@ -3762,85 +3795,95 @@ msgstr "Dėti dainas atsitiktine tvarka" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kokybė" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Pateikiama užklausa įrenginiui..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Eilės tvarkyklė" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "į eilę pažymėtus takelius" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "į eilę takelį" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radijas (vienodas garsumas visiems takeliams)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radijai" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Lietus" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Atsitiktinis vaizdinys" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Įvertinti šią dainą 0 žvaigždžių" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Įvertinti šią dainą 1 žvaigžde" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Įvertinti šią dainą 2 žvaigždėmis" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Įvertinti šią dainą 3 žvaigždėmis" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Įvertinti šią dainą 4 žvaigždėmis" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Įvertinti šią dainą 5 žvaigždėmis" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Įvertinimas" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Tikrai atšaukti?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Pasiekta nukreipimo riba, patikrinkite serverio konfigūraciją." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Atnaujinti" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Atnaujinti katalogus" @@ -3848,19 +3891,15 @@ msgstr "Atnaujinti katalogus" msgid "Refresh channels" msgstr "Atnaujinti kanalus" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Atnaujinti draugų sąrašą" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Atnaujinti stočių sąrašą" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Atnaujinti srautus" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Regis" @@ -3872,8 +3911,8 @@ msgstr "Prisiminti Wii pulto pasukimą" msgid "Remember from last time" msgstr "Prisiminti paskutinio karto būseną" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Pašalinti" @@ -3881,7 +3920,7 @@ msgstr "Pašalinti" msgid "Remove action" msgstr "Pašalinti veiksmą" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Pašalinti dublikatus iš grojaraščio" @@ -3889,73 +3928,77 @@ msgstr "Pašalinti dublikatus iš grojaraščio" msgid "Remove folder" msgstr "Pašalinti aplanką" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Pašalinti iš Mano muzika" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Pašalinti iš mėgstamiausių" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Ištrinti iš grojaraščio" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Pašalinti grojaraštį" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Pašalinti grojaraščius" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Šalinamos dainos iš Mano muzika" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Šalinamos dainos iš mėgstamiausių" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Pervardinti %1 grojaraštį" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Pervardinti Grooveshark grojaraštį" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Pervadinti grojaraštį" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Pervadinti grojaraštį..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Pernumeruoti takelius šia tvarka..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Kartoti" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Kartoti albumą" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Kartoti grojaraštį" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Kartoti takelį" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Pakeisti esamą griojaraštį" @@ -3964,15 +4007,15 @@ msgstr "Pakeisti esamą griojaraštį" msgid "Replace the playlist" msgstr "Pakeisti grojaraštį" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Pakeisti tarpus pabraukimo simboliais" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Garsumo suvienodinimas" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Garsumo suvienodinimo veiksena" @@ -3980,24 +4023,24 @@ msgstr "Garsumo suvienodinimo veiksena" msgid "Repopulate" msgstr "Užpildyti naujai" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Reikalauti atpažinimo kodo" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Atstatyti" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Atstatyti perklausų skaičių" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Paleisti takelį, arba groti ankstesnį per 8 sekundes po paleidimo." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Naudoti tik SCII simbolius" @@ -4005,15 +4048,15 @@ msgstr "Naudoti tik SCII simbolius" msgid "Resume playback on start" msgstr "Paleidžiant pratęsti atkūrimą" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Gaunamos Grooveshark Mano muzikos dainos" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Gaunamos Grooveshark mėgstamiausios dainos" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Gaunami Grooveshark grojaraščiai" @@ -4033,11 +4076,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rokas" @@ -4049,25 +4092,25 @@ msgstr "Vykdyti" msgid "SOCKS proxy" msgstr "SOCKS įgaliotasis serveris" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "SSL komunikacijos klaida, patikrinkite serverio konfigūraciją. SSLv3 nustatymas žemiau gali padėti išspręsti kai kurias problemas." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Saugiai pašalinti įrenginį" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Saugiai pašalinti įrenginį po kopijavimo" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Išrankos dažnis" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Išrankosdažnis" @@ -4075,27 +4118,33 @@ msgstr "Išrankosdažnis" msgid "Save .mood files in your music library" msgstr "Saugoti .mood failus Jūsų fonotekoje" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Išsaugoti albumo viršelį" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Išsaugoti albumo viršelį į diską..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Išsaugoti paveikslėlį" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Įrašyti grojaraštį" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Įrašyti grojaraštį..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Išsaugoti šabloną" @@ -4111,11 +4160,11 @@ msgstr "Jei įmanoma, statistiką saugoti failo žymėse" msgid "Save this stream in the Internet tab" msgstr "Išsaugoti šį srautą interneto kortelėje" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Dainų statistika saugoma dainų failuose" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Išsaugomi takeliai" @@ -4127,7 +4176,7 @@ msgstr "Besikeičiantis kodavimo dažnio profilis (SSR)" msgid "Scale size" msgstr "Keisti dydį" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Įvertinimas" @@ -4135,34 +4184,38 @@ msgstr "Įvertinimas" msgid "Scrobble tracks that I listen to" msgstr "Pateikti klausomų takelių informaciją" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Ieškoti" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Ieškoti Icecast stočių" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Ieškoti Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Ieškoti Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Ieškoti subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Ieškoti albumo viršelių..." @@ -4182,21 +4235,21 @@ msgstr "Ieškoti iTunes" msgid "Search mode" msgstr "Paieškos veiksena" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Paieškos parinktys" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Paieškos rezultatai" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Paieškos terminai" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Ieškoti Grooveshark" @@ -4204,27 +4257,27 @@ msgstr "Ieškoti Grooveshark" msgid "Second level" msgstr "Antras lygis" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Sukti atgal" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Sukti į priekį" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Rasti dabar grojamą takelį pagal santykinį kiekį" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Rasti dabar grojamą takelį į absoliučiąją poziciją" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Pažymėti visus" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "N" @@ -4232,7 +4285,7 @@ msgstr "N" msgid "Select background color:" msgstr "Pasirinkite fono spalvą:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Pasirinkti fono paveikslėlį" @@ -4248,7 +4301,7 @@ msgstr "Pasirinkite priekinio plano spalvą:" msgid "Select visualizations" msgstr "Pasirinkti vaizdinius" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Parinkti vaizdinius" @@ -4256,7 +4309,7 @@ msgstr "Parinkti vaizdinius" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Serijos numeris" @@ -4268,51 +4321,51 @@ msgstr "Serverio URL" msgid "Server details" msgstr "Serverio detalės" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Servisas nepasiekiamas" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Nustatyti %1 į \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Nustatyti garsumą iki procentų" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Nustatyti vertę visiems pažymėtiems takeliams..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Nustatymai" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Kombinacija" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Kombinacija veiksmui: %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Kombinacija veiksmui %1 jau egzistuoja" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Rodyti" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Rodyti OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Švytėjimo efektas ant dabar grojamo takelio" @@ -4340,15 +4393,15 @@ msgstr "Rodyti iššokantį langą iš sistemos dėklo" msgid "Show a pretty OSD" msgstr "Rodyti gražų OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Rodyti virš būsenos juostos" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Rodyti visas dainas" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Rodyti visas dainas" @@ -4360,32 +4413,36 @@ msgstr "Rodyti albumo viršelius fonotekoje" msgid "Show dividers" msgstr "Rodyti skirtukus" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Rodyti viso dydžio..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Rodyti failų naršyklėje..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Rodyti įvairiuose atlikėjuose" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Rodyti nuotaikos juostą" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Rodyti tik duplikatus" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Rodyti tik be žymių" @@ -4394,8 +4451,8 @@ msgid "Show search suggestions" msgstr "Rodyti paieškos pasiūlymus" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Rodyti \"meilė\" ir \"blokavimas\" mygtukus" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4466,27 @@ msgstr "Rodyti piktogramą sistemos dėkle" msgid "Show which sources are enabled and disabled" msgstr "Rodyti kurie šaltiniai yra įjungti ar išjungti" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Rodyti/Slėpti" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Maišyti" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Maišyti albumus" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Maišyti viską" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Maišyti grojaraštį" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Maišyti takelius šiame albume" @@ -4445,7 +4502,7 @@ msgstr "Atsijungti" msgid "Signing in..." msgstr "Jungiamasi..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Panašūs atlikėjai" @@ -4457,43 +4514,51 @@ msgstr "Dydis" msgid "Size:" msgstr "Dydis:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Ankstesnis kūrinys grojaraštyje" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Praleisti skaičiavimą" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Kitas grojaraščio kūrinys" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Mažas albumo viršelio paveikslėlis" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Maža juosta" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Išmanusis grojaraštis" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Išmanūs grojaraščiai" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Rami" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Ramus rokas" @@ -4501,11 +4566,11 @@ msgstr "Ramus rokas" msgid "Song Information" msgstr "Dainos informacija" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Dainos info" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonograma" @@ -4525,15 +4590,23 @@ msgstr "Rikiuoti pagal žanrą (pagal populiarumą)" msgid "Sort by station name" msgstr "Rikiuoti stoties pavadinimą" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Rikiuoti dainas pagal" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Rikiavimas" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Šaltinis" @@ -4549,7 +4622,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify prisijungimo klaida" @@ -4557,7 +4630,7 @@ msgstr "Spotify prisijungimo klaida" msgid "Spotify plugin" msgstr "Spotify plėtinys" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify plėtinys neįdiegtas" @@ -4565,77 +4638,77 @@ msgstr "Spotify plėtinys neįdiegtas" msgid "Standard" msgstr "Standartinis" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Su žvaigždute" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Pradėti grajaraštį nuo dabar grojančio" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Perkoduoti" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Pradėkite rašyti paieškos laukelyje žemiau, kad užpildyti šį paieškos rezultatų sąrašą" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Paleidžiama %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Pradedama..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stotys" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stabdyti" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Stabdyti po" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Sustabdyti po šio takelio" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Stabdyti grojimą" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Sustoti po grojamo takelio" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Sustabdyta" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Srautas" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4718,7 @@ msgstr "Po 30 dienų bandomojo laikotarpio, transliuoti iš subsonic serverio re msgid "Streaming membership" msgstr "Transliavimo narystė" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Prenumeruoti grojaraščiai" @@ -4653,7 +4726,7 @@ msgstr "Prenumeruoti grojaraščiai" msgid "Subscribers" msgstr "Prenumeratoriai" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4661,12 +4734,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Pavyko!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Sėkmingai įrašyta %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Siūlomos žymės" @@ -4675,13 +4748,13 @@ msgstr "Siūlomos žymės" msgid "Summary" msgstr "Santrauka" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Super aukšta (%1 kps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super aukšta (2048x2048)" @@ -4693,43 +4766,35 @@ msgstr "Palaikomi formatai" msgid "Synchronize statistics to files now" msgstr "Sinchronizuoti statistiką į failus dabar" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Atnaujinama Spotify dėžutė" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Atnaujinama Spotify grojaraštis" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Atnaujinama Spotify pažymėti kūriniai" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Sistemos spalvos" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Kortelės viršuje" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Žyma" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Žymių gavėjas" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Žymėti radijas" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Numatomas bitrate" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4737,11 +4802,11 @@ msgstr "Techno" msgid "Text options" msgstr "Teksto nustatymai" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Dėkojame" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Komanda \"%1\" negalėjo būti paleista." @@ -4750,17 +4815,12 @@ msgstr "Komanda \"%1\" negalėjo būti paleista." msgid "The album cover of the currently playing song" msgstr "Viršelis iš šiuo metu atliekamos dainos albumo" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Aplankas %1 yra netinkamas" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Grojaraštis '%1' buvo tuščias arba negalėjo būti įkeltas." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Antroji reikšmė turi būti didesnė nei pirmoji!" @@ -4768,40 +4828,40 @@ msgstr "Antroji reikšmė turi būti didesnė nei pirmoji!" msgid "The site you requested does not exist!" msgstr "Puslapis, kurio prašėte neegzistuoja" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Puslapis, kurio prašėte nėra paveikslas" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Bandomasis subsonic laikotarpis baigėsi. Paaukokite ir gaukite licenciją. Norėdami sužinoti daugiau aplankykite subsonic.org." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Clementine versija, į kurią atsinaujinote reikalauja pilno fonotekos perskanavimo dėl savybių išdėstytų žemiau:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Čia yra kitų dainų iš šio albumo" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Problema jungiantis su gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Įvyko klaida gaunant meta duomenis iš Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Problema apdorojant iTunes parduotuvės atsakymą" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4873,13 @@ msgid "" "deleted:" msgstr "Iškilo problemų trinant dainas. Šie failai negalėjo būti ištrinti:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Šie failai bus ištrinti iš įrenginio, ar tikrai norite tęsti?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4899,13 @@ msgstr "Šie nustatymai yra naudojimo \"Muzikos perkodavimas\" lange ir tada, ka msgid "Third level" msgstr "Trečias lygis" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Šis veiksmas sukurs duomenų bazę, kuri gali būti 150 MB dydžio.\nAr vistiek norite tęsti?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Albumas yra negalimas prašomu formatu" @@ -4859,11 +4919,11 @@ msgstr "Įrenginys privalo būti prijungtas ir atidarytas, kad Clementine matyt msgid "This device supports the following file formats:" msgstr "Šis įrenginys palaiko šiuos formatus:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Šis įrenginys neveiks tinkamai" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Tai yra MTP įrenginys, bet jūs sukompiliavę Clementine be libmtp palaikymo." @@ -4872,7 +4932,7 @@ msgstr "Tai yra MTP įrenginys, bet jūs sukompiliavę Clementine be libmtp pala msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Tai yra iPod įrenginys, bet jūs sukompiliavę Clementine be libgpod palaikymo." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4942,33 @@ msgstr "Tai pirmas kartas kai prijungėte šį įrenginį. Clementine dabar nusk msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Ši pasirinktis gali būti pakeista „Elgsena“ dalyje" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Šis srautas yra tik apmokamiems prenumeratoriams" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Šio tipo įrenginys yra nepalaikomas: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Pavadinimas" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Kad paleisti Grooveshark radiją, pirma turite paklausyti kelių Grooveshark dainų" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Šiandien" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Išjungti gražųjį OSD" @@ -4916,27 +4976,27 @@ msgstr "Išjungti gražųjį OSD" msgid "Toggle fullscreen" msgstr "Visame ekrane" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Perjungti eilės statusą" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Perjungti „scrobbling“ būseną" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Keisti ekrano pranešimų (OSD) matomumą" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Rytoj" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Per daug peradresavimų." -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Top takeliai" @@ -4944,21 +5004,25 @@ msgstr "Top takeliai" msgid "Total albums:" msgstr "Viso albumų:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Viso baitų perkelta" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Viso tinklo užklausų padaryta" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Takelis" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Perkoduoti muziką" @@ -4970,7 +5034,7 @@ msgstr "Perkodavimo logas" msgid "Transcoding" msgstr "Perkoduojama" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Perkoduojami %1 failai naudojant %2 gijų" @@ -4979,11 +5043,11 @@ msgstr "Perkoduojami %1 failai naudojant %2 gijų" msgid "Transcoding options" msgstr "Perkodavimo pasirinktys" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4991,72 +5055,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Išjungti" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One slaptažodis" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One naudotojo vardas" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra platus dažnis (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Nepavyko atsiųsti %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Nežinomas" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Nežinomas turinio tipas" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Nežinoma klaida" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Pašalinti viršelį" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Nebeprenumeruoti" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Artėjantys koncertai" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Atnaujinti Grooveshark grojaraštį" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Atnaujinti visas garso prenumeratas" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Atnaujinti pakeistus fonotekos katalogus" @@ -5064,7 +5128,7 @@ msgstr "Atnaujinti pakeistus fonotekos katalogus" msgid "Update the library when Clementine starts" msgstr "Atnaujinti fonoteką paleidžiant Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Atnaujinti šią garso prenumeratą" @@ -5072,21 +5136,21 @@ msgstr "Atnaujinti šią garso prenumeratą" msgid "Updating" msgstr "Atnaujinama" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Atnaujinama %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Atnaujinama %1..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Atnaujinama biblioteka" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Naudojimas" @@ -5094,11 +5158,11 @@ msgstr "Naudojimas" msgid "Use Album Artist tag when available" msgstr "Naudoti albumo artisto žymę, jei galima" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Naudoti Gnome klavišų kombinacijas" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Naudoti garsumo suvienodinimo meta duodeninis jei tai yra prieinama" @@ -5118,7 +5182,7 @@ msgstr "Naudoti pasirinktų spalvų rinkinį" msgid "Use a custom message for notifications" msgstr "Naudoti savo žinutę pranešimams" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Naudoti tinklo nuotolinį valdymą" @@ -5158,20 +5222,20 @@ msgstr "Naudoti sistemos tarpinio serverio nustatymus" msgid "Use volume normalisation" msgstr "Naudoti garso normalizavimą" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Panaudota" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Naudotojas %1 neturi Grooveshark Bet kur paskyros" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Naudotojo sąsaja" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5257,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Kintamas bitrate" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Įvairūs atlikėjai" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versija %1" @@ -5211,7 +5275,7 @@ msgstr "Rodymas" msgid "Visualization mode" msgstr "Vaizdinio veiksena" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Vaizdiniai" @@ -5219,11 +5283,15 @@ msgstr "Vaizdiniai" msgid "Visualizations Settings" msgstr "Vaizdinio nustatymai" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Balso aktyvumo aptikimas" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Garsumas %1%" @@ -5241,11 +5309,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Perspėti mane, kai uždaroma grijaraščio kortelė." -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5321,7 @@ msgstr "Wav" msgid "Website" msgstr "Svetainė" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Savaitės" @@ -5279,32 +5347,32 @@ msgstr "Kodėl nepabandžius..." msgid "Wide band (WB)" msgstr "Platus dažnis (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii pultas %1: aktyvuotas" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii pultas %1: prijungtas" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii pultas %1: kritinė baterija (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii pultas %1: dezaktyvuotas" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii pultas %1: atjungtas" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii pultas %1: išsekusi baterija (%2%)" @@ -5325,7 +5393,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media Audio" @@ -5333,25 +5401,25 @@ msgstr "Windows Media Audio" msgid "Without cover:" msgstr "Be viršelių:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Ar norėtumėte perkelti kitas dainas į šio atlikėjo albumą?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Ar norite paleisti pilną perskenavimą dabar?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Rašyti visą dainų statistiką į dainų failus" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Netinkamas naudotojo vardas ar slaptažodis." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5431,11 @@ msgstr "Metai" msgid "Year - Album" msgstr "Metai - Albumas" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Metai" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Vakar" @@ -5375,13 +5443,13 @@ msgstr "Vakar" msgid "You are about to download the following albums" msgstr "Jūs ketinate atsisiųsti šiuos albumus" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Jūs ruošiatės pašalinti %1 grojaraščius iš savo mėgstamiausių, ar esate tikri?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5459,12 @@ msgstr "Jūs ketinate pašalinti grojaraštį, kuris nėra jūsų mėgstamuose g msgid "You are not signed in." msgstr "Jūs nesate prisijungęs." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Jūs esate prisijungęs kaip %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Jūs esate prisijungęs." @@ -5404,13 +5472,13 @@ msgstr "Jūs esate prisijungęs." msgid "You can change the way the songs in the library are organised." msgstr "Galite nustatyti kaip organizuoti dainas fonotekoje" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Jūs galite klausytis nemokamai be paskyros, bet Premium nariai gali klausyti aukštesnės kokybės srautų be reklamų." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5488,6 @@ msgstr "Galite klausyti Magnatune dainų nemokamai be abonento. Nupirkta naryst msgid "You can listen to background streams at the same time as other music." msgstr "Galite klausyti foninių garsų kartu su kita muzika." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Galite teikti informaciją apie klausomus takelius į Last.fm nemokamai, bet tik apmokami prenumeratoriai gali transliuoti Last.fm radiją per Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Galite naudoti Wii pultą nuotoliniam Clementine valdymui. Daugiau informacijos apie Wii pulto panaudojimą galite rasti Clementine wiki puslapyje.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Jūs neturite Grooveshark Bet kur paskyros." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Jūs neturite Spotify Premium paskyros." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Jūs neturite aktyvios prenumeratos" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Jūs atsijungėte iš Spotify, prašome įvesti savo slaptažodį nustatymų dialogo lange dar kartą. " -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Jūs atsijungėte iš Spotify, prašome įvesti savo slaptažodį dar kartą." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Jūs mylite šį takelį" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5546,11 @@ msgstr "Jums reikia paleisti Sistemos nustatymus ir įjungti \"\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" +"Last-Translator: Clementine Buildbot \n" "Language-Team: Latvian (http://www.transifex.com/projects/p/clementine/language/lv/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: lv\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +44,9 @@ msgstr "dienām" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -59,11 +59,16 @@ msgstr " punkti" msgid " seconds" msgstr " sekundes" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " dziesmas" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albumi" @@ -73,12 +78,12 @@ msgstr "%1 albumi" msgid "%1 days" msgstr "%1 dienas" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dienas atpakaļ" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -88,48 +93,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 dziesmu listes (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 izvēlēti no" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 dziesma" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 dziesmas" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "atrastas %1 dziesmas" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "atrastas %1 dziesmas (redzamas %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 dziesmas" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev modulis" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 citu klausītāju" @@ -143,18 +148,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n neizdevās" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n pabeigti" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n atlicis" @@ -166,24 +174,24 @@ msgstr "&līdzināt tekstu" msgid "&Center" msgstr "&Centrs" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Izvēles" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Ekstras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Palīdzība" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Paslēpt %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "%Paslēpt..." @@ -191,23 +199,23 @@ msgstr "%Paslēpt..." msgid "&Left" msgstr "Pa &kreisi" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Mūzika" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nav" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Dziesmu liste" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Iziet" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Atkārtošanas režīms" @@ -215,23 +223,23 @@ msgstr "Atkārtošanas režīms" msgid "&Right" msgstr "&Pa labi" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Jaukšanas režīms" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&mainīt stabu lielumu" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Rīki" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(dažādām dziesmām atšķiras)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... un visiem Amarok atbalstītājiem" @@ -251,14 +259,10 @@ msgstr "0px" msgid "1 day" msgstr "1 diena" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 dziesma" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +272,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 nejaušas dziesmas" @@ -276,12 +280,6 @@ msgstr "50 nejaušas dziesmas" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +290,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +309,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Elementi sākas ar %, piemēram: %artist %album %title

\n\n

Ja jūs teksta daļas iekļausiet figūriekavās, tās tiks paslēptas, ja elementi būs tukši.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Nepieciešams Grooveshark Anywhere profils" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Nepieciešams Spotify Premium konts." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Smart Playlist ir aktīva dziesmu liste no jūsu bibliotēkas. Ir vairāku veidu Smart Playlist, kas piedāvā dažādus dziesmu izvēles veidus." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Dziesma tiks iekļauta dziesmu listē, ja tā atbildīs šiem nosacījumiem." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -351,36 +360,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "Hypnotoad krupis no Futurama" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Par %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Par Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Par Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Konta informācija" @@ -392,11 +400,15 @@ msgstr "" msgid "Action" msgstr "Darbība" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktivizēt/deaktivizēt Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Pievienot podraidi" @@ -412,39 +424,39 @@ msgstr "" msgid "Add action" msgstr "Pievienot darbību" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Pievienot citu straumi..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Pievienot mapi..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Pievienot datni" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Pievienot failu..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Pievienot failus pārkodēšanai" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Pievienot mapi" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Pievienot mapi..." @@ -456,11 +468,11 @@ msgstr "Pievienot jaunu mapi..." msgid "Add podcast" msgstr "Pievienot podraidi" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Pievienot podraidi..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Pievienot meklēšanas vienumu" @@ -524,6 +536,10 @@ msgstr "" msgid "Add song title tag" msgstr "Pievienot dziesmas nosaukumu birku" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Pievienot dziesmas numura birku" @@ -532,22 +548,34 @@ msgstr "Pievienot dziesmas numura birku" msgid "Add song year tag" msgstr "Pievienot dziesmas gada birku" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Pievienot straumi..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Pievienot Grooveshark favorītiem" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Pievienot Grooveshark dziesmu listēm" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Pievienot citai dziesmu listei" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Pievienot dziesmu listei" @@ -556,6 +584,10 @@ msgstr "Pievienot dziesmu listei" msgid "Add to the queue" msgstr "Pievienot rindai" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Pievienot wiimotedev darbību" @@ -585,15 +617,15 @@ msgstr "Pievienots šodien" msgid "Added within three months" msgstr "Pievienots pēdējos 3 mēnešos" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Pievienot dziesmu Manai Mūzikai" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Advancēta grupēšana..." @@ -601,12 +633,12 @@ msgstr "Advancēta grupēšana..." msgid "After " msgstr "Pēc" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Pēc kopēšanas..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +646,11 @@ msgstr "Pēc kopēšanas..." msgid "Album" msgstr "Albums" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Albums (ideāls skaļums visiem celiņiem)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +660,36 @@ msgstr "Albuma izpildītājs" msgid "Album cover" msgstr "Albuma vāks" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Albuma info iekš jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumi ar vāka attēlu" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumi bez vāka attēla" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Visi faili (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Hypnotoad krupis no Futurama!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Visi albumi" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Visi izpildītāji" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Visi faili (*)" @@ -665,19 +698,19 @@ msgstr "Visi faili (*)" msgid "All playlists (%1)" msgstr "Visas dziesmu listes (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Visi tulkotāji" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Visas dziesmas" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Atļaut lejupielādes" @@ -702,30 +735,30 @@ msgstr "Vienmēr rādīt galveno logu" msgid "Always start playing" msgstr "Vienmēr sākt atskaņošanu" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Lai lietotu Spotify, nepieciešams papildus spraudnis. Vai jūs vēlaties to lejupielādēt un instalēt?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Kļūda ielādējot iTunes datubāzi" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Kļūda ievadot matadatus '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Un:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Dusmīgs" @@ -734,13 +767,13 @@ msgstr "Dusmīgs" msgid "Appearance" msgstr "Izskats" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Pievienot failus/saites dziesmu listei" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Papildināt pašreizējo dziesmu listi" @@ -748,52 +781,47 @@ msgstr "Papildināt pašreizējo dziesmu listi" msgid "Append to the playlist" msgstr "Papildināt dziesmu listi" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Saspiest, lai izvairītos no izgriešanas" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Vai esat pārliecināts, ka vēlaties izdzēst \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Vai esat drošs, ka vēlaties dzēst šo atskaņošanas sarakstu?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Vai esat pārliecināt, ka vēlaties no jauna uzsākt dziesmas statistiku?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Izpildītājs" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Izpildītāja info" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Izpildītāja radio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Izpildītāja birkas" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Izpildītājā iciāļi" @@ -801,9 +829,13 @@ msgstr "Izpildītājā iciāļi" msgid "Audio format" msgstr "Audio formāts" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentifikācija neizdevās" @@ -811,7 +843,7 @@ msgstr "Autentifikācija neizdevās" msgid "Author" msgstr "Autors" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autori" @@ -827,7 +859,7 @@ msgstr "Automātiskā atjaunināšana" msgid "Automatically open single categories in the library tree" msgstr "Meklējot automātiski atvērt kategorijas biblotēkas sarakstā" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Pieejams" @@ -835,15 +867,15 @@ msgstr "Pieejams" msgid "Average bitrate" msgstr "Vidējais bitu pārraides ātrums" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Vidējais attēlu izmērs" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC podraides" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Sitieni minūtē" @@ -864,7 +896,7 @@ msgstr "Fona attēls" msgid "Background opacity" msgstr "Fona caurlaidība" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -872,11 +904,7 @@ msgstr "" msgid "Balance" msgstr "Balanss" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Bloķēt" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Gabalveida analizators" @@ -896,18 +924,17 @@ msgstr "Uzvedība" msgid "Best" msgstr "Labākais" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biogrāfija no %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitreits" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +942,12 @@ msgstr "Bitreits" msgid "Bitrate" msgstr "Bitreits" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Bloku analizators" @@ -931,7 +963,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -945,11 +977,11 @@ msgstr "Box" msgid "Browse..." msgstr "Pārlūkot..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -961,43 +993,66 @@ msgstr "" msgid "Buttons" msgstr "Pogas" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Atcelt" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Mainīt vāka attēlu" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Mainīt fontu izmēru..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Mainīt atkārtošanas režīmu" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Mainīt īsceļu..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Mainīt jaukšanas režīmu" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Mainīt valodu" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1062,19 @@ msgstr "" msgid "Check for new episodes" msgstr "BBC podraides" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Pārbaudīt atjauninājumus..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Izvēlieties nosaukumu gudrajai dziesmu listei" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Izvēlēties automātiski" @@ -1031,11 +1090,11 @@ msgstr "Izvēlēties burtrakstu..." msgid "Choose from the list" msgstr "Izvēlēties no saraksta" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Izvēlies, kādā veidā kārtot dziesmu listi un no cik daudz dziesmām tā sastāvēs." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Izvēlieties podraides lejuplādes direktoriju" @@ -1044,7 +1103,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Izvēlies mājas lapas, ko izmantot dziesmu vārdu meklēšanai." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasisks" @@ -1052,17 +1111,17 @@ msgstr "Klasisks" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Attīrīt" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Attīrīt dziesmu listi" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1075,8 +1134,8 @@ msgstr "Clementine Kļūda" msgid "Clementine Orange" msgstr "Oranžs Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine vizualizācija" @@ -1098,8 +1157,8 @@ msgstr "Clementine var atskaņot mūziku no jūsu Dropbox konta" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1113,20 +1172,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine nespēj ielādēt projectM vizualizācijas. Pārbaudiet, vai Clementine ir pareizi uzstādīts." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine attēlu atveidotājs" @@ -1138,11 +1190,11 @@ msgstr "Clementine nespēja atrast rezultātus šim failam" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Spiediet te lai pievienotu mūziku" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1204,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Spiediet, lai pārslēgtos no atlikušā uz pilno garumu" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1222,19 @@ msgstr "Aizvērt" msgid "Close playlist" msgstr "Aizvērt dziesmu listi" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Aizvērt vizualizāciju" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Aizverot programmu, tiks atcelta failu lejupielāde." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Aizverot programu, tiks apturēta albūmu vāku meklēšana." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klubu mūzika" @@ -1187,73 +1242,78 @@ msgstr "Klubu mūzika" msgid "Colors" msgstr "Krāsas" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Piezīmes" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Noformēt tagus automātiski" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Noformēt tagus automātiski..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Komponists" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Konfigurēt %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Konfigurēt Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Konfigurēt Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Konfigurēt Magnatune" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Konfigurēt īsceļus" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Konfigurēt Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Konfigurēju Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Konfigurēt bibliotēku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Konfigurēt podraides..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Konfigurēt" @@ -1261,11 +1321,11 @@ msgstr "Konfigurēt" msgid "Connect Wii Remotes using active/deactive action" msgstr "Pieslēdziet Wii tālvadību izmantojot aktivizēt/deaktivizēt" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Pieslēgt ierīci" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Pieslēdzos Spotify" @@ -1275,12 +1335,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsole" @@ -1296,17 +1360,21 @@ msgstr "Konvertēt visu mūziku" msgid "Convert any music that the device can't play" msgstr "Konvertēt mūziku, ko ierīce nespēj atskaņot" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopēt starpliktuvē" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopēt uz ierīci..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopēt uz bibliotēku..." @@ -1314,156 +1382,152 @@ msgstr "Kopēt uz bibliotēku..." msgid "Copyright" msgstr "Autortiesības" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nespēj izveidot GStreamer elementu \"%1\" - pārbaudiet, vai ir uzstādīti visi nepieciešami GStreamer spraudņi" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nevar atrast jaucēju priekš %1, pārbaudiet vai jums ir uzstādīti pareizi GStreamer spraudņi" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Nevar atrast kodeku priekš %1, pārbaudiet vai jums ir uzstādīti pareizi GStreamer spraudņi" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Nevar atvērt last.fm radio staciju" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Nevar atvērt izejas failu %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Vāka attēlu pārvaldnieks" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Vāka attēls no iekļautā attēla" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Vāka attēls ielādēts automātiski no %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Vāka attēls manuāli noņemts" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Vāka attēls nav uzstādīts" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Vāka attēls uzstādīts no %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Izveidot jaunu Groovershark atskaņošanas sarakstu" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Izmantot laidenu pāreju, kad dziesmas pārslēdzas automātiski" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Izmantot laidenu pāreju, kad dziesmas pārslēdz lietotājs" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1535,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Pielāgots" @@ -1483,54 +1547,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Pielāgots radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Pielāgots..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus ceļš" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Izveides datums" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Pārveides datums" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dienas" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Nok&lusētais" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Samazināt skaļumu par 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Samazināt skaļumu par %" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Samazināt skaļumu" @@ -1538,6 +1598,11 @@ msgstr "Samazināt skaļumu" msgid "Default background image" msgstr "Noklusējuma fona attēls" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Noklusētie" @@ -1546,30 +1611,30 @@ msgstr "Noklusētie" msgid "Delay between visualizations" msgstr "Aizture starp vizualizācijām" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Dzēst" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Izdzēst Grooveshark atskaņošanas sarakstu" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Dzēst lejuplādētos datus" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Dzēst failus" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Dzēst no ierīces..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Dzēst no diska..." @@ -1577,31 +1642,31 @@ msgstr "Dzēst no diska..." msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Dzēst uzstādījumu" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Dzēst Smart Playlist" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Dzēst oriģinālos failus" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Dzēš failus" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Izņemt dziesmas no rindas" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Izņemt dziesmu no rindas" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Galamērķis" @@ -1610,7 +1675,7 @@ msgstr "Galamērķis" msgid "Details..." msgstr "Detaļas..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Ierīce" @@ -1622,15 +1687,15 @@ msgstr "Ierīces īpašības" msgid "Device name" msgstr "Ierīces nosaukums" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Ierīces īpašības..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Ierīces" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1667,12 +1732,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Atslēgts" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disks" @@ -1682,15 +1752,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Displeja opcijas" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Rādīt displeju-uz-ekrāna" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Veikt pilnu bibliotēkas skenēšanu" @@ -1702,27 +1772,27 @@ msgstr "Nekonvertēt mūziku" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Neatkārtot" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Nerādīt pie dažādiem izpildītājiem" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Nejaukt" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Neapstāties" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Ziedot" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dubultklikšķis lai atvērtu" @@ -1730,12 +1800,13 @@ msgstr "Dubultklikšķis lai atvērtu" msgid "Double clicking a song will..." msgstr "Dubultklikšķis uz dziesmas..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Lejuplādēt %n sērijas" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Lejupielādēt mapi" @@ -1751,7 +1822,7 @@ msgstr "Lejupielādēt dalību" msgid "Download new episodes automatically" msgstr "Automātiski lejuplādēt jaunās sērijas" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1759,15 +1830,15 @@ msgstr "" msgid "Download the Android app" msgstr "Lejupielādēt Android aplikāciju" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Lejupielādēt šo albumu" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Lejupielādēt šo albumu..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Lejuplādēt šo sēriju" @@ -1775,7 +1846,7 @@ msgstr "Lejuplādēt šo sēriju" msgid "Download..." msgstr "Lejupielādēt..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Lejuplādē (%1%)..." @@ -1784,23 +1855,23 @@ msgstr "Lejuplādē (%1%)..." msgid "Downloading Icecast directory" msgstr "Lejupielādē Icecast mapi" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Lejupielādē Jamendo katalogu" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Lejupielādē Magnatude katalogu" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Lejupielādē Spotify spraudni" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Lejupielādē metadatus" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Velciet, lai pārpozicionētu" @@ -1820,20 +1891,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Dinamiskais režīms ieslēgts" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dinamisks nejaušs mikss" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Rediģēt gudro dziesmu listi..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Rediģēt birku" @@ -1845,16 +1916,16 @@ msgstr "Rediģēt birkas" msgid "Edit track information" msgstr "Rediģēt dziesmas informāciju" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Rediģēt dziesmas informāciju..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Rediģēt dziesmu informāciju..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Rediģēt..." @@ -1862,6 +1933,10 @@ msgstr "Rediģēt..." msgid "Enable Wii Remote support" msgstr "Atļaut Wii tālvadības atbalstu" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Ieslēgt ekvalaizeru" @@ -1876,7 +1951,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Ieslēgt/izslēgt Last.fm skroblēšanu" @@ -1904,15 +1979,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Ievadiet jaunu nosakumu šai dziesmu listei" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Ievadiet izpildītāju vai birku lai sāktu klausīties Last.fm radio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1996,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Ievadiet meklējamo tekstu šeit" @@ -1935,11 +2005,11 @@ msgstr "Ievadiet meklējamo tekstu šeit" msgid "Enter the URL of an internet radio stream:" msgstr "Ievadiet interneta radio straumes adresi (URL):" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1947,21 +2017,22 @@ msgstr "" msgid "Entire collection" msgstr "Visa kolekcija" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekvalaizers" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Vienāds ar --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Vienāds ar --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Kļūda" @@ -1969,38 +2040,38 @@ msgstr "Kļūda" msgid "Error connecting MTP device" msgstr "Kļūda pieslēdzoties MTP ierīcei" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Kļūda kopējot dziesmas" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Kļūda dzēšot dziesmas" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Kļūda lejupielādējot Spotify spraudni" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Kļūda ielādējot %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Kļūda ielādējot di.fm atskaņošanas sarakstu" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Kļūda apstrādājot %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Kļūda nolasot audio CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Vispār atskaņots" @@ -2032,7 +2103,7 @@ msgstr "Katras 6 stundas" msgid "Every hour" msgstr "Katru stundu" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2044,7 +2115,7 @@ msgstr "" msgid "Expand" msgstr "Paplašināt" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2065,36 +2136,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Eksportēšana pabeigta" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2175,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Laideni noklusināt apturot dziesmu" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Pāreja" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Pārejas garums" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2148,11 +2219,11 @@ msgstr "" msgid "Fast" msgstr "Ātri" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Izlase" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Mīļākās dziesmas" @@ -2168,11 +2239,11 @@ msgstr "Piemeklēt automātiski" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Kļūda piemeklējot vāku attēlus" @@ -2180,7 +2251,7 @@ msgstr "Kļūda piemeklējot vāku attēlus" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Faila tips" @@ -2188,19 +2259,23 @@ msgstr "Faila tips" msgid "File formats" msgstr "Failu formāti" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Faila nosaukums" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Faila nosaukums (bez atrašanās vietas)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Faila izmērs" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2285,7 @@ msgstr "Faila tips" msgid "Filename" msgstr "Faila nosaukums" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Faili" @@ -2218,15 +2293,19 @@ msgstr "Faili" msgid "Files to transcode" msgstr "Faili kodēšanai" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Meklējiet savā bibliotēkā dziesmas, kas atbilst jūsu meklēšanas kritērijiem" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Meklēju dziesmas \"pirkstu nospiedumus\"" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Pabeigt" @@ -2234,7 +2313,7 @@ msgstr "Pabeigt" msgid "First level" msgstr "Pirmais līmenis" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2329,12 @@ msgstr "Licencēšanas nolūkā Spotify atbalsts pieejams kā atsevišķs spraud msgid "Force mono encoding" msgstr "Forsēt mono kodēšanu" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Aizmirst ierīci" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2349,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2377,23 @@ msgstr "Kadrātrums" msgid "Frames per buffer" msgstr "Kadri buferī" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Draugi" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Pilns bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Pilns bass un augšas" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Pilnas augšas" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer audio dzinējs" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Pamatuzstādījumi" @@ -2330,30 +2401,30 @@ msgstr "Pamatuzstādījumi" msgid "General settings" msgstr "Pamata iestatījumi" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žanrs" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Ielādēju kanālus" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2365,11 +2436,11 @@ msgstr "Dodiet tam vārdu:" msgid "Go" msgstr "Aiziet" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Iet uz nākamās dziesmu listes cilni" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Iet uz iepriekšējās dziesmu listes cilni" @@ -2377,7 +2448,7 @@ msgstr "Iet uz iepriekšējās dziesmu listes cilni" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2458,7 @@ msgstr "Iegūti %1 vāku attēli no %2 (%3 neizdevās)" msgid "Grey out non existent songs in my playlists" msgstr "Padarīt pelēkas neeksistējošās dziesmas manās dziesmu listēs" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2466,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark pieslēgšanās kļūda" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark dziesmas vietrādis URL" @@ -2411,44 +2482,44 @@ msgstr "Grooveshark dziesmas vietrādis URL" msgid "Group Library by..." msgstr "Grupēt Bibliotēku pēc..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupēt pēc" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Grupēt pēc Albumiem" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Grupēt pēc Izpildītāja" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Grupēt pēc Izpildītāja/Albuma" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Grupēt pēc Izpildītāja/Gada - Albuma" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Grupēt pēc Stils/Albums" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Grupēt pēc Stila/Izpildītāja/Albuma" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupēšana" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML lapa nesatur RSS barotnes" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2457,7 +2528,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP starpniekserveris" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Priecīgs" @@ -2473,25 +2544,25 @@ msgstr "\"Dzelžu\" informācija ir pieejama tikai pieslēdzot ierīci." msgid "High" msgstr "Augsts" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Augsts (%1 kadri/s)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Augsta (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Stundas" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad krupis" @@ -2503,15 +2574,15 @@ msgstr "Man nav Magnatune konta" msgid "Icon" msgstr "Ikona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikonas pa virsu" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identificēju dziesmu" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2592,24 @@ msgstr "Ja jūs turpināsiet, šī ierīce var darboties lēni un dziesmu kopē msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorēt \"The\" izpildītāju nosaukumos" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Attēli (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Attēli (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 nedēļās" @@ -2549,7 +2620,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Ienākošie" @@ -2561,36 +2632,36 @@ msgstr "Iekļaut vāku attēlus paziņojumos" msgid "Include all songs" msgstr "Iekļaut visas dziesmas" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Palielināt skaļumu par 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Palielināt skaļumu par %" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Palielināt skaļumu" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indeksēju %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informācija" @@ -2598,55 +2669,55 @@ msgstr "Informācija" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Ievietot..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Uzstādīts" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internets" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Nepareiza API atslēga" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Nepareizs formāts" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Nepareiza metode" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Nepareizi parametri" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Norādīts nederīgs resurss" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Nepareizs serviss" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Nepareiza sesijas atslēga" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Nederīgs lietotājvārds un/vai parole" @@ -2654,42 +2725,42 @@ msgstr "Nederīgs lietotājvārds un/vai parole" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo klausītākās dziesmas" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo populārākās dziesmas" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo populārākās mēneša dziesmas" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo populārākās nedēļas dziesmas" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo datubāze" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Pārslēgties uz šobrīd skanošo dziesmu" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Turiet pogas %1 sekundi..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Turiet pogas %1 sekundes..." @@ -2698,23 +2769,24 @@ msgstr "Turiet pogas %1 sekundes..." msgid "Keep running in the background when the window is closed" msgstr "Darboties fonā, kad logs ir aizvērts" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Atstāt oriģinālos failus" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Kakēni" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Valoda" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptops/Austiņas" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Liela zāle" @@ -2722,58 +2794,24 @@ msgstr "Liela zāle" msgid "Large album cover" msgstr "Liels vāka attēls" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Liela sānjosla" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Pēdējo reizi atskaņots" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm Pielāgotais Radio: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Bibliotēka - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Mix Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Kaimiņu Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Radio Stacija - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm Līdzīgi Izpildītāji ar %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm Birku Radio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm šobrīd nespēj apstrādāt pieprasīju, pēc brītiņa mēģiniet vēlreiz" @@ -2781,11 +2819,11 @@ msgstr "Last.fm šobrīd nespēj apstrādāt pieprasīju, pēc brītiņa mēģin msgid "Last.fm password" msgstr "Last.fm parole" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm atskaņojumu skaits" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm birkas" @@ -2793,28 +2831,24 @@ msgstr "Last.fm birkas" msgid "Last.fm username" msgstr "Last.fm lietotājvārds" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Visnemīļākās dziesmas" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Atstājiet tukšu noklusētajam. Piemēri: /dev/dsp\", \"front\", utt." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Pa kreisi" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Ilgums" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliotēka" @@ -2822,24 +2856,24 @@ msgstr "Bibliotēka" msgid "Library advanced grouping" msgstr "Advancēta Bibliotēkas grupēšana" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Bibliotēkās skenēšanas paziņojums" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Meklēt Bibliotēkā" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limiti" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Dzīvais" @@ -2851,15 +2885,15 @@ msgstr "Ielādēt" msgid "Load cover from URL" msgstr "Ielādēt vāka attēlu no adreses" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Ielādēt vāka attēlu no adreses..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Ielādēt vāku no diska." -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Ielādēt vāka attēlu no diska..." @@ -2867,84 +2901,89 @@ msgstr "Ielādēt vāka attēlu no diska..." msgid "Load playlist" msgstr "Ielādēt dziesmu listi" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Ielādēt dziesmu listi..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Ialēdē Last.fm radio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Ielādē MTP ierīci" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Ielādē iPod datubāzi" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Ielādē gudro dziesmu listi" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Ielādē dziesmas" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Ielādē straumi" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Ielādē dziesmas" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Ielādē dziesmas info" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Ielādē..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Ielādē failus/adreses, aizstājot pašreizējo dziesmu listi" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Pieslēgties" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Ilga termiņa paredzēšanas profils (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Patīk" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Zems (%1 kadri/s)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Zema (256x256)" @@ -2956,12 +2995,17 @@ msgstr "Zemas sarežģītības profils (LC)" msgid "Lyrics" msgstr "Dziesmas vārdi" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Dziesmas vārdi no %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3017,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatude" @@ -2989,7 +3033,7 @@ msgstr "Magnatude" msgid "Magnatune Download" msgstr "Magnatude Lejupielāde" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatude lejupielāde pabeigta" @@ -2997,15 +3041,20 @@ msgstr "Magnatude lejupielāde pabeigta" msgid "Main profile (MAIN)" msgstr "Galvenais profils (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Padarīt atskaņošanas sarakstu pieejamu nesaistē" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Izkropļota atbilde" @@ -3018,15 +3067,15 @@ msgstr "Manuāla starpniekservera konfigurācija" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Ražotājs" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Atzīmēt kā dzirdētu" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Atzīmēt kā jaunu" @@ -3038,17 +3087,21 @@ msgstr "Atbilst visiem meklēšanas nosacījumiem (UN)" msgid "Match one or more search terms (OR)" msgstr "Atbilst vienam vai vairākiem meklēšanas nosacījumiem (VAI)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maksimālais bitreits" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Vidējs (%1 kadri/s)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Vidēja (512x512)" @@ -3060,11 +3113,15 @@ msgstr "Dalības tips" msgid "Minimum bitrate" msgstr "Minimālais bitreits" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Pazuduši projectM preseti" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modelis" @@ -3072,20 +3129,20 @@ msgstr "Modelis" msgid "Monitor the library for changes" msgstr "Pārlūkot izmaiņas bibliotēkā" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono atskaņošana" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Mēneši" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Noskaņojums" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3093,15 +3150,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Visvairāk atskaņotie" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Montēšanas punkts" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Montēšanas punkti" @@ -3110,7 +3171,7 @@ msgstr "Montēšanas punkti" msgid "Move down" msgstr "Pārvietot uz leju" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Pārvietot uz bibliotēku..." @@ -3119,7 +3180,7 @@ msgstr "Pārvietot uz bibliotēku..." msgid "Move up" msgstr "Pārvietot uz augšu" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3127,56 +3188,32 @@ msgstr "" msgid "Music Library" msgstr "Mūzikas bibliotēka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Klusums" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Mana Last.fm Bibliotēka" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Mani Last.fm Mix Radio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Mani Last.fm Kaimiņi" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Mani Last.fm Ieteiktie Radio" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Mans Mix Radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Mana Mūzika" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mani kaimiņi" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Mana radio stacija" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mani ieteikumi" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nosaukums" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Nosaukšanas opcijas" @@ -3184,23 +3221,19 @@ msgstr "Nosaukšanas opcijas" msgid "Narrow band (NB)" msgstr "Šaura josla (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Kaimiņi" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Tīkla starpniekserveris" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nekad" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nekad nav atskaņotas" @@ -3209,21 +3242,21 @@ msgstr "Nekad nav atskaņotas" msgid "Never start playing" msgstr "Nekad Nesākt atskaņot" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Jauna mape" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Jauna dziesmu liste" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Jauna gudrā dziesmu liste..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Jaunas dziesmas" @@ -3231,24 +3264,24 @@ msgstr "Jaunas dziesmas" msgid "New tracks will be added automatically." msgstr "Jaunas dziesmas tiks pievienotas automātiski" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Jaunākās dziesmas" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Uz priekšu" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Nākamā" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Nākamnedēļ" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Bez analizatora" @@ -3256,7 +3289,7 @@ msgstr "Bez analizatora" msgid "No background image" msgstr "Nav fona attēla" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3264,7 +3297,7 @@ msgstr "" msgid "No long blocks" msgstr "Bez gariem blokiem" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nekas netika atrasts. Izdzēsiet meklēšanas aili, lai parādītu visu sarakstu." @@ -3278,11 +3311,11 @@ msgstr "Bez īsiem blokiem" msgid "None" msgstr "Nekas" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Neviena no izvēlētajām dziesmām nav piemērota kopēšanai uz ierīci" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3290,43 +3323,47 @@ msgstr "" msgid "Normal block type" msgstr "Normāls bloku tips" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Nav pieejams izmantojot dinamiskās dziesmu listes" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nav pieslēgts" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nepietiekošs saturs" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nepietiek fanu" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nepietiek dalībnieku" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nepietiek kaimiņu" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Nav uzstādīta" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Nav uzmontēts - dubultklikšķis lai uzmontētu" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Paziņojumu tips" @@ -3339,36 +3376,41 @@ msgstr "Paziņojumi" msgid "Now Playing" msgstr "Tagad atskaņo" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Paziņojumu loga piemērs" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3418,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Atļaut savienojumus tikai no lokālā tīkla" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Rādīt tikai pirmo" @@ -3388,23 +3430,23 @@ msgstr "Rādīt tikai pirmo" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Atvērt %1 pārlūkā" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Atvērt &audio CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Atvērt OPML failu" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Atvērt OPML failu..." @@ -3412,30 +3454,35 @@ msgstr "Atvērt OPML failu..." msgid "Open device" msgstr "Atvērt ierīci" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Atvērt datni..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Atvērt jaunā skaņsarakstā" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Atvērt pārlūkprogrammā" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Atvērt..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Darbība neizdevās" @@ -3455,23 +3502,23 @@ msgstr "Opcijas..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizēt Failus" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizēt failus..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Kārtoju failus" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Oriģinālās birkas" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Citas opcijas" @@ -3479,7 +3526,7 @@ msgstr "Citas opcijas" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3487,15 +3534,11 @@ msgstr "" msgid "Output options" msgstr "Atskaņošanas opcijas" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Pārrakstīt esošos failus" @@ -3507,15 +3550,15 @@ msgstr "" msgid "Owner" msgstr "Īpašnieks" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Pārsē Jamendo katalogu" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Ballīte" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3567,20 @@ msgstr "Ballīte" msgid "Password" msgstr "Parole" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pauze" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pauzēt atskaņošanu" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Nopauzēts" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3546,34 +3589,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Parasta sānjosla" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Atskaņot" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Atskaņot Izpildītāju vai Birku" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Atskaņot izpildītāja radio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Atskaņošanu skaits" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Atskaņot pielāgoto radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Atskaņot, ja apturēts, pauzēt, ja atskaņo" @@ -3582,45 +3613,42 @@ msgstr "Atskaņot, ja apturēts, pauzēt, ja atskaņo" msgid "Play if there is nothing already playing" msgstr "Atskaņot, ja nekas netiek atskaņots" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Atskaņot birku radio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Atskaņot dziesmu no dziesmu listes" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Atskaņot/Pauzēt" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Atskaņošana" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Atskaņotāja opcijas" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Dziesmu liste" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Dziesmu liste beigusies" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Dziesmu listes opcijas" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Dziesmu listes tips" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Atskaņošanas saraksti" @@ -3632,23 +3660,23 @@ msgstr "Lūdzu, aizveriet pārlūku un atgriezieties Clementine." msgid "Plugin status:" msgstr "Spraudņa statuss:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podraides" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Popmūzika" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Populāras dziesmas" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Mēneša populārākās dziesmas" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Šodienas populārākās dziesmas" @@ -3657,22 +3685,23 @@ msgid "Popup duration" msgstr "Paziņojuma ilgums" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Ports" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Priekšpastiprinājums" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Uzstādījumi" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Iestatījumi..." @@ -3708,7 +3737,7 @@ msgstr "Nospiediet taustiņu kombināciju lai izmantotu par" msgid "Press a key" msgstr "Nospiediet taustiņu" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Nospiediet taustiņu kombināciju lai izmantotu par %1..." @@ -3719,20 +3748,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Priekšskatīt" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Iepriekšējais" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Iepriekšējā" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3740,21 +3769,25 @@ msgstr "" msgid "Profile" msgstr "Profils" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Virzība" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Piespiediet Wiiremote pogu" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Sakārtot dziesmas nejaušā secībā" @@ -3762,85 +3795,95 @@ msgstr "Sakārtot dziesmas nejaušā secībā" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kvalitāte" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Ierindoju ierīci..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Rindas pārvaldnieks" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Ierindot izvēlētās dziesmas" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Ierindot dziesmu" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (ekvivalents skaļums visiem celiņiem)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Lietus" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Nejauša vizualizācija" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Novērtēt dziesmu ar 0 zvaigznēm" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Novērtēt ar 1 zvaigzni" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Novērtēt ar 2 zvaigznēm" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Novērtēt ar 3 zvaigznēm" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Novērtēt ar 4 zvaigznēm" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Novērtēt ar 5 zvaigznēm" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Vērtējums" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Tiešām atcelt?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Pārlādēt" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Atjaunot katalogu" @@ -3848,19 +3891,15 @@ msgstr "Atjaunot katalogu" msgid "Refresh channels" msgstr "Atjaunot kanālus" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Pārlādēt draugu sarakstu" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Atjaunot staciu sarakstu" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Regejs" @@ -3872,8 +3911,8 @@ msgstr "" msgid "Remember from last time" msgstr "Atcerēties no pēdējās reizes" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Izņemt" @@ -3881,7 +3920,7 @@ msgstr "Izņemt" msgid "Remove action" msgstr "Noņemt darbību" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3889,73 +3928,77 @@ msgstr "" msgid "Remove folder" msgstr "Aizvākt mapi" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Izņemt no izlases" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Azivākt no dziesmu listes" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Dzēst atskaņošanas sarakstu" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Pārdēvēt atskaņošanas sarakstu „%1”" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Pārsaukt Grooveshark dziesmu listi" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Pārdēvēt dziesmu listi" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Pārdēvēt dziesmu listi..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Pārkārtot šādā secībā..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Atkartot" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Atkārtot albumu" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Atkārtot dziesmu listi" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Atkārtot dziesmu" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Aizstāt pašreizējo dziesmu listi" @@ -3964,15 +4007,15 @@ msgstr "Aizstāt pašreizējo dziesmu listi" msgid "Replace the playlist" msgstr "Aizstāt dziesmu listi" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Aizstāj atstarpes ar pasvītrojumiem" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Atskaņošanas skaļums" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3980,24 +4023,24 @@ msgstr "" msgid "Repopulate" msgstr "Atjaunot" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Nepieciešams autentifikācijas kods" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Atiestatīt" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Atstatīt atskaņošanu skaitu" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Atļaut tikai ASCII simbolus" @@ -4005,15 +4048,15 @@ msgstr "Atļaut tikai ASCII simbolus" msgid "Resume playback on start" msgstr "Turpināt atskaņošanu, kad ieslēdzat Clementine" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4033,11 +4076,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Roks" @@ -4049,25 +4092,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "SOCKS starpniekserveris" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Saudzīgi atvienot ierīci" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Saudzīgi atvienot ierīci pēc kopēšanas" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Nolašu ātrums" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Nolašu ātrums" @@ -4075,27 +4118,33 @@ msgstr "Nolašu ātrums" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Saglabāt vāka attēlu" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Saglabāt vāka attēlu uz disku..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Salgabāt bildi" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Saglabāt dziesmu listi" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Saglabāt dziesmu listi..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Saglabāt presetu" @@ -4111,11 +4160,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "Saglabāt šo straumi Interneta cilenē" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Salgabā dziesmas" @@ -4127,7 +4176,7 @@ msgstr "Maināms semplreita profils (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Vērtējums" @@ -4135,34 +4184,38 @@ msgstr "Vērtējums" msgid "Scrobble tracks that I listen to" msgstr "Skroblēt dziesmas, ko klausos" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Meklēt" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Meklēt Icecast stacijas" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Meklēt Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Meklēt Magnatude" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Meklēt Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Meklēt albumu vāciņus..." @@ -4182,21 +4235,21 @@ msgstr "Meklēt iTunes" msgid "Search mode" msgstr "Meklēšanas režīms" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Meklēšanas opcijas" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Meklēšanas rezultāti" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Meklēšanas nosacījumi" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4204,27 +4257,27 @@ msgstr "" msgid "Second level" msgstr "Otrais līmenis" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Patīt atpakaļ" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Patīt uz priekšu" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Patīt skanošo dziesmu par relatīvu attālumu" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Patīt skanošo dziesmu par absolūtu attālumu" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Iezīmēt visu" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Neiezīmēt neko" @@ -4232,7 +4285,7 @@ msgstr "Neiezīmēt neko" msgid "Select background color:" msgstr "Izvēlieties fona krāsu:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Izvēlēties fona attēlu" @@ -4248,7 +4301,7 @@ msgstr "" msgid "Select visualizations" msgstr "Izvēlēties vizualizācijas" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Izvēlēties vizualizācijas..." @@ -4256,7 +4309,7 @@ msgstr "Izvēlēties vizualizācijas..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Sērijas numurs" @@ -4268,51 +4321,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Serviss atslēgts" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Uzstādīt %1 uz \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Uzstādīt skaļumu uz procentiem" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Saglabāt vērtību izvēlētajām dziesmām..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Iestatījumi" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Īsceļš" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Isceļš priekš %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Īsceļš priekš %1 jau eksistē" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Parādit" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Parādīt paziņojumu" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Rādīt kvēlojošu animāciju pašreizējai dziesmai." @@ -4340,15 +4393,15 @@ msgstr "Rādīt paziņojumu nu sistēmas joslas" msgid "Show a pretty OSD" msgstr "Rādīt skaistu paziņojumu logu" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Rādīt virs statusa joslas" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Rādīt visas dziesmas" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Rādīt visas dziesmas" @@ -4360,32 +4413,36 @@ msgstr "Rādīt vāka attēlus bibliotēkā" msgid "Show dividers" msgstr "Rādīt atdalītājus" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Radīt pa visu ekrānu..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Rādīt failu pārlūkā..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Rādīt pie dažādiem izpildītājiem" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Rādīt tikai dublikātus" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Rādīt tikai bez birkām" @@ -4394,8 +4451,8 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Rādīt \"patīk\" un \"aizliegt\" pogas" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4466,27 @@ msgstr "Rādīt paneļa ikonu" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Rādīt/slēpt" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Jaukt" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Jaukt visu" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Jaukt dziesmu listi" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4445,7 +4502,7 @@ msgstr "Atslēgties" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Līdzīgi izpildītāji" @@ -4457,43 +4514,51 @@ msgstr "Izmērs" msgid "Size:" msgstr "Izmērs:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Izlaist atpakaļejot dziesmu listē" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Izlaista" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Izlaist turpinot dziesmu listē" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Mazs vāka attēls" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Maza sānjosla" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Gudrā dziesmu liste" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Gudrās dziesmu listes" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Viegla" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Vieglais roks" @@ -4501,11 +4566,11 @@ msgstr "Vieglais roks" msgid "Song Information" msgstr "Dziesmas informācija" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Dziesmas info" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogramma" @@ -4525,15 +4590,23 @@ msgstr "Kārtot pēc stila (pēc popularitātes)" msgid "Sort by station name" msgstr "Kārtot pēc staciju nosaukumiem" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Kārtot pēc" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Kārtošana" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Avots" @@ -4549,7 +4622,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify pieslēgšanās kļūda" @@ -4557,7 +4630,7 @@ msgstr "Spotify pieslēgšanās kļūda" msgid "Spotify plugin" msgstr "Spotify spraudnis" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify spraudnis nav uzstādīts" @@ -4565,77 +4638,77 @@ msgstr "Spotify spraudnis nav uzstādīts" msgid "Standard" msgstr "Standarts" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Novērtēts ar zvaigzni" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Sākt pašreiz atskaņoto dziesmu listi" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Sākt kodēšanu" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Palaiž %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Palaiž..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stacijas" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Apturēt" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Apturēt pēc" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Apturēt pēc šīs dziesmas" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Apturēt atskaņošanu" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Apturēt atskaņošanu pēc šīs dziesmas" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Apturēts" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Straume" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4718,7 @@ msgstr "" msgid "Streaming membership" msgstr "Straumējuma dalība" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4653,7 +4726,7 @@ msgstr "" msgid "Subscribers" msgstr "Abonenti" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4661,12 +4734,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Izdevās!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Veiksmīgi ierakstīts %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Ieteiktās birkas" @@ -4675,13 +4748,13 @@ msgstr "Ieteiktās birkas" msgid "Summary" msgstr "Kopsavilkums" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Ļoti augsts (%1 kadri/s)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Ārkārtīgi augsta (2048x2048)" @@ -4693,43 +4766,35 @@ msgstr "Atbalstītie formāti" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Systēmas krāsas" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Cilnes pa virsu" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Birka" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Birku meklētājs" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Birku radio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Mērķa bitreits" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tehno" @@ -4737,11 +4802,11 @@ msgstr "Tehno" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Pateicoties" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Nevar startēt \"%1\" komandu" @@ -4750,17 +4815,12 @@ msgstr "Nevar startēt \"%1\" komandu" msgid "The album cover of the currently playing song" msgstr "Pašlaik atskaņotās dziesmas albuma vāks" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Nederīga mape %1" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Kļūda ielādējot dziesmu listi '%1'. Iespējams, tā ir tukša" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Otrajai vērtībai jābūt lielākai par pirmo!" @@ -4768,40 +4828,40 @@ msgstr "Otrajai vērtībai jābūt lielākai par pirmo!" msgid "The site you requested does not exist!" msgstr "Pieprasītā adrese neeksistē!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Pieprasītā adrese nav attēls!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Jaunā Clementine versija pieprasa pilnu bibliotēkas skenēšanu šādu funkciju dēļ:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Problēma meklējot metadatus iekš Magnatude" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4873,13 @@ msgid "" "deleted:" msgstr "Kļuda dzēšot dažas dziesmas. Nevar izdzēst sekojošos failus:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Šie faili tiks dzēsti no ierīces. Vai jūs tiešām vēlaties turpināt?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4899,13 @@ msgstr "\"Sie uzstādījumi tiek izmantoti iekš \"Kodēt Mūziku\" dialoga un t msgid "Third level" msgstr "Trešais līmenis" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Šīs darbības rezultātā tiks izveidota datubāze, kas var būt līdz pat 150 MB liela.\nVai jūs vēlaties turpināt?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Albums nav pieejams pieprasītajā formātā" @@ -4859,11 +4919,11 @@ msgstr "Šai ierīcei jābūt pieslēgtai un atvērtai pirms Clementine var note msgid "This device supports the following file formats:" msgstr "Ierīce atbalsta šādus failu formātus:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Šī ierīce nedarbosies pareizi" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Šī ir MTP ierīce, bet jūs esat nokompilējis Clementine bez libmtp atbalsta." @@ -4872,7 +4932,7 @@ msgstr "Šī ir MTP ierīce, bet jūs esat nokompilējis Clementine bez libmtp a msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Šis ir iPods, bet jūs esat nokompilējis Clementine bez libgpod atbalsta." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4942,33 @@ msgstr "Šī ierīce ir pieslēgta pirmo reizi. Tagad Clementine tajā meklēs m msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Šī straume ir pieejama tikai maksas lietotājiem" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Šī tipa ierīce netiek atbalstīta: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Nosaukums" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Šodien" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4916,27 +4976,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "Ieslēgt pilnu ekrānu" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Ieslēgt rindas statusu" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Ieslēgt skroblēšanu" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Rīt" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Par daudz pāradresāciju" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4944,21 +5004,25 @@ msgstr "" msgid "Total albums:" msgstr "Kopā albumi:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Dziesma" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Kodēt Mūziku" @@ -4970,7 +5034,7 @@ msgstr "Kodēšanas piezīmes" msgid "Transcoding" msgstr "Pārkodēšana" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4979,11 +5043,11 @@ msgstr "" msgid "Transcoding options" msgstr "Kodēšanas opcijas" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4991,72 +5055,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Izslēgt" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Adreses (URL)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One parole" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One lietotājvārds" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra plata josla (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Nevar lejupielādēt %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Nezināms" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Nezināma kļūda" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Noņemt vāka attēlu" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Atabonēt" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Tuvākie koncerti" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Atjaunot mainītās bibliotēkas mapes" @@ -5064,7 +5128,7 @@ msgstr "Atjaunot mainītās bibliotēkas mapes" msgid "Update the library when Clementine starts" msgstr "Atjaunot bibliotēku ieslēdzot Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Atjaunot šo podraidi" @@ -5072,21 +5136,21 @@ msgstr "Atjaunot šo podraidi" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Atjaunoju %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Atjaunoju %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Atjaunoju bibliotēku" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Pielietojums" @@ -5094,11 +5158,11 @@ msgstr "Pielietojums" msgid "Use Album Artist tag when available" msgstr "Pieejamības gadījumā izmantot albuma mākslinieka birku" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Izmantot Gnome saīšņu taustiņus" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Izmantot atskaņošanas skaļuma datus, ja pieejami" @@ -5118,7 +5182,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5158,20 +5222,20 @@ msgstr "Lietot sistēmas starpniekservera uzstādījumus" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Izmantots" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Lietotāja saskarne" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5257,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Mainīgs bitreits" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Dažādi izpildītāji" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versija %1" @@ -5211,7 +5275,7 @@ msgstr "Skats" msgid "Visualization mode" msgstr "Vizualizāciju režīms" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Vizualizācijas" @@ -5219,11 +5283,15 @@ msgstr "Vizualizācijas" msgid "Visualizations Settings" msgstr "Vizualizāciju Iestatījumi" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Balss aktivitātes noteikšana" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Skaļums %1%" @@ -5241,11 +5309,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5321,7 @@ msgstr "Wav" msgid "Website" msgstr "Tīmekļa vietne" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Nedēļas" @@ -5279,32 +5347,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "Plaša josla (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Tālvadība %1: aktivizēta" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Tālvadība %1: savienots" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Tālvadība %1: ļoti vāja baterija (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Tālvadība %1: deaktivizēta" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Tālvadība %1: atvienots" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Tālvadība %1: vāja baterija (%2%)" @@ -5325,7 +5393,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5333,25 +5401,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Vai jūs vēlaties palaist pilnu skenēšanu?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5431,11 @@ msgstr "Gads" msgid "Year - Album" msgstr "Gads - Albums" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Gadi" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Vakar" @@ -5375,13 +5443,13 @@ msgstr "Vakar" msgid "You are about to download the following albums" msgstr "Jūs gatavojaties lejupielādēt sekojošus albumus" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5459,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Jūs esat pierakstījies." @@ -5404,13 +5472,13 @@ msgstr "Jūs esat pierakstījies." msgid "You can change the way the songs in the library are organised." msgstr "Jūs varat mainīt veidu, kā dziesmas tiek izkārtotas bibliotēkā." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5488,6 @@ msgstr "Jūs varat klausīties Magnatude dziesmas par brīvu bez lietotāja kont msgid "You can listen to background streams at the same time as other music." msgstr "Papildus mūzikai, jūs varat ieslēgt arī kādu no fona skaņām." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Jūs varat izmantot Wii tālvadību lai kontrolētu Clementine.Apskatīt Clementine wiki lai uzzinātu vairāk.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Jums nav Grooveshark Anywhere konts." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Jums nav aktīva abonementa." -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Jūs mīlat šo dziesmu" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5546,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "Ja jūs mainīsiet valodu, jums nāksies restartēt Clementine." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Jūs nevarat atskaņot Last.fm radio stacijas neesot Last.fm lietotājs." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Jūsu IP adrese:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Jūsu Last.fm dati ir nepareizi" @@ -5489,42 +5558,43 @@ msgstr "Jūsu Last.fm dati ir nepareizi" msgid "Your Magnatune credentials were incorrect" msgstr "Jūsu Magnatude dati ir nepareizi" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Jūsu bibliotēka ir tukša!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Jūsu radio straumes" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Jūsu skrobli: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Jūsu lietotājvārds vai parole bija nederīgi." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Nulle" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "pievienot %n dziesmas" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "pēc" @@ -5544,19 +5614,19 @@ msgstr "automātisks" msgid "before" msgstr "pirms" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "starp" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "lielākais vispirms" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "sitieni minūtē" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "satur" @@ -5566,20 +5636,20 @@ msgstr "satur" msgid "disabled" msgstr "izslēgts" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disks %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "nesatur" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "beidzas ar" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "vienāds" @@ -5587,11 +5657,11 @@ msgstr "vienāds" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "lielāks par" @@ -5599,54 +5669,55 @@ msgstr "lielāks par" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "pēdējās" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kb/s" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "mazāks par" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "garākais vispirms" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "jaunākais vispirms" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "nav vienāds" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "ne pēdējajā" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "nav uz" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "vecākais vispirms" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "uz" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "opcijas" @@ -5658,36 +5729,37 @@ msgstr "vai nolasi šo QR kodu!" msgid "press enter" msgstr "piespiediet enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "aizvākt %n dziesmas" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "īsākais vispirms" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "jaukt dziesmas" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "mazākais vispirms" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "kārtot dziesmas" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "sākas ar" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "apturēt" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "dziesma %1" diff --git a/src/translations/mk_MK.po b/src/translations/mk_MK.po index ed10cbdda..892114952 100644 --- a/src/translations/mk_MK.po +++ b/src/translations/mk_MK.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Macedonian (Macedonia) (http://www.transifex.com/projects/p/clementine/language/mk_MK/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,7 +16,7 @@ msgstr "" "Language: mk_MK\n" "Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -41,9 +41,9 @@ msgstr "" msgid " kbps" msgstr "kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "ms" @@ -56,11 +56,16 @@ msgstr "pt" msgid " seconds" msgstr "секунди" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "песни" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 албуми" @@ -70,12 +75,12 @@ msgstr "%1 албуми" msgid "%1 days" msgstr "%1 денови" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "пред %1 денови" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -85,48 +90,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 плејлисти (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 избрани од" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 песна" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 песни" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 песни се пронајдени" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 песни се пронајдени (прикажувам %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 нумера" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 пренесено" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev модул" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%1 други слушатели" @@ -140,18 +145,21 @@ msgstr "%L1 вкупно преслушано" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n неуспешно" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n завршено" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n преостанува" @@ -163,24 +171,24 @@ msgstr "&Порамни текст" msgid "&Center" msgstr "%Центрирај" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Прилагодено" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Помош" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "%Скриено %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Сокриј..." @@ -188,23 +196,23 @@ msgstr "&Сокриј..." msgid "&Left" msgstr "&Лево" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Без" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Излези" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -212,23 +220,23 @@ msgstr "" msgid "&Right" msgstr "&Десно" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Истегни ги колоните за да го пополнат прозорецот" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Алатки" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(различно за различни песни)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "..и сите оние кои допринесоа за Amarok" @@ -248,14 +256,10 @@ msgstr "" msgid "1 day" msgstr "1 ден" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 песна" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -265,7 +269,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 песни по случаен избор" @@ -273,12 +277,6 @@ msgstr "50 песни по случаен избор" msgid "Upgrade to Premium now" msgstr "Премини на платена верзија" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -289,6 +287,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -297,38 +306,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "А-Ш" @@ -348,36 +357,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "СЛАВА И НА ХИПНОЖАБАТА" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Околу %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "За Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "За Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Детали за сметката" @@ -389,11 +397,15 @@ msgstr "Детали за сметката (Premium)" msgid "Action" msgstr "Акција" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Активирај/Деактивирај Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -409,39 +421,39 @@ msgstr "" msgid "Add action" msgstr "Додади акција" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Додади уште еден извор..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Додади директориум..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Додади датотека..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Додади датотеки за транскодирање" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Додади папка" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Додади папка..." @@ -453,11 +465,11 @@ msgstr "Додади нова папка..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Додади поим за пребарување" @@ -521,6 +533,10 @@ msgstr "Додади бројач за прескокнување на песн msgid "Add song title tag" msgstr "Додади поле за наслов на песна" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Додади поле за песна" @@ -529,22 +545,34 @@ msgstr "Додади поле за песна" msgid "Add song year tag" msgstr "Додади поле за песна на годината" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Додади извор..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Додади на друга плејлиста" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Додади на плејлистата" @@ -553,6 +581,10 @@ msgstr "Додади на плејлистата" msgid "Add to the queue" msgstr "Додади на редот" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Додади wiimotedev акција" @@ -582,15 +614,15 @@ msgstr "Додадено денеска" msgid "Added within three months" msgstr "Додадено во последните три месеци" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Напредно групирање..." @@ -598,12 +630,12 @@ msgstr "Напредно групирање..." msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "После копирањето..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -611,11 +643,11 @@ msgstr "После копирањето..." msgid "Album" msgstr "Албум" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Албум (идеална гласност за сите песни)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -625,35 +657,36 @@ msgstr "Музичар на албумот" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Податоци за албумот на jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Албуми со насловни слики" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Албуми без насловни слики" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Сите Датотеки (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Слава му на Хипножабецот!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Сите албуми" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Сите музичари" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Сите датотеки (*)" @@ -662,19 +695,19 @@ msgstr "Сите датотеки (*)" msgid "All playlists (%1)" msgstr "Сите плејлисти (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Сите преведувачи" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Сите песни" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -699,30 +732,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -731,13 +764,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -745,52 +778,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -798,9 +826,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -808,7 +840,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -824,7 +856,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -832,15 +864,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -861,7 +893,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -869,11 +901,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -893,18 +921,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -912,7 +939,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -928,7 +960,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -942,11 +974,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -958,43 +990,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1004,15 +1059,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1028,11 +1087,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1041,7 +1100,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1049,17 +1108,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1072,8 +1131,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1095,8 +1154,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1110,20 +1169,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1135,11 +1187,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1149,7 +1201,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1164,19 +1219,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1184,73 +1239,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1258,11 +1318,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1272,12 +1332,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1293,17 +1357,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1311,156 +1379,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "" @@ -1468,7 +1532,7 @@ msgstr "" msgid "Ctrl+Up" msgstr "" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1480,54 +1544,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1535,6 +1595,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1543,30 +1608,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1574,31 +1639,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1607,7 +1672,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1619,15 +1684,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1664,12 +1729,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1679,15 +1749,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1699,27 +1769,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Донирај" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1727,12 +1797,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1748,7 +1819,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1756,15 +1827,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1772,7 +1843,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1781,23 +1852,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1817,20 +1888,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1842,16 +1913,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1859,6 +1930,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1873,7 +1948,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1901,15 +1976,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1923,7 +1993,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1932,11 +2002,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1944,21 +2014,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1966,38 +2037,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2029,7 +2100,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2041,7 +2112,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2062,36 +2133,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2101,42 +2172,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2145,11 +2216,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2165,11 +2236,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2177,7 +2248,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2185,19 +2256,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2207,7 +2282,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2215,15 +2290,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2231,7 +2310,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2247,12 +2326,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2267,7 +2346,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2295,31 +2374,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2327,30 +2398,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2362,11 +2433,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2374,7 +2445,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2384,7 +2455,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2392,15 +2463,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2408,44 +2479,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2454,7 +2525,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2470,25 +2541,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2500,15 +2571,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2518,24 +2589,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2546,7 +2617,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2558,36 +2629,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2595,55 +2666,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2651,42 +2722,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2695,11 +2766,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2707,11 +2779,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2719,12 +2791,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2732,45 +2808,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2778,11 +2816,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2790,28 +2828,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Лево" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2819,24 +2853,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2848,15 +2882,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2864,84 +2898,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2953,12 +2992,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2970,15 +3014,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2986,7 +3030,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2994,15 +3038,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3015,15 +3064,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3035,17 +3084,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3057,11 +3110,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3069,20 +3126,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3090,15 +3147,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3107,7 +3168,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3116,7 +3177,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3124,56 +3185,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3181,23 +3218,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3206,21 +3239,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3228,24 +3261,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3253,7 +3286,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3261,7 +3294,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3275,11 +3308,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3287,43 +3320,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3336,36 +3373,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3373,11 +3415,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3385,23 +3427,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3409,30 +3451,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3452,23 +3499,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3476,7 +3523,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3484,15 +3531,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3504,15 +3547,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3521,20 +3564,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3543,34 +3586,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3579,45 +3610,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3629,23 +3657,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3654,22 +3682,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3705,7 +3734,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3716,20 +3745,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3737,21 +3766,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3759,7 +3792,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3767,28 +3805,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3796,48 +3839,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3845,19 +3888,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3869,8 +3908,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3878,7 +3917,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3886,73 +3925,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3961,15 +4004,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3977,24 +4020,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4002,15 +4045,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4030,11 +4073,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4046,25 +4089,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4072,27 +4115,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4108,11 +4157,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4124,7 +4173,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4132,10 +4181,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4143,23 +4196,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4179,21 +4232,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4201,27 +4254,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4229,7 +4282,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4245,7 +4298,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4253,7 +4306,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4265,51 +4318,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4337,15 +4390,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4357,32 +4410,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4391,7 +4448,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4406,27 +4463,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4442,7 +4499,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4454,43 +4511,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4498,11 +4563,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4522,15 +4587,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4546,7 +4619,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4554,7 +4627,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4562,77 +4635,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4642,7 +4715,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4650,7 +4723,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4658,12 +4731,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4672,13 +4745,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4690,43 +4763,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4734,11 +4799,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4747,17 +4812,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4765,40 +4825,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4810,13 +4870,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4836,13 +4896,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4856,11 +4916,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4869,7 +4929,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4879,33 +4939,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4913,27 +4973,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4941,21 +5001,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4967,7 +5031,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4976,11 +5040,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4988,72 +5052,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5061,7 +5125,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5069,21 +5133,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5091,11 +5155,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5115,7 +5179,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5155,20 +5219,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5190,12 +5254,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5208,7 +5272,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5216,11 +5280,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5238,11 +5306,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5250,7 +5318,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5276,32 +5344,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5322,7 +5390,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5330,25 +5398,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5360,11 +5428,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5372,13 +5440,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5388,12 +5456,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5401,13 +5469,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5417,13 +5485,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5468,17 +5543,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5486,42 +5555,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5541,19 +5611,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5563,20 +5633,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5584,11 +5654,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5596,54 +5666,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5655,36 +5726,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/mr.po b/src/translations/mr.po index fce4d8f85..b54491042 100644 --- a/src/translations/mr.po +++ b/src/translations/mr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Marathi (http://www.transifex.com/projects/p/clementine/language/mr/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: mr\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -55,11 +55,16 @@ msgstr "" msgid " seconds" msgstr " सेकंद" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " गाणी" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -69,12 +74,12 @@ msgstr "" msgid "%1 days" msgstr "%1 दिवस" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 दिवसांपुर्वी" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 गाणे" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 गाणी सापडली" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 गाणी सापडली (%2 दाखवत आहे )" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -139,18 +144,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n बाकी" @@ -162,24 +170,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "%1 &लपवा" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&लपवा...." @@ -187,23 +195,23 @@ msgstr "&लपवा...." msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,23 +219,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -272,12 +276,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -452,11 +464,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -552,6 +580,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -581,15 +613,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -597,12 +629,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -661,19 +694,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +777,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,9 +825,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -807,7 +839,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -823,7 +855,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -831,15 +863,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +892,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +920,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1027,11 +1086,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1048,17 +1107,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1071,8 +1130,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1186,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1183,73 +1238,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1317,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1310,156 +1378,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1534,6 +1594,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1607,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,31 +1638,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1606,7 +1671,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1618,15 +1683,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1796,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,23 +1851,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1929,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2036,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2255,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2214,15 +2289,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,7 +2309,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2397,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2594,55 +2665,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2718,12 +2790,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2818,24 +2852,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2847,15 +2881,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3068,20 +3125,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,7 +3176,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3123,56 +3184,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3238,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3252,7 +3285,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3335,36 +3372,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3451,23 +3498,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3475,7 +3522,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3791,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,28 +3804,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3877,7 +3916,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,10 +4180,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4142,23 +4195,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4281,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4305,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4447,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,27 +4462,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4497,11 +4562,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4733,11 +4798,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5090,11 +5154,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5207,7 +5271,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,11 +5279,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5237,11 +5305,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5371,13 +5439,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5540,19 +5610,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,20 +5632,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/ms.po b/src/translations/ms.po index 27d8cfabb..410ab2e75 100644 --- a/src/translations/ms.po +++ b/src/translations/ms.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Malay (http://www.transifex.com/projects/p/clementine/language/ms/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,7 +16,7 @@ msgstr "" "Language: ms\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -41,9 +41,9 @@ msgstr "" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -56,11 +56,16 @@ msgstr " pt" msgid " seconds" msgstr " saat" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " lagu" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -70,12 +75,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 hari" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 hari lalu" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -85,48 +90,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 senarai main (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "dipilih daripada %1" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 lagu" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 lagu" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 lagu ditemui" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 lagu ditemui (memaparkan %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 trek" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 dipindahkan" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Modul Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 pendengar lain" @@ -140,18 +145,21 @@ msgstr "%L1 jumlah dimainkan" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n gagal" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n telah selesai" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n tinggal" @@ -163,24 +171,24 @@ msgstr "&Jajarkan tulisan" msgid "&Center" msgstr "&Tengah" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Ekstra" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Bantuan" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Sembunyikan %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Sembunyikan..." @@ -188,23 +196,23 @@ msgstr "&Sembunyikan..." msgid "&Left" msgstr "&Kiri" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Muzik" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Tiada" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Senarai main" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Keluar" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Mod ulang" @@ -212,23 +220,23 @@ msgstr "Mod ulang" msgid "&Right" msgstr "&Kanan" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Mod kocok" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Regangkan kolum-kolum untuk dimuat mengikut tetingkap" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Alatan" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(berbeza dengan pelbagai lagu)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...dan semua penyumbang Amarok" @@ -248,14 +256,10 @@ msgstr "" msgid "1 day" msgstr "1 hari" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 trek" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -265,7 +269,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 trek rawak" @@ -273,12 +277,6 @@ msgstr "50 trek rawak" msgid "Upgrade to Premium now" msgstr "Upgrade to Premium now" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -289,6 +287,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -297,38 +306,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Akaun Spotify Premium diperlukan" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Senarai main pintar ialah senarai dinamik lagu-lagu dari pustaka anda. Terdapat pelbagai jenis senarai main pintar yang menawarkan cara yang berbeza dalam memilih lagu-lagu." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Sesuatu lagu akan disertakan ke dalam senarai main sekiranya ia berpadanan dengan keadaan-keadaan ini." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -348,36 +357,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "HIDUP HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Perihal %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Perihal Clementine" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Perihal Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Butir-butir akaun" @@ -389,11 +397,15 @@ msgstr "" msgid "Action" msgstr "Tindakan" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktif/nyahaktif Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -409,39 +421,39 @@ msgstr "Tambah baris baru jika disokong oleh jenis pemberitahuan" msgid "Add action" msgstr "Tambah tindakan" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Tambah strim lain..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Tambah direktori..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Tambah fail..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Tambah fail-fail untuk transkod" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Tambah folder" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Tambah folder..." @@ -453,11 +465,11 @@ msgstr "Tambah folder baru..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Tambah terma carian" @@ -521,6 +533,10 @@ msgstr "Tambahkan bilangan langkau lagu" msgid "Add song title tag" msgstr "Tambah tag tajuk lagu" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Tambah tag trek lagu" @@ -529,22 +545,34 @@ msgstr "Tambah tag trek lagu" msgid "Add song year tag" msgstr "Tambah tag tahun lagu" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Tambah stream..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Tambahkan ke senarai main lain" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Tambahkan ke senarai main" @@ -553,6 +581,10 @@ msgstr "Tambahkan ke senarai main" msgid "Add to the queue" msgstr "Tambah ke dalam senarai" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Tambahkan tindakan wiimotedev" @@ -582,15 +614,15 @@ msgstr "Ditambah pada hari ini" msgid "Added within three months" msgstr "Ditambah dalam tiga bulan" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -598,12 +630,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Selepas menyalin..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -611,11 +643,11 @@ msgstr "Selepas menyalin..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (kelantangan ideal untuk semua trek)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -625,35 +657,36 @@ msgstr "Artis album" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Info album di jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Album dengan kulit muka" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Album tanpa kulit muka" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Semua Fail (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Hidup Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Semua album" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Semua artis" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Semua fail (*)" @@ -662,19 +695,19 @@ msgstr "Semua fail (*)" msgid "All playlists (%1)" msgstr "Semua senarai main (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Semua penterjemah" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Semua trek" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -699,30 +732,30 @@ msgstr "Sentiasa tunjukkan tetingkap utama" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Satu plugin tambahan diperlukan untuk menggunakan Spotify dalam Clementine. Inginkah anda memuat turun dan memasangnya sekarang?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Ralat berlaku semasa memuat pangkalan data iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Ralat berlaku semasa menulis metadata ke '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Dan:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -731,13 +764,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Tambah fail-fail/URL ke senarai main" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Tambah ke senarai main semasa" @@ -745,52 +778,47 @@ msgstr "Tambah ke senarai main semasa" msgid "Append to the playlist" msgstr "Tambah ke senarai main" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artis" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Info artis" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Tag-tag artis" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -798,9 +826,13 @@ msgstr "" msgid "Audio format" msgstr "Format audio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Pengesahan gagal" @@ -808,7 +840,7 @@ msgstr "Pengesahan gagal" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Pengarang-pengarang" @@ -824,7 +856,7 @@ msgstr "Pengemaskinian automatik" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Ada" @@ -832,15 +864,15 @@ msgstr "Ada" msgid "Average bitrate" msgstr "Kadar bit purata" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +893,7 @@ msgstr "" msgid "Background opacity" msgstr "Kelegapan latar belakang" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -869,11 +901,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Larang" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -893,18 +921,17 @@ msgstr "Kelakuan" msgid "Best" msgstr "Terbaik" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografi dari %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Kadar bit" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -912,7 +939,12 @@ msgstr "Kadar bit" msgid "Bitrate" msgstr "Kadar bit" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -928,7 +960,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -942,11 +974,11 @@ msgstr "" msgid "Browse..." msgstr "Layar..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -958,43 +990,66 @@ msgstr "" msgid "Buttons" msgstr "Bebutang" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Batal" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Ubahkan seni kulit muka" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Ubah saiz fon..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Ubahkan mod ulang" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Ubah bahasa" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1004,15 +1059,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Periksa kemaskini..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Pilih satu nama untuk senarai main pintar anda" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Pilih secara automatik" @@ -1028,11 +1087,11 @@ msgstr "" msgid "Choose from the list" msgstr "Pilih daripada senarai" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1041,7 +1100,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Pilih laman-laman sesawang yang anda mahu Clementine gunakan semasa mencari lirik-lirik." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasikal" @@ -1049,17 +1108,17 @@ msgstr "Klasikal" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Kosong" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Kosongkan senarai main" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1072,8 +1131,8 @@ msgstr "Ralat Clementine" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1095,8 +1154,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1110,20 +1169,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Pemapar imej Clementine" @@ -1135,11 +1187,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klik di sini untuk menambah muzik" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1149,7 +1201,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1164,19 +1219,19 @@ msgstr "Tutup" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Menutup tetingkap ini akan membatalkan muat turun." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Menutup tetingkap ini akan menghentikan pencarian kulit album." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Kelab" @@ -1184,73 +1239,78 @@ msgstr "Kelab" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komen" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Lengkapkan tag-tag secara automatik" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Lengkapkan tag-tag secara automatik..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Penggubah" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Tetapkan Pintasan" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1258,11 +1318,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Sambung peranti" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Menyambung ke Spotify" @@ -1272,12 +1332,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1293,17 +1357,21 @@ msgstr "Tukar semua muzik" msgid "Convert any music that the device can't play" msgstr "Tukar mana-mana muzik yang tidak boleh dimainkan oleh peranti" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Salin ke peranti..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Salin ke pustaka..." @@ -1311,156 +1379,152 @@ msgstr "Salin ke pustaka..." msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Pengurus Kulit Album" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Seni kulit muka dimuat secara automatik dari %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Seni kulit muka ditetap dari %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1468,7 +1532,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1480,54 +1544,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Tarikh dicipta" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Tarikg diubahsuai" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Hari" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Kurangkan kadar bunyi sebanyak 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Kurangkan kadar bunyi" @@ -1535,6 +1595,11 @@ msgstr "Kurangkan kadar bunyi" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1543,30 +1608,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Padamkan fail-fail" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Padamkan dari peranti..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Padam dari cakera..." @@ -1574,31 +1639,31 @@ msgstr "Padam dari cakera..." msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Padam senarai main pintar" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Padamkan fail-fail asal" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Memadam fail-fail" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinasi" @@ -1607,7 +1672,7 @@ msgstr "Destinasi" msgid "Details..." msgstr "Butir-butir..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Peranti" @@ -1619,15 +1684,15 @@ msgstr "Ciri-ciri Peranti" msgid "Device name" msgstr "Nama peranti" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Ciri-ciri peranti..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Peranti-peranti" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1664,12 +1729,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Dilumpuhkan" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Cakera" @@ -1679,15 +1749,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Lakukan imbas semula pustaka penuh" @@ -1699,27 +1769,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Jangan ulang" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Jangan kocok" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Jangan berhenti!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dwi klik untuk buka" @@ -1727,12 +1797,13 @@ msgstr "Dwi klik untuk buka" msgid "Double clicking a song will..." msgstr "Dwi klik sesuatu lagu akan..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Direktori muat turun" @@ -1748,7 +1819,7 @@ msgstr "Keahlian muat turun" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1756,15 +1827,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Muat turun album ini" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Muat turun album ini..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1772,7 +1843,7 @@ msgstr "" msgid "Download..." msgstr "Muat Turun..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1781,23 +1852,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "Memuat turun direktori Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Memuat turun katalog Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Memuat turun katalog Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Memuat turun plugin Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Memuatturun metadata" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1817,20 +1888,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Edit senarai main pintar..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Edit tag..." @@ -1842,16 +1913,16 @@ msgstr "Edit tag-tag" msgid "Edit track information" msgstr "Edit informasi trek" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Edit informasi trek..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Edit informasi trek-trek..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Edit..." @@ -1859,6 +1930,10 @@ msgstr "Edit..." msgid "Enable Wii Remote support" msgstr "Bolehkan sokongan Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1873,7 +1948,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1901,15 +1976,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Masukkan nama baru bagi senarai main ini" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1923,7 +1993,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Masukkan terma-terma carian di sini" @@ -1932,11 +2002,11 @@ msgstr "Masukkan terma-terma carian di sini" msgid "Enter the URL of an internet radio stream:" msgstr "Masukkan URL satu strim radio internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1944,21 +2014,22 @@ msgstr "" msgid "Entire collection" msgstr "Kesemua koleksi" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Ralat" @@ -1966,38 +2037,38 @@ msgstr "Ralat" msgid "Error connecting MTP device" msgstr "Ralat menyambung peranti MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Ralat menyalin lagu-lagu" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Ralat memadam lagu-lagu" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Ralat memuat turun plugin Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Ralat memuat %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Ralat memproses %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Pernah dimainkan" @@ -2029,7 +2100,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Kecuali di antara trek-trek dalam album yang sama atau dalam lembaran CUE yang sama" @@ -2041,7 +2112,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2062,36 +2133,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2101,42 +2172,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2145,11 +2216,11 @@ msgstr "" msgid "Fast" msgstr "Laju" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Trek-trek kegemaran" @@ -2165,11 +2236,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2177,7 +2248,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2185,19 +2256,23 @@ msgstr "" msgid "File formats" msgstr "Format-format fail" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nama fail" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Saiz fail" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2207,7 +2282,7 @@ msgstr "Jenis fail" msgid "Filename" msgstr "Namafail" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fail-fail" @@ -2215,15 +2290,19 @@ msgstr "Fail-fail" msgid "Files to transcode" msgstr "Fail-fail untuk transkod" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Cari lagu-lagu dalam pustaka anda yang berpadanan dengan kriteria yang anda tetapkan." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Selesai" @@ -2231,7 +2310,7 @@ msgstr "Selesai" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2247,12 +2326,12 @@ msgstr "Atas sebab-sebab perlesenan sokongan Spotify berada dalam plugin berasin msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Lupakan peranti" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2267,7 +2346,7 @@ msgstr "Melupakan peranti akan membuangnya dari senarai dan Clementine perlu men #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2295,31 +2374,23 @@ msgstr "Kadar bingkai" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Rakan-rakan" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Bass Penuh" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Bass Penuh + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Treble Penuh" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Enjin audio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2327,30 +2398,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2362,11 +2433,11 @@ msgstr "Berikan ia nama" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Pergi ke tab senarai main berikutnya" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Pergi ke tab senarai main sebelumnya" @@ -2374,7 +2445,7 @@ msgstr "Pergi ke tab senarai main sebelumnya" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2384,7 +2455,7 @@ msgstr "Dapat %1 kulit muka daripada %2 (%3 gagal)" msgid "Grey out non existent songs in my playlists" msgstr "Kelabukan lagu yang tidak wujud dalam senarai main saya" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2392,15 +2463,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2408,44 +2479,44 @@ msgstr "" msgid "Group Library by..." msgstr "Kumpulkan Pustaka mengikut..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Kumpulkan mengikut" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Kumpulkan mengikut Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Kumpulkan mengikut Artis" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Kumpulkan mengikut Artis/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Kumpulkan mengikut Artis/Tahun - Album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Kumpulkan mengikut Genre/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Kumpulkan mengikut Genre/Artis/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2454,7 +2525,7 @@ msgstr "" msgid "HTTP proxy" msgstr "Proksi HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2470,25 +2541,25 @@ msgstr "Informasi perkakasan hanya tersedia ketika peranti disambungkan." msgid "High" msgstr "Tinggi" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Tinggi (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Tinggi (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Jam" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2500,15 +2571,15 @@ msgstr "Saya tidak mempunyai akaun Magnatune" msgid "Icon" msgstr "Ikon" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikon di atas" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Mengenalpasti lagu" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2518,24 +2589,24 @@ msgstr "Jika anda teruskan, peranti ini akan berfungsi dengan perlahan dan lagu- msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Pedulikan \"The\" dalam nama-nama artis" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Imej-imej (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Imej-imej (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2546,7 +2617,7 @@ msgid "" "time a song finishes." msgstr "Dalam mod dinamik trek-trek baru akan dipilih dan ditambah ke senarai main setiap kali lagu selesai." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Peti Masuk" @@ -2558,36 +2629,36 @@ msgstr "Sertakan hasil seni album dalam pemberitahuan" msgid "Include all songs" msgstr "Sertakan semua lagu" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Naikkan kadar bunyi sebanyak 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Naikkan kadar bunyi" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informasi" @@ -2595,55 +2666,55 @@ msgstr "Informasi" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Terpasang" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Kunci API tidak sah" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Format tidak sah" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Kaedah tidak sah" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Servis tidak sah" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Kunci sessi tidak sah" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2651,42 +2722,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Trek-trek Paling Kerap Didengar Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Pangkalan data Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2695,11 +2766,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Kekalkan fail-fail asal" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2707,11 +2779,11 @@ msgstr "" msgid "Language" msgstr "Bahasa" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Dewan Besar" @@ -2719,58 +2791,24 @@ msgstr "Dewan Besar" msgid "Large album cover" msgstr "Kulim album besar" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Terakhir dimainkan" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Pustaka Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Stesen Radio Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm sedang sibuk, sila cuba lagi setelah beberapa minit" @@ -2778,11 +2816,11 @@ msgstr "Last.fm sedang sibuk, sila cuba lagi setelah beberapa minit" msgid "Last.fm password" msgstr "Kata laluan Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Bilangan main Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Tag-tag Last.fm" @@ -2790,28 +2828,24 @@ msgstr "Tag-tag Last.fm" msgid "Last.fm username" msgstr "Kata laluan Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Panjang" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Pustaka" @@ -2819,24 +2853,24 @@ msgstr "Pustaka" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Notis imbas semula pustaka" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Carian pustaka" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Had-had" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2848,15 +2882,15 @@ msgstr "Muat" msgid "Load cover from URL" msgstr "Muatkan kulit album dari URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Muatkan kulit album dari URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Muatkan kulit album dari cakera..." @@ -2864,84 +2898,89 @@ msgstr "Muatkan kulit album dari cakera..." msgid "Load playlist" msgstr "Muatkan senarai main" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Muatkan senarai main..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Memuat radio Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Memuat peranti MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Memuat pangkalan data iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Memuat senarai main pintar" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Memuat lagu-lagu" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Memuat strim" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Memuat trek-trek" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Memuat info trek-trek" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Memuat..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Memuat fail-fail/URL, menggantikan senarai main semasa" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Log masuk" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Suka" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Rendah (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Rendah (256x256)" @@ -2953,12 +2992,17 @@ msgstr "" msgid "Lyrics" msgstr "Lirik-lirik" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Lirik-lirik dari %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2970,15 +3014,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2986,7 +3030,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Muat Turun Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Muat turun Magnatune selesai" @@ -2994,15 +3038,20 @@ msgstr "Muat turun Magnatune selesai" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Buatkan senarai main tersedia di luar talian" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3015,15 +3064,15 @@ msgstr "Konfigurasi proksi manual" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Pengeluar" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3035,17 +3084,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Kadar bit maksimum" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Sederhana (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Sederhana (512x512)" @@ -3057,11 +3110,15 @@ msgstr "Jenis keahlian" msgid "Minimum bitrate" msgstr "Kadar bit minimum" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3069,20 +3126,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Pantau pustaka untuk perubahan" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Bulan" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3090,15 +3147,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Dimain Terbanyak" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3107,7 +3168,7 @@ msgstr "" msgid "Move down" msgstr "Alih ke bawah" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Alih ke pustaka..." @@ -3116,7 +3177,7 @@ msgstr "Alih ke pustaka..." msgid "Move up" msgstr "Alih ke atas" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3124,56 +3185,32 @@ msgstr "" msgid "Music Library" msgstr "Pustaka Muzik" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Pustaka Last.fm Saya" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Stesen Radio Saya" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Cadangan Saya" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nama" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opsyen -opsyen penamaan" @@ -3181,23 +3218,19 @@ msgstr "Opsyen -opsyen penamaan" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proksi Rangkaian" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Tidak pernah dimainkan" @@ -3206,21 +3239,21 @@ msgstr "Tidak pernah dimainkan" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Senarai main baru" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Senarai main pintar baru..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Lagu-lagu baru" @@ -3228,24 +3261,24 @@ msgstr "Lagu-lagu baru" msgid "New tracks will be added automatically." msgstr "Trek-trek baru akan ditambah secara automatik" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Trek-trek terbaru" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Seterusnya" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Trek seterusnya" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3253,7 +3286,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3261,7 +3294,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Tiada padanan ditemui. Kosongkan kotak carian untuk paparkan seluruh senarai main semula." @@ -3275,11 +3308,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Tiada satupun lagu-lagu yang dipilih sesuai untuk disalin ke peranti" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3287,43 +3320,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Tidak disambung" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Tidak cukup kandungan" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Tidak cukup peminat" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Tidak cukup ahli" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Tidak dipasang" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Jenis pemberitahuan" @@ -3336,36 +3373,41 @@ msgstr "Pemberitahuan" msgid "Now Playing" msgstr "Sekarang Dimainkan" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Flac Ogg" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Speex Ogg" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Vorbis Ogg" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3373,11 +3415,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Hanya paparkan yang pertama" @@ -3385,23 +3427,23 @@ msgstr "Hanya paparkan yang pertama" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3409,30 +3451,35 @@ msgstr "" msgid "Open device" msgstr "Buka peranti" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Buka dalam senarai main baru" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Buka..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operasi gagal" @@ -3452,23 +3499,23 @@ msgstr "Opsyen..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Aturkan Fail-fail" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Mengatur fail-fail" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Tag-tag asal" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Opsyen-opsyen lain" @@ -3476,7 +3523,7 @@ msgstr "Opsyen-opsyen lain" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3484,15 +3531,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Tindih fail-fail sedia ada" @@ -3504,15 +3547,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3521,20 +3564,20 @@ msgstr "" msgid "Password" msgstr "Kata laluan" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Hentikan sebentar mainbalik" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3543,34 +3586,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Mainkan" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Mainkan Artis atau Tag" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Mainkan radio artis..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Bilangan main" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Mainkan sekiranya telah dihenti, henti sebentar sekiranya sedang main" @@ -3579,45 +3610,42 @@ msgstr "Mainkan sekiranya telah dihenti, henti sebentar sekiranya sedang main" msgid "Play if there is nothing already playing" msgstr "Mainkan sekiranya tiada apa yang tersedia main" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Mainkan radio tag..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Mainkan trek yang ke- dalam senarai main" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Main/Henti sebentar" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Mainbalik" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opsyen-opsyen pemain" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Senarai main" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Senarai main telah selesai" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opsyen-opsyen senarai main" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Jenis senarai main" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3629,23 +3657,23 @@ msgstr "" msgid "Plugin status:" msgstr "Status plugin:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3654,22 +3682,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3705,7 +3734,7 @@ msgstr "Tekankan satu kombinasi butang untuk digunakan bagi" msgid "Press a key" msgstr "Tekankan satu kekunci" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Tekankan satu kombinasi kekunci untuk digunakan bagi %1..." @@ -3716,20 +3745,20 @@ msgstr "Opsyen-opsyen OSD menarik" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Trek sebelumnya" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3737,21 +3766,25 @@ msgstr "" msgid "Profile" msgstr "Profail" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3759,36 +3792,46 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kualiti" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3796,48 +3839,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Memberi kadar populariti lagu semasa 0 bintang" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Memberi kadar populariti lagu semasa 1 bintang" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Memberi kadar populariti lagu semasa 2 bintang" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Memberi kadar populariti lagu semasa 3 bintang" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Memberi kadar populariti lagu semasa 4 bintang" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Memberi kadar populariti lagu semasa 5 bintang" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Kadar populariti" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Betul batalkan?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3845,19 +3888,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3869,8 +3908,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Buang" @@ -3878,7 +3917,7 @@ msgstr "Buang" msgid "Remove action" msgstr "Buangkan tindakan" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3886,73 +3925,77 @@ msgstr "" msgid "Remove folder" msgstr "Buangkan folder" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Buangkan dari senarai main" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Namakan semula senarai main" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Namakan semula senarai main..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Nomborkan semula trek-trek mengikut tertib ini..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Ulang" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Ulangkan album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Ulangkan senarai main" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Ulangkan trek" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Gantikan senarai main semasa" @@ -3961,15 +4004,15 @@ msgstr "Gantikan senarai main semasa" msgid "Replace the playlist" msgstr "Gantikan senarai main" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3977,24 +4020,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4002,15 +4045,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4030,11 +4073,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4046,25 +4089,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Buangkan peranti dengan selamat" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Buangkan peranti dengan selamat selepas menyalin" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4072,27 +4115,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Simpankan kulit album" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Simpankan kulit album ke cakera..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Simpankan imej" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Simpankan senarai main" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Simpankan senarai main..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4108,11 +4157,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Menyimpan trek-trek" @@ -4124,7 +4173,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4132,34 +4181,38 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Cari" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Cari Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Cari Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Cari kulit album..." @@ -4179,21 +4232,21 @@ msgstr "" msgid "Search mode" msgstr "Mod carian" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opsyen-opsyen carian" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Terma-terma carian" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4201,27 +4254,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Pilih semua" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4229,7 +4282,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4245,7 +4298,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4253,7 +4306,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Nombor siri" @@ -4265,51 +4318,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Service di luar talian" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Tetapkan kadar bunyi ke peratus" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Pintasan" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Tunjukkan" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Tunjukkan OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Tunjukkan animasi bersinar di trek semasa" @@ -4337,15 +4390,15 @@ msgstr "Tunjukkan popup dari dulang sistem" msgid "Show a pretty OSD" msgstr "Tunjukkan OSD yang menarik" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Tunjukkan di atas bar status" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Tunjukkan semua lagu" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Tunjukkan kesemua lagu" @@ -4357,32 +4410,36 @@ msgstr "Tunjukkan seni kulit muka dalam pustaka" msgid "Show dividers" msgstr "Tunjukkan pembahagi" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Tunjukkan saiz penuh..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Tunjukkan dalam pelayar fail" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Tunjukkan hanya yang tidak ditag" @@ -4391,8 +4448,8 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Tunjukkan bebutang \"love\" dan \"ban\"" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4406,27 +4463,27 @@ msgstr "Tunjukkan ikon dulang" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Tunjukkan/Sembunyikan" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Kocok" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Kocokkan semua" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Kocokkan senarai main" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4442,7 +4499,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4454,43 +4511,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Bilangan langkau" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Kulit album kecil" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Senarai main pintar" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4498,11 +4563,11 @@ msgstr "" msgid "Song Information" msgstr "Informasi lagu" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info lagu" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4522,15 +4587,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4546,7 +4619,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Ralat log masuk Spotify" @@ -4554,7 +4627,7 @@ msgstr "Ralat log masuk Spotify" msgid "Spotify plugin" msgstr "Plugin Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Plugin Spotify tidak dipasang" @@ -4562,77 +4635,77 @@ msgstr "Plugin Spotify tidak dipasang" msgid "Standard" msgstr "Piawai" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Disukai" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Mulakan transkod" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Henti" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Henti selepas" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Henti selepas trek ini" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Hentikan mainbalik" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Hentikan main selepas trek semasa" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Strim" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4642,7 +4715,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4650,7 +4723,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4658,12 +4731,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Tag-tag dicadangkan" @@ -4672,13 +4745,13 @@ msgstr "Tag-tag dicadangkan" msgid "Summary" msgstr "Rumusan" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4690,43 +4763,35 @@ msgstr "Format-format disokong" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Tab-tab di atas" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tag" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Pengambil tag" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Radio tag" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Kadar bit sasaran" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tekno" @@ -4734,11 +4799,11 @@ msgstr "Tekno" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Terima kasih kepada" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4747,17 +4812,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Nilai kedua mesti lebih besar daripada nilai pertama!" @@ -4765,40 +4825,40 @@ msgstr "Nilai kedua mesti lebih besar daripada nilai pertama!" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Terdapat masalah mengambil metadata dari Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4810,13 +4870,13 @@ msgid "" "deleted:" msgstr "Terdapat masalah memadam beberapa lagu. Fail-fail berikut tidak boleh dipadam:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Fail-fail ini akan dipadam dari peranti, adakah anda pasti untuk meneruskan?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4836,13 +4896,13 @@ msgstr "Tetapan-tetapan ini akan digunakan dalam dialog \"Transkod Muzik\", dan msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Tindakan ini akan mencipta pangkalan data yang mungkin sebesar 150 MB.\nAdakah anda ingin meneruskan juga?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4856,11 +4916,11 @@ msgstr "Peranti ini mesti disambung dan dibuka sebelum Clementine boleh lihat fo msgid "This device supports the following file formats:" msgstr "Peranti ini menyokong format-format fail berikut:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Ini ialah peranti MTP, tapi anda telah mengkompil Clementine tanpa sokongan libmtp." @@ -4869,7 +4929,7 @@ msgstr "Ini ialah peranti MTP, tapi anda telah mengkompil Clementine tanpa sokon msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Ini ialah iPod, tapi anda telah mengkompil Clementine tanpa sokongan libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4879,33 +4939,33 @@ msgstr "Ini kali pertama anda menyambungkan peranti ini. Sekarang Clementine aka msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Strim ini untun pelanggan berbayar sahaja" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Peranti jenis ini tidak disokong: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Tajuk" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Hari ini" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4913,27 +4973,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4941,21 +5001,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Trek" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4967,7 +5031,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4976,11 +5040,11 @@ msgstr "" msgid "Transcoding options" msgstr "Opsyen-opsyen transkod" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4988,72 +5052,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Tidak diketahui" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Ralat tidak diketahui" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5061,7 +5125,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "Kemaskinikan pustaka apabila Clemetine bermula" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5069,21 +5133,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Mengemaskini %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Mengemaskini %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Mengemaskini pustaka" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Penggunaan" @@ -5091,11 +5155,11 @@ msgstr "Penggunaan" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gunakan kekunci pintasan Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5115,7 +5179,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5155,20 +5219,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5190,12 +5254,12 @@ msgstr "MP3 VBR" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Pelbagai artis" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versi %1" @@ -5208,7 +5272,7 @@ msgstr "Paparkan" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5216,11 +5280,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Pengesanan aktiviti suara" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Kadar bunyi %1%" @@ -5238,11 +5306,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5250,7 +5318,7 @@ msgstr "Wav" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Minggu" @@ -5276,32 +5344,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5322,7 +5390,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Audio Windows Media" @@ -5330,25 +5398,25 @@ msgstr "Audio Windows Media" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Inginkah anda menjalankan imbas semula penuh sekarang?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5360,11 +5428,11 @@ msgstr "Tahun" msgid "Year - Album" msgstr "Tahun - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Tahun" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Semalam" @@ -5372,13 +5440,13 @@ msgstr "Semalam" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5388,12 +5456,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5401,13 +5469,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5417,13 +5485,6 @@ msgstr "Anda boleh mendengar lagu-lagu Magnatune secara percuma tanpa akaun. Pem msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Anda suka trek ini" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5468,17 +5543,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "Anda perlu mulakan semula Clementine jika anda ubah bahasa." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5486,42 +5555,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Pustaka anda kosong!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Strim radio anda" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Sifar" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "tambah %n lagu" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "selepas" @@ -5541,19 +5611,19 @@ msgstr "automatik" msgid "before" msgstr "sebelum" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "antara" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "terbesar dahulu" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "mengandungi" @@ -5563,20 +5633,20 @@ msgstr "mengandungi" msgid "disabled" msgstr "dilumpuhkan" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "cakera %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "tidak mengandungi" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "berakhir dengan" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "sama" @@ -5584,11 +5654,11 @@ msgstr "sama" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "lebih besar daripada" @@ -5596,54 +5666,55 @@ msgstr "lebih besar daripada" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "kurang daripada" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "terpanjang dahulu" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "terbaru dahulu" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "opsyen-opsyen" @@ -5655,36 +5726,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "buangkan %n lagu" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "terpendek dahulu" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "terkecil dahulu" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "bermula dengan" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "henti" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "trek %1" diff --git a/src/translations/my.po b/src/translations/my.po index 99fae3979..66e419c09 100644 --- a/src/translations/my.po +++ b/src/translations/my.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Burmese (http://www.transifex.com/projects/p/clementine/language/my/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: my\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "နေ့များ" msgid " kbps" msgstr "တစ်စက္ကန့်ကီလိုဘိုက်နှုန်း" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "မိုက်ခရိုစက္ကန့်" @@ -55,11 +55,16 @@ msgstr "ပွိုင့်ပမာဏ" msgid " seconds" msgstr "စက္ကန့်များ" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "သီချင်းများ" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 အယ်လဘမ်များ" @@ -69,12 +74,12 @@ msgstr "%1 အယ်လဘမ်များ" msgid "%1 days" msgstr "%1 နေ့များ" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 လွန်ခဲ့သောနေ့များ" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 မှအပေါ် %2" @@ -84,48 +89,48 @@ msgstr "%1 မှအပေါ် %2" msgid "%1 playlists (%2)" msgstr "%1 သီချင်းစာရင်းများ (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 ကိုရွေးချယ်ခဲ့" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 သီချင်း" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 သီချင်းများ" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 သီချင်းများရှာတွေ့" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 သီချင်းများရှာတွေ့ (%2 ပြသနေ)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 တေးသံလမ်းကြောများ" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 ကူးပြောင်း" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: ဝီမိုတ်ဒပ်မော်ဂျူး" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 အခြားနားဆင်သူများ" @@ -139,18 +144,21 @@ msgstr "%L1 စုစုပေါင်းတင်ဆက်မှုမျာ msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n ဖွင့်မရ" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n ပြီးဆံုး" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n လက်ကျန်" @@ -162,24 +170,24 @@ msgstr "စာသားတန်းညှိ(&A)" msgid "&Center" msgstr "အလယ်(&C)" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "စိတ်ကြိုက်(&C)" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "အပိုများ(&E)" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "အကူအညီ(&H)" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "ဖုံးကွယ်(&H) %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "ဖုံးကွယ်(&H)... " @@ -187,23 +195,23 @@ msgstr "ဖုံးကွယ်(&H)... " msgid "&Left" msgstr "ဘယ်(&L)" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "ဂီတ(&M)" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "တစ်ခုမျှ(&N)" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "သီချင်းစာရင်း(&P)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "ထွက်(&Q)" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "စနစ်ပြန်ဆို(&R)" @@ -211,23 +219,23 @@ msgstr "စနစ်ပြန်ဆို(&R)" msgid "&Right" msgstr "ညာ(&R)" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "ကုလားဖန်ထိုးစနစ်(&S)" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "ဝင်းဒိုးနဲ့အံကိုက်ကော်လံများကိုဆွဲဆန့်(&S)" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "ကိရိယာများ(&T)" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(အမျိုးမျိုးသောသီချင်းများပေါင်းစုံဖြတ်၍)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...နှင့်အမာရော့ခ်ကူညီသူများအားလံုး" @@ -247,14 +255,10 @@ msgstr "၀ပီအိတ်စ်" msgid "1 day" msgstr "တစ်နေ့" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "တေးသံလမ်းကြောတစ်ခု" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "၁၂၇.၀.၀.၁" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "၁၂၈ကီလိုအမ်ပီသရီး" msgid "40%" msgstr "၄၀%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "ကျပန်းတေးသံလမ်းကြောများ၅၀" @@ -272,12 +276,6 @@ msgstr "ကျပန်းတေးသံလမ်းကြောများ၅ msgid "Upgrade to Premium now" msgstr "အရစ်ကျစနစ်သို့အခုအဆင့်မြှင့်" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "စာရင်းအသစ်တစ်ခုဖန်တီး(သို့)စကားဝှက်ပြန်ပြောင်း" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

မစစ်ဆေးပါကကလီမန်တိုင်းသည်အဆင့်သတ်မှတ်ချက်များနှင့်အခြားစာရင်းဇယားများကိုသီးခြားအချက်အလက်အစုတွင်မှတ်သားပြီးဖိုင်များကိုပြုပြင်မွမ်းမံမှုမလုပ်။

စစ်ဆေးပါကစာရင်းဇယားများကိုအချက်အလက်အစုသာမကဖိုင်များတွင်တိုက်ရိုက်မှတ်သား

ပံုစံတိုင်းတွင်အလုပ်လုပ်မည်မဟုတ်သကဲ့သို့သတ်မှတ်ချက်မရိုကာတစ်ခြားဂီတဖွင့်စက်များဖတ်ရှုနိုင်လိမ့်မည်မဟုတ်။

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "

သီချင်းတိုက်သီချင်းများအားလံုးအတွက်သီချင်းများအဆင့်သတ်မှတ်ချက်များနှင့်ကိန်းဂဏန်းများကိုဖိုင်များအမည်များသို့ရေးလိမ့်မည်။

"အဆင့်သတ်မှတ်ချက်များနှင့်ကိန်းဂဏန်းများကိုဖိုင်အမည်များ"ရွေးပိုင်ခွင့်ကိုအမြဲတမ်းအသက်သွင်းထားပါကမလိုအပ်ပါ။

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

နှင့်အတူတိုကင်များစတင် %, ဥပမာ: %artist %album %title

⏎ ⏎

အကယ်၍သင်တွန့်လိမ်တွန့်ကွင်းများနှင့်တိုကင်ပါဝင်သောစာသားအပိုင်းများကိုဝိုင်းလျှင်၊ အကယ်၍တိုကင်ကအလွတ်ဖြစ်နေလျှင်အဲဒီအပိုင်းကိုဖုံးကွယ်။

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr " ဂရုရှက်အန်နီးဝဲစာရင်းတစ်ခုလိုအပ်။" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "စပေါ့တီဖိုင်းအရစ်ကျစနစ်စာရင်းတစ်ခုလိုအပ်။" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "မှန်ကန်သောကုဒ်ထည့်သွင်းနိုင်မှသာအသံုးပြုသူဆက်သွယ်နိုင်။" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "ချက်ချာသီချင်းစာရင်းသည်သင့်ရဲ့သီချင်းတိုက်မှသီချင်းများကိုပြောင်းလဲနိုင်ပါသည်။ သီချင်းများကိုရွေးချယ်ခြင်းနည်းလမ်းအမျိုးမျိုးပါဝင်သောချက်ချာသီချင်းစာရင်းအမျိုးမျိုးလည်းရှိပါသည်။" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "သီချင်းသည်လိုအပ်ချက်များနှင့်ပြည့်စံုပါကသီချင်းစာရင်းတွင်ထည့်သွင်းပါဝင်ပါလိမ့်မည်။" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "အေ-ဇီး" @@ -347,36 +356,35 @@ msgstr "အေအေစီ၃၂ကီလို" msgid "AAC 64k" msgstr "အေအေစီ၆၄ကီလို" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "အေအိုင်အက်ဖ်အက်ဖ်" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "အံ့မခန်းဖွယ်အားလံုးကိုဟိုက်ဖ်နိုဖားသို့" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "ဖျက်သိမ်း" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "ခန့် %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "ကလီမန်တိုင်းအကြောင်း" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "ကျူတီအကြောင်း..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "စာရင်းအသေးစိတ်အကြောင်းအရာများ" @@ -388,11 +396,15 @@ msgstr "စာရင်းအသေးစိတ်အကြောင်းအရ msgid "Action" msgstr "လုပ်ဆောင်ချက်" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "ဝိုင်ယာမုတ်သက်ဝင်လှုပ်ရှား/သက်ဝင်မလှုပ်ရှား" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "ပို့စ်ကဒ်ထည့်" @@ -408,39 +420,39 @@ msgstr "သတိပေးချက်ပုံစံလက်ခံပါကလ msgid "Add action" msgstr "လုပ်ဆောင်ချက်ထည့်ပါ" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "သီချင်းစီးကြောင်းနောက်တစ်ခုထည့်..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "ဖိုင်လမ်းညွှန်ထည့်..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "ဖိုင်ထည့်" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "ဖိုင်များကိုပံုစံပြောင်းလဲသူသို့ထည့်ပါ" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "ဖိုင်(များ)ကိုပံုစံပြောင်းလဲသူသို့ထည့်ပါ" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "ဖိုင်ထည့်..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "ဖိုင်များကိုပံုစံပြောင်းလဲရန်ထည့်ပါ" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "ဖိုင်တွဲထည့်" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "ဖိုင်တွဲထည့်..." @@ -452,11 +464,11 @@ msgstr "ဖိုင်တွဲအသစ်ထည့်..." msgid "Add podcast" msgstr "ပို့စ်ကဒ်ထည့်" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "ပို့စ်ကဒ်ထည့်..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "ရှာဖွေစကားရပ်ထည့်ပါ" @@ -520,6 +532,10 @@ msgstr "သီချင်းကျော်သံအရေအတွက်ထည msgid "Add song title tag" msgstr "သီချင်းခေါင်းစဉ်အမည်ထည့်" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "သီချင်းတေးသံလမ်းကြောအမည်ထည့်" @@ -528,22 +544,34 @@ msgstr "သီချင်းတေးသံလမ်းကြောအမည် msgid "Add song year tag" msgstr "သီချင်းနှစ်အမည်ထည့်" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "သီချင်းစီးကြောင်းထည့်..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "ဂရုရှက်အနှစ်သက်ဆုံးများသို့ထည့်" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "ဂရုရှက်သီချင်းစာရင်းများသို့ထည့်" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "သီချင်းစာရင်းနောက်တစ်ခုသို့ထည့်" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "သီချင်းစာရင်းသို့ထည့်" @@ -552,6 +580,10 @@ msgstr "သီချင်းစာရင်းသို့ထည့်" msgid "Add to the queue" msgstr "စီတန်းထဲသို့ထည့်ပါ" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "ဝီမိုတ်ဒပ်လုပ်ဆောင်ချက်ကိုထည့်" @@ -581,15 +613,15 @@ msgstr "ယခုနေ့ကိုထည့်သွင်းပြီး" msgid "Added within three months" msgstr "၃လအတွင်းထည့်သွင်းပြီး" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "ငါ့ဂီတသို့သီချင်းများထည့်" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "အနှစ်သက်ဆုံးများသို့သီချင်းများထည့်" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "အဆင့်မြင့်အုပ်စုဖွဲ့ခြင်း..." @@ -597,12 +629,12 @@ msgstr "အဆင့်မြင့်အုပ်စုဖွဲ့ခြင် msgid "After " msgstr "ပြီးနောက်" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "ကူးယူပြီးနောက်..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "ကူးယူပြီးနောက်..." msgid "Album" msgstr "အယ်လဘမ်" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "အယ်လဘမ် (တေးသံလမ်းကြောများအားလံုးအတွက်အကောင်းဆုံးအသံကျယ်ကျယ်)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "အယ်လဘမ်အနုပညာရှင်" msgid "Album cover" msgstr "အယ်လဘမ်အဖုံး" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "ဂျမန်ဒို.ကွမ်းမှအယ်လဘမ်အချက်အလက်..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "အဖုံးများနဲ့အယ်လဘမ်များ" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "အဖုံးများနဲ့အယ်လဘမ်များ" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "ဖိုင်များအားလံုး(*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "အံ့မခန်းဖွယ်အားလံုးကိုဟိုက်ဖ်နိုဖားသို့!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "အယ်လဘမ်များအားလံုး" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "အနုပညာရှင်များအားလံုး" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "ဖိုင်များအားလံုး(*)" @@ -661,19 +694,19 @@ msgstr "ဖိုင်များအားလံုး(*)" msgid "All playlists (%1)" msgstr "သီချင်းစာရင်းများအားလံုး(%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "ဘာသာပြန်များအားလံုး" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "တေးသံလမ်းကြောများအားလံုး" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "ယခုကွန်ပျုတာမှသီချင်းကူးဆွဲရန်အသုံးပြုသူကိုခွင့်ပြု။" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "ကူးဆွဲများခွင့်ပြု" @@ -698,30 +731,30 @@ msgstr "အဓိကဝင်းဒိုးအမြဲတမ်းပြသ" msgid "Always start playing" msgstr "သီချင်းအမြဲတမ်းစတင်ဖွင့်" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "စပေါ့တီဖိုင်ကိုကလီမန်တိုင်းတွင်အသံုးပြုရန်နောက်ထပ်ဖြည့်စွက်ပရိုဂရမ်လိုအပ်။ သင်ကူးဆွဲပြီးယခုသွင်းလိုပါသလား?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "အိုင်ကျွန်းအချက်အလက်အစုထည့်သွင်းနေစဉ်အမှားပြ" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "'%1' သို့အချက်အလက်ဖွဲ့စည်းမှုရေးနေစဉ်အမှားပြ" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "အမှားသေချာမသိဖြစ်ပေါ်။" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "နှင့်:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "ဒေါသထွက်" @@ -730,13 +763,13 @@ msgstr "ဒေါသထွက်" msgid "Appearance" msgstr "ပုံပန်းသဏ္ဎာန်" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "ဖိုင်များ/ယူအာအလ်များသီချင်းစာရင်းသို့ဖြည့်စွက်" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "ယခုသီချင်းစာရင်းသို့ဖြည့်စွက်" @@ -744,52 +777,47 @@ msgstr "ယခုသီချင်းစာရင်းသို့ဖြည် msgid "Append to the playlist" msgstr "သီချင်းစာရင်းသို့ဖြည့်စွက်" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "ဖြတ်ညှပ်ခံရခြင်းကာကွယ်ရန်ချုံ့" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "ယခု \"%1\" ကြိုတင်ထိန်းညှိပယ်ဖျက်မှာသေချာသလား?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "ဒီသီချင်းစာရင်းပယ်ဖျက်မှာသေချာသလား?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "ယခုသီချင်းစာရင်းဇယားပြန်လည်ထိန်းညှိမှာသေချာသလား?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "သီချင်းတိုက်သီချင်းများအားလံုးအတွက်သီချင်းကိန်းဂဏန်းအချက်အလက်များကိုသီချင်းဖိုင်အဖြစ်ရေးလိုပါသလား?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "အနုပညာရှင်" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "အနုပညာရှင်အချက်အလက်" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "အနုပညာရှင်ရေဒီယို" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "အနုပညာရှင်အမည်များ" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "အနုပညာရှင်အမည်၏အစ" @@ -797,9 +825,13 @@ msgstr "အနုပညာရှင်အမည်၏အစ" msgid "Audio format" msgstr "အသံပုံစံ" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "အထောက်အထားစစ်ဆေးခြင်းမမှန်" @@ -807,7 +839,7 @@ msgstr "အထောက်အထားစစ်ဆေးခြင်းမမှ msgid "Author" msgstr "စာဆို" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "စာဆိုများ" @@ -823,7 +855,7 @@ msgstr "အလိုအလျောက်မွမ်းမံခြင်း" msgid "Automatically open single categories in the library tree" msgstr "သီချင်းတိုက်ဖွဲ့စည်းပံုမှာတစ်ခုတည်းအတန်းအစားများအလိုအလျောက်ဖွင့်" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "ရနိုင်" @@ -831,15 +863,15 @@ msgstr "ရနိုင်" msgid "Average bitrate" msgstr "ပျမ်းမျှဘစ်နှုန်း" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "ပျမ်းမျှပုံအရွယ်အစား" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "ဘီဘီစီပို့စ်ကဒ်များ" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "ဘီပီအမ်" @@ -860,7 +892,7 @@ msgstr "နောက်ခံပုံ" msgid "Background opacity" msgstr "နောက်ခံအလင်းပိတ်" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "အချက်အလက်အစုအရန်မှတ်သိမ်း" @@ -868,11 +900,7 @@ msgstr "အချက်အလက်အစုအရန်မှတ်သိမ် msgid "Balance" msgstr "ချိန်ညှိချက်" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "တားမြစ်" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "တိုင်စိစစ်သူ" @@ -892,18 +920,17 @@ msgstr "လုပ်ဆောင်ပုံ" msgid "Best" msgstr "အကောင်းဆုံး" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "%1 မှအတ္ထုပ္ပတ္တိ" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "ဘစ်နှုန်း" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "ဘစ်နှုန်း" msgid "Bitrate" msgstr "ဘစ်နှုန်း" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "ဘလောက်စိစစ်သူ" @@ -927,7 +959,7 @@ msgstr "မှုန်ဝါးပမာဏ" msgid "Body" msgstr "စာကိုယ်" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "မြည်ဟိန်းသံစိစစ်သူ" @@ -941,11 +973,11 @@ msgstr "သေတ္တာ" msgid "Browse..." msgstr "လျှောက်ကြည့်..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "ကြားခံကြာချိန်" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "ကြားခံ" @@ -957,43 +989,66 @@ msgstr "သို့သော်ရင်းမြစ်များမလုပ msgid "Buttons" msgstr "ခလုတ်များ" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "စီဒီဒီအေ" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "ကယူးအပြားအထောက်အကူ" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "ပယ်ဖျက်" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "အနုပညာအဖုံးပြောင်းလဲ" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "ဖွန်အရွယ်ပြောင်းလဲ" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "ပြန်ဆိုစနစ်ပြောင်းလဲ" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "အတိုကောက်ပြောင်းလဲ..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "ကုလားဖန်ထိုးစနစ်ပြောင်းလဲ" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "ဒီဘာသာစကားပြောင်းလဲ" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "ပြန်ဖွင့်လိုလားချက်များပ msgid "Check for new episodes" msgstr "တွဲအသစ်များစစ်ဆေးခြင်း" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "မွမ်းမံများစစ်ဆေးခြင်း..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "သင့်ရဲ့ချက်ချာသီချင်းစာရင်းအတွက်နာမည်တစ်ခုရွေး" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "အလိုအလျောက်ရွေးချယ်ခြင်း" @@ -1027,11 +1086,11 @@ msgstr "ဖွန်ရွေးချယ်..." msgid "Choose from the list" msgstr "စာရင်းမှရွေး" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "သီချင်းစာရင်းကိုဘယ်သို့မျိုးတူစုမည်၊ ပြီးနောက်သီချင်းဘယ်နှစ်ပုဒ်ပါဝင်မည်ဟုရွေးချယ်ပါ" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "ပို့စ်ကဒ်ကူးဆွဲဖိုင်လမ်းညွှန်ရွေးချယ်" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "သီချင်းစာသားများရှာဖွေရန်ကလီမန်တိုင်းအသံုးချ၍ဝက်ဘ်ဆိုက်များရွေးချယ်" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "ဂန္တဝင်" @@ -1048,17 +1107,17 @@ msgstr "ဂန္တဝင်" msgid "Cleaning up" msgstr "ရှင်းထုတ်ဖြစ်" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "ဖယ်ထုတ်" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "သီချင်းစာရင်းဖယ်ထုတ်" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "ကလီမန်တိုင်း" @@ -1071,8 +1130,8 @@ msgstr "ကလီမန်တိုင်းအမှားပြ" msgid "Clementine Orange" msgstr "ကလီမန်တိုင်းလိမ္မော်" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "ကလီမန်တိုင်းပုံဖော်ကြည့်ခြင်း" @@ -1094,9 +1153,9 @@ msgstr "တရော့ဘောက်စ်သို့ကူးတင်ပြ msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "ဂူဂယ်ဒရိုက်ဗ်သို့ကူးတင်ပြီးဂီတများကိုကလီမန်တိုင်းဖွင့်နိုင်" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "ဦးဘွန်တူးဝမ်းသို့ကူးတင်ပြီးဂီတများကိုကလီမန်တိုင်းဖွင့်နိုင်" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "ကလီမန်တိုင်းသည်မှာယူခြင်းစာရင်းရှိတစ်ခြားကွန်ပျုတာများနှင့်ပို့စ်ကဒ်လုပ်ငန်းသုံးပရိုဂရမ်များနှင့်တစ်သားတည်းလုပ်ဆောင်နိုင်။စာရင်းဖန်တီးပါ." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "ပရောဂျက်အမ်ပုံဖော်ကြည့်ခြင်းများတစ်ခုမျှကလီမန်တိုင်းမထည့်သွင်းနိုင်။ ကလီမန်တိုင်းသေချာစွာသွင်းပြီးကြောင်းစစ်ဆေးပါ။" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "သင့်ရဲ့ဆက်သွယ်မှု၌ပြသနာများကြုံနေ၍ကလီမန်တိုင်းမှမှာယူခြင်းအခြေအနေမယူဆောင်နိုင်ပါ။ ဖွင့်ပြီးတေးသံလမ်းကြောများကိုမှတ်သား၍လက်စ်.အက်ဖ်အမ်သို့မကြာမီပေးပို့မည်။" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "ကလီမန်တိုင်းပုံကြည့်ကိရိယာ" @@ -1134,11 +1186,11 @@ msgstr "ယခုဖိုင်အတွက်ရလဒ်များကလီ msgid "Clementine will find music in:" msgstr "ကလီမန်တိုင်းသည်ဂီတကိုဤတွင်ရှာဖွေ: " -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "ဂီတအနည်းငယ်ထည့်ရန်ဒီမှာကလစ်နှိပ်ပါ" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "မှတ်သားသိမ်းဆည်းရန်ယခုသီ msgid "Click to toggle between remaining time and total time" msgstr "လက်ကျန်အချိန်နှင့်စုစုပေါင်းအချိန်အကြားဖွင့်ပိတ်လုပ်ရန်ကလစ်နှိပ်" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "ပိတ်" msgid "Close playlist" msgstr "သီချင်းစာရင်းပိတ်" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "ပုံဖော်ကြည့်ခြင်းပိတ်" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "ယခုဝင်းဒိုးပိတ်လျှင်ကူးဆွဲပယ်ဖျက်သွားလိမ့်မည်။" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "ယခုဝင်းဒိုးပိတ်လျှင်အယ်လဘမ်အဖုံးများရှာဖွေခြင်းရပ်သွားလိမ့်မည်။" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "ကလပ်" @@ -1183,73 +1238,78 @@ msgstr "ကလပ်" msgid "Colors" msgstr "အရောင်များ" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "အမျိုးအစားစာရင်းခွဲခြားရန်ပုဒ်ရပ်: အမျိုးအစား, အမျိုးအစားက ၀-၃" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "ထင်မြင်ချက်" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "အမည်များအလိုအလျောက်ဖြည့်" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "အမည်များအလိုအလျောက်ဖြည့်..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "တေးရေး" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "ပုံစံပြင် %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "ဂရုရှက်ပုံစံပြင်..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "လက်စ်.အက်ဖ်အမ်ပုံစံပြင်..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "မက်နာကျွန်းပုံစံပြင်..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "အတိုကောက်များပုံစံပြင်" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "စပေါ့တီဖိုင်ပုံစံပြင်..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "ဆပ်ဆိုးနစ်ပုံစံပြင်..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "အနှံ့ရှာဖွေပုံစံပြင်..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "သီချင်းတိုက်ပုံစံပြင်..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "ပို့စ်ကဒ်များပုံစံပြင်..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "ပုံစံပြင်..." @@ -1257,11 +1317,11 @@ msgstr "ပုံစံပြင်..." msgid "Connect Wii Remotes using active/deactive action" msgstr "သက်ဝင်လှုပ်ရှား/သက်ဝင်မလှုပ်ရှားလုပ်ဆောင်ချက်သံုး၍ဝီအဝေးထိန်းကိုချိတ်ဆက်" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "ပစ္စည်းချိတ်ဆက်" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "စပေါ့တီဖိုင်သို့ချိတ်ဆက်" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "ဆာဗာမှဆက်သွယ်ခြင်းငြင်းပယ်၊ဆာဗာယူအာအယ်ပြန်စစ်ဆေးပါ။ ဥပမာ: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "ဆက်သွယ်ချိန်ကုန်ဆံုး၊ ဆာဗာယူအာအယ်ပြန်စစ်ဆေးပါ။ ဥပမာ: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "ခလုတ်ခုံ" @@ -1292,17 +1356,21 @@ msgstr "ဂီတအားလံုးကူးပြောင်း" msgid "Convert any music that the device can't play" msgstr "ယခုပစ္စည်းမဖွင့်နိုင်သောဂီတမျိုးစံုကူးပြောင်း" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "အောက်ခံကတ်ပြားသို့ကူးယူ" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "ပစ္စည်းသို့ကူးယူ" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "သီချင်းတိုက်သို့ကူးယူ..." @@ -1310,156 +1378,152 @@ msgstr "သီချင်းတိုက်သို့ကူးယူ..." msgid "Copyright" msgstr "မူပိုင်ခွင့်" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "ဆပ်ဆိုးနစ်သို့မဆက်သွယ်နိုင်၊ ဆာဗာယူအာအယ်ပြန်စစ်ဆေးပါ။ ဥပမာ: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "ဂျီသီချင်းစီးကြောင်းအစိတ်အပိုင်းမဖန်တီးနိင် \"%1\" - လိုအပ်သောဂျီသီချင်းစီးကြောင်းဖြည့်စွက်ပရိုဂရမ်များအားလံုးသွင်းပြီးပါစေ" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 အတွက်မြုစာမရှာဖွေနိင်၊ ဂျီသီချင်းစီးကြောင်းလိုအပ်သောဖြည့်စွက်ပရိုဂရမ်များသွင်းပြီးမပြီးစစ်ဆေး" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "%1 အတွက်သီချင်းပြောင်းသူမရှာဖွေနိင်၊ ဂျီသီချင်းစီးကြောင်းလိုအပ်သောဖြည့်စွက်ပရိုဂရမ်များသွင်းပြီးမပြီးစစ်ဆေး" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "လက်စ်.အက်ဖ်အမ်ရေဒီယိုထုတ်လွှင့်မှုဌာနမထည့်သွင်းနိုင်" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "ပေးပို့ဖိုင်ဖွင့်မရ %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "အဖုံးမန်နေဂျာ" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "ပုံမြှပ်မှအနုပညာအဖုံး" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "%1 မှအနုပညာအဖုံးအလိုအလျောက်ထည့်သွင်း" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "အနုပညာအဖုံးလက်အားသံုးမသတ်မှတ်" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "အနုပညာအဖုံးသတ်မှတ်မထား" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "%1 မှအနုပညာအဖုံးသတ်မှတ်" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "%1 မှအဖုံးများ" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "ဂရုရှက်သီချင်းစာရင်းအသစ်တစ်ခုဖန်တီး" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "တေးသံလမ်းကြောများအလိုအလျောက်ပြောင်းလဲသွားသောအခါအရောင်မှိန်ဖြတ်သန်း" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "တေးသံလမ်းကြောများလက်အားသံုးပြောင်းလဲသွားသောအခါအရောင်မှိန်ဖြတ်သန်း" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "ကွန်+အော်+ဗီ" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "ကွန်+ဘီ" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "ကွန်+အောက်" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "ကွန်+အီး" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "ကွန်+အိပ်ရ့်ှ" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "ကွန်+ဂျေ" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "ကွန်+ကေ" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "ကွန်+အယ်လ်" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "ကွန်+အမ်" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "ကွန်+အန်" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "ကွန်+အို" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "ကွန်+ပီ" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "ကွန်+ကျူ" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "ကွန်+အက်စ်" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "ကွန်+ရှစ်ပ်+အေ" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "ကွန်+ရှစ်ပ်+အို" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "ကွန်+တီ" @@ -1467,7 +1531,7 @@ msgstr "ကွန်+တီ" msgid "Ctrl+Up" msgstr "ကွန်+အပေါ်" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "စိတ်ကြိုက်" @@ -1479,54 +1543,50 @@ msgstr "စိတ်ကြိုက်ပုံ:" msgid "Custom message settings" msgstr "စိတ်ကြိုက်မှာကြားချက်ချိန်ညှိချက်" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "စိတ်ကြိုက်ရေဒီယို" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "စိတ်ကြိုက်..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "ဒီဘတ်စ်လမ်းကြောင်း" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "အက" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "အချက်အလက်အစုပျက်ဆီးနေမှုတွေ့ရှိ။ https://code.google.com/p/clementine-player/wiki/DatabaseCorruption အချက်အလက်အစုမည်သို့ပြန်ယူရန်ဤတွင်ဖတ်ရှု" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "ရက်စွဲဖန်တီးပြီး" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "ရက်စွဲမွမ်းမံပြီး" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "နေ့များ" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "မူလအခြေအနေ(&f)" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "အသံပမာဏ၄%ခန့်လျှော့ချ" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "အသံပမာဏ ရာခိုင်နှုန်းခန့်လျှော့ချ" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "အသံပမာဏလျှော့ချ" @@ -1534,6 +1594,11 @@ msgstr "အသံပမာဏလျှော့ချ" msgid "Default background image" msgstr "မူလပံုစံနောက်ခံပုံ" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "မူလပံုစံများ" @@ -1542,30 +1607,30 @@ msgstr "မူလပံုစံများ" msgid "Delay between visualizations" msgstr "ပုံဖော်ကြည့်ခြင်းများအကြားနှောင့်နှေး" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "ပယ်ဖျက်" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "ဂရုရှက်သီချင်းစာရင်းပယ်ဖျက်" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "ကူးဆွဲပြီးအချက်အလက်ပယ်ဖျက်" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "ဖိုင်များပယ်ဖျက်" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "ပစ္စည်းမှပယ်ဖျက်..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "ဓာတ်ပြားမှပယ်ဖျက်..." @@ -1573,31 +1638,31 @@ msgstr "ဓာတ်ပြားမှပယ်ဖျက်..." msgid "Delete played episodes" msgstr "ဖွင့်ပြီးတွဲများပယ်ဖျက်" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "ကြိုတင်ထိန်းညှိပယ်ဖျက်" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "ချက်ချာသီချင်းစာရင်းပယ်ဖျက်" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "မူရင်းဖိုင်များပယ်ဖျက်" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "ဖိုင်များပယ်ဖျက်နေ" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "ရွေးချယ်တေးသံလမ်းကြောများမစီတန်း" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "တေးသံလမ်းကြောမစီတန်း" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "သွားမည့်နေရာ" @@ -1606,7 +1671,7 @@ msgstr "သွားမည့်နေရာ" msgid "Details..." msgstr "အသေးစိတ်အကြောင်းအရာများ..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "ပစ္စည်း" @@ -1618,15 +1683,15 @@ msgstr "ပစ္စည်းဂုဏ်သတ္တိများ" msgid "Device name" msgstr "ပစ္စည်းနာမည်" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "ပစ္စည်းဂုဏ်သတ္တိများ..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "ပစ္စည်းများ" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "ကြာချိန်မလုပ်ဆောင်စေ" msgid "Disable moodbar generation" msgstr "စိတ်နေစိတ်ထားဘားမျဉ်းတိုးတက်လာမှုမလုပ်ဆောင်စေ" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "မလုပ်ဆောင်စေ" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "ချပ်ပြားဝိုင်း" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "ဆက်လက်မထုတ်လွှင့်ခြင်း" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "ပြသခြင်းရွေးပိုင်ခွင့်များ" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်ပြသခြင်း" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "သီချင်းတိုက်အပြည့်ပြန်လည်ဖတ်ရှု" @@ -1698,27 +1768,27 @@ msgstr "ဂီတတစ်ခုမှမကူးပြောင်း" msgid "Do not overwrite" msgstr "အစားထိုးမရေး" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "မပြန်ဆို" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "အနုပညာရှင်များအမျိုးမျိုးမပြသ" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "ကုလားဖန်မထိုး" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "မရပ်ဆိုင်းနဲ့!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "လှုဒါန်း" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "ဖွင့်ရန်ကလစ်နှစ်ခါနှိပ်" @@ -1726,12 +1796,13 @@ msgstr "ဖွင့်ရန်ကလစ်နှစ်ခါနှိပ်" msgid "Double clicking a song will..." msgstr "ကလစ်နှစ်ခါနှိပ်ခြင်းဖြင့်သီချင်းဟာ..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "တွဲများ %n ကူးဆွဲ" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "ဖိုင်လမ်းညွှန်ကူးဆွဲ" @@ -1747,7 +1818,7 @@ msgstr "အသင်းဝင်ကူးဆွဲ" msgid "Download new episodes automatically" msgstr "တွဲအသစ်များအလိုအလျောက်ကူးဆွဲ" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "စီတန်းပြီးကူးဆွဲ" @@ -1755,15 +1826,15 @@ msgstr "စီတန်းပြီးကူးဆွဲ" msgid "Download the Android app" msgstr "စက်ရုပ်အပ်များကူးဆွဲ" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "ဒီအယ်လဘမ်ကူးဆွဲ" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "ဒီအယ်လဘမ်ကူးဆွဲ..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "ဒီတွဲကူးဆွဲ" @@ -1771,7 +1842,7 @@ msgstr "ဒီတွဲကူးဆွဲ" msgid "Download..." msgstr "ကူးဆွဲ..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "ကူးဆွဲ(%1%)..." @@ -1780,23 +1851,23 @@ msgstr "ကူးဆွဲ(%1%)..." msgid "Downloading Icecast directory" msgstr "အိုင့်ကက်စ်ဖိုင်လမ်းညွှန်ကူးဆွဲနေ" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "ဂျမန်တိုစာရင်းကူးဆွဲနေ" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "မက်နကျွန်းစာရင်းကူးဆွဲနေ" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "စပေါ့တီဖိုင်ဖြည့်စွက်ပရိုဂရမ်ကူးဆွဲနေ" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "အချက်အလက်ဖွဲ့စည်းမှုကူးဆွဲနေ" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "ပြန်လည်နေရာချထားရန်တရွတ်တိုက်ဆွဲ" @@ -1816,20 +1887,20 @@ msgstr "ကြာချိန်" msgid "Dynamic mode is on" msgstr "စနစ်အရှင်ဖွင့်ထား" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "ကျပန်းရောသမမွှေအရှင်" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "ချက်ချာသီချင်းစာရင်းပြင်ဆင်..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "အမည်ပြင်ဆင် \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "အမည်ပြင်ဆင်..." @@ -1841,16 +1912,16 @@ msgstr "အမည်များပြင်ဆင်..." msgid "Edit track information" msgstr "တေးသံလမ်းကြောအချက်အလက်ပြင်ဆင်" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "တေးသံလမ်းကြောအချက်အလက်ပြင်ဆင်..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "တေးသံလမ်းကြောများအချက်အလက်ပြင်ဆင်..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "ပြင်ဆင်..." @@ -1858,6 +1929,10 @@ msgstr "ပြင်ဆင်..." msgid "Enable Wii Remote support" msgstr "ဝီအဝေးထိန်းအထောက်အကူလုပ်ဆောင်စေ" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "အသံထိန်းညှိသူလုပ်ဆောင်စေ" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "ရှာဖွေရလဒ်များတွင်ပါဝင်စေရန်အောက်ရှိရင်းမြစ်များကိုလုပ်ဆောက်စေ။ ရလဒ်များအစဉ်အလိုက်ပြသလိမ့်မည်။" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "လက်စ်.အက်ဖ်အမ်အလိုအလျောက်သီချင်းနာမည်ပေးပို့ခြင်းလုပ်ဆောင်စေ/မလုပ်ဆောင်စေ" @@ -1900,15 +1975,10 @@ msgstr "အင်တာနက်မှအဖံုးများကူးဆွ msgid "Enter a filename for exported covers (no extension):" msgstr "တင်ပို့ပြီးအဖံုးများအတွက်ဖိုင်နာမည်ထည့်(နောက်ဆက်တွဲမပါ):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "ဒီသီချင်းစာရင်းအတွက်နာမည်အသစ်တစ်ခုရွေး" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "လက်စ်.အက်ဖ်အမ်ရေဒီယိုစတင်နားထောင်ရန် အနုပညာရှင် သို့ အမည် ထည့်ပါ။" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "အိုင်ကျွန်းစတိုးထဲရှိပို msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "ဂျီပေါ့တာ.နက်ထဲရှိပို့စ်ကဒ်များကိုရှာဖွေရန်ရှာဖွေစကားရပ်များကိုအောက်တွင်ထည့်သွင်းပါ" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "ရှာဖွေစကားရပ်များဒီမှာထည့်သွင်း" @@ -1931,11 +2001,11 @@ msgstr "ရှာဖွေစကားရပ်များဒီမှာထည msgid "Enter the URL of an internet radio stream:" msgstr "အင်တာနက်ရေဒီယိုသီချင်းစီးကြောင်းယူအာအလ်ထည့်:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "ဒီဖိုင်တွဲအတွက်နာမည်အသစ်တစ်ခုရွေး" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "ကလီမန်တိုင်းသို့ချိတ်ဆက်ရန်ယခုအပ်တွင်အိုင်ပီထည့်သွင်းပါ။" @@ -1943,21 +2013,22 @@ msgstr "ကလီမန်တိုင်းသို့ချိတ်ဆက် msgid "Entire collection" msgstr "စုပေါင်းမှုတစ်ခုလုံး" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "အသံထိန်းညှိသူ" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "--log-levels *:1တူညီ" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Equivalent to --log-levels *:3တူညီ" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "အမှားပြ" @@ -1965,38 +2036,38 @@ msgstr "အမှားပြ" msgid "Error connecting MTP device" msgstr "အမ်တီပီပစ္စည်းချိတ်ဆက်မှုအမှားပြ" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "သီချင်းများကူးယူမှုအမှားပြ" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "သီချင်းများပယ်ဖျက်မှုအမှားပြ" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "စပေါ့တီဖိုင်ဖြည့်စွက်ပရိုဂရမ်ကူးဆွဲမှုအမှားပြ" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "ထည့်သွင်းခြင်းအမှားပြ %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "ဒီအိုင်.အက်ဖ်အမ်သီချင်းစာရင်းထည့်သွင်းအမှားပြ" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "ဆောင်ရွက်ခြင်းအမှားပြ %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "အသံဓာတ်ပြားထည့်သွင်းနေခြင်းအမှားပြ" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "သီချင်းဖွင့်ခဲ့သမျှ" @@ -2028,7 +2099,7 @@ msgstr "၆နာရီတိုင်း" msgid "Every hour" msgstr "နာရီတိုင်း" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "အယ်လဘမ်တူသို့ကယူးအပြားပေါ်မှတေးသံလမ်းကြောများအကြားမှလွဲ၍" @@ -2040,7 +2111,7 @@ msgstr "တည်ရှိပြီးအဖံုးများ" msgid "Expand" msgstr "ချဲ့တွင်" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "%1 တွင်သက်တမ်းကုန်" @@ -2061,36 +2132,36 @@ msgstr "ကူးဆွဲပြီးအဖံုးများတင်ပိ msgid "Export embedded covers" msgstr "အဖံုးမြှပ်များတင်ပို့" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "တင်ပို့ခြင်းပြီးဆံုး" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "တင်ပို့ပြီး %1 အဖံုးများရရှိ %2 မှ (%3 ခုန်ကျော်)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "အက်ဖ်၁" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "အက်ဖ်၂" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "အက်ဖ်၅" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "အက်ဖ်၆" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "အက်ဖ်၇" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "အက်ဖ်၈" @@ -2100,42 +2171,42 @@ msgstr "အက်ဖ်၈" msgid "FLAC" msgstr "အက်ဖ်အယ်အေစီ" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "ရပ်တန့်နေစဥ်အပြင်သို့အရောင်မှိန်၊ပြန်စလျှင်အတွင်းသို့အရောင်မှိန်" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "တေးသံလမ်းကြောရပ်နေစဉ်အပြင်သို့အရောင်မှိန်" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "အရောင်မှိန်" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "အရောင်မှိန်ကြာချိန်" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "ဖိုင်လမ်းညွှန်များယူဆောင်ခြင်းမရ" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "ပို့စ်ကဒ်များယူဆောင်ခြင်းမရ" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "ပို့စ်ကဒ်များထည့်သွင်းခြင်းမရ" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "အာအက်စ်အက်စ်ဖိဒ်များအတွက်အိက်စ်အမ်အယ်ကိုမရယူနိင်" @@ -2144,11 +2215,11 @@ msgstr "အာအက်စ်အက်စ်ဖိဒ်များအတွက msgid "Fast" msgstr "မြန်သော" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "အနှစ်သက်ဆုံးများ" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "အနှစ်သက်ဆုံးတေးသံလမ်းကြောများ" @@ -2164,11 +2235,11 @@ msgstr "အလိုအလျောက်ယူဆောင်ခြင်း" msgid "Fetch completed" msgstr "ယူဆောင်ခြင်းပြီးဆံုး" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "ဆပ်ဆိုးနစ်သီချင်းတိုက်ယူဆောင်နေ" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "အဖုံးအမှားယူဆောင်နေ" @@ -2176,7 +2247,7 @@ msgstr "အဖုံးအမှားယူဆောင်နေ" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "ဖိုင်နောက်ဆက်တွဲ" @@ -2184,19 +2255,23 @@ msgstr "ဖိုင်နောက်ဆက်တွဲ" msgid "File formats" msgstr "ဖိုင်ပုံစံများ" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "ဖိုင်နာမည်" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "ဖိုင်နာမည် (လမ်းကြောင်းနှင့်မဟုတ်)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "ဖိုင်ပမာဏ" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "ဖိုင်အမျိုးအစား" msgid "Filename" msgstr "ဖိုင်နာမည်" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "ဖိုင်များ" @@ -2214,15 +2289,19 @@ msgstr "ဖိုင်များ" msgid "Files to transcode" msgstr "ဖိုင်များကိုပံုစံပြောင်းလဲ" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "သတ်မှတ်ထားသောစံဟပ်စပ်သောသီချင်းများသီချင်းတိုက်တွင်ရှာဖွေ" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "လက်ဗွေနှိပ်သီချင်း" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "ပြီးဆုံး" @@ -2230,7 +2309,7 @@ msgstr "ပြီးဆုံး" msgid "First level" msgstr "ပထမဆံုးအဆင့်" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "အက်ဖ်အယ်အေစီ" @@ -2246,12 +2325,12 @@ msgstr "လိုင်စင်အကြောင်းများကြော msgid "Force mono encoding" msgstr "အတင်းမိုနိကုဒ်ပြောင်း" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "ပစ္စည်းမေ့ပြစ်" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "ပစ္စည်းကိုမေ့ပြစ်ခြင်းသည #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "ဘောင်နှုန်း" msgid "Frames per buffer" msgstr "ကြားခံတစ်ခုမှဘောင်များ" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "သူငယ်ချင်းများ" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "လှုပ်မရ" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "ဘက်စ်အပြည့်" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "ဘက်စ်အပြည့် + အမြင့်သံ" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "အမြင့်သံအပြည့်" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "ဂျီသီချင်းစီးကြောင်းအသံအင်ဂျင်" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "အထွေထွေ" @@ -2326,30 +2397,30 @@ msgstr "အထွေထွေ" msgid "General settings" msgstr "အထွေထွေချိန်ညှိချက်" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "အမျိုးအစား" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "ဂရုရှက်သီချင်းစာရင်းမျှဝေရန်ယူအာအယ်ရယူ" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "ဂရုရှက်သီချင်းမျှဝေရန်ယူအာအယ်ရယူ" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "ဂရုရှက်ရေပန်းစားဆံုးသီချင်းများရယူခြင်း" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "လေလှိုင်းများရယူခြင်း" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "သီချင်းစီးကြောင်းများရယူခြင်း" @@ -2361,11 +2432,11 @@ msgstr "ဒီဟာကိုနာမည်ပေး:" msgid "Go" msgstr "သွား" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "နောက်သီချင်းစာရင်းမျက်နှာစာသို့သွား" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "ယခင်သီချင်းစာရင်းမျက်နှာစာသို့သွား" @@ -2373,7 +2444,7 @@ msgstr "ယခင်သီချင်းစာရင်းမျက်နှာ msgid "Google Drive" msgstr "ဂူဂယ်ဒရိုက်ဗ်" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "%1 အဖံုးများရရှိ %2 မှ (%3 ) ဖွင် msgid "Grey out non existent songs in my playlists" msgstr "သီချင်းစာရင်းများတွင်မရှိနေသောသီချင်းများကိုမီးခိုးရောင်ပြ" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "ဂရုရှက်" @@ -2391,15 +2462,15 @@ msgstr "ဂရုရှက်" msgid "Grooveshark login error" msgstr "ဂရုရှက်ဖွင့်ဝင်အမှားပြ" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "ဂရုရှက်သီချင်းစာရင်းယူအာအလ်" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "ဂရုရှက်ရေဒီယို" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "ဂရုရှက်သီချင်းယူအာအလ်" @@ -2407,44 +2478,44 @@ msgstr "ဂရုရှက်သီချင်းယူအာအလ်" msgid "Group Library by..." msgstr "သီချင်းတိုက်အုပ်စုအလိုက်" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "အုပ်စုအလိုက်" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "အယ်လဘမ်အုပ်စုအလိုက်" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "အနုပညာရှင်အုပ်စုအလိုက်" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "အနုပညာရှင်/အယ်လဘမ်အုပ်စုအလိုက်" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "အနုပညာရှင်/နှစ် - အယ်လဘမ်အုပ်စုအလိုက်" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "အမျိုးအစား/အယ်လဘမ်အုပ်စုအလိုက်" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "အမျိုးအစား/အနုပညာရှင်/အယ်လဘမ်အုပ်စုအလိုက်" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "အုပ်စုအလိုက်စုခြင်း" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "အာအက်စ်အက်စ်ဖိဒ်တစ်ခုမှဟိတ်စ်တီအမ်အယ်စာမျက်နှာတွင်မရှိပါ" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "ယူအာအယ်မရှိပဲအိတ်ပ်တီတီပီ ၃XX အချက်အလက်ပြကုဒ်ကိုလက်ခံရရှိ၊ ဆာဗာပုံစံပြင်ခြင်းကိုလုပ်ပါ။" @@ -2453,7 +2524,7 @@ msgstr "ယူအာအယ်မရှိပဲအိတ်ပ်တီတီပ msgid "HTTP proxy" msgstr "အိပ်စ်တီတီပီပရောက်ဇီ" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "ပျော်ရွှင်" @@ -2469,25 +2540,25 @@ msgstr "ပစ္စည်းဆက်သွယ်နေစဉ်မှသာဟ msgid "High" msgstr "မြင့်" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "မြင့် (%1 အက်ဖ်ပီအက်စ်)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "မြင့် (၁၀၂၄x၁၀၂၄)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "လက်ခံရှာမတွေ့၊ဆာဗာယူအာအယ်ပြန်စစ်ဆေးပါ။ ဥပမာ: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "နာရီများ" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "ဟိုက်ဖ်နိုဖား" @@ -2499,15 +2570,15 @@ msgstr "ငါ့ဆီမှာမက်နာကျွန်းစာရင် msgid "Icon" msgstr "သင်္ကေတ" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "သင်္ကေတများကိုအပေါ်သို့" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "သီချင်းများစစ်ရွေးနေ" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "ဆက်လက်လုပ်လျှင်ယခုပစ္စည် msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "ပို့စ်ကဒ်ယူအာအယ်ကိုသိပါကအောက်တွင်ထည့်သွင်းပြီးသွားကိုကလစ်နှိပ်ပါ။" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "အနုပညာရှင်နာမည်များတွင်\"ဒီ\"ကိုအလေးမပေး" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "ပုံများ (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "ပုံများ (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "%1 နေ့များအတွင်း" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 အပတ်များအတွင်း" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "စနစ်အရှင်ထဲတွင်တေးသံလမ်းကြောများရွေးချယ်ပြီးသီချင်းတစ်ပုဒ်ပြီးတိုင်းတေးသံလမ်းကြောထဲသို့ထည့်သွင်း။" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "စာတိုက်ပံုး" @@ -2557,36 +2628,36 @@ msgstr "သတိပေးချက်တွင်အယ်လဘမ်အနု msgid "Include all songs" msgstr "သီချင်းများအားလံုးထည့်သွင်းစေ" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "ဆပ်ဆိုးနစ်အပ်စ်ပရိုတိုကောပံုစံအံဝင်ခွင်မဖြစ်။ အသံုးပြုသူများအဆင့်မြှင့်သင့်။" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "ဆပ်ဆိုးနစ်အပ်စ်ပရိုတိုကောပံုစံအံဝင်ခွင်မဖြစ်။ ဆာဗာများအဆင့်မြှင့်သင့်။" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "ပံုစံပြင်ခြင်းမပြီးဆံုးသေး၊လိုအပ်သောနယ်ပယ်များကိုပြီးအောင်ဖြည့်ပါ။" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "အသံပမာဏ၄%ခန့်တိုးမြင့်" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "အသံပမာဏ ရာခိုင်နှုန်းခန့်တိုးမြင့်" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "အသံပမာဏတိုးမြင့်" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "ရည်ညွှန်းခြင်း %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "အချက်အလက်" @@ -2594,55 +2665,55 @@ msgstr "အချက်အလက်" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "ထည့်သွင်း..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "သွင်းပြီး" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "ခိုင်မြဲမှုစစ်ဆေး" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "အင်တာနက်" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "အင်တာနက်ပံ့ပိုးသူများ" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "အေပီအိုင်သော့မမှန်" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "ပုံစံမမှန်" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "နည်းလမ်းမမှန်" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "သတ်မှတ်ချက်များမမှန်" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "သတ်မှတ်အရင်းအမြစ်မမှန်" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "ဝန်ဆောင်မှုမမှန်" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "စစ်ဆေးခြင်းသော့မမှန်" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "အသင်းဝင်အမည်နှင့်/သို့စကားဝှက်မမှန်" @@ -2650,42 +2721,42 @@ msgstr "အသင်းဝင်အမည်နှင့်/သို့စက msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "ဂျမန်တို" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "ဂျမန်တိုနားအထောင်ဆံုးတေးသံလမ်းကြောများ" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "ဂျမန်တိုထိပ်တန်းတေးသံများ" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "ဂျမန်တိုယခုလထိပ်တန်းတေးသံများ" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "ဂျမန်တိုယခုအပတ်ထိပ်တန်းတေးသံများ" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "ဂျမန်တိုအချက်အလက်အစု" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "လက်ရှိဖွင့်ဆဲတေးသံလမ်းကြောသို့" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "ခလုတ်များကို %1 စက္ကန့်ကြာထိန်းထား..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "ခလုတ်များကို %1 စက္ကန့်များကြာထိန်းထား..." @@ -2694,23 +2765,24 @@ msgstr "ခလုတ်များကို %1 စက္ကန့်မျာ msgid "Keep running in the background when the window is closed" msgstr "ဝင်းဒိုးပိတ်နေစဉ်နောက်ခံအလုပ်လုပ်စေခြင်း" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "မူရင်းဖိုင်များထိန်းထား" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "ကြောင်ပေါက်စများ" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "ဘာသာစကား" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "လက်ဆွဲကွန်ပျူတာ/နားကြပ်များ" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "ခန်းမကြီး" @@ -2718,58 +2790,24 @@ msgstr "ခန်းမကြီး" msgid "Large album cover" msgstr "အယ်လဘမ်အဖုံးကြီး" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "ဘေးတိုင်ကြီး" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "နောက်ဆံုးသီချင်းဖွင့်ခဲ့သမျှ" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "လက်စ်.အက်ဖ်အမ်" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "လက်စ်.အက်ဖ်အမ်စိတ်ကြိုက်ရေဒီယို: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "လက်စ်.အက်ဖ်သီချင်းတိုက် - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "လက်စ်.အက်ဖ်ရောသမမွှေရေဒီယို - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "လက်စ်.အက်ဖ်အိမ်နီးနားရေဒီယို - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "လက်စ်.အက်ဖ်အမ်ရေဒီယိုထုတ်လွှင့်မှုဌာန - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr " %1 လက်စ်.အက်ဖ်အမ်တူညီအနုပညာရှင်များသို့" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "လက်စ်.အက်ဖ်အမ်အမည်ရေဒီယို: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "လက်စ်.အက်ဖ်အမ်အလုပ်ရှုပ်နေ၊ မကြာမီမိနစ်အနည်းငယ်အတွင်းထပ်စမ်းကြည့်" @@ -2777,11 +2815,11 @@ msgstr "လက်စ်.အက်ဖ်အမ်အလုပ်ရှုပ် msgid "Last.fm password" msgstr "လက်စ်.အက်ဖ်အမ်စကားဝှက်" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "လက်စ်.အက်ဖ်ဖွင့်သံအရေအတွက်များ" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "လက်စ်.အက်ဖ်အမ်အမည်များ" @@ -2789,28 +2827,24 @@ msgstr "လက်စ်.အက်ဖ်အမ်အမည်များ" msgid "Last.fm username" msgstr "လက်စ်.အက်ဖ်အမ်အသင်းဝင်အမည်" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "လက်စ်.အက်ဖ်အမ်ဝီကီ" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "အနှစ်သက်ဆုံးတေးသံလမ်းကြောများအနည်းဆုံး" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "မူလပံုစံအတွက်အလွတ်ထားရှိပါ။ ဥပမာ: \"/dev/dsp\", \"front\", စသည်ဖြင့်" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "ဘယ်" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "အလျား" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "သီချင်းတိုက်" @@ -2818,24 +2852,24 @@ msgstr "သီချင်းတိုက်" msgid "Library advanced grouping" msgstr "သီချင်းတိုက်အဆင့်မြင့်အုပ်စုဖွဲ့ခြင်း" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "သီချင်းတိုက်ပြန်လည်ဖတ်ရှုအကြောင်းကြားစာ" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "သီချင်းတိုက်ရှာဖွေ" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "ကန့်သတ်ချက်များ" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "ယခင်နားဆင်မှုများအပေါ်မူတည်၍ဂရုရှက်သီချင်းများကိုနားဆင်" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "တိုက်ရိုက်ထုတ်လွှင့်မှု" @@ -2847,15 +2881,15 @@ msgstr "ထည့်သွင်း" msgid "Load cover from URL" msgstr "ယူအာအလ်မှအဖုံးထည့်သွင်း" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "ယူအာအလ်မှအဖုံးထည့်သွင်း..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "ဓာတ်ပြားမှအဖုံးထည့်သွင်း" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "ဓာတ်ပြားမှအဖုံးထည့်သွင်း..." @@ -2863,84 +2897,89 @@ msgstr "ဓာတ်ပြားမှအဖုံးထည့်သွင်း msgid "Load playlist" msgstr "သီချင်းစာရင်းထည့်သွင်း" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "သီချင်းစာရင်းထည့်သွင်း..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "လက်စ်.အက်ဖ်အမ်ရေဒီယိုထည့်သွင်းနေ" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "အမ်တီပီပစ္စည်းထည့်သွင်းနေ" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "အိုင်ပေါ့အချက်အလက်အစုထည့်သွင်းနေ" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "ချက်ချာသီချင်းစာရင်းထည့်သွင်းနေ" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "သီချင်းများထည့်သွင်းနေ" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "သီချင်းစီးကြောင်းထည့်သွင်းနေ" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "တေးသံလမ်းကြောများထည့်သွင်းနေ" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "တေးသံလမ်းကြောအချက်အလက်များထည့်သွင်းနေ" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "ထည့်သွင်းနေ..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "ဖိုင်များ/ယူအာအလ်များထည့်သွင်း၊ ယခုသီချင်းစာရင်းအစားထိုး" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "ဖွင့်ဝင်" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "ဖွင့်ဝင်၍မရ" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "ကာလရှည်ခန့်မှန်းအကြောင်း (အယ်တီပီ)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "နှစ်သက်" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "နိမ့် (%1 အက်ဖ်ပီအက်စ်)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "နိမ့် (၂၅၆x၂၅၆)" @@ -2952,12 +2991,17 @@ msgstr "ရှုပ်ထွေးမှုအနည်းဆံုးအကြ msgid "Lyrics" msgstr "သီချင်းစာသားများ" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "%1 မှသီချင်းစာသားများ" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "အမ်ပီသရီး" @@ -2969,15 +3013,15 @@ msgstr "အမ်ပီသရီး၂၅၆ကီလို" msgid "MP3 96k" msgstr "အမ်ပီသရီး၉၆ကီလို" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "အမ်ပီဖိုးအေအေစီ" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "အမ်ပီစီ" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "မက်နကျွန်း" @@ -2985,7 +3029,7 @@ msgstr "မက်နကျွန်း" msgid "Magnatune Download" msgstr "မက်နကျွန်းကူးဆွဲ" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "မက်နကျွန်းကူးဆွဲပြီးဆံုး" @@ -2993,15 +3037,20 @@ msgstr "မက်နကျွန်းကူးဆွဲပြီးဆံုး msgid "Main profile (MAIN)" msgstr "အဓိကအကြောင်း(အဓိက)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "အဲဒီကဲ့သို့လုပ်" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "သီချင်းစာရင်းအောဖ့်လိုင်းသုံးလုပ်" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "တုံ့ပြန်မှုပုံမမှန်" @@ -3014,15 +3063,15 @@ msgstr "ပရောက်ဇီပုံစံလက်အားသံုးပ msgid "Manually" msgstr "လက်အားသံုး" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "ထုတ်လုပ်သူ" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "နားထောင်ပြီးကဲ့သို့မတ်သား" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "အသစ်ကဲ့သို့မတ်သား" @@ -3034,17 +3083,21 @@ msgstr "ရှာဖွေစကားရပ်တိုင်းဟပ်စပ msgid "Match one or more search terms (OR)" msgstr "ရှာဖွေစကားရပ်များတစ်ခုသို့အများဟပ်စပ် (သို့)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "အများဆုံးဘစ်နှုန်း" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "လယ် (%1 အက်ဖ်ပီအက်စ်)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "လယ် (၅၁၂x၅၁၂)" @@ -3056,11 +3109,15 @@ msgstr "အသင်းဝင်အမျိုးအစား" msgid "Minimum bitrate" msgstr "အနည်းဆုံးဘစ်နှုန်း" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "ပရောဂျက်အမ်ကြိုတင်ထိန်းညှိများလိုနေ" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "ပုံစံ" @@ -3068,20 +3125,20 @@ msgstr "ပုံစံ" msgid "Monitor the library for changes" msgstr "သီချင်းတိုက်ပြောင်းလဲမှုများစောင့်ကြည့်" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "မိုနိတစ်ခုတည်း" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "လများ" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "စိတ်နေစိတ်ထား" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "စိတ်နေစိတ်ထားဘားမျဉ်းပုံစံ" @@ -3089,15 +3146,19 @@ msgstr "စိတ်နေစိတ်ထားဘားမျဉ်းပုံ msgid "Moodbars" msgstr "စိတ်နေစိတ်ထားဘားမျဉ်းများ" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "အများဆံုးဖွင့်ခဲ့သမျှ" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "အမှတ်စီစဉ်" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "အမှတ်များစီစဉ်" @@ -3106,7 +3167,7 @@ msgstr "အမှတ်များစီစဉ်" msgid "Move down" msgstr "အောက်သို့ရွှေ့" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "သီချင်းတိုက်သို့ရွှေ့..." @@ -3115,7 +3176,7 @@ msgstr "သီချင်းတိုက်သို့ရွှေ့..." msgid "Move up" msgstr "အပေါ်သို့ရွှေ့" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "ဂီတ" @@ -3123,56 +3184,32 @@ msgstr "ဂီတ" msgid "Music Library" msgstr "ဂီတတိုက်" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "အသံအုပ်" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "ငါ့လက်စ်.အက်ဖ်သီချင်းတိုက်" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "ငါ့လက်စ်.အက်ဖ်ရောသမမွှေရေဒီယို" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "ငါ့လက်စ်.အက်ဖ်အိမ်နီးနားများ" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "ငါ့လက်စ်.အက်ဖ်အမ်အကြံပြုရေဒီယို" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "ငါ့ရောသမမွှေရေဒီယို" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "ငါ့ဂီတ" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "ငါ့အိမ်နီးနားများ" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "ငါ့ရေဒီယိုထုတ်လွှင့်မှုဌာန" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "ငါ့ထောက်ခံချက်များ" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "နာမည်" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "နာမည်ပေးခြင်းရွေးပိုင်ခွင့်များ" @@ -3180,23 +3217,19 @@ msgstr "နာမည်ပေးခြင်းရွေးပိုင်ခွ msgid "Narrow band (NB)" msgstr "ရေဒီယိုလှိုင်းကျဉ်း (အန်ဘီ)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "အိမ်နီးနားချင်းများ" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "ကွန်ရက်ပရောက်ဇီ" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "ကွန်ရက်အဝေးထိန်း" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "ဘယ်သောအခါမှ" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "သီချင်းမဖွင့်ခဲ့သမျှ" @@ -3205,21 +3238,21 @@ msgstr "သီချင်းမဖွင့်ခဲ့သမျှ" msgid "Never start playing" msgstr "သီချင်းလုံးဝစတင်မဖွင့်" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "ဖိုင်တွဲအသစ်" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "သီချင်းစာရင်းအသစ်" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "ချက်ချာသီချင်းစာရင်းအသစ်..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "သီချင်းအသစ်များ" @@ -3227,24 +3260,24 @@ msgstr "သီချင်းအသစ်များ" msgid "New tracks will be added automatically." msgstr "တေးသံလမ်းကြောများအလိုအလျောက်ထည့်။" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "တေးသံလမ်းကြောအသစ်ဆုံးများ" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "နောက်တစ်ခု" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "နောက်တေးသံလမ်းကြော" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "နောက်အပတ်" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "စိစစ်သူမရှိ" @@ -3252,7 +3285,7 @@ msgstr "စိစစ်သူမရှိ" msgid "No background image" msgstr "နောက်ခံပုံမသံုး" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "တင်ပို့ရန်အဖံုးများမရှိ" @@ -3260,7 +3293,7 @@ msgstr "တင်ပို့ရန်အဖံုးများမရှိ" msgid "No long blocks" msgstr "ဘလောက်ရှည်များမရှိ" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "ဟပ်စပ်များရှာမတွေ့။ သီချင်းစာရင်းတစ်ခုလံုးနောက်တစ်ချိန်ပြသရန်ရှာဖွေနေရာကိုဖယ်ရှင်းပါ။ " @@ -3274,11 +3307,11 @@ msgstr "ဘလောက်တိုများမရှိ" msgid "None" msgstr "ဘယ်တစ်ခုမျှ" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "ရွေးချယ်ပြီးသီချင်းများတစ်ခုမှပစ္စည်းသို့ကူးယူရန်မသင့်တော်" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "သာမန်" @@ -3286,43 +3319,47 @@ msgstr "သာမန်" msgid "Normal block type" msgstr "သာမန်ဘလောက်အမျိုးအစား" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "သီချင်းစာရင်းအရှင်သံုးနေစဉ်မရနိုင်" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "မဆက်သွယ်ထား" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "အကြောင်းအရာလုံလောက်မှုမရှိ" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "အားပေးသူများလုံလောက်မှုမရှိ" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "အသင်းဝင်များလုံလောက်မှုမရှိ" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "အိမ်နီးနားချင်းများလုံလောက်မှုမရှိ" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "မသွင်းထား" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "မဖွင့်ဝင်ရသေး" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "မစီစဉ်ထား - စီစဉ်ရန်ကလစ်နှစ်ခါနှိပ်" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "သတိပေးချက်ပုံစံ" @@ -3335,36 +3372,41 @@ msgstr "သတိပေးချက်များ" msgid "Now Playing" msgstr "ယခုသီချင်းဖွင့်ဆဲ" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်ကြိုတင်ကြည့်ရှု" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "အောဖ့်အက်ဖ်အယ်အေစီ" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "အောဖ့်တေး" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "အောဖ့်စဖိစ်" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "အောဖ့်ဗော်ဘစ်စ်" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "အိုင်ပီအတွင်းရှိအသံုးပြုသူများဆက်သွယ်မှုများကိုသာလက်ခံ:⏎ ၁၀.x.x.x⏎ ၁၇၂.၁၆.၀.၀ - ၁၇၂.၃၁.၂၅၅.၂၅၅⏎ ၁၉၂.၁၆၈.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "ကွန်ယက်တွင်းရှိဆက်သွယ်ချက်များကိုသာခွင့်ပြု" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "ပထမဦးဆုံးကိုသာပြသ" @@ -3384,23 +3426,23 @@ msgstr "ပထမဦးဆုံးကိုသာပြသ" msgid "Opacity" msgstr "အလင်းပိတ်မှု" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "ဘရောက်ဇာထဲတွင် %1 ဖွင့်" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "အသံဓာတ်ပြားဖွင့်(&a)..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "အိုပီအမ်အယ်ဖိုင်ဖွင့်" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "အိုပီအမ်အယ်ဖိုင်ဖွင့်..." @@ -3408,30 +3450,35 @@ msgstr "အိုပီအမ်အယ်ဖိုင်ဖွင့်..." msgid "Open device" msgstr "ပစ္စည်းဖွင့်" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "ဖိုင်ဖွင့်..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "ဂူဂယ်ဒရိုက်ဗ်တွင်ဖွင့်" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "သီချင်းစာရင်းအသစ်တွင်ဖွင့်" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "ဘရောက်ဇာထဲတွင်ဖွင့်" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "ဖွင့်..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "လည်ပတ်မှုလုပ်မရ" @@ -3451,23 +3498,23 @@ msgstr "ရွေးပိုင်ခွင့်များ..." msgid "Opus" msgstr "တေး" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "ဖိုင်များစုစည်း" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "ဖိုင်များစုစည်း..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "ဖိုင်များစုစည်းနေ" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "မူရင်းအမည်များ" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "အခြားရွေးပိုင်ခွင့်များ" @@ -3475,7 +3522,7 @@ msgstr "အခြားရွေးပိုင်ခွင့်များ" msgid "Output" msgstr "ပေးပို့" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "ပေးပို့ပစ္စည်း" @@ -3483,15 +3530,11 @@ msgstr "ပေးပို့ပစ္စည်း" msgid "Output options" msgstr "ပေးပို့ရွေးပိုင်ခွင့်များ" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "ပေးပို့ဖြည့်စွက်ပရိုဂရမ်" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "အားလံုးအစားထိုးရေး" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "တည်ရှိဆဲဖိုင်များထပ်မံဖြည့်သွင်း" @@ -3503,15 +3546,15 @@ msgstr "အသေးစားများကိုသာအစားထိုး msgid "Owner" msgstr "ပိုင်ရှင်" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "ဂျမန်တိုစာရင်းစစ်ထုတ်ခြင်း" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "အဖွဲ့" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "အဖွဲ့" msgid "Password" msgstr "စကားဝှက်" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "ရပ်တန့်" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "ပြန်ဖွင့်ရပ်တန့်" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "ရပ်တန့်ပြီး" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "တင်ဆင်သူ" @@ -3542,34 +3585,22 @@ msgstr "တင်ဆင်သူ" msgid "Pixel" msgstr "အစက်အပြောက်" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "ဘေးတိုင်ရိုးရိုး" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "ဖွင့်" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "အနုပညာရှင်သို့အမည်ဖွင့်" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "အနုပညာရှင်ရေဒီယိုဖွင့်..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "ဖွင့်သံအရေအတွက်" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "စိတ်ကြိုက်ရေဒီယိုဖွင့်..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "ရပ်တန့်ပြီးလျှင်ဖွင့်၊ ဖွင့်ပြီးလျှင်ရပ်တန့်" @@ -3578,45 +3609,42 @@ msgstr "ရပ်တန့်ပြီးလျှင်ဖွင့်၊ ဖ msgid "Play if there is nothing already playing" msgstr "ဘယ်သီချင်းမှဖွင့်မနေလျှင်စတင်ဖွင့်" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "အမည်ရေဒီယိုဖွင့်..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "သီချင်းစာရင်းတွင်တေးသံလမ်းကြော စတင်ဖွင့်" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "ဖွင့်/ရပ်တန့်" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "ပြန်ဖွင့်" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "ဖွင့်စက်ရွေးပိုင်ခွင့်များ" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "သီချင်းစာရင်း" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "သီချင်းစာရင်းပြီးဆံုး" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "သီချင်းစာရင်းရွေးပိုင်ခွင့်များ" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "သီချင်းစာရင်းအမျိုးအစား" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "သီချင်းစာရင်းများ" @@ -3628,23 +3656,23 @@ msgstr "ဘရောက်ဇာကိုပိတ်ပြီးကလီမန msgid "Plugin status:" msgstr "ဖြည့်စွက်ပရိုဂရမ်အခြေအနေ:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "ပို့စ်ကဒ်များ" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "ပေါ့ဂီတ" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "ရေပန်းစားဆံုးသီချင်းများ" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "ယခုလရေပန်းစားဆံုးသီချင်းများ" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "ယနေ့ရေပန်းစားဆံုးသီချင်းများ" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "ထွက်ပေါ်ကြာချိန်" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "နံပါတ်ပေါက်" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "အသံချဲ့အကြို" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "လိုလားချက်များ" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "လိုလားချက်များ..." @@ -3704,7 +3733,7 @@ msgstr "အသုံးပြုရန်ခလုတ်များပေါင msgid "Press a key" msgstr "စာတစ်လံုးခေါက်" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "%1 အတွက်အသုံးပြုရန်ခလုတ်များပေါင်းခေါက်..." @@ -3715,20 +3744,20 @@ msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်လှလ #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "ကြိုတင်ကြည့်ရှု" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "ယခင်" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "ယခင်တေးသံလမ်းကြော" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "ပုံစံအချက်အလက်ဖော်ပြ" @@ -3736,21 +3765,25 @@ msgstr "ပုံစံအချက်အလက်ဖော်ပြ" msgid "Profile" msgstr "အကြောင်း" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "အခြေအနေ" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "ဝိုင်ယာမုတ်ခလုတ်နှိပ်" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "သီချင်းများကိုကျပန်းစီစဉ်ကာထားပါ" @@ -3758,85 +3791,95 @@ msgstr "သီချင်းများကိုကျပန်းစီစဉ #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "အရည်အသွေး" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "ပစ္စည်းမေးမြန်းခြင်း..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "စီတန်းမန်နေဂျာ" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "ရွေးချယ်တေးသံလမ်းကြောများစီတန်း" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "တေးသံလမ်းကြောစီတန်း" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "ရေဒီယို (တေးသံလမ်းကြောများအားလံုးအတွက်တူညီအသံကျယ်ကျယ်)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "ရေဒီယိုများ" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "မိုး" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "ကျပန်းပုံဖော်ကြည့်ခြင်း" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "လက်ရှိသီချင်း၀ကြယ်တန်ဖိုးဖြတ်" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "လက်ရှိသီချင်း၁ကြယ်တန်ဖိုးဖြတ်" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "လက်ရှိသီချင်း၂ကြယ်တန်ဖိုးဖြတ်" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "လက်ရှိသီချင်း၃ကြယ်တန်ဖိုးဖြတ်" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "လက်ရှိသီချင်း၄ကြယ်တန်ဖိုးဖြတ်" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "လက်ရှိသီချင်း၅ကြယ်တန်ဖိုးဖြတ်" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "အဆင့်သတ်မှတ်ချက်များ" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "တကယ်ပယ်ဖျက်?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "ဦးတည်ရာပြောင်းကန့်သတ်ကျော်လွန်၊ ဆာဗာပုံစံပြင်ခြင်းလုပ်ပါ။" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "ပြန်လည်" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "စာရင်းပြန်လည်" @@ -3844,19 +3887,15 @@ msgstr "စာရင်းပြန်လည်" msgid "Refresh channels" msgstr "လေလှိုင်းများပြန်လည်" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "သူငယ်ချင်းများစာရင်းပြန်လည်" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "ထုတ်လွှင့်မှုဌာနစာရင်းပြန်လည်" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "သီချင်းစီးကြောင်းများပြန်လည်" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "ရက်ပ်ဂယ်" @@ -3868,8 +3907,8 @@ msgstr "ဝီအဝေးထိန်းပြောင်းလဲခြင် msgid "Remember from last time" msgstr "နောက်ဆံုးအချိန်မှမှတ်သား" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "ဖယ်ရှား" @@ -3877,7 +3916,7 @@ msgstr "ဖယ်ရှား" msgid "Remove action" msgstr "လုပ်ဆောင်ချက်ဖယ်ရှား" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "သီချင်းစာရင်းမှပုံတူများဖယ်ရှား" @@ -3885,73 +3924,77 @@ msgstr "သီချင်းစာရင်းမှပုံတူများ msgid "Remove folder" msgstr "ဖိုင်တွဲဖယ်ရှား" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "ငါ့ဂီတမှဖယ်ရှား" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "အနှစ်သက်ဆုံးများမှဖယ်ရှား" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "သီချင်းစာရင်းမှဖယ်ရှား" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "သီချင်းစာရင်းဖယ်ရှား" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "သီချင်းစာရင်းများဖယ်ရှား" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "ငါ့ဂီတမှသီချင်းများဖယ်ရှား" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "အနှစ်သက်ဆုံးများမှသီချင်းများဖယ်ရှား" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "သီချင်းစာရင်း \"%1\" နာမည်ပြန်ရွေး" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "ဂရုရှက်သီချင်းစာရင်းနာမည်ပြန်ရွေး" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "သီချင်းစာရင်းနာမည်ပြန်ရွေး" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "သီချင်းစာရင်းနာမည်ပြန်ရွေး..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "တေးသံလမ်းကြောများယခုအစဉ်အလိုက်နံပါတ်ပြန်ပြောင်းပါ..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "ပြန်ဆို" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "အယ်လဘမ်ပြန်ဆို" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "သီချင်းစာရင်းပြန်ဆို" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "တေးသံလမ်းကြောပြန်ဆို" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "ယခုသီချင်းစာရင်းအစားထိုး" @@ -3960,15 +4003,15 @@ msgstr "ယခုသီချင်းစာရင်းအစားထိုး msgid "Replace the playlist" msgstr "သီချင်းစာရင်းအစားထိုး" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "ကွက်လပ်များကိုအောက်မျဉ်းများနှင့်အစားထိုး" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "ရီပလေးဂိမ်း" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "ဂိမ်းစနစ်ပြန်ဖွင့်" @@ -3976,24 +4019,24 @@ msgstr "ဂိမ်းစနစ်ပြန်ဖွင့်" msgid "Repopulate" msgstr "ပြန်လည်ရွှေ့ပြောင်း" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "အထောက်အထားစစ်ဆေးခြင်းကုဒ်လိုအပ်" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "ပြန်လည်ထိန်းညှိ" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "ဖွင့်သံအရေအတွက်များပြန်လည်ထိန်းညှိ" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "တေးသံလမ်းကြောပြန်လည်စတင်(သို့)ယခင်တေးသံလမ်းကြောကိုစတင်ချိန်မှ၈စက္ကန့်အတွင်းပြန်ဖွင့်။" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "အက်စ်စီအက္ခရာများသို့ကန့်သတ်" @@ -4001,15 +4044,15 @@ msgstr "အက်စ်စီအက္ခရာများသို့ကန့ msgid "Resume playback on start" msgstr "ပြန်ဖွင့်ကိုစသံုးတိုင်းပြန်စ" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "ဂရုရှက်ငါ့ဂီတသီချင်းများပြန်ထုတ်ခြင်း" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "ဂရုရှက်ရေပန်းစားဆံုးသီချင်းများပြန်ထုတ်ခြင်း" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "ဂရုရှက်သီချင်းစာရင်းများပြန်ထုတ်ခြင်း" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "ရော့ခ်" @@ -4045,25 +4088,25 @@ msgstr "စတင်" msgid "SOCKS proxy" msgstr "ဆော့ပရောက်ဇီ" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "အက်စ်အက်စ်အယ်အမှားပြနေ၊ဆာဗာပံုစံပြင်ခြင်းအတည်ပြု။ အက်စ်အက်စ်အယ်ဗီ၃ရွေးပိုင်ခွင့်တွင်ပြသနာများရှိနေ။" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "ပစ္စည်းလုံလုံခြုံခြုံဖယ်ရှား" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "ကူးယူပြီးနောက်ပစ္စည်းလုံလုံခြုံခြုံဖယ်ရှား" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "နမူနာနှုန်း" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "နမူနာနှုန်း" @@ -4071,27 +4114,33 @@ msgstr "နမူနာနှုန်း" msgid "Save .mood files in your music library" msgstr "ဂီတတိုက်တွင်.moodဖိုင်များမှတ်သား" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "အယ်လဘမ်အဖုံးမှတ်သား" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "ဓာတ်ပြားသို့အဖံုးမှတ်သား..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "ပုံမှတ်သား" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "သီချင်းစာရင်းမှတ်သား" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "သီချင်းစာရင်းမှတ်သား..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "ကြိုတင်ထိန်းညှိမှတ်သား" @@ -4107,11 +4156,11 @@ msgstr "ဖြစ်နိုင်ပါကဖိုင်အမည်မျာ msgid "Save this stream in the Internet tab" msgstr "အင်တာနက်မျက်နှာစာထဲတွင်ယခုသီချင်းစီးကြောင်းမှတ်သား" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "သီချင်းဖိုင်များထဲသို့သီချင်းကိန်းဂဏန်းအချက်အလက်များမှတ်သား" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "တေးသံလမ်းကြောများမှတ်သားနေ" @@ -4123,7 +4172,7 @@ msgstr "သတ်မှတ်နမူနာနှုန်းအကြောင msgid "Scale size" msgstr "အတိုင်းအတာပမာဏ" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "ရမှတ်" @@ -4131,34 +4180,38 @@ msgstr "ရမှတ်" msgid "Scrobble tracks that I listen to" msgstr "နားဆင်နေကြတေးသံလမ်းကြောများလိုလျှောက်နာမည်ပေးပို့" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "ရှာဖွေ" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "အိုင့်ကက်စ်ထုတ်လွှင့်မှုဌာနများရှာဖွေ" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "ဂျမန်တိုရှာဖွေ" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "မက်နကျွန်းရှာဖွေ" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "ဆပ်ဆိုးနစ်ရှာဖွေ" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "အလိုအလျောက်ရှာဖွေ" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "အယ်လဘမ်အဖုံးများအားရှာဖွေ..." @@ -4178,21 +4231,21 @@ msgstr "အိုင်ကျွန်းရှာဖွေ" msgid "Search mode" msgstr "စနစ်ရှာဖွေ" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "ရှာဖွေရွေးပိုင်ခွင့်များ" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "ရလဒ်များရှာဖွေ" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "စကားရပ်များရှာဖွေ" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "ဂရုရှက်တွင်ရှာဖွေခြင်း" @@ -4200,27 +4253,27 @@ msgstr "ဂရုရှက်တွင်ရှာဖွေခြင်း" msgid "Second level" msgstr "ဒုတိယအဆင့်" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "နောက်ပြန်ရှာဖွေ" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "ရှေ့သို့ရှာဖွေ" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "လက်ရှိဖွင့်ဆဲတေးသံလမ်းကြောအတိုင်းအတာနှိုင်းယှဉ်ချက်အားဖြင့်ရှာဖွေ" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "လက်ရှိဖွင့်ဆဲတေးသံလမ်းကြောမှပကတိနေရာသို့ရှာဖွေ" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "အားလံုးရွေးချယ်" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "တစ်ခုမျှမရွေးချယ်" @@ -4228,7 +4281,7 @@ msgstr "တစ်ခုမျှမရွေးချယ်" msgid "Select background color:" msgstr "နောက်ခံအရောင်ရွေးချယ်:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "နောက်ခံပုံရွေးချယ်" @@ -4244,7 +4297,7 @@ msgstr "ရှေ့ခံအရောင်ရွေးချယ်:" msgid "Select visualizations" msgstr "ပုံဖော်ကြည့်ခြင်းများရွေးချယ်" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "ပုံဖော်ကြည့်ခြင်းများရွေးချယ်..." @@ -4252,7 +4305,7 @@ msgstr "ပုံဖော်ကြည့်ခြင်းများရွေ msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "အမှတ်စဉ်" @@ -4264,51 +4317,51 @@ msgstr "ဆာဗာယူယူအာအလ်" msgid "Server details" msgstr "ဆာဗာအသေးစိတ်အကြောင်းအရာများ" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "အောဖ့်လိုင်းဝန်ဆောင်မှု" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1 မှ \"%2\" ထိန်းညှိ..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "အသံပမာဏ ရာခိုင်နှုန်းခန့်ထိန်းညှိ" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "ရွေးချယ်တေးသံလမ်းကြောများအားလံုးအတွက်တန်ဖိုးထိန်းညှိ..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "ချိန်ညှိချက်" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "အတိုကောက်" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "%1 အတွက်အတိုကောက်" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "%1 အတွက်အတိုကောက်တည်ရှိပြီး" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "ပြသ" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်ပြသ" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "လက်ရှိတေးသံလမ်းကြောပေါ်ခပ်မှိန်မှိန်အန်နီမေးရှင်းပြသ" @@ -4336,15 +4389,15 @@ msgstr "စနစ်အသေးမှထွက်ပေါ်ပြသ" msgid "Show a pretty OSD" msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်လှလှတစ်ခုပြသ" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "အခြေအနေပြတိုင်အပေါ်မှာပြသ" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "သီချင်းများအားလံုးပြသ" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "သီချင်းများအားလံုးကိုပြသ" @@ -4356,32 +4409,36 @@ msgstr "သီချင်းတိုက်ထဲအနုပညာအဖုံ msgid "Show dividers" msgstr "ခွဲခြားမှုများပြသ" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "အရွယ်အပြည့်ပြသ..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "ဖိုင်ဘရောက်ဇာထဲမှာပြသ..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "အနုပညာရှင်များအမျိုးမျိုးပြသ" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "စိတ်နေစိတ်ထားဘားမျဉ်းပြသ" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "ပုံတူများသာပြသ" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "အမည်မရှိများသာပြသ" @@ -4390,8 +4447,8 @@ msgid "Show search suggestions" msgstr "ရှာဖွေအကြံပြုချက်များပြသ" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "\"နှစ်သက်\"နှင့်\"တားမြစ်\"ခလုတ်များပြသ" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4405,27 +4462,27 @@ msgstr "စနစ်သင်္ကေတပြသ" msgid "Show which sources are enabled and disabled" msgstr "မည်သည့်ရင်းမြစ်များလုပ်ဆောင်စေမလုပ်ဆောင်စေပြသ" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "ပြသ/ဖုံးကွယ်" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "ကုလားဖန်ထိုး" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "အယ်လဘမ်များကုလားဖန်ထိုး" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "ကုလားဖန်အားလံုးထိုး" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "သီချင်းစာရင်းကုလားဖန်ထိုး" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "ယခုအယ်လဘမ်တွင်တေးသံလမ်းကြောများကုလားဖန်ထိုး" @@ -4441,7 +4498,7 @@ msgstr "အပြင်သို့ထွက်" msgid "Signing in..." msgstr "အတွင်းသို့ဝင်..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "တူညီအနုပညာရှင်များအားလံုး" @@ -4453,43 +4510,51 @@ msgstr "ပမာဏ" msgid "Size:" msgstr "ပမာဏ:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "စကာဂီတ" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "စာရင်းရှိနောက်ပြန်များခုန်ကျော်" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "အရေအတွက်ခုန်ကျော်" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "စာရင်းရှိရှေ့သို့များခုန်ကျော်" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "အယ်လဘမ်အဖုံးသေး" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "ဘေးတိုင်ငယ်" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "ချက်ချာသီချင်းစာရင်း" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "ချက်ချာသီချင်းစာရင်းများ" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "ပျော့" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "ပျော့ရော့ခ်ဂီတ" @@ -4497,11 +4562,11 @@ msgstr "ပျော့ရော့ခ်ဂီတ" msgid "Song Information" msgstr "သီချင်းအချက်အလက်" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "သီချင်းအချက်အလက်" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "အသံလှိုင်းသံုးကျွန်ပျုတာရိုက်ယူပံု" @@ -4521,15 +4586,23 @@ msgstr "အမျိုးအစားအားဖြင့်မျိုးတ msgid "Sort by station name" msgstr "ထုတ်လွှင့်မှုဌာနနာမည်အားဖြင့်မျိုးတူစု" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "သီချင်းများအားဖြင့်မျိုးတူစု" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "မျိုးတူစုခြင်း" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "ရင်းမြစ်" @@ -4545,7 +4618,7 @@ msgstr "စဖိစ်" msgid "Spotify" msgstr "စပေါ့တီဖိုင်" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "စပေါ့တီဖိုင်းဖွင့်ဝင်အမှားပြ" @@ -4553,7 +4626,7 @@ msgstr "စပေါ့တီဖိုင်းဖွင့်ဝင်အမှ msgid "Spotify plugin" msgstr "စပေါ့တီဖိုင်ဖြည့်စွက်ပရိုဂရမ်" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "စပေါ့တီဖိုင်ဖြည့်စွက်ပရိုဂရမ်မသွင်းထား" @@ -4561,77 +4634,77 @@ msgstr "စပေါ့တီဖိုင်ဖြည့်စွက်ပရိ msgid "Standard" msgstr "အဆင့်အတန်း" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "ကြည့်ခဲ့ပြီး" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "လက်ရှိဖွင့်ဆဲသီချင်းစာရင်းစတင်" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "ပံုစံပြောင်းလဲခြင်းစတင်" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "ရှာဖွေရလဒ်များစာရင်းများကိုဖြည့်ရန်ရှာဖွေနေရာတွင်တစ်ခုခုရိုက်ထည့်ပါ" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 စတင်နေ" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "စတင်နေ..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "ထုတ်လွှင့်မှုဌာနများ" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "ရပ်" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "ပြီးနောက်ရပ်" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "ဒီတေးသံလမ်းကြောပြီးနောက်ရပ်" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "ပြန်ဖွင့်ရပ်" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "လက်ရှိတေးသံလမ်းကြောပြီးနောက်သီချင်းဖွင့်ခြင်းရပ်" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "ရပ်တန့်ပြီး" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "သီချင်းစီးကြောင်း" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "ရက်၃၀အစမ်းသံုးကာလပြီးဆံု msgid "Streaming membership" msgstr "အသင်းဝင်စီးကြောင်းလွှင့်" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "မှာယူပြီးသီချင်းစာရင်းများ" @@ -4649,7 +4722,7 @@ msgstr "မှာယူပြီးသီချင်းစာရင်းမျ msgid "Subscribers" msgstr "မှာယူသူများ" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "ဆပ်ဆိုးနစ်" @@ -4657,12 +4730,12 @@ msgstr "ဆပ်ဆိုးနစ်" msgid "Success!" msgstr "ရရိုသွားပြီ!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 အောင်အောင်မြင်မြင်ဖြည့်သွင်းပြီး" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "အကြံပြုအမည်များ" @@ -4671,13 +4744,13 @@ msgstr "အကြံပြုအမည်များ" msgid "Summary" msgstr "အကျဉ်းချုပ်" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "ထိပ်တန်းမြင့် (%1 အက်ဖ်ပီအက်စ်)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "ထိပ်တန်းမြင့် (၂၀၄၈x၂၀၄၈)" @@ -4689,43 +4762,35 @@ msgstr "လက်ခံပုံစံများ" msgid "Synchronize statistics to files now" msgstr "ယခုကိန်းဂဏန်းအချက်အလက်များကိုဖိုင်များသို့လိုက်လျောညီထွေဖြစ်ရန်လုပ်" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "စပေါ့တီဖိုင်စာတိုက်ပံုးညီတူညှိ" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "စပေါ့တီဖိုင်သီချင်းစာရင်းညီတူညှိ" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "စပေါ့တီဖိုင်ကြည့်ခဲ့ပြီးတေးသံလမ်းကြောများညီတူညှိ" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "စနစ်အရောင်များ" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "မျက်နှာစာများကိုအပေါ်သို့" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "အမည်" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "အမည်ခေါ်ယူ" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "အမည်ရေဒီယို" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "ရည်မှန်းချက်ဘစ်နှုန်း" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "အီလက်ထရွန်နစ်အက" @@ -4733,11 +4798,11 @@ msgstr "အီလက်ထရွန်နစ်အက" msgid "Text options" msgstr "စာသားရွေးပိုင်ခွင့်များ" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "သို့ကျေးဇူးတင်ခြင်း" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "\"%1\" ညွှန်ကြားခြင်းမစတင်နိုင်။" @@ -4746,17 +4811,12 @@ msgstr "\"%1\" ညွှန်ကြားခြင်းမစတင်နိ msgid "The album cover of the currently playing song" msgstr "လက်ရှိဖွင့်ဆဲသီချင်းအယ်လဘမ်အဖုံး" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "%1 ယခုဖိုင်လမ်းညွှန်မမှန်" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr " '%1' သီချင်းစာရင်းသည်အလွတ်သို့မထည့်သွင်းနိုင်။" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "ဒုတိယတန်ဖိုးသည်ပထမတန်ဖိုးထက်ကြီးရမည်!" @@ -4764,40 +4824,40 @@ msgstr "ဒုတိယတန်ဖိုးသည်ပထမတန်ဖို msgid "The site you requested does not exist!" msgstr "တောင်းဆိုသောဝက်ဘ်ဆိုက်မတည်ရှိ!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "တောင်းဆိုသောဝက်ဘ်ဆိုက်သည်ပံုမဟုတ်!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "ဆပ်ဆိုးနစ်ဆာဗာအစမ်းသံုးကာလပြီးဆံုး။ လိုင်စင်ကီးရယူရန်ငွေလှုပါ။ အသေးစိတ်အကြောင်းအရာများအတွက် subsonic.org သို့လည်ပတ်ပါ။" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "အောက်ဖော်ပြပါအင်္ဂါရပ်အသစ်များကြောင့်မွမ်းမံပြီးကလီမန်တိုင်းပံုစံသည်သီချင်းတိုက်အပြည့်ပြန်လည်ဖတ်ရှုရန်လိုအပ်: " -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "ယခုအယ်လဘမ်တွင်အခြားသီချင်းများရှိနေ" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "ဂျီပေါ့တာ.နက်နှင့်ဆက်သွယ်ရန်ပြသနာတွေ့" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "မက်နကျွန်းမှအချက်အလက်ဖွဲ့စည်းမှုယူဆောင်ရန်ပြသနာတွေ့" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "အိုင်ကျွန်းစတိုးမှတုံ့ပြန်မှုယူဆောင်ရန်ပြသနာတွေ့" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "တစ်ချို့သီချင်းများပယ်ဖျက်ရန်ပြသနာတွေ့။ အောက်ဖော်ပြပါဖိုင်များမပယ်ဖျက်နိုင်: " -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "ပစ္စည်းမှယခုဖို်င်များအားလံုးပယ်ဖျက်မည်၊ လုပ်ဆောင်မည်လား?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "\"ဂီတပံုစံပြောင်းလဲခြင်း\" msgid "Third level" msgstr "တတိယအဆင့်" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "၁၅၀မီဂါဘိုက်ရှိအချက်အလက်အစုဖန်တီးမည်။ ⏎ လုပ်ဆောင်မည်လား?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "တောင်းဆိုသောပုံစံထဲတွင်ယခုအယ်လဘမ်မရနိုင်" @@ -4855,11 +4915,11 @@ msgstr "မည်သည့်ပံုစံလက်ခံကြောင်း msgid "This device supports the following file formats:" msgstr "အောက်ဖော်ပြပါဖိုင်ပံုစံများကိုယခုပစ္စည်းလက်ခံ:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "ဒီပစ္စည်းသေချာစွာအလုပ်လုပ်မည်မဟုတ်" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "ယခုသည်အမ်တီပီပစ္စည်း၊ ကလီမန်တိုင်းကိုအယ်အိုင်ဘီအမ်တီပီအထောက်အကူမပါဘဲသင်အသုံးပြုထား။" @@ -4868,7 +4928,7 @@ msgstr "ယခုသည်အမ်တီပီပစ္စည်း၊ ကလ msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "ယခုသည်အိုင်ပေါ့ပစ္စည်း၊ ကလီမန်တိုင်းကိုအယ်အိုင်ဘီဂျီပီအိုဒီအထောက်အကူမပါဘဲသင်အသုံးပြုထား။" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "ယခုပစ္စည်းကိုပထမဆံုးအကြိ msgid "This option can be changed in the \"Behavior\" preferences" msgstr "ယခုရွေးပိုင်ခွင့်ကိုလုပ်ဆောင်ပုံလိုလားချက်များတွင်ပြန်ပြောင်းနိုင်" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "ယခုသီချင်းစီးကြောင်းသည်အခကြေးပေးမှာယူသူများအတွက်သာ" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "ယခုပစ္စည်းအမျိုးအစားမလက်ခံ: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "ခေါင်းစဉ်" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "ဂရုရှက်ရေဒီယိုမဖွင့်မီတစ်ခြားဂရုရှက်သီချင်းများအနည်းငယ်ကိုအရင်နားဆင်ပါ။" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "ယနေ့" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်လှလှဖွင့်ပိတ်လုပ်" @@ -4912,27 +4972,27 @@ msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်လှလ msgid "Toggle fullscreen" msgstr "ဖန်သားပြင်အပြည့်ဖွင့်ပိတ်လုပ်" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "စီတန်းအခြေအနေဖွင့်ပိတ်လုပ်" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "သီချင်းနာမည်ပေးပို့ခြင်းဖွင့်ပိတ်လုပ်" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "ဖန်သားပြင်ပေါ်ပံုရိပ်လှလှမြင်ကွင်းပေါ်ရန်ဖွင့်ပိတ်လုပ်" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "မနက်ဖြန်" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "ဦးတည်ရာပြောင်းများများပြား" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "ထိပ်တန်းတေးသံများ" @@ -4940,21 +5000,25 @@ msgstr "ထိပ်တန်းတေးသံများ" msgid "Total albums:" msgstr "စုစုပေါင်းအယ်လဘမ်များ:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "ဘိုက်စုစုပေါင်းများကူးပြောင်းပြီး" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "ကွန်ရက်တောင်းခံချက်စုစုပေါင်းများပြုလုပ်ပြီး" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "တေးသံလမ်းကြော" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "ဂီတပံုစံပြောင်းလဲခြင်း" @@ -4966,7 +5030,7 @@ msgstr "ပံုစံပြောင်းလဲခြင်းမှတ်တ msgid "Transcoding" msgstr "ပံုစံပြောင်းလဲခြင်း" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "%2 ပရိုဂရမ်များအသံုးပြုပြီး %1 ဖိုင်များပြောင်းလဲခြင်း" @@ -4975,11 +5039,11 @@ msgstr "%2 ပရိုဂရမ်များအသံုးပြုပြီ msgid "Transcoding options" msgstr "ပံုစံပြောင်းလဲခြင်းရွေးပိုင်ခွင့်များ" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "တီတီအေ" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "တာဗိုင်" @@ -4987,72 +5051,72 @@ msgstr "တာဗိုင်" msgid "Turn off" msgstr "လှည့်ပိတ်" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "ယူအာအိုင်" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "ယူအာအလ်(များ)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "ဦးဘွန်တူးဝမ်း" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "ဦးဘွန်တူးဝမ်းစကားဝှက်" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "ဦးဘွန်တူးဝမ်းအသုံးပြုသူနာမည်" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "အက်တရာလှိုင်းကျယ် (ယူဒဗလူဘီ)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "မကူးဆွဲနိုင် %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "အမည်မသိ" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "မသိအကြောင်းအရာအမျိုးအစား" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "အမည်မသိအမှားပြ" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "အဖုံးမသတ်မှတ်" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "မမှာယူ" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "လာမည့်ဂီတဖြေဖျော်ပွဲများ" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "ဂရုရှက်သီချင်းစာရင်းစစ်ဆေးခြင်း" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "ပို့စ်ကဒ်များစစ်ဆေးခြင်း" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "ပြောင်းလဲပြီးသီချင်းတိုက်ဖိုင်တွဲများမွမ်းမံ" @@ -5060,7 +5124,7 @@ msgstr "ပြောင်းလဲပြီးသီချင်းတိုက msgid "Update the library when Clementine starts" msgstr "ကလီမန်တိုင်းစတင်သောအခါသီချင်းတိုက်မွမ်းမံ" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "ဒီပို့စ်ကဒ်စစ်ဆေးခြင်း" @@ -5068,21 +5132,21 @@ msgstr "ဒီပို့စ်ကဒ်စစ်ဆေးခြင်း" msgid "Updating" msgstr "မွမ်းမံနေ" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "မွမ်းမံနေ %1 " -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "မွမ်းမံနေ %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "သီချင်းတိုက်မွမ်းမံနေ" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "သုံးစွဲမှု" @@ -5090,11 +5154,11 @@ msgstr "သုံးစွဲမှု" msgid "Use Album Artist tag when available" msgstr "ရနိုင်သောအခါအယ်လဘမ်အနုပညာရှင်အမည်အသုံးပြု" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "ဂျီနှုန်းအတိုကောက်ကီးများသံုး" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "ရနိုင်ခဲ့ပါကရီပလေးဂိမ်းအချက်အလက်ဖွဲ့စည်းမှုသံုး" @@ -5114,7 +5178,7 @@ msgstr "စိတ်ကြိုက်အရောင်သတ်မှတ်သ msgid "Use a custom message for notifications" msgstr "သတိပေးချက်များအတွက်စိတ်ကြိုက်မှာကြားချက်သံုး" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "ကွန်ရက်အဝေးထိန်းတစ်ခုအသုံးပြု" @@ -5154,20 +5218,20 @@ msgstr "စနစ်ပရောက်ဇီချိန်ညှိချက် msgid "Use volume normalisation" msgstr "အသံပမာဏပုံမှန်ပြုလုပ်မှုအသုံးပြု" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "အသုံးပြုပြီး" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "အသင်းဝင် %1 ဂရုရှက်အန်နီးဝဲစာရင်းတစ်ခုမရှိပါ။" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "အသံုးပြုသူမျက်နှာပြင်" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "ဗီဘီအာအမ်ပီသရီး" msgid "Variable bit rate" msgstr "ဘစ်နှုန်းကိန်းရှင်" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "အနုပညာရှင်များအမျိုးမျိုး" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "ပုံစံ %1" @@ -5207,7 +5271,7 @@ msgstr "ကြည့်ရှု" msgid "Visualization mode" msgstr "ပုံဖော်ကြည့်ခြင်းစနစ်" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "ပုံဖော်ကြည့်ခြင်းများ" @@ -5215,11 +5279,15 @@ msgstr "ပုံဖော်ကြည့်ခြင်းများ" msgid "Visualizations Settings" msgstr "ပုံဖော်ကြည့်ခြင်းချိန်ညှိချက်များ" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "အသံလှုပ်ရှားမှုရှာဖွေတွေ့ရှိခြင်း" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "အသံပမာဏ %1%" @@ -5237,11 +5305,11 @@ msgstr "တပလူအေဗီ" msgid "WMA" msgstr "တပလူအမ်အေ" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "သီချင်းစာရင်းမျက်နှာစာကိုပိတ်နေတုန်းသတိပေး" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "တပလူအေဗီ" @@ -5249,7 +5317,7 @@ msgstr "တပလူအေဗီ" msgid "Website" msgstr "ဝက်ဘ်ဆိုက်" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "အပတ်များ" @@ -5275,32 +5343,32 @@ msgstr "ဘာလို့မစမ်းကြည့်..." msgid "Wide band (WB)" msgstr "ရေဒီယိုလှိုင်းကျယ် (ဒဗလူဘီ)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "ဝီအဝေးထိန်း %1: အသက်သွင်းပြီး" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "ဝီအဝေးထိန်း %1: ဆက်သွယ်ပြီး" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "ဝီအဝေးထိန်း %1: ဓာတ်ခဲအကျပ်အတည်း (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "ဝီအဝေးထိန်း %1: အသက်မသွင်းပြီး" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "ဝီအဝေးထိန်း %1: မဆက်သွယ်ပြီး" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "ဝီအဝေးထိန်း %1: ဓာတ်ခဲအားနည်း (%2%)" @@ -5321,7 +5389,7 @@ msgstr "ဝင်းဒိုးမီဒီယာ၄၀ကီလို" msgid "Windows Media 64k" msgstr "ဝင်းဒိုးမီဒီယာ၆၄ကီလို" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "ဝင်းဒိုးမီဒီယာအသံ" @@ -5329,25 +5397,25 @@ msgstr "ဝင်းဒိုးမီဒီယာအသံ" msgid "Without cover:" msgstr "အဖံုးမပါ:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "အနုပညာရှင်များအမျိုးမျိုးသို့ယခုအယ်လဘမ်မှတစ်ခြားသီချင်းများကိုရွှေ့" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "ယခုနောက်တစ်ချိန်အပြည့်ပြန်လည်ဖတ်ရှု?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "သီချင်းဖိုင်များထဲသို့သီချင်းများကိန်းဂဏန်းအချက်အလက်များရေးသား" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "အသင်းဝင်အမည်နှင့်/သို့စကားဝှက်မမှန်" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "နှစ်" msgid "Year - Album" msgstr "နှစ် - အယ်လဘမ်" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "နှစ်များ" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "မနေ့က" @@ -5371,13 +5439,13 @@ msgstr "မနေ့က" msgid "You are about to download the following albums" msgstr "အောက်ဖော်ပြပါအယ်လဘမ်များကိုကူးဆွဲတော့မည်" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "%1 အနှစ်သက်ဆံုးများမှသီချင်းစာရင်းများဖယ်ရှားမှာသေချာသလား?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "အနှစ်သက်ဆုံးသီချင်းစာရင် msgid "You are not signed in." msgstr "သင်မဝင်ရောက်သေးပါ။" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "%1 ကဲ့သို့သင်ဝင်ရောက်ပြီး။" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "သင်ဝင်ရောက်ပြီး။" @@ -5400,13 +5468,13 @@ msgstr "သင်ဝင်ရောက်ပြီး။" msgid "You can change the way the songs in the library are organised." msgstr "သီချင်းတိုက်ထဲရှိသီချင်းများစုစည်းမှုပံုစံကိုပြောင်းလဲနိုင်။" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "သင်စာရင်းတစ်ခုမှမရှိဘဲအလကားနားဆင်နိုင်ပါသည်၊ သို့သော်အရစ်ကျစနစ်အဖွဲ့ဝင်များသည်ကြော်ငြာများမပါဘဲပို၍အရည်အသွေးကောင်းမွန်သောသီချင်းစီးကြောင်းများကိုနားဆင်နိုင်ပါသည်။" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "မက်နကျွန်းသီချင်းများကို msgid "You can listen to background streams at the same time as other music." msgstr "တခြားဂီတကဲ့သို့နောက်ခံသီချင်းစီးကြောင်းများကိုတစ်ချိန်တည်းနားထောင်နိုင်။" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "တေးသံလမ်းကြောများကိုအခမဲ့လိုလျှောက်နာမည်ပေးပို့ခြင်းလုပ်ဆောင်နိုင်၊ သို့သော် အခကြေးပေးမှာယူသူများ သည်ကလီမန်တိုင်းမှလက်စ်.အက်ဖ်အမ်ရေဒီယိုသို့သီချင်းစီးကြောင်းလွှင့်နိုင်။" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "ဝီအဝေးထိန်းကိုကလီမန်တိုင်းတွင်အဝေးထိန်းချုပ်ကိရိယာကဲ့သို့အသံုးပြုနိုင်။ ကလီမန်တိုင်းဝီကီစာမျက်နှာတွင်ကြည့်ရှုပါအချက်အလက်များအတွက် ⏎\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "သင့်ဆီမှာဂရုရှက်အန်နီးဝဲစာရင်းတစ်ခုမရှိပါ။" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "သင့်ဆီမှာစပေါ့တီဖိုင်းအရစ်ကျစနစ်စာရင်းတစ်ခုမရှိပါ။" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "သင့်ဆီတွင်မှာယူနေခြင်းမရှိပါ" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "စပေါ့တီဖိုင်းမှထွက်ပြီးဖြစ်၍ချိန်ညှိချက်အရေးအသားတွင်စကားဝှက်ပြန်ထည့်ပါ။" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "စပေါ့တီဖိုင်းမှထွက်ပြီးဖြစ်၍စကားဝှက်ပြန်ထည့်ပါ။" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "သင်ဒီတေးသံလမ်းကြောကိုနှစ်သက်" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "စနစ်လိုလားချက်များကိုဆော msgid "You will need to restart Clementine if you change the language." msgstr "ဘာသာစကားပြောင်းလဲပါကကလီမန်တိုင်းကိုပြန်လည်စတင်ပါ။" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "လက်စ်.အက်ဖ်အမ်မှာယူသူမဟုတ်၍လက်စ်.အက်ဖ်အမ်ရေဒီယိုထုတ်လွှင့်မှုဌာနကိုနားမဆင်နိင်ပါ။" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "သင့်ရဲ့အိုင်ပီလိပ်စာ:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "သင့်ရဲ့လက်စ်.အက်ဖ်အမ်အထောက်အထားများမမှန်ပါ" @@ -5485,42 +5554,43 @@ msgstr "သင့်ရဲ့လက်စ်.အက်ဖ်အမ်အထေ msgid "Your Magnatune credentials were incorrect" msgstr "သင့်ရဲ့မက်နကျွန်းအထောက်အထားများမမှန်ပါ" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "သင့်သီချင်းတိုက်မှာဘာမှမရှိ!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "သင့်ရေဒီယိုသီချင်းစီးကြောင်းများ" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "သင့်လိုလျှောက်နာမည်ပေးပို့ခြင်း: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "အိုးပန်းဂျီအယ်အထောက်အကူသင့်စနစ်တွင်မရှိပုံဖော်ကြည့်ခြင်းများမရနိုင်။" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "သင့်အသင်းဝင်အမည်သို့စကားဝှက်မမှန်" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "ဇက်-အေ" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "သုည" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "%n သီချင်းများထည့်သွင်း" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "ပြီးနောက်" @@ -5540,19 +5610,19 @@ msgstr "အလိုအလျောက်" msgid "before" msgstr "မတိုင်မီ" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "အကြား" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "အကြီးဆုံးဦးစားပေး" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "ဘီပီအမ်" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "ပါဝင်" @@ -5562,20 +5632,20 @@ msgstr "ပါဝင်" msgid "disabled" msgstr "မလုပ်ဆောင်စေ" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "ချပ်ပြားဝိုင်း %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "မပါဝင်" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "ဖြင့်အဆုံး" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "ညီမျှ" @@ -5583,11 +5653,11 @@ msgstr "ညီမျှ" msgid "gpodder.net" msgstr "ဂျီပေါ့တာ.နက်" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "ဂျီပေါ့တာ.နက်ဖိုင်လမ်းညွှန်" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "ပို၍ကြီးမား" @@ -5595,54 +5665,55 @@ msgstr "ပို၍ကြီးမား" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "နောက်ဆံုးမှာ" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "တစ်စက္ကန့်ကီလိုဘိုက်နှုန်း" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "ပို၍သေးငယ်" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "အရှည်ဆုံးဦးစားပေး" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "သီချင်းများ %n ရွှေ့" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "အသစ်ဆုံးဦးစားပေး" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "မညီမျှ" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "နောက်ဆံုးမှာမဟုတ်" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "အပေါ်မှာမဟုတ်" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "အအိုဆုံးဦးစားပေး" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "အပေါ်မှာ" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "ရွေးပိုင်ခွင့်များ" @@ -5654,36 +5725,37 @@ msgstr "(သို့)ကျုအာကုဒ်ကိုဖတ်" msgid "press enter" msgstr "ဝင်ရောက်ကီးခေါက်" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "%n သီချင်းများဖယ်ရှား" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "အတိုဆုံးဦးစားပေး" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "သီချင်းများကုလားဖန်ထိုး" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "အသေးဆံုးဦးစားပေး" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "သီချင်းများမျိုးတူစု" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "နှင့်စတင်" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "ရပ်" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "တေးသံလမ်းကြော %1" diff --git a/src/translations/nb.po b/src/translations/nb.po index 93d86d2e8..cdbc23ab5 100644 --- a/src/translations/nb.po +++ b/src/translations/nb.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/clementine/language/nb/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +17,7 @@ msgstr "" "Language: nb\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -42,9 +42,9 @@ msgstr "dager" msgid " kbps" msgstr "kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "Normaliseringsmodus" @@ -57,11 +57,16 @@ msgstr "pkt" msgid " seconds" msgstr " sekunder" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " sanger" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -71,12 +76,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 dager" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dager siden" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 på %2" @@ -86,48 +91,48 @@ msgstr "%1 på %2" msgid "%1 playlists (%2)" msgstr "%1 spillelister (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 valgte av" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 sang" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 sanger" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "fant %1 sanger" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "fant %1 sanger (viser %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 spor" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "overført %1" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: modulen Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 andre lyttere" @@ -141,18 +146,21 @@ msgstr "av %L1 ganger" msgid "%filename%" msgstr "%filnavn%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "kunne ikke: %n" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n ferdige" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n gjenstående" @@ -164,24 +172,24 @@ msgstr "&Still opp tekst" msgid "&Center" msgstr "Sentr&er" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Egendefinert" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Ekstra" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Hjelp" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Skjul %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Skjul..." @@ -189,23 +197,23 @@ msgstr "Skjul..." msgid "&Left" msgstr "&Venstre" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Musikk" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Ingen" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Spilleliste" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Avslutt" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Repeteringsmodus" @@ -213,23 +221,23 @@ msgstr "Repeteringsmodus" msgid "&Right" msgstr "&Høyre" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&Stokkemodus" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Fyll &kolonner i vinduet" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Verktøy" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(varierer mellom sanger)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... og til alle som har bidratt til Amarok" @@ -249,14 +257,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dag" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 spor" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -266,7 +270,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 tilfeldige spor" @@ -274,12 +278,6 @@ msgstr "50 tilfeldige spor" msgid "Upgrade to Premium now" msgstr "Oppgradér til Premium nå" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Opprett en konto eller be om nytt passord" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -290,6 +288,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Hvis ikke valgt vil Clementine prøve å lagre poeng og andre statistikker i en separat database, og ikke endre filene dine.

Hvis valgt, vil statistikkene lagres både i database og direkte i filen hver gang de endres.

Vennligst merk at dette kanskje ikke fungerer for alle formater, og at andre musikkavspillere kanskje ikke forstår dem, siden det ikke finnes noen standard for dette.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -298,38 +307,38 @@ msgid "" "activated.

" msgstr "

Dette skriver poeng, tagger og statistikker til filene, for alle sangene i biblioteket.

Ikke nødvendig hvis "Lagre poeng og statistikk i filene"-opsjonen alltid har vært aktiv.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Kodene begynner med %, for eksempel: %artist %album %title

⏎ ⏎

Hvis du setter klammeparanteser rundt tekst som inneholder en kode, vil teksten skjules om koden er tom.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Til dette trenger du en Grooveshark Anywhere-konto." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Til dette trenger du en Spotify Premium-konto." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Klienter kan kun koble til hvis de oppgir riktig kode." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "En smart spilleliste er en dynamisk liste av sanger som kommer fra ditt bibliotek. Det er forskjellige typer av smart spillelister som tilbyr forskjellige måter å velge sanger." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Sanger som passer med disse kriteriene blir med på spillelista." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -349,36 +358,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "Ære være Hypnotoad" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Avbryt" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Om %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Om Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Om Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Kontodetaljer" @@ -390,11 +398,15 @@ msgstr "Kontodetaljer (Premium)" msgid "Action" msgstr "Aksjon" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktiver/deaktiver Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Legg til Podcast" @@ -410,39 +422,39 @@ msgstr "Legg til en linje, hvis varslingstypen støtter det" msgid "Add action" msgstr "Legg til handling" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Legg til enda en strøm..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Legg til katalog..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Legg til fil" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Legg fil til konvertering" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Legg fil(er) til konvertering" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Legg til fil..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Legg filer til i konverterer" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Legg til katalog" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Legg til katalog..." @@ -454,11 +466,11 @@ msgstr "Legg til katalog..." msgid "Add podcast" msgstr "Legg til Podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Legg til Podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Legg til søke term" @@ -522,6 +534,10 @@ msgstr "Legg til antall hoppet over" msgid "Add song title tag" msgstr "Legg til sportittel-tagg" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Legg til spornummer-tagg" @@ -530,22 +546,34 @@ msgstr "Legg til spornummer-tagg" msgid "Add song year tag" msgstr "Legg til årstall-tagg" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Legg til strøm..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Legg til i Grooveshark-favoritter" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Legg til i Grooveshark-spillelister" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Legg til en annen spilleliste" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Legg til på spilleliste" @@ -554,6 +582,10 @@ msgstr "Legg til på spilleliste" msgid "Add to the queue" msgstr "Legg i kø" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Legg til wiimotedev-handlig" @@ -583,15 +615,15 @@ msgstr "Lagt til idag" msgid "Added within three months" msgstr "Lagt til innen tre måneder" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Legger til sangen i Musikk" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Legg til sang i favoritter" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Avansert gruppering..." @@ -599,12 +631,12 @@ msgstr "Avansert gruppering..." msgid "After " msgstr "Etter" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Etter kopiering..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -612,11 +644,11 @@ msgstr "Etter kopiering..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideell lydstyrke for alle spor)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -626,35 +658,36 @@ msgstr "Album artist" msgid "Album cover" msgstr "Albumgrafikk" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Album info på jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Album med cover" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Album uten cover" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Alle filer (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Ære være Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Alle album" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Alle artister" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Alle filer (*)" @@ -663,19 +696,19 @@ msgstr "Alle filer (*)" msgid "All playlists (%1)" msgstr "Alle spillelister (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Alle oversetterne" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Alle spor" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Tillat at andre kan laste ned musikk fra denne datamaskinen." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Tillat nedlastinger" @@ -700,30 +733,30 @@ msgstr "Alltid vis hovedvinduet" msgid "Always start playing" msgstr "Alltid start avspilling" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Det trengs et programtillegg for å bruke Spotify i Clementine. Ønsker du å laste ned og installere den nå?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "En feil oppsto med lasting av iTunes databasen" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Det oppstod en feil når metadata skulle skrives til '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Det oppstod en udefinert feil" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Og" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Sint" @@ -732,13 +765,13 @@ msgstr "Sint" msgid "Appearance" msgstr "Utseende" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Tilføy filer/URLer til spillelista" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Legg til i gjeldende spilleliste" @@ -746,52 +779,47 @@ msgstr "Legg til i gjeldende spilleliste" msgid "Append to the playlist" msgstr "Legg til i spilleliste" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Legg til kompressor, for å unngå klipping" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Er du sikker på at du vil slette \"%1\" innstillingen?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Sikker på at du vil slette denne spillelista?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Er du sikker på at du ønsker å nullstille denne sangens statistikk?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Er du sikker på at du ønsker å skrive statistikken for sangene til filene, for alle sangene i biblioteket?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Artist info" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Artistradio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Artist etiketter" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Artistens initial" @@ -799,9 +827,13 @@ msgstr "Artistens initial" msgid "Audio format" msgstr "Lydformat" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentiseringen feilet" @@ -809,7 +841,7 @@ msgstr "Autentiseringen feilet" msgid "Author" msgstr "Forfatter" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Forfattere" @@ -825,7 +857,7 @@ msgstr "Automatisk oppdatering" msgid "Automatically open single categories in the library tree" msgstr "Automatisk åpne enkeltkategorier i bibliotektreet" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Tilgjengelig" @@ -833,15 +865,15 @@ msgstr "Tilgjengelig" msgid "Average bitrate" msgstr "Gjennomsnittlig bitrate" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Gjennomsittlig bildestørrelse" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC-Podcast" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -862,7 +894,7 @@ msgstr "Bakgrunnsbilde" msgid "Background opacity" msgstr "Bakgrunnsgjennomsiktighet" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Tar sikkerhetskopi av databasen" @@ -870,11 +902,7 @@ msgstr "Tar sikkerhetskopi av databasen" msgid "Balance" msgstr "Balanse" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Bannlys" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Stolpeanalyse" @@ -894,18 +922,17 @@ msgstr "Atferd" msgid "Best" msgstr "Best" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografi fra %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -913,7 +940,12 @@ msgstr "Bitrate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blokkanalyse" @@ -929,7 +961,7 @@ msgstr "Mengde slør" msgid "Body" msgstr "Innhold" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boomanalysator" @@ -943,11 +975,11 @@ msgstr "Box" msgid "Browse..." msgstr "Bla gjennom..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Bufferlengde" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Mellomlagring" @@ -959,43 +991,66 @@ msgstr "Men disse kildene er slått av:" msgid "Buttons" msgstr "Knapper" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CD-audio" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Støtte for CUE-filer" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Avbryt" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Endre omslagsbilde" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Endre font størrelse..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Endre repetisjonsmodus" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Endre snarvei..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Endre stokke-modus" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Endre språket" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1005,15 +1060,19 @@ msgstr "Når du endrer innstillingen for mono-avspilling, vil dette bli tatt i b msgid "Check for new episodes" msgstr "Se etter nye episoder" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Sjekk for oppdateringer..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Sett et navn på den smarte spillelisten" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Velg automatisk" @@ -1029,11 +1088,11 @@ msgstr "Velg skrifttype..." msgid "Choose from the list" msgstr "Velg fra listen" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Velg hvordan spillelisten er sortert og hvor mange sanger den vil inneholde." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Velg katalog for podcastene" @@ -1042,7 +1101,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Velg websidene du vil at Clementine skal bruke under søking for lyrikk." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klassisk" @@ -1050,17 +1109,17 @@ msgstr "Klassisk" msgid "Cleaning up" msgstr "Rydder" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Tøm" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Tøm spillelisten" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1073,8 +1132,8 @@ msgstr "Clementine feil" msgid "Clementine Orange" msgstr "Oransje" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine visualisering" @@ -1096,9 +1155,9 @@ msgstr "Clementine kan spille musikk du har lastet opp til Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine kan spille musikk du har lastet opp til Google Disk" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine kan spille musikk du har lastet opp til Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1111,20 +1170,13 @@ msgid "" "an account." msgstr "Clementine kan synkronisere abonnementslistene dine mot andre maskiner og podcast-programmer. Opprett konto." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine klarte ikke å laste projectM visualiseringer. Sjekk at Clementine er korrekt installert." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine kunne ikke innhente abonnementsstatusen på grunn av problemer med forbindelsen. Informasjon om avspilte spor blir mellomlagret og sendt til Last.fm senere." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine bildevisning" @@ -1136,11 +1188,11 @@ msgstr "Clementine klarte ikke å finne resultater for denne filen" msgid "Clementine will find music in:" msgstr "Clementine leter etter musikk i:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klikk her for å legge til musikk" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1150,7 +1202,10 @@ msgstr "Klikk her for å merke spillelisten som favoritt, så den lagres og blir msgid "Click to toggle between remaining time and total time" msgstr "Klikk for å bytte mellom gjenværende tid og total tid" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1165,19 +1220,19 @@ msgstr "Lukk" msgid "Close playlist" msgstr "Lukk spillelista" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Lukk visualisering" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Lukking av dette vinduet vil kansellere nedlastingen." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Lukking av dette vinduet vil stoppe søking for album kover." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klubbmusikk" @@ -1185,73 +1240,78 @@ msgstr "Klubbmusikk" msgid "Colors" msgstr "Farger" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Komma-separert liste av klasse:level, level er 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Fullfør tags automatisk" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Fullfør tags automatisk..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Komponist" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Konfigurér %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Innstillinger for Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Sett opp Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Konfigurer Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Oppsett av hurtigtaster" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Konfigurere Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Konfigurere Subsonic.." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Konfigurér globalt søk..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Sett opp bibliotek..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Konfigurere podcasts..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Innstillinger..." @@ -1259,11 +1319,11 @@ msgstr "Innstillinger..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Koble til Wii Remotes med aktiver/de-aktiver aksjon" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Koble til enhet" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Kobler til Spotify" @@ -1273,12 +1333,16 @@ msgid "" "http://localhost:4040/" msgstr "Tjeneren nektet tilkobling; sjekk tjener-URL. For eksempel: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Tidsavbrudd i tilkoblingen; sjekk tjener-URL. For eksempel: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsoll" @@ -1294,17 +1358,21 @@ msgstr "Konverter all musikk" msgid "Convert any music that the device can't play" msgstr "Konverter musikk som enheten ikke kan spille" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiér til utklippstavla" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopier til enhet..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopier til bibliotek..." @@ -1312,156 +1380,152 @@ msgstr "Kopier til bibliotek..." msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Kunne ikke koble til Subsonic; sjekk server-URLen. Eksempel: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Kunne ikke lage GStreamer element \"%1\" - sørg for at du har alle de nødvendige GStreamer programutvidelsene installert" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kunne ikke finne multiplekser for %1, sjekk at du har de riktige GStreamer programutvidelsene installert" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Kunne ikke finne noen koder for %1, kontrollér at du har de riktige GStreamer-modulene installert" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Kunne ikke laste inn Last.fm-radiostasjon" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Kunne ikke åpne output fil %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Behandling av plateomslag" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Omslagsgrafikk fra innebygget bilde" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Omslagsgrafikk ble lastet inn automatisk fra %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Fjernet omslagsgrafikk manuelt" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Har ikke omslagsgrafikk" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Omslagsgrafikk satt fra %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Omslag fra %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Lag ny Grooveshark-spillpliste" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Mikse overgang når spor skiftes automatisk" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Mikse overgang når du skifter spor selv" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Skift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1469,7 +1533,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Egendefinert" @@ -1481,54 +1545,50 @@ msgstr "Egendefinert bilde:" msgid "Custom message settings" msgstr "Egendefinerte meldingsinnstillinger" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Egendefinert radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Egendefinert..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus sti" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dansemusikk" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Oppdaget feil i databasen. Vennligst les https://code.google.com/p/clementine-player/wiki/DatabaseCorruption for å finne ut hvordan du kan gjenoprette den." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Laget dato" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Endringsdato" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dager" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "S&tandard" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Demp volum med 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Demp lydstyrken med prosent" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Demp volumet" @@ -1536,6 +1596,11 @@ msgstr "Demp volumet" msgid "Default background image" msgstr "Standard bakgrunnsbilde" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Standard" @@ -1544,30 +1609,30 @@ msgstr "Standard" msgid "Delay between visualizations" msgstr "Pause mellom visualiseringer" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Slett" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Slett Grooveshark-spilleliste" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Slett nedlastede data" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Slett filer" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Slett fra enhet..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Slett fra harddisk..." @@ -1575,31 +1640,31 @@ msgstr "Slett fra harddisk..." msgid "Delete played episodes" msgstr "Slett avspilte episoder" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Slett forhåndsinnstilling" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Slett smart spilleliste" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Slett de originale filene" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Sletter filer" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Fjern valgte spor fra avspillingskøen" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Fjern sporet fra avspillingskøen" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinasjon" @@ -1608,7 +1673,7 @@ msgstr "Destinasjon" msgid "Details..." msgstr "Detaljer" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Enhet" @@ -1620,15 +1685,15 @@ msgstr "Egenskaper for enhet" msgid "Device name" msgstr "Enhetsnavn" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Egenskaper for enhet..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Enheter" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1665,12 +1730,17 @@ msgstr "Slå av varighet" msgid "Disable moodbar generation" msgstr "Slå av opprettelse av stemningsstolper" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Deaktivert" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1680,15 +1750,15 @@ msgid "Discontinuous transmission" msgstr "Uregelmessig overførsel" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Visningsegenskaper" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Vis overlegg-display" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Sjekk hele biblioteket" @@ -1700,27 +1770,27 @@ msgstr "Ikke konverter musikk" msgid "Do not overwrite" msgstr "Ikke skriv over" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ikke repetér" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Ikke vis under Diverse Artister" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ikke stokk" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ikke stopp!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Donér" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dobbelklikk for å åpne" @@ -1728,12 +1798,13 @@ msgstr "Dobbelklikk for å åpne" msgid "Double clicking a song will..." msgstr "Når jeg dobbelklikker en sang, ..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Last ned %n episoder" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Last ned katalog" @@ -1749,7 +1820,7 @@ msgstr "Last ned medlemskap" msgid "Download new episodes automatically" msgstr "Last ned nye episoder automatisk" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Lagt til i nedlastingskøen" @@ -1757,15 +1828,15 @@ msgstr "Lagt til i nedlastingskøen" msgid "Download the Android app" msgstr "Last ned Android-appen" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Last ned dette albumet" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Last ned dette albumet..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Last ned denne episoden" @@ -1773,7 +1844,7 @@ msgstr "Last ned denne episoden" msgid "Download..." msgstr "Last ned..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Laster ned (%1%)..." @@ -1782,23 +1853,23 @@ msgstr "Laster ned (%1%)..." msgid "Downloading Icecast directory" msgstr "Laster ned Icecast-katalogen" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Laster ned Jamendo-katalogen" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Laster ned Magnatune-katalogen" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Laster ned Spotify-modul" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Laster ned metadata" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Dra for å endre posisjon" @@ -1818,20 +1889,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Dynamisk modus er på" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynamisk tilfeldig miks" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Rediger smart spilleliste..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Redigér taggen \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Endre merkelapp..." @@ -1843,16 +1914,16 @@ msgstr "Rediger tagger" msgid "Edit track information" msgstr "Redigér informasjon om sporet" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Rediger informasjon om sporet..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Rediger sporinformasjon..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Rediger..." @@ -1860,6 +1931,10 @@ msgstr "Rediger..." msgid "Enable Wii Remote support" msgstr "Slå på støtte for Wii-fjernkontroll" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Slå på equalizer" @@ -1874,7 +1949,7 @@ msgid "" "displayed in this order." msgstr "Slå på kilder under for å inkludere dem i søkeresultater. Resultatene vises i denne rekkefølgen." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Slå av/på scrobbling mot Last.fm" @@ -1902,15 +1977,10 @@ msgstr "Skriv inn en URL for å laste ned albumgrafikk fra internett:" msgid "Enter a filename for exported covers (no extension):" msgstr "Skriv inn et filnavn for eksportert albumgrafikk (uten filetternavn):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Gi denne spillelista et nytt navn" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Skriv en artist eller merkelapp for å lytte til Last.fm-radio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1924,7 +1994,7 @@ msgstr "Skriv inn søkeord under for å finne podcaster i iTunes Store" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Skriv inn søkeord under for å finne podcaster på gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Skriv inn søkeord her" @@ -1933,11 +2003,11 @@ msgstr "Skriv inn søkeord her" msgid "Enter the URL of an internet radio stream:" msgstr "Skriv adressen (URL) til en internett radiostrøm" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Skriv inn navn på mappa" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Skriv in denne IPen i Appen for å koble til Clementine." @@ -1945,21 +2015,22 @@ msgstr "Skriv in denne IPen i Appen for å koble til Clementine." msgid "Entire collection" msgstr "Hele samlingen" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Lydbalanse" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Tilsvarer --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Tilsvarer --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Feil" @@ -1967,38 +2038,38 @@ msgstr "Feil" msgid "Error connecting MTP device" msgstr "Kunne ikke koble til MTP-enhet" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Kunne ikke kopiere sanger" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Kunne ikke slette sanger" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Kunne ikke laste ned Spotify-modul" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Kunne ikke laste inn %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Kunne ikke laste ned spillelista fra di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Kunne ikke behandle %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Kunne ikke laste lyd-CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Noensinne spilt av" @@ -2030,7 +2101,7 @@ msgstr "Hver 6. time" msgid "Every hour" msgstr "Hver time" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Unntatt mellom spor fra samme album eller CUE-fil" @@ -2042,7 +2113,7 @@ msgstr "Eksisterende omslag" msgid "Expand" msgstr "Utvid" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Utgår den %1" @@ -2063,36 +2134,36 @@ msgstr "Eksportér nedlastede omslag" msgid "Export embedded covers" msgstr "Eksportér innebygde omslag" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Eksport fullført" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Esportert %1 av %2 omslag (hoppet over %3)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2102,42 +2173,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Fade ut/inn ved pause/start" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Ton ut når sporet stoppes" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Ton inn/ut" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Toning-varighet" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Kunne ikke hente katalogen" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Kunne ikke laste ned podcast" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Kunne ikke laste inn podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Kunne ikke lese XML-beskrivelsen av denne RSS-feeden." @@ -2146,11 +2217,11 @@ msgstr "Kunne ikke lese XML-beskrivelsen av denne RSS-feeden." msgid "Fast" msgstr "Rask" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoritte" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Favorittspor" @@ -2166,11 +2237,11 @@ msgstr "Hent automatisk" msgid "Fetch completed" msgstr "Henting fullført" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Henter Subsonic-bibliotek" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Kunne ikke hente albumgrafikk" @@ -2178,7 +2249,7 @@ msgstr "Kunne ikke hente albumgrafikk" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Filetternavn" @@ -2186,19 +2257,23 @@ msgstr "Filetternavn" msgid "File formats" msgstr "Filformat" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Filnavn" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Filnavn (uten sti)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Filstørrelse" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2208,7 +2283,7 @@ msgstr "Filtype" msgid "Filename" msgstr "Filnavn" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Filer" @@ -2216,15 +2291,19 @@ msgstr "Filer" msgid "Files to transcode" msgstr "Filer som skal kodes" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Finn sanger i biblioteket, basert på kriteriene du oppgir" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Vannmerker sangen" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Ferdig" @@ -2232,7 +2311,7 @@ msgstr "Ferdig" msgid "First level" msgstr "Første nivå" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2248,12 +2327,12 @@ msgstr "Av lisenshensyn er Spotify-støtte en egen innstikksmodul." msgid "Force mono encoding" msgstr "Tving monolyd-koding" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Glem enhet" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2268,7 +2347,7 @@ msgstr "Hvis du glemmer enheten, forsvinner den fra denne listen, og Clementine #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2296,31 +2375,23 @@ msgstr "Bilder/sekund" msgid "Frames per buffer" msgstr "Bilder per buffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Venner" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Dypfry" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Lys lyd" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full lys lyd" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer lydmotor" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Generelt" @@ -2328,30 +2399,30 @@ msgstr "Generelt" msgid "General settings" msgstr "Generelle innstillinger" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Sjanger" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Lag en URL for å dele denne Grooveshark-spillelisten" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Lag en URL for å dele denne Grooveshark-sangen" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Henter populære sanger fra Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Henter kanaler" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Henter strømmer" @@ -2363,11 +2434,11 @@ msgstr "Gi den et navn:" msgid "Go" msgstr "Gå" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Gå til neste flik på spillelista" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Gå til forrige flik på spillelista" @@ -2375,7 +2446,7 @@ msgstr "Gå til forrige flik på spillelista" msgid "Google Drive" msgstr "Google Disk" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2385,7 +2456,7 @@ msgstr "Hentet %1 av %2 albumbilder (%3 feilet)" msgid "Grey out non existent songs in my playlists" msgstr "Merk ikke-eksisterende sanger med grått i mine spillelister" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2393,15 +2464,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Kunne ikke logge inn på Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark-URL for sangen" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark-radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark-URL for sange" @@ -2409,44 +2480,44 @@ msgstr "Grooveshark-URL for sange" msgid "Group Library by..." msgstr "Gruppér biblioteket etter..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupper etter" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Gruppér på albumtittel" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Gruppér på artistnavn" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Gruppér på artist og album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Gruppér etter Artist/År - Albumnavn" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Gruppér etter Sjanger/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Gruppér etter Sjanger/Artist/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppering" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML-siden inneholdt ingen RSS-feeder." -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Fikk til svar HTTP-kode 3xx , men uten URL. Sjekk serverkonfigurasjonen." @@ -2455,7 +2526,7 @@ msgstr "Fikk til svar HTTP-kode 3xx , men uten URL. Sjekk serverkonfigurasjonen. msgid "HTTP proxy" msgstr "Mellomtjener for HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Glad" @@ -2471,25 +2542,25 @@ msgstr "Informasjon om maskinvaren er bare tilgjengelig når enheten er tilkoble msgid "High" msgstr "Høy" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Høy (%1 bilder/sekund)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Høy (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Fant ikke tjeneren; sjekk tjener-URL. For eksempel: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Timer" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2501,15 +2572,15 @@ msgstr "Jeg har ikke noen Magnatune-konto" msgid "Icon" msgstr "Ikon" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikoner øverst" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identifiserer sangen" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2519,24 +2590,24 @@ msgstr "Hvis du fortsetter, vil enheten bli treg, og du kan kanskje ikke spille msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Hvis du vet URLen til en podcast, skriv den inn under og trykk Gå." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorér \"The\" i artistnavn" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Bilder (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Bilder (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Om %1 dager" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Om %1 uker" @@ -2547,7 +2618,7 @@ msgid "" "time a song finishes." msgstr "I dynamisk modus vil nye spor bli valgt og lagt til spillelista hver gang en sang tar slutt." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Innboks" @@ -2559,36 +2630,36 @@ msgstr "Inkludér cover i meldingen" msgid "Include all songs" msgstr "Inkluder alle sanger" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Ikke-kompatibel Subsonic REST-protokollversjon. Klienten må oppgraderes." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Ikke-kompatibel Subsonic REST-protokollversjon. Tjeneren må oppgraderes." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Ufullstendig oppsett. Sjekk at du har fylt ut alle feltene." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Øk lydstyrken 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Øk lydstyrken med prosent" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Øk lydstyrken" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indekserer %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informasjon" @@ -2596,55 +2667,55 @@ msgstr "Informasjon" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Sett inn..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Installert" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Integritetskontrol" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internett" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internettilbydere" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Ugyldig API-nøkkel" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Ugyldig format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Ukjent metode" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Ugyldige parametere" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Ugjyldig ressurs" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Ukjent tjeneste" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Ugyldig sesjonsnøkkel" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Ugyldig brukernavn og/eller passord" @@ -2652,42 +2723,42 @@ msgstr "Ugyldig brukernavn og/eller passord" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Mest spilte på Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Favorittlista på Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Månedens favoritter på Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Ukas favoritter på Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo-database" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Gå til sporet som spilles av nå" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Hold nede knappen i %1 sekund(er)..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Hold nede knappen i %1 sekund(er)..." @@ -2696,23 +2767,24 @@ msgstr "Hold nede knappen i %1 sekund(er)..." msgid "Keep running in the background when the window is closed" msgstr "Fortsett i bakgrunnen selv om du lukker vinduet" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Belhold originalfiler" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Kattunger" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Språk" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Hodetelefoner" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Storsal" @@ -2720,58 +2792,24 @@ msgstr "Storsal" msgid "Large album cover" msgstr "Stort albumbilde" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Stort sidefelt" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Sist spilt" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Egendefinert radio på Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm-bibliotek: %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm-miksradio: %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm-lokalradio: %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm-radio: %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Artister liknende %1 fra Last.fm" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm-taggradio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm er opptatt, vennligst prøv igjen om et par minutter" @@ -2779,11 +2817,11 @@ msgstr "Last.fm er opptatt, vennligst prøv igjen om et par minutter" msgid "Last.fm password" msgstr "Last.fm-passord" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Antall avspillinger fra Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Tagger fra Last.fm" @@ -2791,28 +2829,24 @@ msgstr "Tagger fra Last.fm" msgid "Last.fm username" msgstr "Last.fm-brukernavn" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm-wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Spor med minst stemmer" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "La stå tom for standardvalg. Eksempler: \"/dev/dsp\", \"front\", osv." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Venstre" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Lengde" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliotek" @@ -2820,24 +2854,24 @@ msgstr "Bibliotek" msgid "Library advanced grouping" msgstr "Avansert biblioteksgruppering" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Melding om gjennomsyn av biblioteket" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Søk i biblioteket" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Grenser" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Finn sanger på Grooveshark som ligner på de du nylig har spilt av" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2849,15 +2883,15 @@ msgstr "Hent" msgid "Load cover from URL" msgstr "Hent albumgrafikk fra URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Hent albumgrafikk fra URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Hent albumbilde fra disk" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Hent albumgrafikk fra disk..." @@ -2865,84 +2899,89 @@ msgstr "Hent albumgrafikk fra disk..." msgid "Load playlist" msgstr "Åpne spilleliste" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Åpne spilleliste..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Laster inn Last.fm-radio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Åpner MTP-enhet" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Åpner iPod-database" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Åpner smart spilleliste" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Åpner sanger" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Lader lydstrøm" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Åpner spor" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Henter informasjon om spor" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Åpner..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Åpne filer/URLer; erstatt gjeldende spilleliste" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Innlogging" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Login feilet" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Long term prediction-profil (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Elsk" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Lav (%1 bilder/sekund)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Lav (256x256)" @@ -2954,12 +2993,17 @@ msgstr "Low complexity-profil (LC)" msgid "Lyrics" msgstr "Sangtekst" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Sangtekst fra %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2971,15 +3015,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3, 96kbps" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4, AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2987,7 +3031,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune-nedlasting" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune-nedlasting fullført" @@ -2995,15 +3039,20 @@ msgstr "Magnatune-nedlasting fullført" msgid "Main profile (MAIN)" msgstr "Hovedprofil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Kjør på!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Gjør spillelista tilgjengelig online" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Ugyldig svar" @@ -3016,15 +3065,15 @@ msgstr "Manuell proxy-innstilling" msgid "Manually" msgstr "Manuelt" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabrikant" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Merk som hørt" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Merk som ny" @@ -3036,17 +3085,21 @@ msgstr "Krev treff på alle søkeord (OG)" msgid "Match one or more search terms (OR)" msgstr "Treff på hvilket som helst søkeord (ELLER)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Høyeste bitrate" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Medium (%1 bilder/sekund)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Medium (512x512)" @@ -3058,11 +3111,15 @@ msgstr "Type medlemskap" msgid "Minimum bitrate" msgstr "Minimal bitrate" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Manglende projectM-forhåndsinnstillinger" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modell" @@ -3070,20 +3127,20 @@ msgstr "Modell" msgid "Monitor the library for changes" msgstr "Følg med på endringer i biblioteket" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Spill av i mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Måneder" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Stemning" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Type stemningsstolpe" @@ -3091,15 +3148,19 @@ msgstr "Type stemningsstolpe" msgid "Moodbars" msgstr "Stemningsstolper" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Mest spilt" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Monteringspunkt" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Monteringspunkter" @@ -3108,7 +3169,7 @@ msgstr "Monteringspunkter" msgid "Move down" msgstr "Flytt ned" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Flytt til bibliotek..." @@ -3117,7 +3178,7 @@ msgstr "Flytt til bibliotek..." msgid "Move up" msgstr "Flytt opp" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musikk" @@ -3125,56 +3186,32 @@ msgstr "Musikk" msgid "Music Library" msgstr "Musikkbibliotek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Demp" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Mitt Last.fm-bibliotek" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Min Last.fm-miksradio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Mitt Last.fm-nabolag" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Min anbefalt radio på Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Min miksradio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Musikk" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mitt nabolag" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Min radiostasjon" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mine anbefalinger" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Navn" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Navnevalg" @@ -3182,23 +3219,19 @@ msgstr "Navnevalg" msgid "Narrow band (NB)" msgstr "Smalbånd (SB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Naboer" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Mellomtjener" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Tjener på nettet" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Aldri" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Aldri spilt" @@ -3207,21 +3240,21 @@ msgstr "Aldri spilt" msgid "Never start playing" msgstr "Begynn aldri avspilling" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Ny mappe" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Ny spilleliste" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Ny smart spilleliste..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nye sanger" @@ -3229,24 +3262,24 @@ msgstr "Nye sanger" msgid "New tracks will be added automatically." msgstr "Nye spor vil automatisk bli lagt til." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Nyeste spor" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Neste" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Neste spor" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Neste uke" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Ingen analyse" @@ -3254,7 +3287,7 @@ msgstr "Ingen analyse" msgid "No background image" msgstr "Slå av bagrunnsbilde" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Ingen omslag å eksportere." @@ -3262,7 +3295,7 @@ msgstr "Ingen omslag å eksportere." msgid "No long blocks" msgstr "Ingen lange blokker" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Ingen treff. Visk ut søkefeltet for å vise hele spillelisten igjen." @@ -3276,11 +3309,11 @@ msgstr "Ikke korte blokker" msgid "None" msgstr "Ingen" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Kunne ikke kopiere noen av de valgte sangene til enheten" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3288,43 +3321,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Normal blokktype" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Ikke tilgjengelig sammen med dynamiske spillelister" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Ikke tilkoblet" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Ikke nok innhold" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Ikke nok tilhengere" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Ikke nok medlemmer" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Ikke nok naboer" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Ikke installert" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Ikke pålogget" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Ikke montert - dobbelklikk for å montere" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Meldingstype" @@ -3337,36 +3374,41 @@ msgstr "Meldinger" msgid "Now Playing" msgstr "Nå spilles" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Forhåndsvisning av notifikasjon" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "OGG FLAC" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3374,11 +3416,11 @@ msgid "" "192.168.x.x" msgstr "Aksepter kun tilkoblinger fra klienter i IP-rangene:⏎\n10.x.x.x⏎\n172.16.0.0 - 172.31.255.255⏎\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Tillat kun tilkoblinger fra det lokale nettverket" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Bare vis første" @@ -3386,23 +3428,23 @@ msgstr "Bare vis første" msgid "Opacity" msgstr "Dekkevne" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Åpne %1 i nettleser" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Åpne lyd-&CD" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Åpne OPML-fil" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Åpne OPML-fil..." @@ -3410,30 +3452,35 @@ msgstr "Åpne OPML-fil..." msgid "Open device" msgstr "Åpne enhet" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Åpne fil..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Åpne i Google Disk" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Åpne i ny spilleliste" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Åpne i nettlese" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Åpne..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operasjonen feilet" @@ -3453,23 +3500,23 @@ msgstr "Innstillinger..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organisér filer" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organisér filer..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organiserer filer" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Opprinnelige tagger" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Andre innstillinger" @@ -3477,7 +3524,7 @@ msgstr "Andre innstillinger" msgid "Output" msgstr "Ut" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Ut-enhet" @@ -3485,15 +3532,11 @@ msgstr "Ut-enhet" msgid "Output options" msgstr "Utputt-innstillinger" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Utputtmodu" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Skriv over alle" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Skriv over eksisterende filer" @@ -3505,15 +3548,15 @@ msgstr "Skriv over bare mindre ~" msgid "Owner" msgstr "Eier" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Behandler Jamendo-katalogen" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Fest" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3522,20 +3565,20 @@ msgstr "Fest" msgid "Password" msgstr "Passord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pause" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pause" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pauset" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Utøver" @@ -3544,34 +3587,22 @@ msgstr "Utøver" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Enkelt sidefelt" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Spill" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Spill artist eller merkelapp" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Spill artistradio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Antall ganger spilt av" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Spill av egendefinert radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Hvis stoppet: spill av. Hvis spiller: pause" @@ -3580,45 +3611,42 @@ msgstr "Hvis stoppet: spill av. Hvis spiller: pause" msgid "Play if there is nothing already playing" msgstr "Spill hvis det ikke er noe annet som spilles av for øyeblikket" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Spill etikettradio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Spill av ende spor i spillelista" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Spill av/Pause" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Avspilling" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Innstillinger for avspiller" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Spilleliste" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Spillelisten er ferdigspilt" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Innstillinger for spilleliste" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Type spilleliste" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Spillelister" @@ -3630,23 +3658,23 @@ msgstr "Vennligst lukk nettleseren og gå tilbake til Clementine." msgid "Plugin status:" msgstr "Modulens status:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcaster" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Populære sange" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Populære sanger denne måneden" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Populære sanger i dag" @@ -3655,22 +3683,23 @@ msgid "Popup duration" msgstr "Hvor lenge skal informasjonsvinduet vises" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Portnummer" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Lydforsterkning" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Innstillinger" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Innstillinger …" @@ -3706,7 +3735,7 @@ msgstr "Trykk en tastkombinasjon å bruke til" msgid "Press a key" msgstr "Trykk en tast" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Trykk en tastekombinasjon å bruke til %1..." @@ -3717,20 +3746,20 @@ msgstr "Skrivebordsmeldinginnstillinger" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Forhåndsvisning" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Forrige" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Forrige spor" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Vis versjonsinformasjon" @@ -3738,21 +3767,25 @@ msgstr "Vis versjonsinformasjon" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Fremgang" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Trykk Wiiremote-knapp" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Sett sangene i tilfeldig rekkefølge" @@ -3760,85 +3793,95 @@ msgstr "Sett sangene i tilfeldig rekkefølge" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kvalitet" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Spør enhet..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Købehandler" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Legg valgte spor i kø" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Legg spor i kø" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (lik loudness for alle spor)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radioer" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Regn" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Tilfeldig visualisering" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Gi 0 stjerner til sangen" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Gi 1 stjerne til sangen" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Gi 2 stjerner til sangen" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Gi 3 stjerner til sangen" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Gi 4 stjerner til sangen" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Gi 5 stjerner til sangen" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Poenggiving" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Vil du virkelig avbryte?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "For mange omdirigeringer. Sjekk serverkonfigurasjonen." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Oppfrisk" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Oppfrisk katalogen" @@ -3846,19 +3889,15 @@ msgstr "Oppfrisk katalogen" msgid "Refresh channels" msgstr "Hent kanaler på ny" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Oppfrisk vennelista" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Oppfrisk kanallista" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Oppfrisk bakgrunnslyder" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3870,8 +3909,8 @@ msgstr "Husk Wii-fjernkontroll-bevegelse" msgid "Remember from last time" msgstr "Husk fra forrige gang" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Fjern" @@ -3879,7 +3918,7 @@ msgstr "Fjern" msgid "Remove action" msgstr "Fjern handling" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Fjern duplikater fra spillelisten" @@ -3887,73 +3926,77 @@ msgstr "Fjern duplikater fra spillelisten" msgid "Remove folder" msgstr "Fjern katalog" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Fjern fra Musikk" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Fjern fra favoritter" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Fjern fra spillelisten" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Fjern spilleliste" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Fjern spillelister" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Fjerner sanger fra Musikk" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Fjerner sanger fra favoritter" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Gi nytt navn til spillelista \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Gi nytt navn til Grooveshark-spilleliste" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Gi nytt navn til spillelista" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Gi nytt navn til spillelista..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Renummerér sporene i denne rekkefølgen..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repetér" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repetér album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Gjenta spilleliste" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repetér spor" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Erstatt gjeldende spilleliste" @@ -3962,15 +4005,15 @@ msgstr "Erstatt gjeldende spilleliste" msgid "Replace the playlist" msgstr "Erstatt spillelista" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Erstatt mellomrom med understrek" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Normalisering" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Replay Gain-modus" @@ -3978,24 +4021,24 @@ msgstr "Replay Gain-modus" msgid "Repopulate" msgstr "Fyll lista igjen" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Krev tilgangskode" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Resett" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Resett avspillingsteller" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Start sporet igjen, eller spill forrige spor hvis du er innen de første 8 sekundene av sporet" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Begrens til ASCII-tegn" @@ -4003,15 +4046,15 @@ msgstr "Begrens til ASCII-tegn" msgid "Resume playback on start" msgstr "Gjenoppta avspilling etter oppstart" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Henter Musikk fra Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Henter favorittsanger fra Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Henter Grooveshark-spillelister" @@ -4031,11 +4074,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4047,25 +4090,25 @@ msgstr "Kjør" msgid "SOCKS proxy" msgstr "Mellomtjener for SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Feil i SSL-handshake, sjekk tjenerkonfigurasjon. SSLv3-valget under kan ordne noen problemer." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Trygg fjerning av enhet" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Kjør trygg fjerning av enhet etter kopiering" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Samplingsrate" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Samplingsrate" @@ -4073,27 +4116,33 @@ msgstr "Samplingsrate" msgid "Save .mood files in your music library" msgstr "Lagre .mood-filer i musikkbiblioteket ditt" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Lagre albumbilde" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Lagre bilde til disk..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Lagre bilde" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Lagre spillelista" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Lagre spillelista..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Lagre forhåndsinnstilling" @@ -4109,11 +4158,11 @@ msgstr "Lagre statistikk i filtagger når mulig" msgid "Save this stream in the Internet tab" msgstr "Lagre denne kanalen i en Internett-flik" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Lagrer sangstatistikk til filene" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Lagrer spo" @@ -4125,7 +4174,7 @@ msgstr "Skalerbar samplingrate-profil (SSR)" msgid "Scale size" msgstr "Skalér til størrelse" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Karakte" @@ -4133,34 +4182,38 @@ msgstr "Karakte" msgid "Scrobble tracks that I listen to" msgstr "Fortell last.fm om (\"scrobble\") sangene jeg har lyttet til" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Søk" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Søk i Icecast-stasjoner" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Søk i Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Søk i Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Søk i Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Automatisk søk" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Søk etter albumbilder..." @@ -4180,21 +4233,21 @@ msgstr "Søk iTunes" msgid "Search mode" msgstr "Søkemodus" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Søkeinnstillinger" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Søkeresultater" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Søkekriterier" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Søker på Grooveshark" @@ -4202,27 +4255,27 @@ msgstr "Søker på Grooveshark" msgid "Second level" msgstr "Andre nivå" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Gå bakover" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Gå fremove" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Gå frem-/bakover en viss tidsperiode i sporet" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Gå til et bestemt tidspunkt i sporet" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Velg alle" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Velg ingen" @@ -4230,7 +4283,7 @@ msgstr "Velg ingen" msgid "Select background color:" msgstr "Velg bakgrunnsfarge:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Velg bakgrunnsbilde" @@ -4246,7 +4299,7 @@ msgstr "Velg forgrunnsfarge:" msgid "Select visualizations" msgstr "Velg visualiseringer" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Velg visualiseringer..." @@ -4254,7 +4307,7 @@ msgstr "Velg visualiseringer..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Serienummer" @@ -4266,51 +4319,51 @@ msgstr "Tjener-URL" msgid "Server details" msgstr "Tjenerdetaljer" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Tjenesten er utilgjengelig" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Sett %1 to \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Sett lydstyrken til prosent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Sett verdi for alle de valgte sporene..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Innstillinger" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Hurtigtast" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Hurtigtast for %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Det finnes allerede en hurtigtast for %1" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Vis" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Vis display" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Vis aura rundt gjeldende spor" @@ -4338,15 +4391,15 @@ msgstr "Popp opp informasjon fra systemskuffa" msgid "Show a pretty OSD" msgstr "Vis en Clementine-spesifikk skrivebordsmelding" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Vis over statuslinja" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Vis alle sanger" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Vis alle sangene" @@ -4358,32 +4411,36 @@ msgstr "Vis albumbilder i biblioteket" msgid "Show dividers" msgstr "Vis delere" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Vis i fullskjerm..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Vis i filbehandler..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Vis under Diverse Artister" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Vis Stemningsstolpe" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Vis bare duplikate" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Vis bare filer uten tagger" @@ -4392,8 +4449,8 @@ msgid "Show search suggestions" msgstr "Vis søkeforslag" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Vis \"Elsk\" og \"Bannlys\" knappene" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4407,27 +4464,27 @@ msgstr "Vis systemkurvikon" msgid "Show which sources are enabled and disabled" msgstr "Vis hvilke kilder som er på og hvilke som er av" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Vis/skjul" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Stokk om" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Stokk om album" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Stokk alle" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Stokk om spillelista" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Stokk om dette albumet" @@ -4443,7 +4500,7 @@ msgstr "Logg ut" msgid "Signing in..." msgstr "Logger på..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Lignende artister" @@ -4455,43 +4512,51 @@ msgstr "Størrelse" msgid "Size:" msgstr "Størrelse:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Gå bakover i spillelista" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Antall ganger hoppet over" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Gå fremover i spillelista" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Lite albumbilde" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Lite sidefelt" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Smart spilleliste" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Smarte spillelister" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Myk" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4499,11 +4564,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informasjon om sange" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info om sangen" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4523,15 +4588,23 @@ msgstr "Sorter etter sjangerens popularitet" msgid "Sort by station name" msgstr "Sorter etter kanalnavn" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Sorter sanger etter" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sortering" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Kilde" @@ -4547,7 +4620,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Kunne ikke logge på Spotify" @@ -4555,7 +4628,7 @@ msgstr "Kunne ikke logge på Spotify" msgid "Spotify plugin" msgstr "Spotify-modul" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Har ikke installert Spotify-modul" @@ -4563,77 +4636,77 @@ msgstr "Har ikke installert Spotify-modul" msgid "Standard" msgstr "Standard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Har stjerner" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Begynn på spillelista nå" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Start koding" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Skriv noe i søkeboksen over for å fylle denne resultatlisten" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Starter %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Starter …" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stasjoner" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stopp" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Stopp etter" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Stopp etter denne sangen" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Stopp avspilling" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Stopp avspilling etter gjeldende spor" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Stoppet" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Strøm" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4643,7 +4716,7 @@ msgstr "Streaming fra en Subsonic-server krever en gyldig tjenerlisens etter pr msgid "Streaming membership" msgstr "Streaming-medlemskap" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Spillelister du abonnerer på" @@ -4651,7 +4724,7 @@ msgstr "Spillelister du abonnerer på" msgid "Subscribers" msgstr "Abonnente" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subson" @@ -4659,12 +4732,12 @@ msgstr "Subson" msgid "Success!" msgstr "Lykkes!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Skrev %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Foreslåtte tagger" @@ -4673,13 +4746,13 @@ msgstr "Foreslåtte tagger" msgid "Summary" msgstr "Sammendrag" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Super-høy (%1 bilder/sek)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Superhøy (2048x2048)" @@ -4691,43 +4764,35 @@ msgstr "Støttede formater" msgid "Synchronize statistics to files now" msgstr "Synkronisér statistikk til filene nå" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synkroniserer Spotify-innboksen" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synkroniserer Spotify-spillelista" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synkroniserer spor med sterner mot Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Systemfarger" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Fliker på toppen" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Merkelapp" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Tagg-henter" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Merkelappradio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Ønsket bitrate" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tekno" @@ -4735,11 +4800,11 @@ msgstr "Tekno" msgid "Text options" msgstr "Tekstinnstillinger" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Takk til" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Kunne ikke starte kommandoen \"%1\"" @@ -4748,17 +4813,12 @@ msgstr "Kunne ikke starte kommandoen \"%1\"" msgid "The album cover of the currently playing song" msgstr "Albumgrafikken til sangen som spilles av i øyeblikket" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Katalogen %1 er ikke gyldig" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Spillelista '%1' var tom, eller kunne ikke lastes inn" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Den andre verdien må være større enn den første!" @@ -4766,40 +4826,40 @@ msgstr "Den andre verdien må være større enn den første!" msgid "The site you requested does not exist!" msgstr "Siden du spesifiserte, finnes ikke!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Stedet du spesifiserte, er ikke et bilde!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Prøveperioden for Subsonic er over. Vennligst gi en donasjon for å få en lisensnøkkel. Besøk subsonic.org for mer informasjon." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Fordi du har oppdatert Clementine til en nyere versjon, må hele lydbiblioteket sees gjennom på ny. Grunnen er følgende nye funksjoner:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Ingen andre sanger i dette albumet" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Kommunikasjonsproblemer med gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Kunne ikke hente metadata fra Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Forstod ikke svaret fra iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4811,13 +4871,13 @@ msgid "" "deleted:" msgstr "Fikk problemer med å slette enkelte sanger. Følgende kunne ikke slettes:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Filene vil bli slettet fra enheten. Er du sikker?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4837,13 +4897,13 @@ msgstr "Disse innstillingene brukes i \"Kode musikk\"-dialogvinduet, og når mus msgid "Third level" msgstr "Tredje nivå" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Dette oppretter en database som kan bli inntil 150MB stor.\nEr du sikker?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Dette albumet er ikke tilgjengelig i formatet du bad om" @@ -4857,11 +4917,11 @@ msgstr "Enheten må kobles til og åpnes før Clementine kan se hvilke filformat msgid "This device supports the following file formats:" msgstr "Denne enheten støtter følgende filformat:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Enheten vil ikke fungere ordentlig" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Dette er en MTP-enhet, men Clementine ble kompilert uten libmtp-støtte." @@ -4870,7 +4930,7 @@ msgstr "Dette er en MTP-enhet, men Clementine ble kompilert uten libmtp-støtte. msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Dette er en iPod, men Clementine ble kompilert uten libgpod-støtte." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4880,33 +4940,33 @@ msgstr "Det er første gang du kobler til denne enheten. Clementine ser nå gje msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Dette valget kan endres under innstillinger for \"Oppførsel\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Denne tjenesten er kun for betalende kunder" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Denne enhetstypen (%1) støttes ikke." -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Tittel" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "For å starte Grooveshark-radio bør du først lytte til et par andre Grooveshark-sanger" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "I dag" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Slå av/på Pent Display" @@ -4914,27 +4974,27 @@ msgstr "Slå av/på Pent Display" msgid "Toggle fullscreen" msgstr "Slå av/på fullskjerm-modus" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Slå av/på køstatus" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Slå av/på deling av lyttevaner" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Slå av/på Pent Display" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "I morgen" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "For mange videresendinger" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Favorittspor" @@ -4942,21 +5002,25 @@ msgstr "Favorittspor" msgid "Total albums:" msgstr "Totalt antall album:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Totalt overført, bytes" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Totalt antall forespørsler over nettet" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Spor" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Kod om musikk" @@ -4968,7 +5032,7 @@ msgstr "Logg for omkoder" msgid "Transcoding" msgstr "Omkoding" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Koder om %1 filer i %2 tråder" @@ -4977,11 +5041,11 @@ msgstr "Koder om %1 filer i %2 tråder" msgid "Transcoding options" msgstr "Innstillinger for omkoding" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbin" @@ -4989,72 +5053,72 @@ msgstr "Turbin" msgid "Turn off" msgstr "Slå av" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(er)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One-passord" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One-brukernav" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultrabredt bånd (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Kunne ikke laste ned %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Ukjent" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Ukjent innholdstype" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Ukjent feil" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Fjern omslaget" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Avmeld" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Fremtidige konserter" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Oppdater Grooveshark-spilleliste" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Oppdatér alle podcaster" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Oppdatér endrede bibliotekkataloge" @@ -5062,7 +5126,7 @@ msgstr "Oppdatér endrede bibliotekkataloge" msgid "Update the library when Clementine starts" msgstr "Oppdatér biblioteket når Clementine starte" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Oppdatér denne podcasten" @@ -5070,21 +5134,21 @@ msgstr "Oppdatér denne podcasten" msgid "Updating" msgstr "Oppdaterer" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Oppdaterer %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Oppdaterer %1% …" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Oppdaterer bibliotek" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Bruk" @@ -5092,11 +5156,11 @@ msgstr "Bruk" msgid "Use Album Artist tag when available" msgstr "Bruk Albumartist-taggen når tilgjengelig" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Bruk hurtigtaster fra Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Bruk normaliserings-metadata hvis tilgjengelig" @@ -5116,7 +5180,7 @@ msgstr "Bruk egendefinert fargedrakt" msgid "Use a custom message for notifications" msgstr "Bruk egendefinert meldingstype for beskjeder" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Bruk nettverksfjernkontroll" @@ -5156,20 +5220,20 @@ msgstr "Bruk standard proxy-innstillinger" msgid "Use volume normalisation" msgstr "Bruk normalisering" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Brukt" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Brukeren %1 har ikke en Grooveshark Anywhere-konto" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Brukergrensesnit" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5191,12 +5255,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Variabel bitrate" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Diverse artister" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versjon %1" @@ -5209,7 +5273,7 @@ msgstr "Vis" msgid "Visualization mode" msgstr "Visualiseringsmodus" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualiseringer" @@ -5217,11 +5281,15 @@ msgstr "Visualiseringer" msgid "Visualizations Settings" msgstr "Innstillinger for visualisering" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Taledeteksjon" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volum %1%" @@ -5239,11 +5307,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Advarsel når jeg lukker en spilleliste-flik" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "WAV" @@ -5251,7 +5319,7 @@ msgstr "WAV" msgid "Website" msgstr "Webside" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Uker" @@ -5277,32 +5345,32 @@ msgstr "Hvorfor ikke prøve..." msgid "Wide band (WB)" msgstr "Bredbånd (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii-fjernkontroll %1: aktivert" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii-fjernkontroll %1: tilkoblet" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii-fjernkontroll %1: lavt batteri (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii-fjernkontroll %1: deaktivert" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii-fjernkontroll %1: frakoblet" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii-fjernkontroll %1: lavt batteri (%2%)" @@ -5323,7 +5391,7 @@ msgstr "Windows Media, 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5331,25 +5399,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Uten omslag:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Ønsker du å flytte også resten av sangene i dette albumet til Diverse Artister?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Vil du se gjennom hele biblioteket på ny nå?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Skriv all statistikk til sangfilene" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Ugyldig brukernavn og/eller passord" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5361,11 +5429,11 @@ msgstr "År" msgid "Year - Album" msgstr "År - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "År" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "I går" @@ -5373,13 +5441,13 @@ msgstr "I går" msgid "You are about to download the following albums" msgstr "Du kommer nå til å laste ned følgende album" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Du sletter nå %1 spillelister fra favorittene dine, er du sikker?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5389,12 +5457,12 @@ msgstr "Du er i ferd med å slette en spilleliste som ikke er lagret i Favoritte msgid "You are not signed in." msgstr "Du har ikke logget på." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Du er pålogget som %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Du er pålogget" @@ -5402,13 +5470,13 @@ msgstr "Du er pålogget" msgid "You can change the way the songs in the library are organised." msgstr "Du kan velge hvordan sangene i biblioteket er organisert." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Du kan lytte gratis uten konto, men Premium-medlemmer kan lytte til strømmer i høyere kvalitet, og uten reklame." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5418,13 +5486,6 @@ msgstr "Du kan lytte til Magnatune-sanger gratis, uten konto. Hvis du kjøper m msgid "You can listen to background streams at the same time as other music." msgstr "Du kan lytte til bakgrunnsstrømmer samtidig med annen musikk." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Du kan dele lyttevaner (\"scrobble\") gratis, men bare betalende abonnenter kan høre Last.fm-radio i Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Du kan bruke Wii-fjernkontrollen som fjernkontroll for Clementine. Se wiki-siden for Clementine for mer informasjon.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Du har ikke noen Grooveshark Anywhare-konto." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Du har ikke noen Spotify Premium-konto." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Du har ikke noe aktivt abonnement" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Du har logget ut av Spotify; skriv inn ditt passord i dialogvinduet \"Innstillinger\"." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Du har logget ut av Spotify; skriv inn dit passord igjen." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Du elsker dette sporet" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5469,17 +5544,11 @@ msgstr "Du må gå til Systeminnstillinger og slå på \", 2013 # Sparkrin , 2011-2012 # TheLastProject , 2012 -# Senno Kaasjager, 2014 -# Senno Kaasjager, 2014 +# Senno Kaasjager , 2014 +# Senno Kaasjager , 2014 # PapaCoen , 2012 # valorcurse , 2012 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 08:30+0000\n" -"Last-Translator: Senno Kaasjager\n" +"PO-Revision-Date: 2014-05-11 09:43+0000\n" +"Last-Translator: Senno Kaasjager \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/clementine/language/nl/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: nl\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -48,9 +48,9 @@ msgstr " dagen" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " msec" @@ -63,11 +63,16 @@ msgstr " pt" msgid " seconds" msgstr " seconden" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " nummers" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 nummers)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albums" @@ -77,12 +82,12 @@ msgstr "%1 albums" msgid "%1 days" msgstr "%1 dagen" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dagen geleden" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 op %2" @@ -92,48 +97,48 @@ msgstr "%1 op %2" msgid "%1 playlists (%2)" msgstr "%1 afspeellijsten (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 geselecteerd van" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 nummer" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 nummers" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 nummers gevonden" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 nummers gevonden (%2 worden weergegeven)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 nummers" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 overgezet" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev-module" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 andere luisteraars" @@ -147,18 +152,21 @@ msgstr "In totaal %L1 keer afgespeeld" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n mislukt" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n voltooid" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n resterend" @@ -170,24 +178,24 @@ msgstr "Tekst &uitlijnen" msgid "&Center" msgstr "&Centreren" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "Aan&gepast" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extra's" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Hulp" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "%1 &verbergen" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Verbergen…" @@ -195,23 +203,23 @@ msgstr "&Verbergen…" msgid "&Left" msgstr "&Links" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Muziek" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "Gee&n" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Afspeellijst" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Afsluiten" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Herhaalmodus" @@ -219,23 +227,23 @@ msgstr "&Herhaalmodus" msgid "&Right" msgstr "&Rechts" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&Willekeurige modus" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Kolommen &uitstrekken totdat ze het venster vullen" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Hulpmiddelen" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(niet bij alle nummers hetzelfde)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... en allen die aan Amarok hebben bijgedragen" @@ -255,14 +263,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dag" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 nummer" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -272,7 +276,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 willekeurige nummers" @@ -280,12 +284,6 @@ msgstr "50 willekeurige nummers" msgid "Upgrade to Premium now" msgstr "Nu opwaarderen naar Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Maak een nieuw account of herstel je wachtwoord" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -296,6 +294,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Wanneer niet aangevinkt, zal Clementine uw waarderingen en andere statistieken opslaan in de clementine database en uw bestanden niet bewerken.

Wanneer aangevinkt, zal Clementine waarderingen en andere statistieken opslaan in de database en ook in uw bestanden.

Het opslaan in bestanden zal niet voor alle bestandsformaten correct werken om dat hiervoor geen standaard methode bestaat en niet alle programma's het lezen van deze statistieken ondersteunen.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Voeg een veldnaam toe voor een woord om de zoekopdracht te beperken tot dat veld, bijv. artist:Bode doorzoekt de bibliotheek naar alle artiesten waar het woord Bode in voorkomt.

Beschikbare velden: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -304,38 +313,38 @@ msgid "" "activated.

" msgstr "

Dit zal alle waarderingen en statistiek wegschrijven in de bestanden van uw muziekbibliotheek.

Dit is niet nodig als de optie "Sla waarderingen op in bestand, indien mogellijk" altijd aan gestaan heeft.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Tokens beginnen met %, Bijvoorbeeld: %artist %album %title

\n\n

Als u tekstgedeelten die tokens bevatten tussen accolades zet, zal dat gedeelte verborgen worden als het token leeg is.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Een Grooveshark Anywhere account is vereist." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Een Spotify Premium account is vereist." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Een apparaat kan alleen verbinden als de juiste code ingevoerd is." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Een slimme afspeellijst is een dynamische lijst van nummers uit uw bibliotheek. Er zijn verschillende types, die elk op een andere manier nummers selecteren." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Een nummer wordt in de afspeellijst opgenomen als het aan deze voorwaarden voldoet." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -355,36 +364,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64K" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Afbreken" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Over %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Over Clementine…" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Over Qt…" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Account gegevens" @@ -396,11 +404,15 @@ msgstr "Account gegevens (Premium)" msgid "Action" msgstr "Actie" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Activeer/deactiveer Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Activiteitenstream" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Voeg podcast toe" @@ -416,39 +428,39 @@ msgstr "Een nieuwe regel toevoegen, als dit door het notificatie-type ondersteun msgid "Add action" msgstr "Actie toevoegen" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Nog een radiostream toevoegen…" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Map toevoegen…" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Bestand toevoegen" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Bestand toevoegen voor conversie." -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Bestand(en) toevoegen voor conversie." -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Bestand toevoegen…" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Te converteren bestanden toevoegen" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Map toevoegen" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Map toevoegen…" @@ -460,11 +472,11 @@ msgstr "Nieuwe map toevoegen…" msgid "Add podcast" msgstr "Voeg podcast toe" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Voeg podcast toe..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Zoekterm toevoegen" @@ -528,6 +540,10 @@ msgstr "Aantal maal overgeslagen toevoegen" msgid "Add song title tag" msgstr "Titel-label toevoegen" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Nummer toevoegen aan cache" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Nummer-label toevoegen" @@ -536,22 +552,34 @@ msgstr "Nummer-label toevoegen" msgid "Add song year tag" msgstr "Jaar-label toevoegen" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Nummers toevoegen aan \"Mijn Muziek\" als de \"Mooi\" knop is aangeklikt" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Radiostream toevoegen…" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Aan Grooveshark favorieten toevoegen" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Aan Grooveshark afspeellijst toevoegen" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Toevoegen aan Mijn Muziek" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Aan een andere afspeellijst toevoegen" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Toevoegen aan bladwijzers" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Aan afspeellijst toevoegen" @@ -560,6 +588,10 @@ msgstr "Aan afspeellijst toevoegen" msgid "Add to the queue" msgstr "Aan de wachtrij toevoegen" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Voeg gebruiker/groep toe aan bladwijzers" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Wiimotedev-actie toevoegen" @@ -589,15 +621,15 @@ msgstr "Vandaag toegevoegd" msgid "Added within three months" msgstr "Afgelopen drie maanden toegevoegd" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Toevoegen nummer aan Mijn Muziek" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Nummer toevoegen aan favorieten" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Geavanceerd groeperen…" @@ -605,12 +637,12 @@ msgstr "Geavanceerd groeperen…" msgid "After " msgstr "Na" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Na het kopiëren…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -618,11 +650,11 @@ msgstr "Na het kopiëren…" msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideaal volume voor alle nummers)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -632,35 +664,36 @@ msgstr "Albumartiest" msgid "Album cover" msgstr "Albumhoes" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Albuminfo op jamendo.com…" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albums met albumhoes" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albums zonder albumhoes" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Alle bestanden (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Alle albums" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Alle artiesten" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Alle bestanden (*)" @@ -669,19 +702,19 @@ msgstr "Alle bestanden (*)" msgid "All playlists (%1)" msgstr "Alle afspeellijsten (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Alle vertalers" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Alle nummers" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Sta een client toe om muziek van deze computer te downloaden." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Downloads toestaan" @@ -706,30 +739,30 @@ msgstr "Hoofdscherm altijd weergeven" msgid "Always start playing" msgstr "Altijd afspelen" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Een extra plug-in is vereist om Spotify in Clementine te gebruiken. Wilt u deze nu downloaden en installeren?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Er is een fout opgetreden tijdens het laden van de iTunes-database" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Er is een fout opgetreden bij het wegschrijven van metadata naar ‘%1’" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Er deed zich een onbekende fout voor" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "En:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Boos" @@ -738,13 +771,13 @@ msgstr "Boos" msgid "Appearance" msgstr "Uiterlijk" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Bestanden/URLs aan afspeellijst toevoegen" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Aan huidige afspeellijst toevoegen" @@ -752,52 +785,47 @@ msgstr "Aan huidige afspeellijst toevoegen" msgid "Append to the playlist" msgstr "Aan de afspeellijst toevoegen" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Compressie toepassen om vervorming te voorkomen" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Weet u zeker dat u voorinstelling ‘%1’ wilt wissen?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Weet u zeker dat u deze afspeellijst wilt wissen?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Weet u zeker dat u de statistieken van dit nummer wilt wissen?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Weet u zeker dat u de waarderingen en statistieken in alle bestanden van uw muziekbibliotheek wilt opslaan?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artiest" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Artiestinfo" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Artiestradio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Artiestlabels" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Artiest's initiaal" @@ -805,9 +833,13 @@ msgstr "Artiest's initiaal" msgid "Audio format" msgstr "Audioformaat" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Audiouitvoer" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Aanmelden mislukt" @@ -815,7 +847,7 @@ msgstr "Aanmelden mislukt" msgid "Author" msgstr "Auteur" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Auteurs" @@ -831,7 +863,7 @@ msgstr "Automatisch updaten" msgid "Automatically open single categories in the library tree" msgstr "Automatisch enkelvoudige categorieën in bibliotheekboom openen" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Beschikbaar" @@ -839,15 +871,15 @@ msgstr "Beschikbaar" msgid "Average bitrate" msgstr "Gemiddelde bitrate" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Gemiddelde afbeeldinggrootte" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -868,7 +900,7 @@ msgstr "Achtergrondafbeelding" msgid "Background opacity" msgstr "Achtergrond-doorzichtigheid" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Bezig met het maken van een backup van de database" @@ -876,11 +908,7 @@ msgstr "Bezig met het maken van een backup van de database" msgid "Balance" msgstr "Balans" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Verbannen" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Balkweergave" @@ -900,18 +928,17 @@ msgstr "Gedrag" msgid "Best" msgstr "Beste" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografie van %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -919,7 +946,12 @@ msgstr "Bitrate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Bitrate" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blokweergave" @@ -935,7 +967,7 @@ msgstr "Vervagen" msgid "Body" msgstr "Body" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boomweergave" @@ -949,11 +981,11 @@ msgstr "Box" msgid "Browse..." msgstr "Bladeren…" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Buffer duur" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Bufferen" @@ -965,43 +997,66 @@ msgstr "Maar deze bronnen zijn uitgeschakeld:" msgid "Buttons" msgstr "Knoppen" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Standaard sorteert Grooveshark nummers op toevoegingsdatum" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE-sheet ondersteuning" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Cachepad:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Bezig met cachen" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Bezig met %1 cachen" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Annuleren" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Captcha is nodig.\nProbeer in te loggen bij Vk.com met je browser om dit probleem op te lossen." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Albumhoes wijzigen" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Lettergrootte wijzigen…" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Herhaalmodus wijzigen" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Sneltoets wijzigen…" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Shuffle-modus wijzigen" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "De taal wijzigen" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1011,15 +1066,19 @@ msgstr "Het aanpassen naar mono afspelen zal actief worden bij het afspelen van msgid "Check for new episodes" msgstr "Zoek naar nieuwe afleveringen" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Zoeken naar updates..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Kies Vk.com cachemap" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Kies een naam voor uw slimme-afspeellijst" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Automatisch kiezen" @@ -1035,11 +1094,11 @@ msgstr "Lettertype kiezen…" msgid "Choose from the list" msgstr "Kies uit de lijst" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Kies hoe de afspeellijst gesorteerd wordt en hoeveel nummers de afspeellijst mag bevatten." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Kies map waarnaar podcasts gedownload worden" @@ -1048,7 +1107,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Kies de websites die Clementine mag gebruiken om songteksten op te zoeken." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klassiek" @@ -1056,17 +1115,17 @@ msgstr "Klassiek" msgid "Cleaning up" msgstr "Bezig met opschonen" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Wissen" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Afspeellijst wissen" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1079,8 +1138,8 @@ msgstr "Clementine fout" msgid "Clementine Orange" msgstr "Clementine oranje" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine visualisatie" @@ -1102,9 +1161,9 @@ msgstr "Clementine kan muziek afspelen die u op Dropbox opgeslagen hebt" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine kan muziek afspelen die u op Google Drive opgeslagen hebt" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine kan muziek afspelen die u op Ubuntu One opgeslagen hebt" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine kan muziek afspelen die u op OneDrive opgeslagen hebt" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1117,20 +1176,13 @@ msgid "" "an account." msgstr "Clementine kan uw abonnementen synchroniseren met andere computers en podcast programma's. Maak een account." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine kon geen projectM visualisaties laden. Controleer of u Clementine correct hebt geïnstalleerd." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine kan de status van uw abonnement niet ophalen, omdat er problemen met uw verbinding zijn. Afgespeelde nummers zullen worden gecached en later naar Last.fm verzonden." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine afbeeldingen weergeven" @@ -1142,11 +1194,11 @@ msgstr "Clementine heeft geen resultaten voor dit bestand gevonden" msgid "Clementine will find music in:" msgstr "Clementine zal zoeken in:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klik hier om muziek toe te voegen" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1156,7 +1208,10 @@ msgstr "Klik hier om een afspeellijst aan uw favorieten toe te voegen, hierdoor msgid "Click to toggle between remaining time and total time" msgstr "Klik om te schakelen tussen resterende duur en totale duur" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1171,19 +1226,19 @@ msgstr "Sluiten" msgid "Close playlist" msgstr "Afspeellijst sluiten" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Visualisatie sluiten" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "De download wordt afgebroken als u dit venster sluit." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Het zoeken naar albumhoezen wordt afgebroken als u dit venster sluit." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1191,73 +1246,78 @@ msgstr "Club" msgid "Colors" msgstr "Kleuren" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Door komma's gescheiden lijst van van klasse:niveau, het niveau is 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Opmerking" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Community Radio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Labels automatisch voltooien" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Labels automatisch voltooien…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Componist" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Configureren %1" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Grooveshark configureren…" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm configureren…" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Magnatune configureren…" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Sneltoetsen instellen" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configureer Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Subsonic configureren..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Configureer Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Globaal zoeken instellen..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Bibliotheek configureren…" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Podcasts configureren" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configureer..." @@ -1265,11 +1325,11 @@ msgstr "Configureer..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Wii Remotes met activeer/deactiveer-actie verbinden" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Apparaat verbinden" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Met Spotify verbinden" @@ -1279,12 +1339,16 @@ msgid "" "http://localhost:4040/" msgstr "Verbinding geweigerd door server, controleer de URL van de server. Bijvoorbeeld: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Time-out van verbinding, controleer de URL van de server. Bijvoorbeeld: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Connetieprobleem of audio is uitgeschakeld door eigenaar" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Console" @@ -1300,17 +1364,21 @@ msgstr "Alle muziek converteren" msgid "Convert any music that the device can't play" msgstr "Alle muziek die het apparaat niet kan afspelen converteren" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Kopieer url om te delen naar klembord" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopieer naar klembord" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Naar apparaat kopiëren…" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Naar bibliotheek kopiëren…" @@ -1318,156 +1386,152 @@ msgstr "Naar bibliotheek kopiëren…" msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Kon niet verbinden met Subsonic, controleer de URL van de server. Bijvoorbeeld: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Kan GStreamer element ‘%1’ niet aanmaken - zorg ervoor dat u alle vereiste GStreamer plug-ins geïnstalleerd heeft" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Kon afspeellijst niet maken" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kan muxer voor %1 niet vinden, controleer of u de juiste GStreamer plug-ins geïnstalleerd heeft" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Kan geen encoder voor %1 vinden, controleer of u de juiste GStreamer plug-ins geïnstalleerd heeft" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Kan het last.fm-radiostation niet laden" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Kan uitvoerbestand %1 niet openen" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Albumhoesbeheerder" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Albumhoes van toegevoegde afbeelding" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Albumhoes automatisch van %1 geladen" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Albumhoes handmatig teruggezet" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Albumhoes niet ingesteld" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Albumhoes ingesteld van %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Albumhoes van %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Nieuwe Grooveshark afspeellijst maken" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Cross-fade wanneer automatisch van nummer veranderd wordt" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Cross-fade wanneer handmatig van nummer veranderd wordt" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1475,7 +1539,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Aangepast" @@ -1487,54 +1551,50 @@ msgstr "Aangepaste afbeelding:" msgid "Custom message settings" msgstr "Instellingen voor aangepaste berichten" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Aangepaste radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Aangepast…" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus-pad" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "De database lijkt corrupt. Instructies om om de database te herstellen staan op: https://code.google.com/p/clementine-player/wiki/DatabaseCorruption" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Aanmaakdatum" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Wijzigingsdatum" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dagen" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Stan&daard" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Volume met 4% verlagen" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Verlaag het volume met procent" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Volume verlagen" @@ -1542,6 +1602,11 @@ msgstr "Volume verlagen" msgid "Default background image" msgstr "Standaard achtergrondafbeelding" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Standaard apparaat op %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Standaardinstellingen" @@ -1550,30 +1615,30 @@ msgstr "Standaardinstellingen" msgid "Delay between visualizations" msgstr "Vertraging tussen visualisaties" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Verwijderen" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Grooveshark afspeellijst wissen" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Verwijder gedownloadde gegevens" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Bestanden verwijderen" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Van apparaat verwijderen…" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Van schijf verwijderen…" @@ -1581,31 +1646,31 @@ msgstr "Van schijf verwijderen…" msgid "Delete played episodes" msgstr "Verwijder afgespeelde afleveringen" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Voorinstelling verwijderen" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Slimme-afspeellijst verwijderen" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Oorspronkelijke bestanden verwijderen" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Bestanden worden verwijderd" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Geselecteerde nummers uit wachtrij verwijderen" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Nummer uit wachtrij verwijderen" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Bestemming" @@ -1614,7 +1679,7 @@ msgstr "Bestemming" msgid "Details..." msgstr "Details…" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Apparaat" @@ -1626,15 +1691,15 @@ msgstr "Apparaateigenschappen" msgid "Device name" msgstr "Apparaatnaam" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Apparaateigenschappen…" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Apparaten" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Dialoog" @@ -1671,12 +1736,17 @@ msgstr "Notificatie permanent weergeven" msgid "Disable moodbar generation" msgstr "Schakel het aanmaken van de stemmingsbalk uit" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Uitgeschakeld" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Uitgeschakeld" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Schijf" @@ -1686,15 +1756,15 @@ msgid "Discontinuous transmission" msgstr "Overdracht onderbreken" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Weergaveopties" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Infoschermvenster weergeven" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "De volledige database opnieuw scannen" @@ -1706,27 +1776,27 @@ msgstr "Geen muziek converteren" msgid "Do not overwrite" msgstr "Niet overschrijven" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Niet herhalen" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Niet in diverse artiesten weergeven" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Niet willekeurig afspelen" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Niet stoppen!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Doneer" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dubbeklik om te openen" @@ -1734,12 +1804,13 @@ msgstr "Dubbeklik om te openen" msgid "Double clicking a song will..." msgstr "Dubbelklikken op een nummer zal…" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Download %n afleveringen" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Download map" @@ -1755,7 +1826,7 @@ msgstr "Lidmaatschap downloaden" msgid "Download new episodes automatically" msgstr "Download nieuwe afleveringen automatisch" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Download in wachtrij gezet" @@ -1763,15 +1834,15 @@ msgstr "Download in wachtrij gezet" msgid "Download the Android app" msgstr "Download de Android app" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Dit album downloaden" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Dit album downloaden…" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Download deze aflevering" @@ -1779,7 +1850,7 @@ msgstr "Download deze aflevering" msgid "Download..." msgstr "Downloaden…" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Bezig met downloaden (%1%)..." @@ -1788,23 +1859,23 @@ msgstr "Bezig met downloaden (%1%)..." msgid "Downloading Icecast directory" msgstr "Icecast-map aan het downloaden" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Jamendo-catalogus downloaden" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Magnatune-catalogus downloaden" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "De Spotify plug-in aan het downloaden" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Metadata ophalen" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Sleep om te verplaatsen" @@ -1824,20 +1895,20 @@ msgstr "Duur" msgid "Dynamic mode is on" msgstr "Dynamische-modus ingeschakeld" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynamische random mix" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Slimme-afspeellijst bewerken…" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Label ‘%1’ bewerken…" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Label bewerken…" @@ -1849,16 +1920,16 @@ msgstr "Labels bewerken" msgid "Edit track information" msgstr "Nummerinformatie bewerken" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Nummerinformatie bewerken…" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Nummerinformatie bewerken…" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Bewerken…" @@ -1866,6 +1937,10 @@ msgstr "Bewerken…" msgid "Enable Wii Remote support" msgstr "Ondersteuning voor Wii Remote inschakelen" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Automatisch cachen inschakelen" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Equalizer inschakelen" @@ -1880,9 +1955,9 @@ msgid "" "displayed in this order." msgstr "Activeer de onderstaande bronnen om ze te tonen in de zoek resultaten. De resultaten worden weergegeven deze volgorde." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" -msgstr "Last.fm scrobbling in/uitschakelen" +msgstr "Last.fm scrobbling in-/uitschakelen" #: ../bin/src/ui_transcoderoptionsspeex.h:235 msgid "Encoding complexity" @@ -1908,15 +1983,10 @@ msgstr "Voeg een URL toe om een albumhoes van het internet te downloaden:" msgid "Enter a filename for exported covers (no extension):" msgstr "Geef een bestandsnaam voor de geëxporteerde albumhoezen (geen extensie)" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Voer een nieuwe naam voor deze afspeellijst in" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Voer de naam van een artiest of een label in om naar Last.fm radio te kunnen luisteren." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1930,7 +2000,7 @@ msgstr "Voer hieronder uw zoektermen in om podcasts in de iTunes Store te vinden msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Voer hieronder uw zoektermen in om podcasts op gpodder.net te vinden" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Voer hier een zoekterm in" @@ -1939,11 +2009,11 @@ msgstr "Voer hier een zoekterm in" msgid "Enter the URL of an internet radio stream:" msgstr "Voer de URL van een internetradios-tream in:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Geef de naam van de map" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Geef in de App dit IP-adres op om verbinding met Clementine te maken" @@ -1951,21 +2021,22 @@ msgstr "Geef in de App dit IP-adres op om verbinding met Clementine te maken" msgid "Entire collection" msgstr "Gehele verzameling" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizer" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Gelijkwaardig aan --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Gelijkwaardig aan --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Fout" @@ -1973,38 +2044,38 @@ msgstr "Fout" msgid "Error connecting MTP device" msgstr "Fout tijdens het verbinden met het MTP-apparaat" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Fout tijdens het kopiëren van de nummers" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Fout tijdens het verwijderen van de nummers" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Fout bij het downloaden van de Spotify plug-in" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Fout bij laden van %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Fout bij laden di.fm afspeellijst" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Fout bij verwerken van %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Fout bij het laden van audio-cd" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Ooit afgespeeld" @@ -2036,7 +2107,7 @@ msgstr "Elke 6 uur" msgid "Every hour" msgstr "Elk uur" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Behalve tussen nummers van hetzelfde album of in dezelfde CUE-sheet" @@ -2048,7 +2119,7 @@ msgstr "Bestaande albumhoezen" msgid "Expand" msgstr "Aanvullen" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Verloopt op %1" @@ -2069,36 +2140,36 @@ msgstr "Exporteer gedownloade albumhoezen" msgid "Export embedded covers" msgstr "Exporteer albumhoezen in mediabestanden" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Klaar me exporteren" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "%1 van %2 albumhoezen geëxporteerd (%3 overgeslagen)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2108,42 +2179,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Uitvagen bij pauze / Invagen bij hervatten" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Uitvagen bij stoppen van een nummer" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Uitvagen" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Uitvaagduur" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "CD-station lezen mislukt" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Ophalen van de map is mislukt" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Ophalen van podcasts mislukt" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Laden van podcast mislukt" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Het laden van het XML bestand voor deze RSS-feed is mislukt" @@ -2152,11 +2223,11 @@ msgstr "Het laden van het XML bestand voor deze RSS-feed is mislukt" msgid "Fast" msgstr "Snel" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favorieten" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Favoriete nummers" @@ -2172,11 +2243,11 @@ msgstr "Automatisch ophalen" msgid "Fetch completed" msgstr "Ophalen voltooid" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Ophalen van Subsonic bibliotheek" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Fout bij ophalen albumhoes" @@ -2184,7 +2255,7 @@ msgstr "Fout bij ophalen albumhoes" msgid "File Format" msgstr "Bestandsformaat" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Bestandsextensie" @@ -2192,19 +2263,23 @@ msgstr "Bestandsextensie" msgid "File formats" msgstr "Bestandsformaten" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Bestandsnaam" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Bestandsnaam (zonder pad)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Bestandsnaampatroon:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Bestandsgrootte" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2214,7 +2289,7 @@ msgstr "Bestandstype" msgid "Filename" msgstr "Bestandsnaam" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Bestanden" @@ -2222,15 +2297,19 @@ msgstr "Bestanden" msgid "Files to transcode" msgstr "Te converteren bestanden" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Vind nummers in uw bibliotheek die met de opgegeven criteria overeenkomen." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Vind deze artiest" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Uniek patroon uit nummer halen" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Voltooien" @@ -2238,7 +2317,7 @@ msgstr "Voltooien" msgid "First level" msgstr "Eerste niveau" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2254,12 +2333,12 @@ msgstr "Vanwege licenties is Spotify-ondersteuning alleen via een plug-in beschi msgid "Force mono encoding" msgstr "Mono-encodering forceren" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Apparaat vergeten" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2274,7 +2353,7 @@ msgstr "Het vergeten van een apparaat zal het uit deze lijst verwijderen en zodr #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2302,31 +2381,23 @@ msgstr "Framerate" msgid "Frames per buffer" msgstr "Frames per buffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Vrienden" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Bevroren" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Maximale bas" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Maximale bas + hoge tonen" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Maximale hoge tonen" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer audio-engine" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Algemeen" @@ -2334,30 +2405,30 @@ msgstr "Algemeen" msgid "General settings" msgstr "Algemene instellingen" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Haal URL op van deze Grooveshark afspeellijst" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" -msgstr "Haal URL op van dit Grooveshark nummer" +msgstr "Haal URL van dit Grooveshark nummer op om te delen" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Ophalen van populaire Grooveshark nummers" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Kanalen ophalen" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Radiostream ophalen" @@ -2369,11 +2440,11 @@ msgstr "Geef het een naam:" msgid "Go" msgstr "Ga" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Ga naar het volgende afspeellijst tabblad" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Ga naar het vorige afspeellijst tabblad" @@ -2381,7 +2452,7 @@ msgstr "Ga naar het vorige afspeellijst tabblad" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2391,7 +2462,7 @@ msgstr "%1 van de %2 albumhoezen opgehaald (%3 mislukt)" msgid "Grey out non existent songs in my playlists" msgstr "Niet-bestaande nummer in de afspeellijst vervagen" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2399,15 +2470,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark login fout" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark afspeellijst URL" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark nummer URL" @@ -2415,44 +2486,44 @@ msgstr "Grooveshark nummer URL" msgid "Group Library by..." msgstr "Bibliotheek groeperen op…" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Groeperen op" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Groeperen op album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Groeperen op artiest" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Groeperen op artiest/album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Groeperen op artiest/jaar - album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Groeperen op genre/album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Groeperen op genre/artiest/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Groepering" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML-pagina bevat geen RSS-feed" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "HTTP 3xx statuscode ontvangen zonder URL, controleer server configuratie." @@ -2461,7 +2532,7 @@ msgstr "HTTP 3xx statuscode ontvangen zonder URL, controleer server configuratie msgid "HTTP proxy" msgstr "HTTP-proxy" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Blij" @@ -2477,25 +2548,25 @@ msgstr "Hardware-informatie is alleen beschikbaar wanneer het apparaat aangeslot msgid "High" msgstr "Hoog" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Hoog (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Hoog (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Host niet gevonden, controleer de URL van de server. Bijvoorbeeld: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Uur" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2507,15 +2578,15 @@ msgstr "Ik heb geen Magnatune-account" msgid "Icon" msgstr "Pictogram" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Pictogrammen bovenaan" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Nummer identificeren" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2525,24 +2596,24 @@ msgstr "Als u verder gaat zal dit apparaat traag zijn en de nummers die ernaar g msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Als u de URL van een podcast weet, typ deze hieronder en klik op Ga" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "\"The\" in artiestennamen negeren" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Afbeeldingen (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Afbeeldingen (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "In %1 dagen" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "In %1 weken" @@ -2553,7 +2624,7 @@ msgid "" "time a song finishes." msgstr "In ‘dynamische modus’ worden nieuwe nummers gekozen en aan de afspeellijst toegevoegd op het moment dat een nummer eindigt." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Inbox" @@ -2565,36 +2636,36 @@ msgstr "Albumhoes in de notificatie weergeven" msgid "Include all songs" msgstr "Voeg alles toe" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Incompatibele Subsonic REST protocol versie. Client moet upgraden. " -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Incompatibele Subsonic REST protocol versie. Server moet upgraden. " -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Configuratie incompleet, controleer dat alle velden ingevuld zijn." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Volume met 4% verhogen" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Verhoog het volume met procent " -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Volume verhogen" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indexeren %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informatie" @@ -2602,55 +2673,55 @@ msgstr "Informatie" msgid "Input options" msgstr "Invoeropties" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Invoegen…" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Geïnstalleerd" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Integriteits check" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internet bronnen" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Ongeldige API-sleutel" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Ongeldig formaat" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Ongeldige methode" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Ongeldige parameters" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Ongeldige bron opgegeven" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Ongeldige service" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Ongeldige sessiesleutel" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Ongeldige gebruikersnaam en/of wachtwoord" @@ -2658,42 +2729,42 @@ msgstr "Ongeldige gebruikersnaam en/of wachtwoord" msgid "Invert Selection" msgstr "Selectie omkeren" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo, meestbeluisterde nummers" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo, beste nummers" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo, beste nummers van de maand" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo, beste nummers van de week" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo database" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Spring naar het huidige nummer" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Hou de toetsen voor %1 seconde ingedrukt…" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Hou de toetsen voor %1 seconden ingedrukt…" @@ -2702,11 +2773,12 @@ msgstr "Hou de toetsen voor %1 seconden ingedrukt…" msgid "Keep running in the background when the window is closed" msgstr "In de achtergrond laten draaien als het venter gesloten wordt" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "De originele bestanden behouden" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Poesjes" @@ -2714,11 +2786,11 @@ msgstr "Poesjes" msgid "Language" msgstr "Taal" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/koptelefoon" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Grote hal" @@ -2726,12 +2798,16 @@ msgstr "Grote hal" msgid "Large album cover" msgstr "Grote albumhoes" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Grote zijbalk" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Laast afgespeeld" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Laast afgespeeld" @@ -2739,45 +2815,7 @@ msgstr "Laast afgespeeld" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Aangepaste Last.fm-radio : %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm-bibliotheek - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm-radiomix: %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm-Neighbor Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm-radiostation - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm - artiesten vergelijkbaar met %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm - tagradio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm is momenteel bezet, probeer het over een paar minuten nogmaals" @@ -2785,11 +2823,11 @@ msgstr "Last.fm is momenteel bezet, probeer het over een paar minuten nogmaals" msgid "Last.fm password" msgstr "Last.fm wachtwoord" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm statistieken" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm labels" @@ -2797,28 +2835,24 @@ msgstr "Last.fm labels" msgid "Last.fm username" msgstr "Last.fm gebruikersnaam" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Nummers met laagste waardering" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Leeglaten voor standaardwaarde. Voorbeelden: ‘/dev/dsp’, ‘front’ etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Links" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duur" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliotheek" @@ -2826,24 +2860,24 @@ msgstr "Bibliotheek" msgid "Library advanced grouping" msgstr "Bibliotheek geavanceerd groeperen" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Database herscan-melding" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Database doorzoeken" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Grenzen" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Luister naar Groovshark nummers op basis van je luister historie" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2855,15 +2889,15 @@ msgstr "Laden" msgid "Load cover from URL" msgstr "Albumhoes van URL laden" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Albumhoes van URL laden…" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Albumhoes van schijf laden" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Albumhoes van schijf laden…" @@ -2871,84 +2905,89 @@ msgstr "Albumhoes van schijf laden…" msgid "Load playlist" msgstr "Afspeellijst laden" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Afspeellijst laden…" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm-radio laden" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "MTP-apparaat laden" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod-database laden" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Slimme afspeellijst laden" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Nummers laden" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Radiostream laden" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Nummers laden" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Nummerinformatie laden" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Laden…" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Bestanden/URLs laden, en vervangt de huidige afspeellijst" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Inloggen" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Inloggen mislukt" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Uitloggen" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Lange termijn voorspellingsprofiel (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Mooi" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Laag (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Laag (256x256)" @@ -2960,12 +2999,17 @@ msgstr "Lage complexiteit profiel (LC)" msgid "Lyrics" msgstr "Songteksten" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Songtekst van %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2977,15 +3021,15 @@ msgstr "MP3 256K" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2993,7 +3037,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune-download" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune-download voltooid" @@ -3001,15 +3045,20 @@ msgstr "Magnatune-download voltooid" msgid "Main profile (MAIN)" msgstr "Normaal profiel (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Voer uit!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Voer uit!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Afspeellijst offline beschikbaar maken" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Foutieve respons" @@ -3022,15 +3071,15 @@ msgstr "Handmatige proxyconfiguratie" msgid "Manually" msgstr "Handmatig" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabrikant" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Markeer als beluisterd" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Markeer als nieuw" @@ -3042,17 +3091,21 @@ msgstr "Match op alle zoektermen (EN)" msgid "Match one or more search terms (OR)" msgstr "Match op een of meer zoektermen (OF)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Max aantal zoekresultaten" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maximale bitrate" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Gemiddeld (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Gemiddeld (512x512)" @@ -3064,11 +3117,15 @@ msgstr "Type lidmaatschap" msgid "Minimum bitrate" msgstr "Minimale bitrate" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Minimale buffervulling" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Ontbrekende projectM voorinstellingen" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3076,20 +3133,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "De bibliotheek op wijzigingen blijven controleren" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono afspelen" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Maanden" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Stemming" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Stemmingsbalk stijl" @@ -3097,15 +3154,19 @@ msgstr "Stemmingsbalk stijl" msgid "Moodbars" msgstr "Stemmingsbalken" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Meer" + +#: library/library.cpp:84 msgid "Most played" msgstr "Meest afgespeeld" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Koppelpunt" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Koppelpunten" @@ -3114,7 +3175,7 @@ msgstr "Koppelpunten" msgid "Move down" msgstr "Omlaag verplaatsen" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Naar bibliotheek verplaatsen…" @@ -3123,7 +3184,7 @@ msgstr "Naar bibliotheek verplaatsen…" msgid "Move up" msgstr "Omhoog verplaatsen" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Muziek" @@ -3131,56 +3192,32 @@ msgstr "Muziek" msgid "Music Library" msgstr "Muziekbibliotheek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Dempen" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Mijn last.fm-bibliotheek" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Mijn Last.fm-mixradio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Mijn Last.fm Neighborhood" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Mijn Last.fm Recommended Radio" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Mijn Mix Radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Mijn Muziek" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mijn buurt" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Mijn radiostation" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mijn aanbevelingen" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Naam" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Naam" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Benoemingsopties" @@ -3188,23 +3225,19 @@ msgstr "Benoemingsopties" msgid "Narrow band (NB)" msgstr "Langzaam internet" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Buren" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Netwerk Proxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Netwerk Remote" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nooit" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nooit afgespeeld" @@ -3213,21 +3246,21 @@ msgstr "Nooit afgespeeld" msgid "Never start playing" msgstr "Nooit afspelen" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nieuwe map" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nieuwe afspeellijst" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nieuwe slimme afspeellijst…" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nieuwe nummers" @@ -3235,24 +3268,24 @@ msgstr "Nieuwe nummers" msgid "New tracks will be added automatically." msgstr "Nieuwe nummers worden automatisch toegevoegd." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Nieuwste nummers" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Volgende" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Volgend nummer" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Volgende week" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Geen weergave" @@ -3260,7 +3293,7 @@ msgstr "Geen weergave" msgid "No background image" msgstr "Geen achtergrondafbeelding" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Geen albumhoezen om te exporteren." @@ -3268,7 +3301,7 @@ msgstr "Geen albumhoezen om te exporteren." msgid "No long blocks" msgstr "Geen lange blokken" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Geen overeenkomsten gevonden. Maak het zoekveld leeg om de gehele lijst opnieuw weer te geven." @@ -3282,11 +3315,11 @@ msgstr "Geen korte blokken" msgid "None" msgstr "Geen" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Geen van de geselecteerde nummers waren geschikt voor het kopiëren naar een apparaat" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normaal" @@ -3294,43 +3327,47 @@ msgstr "Normaal" msgid "Normal block type" msgstr "Normaal blok type" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Niet beschikbaar tijdens het gebruik van een dynamische afspeellijst" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Niet verbonden" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Onvoldoende inhoud" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Onvoldoende fans" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Onvoldoende leden" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Onvoldoende buren" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Niet geïnstalleerd" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Niet ingelogd" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Niet aangekoppeld - dubbelklik om aan te koppelen" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Niets gevonden" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Notificatietype" @@ -3343,36 +3380,41 @@ msgstr "Notificaties" msgid "Now Playing" msgstr "Nu aan het afspelen" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Voorbeeld infoschermvenster" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Uit" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Aan" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3380,11 +3422,11 @@ msgid "" "192.168.x.x" msgstr "Alleen verbindingen accepteren van apparaten met ip-ranges:⏎\n10.x.x.x⏎\n172.16.0.0 - 172.31.255.255⏎\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Alleen verbindingen van het lokale netwerk toestaan" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Alleen de eerste tonen" @@ -3392,23 +3434,23 @@ msgstr "Alleen de eerste tonen" msgid "Opacity" msgstr "Doorzichtigheid" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "%1 in de browser openen" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "&Audio-CD openen…" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "OML bestand openen" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "OML bestand openen..." @@ -3416,30 +3458,35 @@ msgstr "OML bestand openen..." msgid "Open device" msgstr "Apparaat openen" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Bestand openen..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "In Google Drive openen" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "In een nieuwe afspeellijst openen" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Openen in een nieuwe afspeellijst" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Open in je browser" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Openen..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Bewerking is mislukt" @@ -3459,23 +3506,23 @@ msgstr "Opties…" msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Bestanden sorteren" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Bestanden sorteren..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Bestanden sorteren" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Originele labels" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Overige opties" @@ -3483,7 +3530,7 @@ msgstr "Overige opties" msgid "Output" msgstr "Output" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Uitvoer apparaat" @@ -3491,15 +3538,11 @@ msgstr "Uitvoer apparaat" msgid "Output options" msgstr "Uitvoeropties" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Uitvoer plug-in" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Alles overschrijven" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Overschrijf bestaande bestanden" @@ -3511,15 +3554,15 @@ msgstr "Overschrijf alleen kleinere" msgid "Owner" msgstr "Eigenaar" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Jamendo-catalogus verwerken" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3528,20 +3571,20 @@ msgstr "Party" msgid "Password" msgstr "Wachtwoord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pauze" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Afspelen pauzeren" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Gepauzeerd" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Uitvoerend artiest" @@ -3550,34 +3593,22 @@ msgstr "Uitvoerend artiest" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Normale zijbalk" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Afspelen" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Artiest of label afspelen" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Artiestradio afspelen…" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Aantal maal afgespeeld" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Eigen radiostation afspelen…" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Afspelen indien gestopt, pauzeren indien afgespeeld" @@ -3586,45 +3617,42 @@ msgstr "Afspelen indien gestopt, pauzeren indien afgespeeld" msgid "Play if there is nothing already playing" msgstr "Afspelen wanneer niets aan het afspelen is" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Tagradio afspelen…" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "De de/ste track in de afspeellijst afspelen" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Afspelen/pauzeren" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Weergave" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Speler-opties" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Afspeellijst" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Afspeellijst voltooid" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Afspeellijst-opties" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Afspeellijst type" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Afspeellijsten" @@ -3636,23 +3664,23 @@ msgstr "Sluit uw browser en keer terug naar Clementine." msgid "Plugin status:" msgstr "Plug-in status:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Populaire nummers" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Populaire nummers van de maand" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Populaire nummers van vandaag" @@ -3661,22 +3689,23 @@ msgid "Popup duration" msgstr "Pop-up duur" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Poort" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Voorversterking" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Voorkeuren" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Voorkeuren..." @@ -3712,7 +3741,7 @@ msgstr "Druk een toetstencombinatie om te gebruiken" msgid "Press a key" msgstr "Druk een toets" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Druk een toetsencombinatie om voor %1 te gebruiken..." @@ -3723,20 +3752,20 @@ msgstr "Opties mooi infoschermvenster" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Voorbeeld" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Vorige" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Vorig nummer" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Versie-informatie uitprinten" @@ -3744,21 +3773,25 @@ msgstr "Versie-informatie uitprinten" msgid "Profile" msgstr "Profiel" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Voortgang" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Voortgang" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psychedelisch" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Klik op Wiiremote-knop" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Plaats nummers in willekeurige volgorde" @@ -3766,7 +3799,12 @@ msgstr "Plaats nummers in willekeurige volgorde" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Kwaliteit" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Kwaliteit" @@ -3774,28 +3812,33 @@ msgstr "Kwaliteit" msgid "Querying device..." msgstr "apparaat afzoeken..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Wachtrijbeheer" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Geselecteerde nummers in de wachtrij plaatsen" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Nummer in de wachtrij plaatsen" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (gelijk volume voor alle nummers)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio's" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Regen" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Regen" @@ -3803,48 +3846,48 @@ msgstr "Regen" msgid "Random visualization" msgstr "Willekeurige visualisatie" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Waardeer huidig nummer met 0 sterren" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Waardeer huidig nummer met 1 ster" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Waardeer huidig nummer met 2 sterren" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Waardeer huidig nummer met 3 sterren" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Waardeer huidig nummer met 4 sterren" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Waardeer huidig nummer met 5 sterren" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Waardering" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Werkelijk annuleren?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Omleidingslimiet overschreden, controleer server configuratie." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Ververs" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Catalogus verversen" @@ -3852,19 +3895,15 @@ msgstr "Catalogus verversen" msgid "Refresh channels" msgstr "Kanalen verversen" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Vriendenlijst verversen" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Lijst met stations verversen" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Lijst met radiostreams verversen" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3876,8 +3915,8 @@ msgstr "Onthou Wii remote zwaai" msgid "Remember from last time" msgstr "Laatste instelling onthouden" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Verwijderen" @@ -3885,7 +3924,7 @@ msgstr "Verwijderen" msgid "Remove action" msgstr "Actie verwijderen" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Verwijder dubbelen uit afspeellijst" @@ -3893,73 +3932,77 @@ msgstr "Verwijder dubbelen uit afspeellijst" msgid "Remove folder" msgstr "Map verwijderen" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Verwijder uit Mijn Muziek" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Verwijder uit bladwijzers" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Uit favorieten verwijderen" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Uit afspeellijst verwijderen" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Afspeellijst verwijderen" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Afspeellijsten verwijderen" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Verwijderen nummers uit Mijn Muziek" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Verwijderen nummer uit favorieten" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Afspeellijst \"%1\" hernoemen" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Grooveshark afspeellijst hernoemen" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Afspeellijst hernoemen" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Afspeellijst hernoemen..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Nummers in deze volgorde een nieuw nummer geven…" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Herhalen" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Album herhalen" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Afspeellijst herhalen" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Nummer herhalen" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Huidige afspeellijst vervangen" @@ -3968,15 +4011,15 @@ msgstr "Huidige afspeellijst vervangen" msgid "Replace the playlist" msgstr "Afspeellijst vervangen" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Vervangt spaties door underscores" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Replay Gain modus" @@ -3984,24 +4027,24 @@ msgstr "Replay Gain modus" msgid "Repopulate" msgstr "Opnieuw vullen" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Autorisatiecode vereist" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Herstel" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Reset afspeelstatistieken" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Herstart het afspelen van track, of speel het vorige nummer af bij 8 seconden van start." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Beperken tot ASCII karakters" @@ -4009,15 +4052,15 @@ msgstr "Beperken tot ASCII karakters" msgid "Resume playback on start" msgstr "Afspelen hervatten bij opstarten" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Ophalen Grooveshark Mijn Muziek nummers" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Ophalen van Groovshark favoriete nummers" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Ophalen van Grooveshark afspeellijsten" @@ -4037,11 +4080,11 @@ msgstr "Rip" msgid "Rip CD" msgstr "Rip CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Rip audio CD" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4053,25 +4096,25 @@ msgstr "Uitvoeren" msgid "SOCKS proxy" msgstr "SOCKS proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Foout bij SSL handshake, controleer server instellingen. De SSLv3 optie hieronder zou sommige problemen kunnen oplossen." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Apparaat veilig verwijderen" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Apparaat veilig verwijderen na het kopiëren" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Samplerate" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Samplerate" @@ -4079,27 +4122,33 @@ msgstr "Samplerate" msgid "Save .mood files in your music library" msgstr "Bewaar .mood bestanden in u muziekbibliotheek" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Albumhoes opslaan" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Albumhoes op schijf bewaren…" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "plaatje opslaan" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Afspeellijst opslaan" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Afspeellijst opslaan" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Afspeellijst opslaan..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Voorinstelling opslaan" @@ -4115,11 +4164,11 @@ msgstr "Sla statistieken op in bestand, indien mogellijk" msgid "Save this stream in the Internet tab" msgstr "Deze radiostream in het ‘Internet’-tabblad opslaan" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Opslaan van statistieken in muziekbestanden" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Nummers opslaan" @@ -4131,7 +4180,7 @@ msgstr "Schaalbare samplerateprofiel (SSR)" msgid "Scale size" msgstr "Groote schalen" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Score" @@ -4139,10 +4188,14 @@ msgstr "Score" msgid "Scrobble tracks that I listen to" msgstr "Scrobble de nummers waar ik naar luister" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Zoeken" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Zoeken" @@ -4150,23 +4203,23 @@ msgstr "Zoeken" msgid "Search Icecast stations" msgstr "Icecast stations doorzoeken" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Jamendo doorzoeken" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Zoeken op Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Subsonic doorzoeken" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Automatisch zoeken" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Naar albumhoezen zoeken…" @@ -4186,21 +4239,21 @@ msgstr "Doorzoek iTunes" msgid "Search mode" msgstr "Zoekmodus" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Zoekopties" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Zoekresultaten" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Zoek voorwaarden" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Zoeken in Grooveshark" @@ -4208,27 +4261,27 @@ msgstr "Zoeken in Grooveshark" msgid "Second level" msgstr "Tweede niveau" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Achterwaarts zoeken" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Voorwaarts zoeken" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Spoel momenteel spelende nummer met een relatieve hoeveelheid door" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Spoel het momenteel spelende nummer naar een absolute positie door" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Alles selecteren" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Niets selecteren" @@ -4236,7 +4289,7 @@ msgstr "Niets selecteren" msgid "Select background color:" msgstr "Selecteer achtergrond kleur" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Kies achtergrondafbeelding" @@ -4252,7 +4305,7 @@ msgstr "Selecteer voorgrond kleur" msgid "Select visualizations" msgstr "Visualisaties kiezen" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Visualisaties kiezen..." @@ -4260,7 +4313,7 @@ msgstr "Visualisaties kiezen..." msgid "Select..." msgstr "Selecteer..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Serienummer" @@ -4272,51 +4325,51 @@ msgstr "Server URL" msgid "Server details" msgstr "Server gegevens" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Service offline" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Stel %1 in op \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Zet het volume op procent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Waarde voor alle geselecteerde nummers instellen…" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Instellingen" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Sneltoets" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Sneltoets voor %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Sneltoets voor %1 bestaat reeds" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Weergeven" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Infoschermvenster weergeven" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Een oplichtende animatie weergeven op het huidige nummer" @@ -4344,15 +4397,15 @@ msgstr "Pop-up van systeemvak weergeven" msgid "Show a pretty OSD" msgstr "Mooi infoschermvenster weergeven" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Boven statusbalk weergeven" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Alle nummers weergeven" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Alle nummers weergeven" @@ -4364,32 +4417,36 @@ msgstr "Albumhoezen in bibliotheek tonen" msgid "Show dividers" msgstr "Verdelers tonen" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Volledig weergeven..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Toon groepen in globale zoekresultaat" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "In bestandsbeheer tonen…" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Tonen in bibliotheek..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "In diverse artiesten weergeven" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Toon stemmingsbalk" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Alleen dubbelen tonen" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Nummers zonder labels tonen" @@ -4398,8 +4455,8 @@ msgid "Show search suggestions" msgstr "Toon zoek sugesties" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Knoppen ‘Mooi’ en ‘Verbannen’ weergeven" +msgid "Show the \"love\" button" +msgstr "Knop \"love\" weergeven" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4413,27 +4470,27 @@ msgstr "Systeemvakpictogram weergeven" msgid "Show which sources are enabled and disabled" msgstr "Toon welke bronnen wel en niet beschikbaar zijn" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Tonen/verbergen" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Willekeurig" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Albums willekeurig afspelen" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Alles willekeurig" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Afspeellijst schudden" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Nummers van dit album willekeurig" @@ -4449,7 +4506,7 @@ msgstr "Afmelden" msgid "Signing in..." msgstr "Bezig met inloggen...." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Vergelijkbare artiesten" @@ -4461,43 +4518,51 @@ msgstr "Groote" msgid "Size:" msgstr "Groote:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Terug in afspeellijst" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Aantal maal overgeslagen" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Vooruit in afspeellijst" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Geselecteerde nummers overslaan" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Nummer overslaan" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Kleine albumhoes" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Kleine zijbalk" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Slimme afspeellijst" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Slimme afspeellijsten" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Zacht" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4505,11 +4570,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Nummerinformatie" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Nummerinfo" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4529,15 +4594,23 @@ msgstr "Sorteren op genre (populariteit)" msgid "Sort by station name" msgstr "Sorteren op stationsnaam" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Afspeellijstnummers alfabetisch sorteren" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Nummers sorteren op" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sorteren" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Bron" @@ -4553,7 +4626,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify inlogfout" @@ -4561,7 +4634,7 @@ msgstr "Spotify inlogfout" msgid "Spotify plugin" msgstr "Spotify plug-in" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify plug-in niet geïnstalleerd" @@ -4569,77 +4642,77 @@ msgstr "Spotify plug-in niet geïnstalleerd" msgid "Standard" msgstr "Standaard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Met ster" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Begin met rippen" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Momenteel spelende afspeellijst starten" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Converteren starten" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Typ iets in de bovenstaande zoekbalk om de lijst met zoekresultaten te zien" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 wordt gestart" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Starten…" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stations" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stoppen" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Stop na" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Na dit nummer stoppen" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Afspelen stoppen" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Na dit nummer stoppen met afspelen" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Stoppen met afspelen na nummer: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Gestopt" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Radiostream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4649,7 +4722,7 @@ msgstr "Streamen vanaf een Subsonic server vereist een geldige licentie na de pr msgid "Streaming membership" msgstr "Streaming lidmaatschap" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Geabonneerde afspeellijsten" @@ -4657,7 +4730,7 @@ msgstr "Geabonneerde afspeellijsten" msgid "Subscribers" msgstr "Volgers" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4665,12 +4738,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Succes!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 met succes weggeschreven" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Gesuggereerde labels" @@ -4679,13 +4752,13 @@ msgstr "Gesuggereerde labels" msgid "Summary" msgstr "Samenvatting" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Superhoog (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Zeer hoog (2048x2048)" @@ -4697,43 +4770,35 @@ msgstr "Ondersteunde formaten" msgid "Synchronize statistics to files now" msgstr "Nu statistieken naar bestanden synchoriseren" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Spotify inbox synchroniseren" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Spotify afspeellijst synchroniseren" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Favoriete Spotify-nummers synchroniseren" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Systeemkleuren" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Tabs bovenaan" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Label" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Labels ophalen" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Tagradio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Doelbitrate" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4741,11 +4806,11 @@ msgstr "Techno" msgid "Text options" msgstr "Tekstopties" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Met dank aan" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Het commando \"%1\" kon niet worden gestart." @@ -4754,17 +4819,12 @@ msgstr "Het commando \"%1\" kon niet worden gestart." msgid "The album cover of the currently playing song" msgstr "Albumhoes van het momenteel spelende nummer" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "De map %1 is niet geldig" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "De afspeellijst '%1' was leeg, of kon niet worden geladen." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "De tweede waarde moet groter zijn dan de eerste!" @@ -4772,40 +4832,40 @@ msgstr "De tweede waarde moet groter zijn dan de eerste!" msgid "The site you requested does not exist!" msgstr "De site die u aanvroeg bestaat niet!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "De site die u aanvroeg is geen afbeelding!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "De proefperiode voor de Subsonic server is afgelopen. Doneer om een licentie sleutel te krijgen. Ga naar subsonic.org voor details." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "De versie van Clementine die u zojuist heeft ge-updated vereist vanwege de nieuwe onderdelen die hieronder staan een volledige herscan van de database:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Er zijn andere nummers in dit album" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Er is een fout opgetreden tijdens het communiceren met gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Er is een probleem opgetreden bij het ophalen van de metadata van Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Er was een probleem met het het verwerken van het antwoord van de iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4817,13 +4877,13 @@ msgid "" "deleted:" msgstr "Er waren problemen tijdens het verwijderen van bepaalde nummers. De volgende bestanden konden niet verwijderd worden:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Deze bestanden zullen definitief van het apparaat verwijderd worden. Weet u zeker dat u door wilt gaan?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4843,13 +4903,13 @@ msgstr "Deze instellingen worden gebruikt in het dialoogvenster \"Muziek convert msgid "Third level" msgstr "Derde niveau" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Deze actie creëert een database die 150 MB groot kan worden.\nWilt u toch doorgaan?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Dit album is niet in het gevraagde formaat beschikbaar" @@ -4863,11 +4923,11 @@ msgstr "Dit apparaat dient verbonden te zijn en geopend vooraleer Clementine kan msgid "This device supports the following file formats:" msgstr "Dit apparaat ondsteunt de volgende bestandsformaten:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Dit apparaat zal niet correct werken" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Dit is een MTP apparaat maar u hebt Clementine gecompileerd zonder libmtp ondersteuning." @@ -4876,7 +4936,7 @@ msgstr "Dit is een MTP apparaat maar u hebt Clementine gecompileerd zonder libmt msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Dit is een iPod maar u hebt Clementine gecompileerd zonder libgpod ondersteuning." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4886,33 +4946,33 @@ msgstr "Dit is de eerste keer dat u dit apparaat hebt verbonden. Clementine zal msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Deze optie kan aangepast worden bij de \"Gedrag\" instellingen" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Deze stream is alleen voor betalende abonnees" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Dit type apparaat wordt niet ondersteund: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Om Grooveshark radio te starten moet je eerst naar andere Grooveshark nummers luisteren" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Vandaag" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Mooi infoschermvenster aan/uit" @@ -4920,27 +4980,27 @@ msgstr "Mooi infoschermvenster aan/uit" msgid "Toggle fullscreen" msgstr "Volledig scherm aan/uit" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Wachtrijstatus aan/uit" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Zet scrobbling aan/uit" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Zichtbaarheid voor het mooie infoschermvenster aan/uit" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Morgen" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Te veel doorverwijzingen" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Top nummers" @@ -4948,21 +5008,25 @@ msgstr "Top nummers" msgid "Total albums:" msgstr "Totaal aantal albums:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Totaal aantal verzonden bytes" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Totaal aantal netwerk-verzoeken" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Nummer" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Nummers" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Muziek converteren" @@ -4974,7 +5038,7 @@ msgstr "Conversielog" msgid "Transcoding" msgstr "Converteren" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Converteren van %1 bestanden m.b.v. %2 threads" @@ -4983,11 +5047,11 @@ msgstr "Converteren van %1 bestanden m.b.v. %2 threads" msgid "Transcoding options" msgstr "Conversieopties" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4995,72 +5059,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Uitzetten" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One wachtwoord" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One gebruikersnaam" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Zeer snel internet" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Kan %1 niet downloaden (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Onbekend" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Onbekend inhoudstype" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Onbekende fout" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Albumhoes wissen" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Geselecteerde nummers niet overslaan" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Nummer niet overslaan" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Uitschrijven" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Komende concerten" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Bijwerken" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Grooveshark afspeellijsten bijwerken" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Vernieuw alle podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Aangepaste databasemappen updaten" @@ -5068,7 +5132,7 @@ msgstr "Aangepaste databasemappen updaten" msgid "Update the library when Clementine starts" msgstr "Bibliotheek bijwerken zodra Clementine gestart wordt" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Vernieuw deze podcast" @@ -5076,21 +5140,21 @@ msgstr "Vernieuw deze podcast" msgid "Updating" msgstr "Bezig met bijwerken" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "%1 bijwerken" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Bijwerken, %1%…" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Bibliotheek wordt bijgewerkt" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Gebruik" @@ -5098,11 +5162,11 @@ msgstr "Gebruik" msgid "Use Album Artist tag when available" msgstr "Gebruik Albumartiest label indien beschikbaar" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gnome-sneltoetsen gebruiken" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Replay Gain-metadata gebruiken, als deze beschikbaar is" @@ -5122,7 +5186,7 @@ msgstr "Gebruik een aangepaste kleuren set" msgid "Use a custom message for notifications" msgstr "Een aangepast bericht voor notificaties gebruiken" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Gebruik een netwerkafstandsbediening" @@ -5162,20 +5226,20 @@ msgstr "Globale proxy-instellingen gebruiken" msgid "Use volume normalisation" msgstr "Volume normalisatie gebruiken" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Gebruikt" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Gebruiker %1 heeft geen Grooveshark Anywhere lidmaadschap" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Gebruikersinterface" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5197,12 +5261,12 @@ msgstr "MP3 (variabele bitrate)" msgid "Variable bit rate" msgstr "Variabele bitrate" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Diverse artiesten" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versie %1" @@ -5215,7 +5279,7 @@ msgstr "Weergave" msgid "Visualization mode" msgstr "Visualisatiemodus" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualisaties" @@ -5223,11 +5287,15 @@ msgstr "Visualisaties" msgid "Visualizations Settings" msgstr "Visualisatie-instellingen" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Voice activity detection" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5245,11 +5313,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Waarschuw mij wanneer een afspeellijst tab wordt gesloten" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5257,7 +5325,7 @@ msgstr "Wav" msgid "Website" msgstr "Website" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Weken" @@ -5283,32 +5351,32 @@ msgstr "Probeer eens...." msgid "Wide band (WB)" msgstr "Snel internet" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: geactiveerd" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: verbonden" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: kritieke accuspanning (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: gedeactiveerd" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: verbinding verbroken" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: lage accuspanning (%2%)" @@ -5329,7 +5397,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64K" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media-audio" @@ -5337,25 +5405,25 @@ msgstr "Windows Media-audio" msgid "Without cover:" msgstr "Zonder albumhoes:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Wilt u de andere nummers van dit album ook verplaatsen naar Diverse Artiesten?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Wilt u op dit moment een volledige herscan laten uitvoeren?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Sla alle statistieken op in muziekbestanden" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Verkeerde gebruikersnaam of wachwoord." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5367,11 +5435,11 @@ msgstr "Jaar" msgid "Year - Album" msgstr "Jaar - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Jaar" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Gisteren" @@ -5379,13 +5447,13 @@ msgstr "Gisteren" msgid "You are about to download the following albums" msgstr "U staat op het punt de volgende albums te downloaden" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "U staat op het punt om %1 afspeellijsten uit uw favorieten te verwijderen, weet u het zeker?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5395,12 +5463,12 @@ msgstr "Je staat op het punt een afspeellijst te verwijderen, die geen deel uitm msgid "You are not signed in." msgstr "U bent niet ingelogd." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "U bent ingelogd als %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "U bent ingelogd." @@ -5408,13 +5476,13 @@ msgstr "U bent ingelogd." msgid "You can change the way the songs in the library are organised." msgstr "U kunt de manier waarop de nummers in de bibliotheek gesorteerd worden aanpassen." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "U kunt zonder account gratis luisteren, maar met een Premium account kunt u luisteren in hogere kwaliteit en zonder advertenties." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5424,13 +5492,6 @@ msgstr "U kunt zonder account gratis naar Magnatunes nummers luisteren. Bij lidm msgid "You can listen to background streams at the same time as other music." msgstr "U kunt achtergrondgeluiden tegelijk met andere muziek beluisteren." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "U kunt gratis tracks scrobblen, maar alleen betalende leden kunnen Last.fm-radio vanuit Clementine streamen." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "U kunt uw Wii Remote als afstandsbediening voor Clementine gebruiken. Neem een kijkje op de Clementine wikipagina (Engelstalig) voor meer informatie.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "U heeft geen Grooveshark Anywhere account." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "U heeft geen Spotify Premium account." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "U heeft geen actief abonnement" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Je hoeft niet ingelogd te zijn om naar muziek op SoundCloud te zoeken en te luisteren. Maar, je moet inloggen voor toegang tot je afspeellijsten en stream." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "U bent uitgelogd bij Spotify, voer in het voorkeuren venster nogmaals uw wachtwoord in." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "U bent uitgelogd bij Spotify, voer nogmaals uw wachtwoord in." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "U vindt dit nummer mooi" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "U moet Systeemvoorkeuren openen en Clementine toestaan om \"uw computer te bedienen\" om globale sneltoetsen te gebruiken in Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5475,17 +5550,11 @@ msgstr "Om de globale sneltoetsen in Clementine te gebruiken moet u Systeemvoork msgid "You will need to restart Clementine if you change the language." msgstr "Clementine moet herstart worden als u de taal veranderd." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "U kunt geen Last.fm radiostations beluisteren, omdat u geen abonnement op Last.fm heeft." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Uw IP-adres:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Uw Last.fm inloggegevens zijn onjuist" @@ -5493,42 +5562,43 @@ msgstr "Uw Last.fm inloggegevens zijn onjuist" msgid "Your Magnatune credentials were incorrect" msgstr "Uw Magnatune inloggegevens zijn onjuist" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Uw bibliotheek is leeg!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Uw radiostreams" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Uw scrobbles: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Uw systeem heeft geen ondersteuning voor OpenGL, visualisaties kunnen niet weergegeven worden." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Uw gebruikersnaam of wachtwoord is niet correct." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Nul" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "%n nummers toevoegen" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "na" @@ -5548,19 +5618,19 @@ msgstr "automatisch" msgid "before" msgstr "ervoor" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "tussen" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "grootste eerst" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "bevat" @@ -5570,20 +5640,20 @@ msgstr "bevat" msgid "disabled" msgstr "uitgeschakeld" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "schijf %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "bevat niet" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "eindigt op" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "is gelijk aan" @@ -5591,11 +5661,11 @@ msgstr "is gelijk aan" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net map" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "is groter dan" @@ -5603,54 +5673,55 @@ msgstr "is groter dan" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "iPods en USB apparaten werken momenteel niet in Windows. Sorry!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "in de laatste" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "minder dan" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "langste eerst" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "Verplaats %n nummers" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "nieuwste eerst" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "niet gelijk" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "niet in de laatste" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "niet op" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "oudste eerst" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "aan" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "opties" @@ -5662,36 +5733,37 @@ msgstr "of scan de QR code!" msgid "press enter" msgstr "druk op enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "%n nummers verwijderen" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "kortste eerst" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "nummers schudden" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "kleinste eerst" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "nummers sorteren" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "begint met" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "stoppen" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "nummer %1" diff --git a/src/translations/oc.po b/src/translations/oc.po index 8c3a1434c..57dccb6f1 100644 --- a/src/translations/oc.po +++ b/src/translations/oc.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/clementine/language/oc/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: oc\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " mseg" @@ -55,11 +55,16 @@ msgstr "" msgid " seconds" msgstr " segondas" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -69,12 +74,12 @@ msgstr "" msgid "%1 days" msgstr "" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -139,18 +144,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "" @@ -162,24 +170,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personalizat" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Ajuda" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Amagar « %1 »" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Amagar..." @@ -187,23 +195,23 @@ msgstr "Amagar..." msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Musica" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Pas cap" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Lista de lectura" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Quitar" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Lectura en bocla" @@ -211,23 +219,23 @@ msgstr "Lectura en bocla" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Mòde aleatòri" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Aisinas" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -272,12 +276,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "A prepaus de « %1 »" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "A prepaus de Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Seleccionar un fichièr vidèo..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Apondre un dorsièr" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -452,11 +464,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Apondre un flux..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Apondre a la lista de lecturas" @@ -552,6 +580,10 @@ msgstr "Apondre a la lista de lecturas" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -581,15 +613,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -597,12 +629,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "" msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Totes los albums" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Totes los fichièrs (*)" @@ -661,19 +694,19 @@ msgstr "Totes los fichièrs (*)" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +777,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,9 +825,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "L'autentificacion a fracassat" @@ -807,7 +839,7 @@ msgstr "L'autentificacion a fracassat" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autors" @@ -823,7 +855,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -831,15 +863,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -860,7 +892,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Bandir" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Espectrograma de barras" @@ -892,18 +920,17 @@ msgstr "Compòrtament" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Debit binari" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "Debit binari" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Causir automaticament" @@ -1027,11 +1086,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Classic" @@ -1048,17 +1107,17 @@ msgstr "Classic" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Voidar la lista de lectura" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1071,8 +1130,8 @@ msgstr "" msgid "Clementine Orange" msgstr "Irange Clementina" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1186,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1183,73 +1238,78 @@ msgstr "Club" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentari" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compositor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configurar los acorchis de clavièr" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1317,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1310,156 +1378,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Gestionari de pochetas" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personalizat..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de modificacion" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Per d&efaut" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Reduire lo volum" @@ -1534,6 +1594,11 @@ msgstr "Reduire lo volum" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1607,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,31 +1638,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Escafar un prereglatge" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinacion" @@ -1606,7 +1671,7 @@ msgstr "Destinacion" msgid "Details..." msgstr "Detalhs..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1618,15 +1683,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Desactivat" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1796,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,23 +1851,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1929,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Egalizador" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2036,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Fondut" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2255,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nom del fichièr" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Talha del fichièr" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "Tipe de fichièr" msgid "Filename" msgstr "Nom del fichièr" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fichièrs" @@ -2214,15 +2289,19 @@ msgstr "Fichièrs" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,7 +2309,7 @@ msgstr "" msgid "First level" msgstr "Primièr nivèl" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Amics" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Motor àudio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2397,30 @@ msgstr "" msgid "General settings" msgstr "Paramètres generals" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Augmentar lo volum" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2594,55 +2665,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Sus Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Clau API pas valabla" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Format incorrècte" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Paramètres invalids" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Clau de sesilha invalida" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Large Hall" @@ -2718,12 +2790,16 @@ msgstr "Large Hall" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Longor" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliotèca" @@ -2818,24 +2852,24 @@ msgstr "Bibliotèca" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2847,15 +2881,15 @@ msgstr "Cargar" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Cargament de la ràdio Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Cargament del flux" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "M'agrada fòrça" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3068,20 +3125,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,7 +3176,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3123,56 +3184,32 @@ msgstr "" msgid "Music Library" msgstr "Discotèca" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Mut" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nom" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Vesins" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3238,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Pista seguenta" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Desactivar l'espectrograma" @@ -3252,7 +3285,7 @@ msgstr "Desactivar l'espectrograma" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "Pas cap" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Notificacions" @@ -3335,36 +3372,41 @@ msgstr "Notificacions" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Dobrir..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "L'operacion a fracassat" @@ -3451,23 +3498,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Autras opcions" @@ -3475,7 +3522,7 @@ msgstr "Autras opcions" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "Opcions de creacion" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Fèsta" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "Fèsta" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pausa" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Metre en pausa la lectura" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "En pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Lectura" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Lectura / pausa" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Sortida" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opcions del lector" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lista de lectura" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Lista de lectura acabada" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pre-amp" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Pista precedenta" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progression" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3791,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,28 +3804,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Suprimir" @@ -3877,7 +3916,7 @@ msgstr "Suprimir" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repetir" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repetir la lista de lectura" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Enregistrar un prereglatge" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,10 +4180,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4142,23 +4195,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4281,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4305,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Acorchi" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Afichar" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4447,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,27 +4462,27 @@ msgstr "Afichar l'icòna dins la bóstia de miniaturas" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Lectura aleatòria" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4497,11 +4562,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonograma" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Arrestar" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Arrestar la lectura" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Arrestat" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Flux" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Etiqueta" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Etiquetar la ràdio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4733,11 +4798,11 @@ msgstr "Techno" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Mercés a" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Títol" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pista" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Desconegut" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Error desconeguda" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Utilizacion" @@ -5090,11 +5154,11 @@ msgstr "Utilizacion" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Version %1" @@ -5207,7 +5271,7 @@ msgstr "Afichatge" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,11 +5279,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volum %1%" @@ -5237,11 +5305,11 @@ msgstr "WAV" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "Annada" msgid "Year - Album" msgstr "Annada - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5371,13 +5439,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zèro" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5540,19 +5610,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,20 +5632,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "CD %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "opcions" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "pista %1" diff --git a/src/translations/pa.po b/src/translations/pa.po index 77926d630..a8316fa2f 100644 --- a/src/translations/pa.po +++ b/src/translations/pa.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/clementine/language/pa/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: pa\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -55,11 +55,16 @@ msgstr "" msgid " seconds" msgstr "" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -69,12 +74,12 @@ msgstr "" msgid "%1 days" msgstr "" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -139,18 +144,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "" @@ -162,24 +170,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -187,23 +195,23 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,23 +219,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -272,12 +276,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -452,11 +464,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -552,6 +580,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -581,15 +613,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -597,12 +629,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -661,19 +694,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +777,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,9 +825,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -807,7 +839,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -823,7 +855,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -831,15 +863,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +892,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +920,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1027,11 +1086,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1048,17 +1107,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1071,8 +1130,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1186,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1183,73 +1238,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1317,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1310,156 +1378,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1467,7 +1531,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1534,6 +1594,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1607,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,31 +1638,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1606,7 +1671,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1618,15 +1683,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1796,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,23 +1851,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1929,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2036,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2255,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2214,15 +2289,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,7 +2309,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2397,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2594,55 +2665,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2718,12 +2790,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2818,24 +2852,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2847,15 +2881,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3068,20 +3125,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,7 +3176,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3123,56 +3184,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3238,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3252,7 +3285,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3335,36 +3372,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3451,23 +3498,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3475,7 +3522,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3791,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,28 +3804,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3877,7 +3916,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,10 +4180,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4142,23 +4195,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4281,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4305,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4447,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,27 +4462,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4497,11 +4562,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4733,11 +4798,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5090,11 +5154,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5207,7 +5271,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,11 +5279,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5237,11 +5305,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5371,13 +5439,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5540,19 +5610,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,20 +5632,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "ਰੋਕੋ" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/pl.po b/src/translations/pl.po index 96497cfce..663d41c18 100644 --- a/src/translations/pl.po +++ b/src/translations/pl.po @@ -4,6 +4,7 @@ # # Translators: # Bartosz Dotryw , 2013 +# duxet , 2014 # Kacper . , 2012-2014 # Kacper . , 2012 # Michał G , 2011 @@ -15,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Polish (http://www.transifex.com/projects/p/clementine/language/pl/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,7 +24,7 @@ msgstr "" "Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -48,9 +49,9 @@ msgstr " dni" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -63,11 +64,16 @@ msgstr " pkt" msgid " seconds" msgstr " sekundy" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " utwory" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 utworów)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albumów" @@ -77,12 +83,12 @@ msgstr "%1 albumów" msgid "%1 days" msgstr "%1 dni" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dni temu" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 na %2" @@ -92,48 +98,48 @@ msgstr "%1 na %2" msgid "%1 playlists (%2)" msgstr "%1 list odtwarzania (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 zaznaczonych z" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 utwór" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 utwory" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "znaleziono %1 utworów" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "znaleziono %1 utworów (pokazywane %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 ścieżek" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 przesłanych" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: moduł Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 innych słuchaczy" @@ -147,18 +153,21 @@ msgstr "%L1 odtworzeń" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n nieudane" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n zakończone" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "pozostało %n" @@ -170,24 +179,24 @@ msgstr "Wyrówn&anie tekstu" msgid "&Center" msgstr "Wyśrodkowanie" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Własny" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Dodatki" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Pomoc" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Ukryj %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Ukryj..." @@ -195,23 +204,23 @@ msgstr "Ukryj..." msgid "&Left" msgstr "Do &lewej" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Muzyka" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Brak" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Lista odtwarzania" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Zakończ" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Tryb powtarzania" @@ -219,23 +228,23 @@ msgstr "Tryb powtarzania" msgid "&Right" msgstr "Do p&rawej" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Tryb losowy" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Rozciągaj kolumny, aby dopasować do okna" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Narzędzia" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(w zależności od utworu)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...i wszystkich osób mających wkład w rozwój Amaroka" @@ -255,14 +264,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dzień" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 ścieżka" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -272,7 +277,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 losowych ścieżek" @@ -280,12 +285,6 @@ msgstr "50 losowych ścieżek" msgid "Upgrade to Premium now" msgstr "Ulepsz do konta premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Stwórz nowe konto lub zresetuj swoje hasło" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -296,6 +295,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Jeśli nie jest zaznaczone, Celementine spróbuje zapisać Twoje oceny i inne statystyki tylko w odrębnej bazie danych i nie zmodyfikuje plików.

Jeśli pole jest zaznaczone, Clementine zapisze informacje zarówno w bazie danych jak i w plikach, każdorazowo gdy zajdzie potrzeba uaktualnienia statystyk.

Prosimy wziąć pod uwagę, że nie każdy format plików jest wspierany, a także nie ma żadnego standardu określającego sposób zapisu, więc inne odtwarzacze muzyczne mogą nie być w stanie odczytać tak zmodyfikowanego pliku.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -304,38 +314,38 @@ msgid "" "activated.

" msgstr "

Oceny i statystyki wszystkich twoich utworów zostaną zapisane w plikach muzycznych.

Nie jest to konieczne jeżeli opcja "Zapisz oceny i statystyki w plikach muzycznych" została aktywowana.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Tokeny rozpoczynają się od %, na przykład: %artist %album %title

\n\n

Jeżeli otoczysz fragmenty tekstu, które zawierają token nawiasami klamrowymi, ta sekcja będzie niewidoczna, jeśli token będzie pusty.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Potrzebne jest konto Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Musisz posiadać konto Spotify Premium." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Klient może się połączyć tylko wtedy, jeśli został wpisany poprawny kod." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Inteligentna lista odtwarzania to dynamiczna lista utworów pochodzących z twojej biblioteki. Istnieją różne rodzaje inteligentnych list odtwarzania oferujące różne sposoby wyboru utworów." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Utwór zostanie uwzględniony w liście odtwarzania, jeśli spełni następujące kryteria." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -355,36 +365,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "CHWAŁA TOBIE HYPNOROPUCHO" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Przerwij" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "O programie %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "O Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "O Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Szczegóły konta" @@ -396,11 +405,15 @@ msgstr "Detale konta (Premium)" msgid "Action" msgstr "Akcja" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktywuj/deaktywuj Wiiremote'a" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Strumień aktywności" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Dodaj podcast" @@ -416,39 +429,39 @@ msgstr "Dodaj nową linię jeśli dany typ powiadomień pozwala" msgid "Add action" msgstr "Dodaj akcję" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Dodaj następny strumień..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Dodaj katalog..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Dodaj plik" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Dodaj plik do transkodera" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Dodaj plik(i) do transkodera" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Dodaj plik..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Dodaj pliki to transkodowania" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Dodaj katalog" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Dodaj katalog..." @@ -460,11 +473,11 @@ msgstr "Dodaj nowy katalog..." msgid "Add podcast" msgstr "Dodaj podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Dodaj podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Dodaj kryterium wyszukiwania" @@ -528,6 +541,10 @@ msgstr "Dodaj licznik pominięć" msgid "Add song title tag" msgstr "Dodaj tag tytułu" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Dodaj tag numeru utworu" @@ -536,22 +553,34 @@ msgstr "Dodaj tag numeru utworu" msgid "Add song year tag" msgstr "Dodaj tag roku" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Dodaj strumień..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Dodaj do ulubionych Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Dodaj do list odtwarzania w serwisie Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Dodaj do Mojej Muzyki" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Dodaj do innej listy odtwarzania" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Dodaj do zakładek" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Dodaj do listy odtwarzania" @@ -560,6 +589,10 @@ msgstr "Dodaj do listy odtwarzania" msgid "Add to the queue" msgstr "Kolejkuj ścieżkę" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Dodaj użytkownika/grupę do zakładek" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Dodaj akcję wiimotedeva" @@ -589,15 +622,15 @@ msgstr "Dodane dzisiaj" msgid "Added within three months" msgstr "Dodane przez trzy ostatnie miesiące" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Dodawanie utworu do Mojej Muzyki" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Dodawanie piosenki do ulubionych" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Zaawansowane grupowanie..." @@ -605,12 +638,12 @@ msgstr "Zaawansowane grupowanie..." msgid "After " msgstr "Po następującej ilości dni:" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Po skopiowaniu..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -618,11 +651,11 @@ msgstr "Po skopiowaniu..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Według albumów (najlepsza głośność dla wszystkich ścieżek)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -632,35 +665,36 @@ msgstr "Wykonawca albumu" msgid "Album cover" msgstr "Okładka albumu" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informacje o albumie na jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumy z okładkami" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumy bez okładek" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Wszystkie pliki (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Chwała Tobie Hypnoropucho!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Wszystkie albumy" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Wszyscy wykonawcy" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Wszystkie pliki (*)" @@ -669,19 +703,19 @@ msgstr "Wszystkie pliki (*)" msgid "All playlists (%1)" msgstr "Wszystkie listy odtwarzania (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Tłumacze" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Wszystkie ścieżki" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Zezwól klientowi pobrać muzykę z tego komputera" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Zezwól na pobieranie" @@ -706,30 +740,30 @@ msgstr "Zawsze wyświetlaj główne okno" msgid "Always start playing" msgstr "Odtwarzaj automatycznie" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Aby korzystać ze Spotify przy użyciu Clementine, wymagany jest dodatkowy skrypt. Czy chcesz go teraz pobrać?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Wystąpił błąd podczas ładowania bazy danych iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Wystąpił błąd podczas zapisu metadanych do '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Wystąpił niespodziewany błąd" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "I:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Zdenerwowany" @@ -738,13 +772,13 @@ msgstr "Zdenerwowany" msgid "Appearance" msgstr "Wygląd" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Dodaj pliki/adresy URL do listy odtwarzania" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Dołącz do aktualnej listy odtwarzania" @@ -752,52 +786,47 @@ msgstr "Dołącz do aktualnej listy odtwarzania" msgid "Append to the playlist" msgstr "Dołącz do listy odtwarzania" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Skompresuj, aby zapobiec przesterowaniu" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Na pewno chcesz usunąć ustawienie \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Czy jesteś pewien, że chcesz usunąć tę listę odtwarzania?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Na pewno wyzerować statystyki tego utworu?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Czy na pewno chcesz zapisać w plikach wszystkie statystyki każdego utworu z twojej biblioteki?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Wykonawca" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "O artyście" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radio wykonawcy" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Tagi wykonawcy" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Inicjały wykonawcy" @@ -805,9 +834,13 @@ msgstr "Inicjały wykonawcy" msgid "Audio format" msgstr "Format audio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Wyjście audio" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Błąd uwierzytelniania" @@ -815,7 +848,7 @@ msgstr "Błąd uwierzytelniania" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autorzy" @@ -831,7 +864,7 @@ msgstr "Automatyczna aktualizacja" msgid "Automatically open single categories in the library tree" msgstr "Automatycznie rozwiń pojedyncze kategorie w drzewie biblioteki" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Dostępny" @@ -839,15 +872,15 @@ msgstr "Dostępny" msgid "Average bitrate" msgstr "Średnia szybkość transmisji" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Przeciętny rozmiar grafiki" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcasty BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Uderzenia na minutę" @@ -868,7 +901,7 @@ msgstr "Obrazek tła" msgid "Background opacity" msgstr "Nieprzezroczystość tła" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Tworzenie kopii zapasowej bazy danych" @@ -876,11 +909,7 @@ msgstr "Tworzenie kopii zapasowej bazy danych" msgid "Balance" msgstr "Balans" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Ignoruj" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Analizator słupkowy" @@ -900,18 +929,17 @@ msgstr "Tryb" msgid "Best" msgstr "Najlepsza" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografia z %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitrate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -919,7 +947,12 @@ msgstr "Bitrate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Bitrate" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Analizator blokowy" @@ -935,7 +968,7 @@ msgstr "Ilość rozmycia" msgid "Body" msgstr "Treść" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Analizator słupkowy 2" @@ -949,11 +982,11 @@ msgstr "Box" msgid "Browse..." msgstr "Przeglądaj..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Długość bufora" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Buforowanie" @@ -965,43 +998,66 @@ msgstr "Lecz ominie poniższe źródła:" msgid "Buttons" msgstr "Przyciski" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Domyślnie Grooveshark sortuje utwory według daty dodania" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CD-Audio" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "obsługa arkuszy CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Anuluj" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Zmień okładkę" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Zmień wielkość czcionki..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Zmień tryb powtarzania utworów" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Zmień skrót..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Zmień tryb losowania utworów" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Zmień język" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1011,15 +1067,19 @@ msgstr "Zmiana trybu odtwarzania na tryb mono nastąpi dopiero od następnej odt msgid "Check for new episodes" msgstr "Sprawdzaj, czy są nowe audycje" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Sprawdź aktualizacje..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Wprowadź nazwę dla inteligentnej listy odtwarzania" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Wybierz automatycznie" @@ -1035,11 +1095,11 @@ msgstr "Wybierz czcionkę..." msgid "Choose from the list" msgstr "Wybierz z listy" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Wybierz w jaki sposób jest sortowana lista odtwarzania i ile ścieżek będzie zawierać" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Wybierz folder pobierania dla podcastów" @@ -1048,7 +1108,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Wybierz serwisy, których Clementine ma używać szukając tekstów" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Muzyka klasyczna" @@ -1056,17 +1116,17 @@ msgstr "Muzyka klasyczna" msgid "Cleaning up" msgstr "Czyszczenie" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Wyczyść" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Wyczyść listę odtwarzania" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1079,8 +1139,8 @@ msgstr "Błąd Clementine" msgid "Clementine Orange" msgstr "Pomarańczowy Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Wizualizacja Clementine" @@ -1102,9 +1162,9 @@ msgstr "Clementine może odtwarzać muzykę umieszczoną w serwisie Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine może odtwarzać muzykę, która znajduje się na Dysku Google" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine może odtwarzać muzykę z Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1117,20 +1177,13 @@ msgid "" "an account." msgstr "Clementine może zsynchronizować Twoją listę subskrypcji z innymi komputerami i aplikacjami do słuchania podcastów. Stwórz konto." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine nie może wczytać wizualizacji. Sprawdź czy Clementine został zainstalowany prawidłowo." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Nie udało się pobrać Twojego statusu subskrybenta z powodu problemów z połączeniem. Odtwarzane utwory zostaną zapamiętane i przesłane do last.fm w dogodnej chwili." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Przeglądarka obrazów Clementine" @@ -1142,11 +1195,11 @@ msgstr "Clementine nie znalazł wyników dla tego pliku" msgid "Clementine will find music in:" msgstr "Clementine wyszuka muzykę w następujących miejscach:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Kliknij, aby dodać jakąś muzykę" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1156,7 +1209,10 @@ msgstr "Kliknij tutaj i dodaj tę playlistę do ulubionych żeby ją zapisać i msgid "Click to toggle between remaining time and total time" msgstr "Przełącz pomiędzy czasem odtwarzania a czasem pozostałym" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1171,19 +1227,19 @@ msgstr "Zamknij" msgid "Close playlist" msgstr "Zamknij listę odtwarzania" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Zamknij wizualizację" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Zamknięcie tego okna anuluje pobieranie." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Zamknięcie tego okna spowoduje zatrzymanie wyszukiwania okładek albumu." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klubowa" @@ -1191,73 +1247,78 @@ msgstr "Klubowa" msgid "Colors" msgstr "Kolory" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Rozdzielona przecinkami lista klasa:poziom, gdzie poziom wynosi 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentarz" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Radio społeczności" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Automatycznie uzupełnij znaczniki" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Automatycznie uzupełnij znaczniki..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Kompozytor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Konfiguruj %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Skonfiguruj Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Konfiguruj Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Konfiguracja Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Konfiguracja skrótów klawiszowych" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Konfiguracja Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Skonfiguruj Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Konfiguruj Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Skonfiguruj globalne wyszukiwanie..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Konfiguruj bibliotekę..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Konfiguruj podcasty..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Konfiguruj..." @@ -1265,11 +1326,11 @@ msgstr "Konfiguruj..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Podłącz urządzenia Wii Remote używając akcji aktywuj/deaktywuj" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Podłącz urządzenie" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Połącz z Spotify" @@ -1279,12 +1340,16 @@ msgid "" "http://localhost:4040/" msgstr "Serwer odmówił połączenia, sprawdź URL serwera. Przykład: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Przekroczono limit czasu, sprawdź URL serwera. Przykład: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsola" @@ -1300,17 +1365,21 @@ msgstr "Przekonwertuj całą muzykę" msgid "Convert any music that the device can't play" msgstr "Przekonwertuj muzykę, której nie może odtworzyć urządzenie" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiuj do schowka" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Skopiuj na urządzenie..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Skopiuj do biblioteki..." @@ -1318,156 +1387,152 @@ msgstr "Skopiuj do biblioteki..." msgid "Copyright" msgstr "Prawa autorskie" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Błąd połączenia z Subsonic, sprawdź adres URL. Przykład: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nie można utworzyć elementu \"%1\" GStreamera - upewnij się, czy są zainstalowane wszystkie wymagane wtyczki GStreamera" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Nie można utworzyć listy odtwarzania" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nie można odnaleźć muxera dla %1. Sprawdź czy posiadasz zainstalowane prawidłowe wtyczki GStreamera" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Nie można odnaleźć enkodera dla %1. Sprawdź czy posiadasz zainstalowane prawidłowe wtyczki GStreamera" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Nie można wczytać radia last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Nie można otworzyć pliku %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Menedżer okładek" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Okładka z osadzonego obrazu" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Okładka wczytana automatycznie z %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Okładka ręcznie wyłączona" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Brak okładki" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Źródło okładki: %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Okładki z %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Utwórz nową listę odtwarzania w serwisie Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Płynne przejście przy automatycznej zmianie ścieżek" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Płynne przejście przy ręcznej zmianie ścieżek" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1475,7 +1540,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Własne" @@ -1487,54 +1552,50 @@ msgstr "Własny obrazek:" msgid "Custom message settings" msgstr "Opcje niestandardowych wiadomości" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Własne radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Własny..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Ścieżka DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Wykryto uszkodzenie bazy danych. Proszę, zapoznaj się z https://code.google.com/p/clementine-player/wiki/DatabaseCorruption, jeżeli potrzebujesz instrukcji jak naprawić ten błąd." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data utworzenia" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data modyfikacji" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dni" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Domyślny" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Zmniejsz głośność o 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Zmniejsz głośność o procentów" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Zmniejsz głośność" @@ -1542,6 +1603,11 @@ msgstr "Zmniejsz głośność" msgid "Default background image" msgstr "Domyślny obrazek tła" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Domyślne urządzenie na %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Domyślne" @@ -1550,30 +1616,30 @@ msgstr "Domyślne" msgid "Delay between visualizations" msgstr "Opóźnienie pomiędzy wizualizacjami" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Usuń" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Usuń listę odtwarzania w serwisie Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Usuń pobrane dane" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Usuń pliki" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Usuń z urządzenia..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Usuń z dysku..." @@ -1581,31 +1647,31 @@ msgstr "Usuń z dysku..." msgid "Delete played episodes" msgstr "Usuń odtworzone odcinki" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Usuń ustawienie korektora" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Usuń inteligentną listę odtwarzania" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Usuń oryginalne pliki" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Usuwanie plików" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Usuń ścieżki z kolejki odtwarzania" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Usuń ścieżkę z kolejki odtwarzania" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Miejsce docelowe" @@ -1614,7 +1680,7 @@ msgstr "Miejsce docelowe" msgid "Details..." msgstr "Szczegóły..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Urządzenie" @@ -1626,17 +1692,17 @@ msgstr "Ustawienia urządzenia" msgid "Device name" msgstr "Nazwa urządzenia" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Ustawienia urządzenia..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Urządzenia" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Okno" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1671,12 +1737,17 @@ msgstr "Wyłącz czas" msgid "Disable moodbar generation" msgstr "Wyłącz generowanie pasków humoru" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Wyłączone" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Wyłączone" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Płyta" @@ -1686,15 +1757,15 @@ msgid "Discontinuous transmission" msgstr "DTX" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opcje wyświetlania" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Pokaż menu ekranowe" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Przeskanuj całą bibliotekę od nowa" @@ -1706,27 +1777,27 @@ msgstr "Nie konwertuj" msgid "Do not overwrite" msgstr "Nie nadpisuj" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Nie powtarzaj" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Nie pokazuj w różni wykonawcy" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Nie losuj" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Nie zatrzymuj!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Wpłać darowiznę" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Kliknij podwójnie, by otworzyć" @@ -1734,12 +1805,13 @@ msgstr "Kliknij podwójnie, by otworzyć" msgid "Double clicking a song will..." msgstr "Podwójne kliknięcie utworu spowoduje..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Ściągnij epizody (%n)" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Pobierz katalog" @@ -1755,7 +1827,7 @@ msgstr "Pobierz członkostwo" msgid "Download new episodes automatically" msgstr "Pobierz nowe odcinki automatycznie" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Pobieranie w kolejce" @@ -1763,15 +1835,15 @@ msgstr "Pobieranie w kolejce" msgid "Download the Android app" msgstr "Pobierz aplikację na Androida" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Pobierz ten album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Pobierz ten album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Pobierz ten odcinek" @@ -1779,7 +1851,7 @@ msgstr "Pobierz ten odcinek" msgid "Download..." msgstr "Pobierz..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Pobieranie (%1%)..." @@ -1788,23 +1860,23 @@ msgstr "Pobieranie (%1%)..." msgid "Downloading Icecast directory" msgstr "Pobieranie katalogu Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Pobieranie katalogu Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Pobieranie katalogu Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Pobierz plugin Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Pobieranie metadanych" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Przeciągnij, aby zmienić pozycję" @@ -1814,30 +1886,30 @@ msgstr "Dropbox" #: ui/equalizer.cpp:119 msgid "Dubstep" -msgstr "" +msgstr "Dubstep" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Czas" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Tryb dynamiczny włączony" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynamiczny, losowy miks" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Edytuj inteligentną listę odtwarzania..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Edytuj tag \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Edytuj znacznik..." @@ -1849,16 +1921,16 @@ msgstr "Edytuj znaczniki" msgid "Edit track information" msgstr "Edytuj informacje o utworze" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Edytuj informacje o utworze..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Edytuj informacje o utworach..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Edytuj..." @@ -1866,6 +1938,10 @@ msgstr "Edytuj..." msgid "Enable Wii Remote support" msgstr "Włącz obsługę urządzeń Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Włącz korektor dźwięku" @@ -1880,7 +1956,7 @@ msgid "" "displayed in this order." msgstr "Odblokuj pozycje z listy aby wyszukiwać również w tych lokalizacjach. Uwaga: wyniki wyszukiwania będą prezentowane w poniższej kolejności." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Włącz/Wyłącz przesyłanie do Last.fm" @@ -1908,15 +1984,10 @@ msgstr "Podaj adres www, aby ściągać okładki dla albumów" msgid "Enter a filename for exported covers (no extension):" msgstr "Wpisz nazwę dla eksportowanych okładek (bez rozszerzenia):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Wpisz nową nazwę dla listy odtwarzania" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Wpisz wykonawcę lub znacznik, aby słuchać radia Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1930,7 +2001,7 @@ msgstr "Wpisz słowa kluczowe poniżej aby wyszukać podcasty w iTunes Store" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Wpisz słowa kluczowe poniżej aby wyszukać podcasty na gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Wpisz szukane wyrażenie" @@ -1939,11 +2010,11 @@ msgstr "Wpisz szukane wyrażenie" msgid "Enter the URL of an internet radio stream:" msgstr "Dodaj URL radia internetowego:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Wprowadź nazwę folderu" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Wpisz ten adres IP do aplikacji w celu połączenia z Clementine." @@ -1951,21 +2022,22 @@ msgstr "Wpisz ten adres IP do aplikacji w celu połączenia z Clementine." msgid "Entire collection" msgstr "Cała kolekcja" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Korektor dźwięku" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Rownoważny --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Rownoważny --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Błąd" @@ -1973,38 +2045,38 @@ msgstr "Błąd" msgid "Error connecting MTP device" msgstr "Błąd podczas łączenia z urządzeniem MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Błąd przy kopiowaniu utworów" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Błąd przy usuwaniu utworów" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Plugin Spotify - nieudane pobieranie" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Błąd wczytywania %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Problem podczas ładowania listy odtwarzania di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Błąd przetwarzania %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Błąd przy wczytywaniu audio CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Odtwarzane choć raz" @@ -2036,7 +2108,7 @@ msgstr "Co 6 godzin" msgid "Every hour" msgstr "Co godzinę" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Za wyjątkiem utworów z tego samego albumu lub arkusza CUE" @@ -2048,7 +2120,7 @@ msgstr "Istniejące okładki" msgid "Expand" msgstr "Rozwiń" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Wygasa %1" @@ -2069,36 +2141,36 @@ msgstr "Eksportuj pobrane okładki" msgid "Export embedded covers" msgstr "Eksportuj osadzone okładki" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Eksportowanie zakończone" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Wyodrębniono okładek: %1 / %2 (pominięto: %3)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2108,42 +2180,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Przyciszanie przed pauzą i łagodne podgłośnianie przy wznawianiu" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Przyciszaj ścieżkę, gdy jest zatrzymywana" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Przejście" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Czas przejścia" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Nie udało się pobrać katalogu" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Nie udało się pobrać podcastów" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Nie udało się załadować podcastów" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Nie udało się sparsować XML dla tego kanału RSS" @@ -2152,11 +2224,11 @@ msgstr "Nie udało się sparsować XML dla tego kanału RSS" msgid "Fast" msgstr "Szybki" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Ulubione" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Ulubione ścieżki" @@ -2172,19 +2244,19 @@ msgstr "Pobierz automatycznie" msgid "Fetch completed" msgstr "Pobieranie ukończone" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Pobieranie bibliotek Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Błąd podczas pobierania okładki" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Format pliku" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Rozszerzenie pliku" @@ -2192,19 +2264,23 @@ msgstr "Rozszerzenie pliku" msgid "File formats" msgstr "Formaty pliku" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nazwa pliku" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nazwa pliku (bez ścieżki)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Wzór nazwy pliku:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Wielkość pliku" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2214,7 +2290,7 @@ msgstr "Typ pliku" msgid "Filename" msgstr "Nazwa pliku" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Pliki" @@ -2222,15 +2298,19 @@ msgstr "Pliki" msgid "Files to transcode" msgstr "Pliki do transkodowania" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Znajdź ścieżki w swojej bibliotece, które odpowiadają podanym kryteriom." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Znajdź tego artystę" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Tworzenie sygnatury utworu" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Koniec" @@ -2238,7 +2318,7 @@ msgstr "Koniec" msgid "First level" msgstr "Pierwszy poziom" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2254,12 +2334,12 @@ msgstr "Ze względów licencyjnych Spotify obsługiwany jest przez oddzielny plu msgid "Force mono encoding" msgstr "Wymuś kodowanie mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Zapomnij o urządzeniu" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2274,7 +2354,7 @@ msgstr "Zapomnienie urządzenia spowoduje usunięcie go z listy i Clementine bę #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2302,31 +2382,23 @@ msgstr "Klatki na sekundę" msgid "Frames per buffer" msgstr "Klatek na bufor" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Przyjaciele" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Zamrożony" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Pełny bas" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Pełny bas + soprany" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Pełne soprany" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Silnik dźwiękowy GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Ogólne" @@ -2334,30 +2406,30 @@ msgstr "Ogólne" msgid "General settings" msgstr "Podstawowe ustawienia" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Gatunek" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "URL do udostępnienia tej playlisty z serwisu Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "URL do udostępnienia tej piosenki z serwisu Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Pobieranie popularnych piosenek z serwisu Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Pobieranie kanałów" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Otrzymywanie strumieni" @@ -2369,11 +2441,11 @@ msgstr "Nadaj nazwę:" msgid "Go" msgstr "Idź" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Przejdź do kolejnej karty z listą odtwarzania" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Przejdź do poprzedniej karty z listą odtwarzania" @@ -2381,7 +2453,7 @@ msgstr "Przejdź do poprzedniej karty z listą odtwarzania" msgid "Google Drive" msgstr "Dysk Google" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2391,7 +2463,7 @@ msgstr "Uzyskano %1 okładek z %2 (%3 nieudane)" msgid "Grey out non existent songs in my playlists" msgstr "Usunięte utwory zostaną wyszarzone w listach odtwarzania" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2399,15 +2471,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Błąd logowania do Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL playlisty w serwisie Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Radio Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL piosenki w serwisie Grooveshark" @@ -2415,44 +2487,44 @@ msgstr "URL piosenki w serwisie Grooveshark" msgid "Group Library by..." msgstr "Grupuj bibliotekę według..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupuj według" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Grupuj według Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Grupuj według Artysta" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Grupuj według Artysta/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Grupuj według Artysta/Rok - Album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Grupuj według Gatunek/Artysta" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Grupuj według Gatunek/Artysta/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupowanie" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "Strona HTML nie zawiera żadnego kanału RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Otrzymano kod statusu HTTP 3xx bez adresu URL, sprawdź konfigurację serwera" @@ -2461,7 +2533,7 @@ msgstr "Otrzymano kod statusu HTTP 3xx bez adresu URL, sprawdź konfigurację se msgid "HTTP proxy" msgstr "Pośrednik HTTP (proxy)" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Szczęśliwy" @@ -2477,25 +2549,25 @@ msgstr "Informacja o urządzeniu jest widoczna tylko, gdy urządzenie jest podł msgid "High" msgstr "Wysoki" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Dużo (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Wysoka (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Host nie został znaleziony, sprawdź URL serwera. Przykład: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Godzin" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnoropucha" @@ -2507,15 +2579,15 @@ msgstr "Nie posiadam konta w Magnatune" msgid "Icon" msgstr "Ikona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikony na górze" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identyfikowanie utworu" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2525,24 +2597,24 @@ msgstr "Jeśli będziesz kontynuował, urządzenie będzie działać wolniej i s msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Jeżeli znasz URL podcastu, wpisz go poniżej i naciśnij \"Idź\"." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignoruj \"The\" w nazwach artystów" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Obrazy (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Obrazy (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "W ciągu następnych %1 dni" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "W ciągu następnych %1 tygodni" @@ -2553,7 +2625,7 @@ msgid "" "time a song finishes." msgstr "W trybie dynamicznym nowe utwory będą wybierane i dodawane do playlisty za każdym razem gdy skończy się odtwarzanie bieżącego utworu." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Skrzynka odbiorcza" @@ -2565,135 +2637,135 @@ msgstr "Dołącz okładkę albumu" msgid "Include all songs" msgstr "Dołączaj wszystkie utwory" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Niekompatybilna wersja protokołu Subsonic REST. Klient musi zostać zaktualizowany." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Niekompatybilna wersja protokołu Subsonic REST. Serwer musi zostać zaktualizowany." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Niekompletna konfiguracja, upewnij się, że wszystkie pola zostały wypełnione." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Zwiększ głośność o 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Zwiększ głośność o procentów" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Zwiększ głośność" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indeksowanie %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informacja" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Opcje wejścia" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Wstaw..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Zainstalowano" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Sprawdzanie integralności" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Usługi internetowe" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Zły klucz API" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Błędny format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Błędna metoda" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Błędne parametry" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Nieprawidłowe określenie zasobów" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Błędna usługa" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Zły klucz sesji" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Zła nazwa użytkownika i/lub hasło" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Odwróć zaznaczenie" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Najczęściej odsłuchiwane ścieżki na Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Najlepsze ścieżki na Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Najlepsze ścieżki tego miesiąca na Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Najlepsze ścieżki tego tygodnia na Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Baza danych Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Przeskocz do aktualnie odtwarzanej ścieżki" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Przytrzymaj klawisze przez %1 sekundę..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Przytrzymaj klawisze przez %1 sekundy..." @@ -2702,11 +2774,12 @@ msgstr "Przytrzymaj klawisze przez %1 sekundy..." msgid "Keep running in the background when the window is closed" msgstr "Pozostań w tle po zamknięciu okna" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Zachowaj oryginalne pliki" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Kotki" @@ -2714,11 +2787,11 @@ msgstr "Kotki" msgid "Language" msgstr "Język" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Słuchawki" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Duża hala" @@ -2726,12 +2799,16 @@ msgstr "Duża hala" msgid "Large album cover" msgstr "Duża okładka albumu" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Duży pasek boczny" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Ostatnio odtwarzane" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Ostatnio odtwarzane" @@ -2739,45 +2816,7 @@ msgstr "Ostatnio odtwarzane" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Własne radio Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Biblioteka Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Radio miksów Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Radio sąsiadów na Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Stacja radiowa Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Podobni do %1 artyści z Last.fm" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Radio znacznika Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm jest przeciążone, prosimy spróbować za chwilę" @@ -2785,11 +2824,11 @@ msgstr "Last.fm jest przeciążone, prosimy spróbować za chwilę" msgid "Last.fm password" msgstr "Hasło Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm - ilość odtworzeń" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Tagi Last.fm" @@ -2797,28 +2836,24 @@ msgstr "Tagi Last.fm" msgid "Last.fm username" msgstr "Użytkownik Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Najmniej lubiane ścieżki" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Pozostaw puste, by użyć wartości domyślnej. Przykłady: \"/dev/dsp\", \"front\" itd." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Lewy" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Długość" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Biblioteka" @@ -2826,24 +2861,24 @@ msgstr "Biblioteka" msgid "Library advanced grouping" msgstr "Zaawansowanie grupowanie biblioteki" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Konieczność odświeżenia biblioteki" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Poszukiwania biblioteki" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limity" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Słuchaj piosenek w serwisie Grooveshark wybieranych na podstawie wcześniejszych odsłuchań" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Na żywo" @@ -2855,15 +2890,15 @@ msgstr "Wczytaj" msgid "Load cover from URL" msgstr "Wczytaj okładkę z adresu URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Wczytaj okładkę z adresu URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Wczytaj okładkę z dysku" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Wczytaj okładkę z dysku..." @@ -2871,84 +2906,89 @@ msgstr "Wczytaj okładkę z dysku..." msgid "Load playlist" msgstr "Wczytaj listę odtwarzania" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Wczytaj listę odtwarzania..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Wczytywanie radia Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Wczytywanie urządzenia MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Wczytywanie bazy danych iPoda" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Wczytywanie inteligentnej listy odtwarzania" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Wczytywanie utworów" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Wczytywanie strumienia" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Wczytywanie ścieżek" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Wczytywanie informacji o utworze" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Wczytywanie..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Wczytuje pliki/adresy URL, zastępując obecną listę odtwarzania" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Zaloguj się" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Logowanie nieudane" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Wyloguj" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Profil przewidywania długoterminowego (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Dodaj do ulubionych" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Mało (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Niska (256x256)" @@ -2960,12 +3000,17 @@ msgstr "Profil niskiej złożoności (LC)" msgid "Lyrics" msgstr "Teksty utworów" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Tekst z %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2977,15 +3022,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2993,7 +3038,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Pobierz z Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Pobieranie z Magnatune zakończone" @@ -3001,15 +3046,20 @@ msgstr "Pobieranie z Magnatune zakończone" msgid "Main profile (MAIN)" msgstr "Profil główny (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Zrób tak!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Zrób tak!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Uczyń playlistę dostępną offline" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Nieprawidłowa odpowiedź" @@ -3022,15 +3072,15 @@ msgstr "Ręczna konfiguracja pośrednika (proxy)" msgid "Manually" msgstr "Ręcznie" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Wytwórca" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Oznacz jako przesłuchany" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Oznacz jako nowy" @@ -3042,17 +3092,21 @@ msgstr "Porównaj wszystkie warunki (AND/I)" msgid "Match one or more search terms (OR)" msgstr "Porównaj jeden lub więcej warunków (OR/LUB)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Maksymalna ilość wyników wyszukiwania globalnego" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maksymalny bitrate" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Umiarkowanie (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Średnia (512x512)" @@ -3064,11 +3118,15 @@ msgstr "Typ członkostwa" msgid "Minimum bitrate" msgstr "Minimalny bitrate" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Brak ustawień projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3076,20 +3134,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Monitoruj zmiany biblioteki" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Odtwarzanie mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Miesięcy" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Humor" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Styl paska humoru" @@ -3097,15 +3155,19 @@ msgstr "Styl paska humoru" msgid "Moodbars" msgstr "Paski humoru" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Więcej" + +#: library/library.cpp:84 msgid "Most played" msgstr "Najczęściej odtwarzane" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Punkt montowania" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Punkty montowania" @@ -3114,7 +3176,7 @@ msgstr "Punkty montowania" msgid "Move down" msgstr "Przesuń w dół" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Przenieś do biblioteki..." @@ -3123,7 +3185,7 @@ msgstr "Przenieś do biblioteki..." msgid "Move up" msgstr "Przesuń w górę" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Muzyka" @@ -3131,56 +3193,32 @@ msgstr "Muzyka" msgid "Music Library" msgstr "Biblioteka muzyki" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Wycisz" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Moja biblioteka Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Mój radio mix Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Moja okolica Last.Fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Moje rekomendowane radio Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Moje radio miksów" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Moja Muzyka" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Moje sąsiedztwo" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Moje stacje radiowe" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Moje rekomendacje" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nazwa" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nazwa" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Nazwy opcji" @@ -3188,23 +3226,19 @@ msgstr "Nazwy opcji" msgid "Narrow band (NB)" msgstr "Wąskie pasmo (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Sąsiedzi" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Pośrednik sieciowy (proxy)" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Zdalne sterowanie przez sieć" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nigdy" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Jeszcze nie odtwarzane" @@ -3213,21 +3247,21 @@ msgstr "Jeszcze nie odtwarzane" msgid "Never start playing" msgstr "Nie odtwarzaj automatycznie" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nowy folder" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nowa lista odtwarzania" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nowa inteligentna lista odtwarzania..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nowe utwory" @@ -3235,24 +3269,24 @@ msgstr "Nowe utwory" msgid "New tracks will be added automatically." msgstr "Nowe ścieżki będą automatycznie dodane." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Najnowsze ścieżki" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Dalej" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Następny utwór" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "W następnym tygodniu" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Bez analizatora" @@ -3260,7 +3294,7 @@ msgstr "Bez analizatora" msgid "No background image" msgstr "Brak obrazka tła" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Brak okładek do wyodrębnienia" @@ -3268,7 +3302,7 @@ msgstr "Brak okładek do wyodrębnienia" msgid "No long blocks" msgstr "Bez długich bloków" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nie znaleziono wyników. Wyczyść pole wyszukiwania, by wyświetlić listę odtwarzania" @@ -3282,11 +3316,11 @@ msgstr "Bez krótkich bloków" msgid "None" msgstr "Brak" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Żaden z zaznaczonych utworów nie był odpowiedni do skopiowania na urządzenie" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Neutralny" @@ -3294,43 +3328,47 @@ msgstr "Neutralny" msgid "Normal block type" msgstr "Zwykły typ bloku" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Niedostępne podczas używania inteligentnej listy odtwarzania" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nie podłączono" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Za mało zawartości" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Za mało fanów" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Za mało użytkowników" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Za mało sąsiadów" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Nie zainstalowano" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Niezalogowany" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Nie zamontowano - kliknij dwukrotnie, aby zamontować" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Nic nie znaleziono" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Typ powiadomień" @@ -3343,36 +3381,41 @@ msgstr "Powiadomienia" msgid "Now Playing" msgstr "Teraz odtwarzane" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Podgląd OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3380,11 +3423,11 @@ msgid "" "192.168.x.x" msgstr "Zezwalaj tylko na połączenia z następujących zakresów IP:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Zezwalaj tylko na połączenia z sieci lokalnej" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Pokaż tylko pierwsze" @@ -3392,23 +3435,23 @@ msgstr "Pokaż tylko pierwsze" msgid "Opacity" msgstr "Krycie" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Otwórz %1 w przeglądarce" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Otwórz audio CD" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Otwórz plik OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Otwórz plik OPML..." @@ -3416,30 +3459,35 @@ msgstr "Otwórz plik OPML..." msgid "Open device" msgstr "Otwórz urządzenie" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Otwórz plik..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Otwórz w Dysku Google" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Otwórz w nowej liście odtwarzania" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Otwórz w nowej liście odtwarzania" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Otwórz w przeglądarce" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Otwórz..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operacja nieudana" @@ -3459,23 +3507,23 @@ msgstr "Opcje" msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Uporządkuj pliki" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Uporządkuj pliki..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Porządkowanie plików" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Aktualne znaczniki" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Inne opcje" @@ -3483,7 +3531,7 @@ msgstr "Inne opcje" msgid "Output" msgstr "Wyjście" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Urządzenie wyjściowe" @@ -3491,15 +3539,11 @@ msgstr "Urządzenie wyjściowe" msgid "Output options" msgstr "Opcje wyjścia" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Wtyczka wyjścia" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Nadpisz wszystkie" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Nadpisz istniejące pliki" @@ -3511,15 +3555,15 @@ msgstr "Nadpisz tylko mniejsze" msgid "Owner" msgstr "Właściciel" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Parsowanie katalogu Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Impreza" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3528,20 +3572,20 @@ msgstr "Impreza" msgid "Password" msgstr "Hasło" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pauza" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Wstrzymaj odtwarzanie" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Zatrzymane" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Wykonawca" @@ -3550,34 +3594,22 @@ msgstr "Wykonawca" msgid "Pixel" msgstr "Piksel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Zwykły pasek boczny" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Odtwarzaj" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Odtwarzaj Wykonawcę lub Znacznik" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Odtwarzaj radio wykonawcy..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Ilość odtworzeń" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Odtwarzaj własne radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Odtwarzaj, gdy zatrzymane; zatrzymaj, gdy odtwarzane" @@ -3586,45 +3618,42 @@ msgstr "Odtwarzaj, gdy zatrzymane; zatrzymaj, gdy odtwarzane" msgid "Play if there is nothing already playing" msgstr "Odtwarzaj jeśli nic nie jest aktualnie odtwarzane" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Odtwarzaj radio znacznika..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Odtwórz ścieżkę na liście odtwarzania" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Odtwarzaj/wstrzymaj" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Odtwarzanie" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opcje odtwarzacza" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lista odtwarzania" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Lista odtwarzania zakończona" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opcje listy odtwarzania" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Typ listy odtwarzania" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Listy odtwarzania" @@ -3636,23 +3665,23 @@ msgstr "Aby kontynuować pracę z Clementine należy zamknąć przeglądarkę" msgid "Plugin status:" msgstr "Stan wtyczki:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasty" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Popularne piosenki" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Popularne w tym miesiącu" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Popularne dziś" @@ -3661,22 +3690,23 @@ msgid "Popup duration" msgstr "Czas powiadomienia" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Wzmocnienie" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Ustawienia" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Ustawienia..." @@ -3712,7 +3742,7 @@ msgstr "Ustaw kombinację przycisków dla" msgid "Press a key" msgstr "Naciśnij klawisz" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Naciśnij kombinację klawiszy dla %1" @@ -3723,20 +3753,20 @@ msgstr "Opcje ładnego OSD (menu ekranowego)" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Podgląd" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Wstecz" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Poprzedni utwór" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Wypisz informacje o wersji" @@ -3744,21 +3774,25 @@ msgstr "Wypisz informacje o wersji" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Postęp" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Postęp" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Naciśnij przycisk na pilocie" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Posortuj ścieżki w przypadkowej kolejności" @@ -3766,36 +3800,46 @@ msgstr "Posortuj ścieżki w przypadkowej kolejności" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Jakość" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Odpytywanie urządzenia..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Menedżer kolejki odtwarzania" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Kolejkuj wybrane ścieżki" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Kolejkuj ścieżkę" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (równa głośność dla wszystkich ścieżek)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radia" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Deszcz" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Deszcz" @@ -3803,48 +3847,48 @@ msgstr "Deszcz" msgid "Random visualization" msgstr "Losowa wizualizacja" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Ocena utworu: 0" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Ocena utworu: 1" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Ocena utworu: 2" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Ocena utworu: 3" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Ocena utworu: 4" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Ocena utworu: 5" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Ocena" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Na pewno anulować?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Przekroczono limit przekierowań, sprawdź konfigurację serwera" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Odśwież" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Odśwież katalog" @@ -3852,19 +3896,15 @@ msgstr "Odśwież katalog" msgid "Refresh channels" msgstr "Odśwież kanały" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Odśwież listę znajomych" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Odśwież listę stacji" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Odśwież strumienie" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3876,8 +3916,8 @@ msgstr "Pamiętaj ruchy pilota" msgid "Remember from last time" msgstr "Zapamiętaj z ostatniego razu" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Usuń" @@ -3885,7 +3925,7 @@ msgstr "Usuń" msgid "Remove action" msgstr "Usuń akcję" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Usuń duplikaty z playlisty" @@ -3893,73 +3933,77 @@ msgstr "Usuń duplikaty z playlisty" msgid "Remove folder" msgstr "Usuń katalog" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Usuń z Mojej Muzyki" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Usuń z zakładek" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Usuń z ulubionych" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Usuń z listy odtwarzania" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Usuń listę odtwrzania" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Usuń listy odtwarzania" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Usuwanie utworów z Mojej Muzyki" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Usuwanie utworów z ulubionych" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Zmień nazwę listy odtwarzania \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Zmień nazwę playlisty w serwisie Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Zmień nazwę listy odtwarzania" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Zmień nazwę listy odtwarzania..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Ponumeruj utwory według tej kolejności..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Powtarzaj" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Powtarzaj album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Powtarzaj listę odtwarzania" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Powtarzaj utwór" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Zastąp aktualną listę odtwarzania" @@ -3968,15 +4012,15 @@ msgstr "Zastąp aktualną listę odtwarzania" msgid "Replace the playlist" msgstr "Zastąp listę odtwarzania" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Zamień spacje na podkreślniki" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Tryb Replay Gain" @@ -3984,24 +4028,24 @@ msgstr "Tryb Replay Gain" msgid "Repopulate" msgstr "Stwórz ponownie" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Wymagaj kodu uwierzytelniającego" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Resetuj" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Wyzeruj licznik odtworzeń" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Odtwarzaj od początku lub odtwórz poprzedni utwór jeżeli nie minęło 8 sekund aktualnego utworu" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Ogranicz do znaków ASCII" @@ -4009,15 +4053,15 @@ msgstr "Ogranicz do znaków ASCII" msgid "Resume playback on start" msgstr "Wznów odtwarzanie przy uruchamianiu programu" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Pobieranie Mojej Muzyki z Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Pobieranie ulubionych piosenek z serwisu Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Pobieranie list odtwarzania z serwisu Grooveshark" @@ -4031,17 +4075,17 @@ msgstr "Prawy" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Zgraj" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "Zgraj CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." -msgstr "" +msgstr "Zgraj audio CD" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4053,25 +4097,25 @@ msgstr "Uruchom" msgid "SOCKS proxy" msgstr "Pośrednik (proxy) SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Błąd powitania SSL, sprawdź konfigurację serwera. Włączenie SSLv3 poniżej może pomóc w obejściu tego problemu" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Bezpiecznie usuń urządzenie" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Bezpiecznie usuń urządzenie po kopiowaniu" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Próbkowanie" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Próbkowanie" @@ -4079,27 +4123,33 @@ msgstr "Próbkowanie" msgid "Save .mood files in your music library" msgstr "Zapisz pliki .mood w swojej bibliotece" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Zapisz okładkę albumu" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Zapisz okładkę na dysk..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Zapisz obraz" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Zapisz listę odtwarzania" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Zapisz listę odtwarzania" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Zapisz listę odtwarzania..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Zapisz ustawienia korektora" @@ -4115,11 +4165,11 @@ msgstr "Zapisz statystyki w tagach kiedy to możliwe" msgid "Save this stream in the Internet tab" msgstr "Zapisz ten strumień w zakładce Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Zapisywanie statystyk do plików" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Zapisywanie utworów" @@ -4131,7 +4181,7 @@ msgstr "Profil skalowalnego próbkowania (SSR)" msgid "Scale size" msgstr "Wielkość po przeskalowaniu" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Wynik" @@ -4139,10 +4189,14 @@ msgstr "Wynik" msgid "Scrobble tracks that I listen to" msgstr "Wysyłaj informacje o utworach, których słucham" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Szukaj" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Szukaj" @@ -4150,23 +4204,23 @@ msgstr "Szukaj" msgid "Search Icecast stations" msgstr "Przeszukaj stacje Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Przeszukaj Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Przeszukaj Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Przeszukaj Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Wyszukaj automatycznie" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Szukaj okładek..." @@ -4186,21 +4240,21 @@ msgstr "Przeszukaj iTunes" msgid "Search mode" msgstr "Tryb wyszukiwania" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opcje wyszukiwania" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Wyniki wyszukiwania" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Kryteria wyszukiwania" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Wyszukiwanie w serwisie Grooveshark" @@ -4208,27 +4262,27 @@ msgstr "Wyszukiwanie w serwisie Grooveshark" msgid "Second level" msgstr "Drugi poziom" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Przewiń wstecz" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Przewiń w przód" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Przesuń obecnie odtwarzaną ścieżkę o względną wartość" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Przesuń obecnie odtwarzaną ścieżkę do określonej pozycji" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Zaznacz wszystko" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Odznacz wszystkie" @@ -4236,7 +4290,7 @@ msgstr "Odznacz wszystkie" msgid "Select background color:" msgstr "Wybierz kolor tła:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Wybierz obrazek tła" @@ -4252,15 +4306,15 @@ msgstr "Wybierz kolor pierwszoplanowy:" msgid "Select visualizations" msgstr "Wybierz wizualizacje" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Wybierz wizualizacje..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "Wybierz..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Numer seryjny" @@ -4272,51 +4326,51 @@ msgstr "Adres URL serwera" msgid "Server details" msgstr "Szczegóły serwera" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Usługa niedostępna" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Ustaw %1 na \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Ustaw głośność na procent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Ustaw wartość dla wszystkich zaznaczonych utworów..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Ustawienia" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Skrót" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Skrót dla %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Skrót dla %1 już istnieje" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Pokaż" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Pokaż OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Pokaż animację podświetlenia aktualnie odtwarzanej ścieżki" @@ -4344,15 +4398,15 @@ msgstr "Pokaż popup z ikony w tacce systemowej" msgid "Show a pretty OSD" msgstr "Pokazuj ładne OSD (menu ekranowe)" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Pokaż ponad paskiem stanu" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Pokaż wszystkie utwory" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Pokaż wszystkie ścieżki" @@ -4364,32 +4418,36 @@ msgstr "Pokazuj okładki w bibliotece" msgid "Show dividers" msgstr "Pokaż separatory" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Pokaż w pełnej wielkości..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Pokaż grup w globalnych wynikach wyszukiwania" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Pokaż w menadżerze plików..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." -msgstr "" +msgstr "Pokaż w bibliotece..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Pokaż w różni wykonawcy" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Pokaż pasek humoru" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Pokaż tylko duplikaty" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Pokaż tylko nieoznaczone" @@ -4398,8 +4456,8 @@ msgid "Show search suggestions" msgstr "Pokazuj sugestie" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Pokaż przyciski \"Dodaj do ulubionych\" i \"Ignoruj\"" +msgid "Show the \"love\" button" +msgstr "Pokaż przycisk \"Dodaj do ulubionych\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4413,27 +4471,27 @@ msgstr "Pokaż ikonkę w tacce systemowej" msgid "Show which sources are enabled and disabled" msgstr "Wyświetl listę włączonych i wyłączonych źródeł" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Pokaż/Ukryj" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Losuj" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Losuj albumy" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Losuj wszystko" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Wymieszaj listę odtwarzania" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Losuj utwory w tym albumie" @@ -4449,7 +4507,7 @@ msgstr "Wyloguj" msgid "Signing in..." msgstr "Logowanie..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Podobni wykonawcy" @@ -4461,43 +4519,51 @@ msgstr "Wielkość" msgid "Size:" msgstr "Wielkość:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Przeskocz wstecz w liście odtwarzania" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Ilość przeskoczeń utworu" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Przeskocz w przód w liście odtwarzania" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Pomiń wybrane ścieżki" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Pomiń ścieżkę" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Mała okładka albumu" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Mały pasek boczny" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Inteligentna lista odtwarzania" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Inteligentne listy odtwarzania" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Miękki" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4505,11 +4571,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informacje o utworze" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "O utworze" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4529,15 +4595,23 @@ msgstr "Sortuj według gatunku (według popularności)" msgid "Sort by station name" msgstr "Sortuj według nazwy stacji" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Sortuj utwory na liście odtwarzania alfabetycznie" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Sortuj według" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sortowanie" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Źródło" @@ -4553,7 +4627,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Nieudane logowanie do Spotify" @@ -4561,7 +4635,7 @@ msgstr "Nieudane logowanie do Spotify" msgid "Spotify plugin" msgstr "Wtyczka Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Nie zainstalowano pluginu Spotify" @@ -4569,77 +4643,77 @@ msgstr "Nie zainstalowano pluginu Spotify" msgid "Standard" msgstr "Standardowy" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Oznaczone gwiazdką" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "Zacznij zgrywanie" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Rozpocznij aktualnie odtwarzaną listę" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Rozpocznij transkodowanie" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Zacznij wpisywać frazę w polu powyżej, aby rozpocząć wyszukiwanie" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Uruchamianie %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Uruchamianie..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stacje" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Zatrzymaj" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Zatrzymaj po" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Zatrzymaj po tym utworze" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Zatrzymaj odtwarzanie" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Zatrzymaj odtwarzanie po obecnej ścieżce" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" -msgstr "" +msgstr "Zatrzymaj po utworze: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Zatrzymano" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Strumień" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4649,7 +4723,7 @@ msgstr "Strumieniowanie z serwera Subsonic wymaga ważnej licencji serwera po za msgid "Streaming membership" msgstr "Strumieniowanie członkostwa" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Subskrybowane listy odtwarzania" @@ -4657,7 +4731,7 @@ msgstr "Subskrybowane listy odtwarzania" msgid "Subscribers" msgstr "Subskrybenci" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4665,12 +4739,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Suckes!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Pomyślnie zapisano %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Sugerowane znaczniki" @@ -4679,13 +4753,13 @@ msgstr "Sugerowane znaczniki" msgid "Summary" msgstr "Podsumowanie" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Bardzo dużo (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super wysoka (2048x2048)" @@ -4697,43 +4771,35 @@ msgstr "Obsługiwane formaty" msgid "Synchronize statistics to files now" msgstr "Zsynchronizuj statystyki z plikami" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synchronizowanie skrzynki Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synchronizowanie playlisty Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synchronizowanie utworów oznaczonych gwiazdką na Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Kolory systemowe" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Zakładki na górze" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Znacznik" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Uzupełnianie znaczników" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Radio znacznika" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Docelowy bitrate" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4741,11 +4807,11 @@ msgstr "Techno" msgid "Text options" msgstr "Opcje tekstu" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Podziękowania dla" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Nie można było uruchomić komendy \"%1\"." @@ -4754,17 +4820,12 @@ msgstr "Nie można było uruchomić komendy \"%1\"." msgid "The album cover of the currently playing song" msgstr "Okładka albumu odtwarzanego utworu" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Katalog %1 jest nieprawidłowy" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Lista odtwarzania \"%1\" była pusta lub nie można było jej wczytać." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Druga wartość musi być większa niż pierwsza!" @@ -4772,40 +4833,40 @@ msgstr "Druga wartość musi być większa niż pierwsza!" msgid "The site you requested does not exist!" msgstr "Wybrany serwis nie istnieje!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Wybrany adres nie jest obrazem!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Okres próbny dla serwera Subsonic wygasł. Zapłać, aby otrzymać klucz licencyjny. Szczegóły na subsonic.org." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Wersja do której właśnie zaktualizowano odtwarzacz Clementine wymaga odświeżenia całej biblioteki. Wynika to z wprowadzenia następujących zmian:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Na tym albumie są inne utwory" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Wystąpił problem z komunikacją z serwisem gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Wystąpił problem podczas pobierania metadanych z Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Wystąpił problem podczas parsowania odpowiedzi z iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4817,13 +4878,13 @@ msgid "" "deleted:" msgstr "Wystąpiły problemy podczas kasowania utworów. Nie można było skasować następujących plików:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Te pliki zostaną usunięte z urządzenia. Na pewno chcesz kontynuować?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4843,13 +4904,13 @@ msgstr "Te ustawienia są używane w \"Transkodowaniu muzyki\" oraz podczas konw msgid "Third level" msgstr "Trzeci poziom" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Ta operacja spowoduje utworzenie bazy, która będzie zawierać około 150 MB danych.\nCzy chcesz kontynuować?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Ten album nie jest dostępny w żądanym formacie" @@ -4863,11 +4924,11 @@ msgstr "To urządzenie musi być podłączone i otwarte zanim Clementine zobaczy msgid "This device supports the following file formats:" msgstr "To urządzenie obsługuje następujące formaty plików:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "To urządzenie nie będzie działać prawidłowo" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "To jest urządzenie MTP, ale skompilowałeś Clementine bez obsługi libmtp." @@ -4876,7 +4937,7 @@ msgstr "To jest urządzenie MTP, ale skompilowałeś Clementine bez obsługi lib msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "To jest urządzenie iPod, ale skompilowałeś Clementine bez obsługi libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4886,33 +4947,33 @@ msgstr "Pierwszy raz podłączyłeś to urządzenie. Clementine przeskanuje je t msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Opcja ta może zostać zmieniona w preferencjach \"Trybu\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Strumień wyłącznie dla płacących subskrybentów" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Ten typ urządzenia nie jest obsługiwany: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Nazwa" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Aby utworzyć radio w serwisie Grooveshark, musisz najpierw przesłuchać kilka piosenek" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Dzisiaj" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Przełącz ładne OSD" @@ -4920,27 +4981,27 @@ msgstr "Przełącz ładne OSD" msgid "Toggle fullscreen" msgstr "Przełącz tryb pełnoekranowy" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Przełącz stan kolejki" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Włącz scroblowanie" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Przełącz wyświetlanie ładnego menu ekranowego" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Jutro" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Zbyt wiele przekierowań" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Top utworów" @@ -4948,21 +5009,25 @@ msgstr "Top utworów" msgid "Total albums:" msgstr "W sumie albumów:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Całkowita ilość przesłanych w bajtach" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Całkowita ilość zapytań sieciowych" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Utwór" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Ścieżki" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transkoduj muzykę" @@ -4974,7 +5039,7 @@ msgstr "Dziennik transkodera" msgid "Transcoding" msgstr "Konwersja" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Transkodowanie %1 plików za pomocą %2 wątków" @@ -4983,11 +5048,11 @@ msgstr "Transkodowanie %1 plików za pomocą %2 wątków" msgid "Transcoding options" msgstr "Opcje konwersji" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4995,72 +5060,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Wyłącz" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Hasło Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Nazwa użytkownika Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Bardzo szerokie pasmo (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Nie udało się pobrać %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "nieznany" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Nieznany content-type" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Nieznany błąd" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Usuń okładkę" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Nie pomijaj wybranych ścieżek" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Nie pomijaj ścieżki" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Anuluj subskrypcję" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Nadchodzące koncerty" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Zaktualizuj" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Uaktualnij listę odtwarzania w serwisie Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Uaktualnij wszystkie podcasty" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Odśwież zmienione katalogi biblioteki" @@ -5068,7 +5133,7 @@ msgstr "Odśwież zmienione katalogi biblioteki" msgid "Update the library when Clementine starts" msgstr "Odświeżaj bibliotekę przy uruchomieniu Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Uaktualnij ten podcast" @@ -5076,21 +5141,21 @@ msgstr "Uaktualnij ten podcast" msgid "Updating" msgstr "Aktualizacja" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Odświeżanie %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Odświeżanie %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Aktualizowanie biblioteki" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Użycie" @@ -5098,11 +5163,11 @@ msgstr "Użycie" msgid "Use Album Artist tag when available" msgstr "Używaj tagu \"Wykonawca albumu\" jeżeli jest dostępny" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Używaj skrótów klawiaturowych Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Używaj metadanych Replay Gain, jeśli są dostępne" @@ -5122,7 +5187,7 @@ msgstr "Użyj własnego zestawu kolorów" msgid "Use a custom message for notifications" msgstr "Użyj niestandardowej wiadomości dla powiadomień" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Użyj zdalnego sterowania" @@ -5162,20 +5227,20 @@ msgstr "Użyj systemowych ustawień proxy" msgid "Use volume normalisation" msgstr "Używaj wyrównywania głośności" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Użyto" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Użytkownik %1 nie posiada konta Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interfejs użytkownika" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5197,12 +5262,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Zmienny bitrate" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Różni wykonawcy" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Wersja %1" @@ -5215,7 +5280,7 @@ msgstr "Pokaż" msgid "Visualization mode" msgstr "Tryb wizualizacji" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Wizualizacje" @@ -5223,11 +5288,15 @@ msgstr "Wizualizacje" msgid "Visualizations Settings" msgstr "Ustawienia wizualizacji" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Wykrywanie aktywności głosowej" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Głośność %1%" @@ -5245,11 +5314,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Ostrzeż mnie kiedy zamknę zakładkę listy odtwarzania" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5257,7 +5326,7 @@ msgstr "Wav" msgid "Website" msgstr "Strona internetowa" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Tygodni" @@ -5283,32 +5352,32 @@ msgstr "Czemu by nie spróbować..." msgid "Wide band (WB)" msgstr "Szerokie pasmo (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: aktywowany" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: połączony" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: krytyczny poziom baterii (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: dezaktywowany" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: rozłączony" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: niski poziom baterii (%2%)" @@ -5329,7 +5398,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5337,25 +5406,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Bez okładek:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Czy chciałbyś przenieść także inny piosenki z tego albumu do Różnych wykonawców?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Czy chcesz teraz rozpocząć odświeżanie biblioteki?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Zapisz wszystkie statystyki w plikach muzycznych" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Zły login lub hasło." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5367,11 +5436,11 @@ msgstr "Rok" msgid "Year - Album" msgstr "Rok - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Lat" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Wczoraj" @@ -5379,13 +5448,13 @@ msgstr "Wczoraj" msgid "You are about to download the following albums" msgstr "Zaraz pobierzesz następujące albumy" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Czy na pewno chcesz usunąć listy odtwarzania (%1) z ulubionych??" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5395,12 +5464,12 @@ msgstr "Zamierzasz usunąć listę odtwarzania nienależącą do list ulubionych msgid "You are not signed in." msgstr "Nie jesteś zalogowany/a." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Jesteś zalogowany/a jako %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Jesteś zalogowany/a" @@ -5408,13 +5477,13 @@ msgstr "Jesteś zalogowany/a" msgid "You can change the way the songs in the library are organised." msgstr "Możesz zmienić sposób w jaki prezentowane są utwory w bibliotece." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Możesz słuchać muzyki za darmo bez posiadania konta, lecz uzytkownicy premium mogą słuchać lepszej jakości muzykę bez reklam." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5424,13 +5493,6 @@ msgstr "Możesz słuchać utworów z Magnatune za darmo nie posiadając konta. O msgid "You can listen to background streams at the same time as other music." msgstr "Oprócz muzyki możesz jednocześnie słuchać strumieni tła." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Dane o słuchanych utworach można wysyłać za darmo, ale tylko płacący subskrybenci mogą odtwarzać radio Last.fm za pomocą Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Kontrolera Wii Remote można używać jako zdalnego sterowania w Clementine. Zobacz stronę wiki Clementine w celu uzyskania dalszych informacji.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Nie masz konta Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Nie masz konta Spotify Premium." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Nie posiadasz aktywnej subskrypcji" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Zostałeś wylogowany ze Spotify, proszę wpisać ponownie hasło w ustawieniach." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Zostałeś wylogowany ze Spotify, proszę wpisać ponownie hasło." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Kochasz tę ścieżkę" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5475,17 +5551,11 @@ msgstr "Musisz włączyć Preferencje systemowe i zaznaczyć \"\n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/clementine/language/pt/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +20,7 @@ msgstr "" "Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -45,9 +45,9 @@ msgstr " dias" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -60,11 +60,16 @@ msgstr " pt" msgid " seconds" msgstr " segundos" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " faixas" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 faixas)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 álbuns" @@ -74,12 +79,12 @@ msgstr "%1 álbuns" msgid "%1 days" msgstr "%1 dias" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dias atrás" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 em %2" @@ -89,48 +94,48 @@ msgstr "%1 em %2" msgid "%1 playlists (%2)" msgstr "%1 listas de reprodução (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "selecionada(s) %1 de" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 faixa" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 faixas" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 faixas encontradas" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 faixas encontradas (a exibir %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 faixas" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 transferidas" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Módulo Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 outros ouvintes" @@ -144,18 +149,21 @@ msgstr "%L1 reproduções" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n falha(s)" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n concluída(s)" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n por converter" @@ -167,24 +175,24 @@ msgstr "&Alinhar texto" msgid "&Center" msgstr "&Centro" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personalizado" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Aj&uda" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Ocultar %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Ocultar..." @@ -192,23 +200,23 @@ msgstr "&Ocultar..." msgid "&Left" msgstr "&Esquerda" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Música" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nenhum" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Lista de re&produção" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Sair" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Modo de &repetição" @@ -216,23 +224,23 @@ msgstr "Modo de &repetição" msgid "&Right" msgstr "Di&reita" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Modo de de&sordenação" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Ajustar coluna&s à janela" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Ferramen&tas" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(diferente entre as várias faixas)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... e a todos os colaboradores do Amarok" @@ -252,14 +260,10 @@ msgstr "0 px." msgid "1 day" msgstr "1 dia" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 faixa" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -269,7 +273,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 faixas aleatórias" @@ -277,12 +281,6 @@ msgstr "50 faixas aleatórias" msgid "Upgrade to Premium now" msgstr "Atualizar para a versão Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Criar uma conta ou redefinir a senha" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -293,6 +291,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Se inativa, o Clementine tenta gravar a avaliação e as estatísticas numa base de dados distinta e não modificará os seus ficheiros.

Se ativa, a avaliação e as estatísticas serão gravadas na base de dados e nos detalhes dos ficheiros.

Tenha em conta que esta operação pode não funcionar para todos os formatos de ficheiro e não existe um formato universal, podendo estes dados não estarem disponíveis nos outros reprodutores de música.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Prefixe uma palavra com o nome do campo para limitar a procura a esse campo. Por exemplo artista:Bode procura na coleção por todos os artistas que tenham a palavra Bode.

Campos disponíveis: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -301,38 +310,38 @@ msgid "" "activated.

" msgstr "

Esta ação irá gravar as estatísticas e avaliações das faixas nos detalhes dos ficheiros, para todas as faixas da coleção.

Não será necessário se a opção "Gravar avaliações e estatísticas nos detalhes dos ficheiros" estiver sempre ativa.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Os \"tokens\" iniciam com %, por exemplo: %artist %album %title

\n\n

Ao colocar parênteses entre as secções de texto que contêm \"tokens\", essa secção será ocultada se o \"token\" estiver vazio

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Requer uma conta Grooveshark Anywhere" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Requer uma conta Spotify Premium" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "A aplicação só pode estabelecer a ligação se introduzir o código correto" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Uma lista de reprodução inteligente é aquela que advém da sua coleção. Existem diversos tipos de listas inteligentes, que oferecem diferentes métodos de seleção de faixas." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "A faixa será incluída na lista de reprodução se satisfizer estas condições." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -352,36 +361,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Abortar" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Sobre o %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Sobre o Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Sobre o Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detalhes da conta" @@ -393,11 +401,15 @@ msgstr "Detalhes da conta (Premium)" msgid "Action" msgstr "Ação" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Ativar/desativar Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Emissão de atividades" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Adicionar podcast" @@ -413,39 +425,39 @@ msgstr "Adicionar uma nova linha, se suportado pelo serviço de notificações" msgid "Add action" msgstr "Adicionar uma ação" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Adicionar outra emissão..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Adicionar diretório..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Adicionar ficheiro" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Adicionar ficheiro ao conversor" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Adicionar ficheiro(s) ao conversor" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Adicionar ficheiro..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Adicionar ficheiros a converter" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Adicionar pasta" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Adicionar pasta..." @@ -457,11 +469,11 @@ msgstr "Adicionar nova pasta..." msgid "Add podcast" msgstr "Adicionar podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Adicionar podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Adicionar termo de procura" @@ -525,6 +537,10 @@ msgstr "Adicionar reproduções ignoradas" msgid "Add song title tag" msgstr "Adicionar título" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Adicionar faixa à cache" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Adicionar número da faixa" @@ -533,22 +549,34 @@ msgstr "Adicionar número da faixa" msgid "Add song year tag" msgstr "Adicionar ano" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Adicionar faixas a \"Minha música\" ao clicar no botão \"Gosto\"" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Adicionar emissão..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Adicionar aos favoritos Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Adicionar às listas de reprodução Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Adicionar a \"Minha música\"" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Adicionar noutra lista de reprodução" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Adicionar aos marcadores" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Adicionar à lista de reprodução" @@ -557,6 +585,10 @@ msgstr "Adicionar à lista de reprodução" msgid "Add to the queue" msgstr "Adicionar à fila de reprodução" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Adicionar utilizador/grupo aos marcadores" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Adicionar uma ação wiimotedev" @@ -586,15 +618,15 @@ msgstr "Adicionadas hoje" msgid "Added within three months" msgstr "Adicionadas no espaço de três meses" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Adicionar faixa às Minhas músicas" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Adicionar faixa aos favoritos" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Agrupamento avançado..." @@ -602,12 +634,12 @@ msgstr "Agrupamento avançado..." msgid "After " msgstr "Após " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Depois de copiar..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -615,11 +647,11 @@ msgstr "Depois de copiar..." msgid "Album" msgstr "Álbum" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volume ideal para todas as faixas)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -629,35 +661,36 @@ msgstr "Artista do álbum" msgid "Album cover" msgstr "Capa do álbum" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informações do álbum em jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Álbuns com capas" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Álbuns sem capas" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Todos os ficheiros (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Todos os álbuns" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Todos os artistas" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Todos os ficheiros (*)" @@ -666,19 +699,19 @@ msgstr "Todos os ficheiros (*)" msgid "All playlists (%1)" msgstr "Todas as listas de reprodução (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Todos os tradutores" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Todas as faixas" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Permitir que um cliente transfira faixas deste computador." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Permitir transferências" @@ -703,30 +736,30 @@ msgstr "Mostrar sempre a janela principal" msgid "Always start playing" msgstr "Iniciar sempre a reprodução" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Necessita de um suplemento para utilizar o Spotify no Clementine. Pretende transferir e instalar o suplemento?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Ocorreu um erro ao carregar a base de dados iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Ocorreu um erro ao gravar os detalhes em \"%1\"" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Ocorreu um erro desconhecido." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "E:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Chateado" @@ -735,13 +768,13 @@ msgstr "Chateado" msgid "Appearance" msgstr "Aspeto" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Juntar ficheiros/URLs à lista de reprodução" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Juntar à lista de reprodução atual" @@ -749,52 +782,47 @@ msgstr "Juntar à lista de reprodução atual" msgid "Append to the playlist" msgstr "Juntar à lista de reprodução" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Aplicar compressão para impedir a distorção" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Tem a certeza de que quer eliminar \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Tem a certeza de que quer eliminar esta lista de reprodução?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Tem a certeza de que quer reiniciar as estatísticas desta faixa?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Tem a certeza que pretende gravar as estatísticas e avaliações para todas as faixas da sua coleção?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Info do artista" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Rádio do artista" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "\"Tags\" do artista" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Iniciais do artista" @@ -802,9 +830,13 @@ msgstr "Iniciais do artista" msgid "Audio format" msgstr "Formato áudio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Dispositivo áudio" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Falha ao autenticar" @@ -812,7 +844,7 @@ msgstr "Falha ao autenticar" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autores" @@ -828,7 +860,7 @@ msgstr "Atualização automática" msgid "Automatically open single categories in the library tree" msgstr "Na coleção em árvore, abrir automaticamente as categorias individuais" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Disponível" @@ -836,15 +868,15 @@ msgstr "Disponível" msgid "Average bitrate" msgstr "Taxa de dados média" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Tamanho médio" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -865,7 +897,7 @@ msgstr "Imagem de fundo" msgid "Background opacity" msgstr "Opacidade do fundo" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "A copiar base de dados" @@ -873,11 +905,7 @@ msgstr "A copiar base de dados" msgid "Balance" msgstr "Equilíbrio" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Banir" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Barras" @@ -897,18 +925,17 @@ msgstr "Comportamento" msgid "Best" msgstr "Melhor" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografia de %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Taxa de dados" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -916,7 +943,12 @@ msgstr "Taxa de dados" msgid "Bitrate" msgstr "Taxa de dados" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Taxa de dados" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blocos" @@ -932,7 +964,7 @@ msgstr "Valor" msgid "Body" msgstr "Conteúdo" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom" @@ -946,11 +978,11 @@ msgstr "Box" msgid "Browse..." msgstr "Procurar..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Duração da memória" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "A processar..." @@ -962,43 +994,66 @@ msgstr "Mas estas fontes estão inativas:" msgid "Buttons" msgstr "Botões" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Por regra, o Grooveshark ordena as faixas por data de adição" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Suporte a ficheiros CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Caminha da cache:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Colocação em cache" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "A colocar %1 em cache" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Cancelar" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Requer Captcha\nInicie sessão no Vk.com com o navegador web para corrigir este problema" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Alterar capa do álbum" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Alterar tamanho da letra..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Alterar modo de repetição" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Alterar atalho..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Alterar modo de desordenação" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Alterar idioma" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1008,15 +1063,19 @@ msgstr "A alteração a esta preferência de reprodução produzirá efeito nas msgid "Check for new episodes" msgstr "Procurar novos episódios" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Procurar atualizações..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Escolher diretório de cache Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Escolha o nome da lista de reprodução inteligente" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Escolher automaticamente" @@ -1032,11 +1091,11 @@ msgstr "Escolha o tipo de letra..." msgid "Choose from the list" msgstr "Escolher da lista" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Escolha o tipo de organização da lista e o número de faixas a incluir" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Escolha o diretório para guardar os podcasts" @@ -1045,7 +1104,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Escolha os sítios web em que o Clementine deve procurar as letras das faixas" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Clássica" @@ -1053,17 +1112,17 @@ msgstr "Clássica" msgid "Cleaning up" msgstr "Eliminação" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Limpar" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Limpar lista de reprodução" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1076,8 +1135,8 @@ msgstr "Erro do Clementine" msgid "Clementine Orange" msgstr "Laranja" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Visualização Clementine" @@ -1099,9 +1158,9 @@ msgstr "O Clementine pode reproduzir as faixas existentes no Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "O Clementine pode reproduzir as faixas existentes no Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "O Clementine pode reproduzir as faixas existentes no Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "O Clementine consegue reproduzir as músicas enviadas para o OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1114,20 +1173,13 @@ msgid "" "an account." msgstr "O Clementine pode sincronizar a lista de subscrições existentes noutro computador ou aplicações. Criar uma conta" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "O Clementine não conseguiu carregar as visualizações projectM. Verifique se o Clementine foi bem instalado." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "O Clementine não conseguiu obter o estado da sua subscrição, pois existem problemas na ligação. As faixas reproduzidas serão colocadas em cache e posteriormente enviadas para a last.fm" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Visualizador de imagens do Clementine" @@ -1139,11 +1191,11 @@ msgstr "O Clementine não conseguiu encontrar resultados para este ficheiro" msgid "Clementine will find music in:" msgstr "O Clementine vai procurar as faixas em:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Clique aqui para adicionar músicas" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1153,7 +1205,10 @@ msgstr "Clique aqui para adicionar esta lista de reprodução como favorita para msgid "Click to toggle between remaining time and total time" msgstr "Clique para alternar entre tempo restante e tempo total" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1168,19 +1223,19 @@ msgstr "Fechar" msgid "Close playlist" msgstr "Fechar lista de reprodução" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Fechar visualização" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Se fechar esta janela, irá cancelar a transferência." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Se fechar esta janela, irá parar a procura das capas de álbum." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Clube" @@ -1188,73 +1243,78 @@ msgstr "Clube" msgid "Colors" msgstr "Cores" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista de classes separadas por vírgula: nível entre 0 e 3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentário" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Rádio da comunidade" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Preencher detalhes automaticamente" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Preencher detalhes automaticamente..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compositor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Configurar %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Configurar Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configurar Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Configurar Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configurar atalhos" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configurar Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Configurar Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Configurar Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Configurar procura global..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configurar coleção..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Configurar podcasts..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configurar..." @@ -1262,11 +1322,11 @@ msgstr "Configurar..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Ligar a Wii Remotes utilizando a ação ativar/desativar" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Ligar dispositivo" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Ligar ao Spotify" @@ -1276,12 +1336,16 @@ msgid "" "http://localhost:4040/" msgstr "Ligação recusada pelo servidor. Verifique o URL. Por exemplo: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Ligação expirada. Verifique o URL. Por exemplo: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Erro na ligação ou o som foi desativado pelo proprietário" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Consola" @@ -1297,17 +1361,21 @@ msgstr "Converter todas as faixas" msgid "Convert any music that the device can't play" msgstr "Converter quaisquer faixas não reconhecidas pelo dispositivo" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Copiar URL para a área de transferência" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Copiar para o dispositivo..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copiar para a coleção..." @@ -1315,156 +1383,152 @@ msgstr "Copiar para a coleção..." msgid "Copyright" msgstr "Direitos de autor" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Não foi possível ligar ao Subsonic. Verifique o URL. Por exemplo: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Incapaz de criar o elemento GStreamer \"%1\" - certifique-se que tem instalados todos os suplementos necessários" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Não foi possível criar a lista de reprodução" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Incapaz de encontrar o recurso para %1 - certifique-se que tem instalados todos os suplementos necessários" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Incapaz de encontrar o codificador para %1 - certifique-se que tem instalados todos os suplementos necessários" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Não foi possível abrir a rádio last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Não foi possível abrir o ficheiro %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Gestor de capas" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Capa de álbum a partir de uma imagem" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Capa de álbum existente em %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Capa de álbum desativada manualmente" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Capa de álbum não definida" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Capa de álbum em %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Capas de álbum em %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Criar lista de reprodução Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Sobreposição ao mudar automaticamente de faixas" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Sobreposição ao mudar manualmente de faixas" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Seta para baixo" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1472,7 +1536,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Seta para cima" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personalizar" @@ -1484,54 +1548,50 @@ msgstr "Imagem personalizada:" msgid "Custom message settings" msgstr "Definições personalizadas" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Rádio personalizada" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personalizar..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Caminho DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dança" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Foram detetados erros na base de dados. Por favor consulte https://code.google.com/p/clementine-player/wiki/DatabaseCorruption para obter as informações sobre a recuperação das bases de dados" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data de criação" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de modificação" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dias" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Pa&drão" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Diminuir volume em 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Diminuir volume em por cento" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Diminuir volume" @@ -1539,6 +1599,11 @@ msgstr "Diminuir volume" msgid "Default background image" msgstr "Imagem de fundo padrão" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Dispositivo pré-definido em %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Padrões" @@ -1547,30 +1612,30 @@ msgstr "Padrões" msgid "Delay between visualizations" msgstr "Atraso entre visualizações" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Eliminar" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Eliminar lista de reprodução Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Eliminar dados transferidos" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Eliminar ficheiros" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Eliminar do dispositivo..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Eliminar do disco..." @@ -1578,31 +1643,31 @@ msgstr "Eliminar do disco..." msgid "Delete played episodes" msgstr "Eliminar episódios reproduzidos" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Eliminar pré-ajustes" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Eliminar lista de reprodução inteligente" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Eliminar ficheiros originais" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "A eliminar ficheiros" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Retirar da fila as faixas selecionadas" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Retirar esta faixa da fila" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destino" @@ -1611,7 +1676,7 @@ msgstr "Destino" msgid "Details..." msgstr "Detalhes..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Dispositivo" @@ -1623,15 +1688,15 @@ msgstr "Propriedades do dispositivo" msgid "Device name" msgstr "Nome do dispositivo" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Propriedades do dispositivo..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Dispositivos" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Caixa de diálogo" @@ -1668,12 +1733,17 @@ msgstr "Desativar duração" msgid "Disable moodbar generation" msgstr "Desativar barra de estado de espírito" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Inativa" +msgstr "Inativo" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Inativo" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1683,15 +1753,15 @@ msgid "Discontinuous transmission" msgstr "Transmissão intermitente" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opções de exibição" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Mostrar notificação" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Reanalisar coleção" @@ -1703,27 +1773,27 @@ msgstr "Não converter quaisquer faixas" msgid "Do not overwrite" msgstr "Não substituir" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Não repetir" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Não mostrar em vários artistas" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Não desordenar" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Não parar!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Donativos" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Duplo clique para abrir" @@ -1731,12 +1801,13 @@ msgstr "Duplo clique para abrir" msgid "Double clicking a song will..." msgstr "Ao clicar duas vezes numa faixa..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Transferir %n episódios" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Diretório de transferências" @@ -1752,7 +1823,7 @@ msgstr "Transferência" msgid "Download new episodes automatically" msgstr "Transferir novos episódios automaticamente" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Transferência colocada na fila" @@ -1760,15 +1831,15 @@ msgstr "Transferência colocada na fila" msgid "Download the Android app" msgstr "Transferir a aplicação Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Transferir este álbum" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Transferir este álbum..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Transferir este episódio" @@ -1776,7 +1847,7 @@ msgstr "Transferir este episódio" msgid "Download..." msgstr "Transferir..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "A transferir (%1%)..." @@ -1785,23 +1856,23 @@ msgstr "A transferir (%1%)..." msgid "Downloading Icecast directory" msgstr "A transferir diretório Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "A transferir catálogo Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "A transferir catálogo Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "A transferir suplemento Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "A transferir dados" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Arraste para posicionar" @@ -1821,20 +1892,20 @@ msgstr "Duração" msgid "Dynamic mode is on" msgstr "O modo dinâmico está ativo" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Combinação aleatória dinâmica" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Editar lista de reprodução inteligente..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Editar \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Editar \"tag\"..." @@ -1846,16 +1917,16 @@ msgstr "Editar detalhes" msgid "Edit track information" msgstr "Editar informações da faixa" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Editar informações da faixa..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Editar informações das faixas..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Editar..." @@ -1863,6 +1934,10 @@ msgstr "Editar..." msgid "Enable Wii Remote support" msgstr "Ativar suporte a Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Ativar caching automático" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Ativar equalizador" @@ -1877,7 +1952,7 @@ msgid "" "displayed in this order." msgstr "Ative as fontes que quer utilizar na procura. Os resultados serão exibidos por esta ordem." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Ativar/desativar envio last.fm" @@ -1905,15 +1980,10 @@ msgstr "Introduza o URL para transferir a capa do álbum:" msgid "Enter a filename for exported covers (no extension):" msgstr "Introduza o nome das capas exportadas (sem extensão):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Introduza o nome para esta lista de reprodução" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Introduza um artista ou \"tag\" para ouvir a rádio last.fm" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1927,7 +1997,7 @@ msgstr "Introduza os termos de pesquisa para procurar os podcasts no iTunes" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Introduza os termos de procura para os podcasts do gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Introduza aqui os termos da procura" @@ -1936,11 +2006,11 @@ msgstr "Introduza aqui os termos da procura" msgid "Enter the URL of an internet radio stream:" msgstr "Introduza o URL da rádio na Internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Introduza o nome da pasta" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Introduza este IP na aplicação para se ligar ao Clementine" @@ -1948,21 +2018,22 @@ msgstr "Introduza este IP na aplicação para se ligar ao Clementine" msgid "Entire collection" msgstr "Toda a coleção" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizador" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Equivalente a --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Equivalente a --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Erro" @@ -1970,38 +2041,38 @@ msgstr "Erro" msgid "Error connecting MTP device" msgstr "Erro ao ligar ao dispositivo MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Erro ao copiar faixas" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Erro ao eliminar faixas" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Erro ao transferir o suplemento Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Erro ao carregar %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Erro ao carregar a lista de reprodução di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Erro ao processar %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Erro ao carregar o CD áudio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Reproduzida alguma vez" @@ -2033,7 +2104,7 @@ msgstr "A cada 6 horas" msgid "Every hour" msgstr "A cada hora" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Exceto entre faixas do mesmo álbum ou ficheiros CUE" @@ -2045,7 +2116,7 @@ msgstr "Capas existentes " msgid "Expand" msgstr "Expandir" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Termina em %1" @@ -2066,36 +2137,36 @@ msgstr "Exportar capas transferidas" msgid "Export embedded covers" msgstr "Exportar capas incorporadas" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Exportação terminada" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exportada(s) %1 de %2 capa(s) (%3 ignoradas)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2105,42 +2176,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Redução/aumento gradual de volume ao pausar/retomar" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Redução gradual ao parar uma faixa" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Desvanecimento" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Duração" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Falha ao ler a unidade de CD" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Erro ao obter o diretório" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Erro ao obter os podcasts" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Erro ao carregar o podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Erro ao processar o XML desta fonte RSS" @@ -2149,11 +2220,11 @@ msgstr "Erro ao processar o XML desta fonte RSS" msgid "Fast" msgstr "Rápida" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoritos" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Faixas preferidas" @@ -2169,11 +2240,11 @@ msgstr "Obter automaticamente" msgid "Fetch completed" msgstr "Obtencão concluída" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "A obter coleção Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Erro ao obter a capa do álbum" @@ -2181,7 +2252,7 @@ msgstr "Erro ao obter a capa do álbum" msgid "File Format" msgstr "Formato de ficheiro" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Extensão do ficheiro" @@ -2189,19 +2260,23 @@ msgstr "Extensão do ficheiro" msgid "File formats" msgstr "Formatos de ficheiro" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nome do ficheiro" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nome do ficheiro (sem caminho)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Padrão do nome de ficheiro:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tamanho do ficheiro" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2211,7 +2286,7 @@ msgstr "Tipo de ficheiro" msgid "Filename" msgstr "Nome do ficheiro" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Ficheiros" @@ -2219,15 +2294,19 @@ msgstr "Ficheiros" msgid "Files to transcode" msgstr "Ficheiros a converter" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Procurar faixas da coleção que coincidem com os critérios indicados" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Procurar este artista" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "A procurar identificadores" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Terminar" @@ -2235,7 +2314,7 @@ msgstr "Terminar" msgid "First level" msgstr "Primeiro nível" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2251,12 +2330,12 @@ msgstr "Devido à sua licença, o suplemento do Spotify é disponibilizado separ msgid "Force mono encoding" msgstr "Forçar codificação mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Ignorar dispositivo" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2271,7 +2350,7 @@ msgstr "Se optar por ignorar um dispositivo, este será removido da lista e na p #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2299,31 +2378,23 @@ msgstr "Taxa de imagens" msgid "Frames per buffer" msgstr "Imagens por memória" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Amigos" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Estático" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Graves" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Graves e agudos" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Agudos" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Sistema de áudio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Geral" @@ -2331,30 +2402,30 @@ msgstr "Geral" msgid "General settings" msgstr "Definições gerais" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Género" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Obter URL para partilhar esta lista de reprodução Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Obter URL para partilhar esta faixa Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "A obter músicas populares do Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "A obter canais" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "A obter emissões" @@ -2366,11 +2437,11 @@ msgstr "Nome:" msgid "Go" msgstr "Procurar" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Ir para o separador seguinte" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Ir para o separador anterior" @@ -2378,7 +2449,7 @@ msgstr "Ir para o separador anterior" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2388,7 +2459,7 @@ msgstr "Foram obtidas %1 de %2 capas (não foram obtidas %3)" msgid "Grey out non existent songs in my playlists" msgstr "Nas listas de reprodução, escurecer as faixas inexistentes" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2396,15 +2467,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Erro de autenticação Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL da lista de reprodução Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Rádio Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL da faixa Grooveshark" @@ -2412,44 +2483,44 @@ msgstr "URL da faixa Grooveshark" msgid "Group Library by..." msgstr "Agrupar coleção por..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Agrupar por" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Agrupar por álbum" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Agrupar por artista" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Agrupar por artista/álbum" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Agrupar por artista/ano - álbum" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Agrupar por género/álbum" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Agrupar por género/artista/álbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Grupo" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "A página HTML não possui fontes RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Recebido o código de estado HTTP 3xx sem URL. Verifique a configuração do servidor." @@ -2458,7 +2529,7 @@ msgstr "Recebido o código de estado HTTP 3xx sem URL. Verifique a configuraçã msgid "HTTP proxy" msgstr "Proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Contente" @@ -2474,25 +2545,25 @@ msgstr "As informações só estão disponíveis se o dispositivo estiver ligado msgid "High" msgstr "Alta" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Alta (%1 ips)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Alta (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Servidor não encontrado. Verifique o URL. Por exemplo: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Horas" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2504,15 +2575,15 @@ msgstr "Não tenho uma conta Magnatune" msgid "Icon" msgstr "Ícone" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ícones no topo" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "A identificar faixa" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2522,24 +2593,24 @@ msgstr "Se continuar, o dispositivo irá funcionar lentamente e as faixas copiad msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Se souber o URL do podcast, introduza-o em baixo e prima Procurar" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorar \"The\" no nome do artista" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Imagens (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Imagens (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "No espaço de %1 dia(s)" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "No espaço de %1 semana(s)" @@ -2550,7 +2621,7 @@ msgid "" "time a song finishes." msgstr "No modo dinâmico, as faixas são escolhidas e adicionadas à lista de reprodução assim que uma faixa termine" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Caixa de entrada" @@ -2562,36 +2633,36 @@ msgstr "Incluir capa do álbum na notificação" msgid "Include all songs" msgstr "Incluir todas as faixas" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Versão incompatível do protocolo Subsonic REST. Tem que atualizar a aplicação." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Versão incompatível do protocolo Subsonic REST. Tem que atualizar o servidor." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Configuração incompleta. Verifique se todos os campos estão preenchidos." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Aumentar volume em 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Aumentar volume em por cento" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Aumentar volume" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "A indexar %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informações" @@ -2599,55 +2670,55 @@ msgstr "Informações" msgid "Input options" msgstr "Opções de entrada" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Inserir..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Instalado" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Verificação de integridade" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Serviços na Internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Chave API inválida" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Formato inválido" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Método inválido" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parâmetros inválidos" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Recurso especificado inválido" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Serviço inválido" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Chave de sessão inválida" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Senha e/ou utilizador inválido" @@ -2655,42 +2726,42 @@ msgstr "Senha e/ou utilizador inválido" msgid "Invert Selection" msgstr "Inverter seleção" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "As faixas mais ouvidas no Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "As melhores faixas do Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "As melhores faixas do mês no Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "As melhores faixas da semana no Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Base de dados Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Ir para a faixa em reprodução" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Manter botões por %1 segundo..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Manter botões por %1 segundos..." @@ -2699,11 +2770,12 @@ msgstr "Manter botões por %1 segundos..." msgid "Keep running in the background when the window is closed" msgstr "Executar em segundo plano ao fechar a janela principal" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Manter ficheiros originais" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Gatinhos" @@ -2711,11 +2783,11 @@ msgstr "Gatinhos" msgid "Language" msgstr "Idioma" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Portátil/Auscultadores" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Sala ampla" @@ -2723,12 +2795,16 @@ msgstr "Sala ampla" msgid "Large album cover" msgstr "Capa de álbum grande" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Barra lateral grande" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Última reprodução" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Última reprodução" @@ -2736,45 +2812,7 @@ msgstr "Última reprodução" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Rádio personalizada last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Coleção last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Rádio combinada last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Rádio do vizinho last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Estação de rádio last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Artistas semelhantes a %1 na last.fm" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "\"Tag\" da rádio last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Neste momento, a last.fm está ocupada. Tente mais tarde" @@ -2782,11 +2820,11 @@ msgstr "Neste momento, a last.fm está ocupada. Tente mais tarde" msgid "Last.fm password" msgstr "Senha last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Número de reproduções last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "\"Tags\" last.fm" @@ -2794,28 +2832,24 @@ msgstr "\"Tags\" last.fm" msgid "Last.fm username" msgstr "Utilizador last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Faixas favoritas (mas pouco)" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Deixar em branco para as predefinições. Exemplos: \"/dev/dsp\", \"front\", etc..." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duração" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Coleção" @@ -2823,24 +2857,24 @@ msgstr "Coleção" msgid "Library advanced grouping" msgstr "Agrupamento avançado da coleção" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Aviso de análise da coleção" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Procurar na coleção" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Restrições" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Ouvir músicas Grooveshark com base nas reproduzidas anteriormente" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Ao vivo" @@ -2852,15 +2886,15 @@ msgstr "Carregar" msgid "Load cover from URL" msgstr "Carregar capa de álbum do URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Carregar capa de álbum do URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Carregar capa de álbum no disco" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Carregar capa de álbum no disco..." @@ -2868,84 +2902,89 @@ msgstr "Carregar capa de álbum no disco..." msgid "Load playlist" msgstr "Carregar lista de reprodução" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Carregar lista de reprodução..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "A carregar rádio last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "A carregar dispositivo MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "A carregar base de dados iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "A carregar lista de reprodução inteligente" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "A carregar faixas" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "A carregar emissão" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "A carregar faixas" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "A carregar informação das faixas" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "A carregar..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Carregar ficheiros/URLs, substituindo a lista de reprodução atual" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Iniciar sessão" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Falha ao iniciar sessão" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Sair" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Perfil para predição (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Gosto" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Baixa (%1 ips)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Baixa (256x256)" @@ -2957,12 +2996,17 @@ msgstr "Perfil de baixa complexidade (LC)" msgid "Lyrics" msgstr "Letras musicais" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Letras musicais de %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2974,15 +3018,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2990,7 +3034,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Transferência Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Transferência Magnatune concluída" @@ -2998,15 +3042,20 @@ msgstr "Transferência Magnatune concluída" msgid "Main profile (MAIN)" msgstr "Perfil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Make it so!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Make it so!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Criar lista de reprodução local" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Resposta inválida" @@ -3019,15 +3068,15 @@ msgstr "Configuração manual de proxy" msgid "Manually" msgstr "Manualmente" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabricante" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Marcar como reproduzido" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Marcar como novo" @@ -3039,17 +3088,21 @@ msgstr "Coincidente com cada termo de procura (E)" msgid "Match one or more search terms (OR)" msgstr "Coincidente com um ou mais termos de procura (OU)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Resultados máximos na procura global" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Taxa de dados máxima" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Média (%1 ips)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Média (512x512)" @@ -3061,11 +3114,15 @@ msgstr "Tipo de adesão" msgid "Minimum bitrate" msgstr "Taxa de dados mínima" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Valor mínimo de memória" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Pré-ajustes projectM em falta" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modelo" @@ -3073,20 +3130,20 @@ msgstr "Modelo" msgid "Monitor the library for changes" msgstr "Monitorizar alterações na coleção" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Reprodução mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Meses" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Estado de espírito" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Estilo da barra" @@ -3094,15 +3151,19 @@ msgstr "Estilo da barra" msgid "Moodbars" msgstr "Barras de estado de espírito" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Mais" + +#: library/library.cpp:84 msgid "Most played" msgstr "Mais reproduzidas" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Ponto de montagem" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Pontos de montagem" @@ -3111,7 +3172,7 @@ msgstr "Pontos de montagem" msgid "Move down" msgstr "Mover para baixo" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Mover para a coleção..." @@ -3120,7 +3181,7 @@ msgstr "Mover para a coleção..." msgid "Move up" msgstr "Mover para cima" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Música" @@ -3128,56 +3189,32 @@ msgstr "Música" msgid "Music Library" msgstr "Coleção de músicas" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Sem áudio" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "A minha coleção last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "A minha combinação de rádios last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "A minha vizinhança last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "As rádios last.fm recomendadas" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "A minha rádio combinada" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Minhas músicas" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "A minha vizinhança" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "A minha estação de rádio" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "As minhas recomendações" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nome" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nome" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opções de nomeação" @@ -3185,23 +3222,19 @@ msgstr "Opções de nomeação" msgid "Narrow band (NB)" msgstr "Banda estreita (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Vizinhos" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proxy de rede" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Rede remota" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nunca" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nunca reproduzidas" @@ -3210,21 +3243,21 @@ msgstr "Nunca reproduzidas" msgid "Never start playing" msgstr "Nunca iniciar a reprodução" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nova pasta" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nova lista de reprodução" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nova lista de reprodução inteligente..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Novas faixas" @@ -3232,24 +3265,24 @@ msgstr "Novas faixas" msgid "New tracks will be added automatically." msgstr "As novas faixas serão adicionadas automaticamente" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Faixas recentes" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Seguinte" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Faixa seguinte" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Na próxima semana" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Sem analisador" @@ -3257,7 +3290,7 @@ msgstr "Sem analisador" msgid "No background image" msgstr "Sem imagem de fundo" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Nenhuma capa para exportar" @@ -3265,7 +3298,7 @@ msgstr "Nenhuma capa para exportar" msgid "No long blocks" msgstr "Sem blocos longos" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Sem ocorrências. Limpe a caixa de procura para mostrar toda a lista de reprodução" @@ -3279,11 +3312,11 @@ msgstr "Sem blocos curtos" msgid "None" msgstr "Nenhum" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nenhuma das faixas selecionadas eram adequadas à cópia para o dispositivo" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3291,43 +3324,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Bloco normal" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Não disponível, se estiver a utilizar uma lista de reprodução dinâmica" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Não ligado" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Conteúdo insuficiente" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Fãs insuficientes" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Membros insuficientes" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Vizinhos insuficientes" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Não instalado" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Sessão não iniciada" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Não montado. Clique duas vezes para montar" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Nada encontrado" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Tipo de notificação" @@ -3340,36 +3377,41 @@ msgstr "Notificações" msgid "Now Playing" msgstr "A reproduzir" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Antevisão da notificação" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Desligado" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Ligado" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3377,11 +3419,11 @@ msgid "" "192.168.x.x" msgstr "Apenas aceitar ligações de clientes nestes intervalos de IP:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Apenas permitir ligações da rede local" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Mostrar apenas as primeiras" @@ -3389,23 +3431,23 @@ msgstr "Mostrar apenas as primeiras" msgid "Opacity" msgstr "Opacidade" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Abrir %1 no navegador" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "&Abrir CD áudio..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Abrir um ficheiro OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Abrir um ficheiro OPML..." @@ -3413,30 +3455,35 @@ msgstr "Abrir um ficheiro OPML..." msgid "Open device" msgstr "Abrir dispositivo..." -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Abrir ficheiro..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Abrir no Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Abrir numa nova lista de reprodução" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Abrir em nova lista de reprodução" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Abrir no navegador web" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Abrir..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Falha na operação" @@ -3456,23 +3503,23 @@ msgstr "Opções..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizar ficheiros" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizar ficheiros..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organizando ficheiros" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Detalhes originais" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Outras opções" @@ -3480,7 +3527,7 @@ msgstr "Outras opções" msgid "Output" msgstr "Destino" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Dispositivo" @@ -3488,15 +3535,11 @@ msgstr "Dispositivo" msgid "Output options" msgstr "Opções de saída" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Sistema de som" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Substituir tudo" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Substituir ficheiros existentes" @@ -3508,15 +3551,15 @@ msgstr "Substituir apenas as pequenas" msgid "Owner" msgstr "Proprietário" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Analisando o catálogo Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Festa" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3525,20 +3568,20 @@ msgstr "Festa" msgid "Password" msgstr "Senha" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pausa" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pausar a reprodução" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Em pausa" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Intérprete" @@ -3547,34 +3590,22 @@ msgstr "Intérprete" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Barra lateral simples" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Reproduzir" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Reproduzir artista ou \"tag\"" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Reproduzir rádio do artista..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Número de reproduções" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Reproduzir rádio personalizada..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Reproduzir se parado, pausa se em reprodução" @@ -3583,45 +3614,42 @@ msgstr "Reproduzir se parado, pausa se em reprodução" msgid "Play if there is nothing already playing" msgstr "Reproduzir, se não existir qualquer faixa em reprodução" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Reproduzir \"tag\" da rádio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Reproduzir a .ª faixa na lista de reprodução" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Reproduzir/Pausa" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Reprodução" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opções do reprodutor" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lista de reprodução" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Lista de reprodução terminada" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opções da lista de reprodução" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tipo de lista de reprodução" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Listas de reprodução" @@ -3633,23 +3661,23 @@ msgstr "Feche o navegador e volte ao Clementine" msgid "Plugin status:" msgstr "Estado:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Músicas populares" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Músicas populares do mês" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Músicas populares de hoje" @@ -3658,22 +3686,23 @@ msgid "Popup duration" msgstr "Duração do alerta" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Porta" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Amplificador" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Preferências" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Preferências..." @@ -3709,7 +3738,7 @@ msgstr "Prima a combinação a utilizar para" msgid "Press a key" msgstr "Prima uma tecla" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Prima a combinação a utilizar para %1..." @@ -3720,20 +3749,20 @@ msgstr "Opções da notificação" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Antevisão" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Faixa anterior" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Imprimir informações da versão" @@ -3741,21 +3770,25 @@ msgstr "Imprimir informações da versão" msgid "Profile" msgstr "Perfil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Evolução" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Evolução" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psicadélico" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Carregue no botão do Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Colocar faixas aleatoriamente" @@ -3763,7 +3796,12 @@ msgstr "Colocar faixas aleatoriamente" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Qualidade" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Qualidade" @@ -3771,28 +3809,33 @@ msgstr "Qualidade" msgid "Querying device..." msgstr "A consultar dispositivo..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Gestor da fila" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Colocar em fila as faixas selecionadas" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Colocar esta faixa na fila" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Faixa (volume igual para todas as faixas)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Rádios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Chuva" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Chuva" @@ -3800,48 +3843,48 @@ msgstr "Chuva" msgid "Random visualization" msgstr "Visualização aleatória" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Atribuir 0 estrelas à faixa atual" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Atribuir 1 estrela à faixa atual" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Atribuir 2 estrelas à faixa atual" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Atribuir 3 estrelas à faixa atual" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Atribuir 4 estrelas à faixa atual" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Atribuir 5 estrelas à faixa atual" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Avaliação" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Realmente cancelar?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Limite de redirecionamento excedido. Verifique a configuração do servidor." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Atualizar" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Atualizar catálogo" @@ -3849,19 +3892,15 @@ msgstr "Atualizar catálogo" msgid "Refresh channels" msgstr "Atualizar canais" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Atualizar lista de amigos" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Atualizar lista de estações" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Atualizar emissões" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3873,8 +3912,8 @@ msgstr "Lembrar cadência do Wii remote" msgid "Remember from last time" msgstr "Lembrar última opção" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Remover" @@ -3882,7 +3921,7 @@ msgstr "Remover" msgid "Remove action" msgstr "Remover ação" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Remover duplicados da lista de reprodução" @@ -3890,73 +3929,77 @@ msgstr "Remover duplicados da lista de reprodução" msgid "Remove folder" msgstr "Remover pasta" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Remover das Minhas músicas" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Remover dos marcadores" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Remover dos favoritos" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Remover da lista de reprodução" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Remover lista de reprodução" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Remover listas de reprodução" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "A remover faixas das Minhas músicas" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "A remover faixas dos favoritos" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Mudar nome da lista de reprodução \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Mudar nome da lista de reprodução Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Mudar nome da lista de reprodução" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Mudar nome da lista de reprodução..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Renumerar faixas por esta ordem..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repetir" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repetir álbum" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repetir lista de reprodução" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repetir faixa" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Substituir lista de reprodução atual" @@ -3965,15 +4008,15 @@ msgstr "Substituir lista de reprodução atual" msgid "Replace the playlist" msgstr "Substituir lista de reprodução" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Substituir espaços por \"underscores\"" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Consistência (Replay Gain)" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Modo Replay Gain" @@ -3981,24 +4024,24 @@ msgstr "Modo Replay Gain" msgid "Repopulate" msgstr "Preencher novamente" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Requer código de autenticação" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Reiniciar" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Reiniciar número de contagens" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Reiniciar faixa ou reproduzir a anterior se o tempo de reprodução for inferior a 8 segundos" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Restringir a caracteres ASCII" @@ -4006,15 +4049,15 @@ msgstr "Restringir a caracteres ASCII" msgid "Resume playback on start" msgstr "Retomar reprodução ao iniciar" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "A obter faixas das Minhas músicas Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "A obter músicas favoritas do Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "A obter listas de reprodução do Grooveshark" @@ -4034,11 +4077,11 @@ msgstr "Extrair" msgid "Rip CD" msgstr "Extrair CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Extrair CD áudio..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4050,25 +4093,25 @@ msgstr "Executar" msgid "SOCKS proxy" msgstr "Proxy SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Erro de negociação SSL. Verifique a configuração do servidor. A opção SSLv3 pode resolver alguns problemas." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Remover dispositivo em segurança" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Depois de copiar, remover dispositivo em segurança" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Frequência" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Frequência" @@ -4076,27 +4119,33 @@ msgstr "Frequência" msgid "Save .mood files in your music library" msgstr "Gravar ficheiros .mood na coleção de faixas" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Gravar capa de álbum" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Gravar capa de álbum no disco..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Gravar imagem" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Gravar lista de reprodução" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Gravar lista de reprodução" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Gravar lista de reprodução..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Gravar pré-ajustes" @@ -4112,11 +4161,11 @@ msgstr "Se possível, gravar estatísticas nos detalhes do ficheiro" msgid "Save this stream in the Internet tab" msgstr "Gravar esta emissão no separador Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Gravar estatísticas nos ficheiros" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "A gravar faixas" @@ -4128,7 +4177,7 @@ msgstr "Perfil de taxa de amostragem ajustável (SSR)" msgid "Scale size" msgstr "Escala" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pontuação" @@ -4136,10 +4185,14 @@ msgstr "Pontuação" msgid "Scrobble tracks that I listen to" msgstr "Enviar as faixas que eu oiço" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Procurar" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Procurar" @@ -4147,23 +4200,23 @@ msgstr "Procurar" msgid "Search Icecast stations" msgstr "Procurar estações Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Procurar no Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Procurar no Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Procurar no Subsconic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Procurar automaticamente" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Procurar capas de álbuns..." @@ -4183,21 +4236,21 @@ msgstr "Procurar no iTunes" msgid "Search mode" msgstr "Modo de procura" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opções de procura" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Resultados da procura" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Termos de procura" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "A procurar no Grooveshark" @@ -4205,27 +4258,27 @@ msgstr "A procurar no Grooveshark" msgid "Second level" msgstr "Segundo nível" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Recuar" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Avançar" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Avançar um tempo relativo na faixa atual" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Avançar para uma posição absoluta na faixa atual" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Todas" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Nenhuma" @@ -4233,7 +4286,7 @@ msgstr "Nenhuma" msgid "Select background color:" msgstr "Escolha a cor de fundo:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Escolha a imagem de fundo" @@ -4249,7 +4302,7 @@ msgstr "Escolha a cor do texto:" msgid "Select visualizations" msgstr "Escolha as visualizações" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Escolha as visualizações..." @@ -4257,7 +4310,7 @@ msgstr "Escolha as visualizações..." msgid "Select..." msgstr "Selecionar..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Número de série" @@ -4269,51 +4322,51 @@ msgstr "URL do servidor" msgid "Server details" msgstr "Detalhes do servidor" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Serviço desligado" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Definir %1 para \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Ajustar volume para por cento" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Utilizar valor para todas as faixas selecionadas..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Definições" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Atalho" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Atalho para %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Já existe um atalho para %1" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Mostrar" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Mostrar notificação" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Mostrar animação na faixa reproduzida" @@ -4341,15 +4394,15 @@ msgstr "Mostrar alerta na área de notificação" msgid "Show a pretty OSD" msgstr "Mostrar notificação personalizada" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Mostrar acima da barra de estado" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Mostrar todas as faixas" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Mostrar todas as faixas" @@ -4361,32 +4414,36 @@ msgstr "Mostrar capa de álbum na coleção" msgid "Show dividers" msgstr "Mostrar separadores" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Mostrar em ecrã completo..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Mostrar grupos nos resultados da procura global" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Mostrar no gestor de ficheiros..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Mostrar na coleção..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Mostrar em vários artistas" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Mostrar barra de estado de espírito" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Mostrar apenas as repetidas" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Mostrar apenas faixas sem detalhes" @@ -4395,12 +4452,12 @@ msgid "Show search suggestions" msgstr "Mostrar sugestões" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Mostrar os botões \"Gosto\" e \"Banir\"" +msgid "Show the \"love\" button" +msgstr "Mostrar o botão \"Gosto\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" -msgstr "Mostrar, na janela principal, o botão para \"Enviar\"" +msgstr "Mostrar o botão \"Enviar\"" #: ../bin/src/ui_behavioursettingspage.h:192 msgid "Show tray icon" @@ -4410,27 +4467,27 @@ msgstr "Mostrar ícone na área de notificação" msgid "Show which sources are enabled and disabled" msgstr "Mostrar estado das fontes (ativas ou inativas)" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Mostrar/Ocultar" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Desordenar" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Desordenar álbuns" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Desordenar tudo" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Desordenar lista de reprodução" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Desordenar faixas deste álbum" @@ -4446,7 +4503,7 @@ msgstr "Terminar sessão" msgid "Signing in..." msgstr "A iniciar sessão..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Artistas semelhantes" @@ -4458,43 +4515,51 @@ msgstr "Tamanho" msgid "Size:" msgstr "Tamanho:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Recuar na lista de reprodução" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Reproduções ignoradas" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Avançar na lista de reprodução" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Ignorar faixas selecionadas" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Ignorar faixa" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Capa de álbum pequena" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Barra lateral pequena" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Lista de reprodução inteligente" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Listas de reprodução inteligentes" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Suave" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Rock suave" @@ -4502,11 +4567,11 @@ msgstr "Rock suave" msgid "Song Information" msgstr "Informações da faixa" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info da faixa" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonograma" @@ -4526,15 +4591,23 @@ msgstr "Organizar por género (popularidade)" msgid "Sort by station name" msgstr "Organizar por nome de estação" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Ordenar faixas alfabeticamente" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Organizar faixas por" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Organização" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Fonte" @@ -4550,7 +4623,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Erro de autenticação Spotify" @@ -4558,7 +4631,7 @@ msgstr "Erro de autenticação Spotify" msgid "Spotify plugin" msgstr "Suplemento Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Suplemento Spotify não instalado" @@ -4566,77 +4639,77 @@ msgstr "Suplemento Spotify não instalado" msgid "Standard" msgstr "Padrão" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Com estrela" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Iniciar extração" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Iniciar lista de reprodução atual" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Iniciar conversão" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Escreva algo na caixa de procura para preencher a lista de resultados" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "A iniciar %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "A iniciar..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Estações" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Parar" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Parar após" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Parar após esta faixa" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Parar reprodução" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Parar reprodução após a faixa atual" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Parar reprodução após a faixa: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Parado" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Emissão" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4646,7 +4719,7 @@ msgstr "Para receber as emissões do servidor Subsonic, tem que adquirir uma lic msgid "Streaming membership" msgstr "Emissão" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Listas de reprodução subscritas" @@ -4654,7 +4727,7 @@ msgstr "Listas de reprodução subscritas" msgid "Subscribers" msgstr "Subscritores" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4662,12 +4735,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Bem sucedido!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Escrito com sucesso %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Detalhes sugeridos" @@ -4676,13 +4749,13 @@ msgstr "Detalhes sugeridos" msgid "Summary" msgstr "Resumo" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Ultra (%1 ips)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Muito alta (2048x2048)" @@ -4694,43 +4767,35 @@ msgstr "Formatos suportados" msgid "Synchronize statistics to files now" msgstr "Sincronizar estatísticas dos ficheiros" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "A sincronizar caixa de entrada Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "A sincronizar lista de reprodução Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "A sincronizar faixas Spotify com estrela" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Cores do sistema" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Separadores no topo" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "\"Tag\"" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Obtenção de detalhes" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Marcar rádio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Taxa de dados" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4738,11 +4803,11 @@ msgstr "Techno" msgid "Text options" msgstr "Opções de texto" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Obrigado a" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "O comando \"%1\" não pôde ser iniciado" @@ -4751,17 +4816,12 @@ msgstr "O comando \"%1\" não pôde ser iniciado" msgid "The album cover of the currently playing song" msgstr "A capa de álbum da faixa em reprodução" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "O diretório %1 é inválido" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "A lista de reprodução \"%1\" está vazia ou não pôde ser carregada" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "O segundo valor tem que ser superior ao primeiro" @@ -4769,40 +4829,40 @@ msgstr "O segundo valor tem que ser superior ao primeiro" msgid "The site you requested does not exist!" msgstr "O sítio web indicado não existe" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "O sítio web indicado não é uma imagem" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "O período de testes do Subsonic terminou. Efetue um donativo para obter uma licença. Consulte subsonic.org para mais detalhes." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Em virtude das funcionalidades abaixo indicadas, o Clementine precisa de efetuar uma nova análise à sua coleção:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Existem outras faixas neste álbum" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Ocorreu um erro ao comunicar com gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Ocorreu um problema ao obter os metadados Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Ocorreu um erro ao processar a resposta da loja iTunes" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4814,13 +4874,13 @@ msgid "" "deleted:" msgstr "Ocorreram alguns problemas ao eliminar as faixas. Os seguintes ficheiros não foram eliminados:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Estes ficheiros vão ser eliminados do dispositivo. Tem a certeza que quer continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4840,13 +4900,13 @@ msgstr "Estas definições são utilizadas na \"Conversão de ficheiros\", no mo msgid "Third level" msgstr "Terceiro nível" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Com esta opção, vai criar uma base de dados que pode atingir os 150 MB.\nTem a certeza que quer continuar?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Este álbum não está disponível no formato solicitado" @@ -4860,11 +4920,11 @@ msgstr "Este dispositivo deve estar ligado e aberto, para que o Clementine verif msgid "This device supports the following file formats:" msgstr "Este dispositivo tem suporte aos seguintes formatos:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "O dispositivo não vai funcionar corretamente" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Este é um dispositivo MTP, mas o Clementine foi compilado sem suporte a libmtp" @@ -4873,7 +4933,7 @@ msgstr "Este é um dispositivo MTP, mas o Clementine foi compilado sem suporte a msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Este é um dispositivo iPod, mas o Clementine foi compilado sem suporte a libgpod" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4883,33 +4943,33 @@ msgstr "Esta é a primeira vez que liga este dispositivo. O Clementine vai anali msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Esta opção pode ser alterada nas preferências" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Só os assinantes têm acesso a esta emissão" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Este tipo de dispositivo não é suportado: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Título" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Para reproduzir uma rádio Grooveshark, deve reproduzir algumas músicas primeiro" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Hoje" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Alternar notificação" @@ -4917,27 +4977,27 @@ msgstr "Alternar notificação" msgid "Toggle fullscreen" msgstr "Trocar para ecrã completo" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Trocar estado da fila" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Alternar envio" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Alternar visibilidade da notificação" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Amanhã" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Demasiados reencaminhamentos" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "As melhores faixas" @@ -4945,21 +5005,25 @@ msgstr "As melhores faixas" msgid "Total albums:" msgstr "Total de álbuns:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Total de dados transferidos" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Total de pedidos efetuados" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Faixa" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Faixas" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Conversão de ficheiros" @@ -4971,7 +5035,7 @@ msgstr "Registo do conversor" msgid "Transcoding" msgstr "Conversão" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "A converter %1 ficheiros com %2 processos" @@ -4980,11 +5044,11 @@ msgstr "A converter %1 ficheiros com %2 processos" msgid "Transcoding options" msgstr "Opções de conversão" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4992,72 +5056,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Desligar" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Senha Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Utilizador Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Bando ultra larga (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Incapaz de transferir %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Desconhecido" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Conteúdo desconhecido" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Erro desconhecido" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Sem capa" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Não ignorar faixas selecionadas" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Não ignorar faixa" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Cancelar subscrição" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Próximos eventos" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Atualizar" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Atualizar lista de reprodução Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Atualizar todos os podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Atualizar pastas alteradas" @@ -5065,7 +5129,7 @@ msgstr "Atualizar pastas alteradas" msgid "Update the library when Clementine starts" msgstr "Atualizar coleção ao iniciar o Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Atualizar este podcast" @@ -5073,21 +5137,21 @@ msgstr "Atualizar este podcast" msgid "Updating" msgstr "Atualização" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "A atualizar %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "A atualizar %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "A atualizar coleção" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Utilização" @@ -5095,11 +5159,11 @@ msgstr "Utilização" msgid "Use Album Artist tag when available" msgstr "Se disponível, utilizar os detalhes Artista do álbum" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Utilizar teclas de atalho Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Se disponível, utilizar consistência de dados (Replay Gain)" @@ -5119,7 +5183,7 @@ msgstr "Utilizar cores personalizadas" msgid "Use a custom message for notifications" msgstr "Utilizar notificações personalizadas" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Utilizar controlo remoto de rede" @@ -5159,20 +5223,20 @@ msgstr "Utilizar definições do sistema" msgid "Use volume normalisation" msgstr "Utilizar normalização de volume" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Utilizado" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "O utilizador %1 não tem uma conta Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interface de utilizador" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5194,12 +5258,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Taxa de dados variável" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Vários artistas" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versão %1" @@ -5212,7 +5276,7 @@ msgstr "Ver" msgid "Visualization mode" msgstr "Modo de visualização" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualizações" @@ -5220,11 +5284,15 @@ msgstr "Visualizações" msgid "Visualizations Settings" msgstr "Definições das visualizações" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Deteção de voz" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Disco %1%" @@ -5242,11 +5310,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Avisar ao fechar um separador de lista de reprodução" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5254,7 +5322,7 @@ msgstr "Wav" msgid "Website" msgstr "Sítio web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Semanas" @@ -5280,32 +5348,32 @@ msgstr "Porque não tentar..." msgid "Wide band (WB)" msgstr "Banda larga (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: ativo" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: ligado" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: bateria em estado crítico (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: inativo" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: desligado" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: bateria fraca (%2%)" @@ -5326,7 +5394,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media Áudio" @@ -5334,25 +5402,25 @@ msgstr "Windows Media Áudio" msgid "Without cover:" msgstr "Sem capa:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Pretende mover as outras faixas deste álbum para Vários artistas?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Pretende executar a nova análise?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Gravar todas as estatísticas nos detalhes dos ficheiros" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nome de utilizador ou senha inválido(a)" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5364,11 +5432,11 @@ msgstr "Ano" msgid "Year - Album" msgstr "Ano - Álbum" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Anos" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Ontem" @@ -5376,13 +5444,13 @@ msgstr "Ontem" msgid "You are about to download the following albums" msgstr "Está prestes a transferir os seguintes álbuns" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Está prestes a eliminar %1 listas de reprodução dos favoritos. Tem a certeza?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5392,12 +5460,12 @@ msgstr "Está prestes a remover uma lista de reprodução que não faz parte das msgid "You are not signed in." msgstr "Sessão não iniciada" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Sessão iniciada como %1" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Sessão iniciada" @@ -5405,13 +5473,13 @@ msgstr "Sessão iniciada" msgid "You can change the way the songs in the library are organised." msgstr "Pode modificar o modo de organização das faixas na coleção" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Pode ouvir músicas gratuitamente, mas só os membros Premium podem ouvir as emissões com uma qualidade superior e sem anúncios" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5421,13 +5489,6 @@ msgstr "Pode ouvir as faixa Magnatune sem possuir uma conta. Se aderir ao servi msgid "You can listen to background streams at the same time as other music." msgstr "Pode ouvir as emissões secundárias, em simultâneo com outras faixas" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Pode enviar as suas faixas gratuitamente, mas só os assinantes conseguem ouvir as rádios da last.fm através do Clementine" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Pode utilizar o seu Wii Remote para controlar o Clementine. Consulte o wiki do Clementine para mais informações\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Você não tem uma conta Grooveshark Anywhere" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Você não tem uma conta Spotify Premium" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Não tem uma subscrição ativa" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Não precisa de iniciar sessão para procurar e ouvir as faixas do Sound Cloud. Contudo, para aceder às suas listas de reprodução ou emissões tem que iniciar sessão." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Terminou a sessão no Spotify. Reintroduza a sua senha na caixa de diálogo de definições" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Terminou a sessão no Spotify. Reintroduza a sua senha" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Você gosta desta faixa" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Tem que abrir as preferências do sistema e permitir que o Clementine possa \"controlar o seu computador\" para conseguir utilizar os atalhos globais do Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5472,17 +5547,11 @@ msgstr "Precisa de iniciar as preferências do sistema e escolher \", 2013 # bedi1982 , 2012 # carlo_valente , 2014 +# carlo_valente , 2014 # FIRST AUTHOR , 2010 +# Gustavo Brito , 2014 # Israel IsraeLins , 2012 # aramaicus , 2013 # Marco Tulio Costa , 2012 @@ -17,15 +19,15 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-05-11 12:31+0000\n" +"Last-Translator: carlo_valente \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/clementine/language/pt_BR/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -50,9 +52,9 @@ msgstr "dias" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -65,11 +67,16 @@ msgstr " pt" msgid " seconds" msgstr " segundos" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " músicas" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 músicas)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 álbuns" @@ -79,12 +86,12 @@ msgstr "%1 álbuns" msgid "%1 days" msgstr "%1 dias" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dias atrás" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 de %2" @@ -94,48 +101,48 @@ msgstr "%1 de %2" msgid "%1 playlists (%2)" msgstr "%1 listas de reprodução (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 selecionado(s) de" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 música" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 músicas" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 músicas encontradas" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 músicas encontradas (Exibindo %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 faixas" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 transferido" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Modulo do dispositivo Wiimote" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 outros ouvintes" @@ -149,18 +156,21 @@ msgstr "%L1 total de execuções" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n falhou" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n finalizado" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n faltando" @@ -172,24 +182,24 @@ msgstr "&Alinhar texto" msgid "&Center" msgstr "&Centro" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personalizado" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Extras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Ajuda" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Ocultar %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Ocultar..." @@ -197,23 +207,23 @@ msgstr "&Ocultar..." msgid "&Left" msgstr "&Esquerda" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Música" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nenhum" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Lista de Reprodução" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Sair" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Mode de Repetição" @@ -221,23 +231,23 @@ msgstr "&Mode de Repetição" msgid "&Right" msgstr "&Direita" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Modo aleatório" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Esticar colunas para ajustar a janela" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Ferramentas" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(diferentes em várias músicas)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...todos que contribuíram com o Amarok" @@ -257,14 +267,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dia" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 faixa" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -274,7 +280,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 faixas aleatórias" @@ -282,12 +288,6 @@ msgstr "50 faixas aleatórias" msgid "Upgrade to Premium now" msgstr "Atualizar para versão Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Criar uma nova conta ou redefinir sua senha" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -298,6 +298,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Se não for marcada, Clementine vai tentar salvar suas classificações e outras estatísticas apenas em um banco de dados separado e não modificará seus arquivos..

Se marcado, ele irá salvar as estatísticas, tanto em banco de dados e diretamente no arquivo a cada vez que mudou.

Por favor, note que pode não funcionar para todos os formatos e como não existe um padrão para isso, outros players podem não ser capaz de lê-los.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Anteceda um termo com um nome de campo para limitar a busca a esse campo, por exemplo artista:Bode procura por todos os artistas que contenham a palavra Bode na biblioteca.

Campos disponíveis: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -306,38 +317,38 @@ msgid "" "activated.

" msgstr "

Isso vai escrever a classificação das músicas e estatísticas em tags para todos os arquivos de sua biblioteca músicas.

Isto não é necessário se o "Save classificações e estatísticas em arquivo tags" sempre foi ativada.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Símbolos iniciam com %, por exemplo: %artist %album %title

\n\n

Se você inserir trechos do texto que contem um símbolo com chaves, esta seção será oculta se o símbolo estiver vazio.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "É necessário ter uma conta Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "É necessária uma conta Premium Spotify." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." -msgstr "Somente um cliente pode se conectar, se o código correto for inserido." +msgstr "Um cliente só pode se conectar se o código correto for digitado." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Uma lista inteligente é uma lista dinâmica de músicas de sua biblioteca. Há diferentes tipos de listas inteligentes que oferecem formas variadas de selecionar músicas." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Uma música será incluída na lista se ela satisfizer estas condições." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -357,36 +368,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "TODA A GLÓRIA PARA O HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Abortar" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Sobre %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Sobre o Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Sobre o Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detalhes da conta" @@ -398,11 +408,15 @@ msgstr "Detalhes da Conta (Premium)" msgid "Action" msgstr "Ação" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Ativar/desativar Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Fluxo de atividades" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Adicionar Podcast" @@ -418,39 +432,39 @@ msgstr "Adicionar uma nova linha se suportado pelo tipo de notificação" msgid "Add action" msgstr "Adicionar ação" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Adicionar outro canal..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Adicionar diretório..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Adicionar Arquivo" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Adicionar arquivo para conversor" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Adicionar arquivo(s) para conversor" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Adicionar arquivo..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Adicionar arquivos para converter" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Adicionar pasta" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Adicionar pasta..." @@ -462,11 +476,11 @@ msgstr "Adicionar nova pasta..." msgid "Add podcast" msgstr "Adicionar Podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Adicionar Podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Adicionar termo para busca" @@ -530,6 +544,10 @@ msgstr "Adicionar contador de pular música" msgid "Add song title tag" msgstr "Adicionar a tag título da música" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Adicionar música ao cache" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Adicionar a tag faixa da música" @@ -538,22 +556,34 @@ msgstr "Adicionar a tag faixa da música" msgid "Add song year tag" msgstr "Adicionar a tag ano da música" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Adicionar músicas às \"Minhas músicas\" quando o botão \"Curtir\" for clicado" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Adicionar transmissão..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Adicionar às favoritas do Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Adicionar à lista de reprodução Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Adicionar às Minhas músicas" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Adicionar à outra lista de reprodução" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Adicionar aos favoritos" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Adicionar à lista de reprodução" @@ -562,6 +592,10 @@ msgstr "Adicionar à lista de reprodução" msgid "Add to the queue" msgstr "Adicionar à fila" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Adicionar usuário/grupo aos favoritos" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Adicionar ação de dispositivo wiimote" @@ -591,15 +625,15 @@ msgstr "Adicionado(s) hoje" msgid "Added within three months" msgstr "Adicionado(s) há três meses" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Adicionando música à Minha Música" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Adicionando música aos favoritos" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Organização avançada..." @@ -607,12 +641,12 @@ msgstr "Organização avançada..." msgid "After " msgstr "Depois" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Depois de copiar..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -620,11 +654,11 @@ msgstr "Depois de copiar..." msgid "Album" msgstr "Álbum" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Álbum (volume ideal para todas as faixas)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -634,35 +668,36 @@ msgstr "Artista do álbum" msgid "Album cover" msgstr "Capa do Álbum" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informação do álbum no jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Álbuns com capas" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Álbuns sem capas" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Todos os arquivos (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Toda a Glória para o Hypnotoad!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Todos os álbuns" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Todos os artistas" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Todos os arquivos (*)" @@ -671,19 +706,19 @@ msgstr "Todos os arquivos (*)" msgid "All playlists (%1)" msgstr "Todas as listas de reprodução (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Todos os tradutores" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Todas as faixas" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." -msgstr "Permitir cliente baixar musicas deste computador." +msgstr "Permitir que um cliente baixe músicas desse computador." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Permitir downloads" @@ -708,30 +743,30 @@ msgstr "Sempre exibir a janela principal" msgid "Always start playing" msgstr "Sempre começar tocando" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Um plugin adicional é necessário para usar Spotify no Clementine. Gostaria de fazer o download e instalá-lo agora?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Ocorreu um erro no carregamento do banco de dados do iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Ocorreu um erro de escrita de metadados para '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Um erro não especificado ocorreu." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "e:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Bravo" @@ -740,13 +775,13 @@ msgstr "Bravo" msgid "Appearance" msgstr "Aparência" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Acrescentar arquivos/sites para a lista de reprodução" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Adicionar à lista de reprodução atual" @@ -754,52 +789,47 @@ msgstr "Adicionar à lista de reprodução atual" msgid "Append to the playlist" msgstr "Anexar ao fim da lista de reprodução" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Aplicar compressão para prevenir picos" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Tem certeza que deseja apagar a pré-regulagem \"%1\" ?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Tem certeza que você quer excluir esta lista de reprodução?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Você tem certeza que quer limpar as estatísticas dessa música?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Tem certeza de que deseja escrever estatísticas de música em arquivo de músicas para todas as músicas da sua biblioteca?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artista" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Sobre o Artista" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Rádio do artista" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Tags do artista" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Inicial do artista" @@ -807,9 +837,13 @@ msgstr "Inicial do artista" msgid "Audio format" msgstr "Formato de áudio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Saída de áudio" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Falha na autenticação" @@ -817,7 +851,7 @@ msgstr "Falha na autenticação" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autores" @@ -833,7 +867,7 @@ msgstr "Atualização automática" msgid "Automatically open single categories in the library tree" msgstr "Abrir categorias únicas da árvore da biblioteca automaticamente" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Disponível" @@ -841,15 +875,15 @@ msgstr "Disponível" msgid "Average bitrate" msgstr "Taxa de bits média" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Tamanho médio de imagem" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcasts BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -870,7 +904,7 @@ msgstr "Imagem de fundo" msgid "Background opacity" msgstr "Opacidade de fundo" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Cópia do banco de dados" @@ -878,11 +912,7 @@ msgstr "Cópia do banco de dados" msgid "Balance" msgstr "Balança" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Não curti" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Barra" @@ -902,18 +932,17 @@ msgstr "Comportamento" msgid "Best" msgstr "Melhor" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografia de %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Taxa de bits" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -921,7 +950,12 @@ msgstr "Taxa de bits" msgid "Bitrate" msgstr "Taxa de Amostragem" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Taxa de Amostragem" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Analizador de bloco" @@ -937,13 +971,13 @@ msgstr "Quantidade borrão" msgid "Body" msgstr "Conteúdo" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Explosão" #: ../bin/src/ui_boxsettingspage.h:103 msgid "Box" -msgstr "Caixa" +msgstr "Box" #: ../bin/src/ui_magnatunedownloaddialog.h:146 #: ../bin/src/ui_podcastsettingspage.h:242 @@ -951,11 +985,11 @@ msgstr "Caixa" msgid "Browse..." msgstr "Procurar..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Duração do buffer" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Armazenando em buffer" @@ -967,43 +1001,66 @@ msgstr "Mas estes recursos estão desabilitados:" msgid "Buttons" msgstr "Botões" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Por padrão, o Grooveshark ordena as músicas pela data de adição" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Suporte a lista CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Localização do cache:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Caching" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Caching %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Cancelar" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "O Captcha é necessário.\nTente logar no Vk.com com seu navegador para resolver esse problema." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Alterar capa" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Mudar tamanho da letra..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Alterar modo de repetição" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Mudar atalho..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Alterar modo aleatório" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Alterar idioma" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1013,15 +1070,19 @@ msgstr "Alterar a saída mono terá efeito para as próximas músicas a serem to msgid "Check for new episodes" msgstr "Procurar por novos episódios" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Procurar por atualizações..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Escolha o diretório do cache do Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Escolha um nome para sua lista inteligente" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Escolher automaticamente" @@ -1037,11 +1098,11 @@ msgstr "Escolher fonte..." msgid "Choose from the list" msgstr "Escolher da lista" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Escolha como a lista será organizada e quantas músicas ela conterá." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Escolha a pasta de download de podcasts" @@ -1050,7 +1111,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Escolha os sites que você deseja que o Clementine use para buscar letras de música." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Clássica" @@ -1058,17 +1119,17 @@ msgstr "Clássica" msgid "Cleaning up" msgstr "Limpando" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Limpar" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Limpar lista de reprodução" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1081,8 +1142,8 @@ msgstr "Erro no Clementine" msgid "Clementine Orange" msgstr "Clementine Laranja" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Visualização Clementine" @@ -1094,7 +1155,7 @@ msgstr "O Clementine pode converter automaticamente a música que você copiar p #: ../bin/src/ui_boxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Box" -msgstr "Clementine pode tocar música que você enviou para Caixa" +msgstr "O Clementine pode reproduzir músicas que você enviou para o Box" #: ../bin/src/ui_dropboxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Dropbox" @@ -1104,9 +1165,9 @@ msgstr "Clementine pode tocar a musica que você enviou para o Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "O Clementine pode tocar músicas que você guardou no Google Drive." -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "O Clementine pode tocar música que você transferiu para o Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "O Clementine consegue reproduzir músicas armazenadas no OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1119,20 +1180,13 @@ msgid "" "an account." msgstr "O Clementine pode sincronizar sua lista de seguidores com seus outros computadores e aplicativos podcast. Criar uma conta." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "O Clementine não conseguiu carregar nenhuma visualização do projectM. Verifique se você instalou o Clementine corretamente." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine não pôde obter o status de sua assinatura já que há problemas com a sua conexão. Faixas reproduzidas serão armazenadas em cache e depois enviadas para o Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Visualizador de imagens do Clementine" @@ -1144,11 +1198,11 @@ msgstr "O Clementine não conseguiu encontrar resultados para este arquivo" msgid "Clementine will find music in:" msgstr "O Clementine irá buscar música em:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Clique aqui para adicionar algumas músicas" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1158,7 +1212,10 @@ msgstr "Clique aqui para favoritar esta lista de reprodução, para ser salva e msgid "Click to toggle between remaining time and total time" msgstr "Clique para alternar entre tempo restante e tempo total" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1173,19 +1230,19 @@ msgstr "Fechar" msgid "Close playlist" msgstr "Fechar lista de reprodução" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Fechar visualização" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Fechar esta janela cancelará o download" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Fechar esta janela irá parar a busca por capas de álbuns" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Clube" @@ -1193,73 +1250,78 @@ msgstr "Clube" msgid "Colors" msgstr "Cores" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista separada por vírgulas de classe: o nível, o nível é 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentário" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Rádio da comunidade" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Completar tags automaticamente" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Preencher tags automaticamente..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compositor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Configurar %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Configurar Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configurar Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Configurar Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configurar atalhos" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configurar Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Configurar Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Configurar Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Configurar busca global..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configurar biblioteca..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Configurar podcasts" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configurar..." @@ -1267,11 +1329,11 @@ msgstr "Configurar..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Conectar controles remotos do Wii usando ação de ativar/desativar" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Conectar dispositivo" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Conectando ao Spotify" @@ -1281,12 +1343,16 @@ msgid "" "http://localhost:4040/" msgstr "Conexão recusada pelo servidor, verifique a URL do servidor. Exemplo: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Conexão expirou, verifique a URL do servidor. Exemplo: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Problemas com a conexão ou o áudio foi desabilitado pelo proprietário" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Painel" @@ -1302,17 +1368,21 @@ msgstr "Converter todas as músicas" msgid "Convert any music that the device can't play" msgstr "Converter qualquer música que o dispositivo não puder tocar" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Copiar url compartilhada para a área de transferência" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Copiar para o dispositivo..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copiar para biblioteca..." @@ -1320,156 +1390,152 @@ msgstr "Copiar para biblioteca..." msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Não foi possível conectar-se a Subsonic, verificar a URL do servidor. Exemplo: http://localhost:4040/ " -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Incapaz de criar o elemento GStreamer \"%1\" - confira se você possui todos os plugins requeridos pelo GStreamer instalados" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Não foi possível criar a lista de reprodução" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Não foi possível encontrar um multiplexador para %1, verifique se você tem os plugins corretos do GStreamer instalados" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Não foi possível encontrar um codificador para %1, verifique se você tem os plugins corretos do GStreamer instalados" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Não foi possível carregar a estação de rádio do last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Não foi possível abrir o arquivo de saída %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Gerenciador de capas" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Capa do album da imagem inserida" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "A capa foi carregada automaticamente a partir de %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Capa manualmente removida" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Capa não definida" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Capa configurada de %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Capas do %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Criar uma nova lista de reprodução Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Transição suave quando mudar de faixa automaticamente" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Transição suave quando mudar de faixa manualmente" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1477,7 +1543,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personalizado" @@ -1489,54 +1555,50 @@ msgstr "Imagem personalizada:" msgid "Custom message settings" msgstr "Configurações de mensagem personalizada" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Rádio personalizada" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personalizado..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Caminho do DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Banco de dados corrompido detectado. Por favor, leia https://code.google.com/p/clementine-player/wiki/Database para instruções de como recuperar seu banco de dados" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data de criação" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data de modificação" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dias" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Padrão" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Diminuir volume em 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Diminuir o volume por porcentagem " -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Diminuir volume" @@ -1544,6 +1606,11 @@ msgstr "Diminuir volume" msgid "Default background image" msgstr "Imagem de fundo padrão" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Dispositivo padrão em %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Padrões" @@ -1552,30 +1619,30 @@ msgstr "Padrões" msgid "Delay between visualizations" msgstr "Intervalo entre visualizações" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Apagar" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Excluir lista de reprodução Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Apagar dados baixados" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Excluir arquivos" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Apagar do dispositivo..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Apagar do disco..." @@ -1583,31 +1650,31 @@ msgstr "Apagar do disco..." msgid "Delete played episodes" msgstr "Apagar episódios reproduzidos" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Apagar pré-regulagem" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Apagar lista inteligente" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Apagar os arquivos originais" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Apagando arquivos" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Retirar faixas selecionadas da fila" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Retirar faixa da fila" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destino" @@ -1616,7 +1683,7 @@ msgstr "Destino" msgid "Details..." msgstr "Detalhes..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Dispositivo" @@ -1628,15 +1695,15 @@ msgstr "Propriedades do dispositivo" msgid "Device name" msgstr "Nome do dispositivo" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Propriedades do dispositivo..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Dispositivos" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Diálogo" @@ -1673,12 +1740,17 @@ msgstr "Desativar duração" msgid "Disable moodbar generation" msgstr "Desabilitar criação da moodbar." -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Desativado" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Desativado" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disco" @@ -1688,15 +1760,15 @@ msgid "Discontinuous transmission" msgstr "Transmissão descontínua" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opções de exibição" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Mostrar na tela" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Reescanear por completo a biblioteca" @@ -1708,27 +1780,27 @@ msgstr "Não converter nenhuma música" msgid "Do not overwrite" msgstr "Não substituir" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Não repetir" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Não exibir em vários artistas" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Não embaralhar" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Não parar!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Doar" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Clique duplo para abrir" @@ -1736,12 +1808,13 @@ msgstr "Clique duplo para abrir" msgid "Double clicking a song will..." msgstr "Clique duplo em uma música irá..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Baixar %n episódios" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Pasta de download" @@ -1757,7 +1830,7 @@ msgstr "Conta de download" msgid "Download new episodes automatically" msgstr "Baixar automaticamente novos episódios" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Download na fila" @@ -1765,15 +1838,15 @@ msgstr "Download na fila" msgid "Download the Android app" msgstr "Baixar o aplicativo Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Baixar este álbum" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Baixar este álbum..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Baixar este episódio" @@ -1781,7 +1854,7 @@ msgstr "Baixar este episódio" msgid "Download..." msgstr "Baixar..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Baixando (%1%)" @@ -1790,23 +1863,23 @@ msgstr "Baixando (%1%)" msgid "Downloading Icecast directory" msgstr "Baixando diretório Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Baixando catálogo do Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Baixando catálogo da Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Baixando plugin Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Baixando metadados" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Arraste para reposicionar" @@ -1826,20 +1899,20 @@ msgstr "Duração" msgid "Dynamic mode is on" msgstr "Modo dinâmico ligado" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Mix aleatório dinâmico" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Editar lista de reprodução inteligente..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Editar tag \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Editar tag..." @@ -1851,16 +1924,16 @@ msgstr "Editar tag" msgid "Edit track information" msgstr "Editar informações da faixa" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Editar informações da faixa..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Editar informações da faixa..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Editar..." @@ -1868,6 +1941,10 @@ msgstr "Editar..." msgid "Enable Wii Remote support" msgstr "Habilitar suporte a controle remoto do Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Habilitar caching automático" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Habilitar equalizador" @@ -1882,7 +1959,7 @@ msgid "" "displayed in this order." msgstr "Habilitar fontes abaixo para incluí-las nos resultados da pesquisa. | | Os resultados irão aparecer nesta ordem." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Ativar/Desativar Last.fm scrobbling" @@ -1910,15 +1987,10 @@ msgstr "Insira uma URL para fazer baixar uma capa da Internet:" msgid "Enter a filename for exported covers (no extension):" msgstr "Digite um nome de arquivo para capas exportadas (sem extensão):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Digite um novo nome para esta lista" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Digite um artista ou tag para começar a ouvir a rádio Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1932,7 +2004,7 @@ msgstr "Digite os termos da busca abaixo para procurar podcasts no iTunes Store" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Digite os termos da busca para procurar podcasts no gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Digite os termos da pesquisa aqui" @@ -1941,11 +2013,11 @@ msgstr "Digite os termos da pesquisa aqui" msgid "Enter the URL of an internet radio stream:" msgstr "Forneça o endereço do site de transmissão de rádio:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Digite o nome da pasta" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Digite este IP no Aplicativo para conectar ao Clementine." @@ -1953,21 +2025,22 @@ msgstr "Digite este IP no Aplicativo para conectar ao Clementine." msgid "Entire collection" msgstr "Toda a coletânia" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizador" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Equivalente ao --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Equivalente ao --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Erro" @@ -1975,38 +2048,38 @@ msgstr "Erro" msgid "Error connecting MTP device" msgstr "Erro ao conectar ao dispositivo MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Erro ao copiar músicas" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Erro ao apagar músicas" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Erro ao baixar o plugin Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Erro carregando %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Erro carregando a lista de reprodução: di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Erro processando %1:%2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Erro ao carregar o CD de áudio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Já reproduzido" @@ -2038,7 +2111,7 @@ msgstr "A cada 6 horas" msgid "Every hour" msgstr "A cada hora" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Exceto entre as faixas do mesmo álbum ou lista CUE" @@ -2050,7 +2123,7 @@ msgstr "Capas existentes" msgid "Expand" msgstr "Expandir" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Expira em %1" @@ -2071,36 +2144,36 @@ msgstr "Exportar capas baixadas" msgid "Export embedded covers" msgstr "Exportar capas embutidas" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Exportação terminou" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exportado %1 capa(s) de %2 (%3 pulado)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2110,42 +2183,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Desvanecer ao pausar / Voltar gradualmente ao retomar" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Diminuir o som gradativamente quando terminar uma faixa" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Diminuindo" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Duração da dimunuição" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Falha ao ler o CD" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Falha ao acessar o diretório" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Falha ao acessar os podcasts" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Falha ao abrir o podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Falha ao analisar o XML para essa atualização RSS" @@ -2154,11 +2227,11 @@ msgstr "Falha ao analisar o XML para essa atualização RSS" msgid "Fast" msgstr "Rápida" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoritos" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Faixas preferidas" @@ -2174,11 +2247,11 @@ msgstr "Buscar automaticamente" msgid "Fetch completed" msgstr "Atualização concluída" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Buscando biblioteca Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Erro ao buscar a capa" @@ -2186,7 +2259,7 @@ msgstr "Erro ao buscar a capa" msgid "File Format" msgstr "Formato de arquivo" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Extensão de arquivo" @@ -2194,19 +2267,23 @@ msgstr "Extensão de arquivo" msgid "File formats" msgstr "Formatos de arquivo" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nome de arquivo" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nome do arquivo (sem pasta)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Padrão do nome de arquivo:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Tamanho do arquivo" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2216,7 +2293,7 @@ msgstr "Tipo de arquivo" msgid "Filename" msgstr "Nome do arquivo" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Arquivos" @@ -2224,15 +2301,19 @@ msgstr "Arquivos" msgid "Files to transcode" msgstr "Arquivos para converter" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Encontrar músicas na sua biblioteca que satisfazem aos critérios que você especificar." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Encontre esse artista" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Registrando a música" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Finalizar" @@ -2240,7 +2321,7 @@ msgstr "Finalizar" msgid "First level" msgstr "Primeiro nível" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2256,12 +2337,12 @@ msgstr "Por motivos de licenciamento, o suporte ao Spotify está em um plugin se msgid "Force mono encoding" msgstr "Forçar codificação em mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Esquecer dispositivo" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2276,7 +2357,7 @@ msgstr "Esquecer um dispositivo irá removê-lo desta lista e o Clementine terá #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2304,31 +2385,23 @@ msgstr "Quadros por segundo" msgid "Frames per buffer" msgstr "Quadros por buffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Amigos" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Congelado" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Graves" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Graves + Agudos" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Muito Agudo" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Mecanismo de áudio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Geral" @@ -2336,30 +2409,30 @@ msgstr "Geral" msgid "General settings" msgstr "Configurações gerais" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Gênero" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Obter uma URL para compartilhar esta lista de reprodução do Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Obter uma URL para compartilhar esta música do Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Recuperando lista das músicas populares Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Adquirindo canais" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Recebendo transmissões" @@ -2371,11 +2444,11 @@ msgstr "Nome da transmissão:" msgid "Go" msgstr "Ir" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Ir até a aba do próximo playlist" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Ir até a aba lista de reprodução anterior" @@ -2383,7 +2456,7 @@ msgstr "Ir até a aba lista de reprodução anterior" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2391,9 +2464,9 @@ msgstr "Conseguiu %1 capa(s) de %2 (%3 falharam)" #: ../bin/src/ui_behavioursettingspage.h:206 msgid "Grey out non existent songs in my playlists" -msgstr "Acinzentar músicas inexistentes da minha lista de reprodução" +msgstr "Acinzentar músicas inexistentes na minha lista de reprodução" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2401,15 +2474,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Erro ao logar no Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL da lista de reprodução do Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Rádio Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL da música Grooveshark" @@ -2417,44 +2490,44 @@ msgstr "URL da música Grooveshark" msgid "Group Library by..." msgstr "Organizar Biblioteca por..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Organizar por" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Organizar por Álbum" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Organizar por Artista" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Organizar por Artista/Álbum" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Organizar por Artista/Ano do Álbum" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Organizar por Gênero/Álbum" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Organizar por Gênero/Artista/Álbum" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Agrupamento" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "A página HTML não contém nenhum RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Código de status HTTP 3xx recebido sem URL, verificar a configuração do servidor." @@ -2463,7 +2536,7 @@ msgstr "Código de status HTTP 3xx recebido sem URL, verificar a configuração msgid "HTTP proxy" msgstr "Proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Feliz" @@ -2479,25 +2552,25 @@ msgstr "Informação do hardware só está disponível quando o dispositivo est msgid "High" msgstr "Alta" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Alto (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Alta (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Host não encontrado, verifique a URL do servidor. Exemplo: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Horas" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2509,15 +2582,15 @@ msgstr "Eu não tenho uma conta no Magnatune" msgid "Icon" msgstr "Ícone" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ícones acima" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identificando música" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2527,24 +2600,24 @@ msgstr "Se você continar, este dispositivo funcionará lentamente e as músicas msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Se você sabe a URL do podcast, digite abaixo e clique em Ir" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorar o \"The\" em nomes de artistas" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Imagens (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Imagens (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Em %1 dias" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Em %1 semanas" @@ -2555,7 +2628,7 @@ msgid "" "time a song finishes." msgstr "No modo dinâmico, novas faixas serão escolhidas e adicionadas à lista de reprodução toda a vez que uma musica terminar." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Caixa de entrada" @@ -2567,135 +2640,135 @@ msgstr "Incluir capa do álbum na notificação" msgid "Include all songs" msgstr "Incluir todas as músicas" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." -msgstr "Versão do protocolo Subsonic REST incompatível. Cliente deve atualizar." +msgstr "Versão do protocolo Subsonic REST incompatível. O cliente deve ser atualizado." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Versão do protocolo Subsonic REST incompatível. Servidor deve atualizar." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Configuração incompleta, assegure que todos os campos estão preenchidos." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Aumentar volume em 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Aumentar o volume por porcentagem " -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Aumentar volume" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indexando %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informação" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Opções de entrada" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Inserir..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Instalado" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Verificar integridade" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Dados da Internet" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Chave API inválida" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Formato inválido" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Método inválido" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parâmetros inválidos" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Recurso especificado inválido" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Serviço inválido" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Chave de sessão inválida" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Usuário e/ou senha inválido(s)" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Inverter Seleção" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Faixas mais ouvidas do Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Faixas principais no Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Faixas principais no Jamendo este mês" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Faixas principais no Jamendo esta semana" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Banco de dados Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Pular para a faixa em execução" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Manter botões por %1 segundo..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Manter botôes por %1 segundos..." @@ -2704,11 +2777,12 @@ msgstr "Manter botôes por %1 segundos..." msgid "Keep running in the background when the window is closed" msgstr "Continuar executando quando a janela é fechada" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Manter arquivos originais" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Gatinhos" @@ -2716,11 +2790,11 @@ msgstr "Gatinhos" msgid "Language" msgstr "Idioma" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Notebook / fones de ouvido" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Salão Grande" @@ -2728,58 +2802,24 @@ msgstr "Salão Grande" msgid "Large album cover" msgstr "Capa grande de álbum" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Barra lateral grande" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Última reprodução" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "Reproduzida por último" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Rádio personalizada do Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Biblioteca Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Rádio mista do last.fm: %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Rádio do vizinho no Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Estação de Rádio Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Artistas Last.fm Similares a %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Tag de Rádio do Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm está ocupado no momento, por favor tente novamente daqui a alguns minutos" @@ -2787,11 +2827,11 @@ msgstr "Last.fm está ocupado no momento, por favor tente novamente daqui a algu msgid "Last.fm password" msgstr "Senha do Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Número de reproduções do last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Tags do Last.fm" @@ -2799,28 +2839,24 @@ msgstr "Tags do Last.fm" msgid "Last.fm username" msgstr "Nome de usuário do Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki do last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Faixas menos preferidas" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Deixe em branco por padrão. Exemplos: \"/dev/dsp\", \"front\", etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Esquerda" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Duração" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Biblioteca" @@ -2828,24 +2864,24 @@ msgstr "Biblioteca" msgid "Library advanced grouping" msgstr "Organização avançada de biblioteca" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Aviso de reescaneamento da biblioteca" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Busca na biblioteca" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limites" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Ouvir músicas Grooveshark com base no que você ouviu anteriormente" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Ao vivo" @@ -2857,15 +2893,15 @@ msgstr "Carregar" msgid "Load cover from URL" msgstr "Carregar capa da URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Carregar capa da URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Carregar capa do disco" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Carregar capa do disco..." @@ -2873,84 +2909,89 @@ msgstr "Carregar capa do disco..." msgid "Load playlist" msgstr "Carregar lista de reprodução" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Carregar lista de reprodução..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Carregando rádio Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Carregando dispositivo MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Carregando banco de dados do iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Carregando lista de reprodução inteligente" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Carregando músicas" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Carregando transmissão" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Carregando faixas" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Carregando informações da faixa" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Carregando..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Carregar arquivos/sites, substiuindo a lista de reprodução atual" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Login" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Falha ao conectar" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Logout" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Perfil de previsão a longo prazo (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Curtir" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Baixo (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Baixa (256x256)" @@ -2962,12 +3003,17 @@ msgstr "Perfil de baixa complexidade (LC)" msgid "Lyrics" msgstr "Letras de música" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Letras de %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2979,15 +3025,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2995,7 +3041,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Download do Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Download do Magnatune finalizado" @@ -3003,15 +3049,20 @@ msgstr "Download do Magnatune finalizado" msgid "Main profile (MAIN)" msgstr "Menu perfil (PRINCIPAL)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Agora!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Faça isso!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Tornar lista de reprodução disponível offline" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Resposta inválida" @@ -3024,15 +3075,15 @@ msgstr "Configuração manual de proxy" msgid "Manually" msgstr "Manualmente" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Fabricante" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Marcar como ouvida" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Marcar como nova" @@ -3044,17 +3095,21 @@ msgstr "Buscar por todos os termos de pesquisa juntos (E)" msgid "Match one or more search terms (OR)" msgstr "Buscar um ou mais termos de pesquisa (OU)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Número máximo de resultados da busca global" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Taxa de bits máxima" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Médio (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Média (512x512)" @@ -3066,11 +3121,15 @@ msgstr "Tipo de conta" msgid "Minimum bitrate" msgstr "Taxa de bits mínima" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Preenchimento mínimo do buffer" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Pré-definições do projectM faltando" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modelo" @@ -3078,20 +3137,20 @@ msgstr "Modelo" msgid "Monitor the library for changes" msgstr "Vigiar mudanças na biblioteca" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Saída Mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Meses" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Modo" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Estilo da moodbar" @@ -3099,15 +3158,19 @@ msgstr "Estilo da moodbar" msgid "Moodbars" msgstr "Moodbars" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Mais" + +#: library/library.cpp:84 msgid "Most played" msgstr "Mais tocadas" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Ponto de montagem" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Pontos de montagem" @@ -3116,7 +3179,7 @@ msgstr "Pontos de montagem" msgid "Move down" msgstr "Para baixo" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Mover para biblioteca..." @@ -3125,7 +3188,7 @@ msgstr "Mover para biblioteca..." msgid "Move up" msgstr "Para cima" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Música" @@ -3133,56 +3196,32 @@ msgstr "Música" msgid "Music Library" msgstr "Biblioteca de Músicas" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Mudo" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Minha biblioteca no Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Minha Rádio Mix do Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Minha Vizinhança no Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Minha Rádio de Recomendações no Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Minha Rádio Mix" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Minha Música" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Minha Vizinhança" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Minha Estação de Rádio" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Minhas Recomendações" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nome" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Nome" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opções de nomes" @@ -3190,23 +3229,19 @@ msgstr "Opções de nomes" msgid "Narrow band (NB)" msgstr "Banda baixa (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Vizinhos" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proxy da Rede" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Rede Remota" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nunca" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nunca tocado" @@ -3215,21 +3250,21 @@ msgstr "Nunca tocado" msgid "Never start playing" msgstr "Nunca iniciar tocando" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nova pasta" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nova lista de reprodução" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nova lista de reprodução inteligente..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Novas músicas" @@ -3237,24 +3272,24 @@ msgstr "Novas músicas" msgid "New tracks will be added automatically." msgstr "Novas faixas serão adicionadas automaticamente." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Faixas mais recentes" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Próximo" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Próxima faixa" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Próxima semana" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Sem visualização" @@ -3262,7 +3297,7 @@ msgstr "Sem visualização" msgid "No background image" msgstr "Sem imagem de fundo" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Não há capas para exportar." @@ -3270,7 +3305,7 @@ msgstr "Não há capas para exportar." msgid "No long blocks" msgstr "Sem blocos longos" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nenhum resultado encontrado. Limpe a caixa de busca para ver a lista de reprodução completa novamente." @@ -3284,11 +3319,11 @@ msgstr "Sem blocos curtos" msgid "None" msgstr "Nenhum" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nenhuma das músicas selecionadas estão adequadas para copiar para um dispositivo" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3296,43 +3331,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Tipo de blocos normal" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Não disponível enquanto uma lista dinâmica estiver em uso" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Desconectado" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Conteúdo insuficiente" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Fãs insuficientes" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Sem membros o bastante" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Sem vizinhos o bastante" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Não instalado" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Não logado" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Não montado - clique duas vezes para montar" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Nada encontrado" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Tipo de notificação" @@ -3345,36 +3384,41 @@ msgstr "Notificações" msgid "Now Playing" msgstr "Reproduzindo Agora" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Pré-visualização de informações na tela" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Desligado" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Ligado" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3382,11 +3426,11 @@ msgid "" "192.168.x.x" msgstr "Aceitar apenas conexões de clientes dentro das faixas de ip:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Permitir somente conexões da rede local" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Só mostrar o primeiro" @@ -3394,23 +3438,23 @@ msgstr "Só mostrar o primeiro" msgid "Opacity" msgstr "Opacidade" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Abrir %1 no browser" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Abrir CD de &áudio..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Abrir arquivo OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Abrir arquivo OPML..." @@ -3418,30 +3462,35 @@ msgstr "Abrir arquivo OPML..." msgid "Open device" msgstr "Abrir dispositivo" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Abrir arquivo..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Abrir no Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Abrir em nova lista de reprodução" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Abrir em nova lista de reprodução" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Abrir no navegador" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Abrir..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "A operação falhou" @@ -3461,23 +3510,23 @@ msgstr "Opções..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizar Arquivos" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizar arquivos..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organizando arquivos" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Tags originais" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Outras opções" @@ -3485,7 +3534,7 @@ msgstr "Outras opções" msgid "Output" msgstr "Saída" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Dispositivo de saída" @@ -3493,15 +3542,11 @@ msgstr "Dispositivo de saída" msgid "Output options" msgstr "Opções de Saída" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Plugin de saída" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Substituir tudo" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Sobrescrever arquivos existentes" @@ -3513,15 +3558,15 @@ msgstr "Substituir apenas os menores" msgid "Owner" msgstr "Dono" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Analisando catálogo do Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Festa" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3530,20 +3575,20 @@ msgstr "Festa" msgid "Password" msgstr "Senha" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pausar" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pausar reprodução" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pausado" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Artista" @@ -3552,34 +3597,22 @@ msgstr "Artista" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Barra lateral simples" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Reproduzir" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Reproduzir Artista ou Tag" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Reproduzir rádio do artista..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Número de reproduções" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Tocar rádio personalizada..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Reproduzir se estiver parado, pausar se estiver tocando" @@ -3588,45 +3621,42 @@ msgstr "Reproduzir se estiver parado, pausar se estiver tocando" msgid "Play if there is nothing already playing" msgstr "Tocar se não houver nada tocando" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Reproduzir rádio tag..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Tocar a ª faixa da lista" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Reproduzir/pausar" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Reproduzir" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opções do player" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lista de Reprodução" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "A lista de reprodução terminou" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opções da lista de reprodução" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tipo de lista de reprodução" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Listas de reprodução" @@ -3638,23 +3668,23 @@ msgstr "Por favor, feche seu navegador e volte ao Clementine" msgid "Plugin status:" msgstr "Status do plugin:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Músicas Populares" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Músicas populares do mês" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Músicas populares do dia" @@ -3663,22 +3693,23 @@ msgid "Popup duration" msgstr "Duração do aviso" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Porta" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pré-amplificação" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Preferências" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Preferências..." @@ -3714,7 +3745,7 @@ msgstr "Pressione uma combinação de botões para usar para" msgid "Press a key" msgstr "Pressione uma tecla" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Pressione uma combinação de teclas para %1..." @@ -3725,20 +3756,20 @@ msgstr "Opções de aviso estilizado" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Pré-visualização" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Anterior" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Faixa anterior" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Imprimir informação da versão" @@ -3746,21 +3777,25 @@ msgstr "Imprimir informação da versão" msgid "Profile" msgstr "Perfil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Andamento" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Progresso" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psicodélico " #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Aperte botão do controle remoto do Wii" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Colocar músicas em ordem aleatória" @@ -3768,7 +3803,12 @@ msgstr "Colocar músicas em ordem aleatória" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Qualidade" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Qualidade" @@ -3776,28 +3816,33 @@ msgstr "Qualidade" msgid "Querying device..." msgstr "Consultando dispositivo..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Gerenciador de Fila" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Colocar as faixas selecionadas na fila" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Colocar a faixa na fila" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Rádio (volume igual para todas as faixas)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Rádios" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Chuva" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Chuva" @@ -3805,48 +3850,48 @@ msgstr "Chuva" msgid "Random visualization" msgstr "Visualização aleatória" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Classificar a música atual com 0 estrelas" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" -msgstr "Classificar a música atual com 0 estrela" +msgstr "Classificar a música atual com 1 estrela" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Classificar a música atual com 2 estrelas" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Classificar a música atual com 3 estrelas" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Classificar a música atual com 4 estrelas" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Classificar a música atual com 5 estrelas" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Avaliação" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Deseja realmente cancelar?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Limite de redirecionamento excedeu, verifique a configuração do servidor." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Atualizar" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Atualizar catálogo" @@ -3854,19 +3899,15 @@ msgstr "Atualizar catálogo" msgid "Refresh channels" msgstr "Atualizar canais" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Atualizar lista de amigos" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Atualizar lista de estações" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Atualizar transmissões" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3878,8 +3919,8 @@ msgstr "Lembrar balanço do Wiimote" msgid "Remember from last time" msgstr "Lembrar a última vez" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Remover" @@ -3887,7 +3928,7 @@ msgstr "Remover" msgid "Remove action" msgstr "Remover ação" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Remover duplicados da lista de reprodução" @@ -3895,73 +3936,77 @@ msgstr "Remover duplicados da lista de reprodução" msgid "Remove folder" msgstr "Remover pasta" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Remover de Minha Música" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Remover dos favoritos" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Remover dos favoritos" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Remover da lista de reprodução" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Remover lista de reprodução" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Remover listas de reprodução" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Removendo músicas de minha música" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Removendo músicas dos favoritos" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Renomear a lista de reprodução \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Renomear lista de reprodução Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Renomear lista de reprodução" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Renomear lista de reprodução..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Renumerar faixas nesta ordem..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repetir" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repetir um álbum" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repetir lista de reprodução" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repetir uma faixa" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Substituir lista de reprodução atual" @@ -3970,15 +4015,15 @@ msgstr "Substituir lista de reprodução atual" msgid "Replace the playlist" msgstr "Substituir a lista de reprodução" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Substituir espaços com sublinhados" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Modo ReplayGain" @@ -3986,24 +4031,24 @@ msgstr "Modo ReplayGain" msgid "Repopulate" msgstr "Repovoar" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Exigir código de autenticação" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Redefinir" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Limpar contador de reprodução" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Reiniciar a faixa, ou reproduzir a faixa anterior, se dentro de 8 segundos começar." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Restringir a caracteres ASCII" @@ -4011,15 +4056,15 @@ msgstr "Restringir a caracteres ASCII" msgid "Resume playback on start" msgstr "Retomar a reprodução ao iniciar" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Recuperando Minhas Músicas do Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Recuperando lista das músicas favoritas Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Recuperando listas de reprodução Grooveshark" @@ -4033,17 +4078,17 @@ msgstr "Direita" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Converter" #: ui/ripcd.cpp:116 msgid "Rip CD" msgstr "Extrair CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Extrair CD de áudio..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4055,25 +4100,25 @@ msgstr "Executar" msgid "SOCKS proxy" msgstr "Proxy SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Erro de handshake SSL, verificar a configuração do servidor. Opção SSLv3 abaixo pode solucionar alguns problemas ." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Remover o dispositivo com segurança" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Remover o dispositivo com segurança após copiar" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Taxa de amostragem" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Taxa de amostragem" @@ -4081,27 +4126,33 @@ msgstr "Taxa de amostragem" msgid "Save .mood files in your music library" msgstr "Salvar arquivos .mood na sua biblioteca musical." -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Salvar capa do álbum" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Gravar capa para o disco..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Salvar imagem" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Salvar lista de reprodução" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Salvar lista de reprodução" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Salvar lista de reprodução..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Salvar pré-regulagem" @@ -4117,11 +4168,11 @@ msgstr "Salvar estatísticas em tags de arquivos quando possível" msgid "Save this stream in the Internet tab" msgstr "Salvar esta transmissão na aba de Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Salvando estatísticas de músicas em arquivos de músicas" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Gravando faixas" @@ -4133,7 +4184,7 @@ msgstr "Perfil evolutivo taxa de amostragem (SSR)" msgid "Scale size" msgstr "Tamanho de escala" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Pontuação" @@ -4141,10 +4192,14 @@ msgstr "Pontuação" msgid "Scrobble tracks that I listen to" msgstr "Adicionar ao meu perfil os dados das músicas que eu ouvir" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Pesquisar" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Pesquisar" @@ -4152,23 +4207,23 @@ msgstr "Pesquisar" msgid "Search Icecast stations" msgstr "Pesquisar estações do Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Pesquisar Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Pesquisar Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Pesquisa Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Buscar automaticamente" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Procurar por capas dos álbuns..." @@ -4188,21 +4243,21 @@ msgstr "Procurar no iTunes" msgid "Search mode" msgstr "Modo de pesquisa" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opções de pesquisa" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Resultados da busca" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Termos de pesquisa" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Procurando no Grooveshark" @@ -4210,27 +4265,27 @@ msgstr "Procurando no Grooveshark" msgid "Second level" msgstr "Segundo nível" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Voltar" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Avançar" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Avançar na faixa atual por um tempo relativo" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Avançar na faixa atual para uma posição absoluta" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Selecionar Tudo" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Desmarcar Tudo" @@ -4238,7 +4293,7 @@ msgstr "Desmarcar Tudo" msgid "Select background color:" msgstr "Selecione uma cor de fundo:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Escolha uma imagem de fundo" @@ -4254,7 +4309,7 @@ msgstr "Selecione uma cor de frente:" msgid "Select visualizations" msgstr "Selecionar visualizações" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Selecione as visualizações..." @@ -4262,7 +4317,7 @@ msgstr "Selecione as visualizações..." msgid "Select..." msgstr "Selecionar..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Número de série" @@ -4274,51 +4329,51 @@ msgstr "URL do Servidor" msgid "Server details" msgstr "Detalhes do servidor" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Serviço indisponível" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Mudar %1 para \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Mudar volume para por cento" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Mudar o valor para todas as faixas selecionadas..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Configurações" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Atalho" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Atalho para %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Já existe um atalho para %1" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Exibir" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Mostrar aviso na tela" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Mostrar animação na faixa atual" @@ -4346,15 +4401,15 @@ msgstr "Mostrar uma notificação na área de notificação" msgid "Show a pretty OSD" msgstr "Mostrar aviso estilizado na tela" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Mostrar acima da barra de status" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Mostrar todas as músicas" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Mostrar todas as músicas" @@ -4366,32 +4421,36 @@ msgstr "Mostrar capa na biblioteca" msgid "Show dividers" msgstr "Mostrar divisores" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Exibir em tamanho real..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Exibir grupos no resultado da busca global" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Mostrar no navegador de arquivos..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Mostrar na biblioteca..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Exibir em vários artistas" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Exibir moodbar" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Mostrar somente os duplicados" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Mostrar somente os sem tag" @@ -4400,8 +4459,8 @@ msgid "Show search suggestions" msgstr "Exibir sugestões de busca" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Exibir os botões \"Curtir\" e \"Não curti\"" +msgid "Show the \"love\" button" +msgstr "Exibir o botão \"Curtir\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4415,27 +4474,27 @@ msgstr "Exibir ícone na área de notificação" msgid "Show which sources are enabled and disabled" msgstr "Exibir quais fontes estão habilitadas ou não." -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Mostrar/Ocultar" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Aleatória" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Embaralhar albuns" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Embaralhar tudo" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Embaralhar lista de reprodução" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Embaralhar faixas dos albuns" @@ -4451,7 +4510,7 @@ msgstr "Sair" msgid "Signing in..." msgstr "Conectando..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Artistas similares" @@ -4463,43 +4522,51 @@ msgstr "Tamanho" msgid "Size:" msgstr "Tamanho:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Pular para a música anterior da lista" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Número de pulos" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Pular para a próxima música da lista" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Pular faixas selecionadas" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Pular faixa" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Capa pequena de álbum" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Barra lateral compacta" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Lista de reprodução inteligente" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Listas de reprodução inteligentes" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Suave" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4507,11 +4574,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informações da Música" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Sobre a Música" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonograma" @@ -4531,15 +4598,23 @@ msgstr "Organizar por gênero (popularidade)" msgid "Sort by station name" msgstr "Organizar por nome da estação" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Organizar músicas das listas de reprodução por ordem alfabética" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Organizar músicas por" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Organizando" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Fonte" @@ -4555,7 +4630,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Erro ao conectar no Spotify" @@ -4563,7 +4638,7 @@ msgstr "Erro ao conectar no Spotify" msgid "Spotify plugin" msgstr "Plugin Spofity" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Plugin Spofity não instalado" @@ -4571,77 +4646,77 @@ msgstr "Plugin Spofity não instalado" msgid "Standard" msgstr "Padrão" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Favoritos" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "Iniciar conversão" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Iniciar a lista que está em execução" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Começar conversão" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Comece a digitar algo na caixa de pesquisa para preencher esta lista de resultados." -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Iniciando %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Iniciando..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Estações" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Parar" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Parar depois" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Parar depois desta música" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Parar reprodução" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Parar reprodução depois da música atual" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Parar de reproduzir depois desta faixa: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Parado" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Transmissão" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4651,7 +4726,7 @@ msgstr "Steaming de um servidor Subsonic requer uma licença valida do servidor, msgid "Streaming membership" msgstr "Conta de transmissão multimídia" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Listas de reprodução inscritas" @@ -4659,7 +4734,7 @@ msgstr "Listas de reprodução inscritas" msgid "Subscribers" msgstr "Seguidores" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4667,12 +4742,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Êxito!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 gravado com sucesso" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Tags sugeridas" @@ -4681,13 +4756,13 @@ msgstr "Tags sugeridas" msgid "Summary" msgstr "Resumo" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Super alto (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super alta (2048x2048)" @@ -4699,43 +4774,35 @@ msgstr "Formatos suportados" msgid "Synchronize statistics to files now" msgstr "Sincronizar as estatísticas de arquivos agora" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Sincronizando caixa de entrada do Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Sincronizando listas de reprodução do Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Sincronizando faixas favoritas do Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Cores do Sistema" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Mostrar abas no topo" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tag" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Buscador de tag" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Tag da rádio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Taxa de bits alvo" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4743,11 +4810,11 @@ msgstr "Techno" msgid "Text options" msgstr "Opções de texto" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Agradecimentos a" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "O comando \"%1\" não pôde ser iniciado." @@ -4756,17 +4823,12 @@ msgstr "O comando \"%1\" não pôde ser iniciado." msgid "The album cover of the currently playing song" msgstr "A capa do álbum da música atual" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "O diretório %1 não é válido" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "A lista de reprodução '%1' está vazia ou não pode ser carregada." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "O segundo valor tem que ser maior que o primeiro!" @@ -4774,40 +4836,40 @@ msgstr "O segundo valor tem que ser maior que o primeiro!" msgid "The site you requested does not exist!" msgstr "O site que você pediu não existe!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "O site que você pediu não é uma imagem!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "O período de testes para o servidor Subsonic acabou. Por favor, doe para obter uma chave de licença. Visite subsonic.org para mais detalhes." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "A versão do Clementine para a qual você atualizou requer um reescaneamento completo da biblioteca por causa dos novos recursos listados abaixo:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Há outras músicas neste álbum" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Houve um problema com a comunicação com o gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Houve um problema ao buscar os metadados do Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Houve um problema ao obter resposta do iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4819,13 +4881,13 @@ msgid "" "deleted:" msgstr "Houve problemas ao deletar algumas músicas. Os seguintes arquivos não puderam ser deletados:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Estes arquivos serão deletados do dispositivo, tem certeza que deseja continuar?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,13 +4907,13 @@ msgstr "Essas configurações são usadas na \"Conversão de Músicas\" e, ao co msgid "Third level" msgstr "Terceiro nível" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Essa ação criará um banco de dados que pode ter mais de 150 MB.\nDeseja continuar mesmo assim?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Este álbum não encontra-se disponível no formato requerido" @@ -4865,11 +4927,11 @@ msgstr "O dispositivo deve estar conectado e aberto antes que o Clementine possa msgid "This device supports the following file formats:" msgstr "Este dispositivo suporta os seguintes formatos de arquivo:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Este dispositivo não funcionará corretamente" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Este é um dispositivo MTP, mas você compilou o Clementine sem suporte a libmtp" @@ -4878,7 +4940,7 @@ msgstr "Este é um dispositivo MTP, mas você compilou o Clementine sem suporte msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Este é um iPod, mas você compilou o Clementine sem suporte a libgpod" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4888,33 +4950,33 @@ msgstr "Esta é a primeira vez que você conecta este dispositivo. O Clementine msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Essa opção pode ser alterada nas preferências de \"Comportamento\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Este canal é apenas para assinantes" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Este tipo de dispositivo não é suportado: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Tí­tulo" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Para iniciar a Rádio Grooveshark, você deve primeiro ouvir algumas outras músicas Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Hoje" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Ativar/desativar Pretty OSD" @@ -4922,27 +4984,27 @@ msgstr "Ativar/desativar Pretty OSD" msgid "Toggle fullscreen" msgstr "Ativar/desativar tela cheia" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Mudar status da fila" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Ativar/desativar scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Ativar/desativar visibilidade das notificações em modo bonito" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Amanhã" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Muitos redirecionamentos" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Faixas Top." @@ -4950,21 +5012,25 @@ msgstr "Faixas Top." msgid "Total albums:" msgstr "Total de albuns:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Total de bytes transferido" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Total de requisições de rede feitas" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Faixa" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Faixas" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Converter Música" @@ -4976,7 +5042,7 @@ msgstr "Log do conversor" msgid "Transcoding" msgstr "Conversão" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Convertendo %1 arquivos usando %2 núcleos" @@ -4985,11 +5051,11 @@ msgstr "Convertendo %1 arquivos usando %2 núcleos" msgid "Transcoding options" msgstr "Opção de conversão" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4997,72 +5063,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Desligar" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Site(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Senha Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Nome de usuário Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Banda ultralarga (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Não foi possível baixar %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Desconhecido" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Tipo de conteúdo desconhecido" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Erro desconhecido" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Capa não fixada" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Não pular faixas selecionadas" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Não pular faixa" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Desinscrever" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Próximos shows" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Update" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Atualizar lista de reprodução Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Atualizar todos os podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Atualizar pastas da biblioteca modificadas" @@ -5070,7 +5136,7 @@ msgstr "Atualizar pastas da biblioteca modificadas" msgid "Update the library when Clementine starts" msgstr "Atualizar a biblioteca quando o Clementine iniciar" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Atualizar este podcast" @@ -5078,21 +5144,21 @@ msgstr "Atualizar este podcast" msgid "Updating" msgstr "Atualizando" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Atualizando %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Atualizando %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Atualizando biblioteca" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Utilização" @@ -5100,11 +5166,11 @@ msgstr "Utilização" msgid "Use Album Artist tag when available" msgstr "Usar tag artista-álbum quando disponível" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Usar teclas de atalho do Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Usar metadados Replay Gain, se estiver disponível" @@ -5124,7 +5190,7 @@ msgstr "Usar cores personalizadas" msgid "Use a custom message for notifications" msgstr "Usar uma mensagem personalizada para notificações" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Usar um controle remoto de rede" @@ -5164,20 +5230,20 @@ msgstr "Usar configurações de proxy do sistema" msgid "Use volume normalisation" msgstr "Usar normalização de volume" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Usado" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Usuário %1 não tem uma conta Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interface" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5199,12 +5265,12 @@ msgstr "MP3 com VBR" msgid "Variable bit rate" msgstr "Taxa de bits variável" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Vários artistas" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versão %1" @@ -5217,7 +5283,7 @@ msgstr "Exibir" msgid "Visualization mode" msgstr "Modo de visualização" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualizações" @@ -5225,11 +5291,15 @@ msgstr "Visualizações" msgid "Visualizations Settings" msgstr "Configurações de visualização" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Detecção de atividade de voz" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volume %1%" @@ -5247,11 +5317,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Avisar-me quando fechar uma guia de lista de reprodução" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5259,7 +5329,7 @@ msgstr "Wav" msgid "Website" msgstr "Website" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Semanas" @@ -5285,32 +5355,32 @@ msgstr "Por que não tentar..." msgid "Wide band (WB)" msgstr "Banda larga (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: ativado" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: conectado" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: bateria crítica (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: desativado" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: desconectado" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: bateria fraca (%2%)" @@ -5331,7 +5401,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Áudio do Windows Media" @@ -5339,25 +5409,25 @@ msgstr "Áudio do Windows Media" msgid "Without cover:" msgstr "Sem capas:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Gostaria de mover as outras músicas deste álbum para Vários Artistas?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Gostaria de realizar um reescaneamento completo agora?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Escrever todas as estatísticas de músicas em arquivos de canções" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nome de usuário ou senha incorreta." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5369,11 +5439,11 @@ msgstr "Ano" msgid "Year - Album" msgstr "Ano - Álbum" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Anos" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Ontem" @@ -5381,13 +5451,13 @@ msgstr "Ontem" msgid "You are about to download the following albums" msgstr "Você fará o download dos seguintes álbuns" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Você está prestes a apagar %1 listas de seus favoritos, tem certeza?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5397,12 +5467,12 @@ msgstr "Você está prestes a remover uma lista de reprodução que não é part msgid "You are not signed in." msgstr "Você não está logado." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Você está logado como %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Você está logado." @@ -5410,13 +5480,13 @@ msgstr "Você está logado." msgid "You can change the way the songs in the library are organised." msgstr "Você pode mudar a forma de organização das músicas na biblioteca." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Você pode ouvir de graça sem uma conta, mas os membros Premium podem ouvir transmissões de alta qualidade, sem propagandas." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5426,13 +5496,6 @@ msgstr "Você pode ouvir as músicas do Magnatune de graça, sem uma conta. Comp msgid "You can listen to background streams at the same time as other music." msgstr "Você pode ouvir sons de fundo ao mesmo tempo que ouve uma música." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Você pode obter os nomes das faixas de graça, mas apenas assinantes podem ouvir rádio da Last.fm do Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Você pode usar seu Wii Remote como controle remoto do Clementine. Veja a página na wiki do Clementine para mais informações.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Você não tem uma conta Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Você não tem uma conta Spotify Premium." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Você não possui um cadastro ativo." -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Você não precisa estar logado para procurar e ouvir músicas no SoundCloud. Porém, você precisa se logar para acessar suas listas de reprodução e seu fluxo." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Você foi desconectado do Spotify, por favor re-digite sua senha na caixa de diálogo Configurações." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Você foi desconectado do Spotify, por favor re-digite sua senha." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Você curtiu essa faixa" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Você deve iniciar as Preferências do Sistema e permitir que o Clementine \"controle o seu computador\" para poder usar atalhos globais no Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5477,17 +5554,11 @@ msgstr "Você precisa acessar as Preferências de Sistema e habilitar a opção msgid "You will need to restart Clementine if you change the language." msgstr "Você precisará reiniciar o Clementine se mudar o idioma." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Você não poderá escutar a rádio Last.fm se você não for um assinante Last.fm" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Seu endereço de IP:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Suas credencias do Last.fm estavam incorretas" @@ -5495,42 +5566,43 @@ msgstr "Suas credencias do Last.fm estavam incorretas" msgid "Your Magnatune credentials were incorrect" msgstr "Suas credenciais do Magnatune estão incorretas" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Sua biblioteca está vazia!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Seus canais de rádio" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Seus scrobbles: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Seu sistema não tem suporte ao OpenGL, as visualizações estão indisponíveis." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Usuário e/ou senha inválidos" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "Adicionar %n músicas" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "após" @@ -5550,19 +5622,19 @@ msgstr "automático" msgid "before" msgstr "antes" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "entre" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "maiores primeiro" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "contém" @@ -5572,20 +5644,20 @@ msgstr "contém" msgid "disabled" msgstr "desabilitado" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disco %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "não contém" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "termina com" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "iguais" @@ -5593,11 +5665,11 @@ msgstr "iguais" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "Diretório gpodder.net" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "maior que" @@ -5605,54 +5677,55 @@ msgstr "maior que" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "iPods e dispositivos USB atualmente não funcionam no Windows. Desculpe!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "nos últimos" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "menor que" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "mais longas primeiro" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "mover %n músicas" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "mais novas primeiro" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "não equivale" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "não no final" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "desligado" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "mais antigas primeiro" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "ligado" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "opções" @@ -5664,36 +5737,37 @@ msgstr "ou escanear um código QR!" msgid "press enter" msgstr "Pressione enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "Remover %n músicas" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "mais curtas primeiro" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "músicas aleatórias" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "menores primeiro" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "Classificação das músicas" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "começa com" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "parar" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "faixa %1" diff --git a/src/translations/ro.po b/src/translations/ro.po index ac3a05ee6..9087451d9 100644 --- a/src/translations/ro.po +++ b/src/translations/ro.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Romanian (http://www.transifex.com/projects/p/clementine/language/ro/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Language: ro\n" "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -43,9 +43,9 @@ msgstr "" msgid " kbps" msgstr "kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "ms" @@ -58,11 +58,16 @@ msgstr "pct" msgid " seconds" msgstr " secunde" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " melodii" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albume" @@ -72,12 +77,12 @@ msgstr "%1 albume" msgid "%1 days" msgstr "%1 zile" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 zile în urmă" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -87,48 +92,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 liste de redare (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 selectat din" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 melodie" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 melodii" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 melodii găsite" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 melodii găsite (se afișează %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 melodii" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 transferat" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: modul Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 alți ascultători" @@ -142,18 +147,21 @@ msgstr "%L1 redări în total" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n eșuat" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n finalizat" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n rămas" @@ -165,24 +173,24 @@ msgstr "&Aliniază textul" msgid "&Center" msgstr "&Centrat" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Personalizat" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extra" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Ajutor" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Ascunde %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Ascunde..." @@ -190,23 +198,23 @@ msgstr "&Ascunde..." msgid "&Left" msgstr "La &stânga" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Muzică" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nespecificat" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Listă de redare" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Ieși" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Mod repetitiv" @@ -214,23 +222,23 @@ msgstr "Mod repetitiv" msgid "&Right" msgstr "La &dreapta" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Mod &aleator" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Îngustează coloanele pentru a se potrivi în fereastră" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Unelte" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(diferit în cadrul mai multor melodii)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...și tuturor contribuitorilor Amarok" @@ -250,14 +258,10 @@ msgstr "" msgid "1 day" msgstr "1 zi" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 melodie" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -267,7 +271,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 de melodii aleatoare" @@ -275,12 +279,6 @@ msgstr "50 de melodii aleatoare" msgid "Upgrade to Premium now" msgstr "Upgradează la Premium acum" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -291,6 +289,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -299,38 +308,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Jetoanele începe cu%, de exemplu:% artist %album %titlu \n\n

Dacă încadrați secțiuni de text care conțin un jeton cu bucle-acolade, această secţiune va fi ascunsă dacă jetonul este gol." -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Este necesar un cont Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Este necesar un cont Spotify Premium." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "O listă de redare inteligentă este o listă dinamică de melodii care vin din biblioteca ta. Există diferite tipuri de liste de redare inteligente care oferă moduri diferite de selectare melodii." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "O melodie va fi inclusă în lista de redare dacă îndeplinește aceste condiții." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -350,36 +359,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "GLORIE HYPNOTOADULUI" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Despre %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Despre Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Despre Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detalii cont" @@ -391,11 +399,15 @@ msgstr "Detalii cont (Premium)" msgid "Action" msgstr "Acțiune" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Activează/dezactivează telecomanda Wii" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -411,39 +423,39 @@ msgstr "Adaugă o linie nouă dacă este acceptată de tipul de notificare" msgid "Add action" msgstr "Adaugă o acțiune" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Adaugă alt flux..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Adaugă dosar..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Adaugă fisier" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Adaugă fișier..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Adaugă fișiere pentru transcodat" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Adaugă dosar" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Adăugă dosar..." @@ -455,11 +467,11 @@ msgstr "Adaugă un dosar nou..." msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Adaugă termen de căutare" @@ -523,6 +535,10 @@ msgstr "Adaugă de câte ori am sărit peste melodie" msgid "Add song title tag" msgstr "Adaugă tagul de titlu al melodiei" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Adaugă tagul de pistă al melodiei" @@ -531,22 +547,34 @@ msgstr "Adaugă tagul de pistă al melodiei" msgid "Add song year tag" msgstr "Adaugă tagul de an al melodiei" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Adaugă flux..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Adaugă la favoritele Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Adaugă la listele de redare Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Adaugă la altă listă de redare" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Adaugă în lista de redare" @@ -555,6 +583,10 @@ msgstr "Adaugă în lista de redare" msgid "Add to the queue" msgstr "Adaugă la coadă" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Adaugă o acțiune pentru wiimotedev" @@ -584,15 +616,15 @@ msgstr "Adăugat azi" msgid "Added within three months" msgstr "Adăugat în ultimele trei luni" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Adăugare melodie la favorite" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Grupare avansată..." @@ -600,12 +632,12 @@ msgstr "Grupare avansată..." msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "După copiere..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -613,11 +645,11 @@ msgstr "După copiere..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (volum ideal pentru toate piesele)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -627,35 +659,36 @@ msgstr "Artistul albumului" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informații despre album de la jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albume cu coperți" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albume fără coperți" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Toate fișierele (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Glorie Hypnotoadului!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Toate albumele" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Toți artiștii" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Toate fișierele (*)" @@ -664,19 +697,19 @@ msgstr "Toate fișierele (*)" msgid "All playlists (%1)" msgstr "Toate listele de redare (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Toți traducătorii" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Toate melodiile" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -701,30 +734,30 @@ msgstr "Arată întotdeauna fereastra principală" msgid "Always start playing" msgstr "Începe redarea întotdeauna" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Este necesara activarea unui plugin pentru utlizarea Spotify in Clementine. Doriți să fie descărcat si instalat acum?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "A apărut o eroare la încărcarea bazei de date iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "A apărut o eroare la scrierea metadata '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Și:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -733,13 +766,13 @@ msgstr "" msgid "Appearance" msgstr "Aspect" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Adaugă fișiere/URL-uri în lista de redare" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Adaugă în lista de redare curentă" @@ -747,52 +780,47 @@ msgstr "Adaugă în lista de redare curentă" msgid "Append to the playlist" msgstr "Adaugă în lista de redare" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Alicați compresia pentru a preveni tăierea" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Sigur doriți să ștergeți presetarea \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Sigur doriți să ștergeți această listă de redare?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Sigur doriți să resetați statisticile acestei melodii?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Info artist" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radioul artistului" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Etichetele artistului" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Inițiala artistului" @@ -800,9 +828,13 @@ msgstr "Inițiala artistului" msgid "Audio format" msgstr "Format audio" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentificarea a eșuat" @@ -810,7 +842,7 @@ msgstr "Autentificarea a eșuat" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autori" @@ -826,7 +858,7 @@ msgstr "Încărcare automată" msgid "Automatically open single categories in the library tree" msgstr "Deschide automat categorii singure din bibliotecă" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Disponibil" @@ -834,15 +866,15 @@ msgstr "Disponibil" msgid "Average bitrate" msgstr "Rată de biți medie" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Dimensiunea medie a imaginii" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +895,7 @@ msgstr "" msgid "Background opacity" msgstr "Opacitatea fundalului" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -871,11 +903,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Blochează" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Analizator cu bare" @@ -895,18 +923,17 @@ msgstr "Comportament" msgid "Best" msgstr "Optim" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografie de la %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Rată de biți" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -914,7 +941,12 @@ msgstr "Rată de biți" msgid "Bitrate" msgstr "Rată de biți" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Analizator cu blocuri" @@ -930,7 +962,7 @@ msgstr "" msgid "Body" msgstr "Corp" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Analizator cu brațe" @@ -944,11 +976,11 @@ msgstr "" msgid "Browse..." msgstr "Navighează..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -960,43 +992,66 @@ msgstr "" msgid "Buttons" msgstr "Butoane" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE placa suport" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Anulare" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Schimbă imaginea coperții" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Schimbă dimensiunea fontului..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Schimba modul repetiție" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Schimbă scurtătura..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Schimbă modul amestecare" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Schimbă limba" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1006,15 +1061,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Verifică după actualizări..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Alegeți un nume pentru lista de redare inteligentă" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Alege automat" @@ -1030,11 +1089,11 @@ msgstr "Alege font..." msgid "Choose from the list" msgstr "Alegeți din listă" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Alegeți cum va fi sortată lista de redare și câte melodii va conține." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1043,7 +1102,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Alegeți paginile web pe care doriți ca Clementine să le folosească pentru a căuta versuri." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Clasică" @@ -1051,17 +1110,17 @@ msgstr "Clasică" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Golește" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Golește lista de redare" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1074,8 +1133,8 @@ msgstr "Eroare Clementine" msgid "Clementine Orange" msgstr "Portocaliu Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Vizualizare Clementine" @@ -1097,8 +1156,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1112,20 +1171,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine nu a putut încărca nici un projectM vizualizări. Verificaţi dacă aţi instalat corect Clementine." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine nu a putut verifica statusul abonamentului tău pentru că sunt probleme cu conexiunea ta. Melodiile ascultate vor fi salvate și trimise la Last.fm mai târziu." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Vizualizator de imagini Clementine" @@ -1137,11 +1189,11 @@ msgstr "Clementine nu a reușit să găsească rezultate pentru acest fişier" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Clic aici pentru a adăuga niște muzică" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1151,7 +1203,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Click aici pentru a comuta între timpul rămas şi durata totală" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1166,19 +1221,19 @@ msgstr "Închidere" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Închide vizualizarea" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Închiderea acestei ferestre va anula descărcarea." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Se va opri căutarea pentru coperti de albume la închiderea acestei ferestre." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1186,73 +1241,78 @@ msgstr "Club" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Listă separată prin virgulă de clasă:nivel, nivel este 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Comentariu" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Completează etichetele automat" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Taguri complete în mod automat ..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Compozitor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Configureză Grooveshark ..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Configurează Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Configurează Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Configurează scurtături" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Configurare Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Configurează biblioteca..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Configurează..." @@ -1260,11 +1320,11 @@ msgstr "Configurează..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Conectează telecomenzile Wii folosind active / acţiune deactive" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Conectează un dispozitiv" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Se conectează la Spotify" @@ -1274,12 +1334,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1295,17 +1359,21 @@ msgstr "Convertește toată muzica" msgid "Convert any music that the device can't play" msgstr "Convertește muzica pe care nu o poate reda dispozitivul" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Copiază în clipboard" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Copiază pe dispozitiv..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Copiază în bibliotecă..." @@ -1313,156 +1381,152 @@ msgstr "Copiază în bibliotecă..." msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nu este posibilă crearea elementului GStreamer \"%1\" - asiguraţi-vă că aveţi toate plugin-urile necesare GStreamer instalat" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nu s-a putut găsi un muxer de %1, verifică dacă ai instalat plugin-uri corecte GStreamer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Nu s-a putut găsi un encoder pentru %1, verifică dacă ai instalat plugin-uri corecte GStreamer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Nu s-a putut încărca postul de radio last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Nu s-a putut deschide fișierul de ieșire %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Gestionar de coperți" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Coperta din imagine încorporată" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Coperta încarcată de la %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Deselectează manual coperta" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Coperta nu este stabilită" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Copertă stabilită de la %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Coperte din %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Creează o nouă listă de redare Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Cross-fade la schimbarea automată a pieselor" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Cross-fade la schimbarea manuală a pieselor" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1470,7 +1534,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Personalizat" @@ -1482,54 +1546,50 @@ msgstr "" msgid "Custom message settings" msgstr "Setări mesaj personalizat" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Radio personalizat" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Personalizat..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus path" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Data creării" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Data modificării" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Zile" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Implicit" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Reduce volumul cu 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Redu volumul" @@ -1537,6 +1597,11 @@ msgstr "Redu volumul" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Implicite" @@ -1545,30 +1610,30 @@ msgstr "Implicite" msgid "Delay between visualizations" msgstr "Întârziere între vizualizări" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Șterge listă de redare Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Șterge fișiere" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Șterge de pe dispozitiv..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Șterge de pe disc..." @@ -1576,31 +1641,31 @@ msgstr "Șterge de pe disc..." msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Șterge preconfigurarea" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Șterge lista de redare inteligentă" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Șterge fișierele originale" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Se șterg fișierele" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Elimină melodiile selectate din coadă" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Elimină melodie din coadă" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Destinaţie" @@ -1609,7 +1674,7 @@ msgstr "Destinaţie" msgid "Details..." msgstr "Detalii..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Dispozitiv" @@ -1621,15 +1686,15 @@ msgstr "Proprietățile dispozitivului" msgid "Device name" msgstr "Numele dispozitivului" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Dispozitiv de proprietăți..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Dispozitive" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1666,12 +1731,17 @@ msgstr "Dezactivează durată" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Dezactivat" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disc" @@ -1681,15 +1751,15 @@ msgid "Discontinuous transmission" msgstr "Transmisie discontinuă" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Afișează opțiunile" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Efectuează o scanare completa la librăriei" @@ -1701,27 +1771,27 @@ msgstr "Nu converti muzică" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Nu repeta" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Nu arăta în artiști diferiți" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Nu amesteca" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Nu opri!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dublu clic pentru a deschide" @@ -1729,12 +1799,13 @@ msgstr "Dublu clic pentru a deschide" msgid "Double clicking a song will..." msgstr "Dublu clic pe o melodie va..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Descarcă dosarul" @@ -1750,7 +1821,7 @@ msgstr "Descarcă apartenență" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1758,15 +1829,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Descarcă acest album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Descarcă acest album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1774,7 +1845,7 @@ msgstr "" msgid "Download..." msgstr "Descărcare..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1783,23 +1854,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "Descărcare dosarul Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Descărcare catalog Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Descărcare catalog Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Se descarcă pluginul Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Descărcare metadata" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Trage pentru a repoziționa" @@ -1819,20 +1890,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Modul dinamic este pornit" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Mix aleator dinamic" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Editare listă de redare inteligentă..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Modifică etichetă..." @@ -1844,16 +1915,16 @@ msgstr "Modifica etichete" msgid "Edit track information" msgstr "Modifică informații melodie" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Modifică informații melodie..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Modifică informații melodii..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Modifică..." @@ -1861,6 +1932,10 @@ msgstr "Modifică..." msgid "Enable Wii Remote support" msgstr "Activare Wii Remote support" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Activare egalizator" @@ -1875,7 +1950,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Efectuează o scanare completă a bibliotecii" @@ -1903,15 +1978,10 @@ msgstr "Introduce un URL pentru a descărca de pe internet:" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Introduce un nume nou pentru această listă de redare" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Introduce un artist or tag pentru a demara ascultarea la Last.fm radio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1925,7 +1995,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Introduceți aici termenii de căutat" @@ -1934,11 +2004,11 @@ msgstr "Introduceți aici termenii de căutat" msgid "Enter the URL of an internet radio stream:" msgstr "Introduceți URL-ul unui flux radio de pe internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1946,21 +2016,22 @@ msgstr "" msgid "Entire collection" msgstr "Toată colecția" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Egalizator" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Echivalent cu --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Echivalent cu --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Eroare" @@ -1968,38 +2039,38 @@ msgstr "Eroare" msgid "Error connecting MTP device" msgstr "Eroare conectare dispozitiv MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Eroare copiere melodii" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Eroare ștergere melodii" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Eroare la descărcarea pluginului Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Eroare încărcare %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Eroare la încărcarea liste de redare last.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Eroare procesare %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Eroare la încărcarea CD-ului audio" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Redate vreodată" @@ -2031,7 +2102,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Excepție între melodiile de pe același album sau în aceeași filă CUE" @@ -2043,7 +2114,7 @@ msgstr "" msgid "Expand" msgstr "Extinde" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Expiră pe %1" @@ -2064,36 +2135,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2103,42 +2174,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Fade out la oprirea unei piese" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Durată fade" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2147,11 +2218,11 @@ msgstr "" msgid "Fast" msgstr "Rapidă" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favorite" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Melodii favorite" @@ -2167,11 +2238,11 @@ msgstr "Obține automat" msgid "Fetch completed" msgstr "Descărcare completă" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Eroare la obținerea coperții de album" @@ -2179,7 +2250,7 @@ msgstr "Eroare la obținerea coperții de album" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Extensie fișier" @@ -2187,19 +2258,23 @@ msgstr "Extensie fișier" msgid "File formats" msgstr "Formate de fișier" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Nume fișier" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Nume fișier (fără cale)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dimensiune fișier" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2209,7 +2284,7 @@ msgstr "Tip fișier" msgid "Filename" msgstr "Nume de fișier" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fișiere" @@ -2217,15 +2292,19 @@ msgstr "Fișiere" msgid "Files to transcode" msgstr "Fișiere pentru transcodare" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Căutați melodii în biblioteca dvs. care se potrivesc cu criteriile pe care le specificaţi." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Amprentare melodie" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Sfârșit" @@ -2233,7 +2312,7 @@ msgstr "Sfârșit" msgid "First level" msgstr "Primul nivel" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2249,12 +2328,12 @@ msgstr "Din motive de licență, suportul pentru Spotify este într-un plugin se msgid "Force mono encoding" msgstr "Forțează codarea mono" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Omite dispozitivul" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2269,7 +2348,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2297,31 +2376,23 @@ msgstr "Rată de cadre" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Prieteni" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Bass complet" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Bas complet" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Note înalte complete" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Motor audio GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2329,30 +2400,30 @@ msgstr "" msgid "General settings" msgstr "Setări generale" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Gen" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Obținere melodii populare Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Se preiau canalele" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Obținere fluxuri" @@ -2364,11 +2435,11 @@ msgstr "Dați-i un nume:" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Mergi la fila listei de redare următoare" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Mergi la fila listei de redare precedente" @@ -2376,7 +2447,7 @@ msgstr "Mergi la fila listei de redare precedente" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2386,7 +2457,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "Colorează în gri melodiile inexistente în listele de redare" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2394,15 +2465,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Eroare la logarea in Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Radio Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL-ul melodiei Grooveshark" @@ -2410,44 +2481,44 @@ msgstr "URL-ul melodiei Grooveshark" msgid "Group Library by..." msgstr "Grupează Bibliotecă după..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupează după" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Grupează după album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Grupează după artist" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Grupează după artist/album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Grupează după artist/an - album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Grupează după gen/album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Grupează după gen/artist/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2456,7 +2527,7 @@ msgstr "" msgid "HTTP proxy" msgstr "Proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2472,25 +2543,25 @@ msgstr "Informațiile hardware sunt disponibile numai în timp ce dispozitivul e msgid "High" msgstr "Ridicată" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Înalt (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Înalt (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Ore" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2502,15 +2573,15 @@ msgstr "Nu am un cont Magnatune" msgid "Icon" msgstr "Iconiță" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Iconițe în partea de sus" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identificare melodie" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2520,24 +2591,24 @@ msgstr "Dacă veți continua, acest dispozitiv va funcționa încet și melodiil msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignoră \"The\" in numele artistilor" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Imagini (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Imagini (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2548,7 +2619,7 @@ msgid "" "time a song finishes." msgstr "În modul dinamic, melodii noi vor fi alese și adăugate la lista de redare de fiecare dată când se termină o melodie." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Inbox" @@ -2560,36 +2631,36 @@ msgstr "Includeți album de artă în notificare" msgid "Include all songs" msgstr "Includeți toate melodiile" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Crește volumul cu 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Crește volumul" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informații" @@ -2597,55 +2668,55 @@ msgstr "Informații" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Introduce..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Instalat" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Cheie API invalidă" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Format invalid" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Metodă invalidă" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parametri invalizi" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Resursă specificată este nevalidă" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Serviciu invalid" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Cheie de sesiune invalidă" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Nume de utilizator și/sau parolă incorect(e)" @@ -2653,42 +2724,42 @@ msgstr "Nume de utilizator și/sau parolă incorect(e)" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Cele mai ascultate melodii Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Melodii de top Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo melodii de top ale lunii" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamedo melodii de top ale săptămănii" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo bază de date" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Salt la melodia în curs de redare" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Mențineți butoanele pentru %1 secundă..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Păstrează butoane pentru %1 seconde..." @@ -2697,23 +2768,24 @@ msgstr "Păstrează butoane pentru %1 seconde..." msgid "Keep running in the background when the window is closed" msgstr "Mențineți rularea în fundal atunci când fereastra este închisă" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Mențineți fișierele originale" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Pisoi" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Limbă" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Căști" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Sală mare" @@ -2721,58 +2793,24 @@ msgstr "Sală mare" msgid "Large album cover" msgstr "Copertă de album mare" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Bară laterală mare" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Ultimele redate" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Radio Last.fm personalizat: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Bibliotecă Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Radio Last.fm mix - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Radio vecin Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Post de radio Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Artiști Last.fm similari cu %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Radio Last.fm etichetat: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm este momentan ocupat, încercați din nou peste câteva minute" @@ -2780,11 +2818,11 @@ msgstr "Last.fm este momentan ocupat, încercați din nou peste câteva minute" msgid "Last.fm password" msgstr "Parolă Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Număr de redări Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Etichete Last.fm" @@ -2792,28 +2830,24 @@ msgstr "Etichete Last.fm" msgid "Last.fm username" msgstr "Nume utilizator Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Melodiile cel mai puțin preferate" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Lăsați necompletat pentru implicit. Exemple: \"/ dev /dsp\", \"front\", etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Durată" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliotecă" @@ -2821,24 +2855,24 @@ msgstr "Bibliotecă" msgid "Library advanced grouping" msgstr "Grupare avansată bibliotecă" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Căutare bibliotecă" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limite" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "În direct" @@ -2850,15 +2884,15 @@ msgstr "Încărcare" msgid "Load cover from URL" msgstr "Încarcă copertă de la URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Încarcă copertă de la URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Încarcă copertă de pe disc" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Încarcă coperta pentru disc..." @@ -2866,84 +2900,89 @@ msgstr "Încarcă coperta pentru disc..." msgid "Load playlist" msgstr "Încarcă listă de redare" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Încarcă listă de redare..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Se încarcă radio Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Încarcare dispozitiv MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Încărcare bază de date iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Încărcare listă de redare inteligentă" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Încărcare melodii" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Se încarcă fluxul" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Încărcare melodii" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Încărcare info melodii" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Încărcare..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Încarcă fișiere/URL-uri, înlocuind lista de redare curentă" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Logare" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Profil de predicție pe termen lung (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Iubește" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Scăzut (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2955,12 +2994,17 @@ msgstr "Profil de complexitate redusă (LC)" msgid "Lyrics" msgstr "Versuri" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Versuri de pe %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2972,15 +3016,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2988,7 +3032,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Descărcare Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Descărcarea Magnatune completă" @@ -2996,15 +3040,20 @@ msgstr "Descărcarea Magnatune completă" msgid "Main profile (MAIN)" msgstr "Profil principal (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3017,15 +3066,15 @@ msgstr "Configurare proxy manuală" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Producător" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3037,17 +3086,21 @@ msgstr "Caută toți termenii (ȘI)" msgid "Match one or more search terms (OR)" msgstr "Caută unul sau mai mulți termeni (SAU)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Rata de biți maximă" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Mediu (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Mediu (512x512)" @@ -3059,11 +3112,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "Rata de biți minimă" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3071,20 +3128,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Monitorizează biblioteca pentru schimbări" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Luni" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3092,15 +3149,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Redate cel mai mult" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Punct de montură" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Puncte de montură" @@ -3109,7 +3170,7 @@ msgstr "Puncte de montură" msgid "Move down" msgstr "Mută in jos" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Mută în bibliotecă..." @@ -3118,7 +3179,7 @@ msgstr "Mută în bibliotecă..." msgid "Move up" msgstr "Mută in sus" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3126,56 +3187,32 @@ msgstr "" msgid "Music Library" msgstr "Biblioteca audio" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Mut" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Biblioteca mea Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Vecinătatea mea Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Recomandările mele Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Vecinătatea mea" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Postul meu de radio" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Recomandările mele" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Nume" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opțiuni de numire" @@ -3183,23 +3220,19 @@ msgstr "Opțiuni de numire" msgid "Narrow band (NB)" msgstr "Bandă îngustă (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Vecini" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proxy de Rețea" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Niciodată" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Niciodată redate" @@ -3208,21 +3241,21 @@ msgstr "Niciodată redate" msgid "Never start playing" msgstr "Nu începe redarea niciodată" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Listă de redare nouă" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Listă de redare inteligentă nouă..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Melodii noi" @@ -3230,24 +3263,24 @@ msgstr "Melodii noi" msgid "New tracks will be added automatically." msgstr "Melodii noi vor fi adăugate automat." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Cele mai noi melodii" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Următoarea" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Melodia următoare" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Niciun analizator" @@ -3255,7 +3288,7 @@ msgstr "Niciun analizator" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3263,7 +3296,7 @@ msgstr "" msgid "No long blocks" msgstr "Fără blocuri lungi" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3277,11 +3310,11 @@ msgstr "Fără blocuri scurte" msgid "None" msgstr "Niciunul" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3289,43 +3322,47 @@ msgstr "" msgid "Normal block type" msgstr "Tip normal de bloc" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Indisponibil în timpul folosirii unei liste de redare dinamice" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Neconectat" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nu este destul conținut" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nu sunt destui fani" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nu sunt destui membri" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nu sunt destui vecini" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Neinstalat" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Tipul notificării" @@ -3338,36 +3375,41 @@ msgstr "Notificări" msgid "Now Playing" msgstr "Ascultă Acum" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Previzualizare OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3375,11 +3417,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Arată numai primele" @@ -3387,23 +3429,23 @@ msgstr "Arată numai primele" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Deschide %1 in browser" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Deschide CD &audio..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3411,30 +3453,35 @@ msgstr "" msgid "Open device" msgstr "Deschide dispozitiv" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Deschide fișier..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Deschide în listă de redare nouă" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Deschide..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operația a eșuat" @@ -3454,23 +3501,23 @@ msgstr "Opțiuni..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizează Fișiere" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizează fișiere..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organizare fișiere" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Taguri originale" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Alte opțiuni" @@ -3478,7 +3525,7 @@ msgstr "Alte opțiuni" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3486,15 +3533,11 @@ msgstr "" msgid "Output options" msgstr "Opțiuni ieșire" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Suprascrie fișierele existente" @@ -3506,15 +3549,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Procesare catalog Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Petrecere" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3523,20 +3566,20 @@ msgstr "Petrecere" msgid "Password" msgstr "Parolă" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pauză" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Întrerupe redarea" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "În pauză" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3545,34 +3588,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Bară laterală simplă" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Redă" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Ascultă Artist sau Tag" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Ascultă radio artist..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Număr ascultări" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Redă dacă este oprit, întrerupe dacă se redă" @@ -3581,45 +3612,42 @@ msgstr "Redă dacă este oprit, întrerupe dacă se redă" msgid "Play if there is nothing already playing" msgstr "Redă numai dacă nu se redă deja ceva" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Ascultă radio tag..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Redă melodia a a din lista de redare" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Rulează/Pauză" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Redare" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opțiuni player" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Listă de redare" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Listă de redare terminată" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opțiuni listă de redare" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tipul listei de redare" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Liste de redare" @@ -3631,23 +3659,23 @@ msgstr "" msgid "Plugin status:" msgstr "Status plugin:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Melodii populare" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Melodiile populare ale lunii" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Melodii populare azi" @@ -3656,22 +3684,23 @@ msgid "Popup duration" msgstr "Durata afișării" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Preamplificare" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Preferinţe" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Preferinţe..." @@ -3707,7 +3736,7 @@ msgstr "Apasă o combinație de butoane pentru a folosi la" msgid "Press a key" msgstr "Apasă o tastă" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Apasă o combinație de taste pentru a folosi la %1..." @@ -3718,20 +3747,20 @@ msgstr "Opțiuni OSD drăguț" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Previzualizare" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Precedenta" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Melodia precedentă" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Tipărește informații versiune" @@ -3739,21 +3768,25 @@ msgstr "Tipărește informații versiune" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Progres" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Apasă buton Wiimote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Aranjează melodiile într-o ordine aleatoare" @@ -3761,85 +3794,95 @@ msgstr "Aranjează melodiile într-o ordine aleatoare" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Calitate" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Interoghez dispozitiv..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Gestionar de listă" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Adaugă în coadă melodiile selectate" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Adaugă în coadă melodia" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radiouri" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Ploaie" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Vizualizare aleatorie" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3847,19 +3890,15 @@ msgstr "" msgid "Refresh channels" msgstr "Reîncarcă canalele" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3871,8 +3910,8 @@ msgstr "" msgid "Remember from last time" msgstr "Ține minte de data trecută" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Elimină" @@ -3880,7 +3919,7 @@ msgstr "Elimină" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3888,73 +3927,77 @@ msgstr "" msgid "Remove folder" msgstr "Șterge folder" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Scoate din favorite" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Elimină din lista de redare" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Redenumește listă de redare" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Redenumește listă de redare..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Repetă" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Repetă albumul" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Repetă lista" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Repetă melodia" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Înlocuiește lista de redare curentă" @@ -3963,15 +4006,15 @@ msgstr "Înlocuiește lista de redare curentă" msgid "Replace the playlist" msgstr "Înlocuiește lista de redare" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3979,24 +4022,24 @@ msgstr "" msgid "Repopulate" msgstr "Repopulează" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Resetare" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Resetează numărul de ascultări" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4004,15 +4047,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Obținere melodii favorite Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4032,11 +4075,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4048,25 +4091,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "Proxy SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Rată de eșantionare" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4074,27 +4117,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Salvează imagine" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Salvează listă de redare" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Salvează listă de redare..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Salvează presetări" @@ -4110,11 +4159,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "Salvează fluxul in fila Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4126,7 +4175,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Scor" @@ -4134,34 +4183,38 @@ msgstr "Scor" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Căutare" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Caută în posturile Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Caută în Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Caută în Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Caută coperți pentru album..." @@ -4181,21 +4234,21 @@ msgstr "" msgid "Search mode" msgstr "Modul căutării" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opțiuni căutare" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Termeni de căutat" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4203,27 +4256,27 @@ msgstr "" msgid "Second level" msgstr "Al doilea nivel" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Selectează Tot" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4231,7 +4284,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4247,7 +4300,7 @@ msgstr "" msgid "Select visualizations" msgstr "Selectează vizualizări" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Selectează vizualizări..." @@ -4255,7 +4308,7 @@ msgstr "Selectează vizualizări..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4267,51 +4320,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Serviciu offline" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Scurtătură" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Scurtătură pentru %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Scurtătură pentru %1 există deja" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Arată" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Arată OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4339,15 +4392,15 @@ msgstr "Arată o notificare din zona de notificări" msgid "Show a pretty OSD" msgstr "Arată un OSD drăguț" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Arată toate melodiile" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Arată toate melodiile" @@ -4359,32 +4412,36 @@ msgstr "" msgid "Show dividers" msgstr "Arată separatori" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Arată în browser-ul de fișiere..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Arată în artiști diferiți" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Arată numai duplicatele" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Arată numai fără taguri" @@ -4393,7 +4450,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4408,27 +4465,27 @@ msgstr "Arată pictogramă în tava de sistem" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Arată/Ascunde" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Amestecă" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Amestecă albume" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Amestecă tot" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Amestecă lista de melodii" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Amestecă melodiile din acest album" @@ -4444,7 +4501,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Artiști similari" @@ -4456,43 +4513,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Sare în listă înapoi" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Sare în listă înainte" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Imagine album mică" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Bară laterală mică" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Listă de redare inteligentă" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Liste de redare inteligente" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4500,11 +4565,11 @@ msgstr "" msgid "Song Information" msgstr "Informații melodie" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Info melodie" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4524,15 +4589,23 @@ msgstr "Sortează după gen (după popularitate)" msgid "Sort by station name" msgstr "Sortează după numele stației" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Sortează melodii după" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sortare" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4548,7 +4621,7 @@ msgstr "" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Eroare la logarea în Spotify" @@ -4556,7 +4629,7 @@ msgstr "Eroare la logarea în Spotify" msgid "Spotify plugin" msgstr "Plugin Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Pluginul Spotify nu este instalat" @@ -4564,77 +4637,77 @@ msgstr "Pluginul Spotify nu este instalat" msgid "Standard" msgstr "Standard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Cu steluță" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Începe transcodare" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Pornire %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Pornire..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Posturi" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Oprește" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Oprește după" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Oprește după pista aceasta" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Oprește redarea" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Oprește rularea după melodia curentă" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Oprit" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Flux" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4644,7 +4717,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4652,7 +4725,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4660,12 +4733,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Taguri sugerate" @@ -4674,13 +4747,13 @@ msgstr "Taguri sugerate" msgid "Summary" msgstr "Sumar" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4692,43 +4765,35 @@ msgstr "Formate acceptate" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "File deasupra" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tag" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Rată de biți țintă" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4736,11 +4801,11 @@ msgstr "Techno" msgid "Text options" msgstr "Opțiuni text" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Mulțumiri" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4749,17 +4814,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Dosarul %1 nu este valid" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4767,40 +4827,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "Site-ul pe care l-ați solicitat nu există!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4812,13 +4872,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4838,13 +4898,13 @@ msgstr "" msgid "Third level" msgstr "Al treilea nivel" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Acest album nu este valabil în formatul cerut" @@ -4858,11 +4918,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Acest dispozitiv nu va funcționa corespunzător" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4871,7 +4931,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Acesta este un iPod, dar ați compilat Clementine fără suport libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4881,33 +4941,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titlu" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Pentru a putea porni radioul Grooveshark, ar trebui mai întâi să mai ascultați câteva melodii Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Astăzi" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4915,27 +4975,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4943,21 +5003,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Pistă" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transcodează Muzică" @@ -4969,7 +5033,7 @@ msgstr "Logul Transcoderului" msgid "Transcoding" msgstr "Transcodare" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4978,11 +5042,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4990,72 +5054,72 @@ msgstr "" msgid "Turn off" msgstr "Oprește" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(-uri)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Necunoscut" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Eroare necunoscută" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Actualizează foldere schimbate din bibliotecă" @@ -5063,7 +5127,7 @@ msgstr "Actualizează foldere schimbate din bibliotecă" msgid "Update the library when Clementine starts" msgstr "Actualizează librăria când pornește Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5071,21 +5135,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Actualizare %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Actualizare %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Se actualizează biblioteca" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Utilizare" @@ -5093,11 +5157,11 @@ msgstr "Utilizare" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5117,7 +5181,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5157,20 +5221,20 @@ msgstr "Folosește setările de proxy ale sistemului" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Interfață utilizator " -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5192,12 +5256,12 @@ msgstr "MP3 VBR" msgid "Variable bit rate" msgstr "Rată de biți variabilă" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Artiști diferiți" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versiunea %1" @@ -5210,7 +5274,7 @@ msgstr "Vizualizare" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Vizualizări" @@ -5218,11 +5282,15 @@ msgstr "Vizualizări" msgid "Visualizations Settings" msgstr "Setări vizualizări" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volum %1%" @@ -5240,11 +5308,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5252,7 +5320,7 @@ msgstr "Wav" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Săptămâni" @@ -5278,32 +5346,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5324,7 +5392,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5332,25 +5400,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5362,11 +5430,11 @@ msgstr "An" msgid "Year - Album" msgstr "An - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Ani" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Ieri" @@ -5374,13 +5442,13 @@ msgstr "Ieri" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5390,12 +5458,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5403,13 +5471,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Puteți asculta gratuit fără un cont, însă membrii Premium pot asculta fluxuri de calitate mai bună fără reclame." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5419,13 +5487,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Nu aveți un cont Spotify Premium." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5470,17 +5545,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "Vei fi nevoit să restartezi Clementine dacă schimbi limba." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5488,42 +5557,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Biblioteca este goală!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Fluxurile dumneavoastră radio" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Parola sau numele de utilizator au fost incorecte." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "adaugă %n melodii" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "după" @@ -5543,19 +5613,19 @@ msgstr "automat" msgid "before" msgstr "inainte" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "între" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "conține" @@ -5565,20 +5635,20 @@ msgstr "conține" msgid "disabled" msgstr "dezactivat" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disc %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "nu conține" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "se termină cu" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5586,11 +5656,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "mai mare decât" @@ -5598,54 +5668,55 @@ msgstr "mai mare decât" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "întâi cele mai noi" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "opțiuni" @@ -5657,36 +5728,37 @@ msgstr "" msgid "press enter" msgstr "apasă enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "elimină %n melodii" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "cele mai scurte primele" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "cele mai mici primele" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "începând cu" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "oprește" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "pista %1" diff --git a/src/translations/ru.po b/src/translations/ru.po index d85620281..64e636942 100644 --- a/src/translations/ru.po +++ b/src/translations/ru.po @@ -3,9 +3,11 @@ # This file is distributed under the same license as the Clementine package. # # Translators: +# adem4ik, 2014 # Andrey Alekseenko , 2012 # Alexander <>, 2012 # Alexander Vysotskiy , 2012 +# adem4ik, 2014 # Andy Dufrane <>, 2012 # arnaudbienner , 2011 # drmx , 2013 @@ -29,22 +31,22 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-05-11 07:40+0000\n" +"Last-Translator: adem4ik\n" "Language-Team: Russian (http://www.transifex.com/projects/p/clementine/language/ru/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" "You can favorite playlists by clicking the star icon next to a playlist name\n" "\n" "Favorited playlists will be saved here" -msgstr "\n\nВы можете занести список воспроизведения в избранное кликнув по иконке со звёздочкой возле имени списка\n\nИзбранные списки воспроизведения будут сохранены здесь" +msgstr "\n\nВы можете занести плейлист в избранные, кликнув по звёздочке возле имени списка\n\nИзбранные плейлисты будут сохранены здесь" #: ../bin/src/ui_podcastsettingspage.h:246 msgid " days" @@ -62,9 +64,9 @@ msgstr "дней" msgid " kbps" msgstr "кбит/с" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " мс" @@ -77,11 +79,16 @@ msgstr " пунктов" msgid " seconds" msgstr "с" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " композиции" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 композиций)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 альбом(ов)" @@ -91,12 +98,12 @@ msgstr "%1 альбом(ов)" msgid "%1 days" msgstr "%1 дней" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 дней назад" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 на %2" @@ -104,50 +111,50 @@ msgstr "%1 на %2" #: playlistparsers/playlistparser.cpp:76 #, qt-format msgid "%1 playlists (%2)" -msgstr "%1 списков воспроизведения (%2)" +msgstr "%1 плейлистов (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 выбрано из" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 композиция" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 композиций" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 композиций найдено" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 композиций найдено (показано %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 композиций" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 передано" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: модуль Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 других слушателей" @@ -161,18 +168,21 @@ msgstr "всего %L1 прослушиваний" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n с ошибкой" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n завершено" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n осталось" @@ -184,24 +194,24 @@ msgstr "Выровнять &текст" msgid "&Center" msgstr "По &центру" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Другой" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Дополнения" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Помощь" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Скрыть %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Скрыть..." @@ -209,23 +219,23 @@ msgstr "Скрыть..." msgid "&Left" msgstr "По &левому краю" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Музыка" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Нет" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" -msgstr "Список воспроизведения" +msgstr "&Плейлист" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Выход" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Режим повтора" @@ -233,25 +243,25 @@ msgstr "Режим повтора" msgid "&Right" msgstr "По &правому краю" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Случайное воспроизведение" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Выровнять поля по размеру окна" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Инструменты" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(различный через несколько композиций)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" -msgstr "...и всем создателям Amarok" +msgstr "...и всех создателей Amarok" #: ../bin/src/ui_albumcovermanager.h:223 ../bin/src/ui_albumcovermanager.h:224 msgid "0" @@ -269,14 +279,10 @@ msgstr "0px" msgid "1 day" msgstr "1 день" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 композиция" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -286,7 +292,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 случайных композиций" @@ -294,12 +300,6 @@ msgstr "50 случайных композиций" msgid "Upgrade to Premium now" msgstr "Обновить до версии Premium сейчас" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Создать новую учетную запись или сбросить Ваш пароль" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -310,46 +310,57 @@ msgid "" "music players might not be able to read them.

" msgstr "

Если не отмечено, то Clementine попытается сохранить ваши рейтинги и другие статистические данные только в отдельной базе данных без изменения ваших файлов.

Если отмечено, то статистические данные будут сохранены как в базе данных, так и прямо в файле каждый раз при их изменении.

Имейте в виду, что это может не работать для каждого формата и, поскольку стандартов для этого нет, другие музыкальные проигрыватели могут не прочесть их.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Допишите название поле, чтобы ограничить поиск по этому полю, например Исполнитель:Bode ищет фонотеке всех исполнителей со словом \"Bode\".

Доступные поля: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " "files tags for all your library's songs.

This is not needed if the " ""Save ratings and statistics in file tags" option has always been " "activated.

" -msgstr "

С помощью этого рейтинг и статистические данные композиции будет записаны в теги файлов для всех композиций вашей медиатеки.

Это не требуется, если постоянно активирован параметр "Сохранять рейтинги и статистические данные в теги файла".

" +msgstr "

С помощью этого рейтинг и статистические данные композиции будет записаны в теги файлов для всех композиций вашей фонотеки.

Это не требуется, если постоянно активирован параметр "Сохранять рейтинги и статистические данные в теги файла".

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Поля начинаются со знака %, например: %artist %album %title

\n\n

Если Вы окружили часть текста фигурными скобками, то эта часть текста не будет видна, если значения полей будут пустыми

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Требуется учётная запись Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Требуется Premium аккаунт Spotify" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Клиент может подключиться, только если был введен правильный код." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." -msgstr "Умный список воспроизведения — это динамический список композиций из Вашей библиотеки. Существуют различные типы умных списков воспроизведения, предлагающих различные способы выбора композиций." +msgstr "Умный плейлист — это динамический список композиций из вашей фонотеки. Существуют различные типы умных плейлистов, предлагающих различные способы выбора композиций." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." -msgstr "Композиция будет добавлена в список воспроизведения, если соответствует этим условиям." +msgstr "Композиция будет добавлена в плейлист, если соответствует этим условиям." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z (А-Я)" @@ -369,52 +380,55 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64к" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ВСЯ СЛАВА ГИПНОЖАБЕ!" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Прервать" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "О «%1»" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." -msgstr "О программе Clementine..." +msgstr "О Clementine" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." -msgstr "Информация о Qt..." +msgstr "Информация о Qt" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Данные учётной записи" #: ../bin/src/ui_digitallyimportedsettingspage.h:161 msgid "Account details (Premium)" -msgstr "Данные учётной записи (версия Premium)" +msgstr "Данные учётной записи (Премиум)" #: ../bin/src/ui_wiimotesettingspage.h:191 msgid "Action" msgstr "Действие" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Активировать/деактивировать Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Лента активности" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Добавить подкаст" @@ -430,55 +444,55 @@ msgstr "Добавить новую строку, если поддержива msgid "Add action" msgstr "Добавить действие" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Добавить другой поток…" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Добавить каталог…" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Добавить файл" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" -msgstr "Добавить файл для перекодирования" +msgstr "Добавить файл для конвертации" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" -msgstr "Добавить файлы для перекодирования" +msgstr "Добавить файлы для конвертации" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Добавить файл..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" -msgstr "Добавить файлы для перекодирования" +msgstr "Добавить для конвертации" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Добавить папку" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Добавить папку…" #: ../bin/src/ui_librarysettingspage.h:188 msgid "Add new folder..." -msgstr "Добавить новую папку..." +msgstr "Добавить папку" #: ../bin/src/ui_addpodcastdialog.h:179 msgid "Add podcast" msgstr "Добавить подкаст" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Добавить подкаст..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Добавить условие поиска" @@ -542,6 +556,10 @@ msgstr "Добавить число пропусков" msgid "Add song title tag" msgstr "Добавить тег \"Название\"" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Добавить композицию в кэш" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Добавить тег \"Номер дорожки\"" @@ -550,30 +568,46 @@ msgstr "Добавить тег \"Номер дорожки\"" msgid "Add song year tag" msgstr "Добавить тег \"Год\"" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Добавить композиции в \"Мою музыку\", если нажата кнопка \"В любимые\"" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Добавить поток..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Добавить в избранное Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" -msgstr "Добавить в списки воспроизведения Grooveshark" +msgstr "Добавить в плейлисты Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Добавить в Мою музыку" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" -msgstr "Добавить в другой список воспроизведения" +msgstr "Добавить в другой плейлист" + +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Добавить в закладки" #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" -msgstr "Добавить в список воспроизведения" +msgstr "Добавить в плейлист" #: ../bin/src/ui_behavioursettingspage.h:220 msgid "Add to the queue" msgstr "Добавить в очередь" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Добавить пользователя/группу в закладки" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Добавить действие wiimotedev" @@ -603,15 +637,15 @@ msgstr "Добавлено сегодня" msgid "Added within three months" msgstr "Добавлено за три месяца" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Добавление композиции в Мою музыку" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Добавление композиции в избранное" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Расширенная сортировка..." @@ -619,12 +653,12 @@ msgstr "Расширенная сортировка..." msgid "After " msgstr "После " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "После копирования..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -632,11 +666,11 @@ msgstr "После копирования..." msgid "Album" msgstr "Альбом" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" -msgstr "Альбом (идеальная громкость всех композиций)" +msgstr "Альбом (идеальная громкость всех дорожек)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -646,56 +680,57 @@ msgstr "Исполнитель альбома" msgid "Album cover" msgstr "Обложка альбома" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Информация об альбоме на jamendo.com…" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Альбомы с обложками" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Альбомы без обложек" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Все файлы (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Вся слава Гипножабе!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Все альбомы" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Все исполнители" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Все файлы (*)" #: playlistparsers/playlistparser.cpp:63 #, qt-format msgid "All playlists (%1)" -msgstr "Все списки воспроизведения (%1)" +msgstr "Все плейлисты (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" -msgstr "Все переводчики" +msgstr "Всех переводчиков" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Все композиции" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Позволяет клиенту скачивать музыку с этого компьютера." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Разрешить загрузки" @@ -720,98 +755,93 @@ msgstr "Всегда показывать главное окно" msgid "Always start playing" msgstr "Всегда начинать воспроизведение" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Требуется дополнительный модуль для использования Spotify в Clementine. Скачать и установить его?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Произошла ошибка при загрузке данных iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Ошибка при записи мета-данных в '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Произошла неизвестная ошибка." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "А также:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" -msgstr "Сердитое" +msgstr "Сердитый" #: ../bin/src/ui_songinfosettingspage.h:155 #: ../bin/src/ui_appearancesettingspage.h:271 msgid "Appearance" msgstr "Внешний вид" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" -msgstr "Добавить файлы/URLs в список воспроизведения" +msgstr "Добавить файлы/URLs в плейлист" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" -msgstr "Добавить в текущий список воспроизведения" +msgstr "Добавить в текущий плейлист" #: ../bin/src/ui_behavioursettingspage.h:217 msgid "Append to the playlist" -msgstr "Добавить в список воспроизведения" +msgstr "Добавить в плейлист" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Применить сжатие для предотвращения искажений" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Вы действительно хотите удалить настройку \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" -msgstr "Вы действительно хотите удалить список воспроизведения?" +msgstr "Вы действительно хотите удалить плейлист?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Вы действительно хотите сбросить статистику этой песни?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" -msgstr "Вы действительно хотите записать статистические данные композиции в файл для всех композиций вашей медиатеки?" +msgstr "Вы действительно хотите записывать статистику во все файлы композиций вашей фонотеки?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Исполнитель" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Артист" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Радио исполнителя" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Теги испольнителя" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Инициалы исполнителя" @@ -819,9 +849,13 @@ msgstr "Инициалы исполнителя" msgid "Audio format" msgstr "Формат аудио" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Вывод звука" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Ошибка аутентификации" @@ -829,7 +863,7 @@ msgstr "Ошибка аутентификации" msgid "Author" msgstr "Автор" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Авторы" @@ -843,9 +877,9 @@ msgstr "Автоматическое обновление" #: ../bin/src/ui_librarysettingspage.h:208 msgid "Automatically open single categories in the library tree" -msgstr "Автоматически открывать одиночные категории в дереве коллекции" +msgstr "Автоматически открывать одиночные категории в дереве фонотеки" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Доступно" @@ -853,15 +887,15 @@ msgstr "Доступно" msgid "Average bitrate" msgstr "Средний битрейт" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Примерный размер изображения" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Подкасты BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -882,7 +916,7 @@ msgstr "Фоновое изображение" msgid "Background opacity" msgstr "Прозрачность фона" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Резервное копирование базы данных" @@ -890,11 +924,7 @@ msgstr "Резервное копирование базы данных" msgid "Balance" msgstr "Баланс" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Запретить" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Анализатор полосами" @@ -914,18 +944,17 @@ msgstr "Поведение" msgid "Best" msgstr "Наилучший" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Биография из %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Скорость передачи данных" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -933,7 +962,12 @@ msgstr "Скорость передачи данных" msgid "Bitrate" msgstr "Битрейт" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Битрейт" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Анализатор блоками" @@ -949,7 +983,7 @@ msgstr "Степень размытости" msgid "Body" msgstr "Содержимое" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Бум-анализатор" @@ -963,11 +997,11 @@ msgstr "Box" msgid "Browse..." msgstr "Обзор..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" -msgstr "Продолжительность буфера" +msgstr "Размер буфера" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Буферизация" @@ -979,43 +1013,66 @@ msgstr "Эти источники отключены:" msgid "Buttons" msgstr "Клавиши" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "По умолчанию Grooveshark сортирует песни по дате добавления" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Поддержка файлов разметки CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Путь кэша:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Кэширование" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Кэширование %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Отмена" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Нужна капча.%s\nПопробуйте зайти в Vk.com через браузер для решения этой проблемы." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Выберите обложку" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Изменить размер шрифта…" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Изменить режим повторения" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Изменить комбинацию клавиш..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Изменить режим перемешивания" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Сменить язык" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1025,15 +1082,19 @@ msgstr "Изменение настроек воспроизведения мо msgid "Check for new episodes" msgstr "Проверить новые выпуски" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Проверить обновления..." -#: smartplaylists/wizard.cpp:86 -msgid "Choose a name for your smart playlist" -msgstr "Выберите название умного списка воспроизведения" +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Выбрать путь кэша для Vk.com" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: smartplaylists/wizard.cpp:84 +msgid "Choose a name for your smart playlist" +msgstr "Выберите название умного плейлиста" + +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Выбирать автоматически" @@ -1049,11 +1110,11 @@ msgstr "Выбрать шрифт..." msgid "Choose from the list" msgstr "Выбор из списка" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." -msgstr "Настройка сортировки списка воспроизведения и количества песен в нём." +msgstr "Настройка сортировки плейлиста и количества песен в нём." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Выбрать каталог для загрузки подкастов" @@ -1062,7 +1123,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Выберите сайты, которые Clementine будет использовать для поиска текстов песен." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Классический" @@ -1070,17 +1131,17 @@ msgstr "Классический" msgid "Cleaning up" msgstr "Очистка" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Очистить" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" -msgstr "Очистить список воспроизведения" +msgstr "Очистить плейлист" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1093,8 +1154,8 @@ msgstr "Ошибка Clementine" msgid "Clementine Orange" msgstr "Оранжевый Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Визуализация Clementine" @@ -1102,23 +1163,23 @@ msgstr "Визуализация Clementine" msgid "" "Clementine can automatically convert the music you copy to this device into " "a format that it can play." -msgstr "При копировании на устройство, Clementine может автоматически конвертировать музыку в формат, который оно поддерживает." +msgstr "При копировании на носитель Clementine может автоматически конвертировать музыку в формат, который оно поддерживает." #: ../bin/src/ui_boxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Box" -msgstr "Clementine может проигрывать музыку, загруженную вами на Box" +msgstr "Clementine может проигрывать музыку, загруженную вами в Box" #: ../bin/src/ui_dropboxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Dropbox" -msgstr "Clementine может воспроизводить музыку, которую вы загрузили в Dropbox" +msgstr "Clementine может проигрывать музыку, загруженную вами в Dropbox" #: ../bin/src/ui_googledrivesettingspage.h:104 msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine может проигрывать музыку с Диска Google" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine может воспроизводить музыку, которую вы загрузили в Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine может проигрывать музыку, загруженную на OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1129,22 +1190,15 @@ msgid "" "Clementine can synchronize your subscription list with your other computers " "and podcast applications. Create " "an account." -msgstr "Clementine может синхронизировать выши подписки с другими компьютерами и приложениями. Создать аккаунтt." +msgstr "Clementine может синхронизировать выши подписки с другими компьютерами и приложениями. Создать аккаунт." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine не может загрузить ни одну визуализацию projectM. Проверьте, что Clementine установлен правильно." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine не смог получить статус вашей подписки из-за проблем с соединением. Воспроизведённые треки будут кэшированы и отправлены на Last.fm позже." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Просмотр изображений в Clementine" @@ -1156,26 +1210,29 @@ msgstr "Clementine не смог найти результаты по запро msgid "Clementine will find music in:" msgstr "Clementine будет искать здесь:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Щелкните здесь, чтобы добавить музыку" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" -msgstr "Нажмите здесь, чтобы добавить этот плей-лист в избранное, т. о. он будет сохранен и останется доступным в панели \"Плей-листы\" на левой боковой панели" +msgstr "Нажмите здесь, чтобы добавить этот плейлист в избранное, он будет сохранен и станет доступным в панели \"Плейлисты\" на левой боковой панели" #: ../bin/src/ui_trackslider.h:72 msgid "Click to toggle between remaining time and total time" msgstr "Нажмите для переключения между остающимся временем и полной длительностью" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." -msgstr "Нажатие на кнопку входа откроет браузер. Вернитесь в Clementine после совершения входа." +msgstr "После нажатия откроется окно браузера. Вернитесь в Clementine, когда совершите вход." #: widgets/didyoumean.cpp:37 msgid "Close" @@ -1183,21 +1240,21 @@ msgstr "Закрыть" #: playlist/playlisttabbar.cpp:54 msgid "Close playlist" -msgstr "Закрыть список воспроизведения" +msgstr "Закрыть плейлист" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Закрыть визуализацию" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Закрытие этого окна отменит загрузку." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Закрытие этого окна остановит поиск обложек альбомов." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Клубный" @@ -1205,73 +1262,78 @@ msgstr "Клубный" msgid "Colors" msgstr "Цвета" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Разделенный запятыми список \"класс:уровень\", где уровень от 0 до 3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Комментарий" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Радио сообщества" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Заполнить поля автоматически" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Заполнить поля автоматически..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Композитор" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Настроить %1 ..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Настройка Grooveshark ..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Настройка Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Настройка Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" -msgstr "Комбинации клавиш" +msgstr "Горячие клавиши" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Настройка Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Настроить Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Настроить Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Настроить глобальный поиск..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." -msgstr "Настроить коллекцию..." +msgstr "Настроить фонотеку..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Настроить подкасты..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Настроить..." @@ -1279,11 +1341,11 @@ msgstr "Настроить..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Подключить пульт Wii используя активацию/деактивацию" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" -msgstr "Подсоединение устройства" +msgstr "Подключить носитель" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Подключение к Spotify" @@ -1293,12 +1355,16 @@ msgid "" "http://localhost:4040/" msgstr "Соединение отвергнуто сервером, проверьте адрес сервера. Пример: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Превышено время ожидания при установке соединения, проверьте адрес сервера. Пример: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Ошибка подключения или аудио удалено владельцем" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Консоль" @@ -1312,176 +1378,176 @@ msgstr "Конвертировать всю музыку" #: ../bin/src/ui_deviceproperties.h:378 msgid "Convert any music that the device can't play" -msgstr "Конвертировать всю музыку, которую может проигрывать устройство." +msgstr "Конвертировать всю музыку, не поддерживаемую носителем." -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Скопировать share url в буфер" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Скопировать в буфер" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." -msgstr "Копировать на устройство..." +msgstr "Копировать на носитель" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." -msgstr "Копировать в коллекцию..." +msgstr "Копировать в фонотеку..." #: ../bin/src/ui_podcastinfowidget.h:194 msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Не удается подключиться к Subsonic, проверьте адрес сервера. Например, http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Невозможно создать элемент GStreamer \"%1\" - убедитесь, что у вас установлены все необходимые дополнения GStreamer" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Невозможно создать плейлист" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Не возможно найти мультиплексор для %1. Убедитесь, что установлены необходимые модули GStreamer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Невозможно найти кодировщик для %1, проверьте, что установлены все необходимые модули GStreamer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Невозможно загрузить радиостанцию last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Невозможно открыть выходной файл %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Менеджер обложек" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Обложка из встроенного изображения" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Обложка загружена автоматически с %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Обложка вручную отключена" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Обложка не задана" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Обложка задана из %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Обложки из %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" -msgstr "Создать новый список воспроизведения Grooveshark" +msgstr "Создать новый плейлист Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Перекрестное затухание при автоматической смене композиции" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Перекрестное затухание при ручной смене композиции" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1489,7 +1555,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Пользовательский" @@ -1501,60 +1567,61 @@ msgstr "Собственное изображение:" msgid "Custom message settings" msgstr "Настройки сообщения" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Пользовательское радио" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Пользовательский..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus path" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Танцевальный" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Обнаружен сбой в базе данных. Инструкции по восстановлению можно прочитать по адресу https://code.google.com/p/clementine-player/wiki/DatabaseCorruption" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Дата создания" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Дата изменения" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "день (дня, дней)" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "По &умолчанию" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Уменьшить громкость на 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Уменьшить громкость на процентов" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Уменьшить громкость" #: ../bin/src/ui_appearancesettingspage.h:280 msgid "Default background image" -msgstr "Фоновое изображение по-умолчанию:" +msgstr "Стандартное фоновое изображение" + +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Устройство по умолчанию на %1" #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" @@ -1564,62 +1631,62 @@ msgstr "По умолчанию" msgid "Delay between visualizations" msgstr "Задержка между визуализациями" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Удалить" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" -msgstr "Удалить список воспроизведения Grooveshark" +msgstr "Удалить плейлист Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Удалить загруженные данные" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Удалить файлы" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." -msgstr "Удалить с устройства" +msgstr "Удалить с носителя" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Удалить с диска..." #: ../bin/src/ui_podcastsettingspage.h:244 msgid "Delete played episodes" -msgstr "Удаллить прослушанные выпуски" +msgstr "Удалить прослушанные выпуски" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Удалить настройку" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" -msgstr "Удалить умный список воспроизведения" +msgstr "Удалить умный плейлист" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Удалить оригинальные файлы" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Удаление файлов" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Убрать из очереди выбранные композиции" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Убрать из очереди композицию" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Назначение" @@ -1628,7 +1695,7 @@ msgstr "Назначение" msgid "Details..." msgstr "Подробнее..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Носитель" @@ -1638,19 +1705,19 @@ msgstr "Свойства носителя" #: ../bin/src/ui_podcastsettingspage.h:254 msgid "Device name" -msgstr "Имя устройства" +msgstr "Имя носителя" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Свойства носителя..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Носители" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Диалог" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1679,18 +1746,23 @@ msgstr "Каталог" #: ../bin/src/ui_notificationssettingspage.h:440 msgid "Disable duration" -msgstr "Отключить продолжительность" +msgstr "Отключить длительность" #: ../bin/src/ui_appearancesettingspage.h:296 msgid "Disable moodbar generation" msgstr "Отключить создание индикатора настроения" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Отключено" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Отключено" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1700,17 +1772,17 @@ msgid "Discontinuous transmission" msgstr "Непрерывная передача" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Настройки отображения" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Показывать экранное уведомление" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" -msgstr "Заново сканировать музыкальную коллекцию" +msgstr "Пересканировать фонотеку" #: ../bin/src/ui_deviceproperties.h:377 msgid "Do not convert any music" @@ -1720,27 +1792,27 @@ msgstr "Не конвертировать какую-либо музыку" msgid "Do not overwrite" msgstr "Не перезаписывать" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Не повторять" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Не показывать в \"Разных исполнителях\"" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Не перемешивать" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Не останавливать!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Пожертвования" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Двойной щелчок для открытия" @@ -1748,12 +1820,13 @@ msgstr "Двойной щелчок для открытия" msgid "Double clicking a song will..." msgstr "Двойной щелчок на песне..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Загрузить %n выпусков" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Каталог загрузок" @@ -1769,7 +1842,7 @@ msgstr "\"Download\" подписка" msgid "Download new episodes automatically" msgstr "Загружать новые выпуски автоматически" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Загрузка добавлена в очередь" @@ -1777,15 +1850,15 @@ msgstr "Загрузка добавлена в очередь" msgid "Download the Android app" msgstr "Загрузить приложение для Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Загрузить этот альбом" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Загрузить этот альбом" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Загрузить этот выпуск" @@ -1793,7 +1866,7 @@ msgstr "Загрузить этот выпуск" msgid "Download..." msgstr "Загрузить..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Загрузка (%1%)..." @@ -1802,23 +1875,23 @@ msgstr "Загрузка (%1%)..." msgid "Downloading Icecast directory" msgstr "Загружается директория Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Загружается каталог Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Загружается каталог Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Загружается модуль Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Загрузка метаданных" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Тащите для перемещения" @@ -1828,30 +1901,30 @@ msgstr "Dropbox" #: ui/equalizer.cpp:119 msgid "Dubstep" -msgstr "" +msgstr "Дабстеп" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Длительность" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Динамический режим включён" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Случайный динамичный микс" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." -msgstr "Изменить умный список воспроизведения…" +msgstr "Изменить умный плейлист…" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." -msgstr "" +msgstr "Редактировать тег \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Редактировать тег..." @@ -1863,16 +1936,16 @@ msgstr "Редактировать теги" msgid "Edit track information" msgstr "Изменение информации о композиции" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Изменить информацию о композиции..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Изменить информацию о композициях..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Изменить..." @@ -1880,6 +1953,10 @@ msgstr "Изменить..." msgid "Enable Wii Remote support" msgstr "Включить поддержку пульта Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Включить автоматическое кэширование" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Включить эквалайзер" @@ -1894,7 +1971,7 @@ msgid "" "displayed in this order." msgstr "Укажите источники, включаемые в результаты поиска. Результаты будут отображаться в этом порядке." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Включить/отключить скробблинг Last.fm" @@ -1922,14 +1999,9 @@ msgstr "Введите ссылку для скачивания обложки msgid "Enter a filename for exported covers (no extension):" msgstr "Введите имя файла для экспортируемых обложек (без расширения)" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" -msgstr "Введите новое имя для этого списка воспроизведения" - -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Введите исполнителя или тег чтобы слушать радио Last.fm." +msgstr "Введите новое имя для этого плейлиста" #: ../bin/src/ui_globalsearchview.h:209 msgid "" @@ -1944,7 +2016,7 @@ msgstr "Введите ключевые слова для поиска в iTunes msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Введите ключевые слова для поиска в gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Введите критерии поиска" @@ -1953,11 +2025,11 @@ msgstr "Введите критерии поиска" msgid "Enter the URL of an internet radio stream:" msgstr "Введите адрес потока интернет-радио:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Введите имя папки" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Введите этот IP-адрес в App для подключения к Clementine." @@ -1965,21 +2037,22 @@ msgstr "Введите этот IP-адрес в App для подключени msgid "Entire collection" msgstr "Вся коллекция" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Эквалайзер" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Аналогично --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Аналогично --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Ошибка" @@ -1987,38 +2060,38 @@ msgstr "Ошибка" msgid "Error connecting MTP device" msgstr "Ошибка подключения устройства MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Ошибка копирования композиций" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Ошибка удаления композиций" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Ошибка загрузки модуля Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Ошибка загрузки %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" -msgstr "Ошибка при загрузке списка воспроизведения di.fm" +msgstr "Ошибка при загрузке плейлиста di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Ошибка при обработке %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" -msgstr "Ошибка при загрузке Аудио CD" +msgstr "Ошибка при загрузке аудио-диска" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Когда-либо проигранных" @@ -2050,7 +2123,7 @@ msgstr "Каждые 6 часов" msgid "Every hour" msgstr "Каждый час" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Кроме треков с одного и того же альбома или CUE-файла" @@ -2062,7 +2135,7 @@ msgstr "Существующие обложки" msgid "Expand" msgstr "Развернуть" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Истекает %1" @@ -2083,36 +2156,36 @@ msgstr "Экспорт загруженных обложек" msgid "Export embedded covers" msgstr "Экспорт встроенных обложек" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Экспорт завершён" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Экспортировано %1 обложек из %2 (%3 пропущено)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2122,83 +2195,83 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" -msgstr "Затихание громкости при паузе / Нарастание громкости при продолжении воспроизведения" +msgstr "Затухание при паузе / нарастание при продолжении воспроизведения" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Приглушать звук при остановке воспроизведения" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" -msgstr "Затухание" +msgstr "Затухание звука" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Длительность затухания" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" -msgstr "" +msgstr "Не удалось прочесть CD-привод" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Ошибка получения каталога" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Ошибка получения подкастов" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Ошибка загрузки подкаста" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Ошибка разбора XML в данной RSS подписке" #: ../bin/src/ui_transcoderoptionsflac.h:82 #: ../bin/src/ui_transcoderoptionsmp3.h:200 msgid "Fast" -msgstr "Быстро" +msgstr "Быстрое" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Избранное" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Любимые треки" #: ../bin/src/ui_albumcovermanager.h:225 msgid "Fetch Missing Covers" -msgstr "Скачивать надостающие обложки" +msgstr "Получить недостающие обложки" #: ../bin/src/ui_albumcovermanager.h:216 msgid "Fetch automatically" -msgstr "Скачивать автоматически" +msgstr "Получать автоматически" #: ../bin/src/ui_coversearchstatisticsdialog.h:75 msgid "Fetch completed" -msgstr "Загрузка завершена" +msgstr "Получение завершено" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" -msgstr "Получение библиотеки Subsonic" +msgstr "Получение фонотеки Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" -msgstr "Ошибка поиска обложки" +msgstr "Ошибка получения обложки" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Формат файла" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Расширение файла" @@ -2206,19 +2279,23 @@ msgstr "Расширение файла" msgid "File formats" msgstr "Форматы файлов" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" +msgstr "Полное имя файла" + +#: playlist/playlist.cpp:1343 +msgid "File name (without path)" msgstr "Имя файла" -#: playlist/playlist.cpp:1232 -msgid "File name (without path)" -msgstr "Имя файла (без указания пути)" +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Шаблон имени файла:" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Размер файла" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2228,23 +2305,27 @@ msgstr "Тип файла" msgid "Filename" msgstr "Имя файла" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Файлы" #: ../bin/src/ui_transcodedialog.h:205 msgid "Files to transcode" -msgstr "Файлы для перекодирования" +msgstr "Файлы для конвертации" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." -msgstr "Поиск композиций в библиотеке по указанным критериям." +msgstr "Найти композиции в фонотеке по указанным критериям." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Найти этого исполнителя" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Дактилоскопирование песни" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Готово" @@ -2252,7 +2333,7 @@ msgstr "Готово" msgid "First level" msgstr "Первый уровень" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2268,16 +2349,16 @@ msgstr "По лицензионным соображениям поддержк msgid "Force mono encoding" msgstr "Принудительное кодирование в моно" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" -msgstr "\"Забыть\" устройство" +msgstr "\"Забыть\" носитель" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." -msgstr "Команда \"Забыть устройство\", удалит устройство из этого списка и Clementine пересканирует все песни на нём при следующем подключении." +msgstr "Команда \"Забыть носитель\", удалит носитель из этого списка и Clementine пересканирует все песни на нём при следующем подключении." #: ../bin/src/ui_deviceviewcontainer.h:98 #: ../bin/src/ui_searchproviderstatuswidget.h:94 @@ -2288,7 +2369,7 @@ msgstr "Команда \"Забыть устройство\", удалит ус #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2316,31 +2397,23 @@ msgstr "Частота кадров" msgid "Frames per buffer" msgstr "Фреймов на буфер" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Друзья" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" -msgstr "Сдержанное" +msgstr "Сдержанный" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Движок аудио GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Общие" @@ -2348,30 +2421,30 @@ msgstr "Общие" msgid "General settings" msgstr "Общие настройки" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" -msgstr "Получить адрес этого списка воспроизведения в Grooveshark для публикции" +msgstr "Получить адрес этого плейлиста в Grooveshark для публикции" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Получить адрес композиции в Grooveshark для публикации" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Получение популярных композиций из Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Получение каналов" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Получение потоков" @@ -2383,19 +2456,19 @@ msgstr "Название:" msgid "Go" msgstr "Перейти" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" -msgstr "Перейти к следующему списку воспроизведения" +msgstr "Перейти к следующему плейлисту" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" -msgstr "Перейти к предудыщему списку воспроизведения" +msgstr "Перейти к предудыщему плейлисту" #: ../bin/src/ui_googledrivesettingspage.h:103 msgid "Google Drive" msgstr "Диск Google" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2403,9 +2476,9 @@ msgstr "Получено %1 обложек из %2 (%3 загрузить не #: ../bin/src/ui_behavioursettingspage.h:206 msgid "Grey out non existent songs in my playlists" -msgstr "Отмечать серым не существующие песни в списках воспроизведения" +msgstr "Отмечать серым не существующие песни в моих плейлистах" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2413,60 +2486,60 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Ошибка при входе на сервис Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" -msgstr "Адрес списка воспроизведения в Grooveshark" +msgstr "Адрес плейлиста в Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Радио Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Адрес композиции на Grooveshark" #: ../bin/src/ui_groupbydialog.h:124 msgid "Group Library by..." -msgstr "Сгруппировать библиотеку по..." +msgstr "Сгруппировать фонотеку по..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Сгруппировать по" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Группировать по альбомам" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Группировать по исполнителям" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Группировать по исполнителям/альбомам" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Группировать по исполнителю/году — альбому" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Группировать по жанру/альбому" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Группировать по жанру/исполнителю/альбому" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Группа" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML-страница не содержит RSS-подписок" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Код состояния HTTP 3xx получен без URL, проверьте настройку сервера." @@ -2475,9 +2548,9 @@ msgstr "Код состояния HTTP 3xx получен без URL, прове msgid "HTTP proxy" msgstr "HTTP-прокси" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" -msgstr "Счастливое" +msgstr "Счастливый" #: ../bin/src/ui_deviceproperties.h:371 msgid "Hardware information" @@ -2489,27 +2562,27 @@ msgstr "Информация об оборудовании доступна то #: ../bin/src/ui_transcoderoptionsmp3.h:202 msgid "High" -msgstr "Высокий" +msgstr "Высокое" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Высокий (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Высокое (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Сервер не найден, проверьте адрес сервера. Пример: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Часа(ов)" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Гипножаба" @@ -2521,15 +2594,15 @@ msgstr "У меня нет учётной записи Magnatune" msgid "Icon" msgstr "Значок" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Значки сверху" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Определение песни" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2539,24 +2612,24 @@ msgstr "При продолжении, устройство будет рабо msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Если вы знаете адрес подкаста, введите его сюда и нажмите Перейти." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Игнорировать \"The\" в именах исполнителей" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Изображения (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Изображения (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "В течение %1 дней" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "В течение %1 недель" @@ -2565,9 +2638,9 @@ msgstr "В течение %1 недель" msgid "" "In dynamic mode new tracks will be chosen and added to the playlist every " "time a song finishes." -msgstr "В динамическом режиме новые треки выбираются и добавляются в список воспроизведения каждый раз, когда заканчивается очередная песня." +msgstr "В динамическом режиме новые дорожки выбираются и добавляются в плейлист каждый раз, когда заканчивается очередная песня." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Входящие" @@ -2579,135 +2652,135 @@ msgstr "Показывать обложку альбома в уведомлен msgid "Include all songs" msgstr "Включить все песни" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Несовместимая версия протокола Subsonic REST. Требуется обновление клиента." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Несовместимая версия протокола Subsonic REST. Требуется обновление сервера." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Неполная конфигурация, пожалуйста, убедитесь, что все поля заполнены." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Увеличить громкость на 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Увеличить громкость на процентов" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Увеличить громкость" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Индексация %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Сведения" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Настройки ввода" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Вставить..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Установлено" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Проверка целостности" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Интернет" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" -msgstr "Интернет провайдеры" +msgstr "Службы интернет" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Неверный ключ API" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Неверный формат" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Неверный метод" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Неверные параметры" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Указан неверный источник" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Неверная служба" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Неверный ключ сессии" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Неверное имя пользователя и(или) пароль" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Инвертировать выбор" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Самые прослушиваемые треки на Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Самые популярные треки на Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Треки месяца на Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Треки недели на Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "База данных Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" -msgstr "Перейти к проигрываемой композиции" +msgstr "Перейти к текущему треку" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Отображать кнопки в течении %1 секунд" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Отображать кнопки в течении %1 секунд…" @@ -2716,11 +2789,12 @@ msgstr "Отображать кнопки в течении %1 секунд…" msgid "Keep running in the background when the window is closed" msgstr "Продолжить работу в фоновом режиме при закрытии окна" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Сохранять оригинальные файлы" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Котята" @@ -2728,11 +2802,11 @@ msgstr "Котята" msgid "Language" msgstr "Язык" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Портативный компьютер/наушники" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Large Hall" @@ -2740,12 +2814,16 @@ msgstr "Large Hall" msgid "Large album cover" msgstr "Большая обложка альбома" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Широкая боковая панель" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Последнее прослушивание" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Последнее прослушивание" @@ -2753,45 +2831,7 @@ msgstr "Последнее прослушивание" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Пользовательское радио Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Коллекция Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Радио Микс Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Радио соседей Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Радиостанция Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Исполнители Last.fm похожие на %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Радио Last.fm по тегу: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm в данный момент занят, попробуйте через некоторое время" @@ -2799,11 +2839,11 @@ msgstr "Last.fm в данный момент занят, попробуйте ч msgid "Last.fm password" msgstr "Пароль Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Количество прослушиваний на Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Теги Last.fm" @@ -2811,53 +2851,49 @@ msgstr "Теги Last.fm" msgid "Last.fm username" msgstr "Имя пользователя Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki страничка" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Нелюбимые треки" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Оставьте пустым для значения по-умолчанию. Например: \"/dev/dsp\", \"front\", и т.д." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Левый канал" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Длительность" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Фонотека" #: ../bin/src/ui_groupbydialog.h:122 msgid "Library advanced grouping" -msgstr "Расширенная сортировка коллекции" +msgstr "Расширенная группировка фонотеки" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" -msgstr "Уведомление о сканировании коллекции" +msgstr "Уведомление о сканировании фонотеки" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" -msgstr "Поиск по коллекции" +msgstr "Поиск по фонотеке" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Ограничения" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Слушать композиции на сервисе Grooveshark на основе ранее прослушанных" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2869,100 +2905,105 @@ msgstr "Загрузить" msgid "Load cover from URL" msgstr "Загрузить обложку по ссылке" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Загрузить обложку по ссылке..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Загрузить обложку с диска" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Загрузить обложку с диска..." #: playlist/playlistcontainer.cpp:286 msgid "Load playlist" -msgstr "Загрузить список воспроизведения" +msgstr "Загрузить плейлист" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." -msgstr "Загрузить список воспроизведения..." - -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Загрузка радио Last.fm" +msgstr "Загрузить плейлист..." #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Загрузка устройства MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Загрузка база данных iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Загрузка умного плейлиста" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Загрузка песен" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Загрузка потока" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Загрузка композиций" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" -msgstr "Загрузка информации о композициях" +msgstr "Загрузка сведений о композициях" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Загрузка..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" -msgstr "Загрузка файлов или ссылок с заменой текущего списка воспроизведения" +msgstr "Загрузка файлов или ссылок с заменой текущего плейлиста" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Вход" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Ошибка входа" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Выйти" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Профиль Long term prediction (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" -msgstr "Любимое" +msgstr "В любимые" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Низкий (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Низкое (256x256)" @@ -2972,14 +3013,19 @@ msgstr "Профиль низкой сложности (LC)" #: ../bin/src/ui_songinfosettingspage.h:159 msgid "Lyrics" -msgstr "Текст песни" +msgstr "Тексты песен" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Текст песни с %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "MP4 AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2991,15 +3037,15 @@ msgstr "MP3 256к" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -3007,7 +3053,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Загрузка Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Загрузка Magnatune окончена" @@ -3015,15 +3061,20 @@ msgstr "Загрузка Magnatune окончена" msgid "Main profile (MAIN)" msgstr "Основной профиль (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Да будет так!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Да будет так!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Сделать плейлист доступным автономно" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Неправильный ответ" @@ -3036,15 +3087,15 @@ msgstr "Ручная настройка прокси" msgid "Manually" msgstr "Вручную" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Производитель" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Пометить как прослушанное" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Пометить как новое" @@ -3056,17 +3107,21 @@ msgstr "Совпадает с каждым условием поиска (И)" msgid "Match one or more search terms (OR)" msgstr "Совпадает с одним или несколькими условиями (ИЛИ)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Максимизировать результаты глобального поиска" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Максимальный битрейт" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Средний (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Среднее (512x512)" @@ -3078,32 +3133,36 @@ msgstr "Тип подписки" msgid "Minimum bitrate" msgstr "Минимальный битрейт" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Минимальное заполнение буфера" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Предустановки projectM не найдены" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Модель" #: ../bin/src/ui_librarysettingspage.h:192 msgid "Monitor the library for changes" -msgstr "Следить за изменениями коллекции" +msgstr "Следить за изменениями фонотеки" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" -msgstr "Воспроизведение моно" +msgstr "Режим моно" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Месяцев" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Настроение" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Стиль индикаторов настроения" @@ -3111,15 +3170,19 @@ msgstr "Стиль индикаторов настроения" msgid "Moodbars" msgstr "Индикаторы настроения" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Ещё" + +#: library/library.cpp:84 msgid "Most played" msgstr "Наиболее часто прослушиваемые композиции" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Точка монтирования" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Точки монтирования" @@ -3128,73 +3191,49 @@ msgstr "Точки монтирования" msgid "Move down" msgstr "Переместить вниз" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." -msgstr "Переместить в коллекцию..." +msgstr "Переместить в фонотеку..." #: ../bin/src/ui_globalsearchsettingspage.h:148 #: ../bin/src/ui_queuemanager.h:127 ../bin/src/ui_songinfosettingspage.h:161 msgid "Move up" msgstr "Переместить вверх" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Музыка" #: ../bin/src/ui_librarysettingspage.h:186 msgid "Music Library" -msgstr "Музыкальная коллекция" +msgstr "Фонотека" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Выключить звук" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Моя фонотека Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Моё радио Last.fm " - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Мои соседи по Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Мое радио рекомендаций на Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Радио Мой Микс" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Моя музыка" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Мои соседи" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Моя радиостанция" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Мои рекомендации" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Имя" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Имя" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Настройки названия" @@ -3202,23 +3241,19 @@ msgstr "Настройки названия" msgid "Narrow band (NB)" msgstr "Узкая полоса пропускания (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Соседи" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" -msgstr "Сетевая прокси-служба" +msgstr "Прокси-сервер" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" -msgstr "Сетевое дистанционное управление" +msgstr "Удалённое управление" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Никогда" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Никогда не прослушивались" @@ -3227,21 +3262,21 @@ msgstr "Никогда не прослушивались" msgid "Never start playing" msgstr "Никогда не начинать проигрывать" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Новая папка" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" -msgstr "Новый список воспроизведения" +msgstr "Новый плейлист" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." -msgstr "Новый умный список воспроизведения…" +msgstr "Новый умный плейлист…" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Новые композиции" @@ -3249,24 +3284,24 @@ msgstr "Новые композиции" msgid "New tracks will be added automatically." msgstr "Новые треки будут добавлены автоматически." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Новейшие треки" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Дальше" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" -msgstr "Следующая композиция" +msgstr "Следующий трек" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "На следующей неделе" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Без анализатора" @@ -3274,7 +3309,7 @@ msgstr "Без анализатора" msgid "No background image" msgstr "Нет фонового изображения" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Нет обложек для экспорта." @@ -3282,10 +3317,10 @@ msgstr "Нет обложек для экспорта." msgid "No long blocks" msgstr "Без длинных блоков" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." -msgstr "Совпадений не найдено. Очистите строку поиска, чтобы снова увидеть список воспроизведения." +msgstr "Совпадений не найдено. Очистите строку поиска, чтобы увидеть плейлист снова." #: ../bin/src/ui_transcoderoptionsaac.h:145 msgid "No short blocks" @@ -3296,55 +3331,59 @@ msgstr "Без коротких блоков" msgid "None" msgstr "Ничего" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ни одна из выбранных песен не будет скопирована на устройство" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" -msgstr "Нормальное" +msgstr "Нормальный" #: ../bin/src/ui_transcoderoptionsaac.h:144 msgid "Normal block type" msgstr "Нормальный тип блоков" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" -msgstr "Не доступны при использовании динамических списков воспроизведения" +msgstr "Не доступно при использовании динамического плейлиста" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Не подключено" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Недостаточно содержания" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Недостаточно фанатов" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Недостаточно участников" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Недостаточно соседей" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Не установлено" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" -msgstr "Не выполнен вход" +msgstr "Вход не выполнен " -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Не подключено — щелкните дважды для подключения" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Ничего не найдено" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Тип уведомления" @@ -3357,36 +3396,41 @@ msgstr "Уведомления" msgid "Now Playing" msgstr "Сейчас проигрывается" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Предпросмотр OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" -msgstr "" +msgstr "Выкл." -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" -msgstr "" +msgstr "Вкл." -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3394,11 +3438,11 @@ msgid "" "192.168.x.x" msgstr "Разрешать подключение с IP адресов из диапазонов:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Разрешать соединения только из локальной сети" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Показывать только первый" @@ -3406,23 +3450,23 @@ msgstr "Показывать только первый" msgid "Opacity" msgstr "Прозрачность" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Открыть «%1» в браузере" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Открыть аудио-&диск..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Открыть файл OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Открыть файл OPML ..." @@ -3430,30 +3474,35 @@ msgstr "Открыть файл OPML ..." msgid "Open device" msgstr "Открыть устройство" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Открыть файл..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Открыть в Google Диск" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" -msgstr "Открыть в новом списке воспроизведения" +msgstr "Открыть в новом плейлисте" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Открыть в новом плейлисте" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" -msgstr "" +msgstr "Открыть в браузере" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Открыть..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Операция не удалась" @@ -3473,23 +3522,23 @@ msgstr "Настройки..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Упорядочить файлы" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Упорядочить файлы..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Организация файлов" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Исходные теги" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Другие настройки" @@ -3497,7 +3546,7 @@ msgstr "Другие настройки" msgid "Output" msgstr "Вывод" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Устройство вывода" @@ -3505,15 +3554,11 @@ msgstr "Устройство вывода" msgid "Output options" msgstr "Настройки вывода" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Плагин вывода" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Перезаписать все" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Перезаписать существующие файлы" @@ -3525,15 +3570,15 @@ msgstr "Перезаписать только меньшие" msgid "Owner" msgstr "Владелец" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Анализ каталога Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3542,20 +3587,20 @@ msgstr "Party" msgid "Password" msgstr "Пароль" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Приостановить" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Приостановить воспроизведение" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Приостановлен" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Исполнитель" @@ -3564,139 +3609,125 @@ msgstr "Исполнитель" msgid "Pixel" msgstr "Пиксель" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Нормальная боковая панель" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Воспроизвести" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Проиграть исполнителя или тег" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Проиграть радио артиста..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Количество проигрываний" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Слушать пользовательское радио..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Воспроизвести если остановлено, приостановить если воспроизводится" #: ../bin/src/ui_behavioursettingspage.h:211 #: ../bin/src/ui_behavioursettingspage.h:225 msgid "Play if there is nothing already playing" -msgstr "Проиграть, если еще ничего не проигрывается" +msgstr "Проиграть, если ничего не проигрывается" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Проиграть радио тега..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" -msgstr "Воспроизвести n-ную композицию в списке воспроизведения" +msgstr "Воспроизвести -ную композицию в плейлисте" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Воспроизведение/Пауза" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Проигрывание" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Настройки проигрывателя" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" -msgstr "Список воспроизведения" +msgstr "Плейлист" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" -msgstr "Список воспроизведения закончился" +msgstr "Плейлист закончился" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" -msgstr "Настройки списка воспроизведения" +msgstr "Настройки плейлиста" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" -msgstr "Тип списка воспроизведения" +msgstr "Тип плейлиста" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" -msgstr "Списки воспроизведения" +msgstr "Списки" #: ../data/oauthsuccess.html:38 msgid "Please close your browser and return to Clementine." -msgstr "Закройте браузер и вернитесь в Clementine." +msgstr "Пожалуйста, закройте браузер и вернитесь в Clementine." #: ../bin/src/ui_spotifysettingspage.h:214 msgid "Plugin status:" msgstr "Статус модуля:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасты" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Популярные композиции" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Популярные композиции месяца" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Популярные композиции сегодня" #: ../bin/src/ui_notificationssettingspage.h:438 msgid "Popup duration" -msgstr "Длительность всплывающего сообщения" +msgstr "Длительность отображения" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Порт" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Предусиление" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Настройки" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Настройки..." #: ../bin/src/ui_librarysettingspage.h:202 msgid "Preferred album art filenames (comma separated)" -msgstr "Предпочтительные имена файлов обложек альбомов (разделённые запятыми)" +msgstr "Приоритетные имена файлов обложек (через запятые)" #: ../bin/src/ui_magnatunesettingspage.h:167 msgid "Preferred audio format" @@ -3726,7 +3757,7 @@ msgstr "Нажмите комбинацию клавиш" msgid "Press a key" msgstr "Нажмите клавишу" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Нажмите комбинацию клавиш для %1..." @@ -3737,20 +3768,20 @@ msgstr "Настройки OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Предпросмотр" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Предыдущий" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" -msgstr "Предыдущая композиция" +msgstr "Предыдущий трек" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Вывести информацию о версии" @@ -3758,21 +3789,25 @@ msgstr "Вывести информацию о версии" msgid "Profile" msgstr "Профиль" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Ход выполнения" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Ход выполнения" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" -msgstr "" +msgstr "Психоделическая музыка" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Нажмите на кнопку пульта Wii" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Разбросать композиции в случайном порядке" @@ -3780,7 +3815,12 @@ msgstr "Разбросать композиции в случайном поря #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Качество" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Качество" @@ -3788,28 +3828,33 @@ msgstr "Качество" msgid "Querying device..." msgstr "Опрашиваем устройство..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Управление очередью" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Добавить в очередь выбранные композиции" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Добавить в очередь композицию" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" -msgstr "Радио (одинаковая громкость для всех композиций)" +msgstr "Радио (одинаковая громкость для всех дорожек)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Радио" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Дождь" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Дождь" @@ -3817,48 +3862,48 @@ msgstr "Дождь" msgid "Random visualization" msgstr "Случайная визуализация" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Оценка текущей песни 0 звёзд" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Оценка текущей песни 1 звезда" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Оценка текущей песни 2 звезды" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Оценка текущей песни 3 звезды" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Оценка текущей песни 4 звезды" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Оценка текущей песни 5 звёзд" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Рейтинг" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Действительно отменить?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Превышен предел перенаправлений, проверьте настройку сервера." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Обновить" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Обновить каталог" @@ -3866,19 +3911,15 @@ msgstr "Обновить каталог" msgid "Refresh channels" msgstr "Обновить каналы" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Обновить список друзей" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Обновить список станций" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Обновить потоки" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3890,8 +3931,8 @@ msgstr "Запомнить движение ульта Wii" msgid "Remember from last time" msgstr "Запомнить последнее" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Удалить" @@ -3899,123 +3940,127 @@ msgstr "Удалить" msgid "Remove action" msgstr "Удалить действие" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" -msgstr "Удалить повторы из списка воспроизведения" +msgstr "Удалить повторы из плейлиста" #: ../bin/src/ui_librarysettingspage.h:189 msgid "Remove folder" -msgstr "Удалить каталог" +msgstr "Удалить папку" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Удалить из Моей музыки" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Удалить из закладок" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Удалить из избранных" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" -msgstr "Удалить из списка воспроизведения" +msgstr "Удалить из плейлиста" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" -msgstr "Удалить список воспроизведения" +msgstr "Удалить плейлист" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" -msgstr "Удалить списки воспроизведения" +msgstr "Удалить плейлисты" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Удаление композиции из Моей музыки" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Удаление композиции из избранных" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" -msgstr "Переименовать список воспроизведения \\\"%1\\\"" +msgstr "Переименовать \"%1\" плейлист" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" -msgstr "Переименовать список воспроизведения Grooveshark" +msgstr "Переименовать плейлист Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" -msgstr "Переименовать список воспроизведения" +msgstr "Переименовать плейлист" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." -msgstr "Переименовать список воспроизведения..." +msgstr "Переименовать плейлист..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Перенумеровать композиции в таком порядке..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Повторять" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Повторять альбом" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" -msgstr "Повторять список воспроизведения" +msgstr "Повторять плейлист" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Повторять композицию" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" -msgstr "Заменить текущий список воспроизведения" +msgstr "Заменить текущий плейлист" #: ../bin/src/ui_behavioursettingspage.h:218 msgid "Replace the playlist" -msgstr "Заменить список воспроизведения" +msgstr "Заменить плейлист" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Заменять пробелы подчеркиванием" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" -msgstr "Replay Gain" +msgstr "Нормализация громкости" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" -msgstr "Режим Replay Gain" +msgstr "Режим нормализации" #: ../bin/src/ui_dynamicplaylistcontrols.h:112 msgid "Repopulate" msgstr "Перезаполнить" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Требовать код аутентификации." -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Сброс" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Сбросить счётчики воспроизведения" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Перезапустить композицию, или воспроизвести предыдущую, если не прошло 8 секунд от начала." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Ограничить только символами ASCII" @@ -4023,17 +4068,17 @@ msgstr "Ограничить только символами ASCII" msgid "Resume playback on start" msgstr "Продолжить воспроизведение при запуске" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Получение композиций «Моя музыка» с Grooveshark " -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Получение избранных композиций из Grooveshark " -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" -msgstr "Получение списков воспроизведения из Grooveshark " +msgstr "Получение плейлистов из Grooveshark " #: ../data/oauthsuccess.html:5 msgid "Return to Clementine" @@ -4045,17 +4090,17 @@ msgstr "Правый канал" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Конвертировать" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "Конвертировать CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." -msgstr "" +msgstr "Конвертировать аудио-диск" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4067,73 +4112,79 @@ msgstr "Выполнить" msgid "SOCKS proxy" msgstr "SOCKS прокси" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Ошибка установки SSL-соединения, проверьте настройки соединения. В некоторых случаях может помочь включение SSLv3." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Безопасно извлечь устройство" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Безопасно извлечь устройство после копирования" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Частота" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Частота дискретизации" #: ../bin/src/ui_appearancesettingspage.h:295 msgid "Save .mood files in your music library" -msgstr "Сохранить файлы настроения .mood в библиотеку музыки" +msgstr "Сохранять файлы настроения .mood рядом с аудио файлами" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Сохранить обложку альбома" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Сохранить обложку на диск..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Сохранить изображение" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Сохранить список воспроизведения" +msgstr "Сохранить плейлист" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Сохранить плейлист" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." -msgstr "Сохранить список воспроизведения..." +msgstr "Сохранить плейлист..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Сохранить профиль" #: ../bin/src/ui_librarysettingspage.h:193 msgid "Save ratings in file tags when possible" -msgstr "Сохранять если возможно рейтинги в тегах файлов" +msgstr "Сохранять если возможно рейтинги в файлы" #: ../bin/src/ui_librarysettingspage.h:197 msgid "Save statistics in file tags when possible" -msgstr "Сохранять если возможно статистические данные в тегах файлов" +msgstr "Сохранять если возможно статистику в файлы" #: ../bin/src/ui_addstreamdialog.h:115 msgid "Save this stream in the Internet tab" msgstr "Сохранить этот поток во вкладке Интернет" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Сохранение статистических данных композиции в файлы" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Сохранение композиций" @@ -4145,7 +4196,7 @@ msgstr "Профиль Scalable sampling rate (SSR)" msgid "Scale size" msgstr "Масштаб" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Счет" @@ -4153,10 +4204,14 @@ msgstr "Счет" msgid "Scrobble tracks that I listen to" msgstr "Скробблить треки, которые я слушаю" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Поиск" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Поиск" @@ -4164,23 +4219,23 @@ msgstr "Поиск" msgid "Search Icecast stations" msgstr "Поиск станций Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Поиск в Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Поиск на Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Поиск Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" -msgstr "" +msgstr "Искать автоматически" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Поиск обложек альбомов..." @@ -4200,21 +4255,21 @@ msgstr "Поиск в iTunes" msgid "Search mode" msgstr "Режим поиска" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Параметры поиска" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Результаты поиска" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Условия поиска" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Поиск на Grooveshark" @@ -4222,27 +4277,27 @@ msgstr "Поиск на Grooveshark" msgid "Second level" msgstr "Второй уровень" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Перемотка назад" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Перемотка вперед" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Перемотать текущую композицию на относительную позицию" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Перемотать текущую композицию на абсолютную позицию" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Выбрать все" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Отменить выбор" @@ -4250,7 +4305,7 @@ msgstr "Отменить выбор" msgid "Select background color:" msgstr "Выберите цвет фона:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Выбрать фоновое изображение" @@ -4266,15 +4321,15 @@ msgstr "Выберите цвет:" msgid "Select visualizations" msgstr "Выбрать визуализации" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Выбрать визуализации..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "Выбрать..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Серийный номер" @@ -4286,57 +4341,57 @@ msgstr "Адрес сервера" msgid "Server details" msgstr "Параметры сервера" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Служба недоступна" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Установить %1 в \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Установить громкость в процентов" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Установить значение для всех выделенных композиций..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Настройки" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Комбинация клавиш" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Комбинация клавиш для %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Комбинация клавиш для %1 уже существует" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Показать" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Показывать OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" -msgstr "Подсвечивать проигрывающийся трек" +msgstr "Подсвечивать проигрываемый трек" #: ../bin/src/ui_appearancesettingspage.h:293 msgid "Show a moodbar in the track progress bar" -msgstr "Показывать индикаторы настроения в статусе воспроизведения композиции" +msgstr "Показывать индикатор настроения в полосе прокрутки" #: ../bin/src/ui_notificationssettingspage.h:434 msgid "Show a native desktop notification" @@ -4358,52 +4413,56 @@ msgstr "Всплывающие сообщения из системного ло msgid "Show a pretty OSD" msgstr "Показывать OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Показать над строкой состояния" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Показать все композиции" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Показать все песни" #: ../bin/src/ui_librarysettingspage.h:209 msgid "Show cover art in library" -msgstr "Показывать обложки в библиотеке" +msgstr "Показывать обложки в фонотеке" #: ../bin/src/ui_librarysettingspage.h:210 msgid "Show dividers" msgstr "Показывать разделители" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Показать в полный размер..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Показывать группы в результатах глобального поиска" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Показать в обозревателе файлов" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." -msgstr "" +msgstr "Показать в фонотеке..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Показать в \"Разных исполнителях\"" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Показывать индикаторы настроения" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Показывать только повторяющиеся" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Показывать только без тегов" @@ -4412,8 +4471,8 @@ msgid "Show search suggestions" msgstr "Показать поисковые подсказки" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Показывать кнопки \"Избранное\" и \"Запретить\"" +msgid "Show the \"love\" button" +msgstr "Показывать кнопку \"В любимые\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4427,27 +4486,27 @@ msgstr "Показывать значок в системном лотке" msgid "Show which sources are enabled and disabled" msgstr "Показать какие источники включены и отключены" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Показать/Скрыть" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Перемешать" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Перемешать альбомы" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Перемешать все" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" -msgstr "Перемешать список воспроизведения" +msgstr "Перемешать плейлист" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Перемешать композиции в этом альбоме" @@ -4463,7 +4522,7 @@ msgstr "Выйти" msgid "Signing in..." msgstr "Выполняется вход..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Похожие исполнители" @@ -4475,55 +4534,63 @@ msgstr "Размер" msgid "Size:" msgstr "Размер:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" -msgstr "Переместить назад в списке воспроизведения" +msgstr "Переместить назад в плейлисте" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Пропустить подсчет" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" -msgstr "Переместить вперед в списке воспроизведения" +msgstr "Переместить вперед в плейлисте" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Пропустить выбранные композиции" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Пропустить композицию" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Маленькая обложка альбома" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Узкая боковая панель" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" -msgstr "Умный список воспроизведения" +msgstr "Умный плейлист" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" -msgstr "Умные списки воспроизведения" +msgstr "Умные плейлисты" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" #: ../bin/src/ui_songinfosettingspage.h:154 msgid "Song Information" -msgstr "Сведения о композиции" +msgstr "О песне" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "О песне" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Сонограмма" @@ -4543,15 +4610,23 @@ msgstr "Сортировать по жанру (по популярности)" msgid "Sort by station name" msgstr "Сортировать по названию станции" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Упорядочить песни в плейлисте по алфавиту" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Сортировать песни по" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Сортировка" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Источник" @@ -4567,7 +4642,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Ошибка при входе на Spotify" @@ -4575,85 +4650,85 @@ msgstr "Ошибка при входе на Spotify" msgid "Spotify plugin" msgstr "Модуль Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Модуль Spotify не установлен" #: ../bin/src/ui_transcoderoptionsmp3.h:201 msgid "Standard" -msgstr "Стандартный" +msgstr "Стандартнoe" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Оцененные" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "Начать конвертирование" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" -msgstr "Запустить проигрываемый сейчас список воспроизведения" +msgstr "Запустить проигрываемый сейчас плейлист" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" -msgstr "Начать перекодирование" +msgstr "Конвертировать" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" -msgstr "Введите что-нибудь в поле для поиска" +msgstr "Введите что-нибудь в поле для начала поиска" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Запуск %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Запуск..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Станции" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Остановить" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Остановить после" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" -msgstr "Остановить после этой композиции" +msgstr "Остановить после этого трека" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Остановить воспроизведение" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" -msgstr "Остановить воспроизведение после текущей композиции" +msgstr "Остановить воспроизведение после этой дорожки" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" -msgstr "" +msgstr "Остановить воспроизведение после композиции: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Остановлено" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Поток" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4663,15 +4738,15 @@ msgstr "Для потокового вещания с сервера Subsonic п msgid "Streaming membership" msgstr "\"Streaming\" подписка" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" -msgstr "Списки воспроизведения, на которые вы подписаны" +msgstr "Плейлисты подписок" #: ../bin/src/ui_podcastinfowidget.h:196 msgid "Subscribers" msgstr "Подписчики" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4679,12 +4754,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Успешно!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Успешно записано %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Предлагаемые теги" @@ -4693,13 +4768,13 @@ msgstr "Предлагаемые теги" msgid "Summary" msgstr "Сводка" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Сверхвысокий (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Очень высокое (2048x2048)" @@ -4711,43 +4786,35 @@ msgstr "Поддерживаемые форматы" msgid "Synchronize statistics to files now" msgstr "Синхронизировать статистику в файлы прямо сейчас" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Синхронизация входящих Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Синхронизация плейлистов Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Синхронизация оцененных треков Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Системные цвета" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Вкладки вверху" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Тег" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Сборщик тегов" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Радио тега" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Целевой битрейт" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4755,11 +4822,11 @@ msgstr "Techno" msgid "Text options" msgstr "Свойства текста" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" -msgstr "Спасибо" +msgstr "Благодарим за помощь" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Команда \"%1\" не может быть выполнена" @@ -4768,17 +4835,12 @@ msgstr "Команда \"%1\" не может быть выполнена" msgid "The album cover of the currently playing song" msgstr "Обложка альбома текущей композиции" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Каталог %1 неправильный" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Список воспроизведения '%1' пуст или не может быть загружен." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Второе значение должно быть выше первого!" @@ -4786,40 +4848,40 @@ msgstr "Второе значение должно быть выше перво msgid "The site you requested does not exist!" msgstr "Запрошенный сайт не существует!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Запрошенная ссылка не является изображением!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Пробный период для сервера Subsonic закончен. Пожалуйста, поддержите разработчика, чтобы получить лицензионный ключ. Посетите subsonic.org для подробной информации." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" -msgstr "Обновленная версия Clementine требует повторного сканирования библиотеки из-за нижеперечисленных особенностей:" +msgstr "Обновленная версия Clementine требует повторного сканирования фонотеки из-за нижеперечисленных особенностей:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "В альбоме присутствуют другие композиции" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Произошла ошибка связи с gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Проблема получения метаданных с Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Произошла ошибка при разборе ответа от iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4831,13 +4893,13 @@ msgid "" "deleted:" msgstr "В процессе удаления некоторых композиций возникли проблемы. Следующие файлы не могут быть удалены:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" -msgstr "Эти файлы будут удалены с устройства. Вы точно хотите продолжить?" +msgstr "Эти файлы будут удалены с устройства. Вы действительно хотите продолжить?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4845,25 +4907,25 @@ msgstr "Эти файлы будут окончательно удалены с #: ../bin/src/ui_librarysettingspage.h:187 msgid "These folders will be scanned for music to make up your library" -msgstr "В этих каталогах будет выполнен поиск музыки для создания вашей коллекции" +msgstr "В этих каталогах будет выполнен поиск музыки для создания вашей фонотеки" #: ../bin/src/ui_transcodersettingspage.h:174 msgid "" "These settings are used in the \"Transcode Music\" dialog, and when " "converting music before copying it to a device." -msgstr "Эти настройки используются в диалоге \"Перекодирование музыки\" и при конвертировании музыки перед копированием на устройство." +msgstr "Эти настройки используются в диалоге \"Конвертация музыки\" и при конвертировании музыки перед копированием на устройство." #: ../bin/src/ui_groupbydialog.h:153 msgid "Third level" msgstr "Третий уровень" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Это действие создаст базу данных, которая может занимать более 150Мб.\nВсе равно продолжить?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Этот альбом не доступен в требуемом формате" @@ -4877,11 +4939,11 @@ msgstr "Устройство должно быть подключено и от msgid "This device supports the following file formats:" msgstr "Это устройство поддерживает следующие форматы:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Это устройство не будет работать правильно" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Это MTP устройство, а ваша версия Clementine скомпилирована без поддержки libmtp." @@ -4890,7 +4952,7 @@ msgstr "Это MTP устройство, а ваша версия Clementine с msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Это iPod, а ваша версия Clementine скомпилирована без поддержки libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4900,33 +4962,33 @@ msgstr "Это устройство подключено впервые. Clement msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Эта опция может быть изменена в настройках на вкладке \"Поведение\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Поток только для платных подписчиков" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" -msgstr "Тип устройства не поддерживается: %1" +msgstr "Не поддерживаемый тип устройства: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Название" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Для включения радио Grooveshark требуется прослушать несколько композиций на Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Сегодня" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Включить OSD" @@ -4934,27 +4996,27 @@ msgstr "Включить OSD" msgid "Toggle fullscreen" msgstr "Развернуть на весь экран" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Переключить состояние очереди" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Вкл/выкл скробблинг" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Переключить видимость OSD" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Завтра" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Слишком много перенаправлений" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Самые популярные" @@ -4962,46 +5024,50 @@ msgstr "Самые популярные" msgid "Total albums:" msgstr "Всего альбомов:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Всего передано байт" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Всего выполнено сетевых запросов" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Композиция" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Композиции" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" -msgstr "Перекодировать музыку" +msgstr "Конвертер музыки" #: ../bin/src/ui_transcodelogdialog.h:63 msgid "Transcoder Log" -msgstr "Журнал перекодирования" +msgstr "Журнал конвертера" #: ../bin/src/ui_transcodersettingspage.h:173 msgid "Transcoding" -msgstr "Перекодирование" +msgstr "Конвертер" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" -msgstr "Перекодировано %1 файлов используя %2 потоков" +msgstr "Конвертировано %1 файлов в %2 потока" #: ../bin/src/ui_transcoderoptionsdialog.h:54 msgid "Transcoding options" -msgstr "Настройки перекодирования" +msgstr "Настройки конвертации" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Турбина" @@ -5009,80 +5075,80 @@ msgstr "Турбина" msgid "Turn off" msgstr "Выключить" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Ссылки" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Пароль Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Имя пользователя Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ультраширокая полоса пропускания (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Невозможно загрузить %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Неизвестный" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Неизвестный тип контента" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Неизвестная ошибка" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Удалить обложку" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Не пропускать выбранные композиции" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Не пропускать композицию" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Отписаться" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Предстоящие концерты" -#: internet/groovesharkservice.cpp:1200 -msgid "Update Grooveshark playlist" -msgstr "Обновить список воспроизведения на Grooveshark" +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Обновить" -#: podcasts/podcastservice.cpp:319 +#: internet/groovesharkservice.cpp:1238 +msgid "Update Grooveshark playlist" +msgstr "Обновить плейлист на Grooveshark" + +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Обновить все подкасты" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" -msgstr "Обновить измененные папки коллекции" +msgstr "Сканировать обновлённые папки" #: ../bin/src/ui_librarysettingspage.h:191 msgid "Update the library when Clementine starts" -msgstr "Обновлять коллекцию при запуске Clementine" +msgstr "Обновлять фонотеку при запуске Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Обновить этот подкаст" @@ -5090,21 +5156,21 @@ msgstr "Обновить этот подкаст" msgid "Updating" msgstr "Обновление" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Идет обновление %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Обновление %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" -msgstr "Обновление коллекции" +msgstr "Обновление фонотеки" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Использование" @@ -5112,13 +5178,13 @@ msgstr "Использование" msgid "Use Album Artist tag when available" msgstr "По возможности использовать тег «Исполнитель альбома»" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Использовать комбинации клавиш Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" -msgstr "По возможности использовать метаданные Replay Gain" +msgstr "Использовать значения из тегов по возможности" #: ../bin/src/ui_subsonicsettingspage.h:129 msgid "Use SSLv3" @@ -5136,9 +5202,9 @@ msgstr "Использовать собственный набор цветов" msgid "Use a custom message for notifications" msgstr "Использовать собственное сообщение для уведомлений" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" -msgstr "Использовать сетевое дистанционное управление" +msgstr "Использовать удалённое управление по сети" #: ../bin/src/ui_networkproxysettingspage.h:167 msgid "Use authentication" @@ -5162,7 +5228,7 @@ msgstr "Использовать временнóе сглаживание шу #: ../bin/src/ui_behavioursettingspage.h:198 msgid "Use the system default" -msgstr "Использовать значения по умолчанию" +msgstr "Использовать стандарт системы" #: ../bin/src/ui_appearancesettingspage.h:273 msgid "Use the system default color set" @@ -5176,20 +5242,20 @@ msgstr "Использовать системные настройки прок msgid "Use volume normalisation" msgstr "Использовать выравнивание громкости" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Использовано" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "У пользователь %1 нет учетной записи Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" -msgstr "Пользовательский интерфейс" +msgstr "Интерфейс" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5211,12 +5277,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Переменный битрейт" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Разные исполнители" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Версия %1" @@ -5229,7 +5295,7 @@ msgstr "Просмотр" msgid "Visualization mode" msgstr "Режим визуализации" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Визуализации" @@ -5237,11 +5303,15 @@ msgstr "Визуализации" msgid "Visualizations Settings" msgstr "Настройки визуализации" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Определение голоса" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Громкость %1%" @@ -5259,11 +5329,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" -msgstr "Предупреждать при закрытии вкладки списка воспроизведения" +msgstr "Оповещать при закрытии вкладки плейлиста" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5271,7 +5341,7 @@ msgstr "Wav" msgid "Website" msgstr "Веб-сайт" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Недель" @@ -5297,39 +5367,39 @@ msgstr "Почему бы не попробовать..." msgid "Wide band (WB)" msgstr "Шировая полоса пропускания (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Пульт Wii %1: активен" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Пульт Wii %1: подключен" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Пульт Wii %1: критический уровень заряда батареи (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Пульт Wii %1: неактивен" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Пульт Wii %1: отключен" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Пульт Wii %1: низкий заряд батареи (%2%)" #: ../bin/src/ui_wiimotesettingspage.h:182 msgid "Wiimotedev" -msgstr "Wiimotedev" +msgstr "Пульт Wii Remote" #: ../bin/src/ui_digitallyimportedsettingspage.h:181 msgid "Windows Media 128k" @@ -5343,7 +5413,7 @@ msgstr "Windows Media 40к" msgid "Windows Media 64k" msgstr "Windows Media 64к" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media" @@ -5351,25 +5421,25 @@ msgstr "Windows Media" msgid "Without cover:" msgstr "Без обложек:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Переместить другие композиции из этого альбома в Разные исполнители?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Желаете запустить повторное сканирование?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Записать все статистические данные в файлы композиций" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Неверное имя или пароль" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5381,11 +5451,11 @@ msgstr "Год" msgid "Year - Album" msgstr "Год - Альбом" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Годы" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Вчера" @@ -5393,42 +5463,42 @@ msgstr "Вчера" msgid "You are about to download the following albums" msgstr "Вы собираетесь скачать следующие альбомы" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" -msgstr "Вы собираетесь удалить %1 списков воспроизведения из списка любимых, уверены?" +msgstr "Вы собираетесь удалить %1 плейлистов из списка избранных, уверены?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" -msgstr "Вы собираетесь удалить плей-лист, который не является частью Ваших избранных плей-листов: плей-лист будет удален (это действие не может быть отменено). ⏎\nВы действительно хотите продолжить?" +msgstr "Вы собираетесь удалить плейлист, который не является избранным: плейлист будет удалён (действие не может быть отменено). \nВы действительно хотите продолжить?" #: ../bin/src/ui_loginstatewidget.h:172 msgid "You are not signed in." -msgstr "Вы не совершили вход." +msgstr "Вход не выполнен." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Вы вошли в систему как %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Вы вошли в систему." #: ../bin/src/ui_groupbydialog.h:123 msgid "You can change the way the songs in the library are organised." -msgstr "Можно изменить способ организации композиций в коллекции" +msgstr "Можно изменить способ организации композиций в фонотеке." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." -msgstr "Бесплатное прослушивание возможно без регистрации, но Premium-пользователи могут слушать потоки в более высоком качестве без рекламы." +msgstr "Бесплатное прослушивание возможно без регистрации, но Premium-пользователи могут слушать потоки в более высоком качестве и без рекламы." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5436,14 +5506,7 @@ msgstr "Прослушивание композиций с Magnatune беспл #: ../bin/src/ui_backgroundstreamssettingspage.h:57 msgid "You can listen to background streams at the same time as other music." -msgstr "Фоновые потоки можно слушать одновременно с другой музыкой." - -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Скробблинг композиций осуществляется бесплатно, но только платные подписчики могут слушать радио Last.fm из Clementine." +msgstr "Фоновые звуки можно слушать одновременно с другой музыкой." #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" @@ -5452,33 +5515,47 @@ msgid "" "Clementine wiki for more information.\n" msgstr "Для дистанционного управления Clementine можно использовать пульт Wii. Подробнее на wiki-странице Clementine.\n\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "У вас нет учетной записи Grooveshark Anywhere" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "У вас нет учетной записи Spotify Premium" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "У вас нет активной подписки" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Для поиска и прослушивания музыки на SoundCloud входить не обязательно. Но если вы хотите получить доступ к своим плейлистам и подпискам, вам нужно войти." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Произошёл выход из Spotify. Введите ваш пароль повторно в диалоге Настройки." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Произошёл выход из Spotify. Введите ваш пароль повторно." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Вам нравится эта композиция" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Вы должны запустить Настройку системы \"System Preferences\" и позволить Clemetine \"управлять вашим компьютером\" для использования глобальных горячих клавиш в Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5489,17 +5566,11 @@ msgstr "Откройте Настройки системы и включите msgid "You will need to restart Clementine if you change the language." msgstr "После смены языка потребуется перезапуск" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Вы не сможете слушать радиостанцию Last.fm, так как вы не являетесь её подписчиком." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Ваш IP-адрес:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Учётные данные Last.fm введены неверно" @@ -5507,42 +5578,43 @@ msgstr "Учётные данные Last.fm введены неверно" msgid "Your Magnatune credentials were incorrect" msgstr "Учётные данные Magnatune введены неверно" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" -msgstr "Ваша коллекция пуста!" +msgstr "Ваша фонотека пуста!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Ваши потоки радио" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Заскробблено: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Отсутствует поддержка OpenGL в системе, визуализации недоступны." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Имя пользователя или пароль указаы неверно." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "По-умолчанию" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "добавить %n композиций" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "после" @@ -5556,25 +5628,25 @@ msgstr "и" #: ../bin/src/ui_transcoderoptionsspeex.h:219 msgid "automatic" -msgstr "автоматически" +msgstr "авто" #: smartplaylists/searchterm.cpp:206 msgid "before" msgstr "до" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "между" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "наибольшие сначала" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "содержит" @@ -5584,20 +5656,20 @@ msgstr "содержит" msgid "disabled" msgstr "отключён" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "диск %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "не содержит" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "заканчивается на" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "совпадает с" @@ -5605,66 +5677,67 @@ msgstr "совпадает с" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "Каталог gpodder.net" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "больше чем" #: ../bin/src/ui_deviceviewcontainer.h:99 msgid "iPods and USB devices currently don't work on Windows. Sorry!" -msgstr "" +msgstr "iPod и USB носители пока не поддерживаются в Windows. Извините!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "в последние" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "кбит/с" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "меньше чем" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "сначала самые длинные" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "переместить %n композиций" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "сначала самые новые" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "не совпадает с" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "не в последние" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "не на" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "сначала самые старые" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "на" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "настройки" @@ -5676,36 +5749,37 @@ msgstr "или сканируйте QR-код!" msgid "press enter" msgstr "нажмите ввод" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "удалить %n композиций" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "сначала кратчайший" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "Перемешать композиции" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "сначала наименьший" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "Сортировать композиции" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "начинается на" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" -msgstr "Остановить" +msgstr "стоп" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "композиция %1" diff --git a/src/translations/si_LK.po b/src/translations/si_LK.po index 06e454196..1c7fa53dd 100644 --- a/src/translations/si_LK.po +++ b/src/translations/si_LK.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/clementine/language/si_LK/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -14,7 +14,7 @@ msgstr "" "Language: si_LK\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -39,9 +39,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -54,11 +54,16 @@ msgstr "" msgid " seconds" msgstr "" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -68,12 +73,12 @@ msgstr "" msgid "%1 days" msgstr "" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -83,48 +88,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -138,18 +143,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "" @@ -161,24 +169,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -186,23 +194,23 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -210,23 +218,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -246,14 +254,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -263,7 +267,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -271,12 +275,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -287,6 +285,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -295,38 +304,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -346,36 +355,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -387,11 +395,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -407,39 +419,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -451,11 +463,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -519,6 +531,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -527,22 +543,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -551,6 +579,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -580,15 +612,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -596,12 +628,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -609,11 +641,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -623,35 +655,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -660,19 +693,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -697,30 +730,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -729,13 +762,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -743,52 +776,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -796,9 +824,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -806,7 +838,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -822,7 +854,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -830,15 +862,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -859,7 +891,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -867,11 +899,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -891,18 +919,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -910,7 +937,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -926,7 +958,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -940,11 +972,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -956,43 +988,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1002,15 +1057,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1026,11 +1085,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1039,7 +1098,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1047,17 +1106,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1070,8 +1129,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1093,8 +1152,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1108,20 +1167,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1133,11 +1185,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1147,7 +1199,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1162,19 +1217,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1182,73 +1237,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1256,11 +1316,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1270,12 +1330,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1291,17 +1355,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1309,156 +1377,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "" @@ -1466,7 +1530,7 @@ msgstr "" msgid "Ctrl+Up" msgstr "" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1478,54 +1542,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1533,6 +1593,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1541,30 +1606,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1572,31 +1637,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1605,7 +1670,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1617,15 +1682,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1662,12 +1727,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1677,15 +1747,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1697,27 +1767,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1725,12 +1795,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1746,7 +1817,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1754,15 +1825,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1770,7 +1841,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1779,23 +1850,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1815,20 +1886,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1840,16 +1911,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1857,6 +1928,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1871,7 +1946,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1899,15 +1974,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1921,7 +1991,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1930,11 +2000,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1942,21 +2012,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1964,38 +2035,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2027,7 +2098,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2039,7 +2110,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2060,36 +2131,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2099,42 +2170,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2143,11 +2214,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2163,11 +2234,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2175,7 +2246,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2183,19 +2254,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2205,7 +2280,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2213,15 +2288,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2229,7 +2308,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2245,12 +2324,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2265,7 +2344,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2293,31 +2372,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2325,30 +2396,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2360,11 +2431,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2372,7 +2443,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2382,7 +2453,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2390,15 +2461,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2406,44 +2477,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2452,7 +2523,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2468,25 +2539,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2498,15 +2569,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2516,24 +2587,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2544,7 +2615,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2556,36 +2627,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2593,55 +2664,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2649,42 +2720,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2693,11 +2764,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2705,11 +2777,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2717,12 +2789,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2730,45 +2806,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2776,11 +2814,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2788,28 +2826,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2817,24 +2851,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2846,15 +2880,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2862,84 +2896,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2951,12 +2990,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2968,15 +3012,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2984,7 +3028,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2992,15 +3036,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3013,15 +3062,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3033,17 +3082,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3055,11 +3108,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3067,20 +3124,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3088,15 +3145,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3105,7 +3166,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3114,7 +3175,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3122,56 +3183,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3179,23 +3216,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3204,21 +3237,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3226,24 +3259,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3251,7 +3284,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3259,7 +3292,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3273,11 +3306,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3285,43 +3318,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3334,36 +3371,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3371,11 +3413,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3383,23 +3425,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3407,30 +3449,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3450,23 +3497,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3474,7 +3521,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3482,15 +3529,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3502,15 +3545,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3519,20 +3562,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3541,34 +3584,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3577,45 +3608,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3627,23 +3655,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3652,22 +3680,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3703,7 +3732,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3714,20 +3743,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3735,21 +3764,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3757,7 +3790,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3765,28 +3803,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3794,48 +3837,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3843,19 +3886,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3867,8 +3906,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3876,7 +3915,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3884,73 +3923,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3959,15 +4002,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3975,24 +4018,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4000,15 +4043,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4028,11 +4071,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4044,25 +4087,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4070,27 +4113,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4106,11 +4155,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4122,7 +4171,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4130,10 +4179,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4141,23 +4194,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4177,21 +4230,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4199,27 +4252,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4227,7 +4280,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4243,7 +4296,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4251,7 +4304,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4263,51 +4316,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4335,15 +4388,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4355,32 +4408,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4389,7 +4446,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4404,27 +4461,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4440,7 +4497,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4452,43 +4509,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4496,11 +4561,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4520,15 +4585,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4544,7 +4617,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4552,7 +4625,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4560,77 +4633,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4640,7 +4713,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4648,7 +4721,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4656,12 +4729,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4670,13 +4743,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4688,43 +4761,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4732,11 +4797,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4745,17 +4810,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4763,40 +4823,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4808,13 +4868,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4834,13 +4894,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4854,11 +4914,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4867,7 +4927,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4877,33 +4937,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4911,27 +4971,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4939,21 +4999,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4965,7 +5029,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4974,11 +5038,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4986,72 +5050,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5059,7 +5123,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5067,21 +5131,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5089,11 +5153,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5113,7 +5177,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5153,20 +5217,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5188,12 +5252,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5206,7 +5270,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5214,11 +5278,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5236,11 +5304,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5248,7 +5316,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5274,32 +5342,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5320,7 +5388,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5328,25 +5396,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5358,11 +5426,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5370,13 +5438,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5386,12 +5454,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5399,13 +5467,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5415,13 +5483,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5466,17 +5541,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5484,42 +5553,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5539,19 +5609,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5561,20 +5631,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5582,11 +5652,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5594,54 +5664,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5653,36 +5724,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/sk.po b/src/translations/sk.po index 6c347495b..eaa728be9 100644 --- a/src/translations/sk.po +++ b/src/translations/sk.po @@ -9,15 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-05-11 08:11+0000\n" +"Last-Translator: Ján Ďanovský \n" "Language-Team: Slovak (http://www.transifex.com/projects/p/clementine/language/sk/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sk\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -42,9 +42,9 @@ msgstr "dní" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -57,11 +57,16 @@ msgstr " bodov" msgid " seconds" msgstr " sekúnd" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " piesne" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 piesne)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albumov" @@ -71,12 +76,12 @@ msgstr "%1 albumov" msgid "%1 days" msgstr "%1 dní" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "Pred %1 dňami" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 na %2" @@ -86,48 +91,48 @@ msgstr "%1 na %2" msgid "%1 playlists (%2)" msgstr "%1 playlistov (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 vybratých z" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 pieseň" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 piesní" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "nájdených %1 piesní" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "nájdených %1 piesní (zobrazuje sa %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 skladieb" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 prenesených" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 ďalších poslucháčov" @@ -141,18 +146,21 @@ msgstr "%L1 spolu prehraní" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n zlyhalo" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n dokončených" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n zostávajúcich" @@ -164,24 +172,24 @@ msgstr "Zarovn&ať text" msgid "&Center" msgstr "Na &stred" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Vlastná" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Bonusy" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Nápoveda" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Skryť %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Skryť..." @@ -189,23 +197,23 @@ msgstr "&Skryť..." msgid "&Left" msgstr "&Vľavo" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Hudba" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nijaká" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Playlist" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Zavrieť" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Režim opakovania" @@ -213,23 +221,23 @@ msgstr "Režim opakovania" msgid "&Right" msgstr "Vp&ravo" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Režim zamiešavania" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Roztiahnuť &stĺpce na prispôsobenie oknu" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Nástroje" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(odlišné naprieč mnohými piesňami)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...a všetkým prispievateľom Amaroku" @@ -249,14 +257,10 @@ msgstr "0px" msgid "1 day" msgstr "1 deň" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 skladba" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -266,7 +270,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 náhodých piesní" @@ -274,12 +278,6 @@ msgstr "50 náhodých piesní" msgid "Upgrade to Premium now" msgstr "Prejsť teraz na prémium verziu" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Vytvoriť nový účet, alebo zresetovať heslo" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -290,6 +288,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Ak nie je zaškrtnuté, Clementine sa pokúsi uložiť vaše hodnotenia a ďalšie štatistiky iba v samostatnej databáze a nebude meniť vaše súbory.

Ak je zaškrtnuté, štatistika sa bude ukladať rovnako do databázy aj priamo do súboru vždy keď sa zmení.

Uvedomte si, prosím, že toto nemusí fungovať pre každý formát, a neexistuje ani žiadny štandard, ako toto robiť, takže iné hudobné prehrávače možno nebudú schopné tieto súbory čítať.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Pred hľadaný výraz napíšte typ výraz, ktorý hľadáte, napr. artist:Bode vyhľadá v zbierke všetkých interprétov, ktorý obsahujú slovo Bode.

Dostupné typy: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -298,38 +307,38 @@ msgid "" "activated.

" msgstr "

Toto zapíše hodnotenie piesní a štatistiky do tagov piesní pri všetkých piesňach vo vašej zbierke.

Toto nie je potrebné, ak bola možnosť "Ukladať hodnotenie piesní a štatistiky do tagov piesní" vždy zapnutá.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Štítky začínajte s %, napríklad: %artist %album %title

\n\n

Ak naplníte sekciu znakmi ktoré obsahujú štítok so zloženými zátvorkami, táto sekcia bude skrytá, ak je štítok prázdny.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Je vyžadovaný Grooveshark Anywhere účet." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Je vyžadovaný prémium účet na Spotify." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Klient sa môže pripojiť len vtedy, ak bol zadaný správny kód." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Inteligentný playlist je dynamický zoznam piesní z vašej zbierky. Existujú rôzne typy inteligentných playlistov ktoré ponúkajú rúzne cesty výberu piesní." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Pieseň bude zahrnutá do playlistu ak spĺňa tieto podmienky." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -349,36 +358,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Zrušiť" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "O Clemetine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "O Qt.." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detaily účtu" @@ -390,11 +398,15 @@ msgstr "Podrobnosti účtu (prémium)" msgid "Action" msgstr "Akcia" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktivovať/deaktivovať Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Stream činností" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Pridať podcast" @@ -410,39 +422,39 @@ msgstr "Pridať nový riadok, ak je to podporované typom upozornení" msgid "Add action" msgstr "Pridať akciu" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Pridať ďalší stream..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Pridať priečinok..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Pridať súbor" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Pridať súbor na prekódovanie" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Pridať súbor(y) na prekódovanie" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Pridať súbor..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Pridať súbory na transkódovanie" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Pridať priečinok" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Pridať priečinok..." @@ -454,11 +466,11 @@ msgstr "Pridať nový priečinok..." msgid "Add podcast" msgstr "Pridať podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Pridať podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Pridať výraz hľadania" @@ -522,6 +534,10 @@ msgstr "Pridať počet preskočení piesne" msgid "Add song title tag" msgstr "Pridať tag názvu piesne" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Pridať pieseň do vyrovnávacej pamäte" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Pridať tag čísla skladby" @@ -530,22 +546,34 @@ msgstr "Pridať tag čísla skladby" msgid "Add song year tag" msgstr "Pridať tag roka piesne" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Pridať piesne do \"Moja hudba\", pri kliknutí na tlačítko Obľúbiť" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Pridať stream..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Pridať k obľúbeným na Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Pridať do Grooveshark playlistov" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Pridať do Moja hudba" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Pridať do iného playlistu" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Pridať do záložiek" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Pridať do playlistu" @@ -554,6 +582,10 @@ msgstr "Pridať do playlistu" msgid "Add to the queue" msgstr "ju pridá do poradia" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Pridať používateľa/skupinu do záložiek" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Pridať wiimotedev akciu" @@ -583,15 +615,15 @@ msgstr "Pridané dnes" msgid "Added within three months" msgstr "Pridané posledný štvrťrok" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Pridáva sa pieseň do Mojej hudby" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Pridať pieseň k obľúbeným" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Pokročilé zoraďovanie..." @@ -599,12 +631,12 @@ msgstr "Pokročilé zoraďovanie..." msgid "After " msgstr "Po " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Po kopírovaní..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -612,11 +644,11 @@ msgstr "Po kopírovaní..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (ideálna hlasitosť pre všetky skladby)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -626,35 +658,36 @@ msgstr "Interprét albumu" msgid "Album cover" msgstr "Obal albumu" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Informácie o albume na jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumy s obalmi" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumy bez obalov" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Všetky súbory (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Všetky albumy" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Všetci interpréti" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Všetky súbory (*)" @@ -663,19 +696,19 @@ msgstr "Všetky súbory (*)" msgid "All playlists (%1)" msgstr "Všetky playlisty (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "DAG Software (Ďanovský Ján), všetkým ostatným prekladateľom" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Všetky skladby" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Povoliť klientu stiahnuť hudbu z tohto počítača." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Povoliť sťahovania" @@ -700,30 +733,30 @@ msgstr "Vždy zobrazovať hlavné okno" msgid "Always start playing" msgstr "Hneď začne hrať" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Aby sa dalo Spotify využiť v Clementine, je vyžadovaný ďalší plugin. Chcete ho teraz stiahnuť a nainštalovať?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Nastala chyba pri načítavaní iTunes databázy" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Vyskytla sa chyba počas zapisovania metadát do '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Vyskytla nešpecifikovaná chyba." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "A:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Zlostný" @@ -732,13 +765,13 @@ msgstr "Zlostný" msgid "Appearance" msgstr "Vzhľad" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Pridať súbory/URL adresy do playlistu" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Pridať do aktuálneho playlistu" @@ -746,52 +779,47 @@ msgstr "Pridať do aktuálneho playlistu" msgid "Append to the playlist" msgstr "ju pridá do playlistu" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Použiť kompresiu na zabránenie odrezávania" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Ste si istý, že chcete vymazať predvoľbu \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Ste si istí, že chcete zmazať tento playlist?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Ste si istý, že chcete zresetovať štatistiky tejto piesne?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Ste si istý, že chcete ukladať štatistiky piesní do súboru piesne pri všetkých piesňach vo vašej zbierke?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Interprét" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Interprét" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Rádio interpréta" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Tagy interpréta" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Iniciálky interpréta" @@ -799,9 +827,13 @@ msgstr "Iniciálky interpréta" msgid "Audio format" msgstr "Audio formát" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Výstup zvuku" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentifikácia zlyhala" @@ -809,7 +841,7 @@ msgstr "Autentifikácia zlyhala" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autori" @@ -825,7 +857,7 @@ msgstr "Automatické aktualizovanie" msgid "Automatically open single categories in the library tree" msgstr "Automaticky otvoriť jednotlivé kategórie v strome zbierky" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "K dispozícii" @@ -833,15 +865,15 @@ msgstr "K dispozícii" msgid "Average bitrate" msgstr "Priemerný dátový tok" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Priemerná veľkosť obrázku" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcasty BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -862,7 +894,7 @@ msgstr "Obrázok na pozadí" msgid "Background opacity" msgstr "Priehľadnosť pozadia" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Zálohuje sa databáza" @@ -870,11 +902,7 @@ msgstr "Zálohuje sa databáza" msgid "Balance" msgstr "Vyváženie" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Zakázané" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Prúžkový analyzér" @@ -894,18 +922,17 @@ msgstr "Správanie" msgid "Best" msgstr "Najlepšia" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Životopis z %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -913,7 +940,12 @@ msgstr "Bit rate" msgid "Bitrate" msgstr "Dátový tok" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Dátový tok" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blokový analyzér" @@ -929,7 +961,7 @@ msgstr "Množstvo rozmazania" msgid "Body" msgstr "Obsah" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom analyzér" @@ -943,11 +975,11 @@ msgstr "Box" msgid "Browse..." msgstr "Prehľadávať..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Dĺžka vyrovnávacej pamäte" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Ukladá sa do vyrovnávacej pamäte" @@ -959,43 +991,66 @@ msgstr "Ale tieto zdroje sú zakázané:" msgid "Buttons" msgstr "Tlačidlá" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Štandardne Grooveshark radí piesne podľa dátumu pridania" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "podpora CUE zoznamu" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Cesta k vyrovnávacej pamäti:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Ukladá sa do vyrovnávacej pamäte" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "%1 sa ukladá do vyrovnávacej pamäte" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Zrušiť" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Vyžaduje sa Captcha.\nSkúste sa prihlásiť na Vk.com vo vašom prehliadači, aby ste opravili tento problém." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Zmeniť obal albumu" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Zmeniť veľkosť písma..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Zmeniť režim opakovania" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Zmeniť skratku..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Zmeniť režim zamiešavania" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Zmeniť jazyk" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1005,15 +1060,19 @@ msgstr "Zmena nastavenia mono prehrávania bude účinná pre nasledujúce prehr msgid "Check for new episodes" msgstr "Skontrolovať, či sú nové časti" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Skontrolovať aktualizácie..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Vyberte priečinok vyrovnávacej pamäte na Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Vyberte názov pre váš inteligentný playlist" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Vybrať automaticky" @@ -1029,11 +1088,11 @@ msgstr "Vybrať písmo..." msgid "Choose from the list" msgstr "Vybrať zo zoznamu" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Vyberte, ako má byť playlist usporiadaný a koľko piesní má obsahovať." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Vybrať pričinok na sťahovanie podcastu" @@ -1042,7 +1101,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Vyberte webstránky ktoré chcete použiť na hľadanie textov piesní." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Classical" @@ -1050,17 +1109,17 @@ msgstr "Classical" msgid "Cleaning up" msgstr "Upratovanie" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Vyprázdniť" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Vyprázdniť playlist" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1073,8 +1132,8 @@ msgstr "Chyba Clementine" msgid "Clementine Orange" msgstr "Klementínková oranžová" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine vizualizácia" @@ -1086,7 +1145,7 @@ msgstr "Clementine môže automaticky konvertovať hudbu, ktorú ste skopíroval #: ../bin/src/ui_boxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Box" -msgstr "\t\nClementine dokáže prehrávať hudbu, ktorú ste nahrali do služby Box" +msgstr "Clementine môže prehrávať hudbu, ktorú ste nahrali do služby Box" #: ../bin/src/ui_dropboxsettingspage.h:104 msgid "Clementine can play music that you have uploaded to Dropbox" @@ -1094,11 +1153,11 @@ msgstr "Clementine môže prehrať hudbu, ktorú ste nahrali na Dropbox" #: ../bin/src/ui_googledrivesettingspage.h:104 msgid "Clementine can play music that you have uploaded to Google Drive" -msgstr "Clementine môže prehrávať hudbu, ktorú ste uploadli na Google Drive" +msgstr "Clementine môže prehrávať hudbu, ktorú ste nahrali na Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine môže prehrať hudbu, ktorú ste nahrali na Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine môže prehrávať hudbu, ktorú ste nahrali do služby OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1111,20 +1170,13 @@ msgid "" "an account." msgstr "Clementine môže synchronizovať váš zoznam predplatných s vašimi ďalšími počítačmi a programami pre podcasty. Vytvoriť účet." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine nemôže načítať žiadnu projectM vizualizáciu. Skontrolujte, či máte Clementine nainštalovaný správne." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine sa nepodarilo stiahnuť váš predplatiteľský stav kvôli problémom s vašim pripojením. Prehrávané skladby sa uložia do vyrovnávacej pamäte a na Last.fm sa pošlú neskôr." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine prehliadač obrázkov" @@ -1136,11 +1188,11 @@ msgstr "Clementine nebol schopný nájsť výsledky pre tento súbor" msgid "Clementine will find music in:" msgstr "Clementine bude hľadať hudbu na:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Kliknite sem aby ste pridali nejakú hudbu" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1150,7 +1202,10 @@ msgstr "Kliknite sem pre označenie tohto playlitu ako obľúbeného, uloží sa msgid "Click to toggle between remaining time and total time" msgstr "Kliknite na prepínanie medzi zostávajúcim a celkovým časom" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1165,19 +1220,19 @@ msgstr "Zatvoriť" msgid "Close playlist" msgstr "Zatvoriť playlist" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Zatvoriť vizualizáciu" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Zatvorenie tohto okna zruší sťahovanie." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Zatvorenie tohto okna zastaví hľadanie obalov albumov" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1185,73 +1240,78 @@ msgstr "Club" msgid "Colors" msgstr "Farby" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Čiarkou oddelený zoznam class:level, level je 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Komentár" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Komunitné rádio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Vyplniť tagy automaticky" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Vyplniť tagy automaticky..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Skladateľ" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Nastaviť %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Nastaviť Grooveshark ..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Konfigurovať Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Nastaviť Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Klávesové skratky" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Nastaviť Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Nastaviť Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Nastaviť Vk.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Nastaviť globálne vyhľadávanie..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Nastaviť zbierku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Nastaviť podcasty..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Nastaviť..." @@ -1259,11 +1319,11 @@ msgstr "Nastaviť..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Pripojiť Wii diaľkové použitím akcie aktivovať/deaktivovať" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Pripojiť zariadenie" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Pripájanie k Spotify" @@ -1273,12 +1333,16 @@ msgid "" "http://localhost:4040/" msgstr "Spojenie odmietnuté serverom, skontrolujte URL adresu serveru. Príklad: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Čas na spojenie vypršal, skontrolujte URL adresu serveru. Príklad: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Problémy s pripojením, alebo je zvuk zakázaný vlastníkom" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konzola" @@ -1294,17 +1358,21 @@ msgstr "Konvertovať všetku hudbu" msgid "Convert any music that the device can't play" msgstr "Konvertovať hudbu ktorú zariadenie nemôže prehrať" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Kopírovať zdieľanú URL adresu do schránky" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopírovať do schránky" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Skopírovať na zariadenie..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Skopírovať do zbierky..." @@ -1312,156 +1380,152 @@ msgstr "Skopírovať do zbierky..." msgid "Copyright" msgstr "Autorské práva" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Nedalo sa pripojiť na Subsonic, skontrolujte URL servera. Napríklad: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Nedal sa vytvoriť GStreamer element \"%1\" - uistite sa, že máte nainštalované všetky potrebné pluginy GStreamera." -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Nepodarilo sa vytvoriť playlist" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Nedal sa nájsť muxer pre %1, skontrolujte či máte korektne nainštalované GStreamer pluginy" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Nedal sa nájsť enkóder pre %1, skontrolujte či máte korektne nainštalované GStreamer pluginy" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Nedala sa načítať last.fm rádio stanica" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Nedá sa otvoriť výstupný súbor %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Správca obalov" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Obal zo zabudovaného obrázka" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Obal automaticky načítaný z %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Obal ručne nenastavený" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Obal nenastavený" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Obal nastavený z %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Obaly z %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Vytvoriť nový playlist Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Prelínať keď sa zmení skladba automaticky" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Prelínať keď sa zmení skladba ručne" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1469,7 +1533,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Vlastné" @@ -1481,54 +1545,50 @@ msgstr "Vlastný obrázok" msgid "Custom message settings" msgstr "Vlastné nastavenie správy" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Vlastné rádio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Vlastná..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus cesta" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Bolo zistené porušenie databázy. Prosím, prečítajte si https://code.google.com/p/clementine-player/wiki/DatabaseCorruption pre inštrukcie, ako zotaviť vašu databázu" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Dátum vytvorenia" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Dátum zmeny" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dni" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Pôvo&dná" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Znížiť hlasitosť o 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Znížiť hlasitosť o %" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Znížiť hlasitosť" @@ -1536,6 +1596,11 @@ msgstr "Znížiť hlasitosť" msgid "Default background image" msgstr "Štandardný obrázok na pozadí" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Východzie zariadenie na %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Predvolené" @@ -1544,30 +1609,30 @@ msgstr "Predvolené" msgid "Delay between visualizations" msgstr "Oneskorenie medzi vizualizáciami" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Vymazať" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Vymazať Grooveshark playlist" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Vymazať stiahnuté dáta" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Vymazať súbory" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Vymazať zo zariadenia..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Vymazať z disku..." @@ -1575,31 +1640,31 @@ msgstr "Vymazať z disku..." msgid "Delete played episodes" msgstr "Vymazať prehrané časti" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Vymazať predvoľbu" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Vymazať inteligentný playlist" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Vymazať pôvodné súbory" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Odstraňujú sa súbory" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Vybrať z radu vybrané skladby" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Vybrať z radu skladbu" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Cieľ" @@ -1608,7 +1673,7 @@ msgstr "Cieľ" msgid "Details..." msgstr "Podrobnosti..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Zariadenie" @@ -1620,15 +1685,15 @@ msgstr "Vlastnosti zariadenia" msgid "Device name" msgstr "Názov zariadenia" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Vlastnosti zariadenia..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Zariadenia" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Dialóg" @@ -1665,12 +1730,17 @@ msgstr "Zakázať trvanie" msgid "Disable moodbar generation" msgstr "Zakázať vytváranie panelu nálady" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Žiadne" +msgstr "Zakázané" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Zakázané" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1680,15 +1750,15 @@ msgid "Discontinuous transmission" msgstr "Nesúvislý prenos" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Možnosti zobrazovania" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Zobrazovať OSD" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Vykonať preskenovanie celej zbierky" @@ -1700,27 +1770,27 @@ msgstr "Nekonvertovať žiadnu hudbu" msgid "Do not overwrite" msgstr "Neprepisovať" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Neopakovať" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Nezobrazovať v rôznych interprétoch" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Nezamiešavať" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Neprestávať!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Prispieť" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Otvoríte dvojklikom" @@ -1728,12 +1798,13 @@ msgstr "Otvoríte dvojklikom" msgid "Double clicking a song will..." msgstr "Dvojklik na pieseň..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Stiahnuť %n častí" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Priečinok na sťahovanie" @@ -1749,7 +1820,7 @@ msgstr "Členstvo sťahovania" msgid "Download new episodes automatically" msgstr "Sťahovať nové časti automaticky" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Sťahovanie zaradené" @@ -1757,15 +1828,15 @@ msgstr "Sťahovanie zaradené" msgid "Download the Android app" msgstr "Stiahnuť Android aplikáciu" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Stiahnuť tento album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Stiahnuť tento album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Stiahnuť túto časť" @@ -1773,7 +1844,7 @@ msgstr "Stiahnuť túto časť" msgid "Download..." msgstr "Stiahnuť..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Sťahovanie (%1%)..." @@ -1782,23 +1853,23 @@ msgstr "Sťahovanie (%1%)..." msgid "Downloading Icecast directory" msgstr "Sťahuje sa Icecast priečinok" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Sťahuje sa Jamendo katalóg" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Sťahuje sa Magnatune katalóg" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Sťahuje sa Spotify plugin" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Sťahujú sa metadáta" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Pretiahnite na iné miesto" @@ -1818,20 +1889,20 @@ msgstr "Dĺžka" msgid "Dynamic mode is on" msgstr "Dynamický režim je zapnutý" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynamicky náhodná zmes" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Upraviť inteligentný playlist..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Upraviť tag \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Upraviť tag..." @@ -1843,16 +1914,16 @@ msgstr "Upraviť tagy" msgid "Edit track information" msgstr "Upravť informácie o skladbe" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Upravť informácie o skladbe..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Upraviť informácie o skladbách" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Upraviť..." @@ -1860,6 +1931,10 @@ msgstr "Upraviť..." msgid "Enable Wii Remote support" msgstr "Povoliť podporu Wii diaľkového" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Povoliť automatické ukladanie do vyrovnávacej pamäte" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Povoliť ekvalizér" @@ -1874,7 +1949,7 @@ msgid "" "displayed in this order." msgstr "Povoľte zdroje nižšie, aby boli zahrnuté do výsledkov vyhľadávania. Výsledky budú zobrazené v tomto poradí." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Povoliť/zakázať Last.fm skroblovanie" @@ -1902,15 +1977,10 @@ msgstr "Zadajte URL adresu na stiahnutie obalu z internetu:" msgid "Enter a filename for exported covers (no extension):" msgstr "Zadajte názov súboru pre exportované obaly (bez prípony):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Zadajte nový názov pre tento playlist" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Vložte meno interpréta alebo tag aby ste začali počúvať Last.fm rádio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1924,7 +1994,7 @@ msgstr "Zadajte výrazy na hľadanie nižšie, aby ste našli podcasty na iTunes msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Zadajte výrazy na hľadanie nižšie, aby ste našli podcasty na gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Sem napíšte výrazy na hľadanie" @@ -1933,11 +2003,11 @@ msgstr "Sem napíšte výrazy na hľadanie" msgid "Enter the URL of an internet radio stream:" msgstr "Vložte URL internetového rádio streamu:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Vložte názov priečinka" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Zadajte túto IP adresu v programe na spojenie s Clementine." @@ -1945,21 +2015,22 @@ msgstr "Zadajte túto IP adresu v programe na spojenie s Clementine." msgid "Entire collection" msgstr "Celá zbierka" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekvalizér" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Ekvivalent k --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Ekvivalent k --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Chyba" @@ -1967,38 +2038,38 @@ msgstr "Chyba" msgid "Error connecting MTP device" msgstr "Chyba pri pripájaní MTP zariadenia" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Chyba pri kopírovaní piesní" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Chyba pri vymazávaní piesní" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Chyba pri sťahovaní Spotify pluginu." -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Chyba pri načítavaní %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Chyba pri načítavaní di.fm playlistu" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Chyba spracovania %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Chyba pri čítaní zvukového CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Vždy hrané" @@ -2030,7 +2101,7 @@ msgstr "Každých 6 hodín" msgid "Every hour" msgstr "Každú hodinu" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Nezoslabovať medzi skladbami z rovnakého albumu" @@ -2042,7 +2113,7 @@ msgstr "Existujúce obaly" msgid "Expand" msgstr "Rozbaliť" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Vyprší %1" @@ -2063,36 +2134,36 @@ msgstr "Exportovať stiahnuté obaly" msgid "Export embedded covers" msgstr "Exportovať vložené obaly" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Exportovanie dokončené" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exportovaných %1 obalov z %2 (%3 preskočených)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2102,42 +2173,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Zoslabenie pri pozastavení / zosilenie pri obnovení prehrávania" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Zoslabiť pri zastavení skladby" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Zoslabovanie" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Trvanie zoslabovania" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Zlyhalo čítanie CD v mechanike" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Zlyhalo získanie priečinka" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Zlyhalo získanie podcastov" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Zlyhalo načítanie podcastu" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Zlyhalo spracovanie XML pre tento RSS kanál" @@ -2146,11 +2217,11 @@ msgstr "Zlyhalo spracovanie XML pre tento RSS kanál" msgid "Fast" msgstr "Rýchla" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Obľúbené" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Obľúbené skladby" @@ -2166,11 +2237,11 @@ msgstr "Získavať automaticky" msgid "Fetch completed" msgstr "Sťahovanie dokončené" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Získava sa zbierka zo Subsonicu" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Chyba pri získavaní obalu" @@ -2178,7 +2249,7 @@ msgstr "Chyba pri získavaní obalu" msgid "File Format" msgstr "Formát súboru" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Prípona súboru" @@ -2186,19 +2257,23 @@ msgstr "Prípona súboru" msgid "File formats" msgstr "Formáty súborov" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Názov súboru" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Názov súboru (bez cesty)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Vzor pre názov súboru:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Veľkosť súboru" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2208,7 +2283,7 @@ msgstr "Typ súboru" msgid "Filename" msgstr "Názov súboru" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Súbory" @@ -2216,15 +2291,19 @@ msgstr "Súbory" msgid "Files to transcode" msgstr "Súbory na transkódovanie" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Nájsť piesne vo vašej zbierke ktoré spĺňajú kritériá ktoré ste zadali." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Nájsť tohto interpréta" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Robí sa odtlačok piesne" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Dokončiť" @@ -2232,7 +2311,7 @@ msgstr "Dokončiť" msgid "First level" msgstr "Prvá úroveň" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2248,12 +2327,12 @@ msgstr "Kvôli licenčným dôvodom je podpora Spotify v oddelenom plugine." msgid "Force mono encoding" msgstr "Vynútiť mono enkódovanie" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Zabudnúť na zariadenie" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2268,7 +2347,7 @@ msgstr "Zabudnutie zariadenia ho odstráni z tohto zoznamu a Clementine bude mus #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2296,31 +2375,23 @@ msgstr "Počet snímkov" msgid "Frames per buffer" msgstr "Snímkov na buffer" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Priatelia" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Zmrznutý" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Plné basy" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Plné basy a výšky" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Plné výšky" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer audio engine" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Všeobecné" @@ -2328,30 +2399,30 @@ msgstr "Všeobecné" msgid "General settings" msgstr "Všeobecné nastavenia" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Žáner" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Získať URL na zdieľanie tohto Grooveshark playlistu" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Získať URL na zdieľanie tejto Grooveshark piesne" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Získavajú sa populárne piesne z Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Preberanie kanálov" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Získavanie streamov" @@ -2363,11 +2434,11 @@ msgstr "Pomenujte:" msgid "Go" msgstr "Prejsť" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Prejsť na kartu ďalšieho playlistu" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Prejsť na kartu predchádzajúceho playlistu" @@ -2375,7 +2446,7 @@ msgstr "Prejsť na kartu predchádzajúceho playlistu" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2385,7 +2456,7 @@ msgstr "Získaných %1 obalov z %2 (%3 zlyhalo)" msgid "Grey out non existent songs in my playlists" msgstr "Zošednúť neexistujúce piesne v playlistoch" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2393,15 +2464,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Chyba pri prihlásení na Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL Grooveshark playlistu" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark rádio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL adresa Grooveshark piesne " @@ -2409,44 +2480,44 @@ msgstr "URL adresa Grooveshark piesne " msgid "Group Library by..." msgstr "Zoraďovanie zbierky podľa..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Zoradiť podľa" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Zoradiť podľa albumu" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Zoradiť podľa interpréta" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Zoradiť podľa interprét/album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Zoradiť podľa interprét/rok - album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Zoradiť podľa žáner/album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Zoradiť podľa žáner/interprét/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Zoskupenie" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML stránka neobsahuje žiadne RSS kanály" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Stavový kód HTTP 3xx prijatý bez URL, overte nastavenie servra" @@ -2455,7 +2526,7 @@ msgstr "Stavový kód HTTP 3xx prijatý bez URL, overte nastavenie servra" msgid "HTTP proxy" msgstr "HTTP proxy" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Šťastný" @@ -2471,25 +2542,25 @@ msgstr "Hardwarové informácie sú dostupné len keď je zariadenie pripojené. msgid "High" msgstr "Vysoké" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Vysoké (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Vysoká (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Hostiteľ nenájdený, skontrolujte URL adresu serveru. Príklad: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Hodiny" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2501,15 +2572,15 @@ msgstr "Nemám Magnatune účet" msgid "Icon" msgstr "Ikona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikony na vrchu" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identifikuje sa pieseň" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2519,24 +2590,24 @@ msgstr "Ak budete pokračovať, toto zariadenie bude pracovať pomaly a skopíro msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Ak poznáte URL podcastu, zadajte ju nižšie a kliknite na Prejsť." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorovať „The“ v menách interprétov" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Obrázky (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Obrázky (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Za %1 dní" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Za %1 týždňov" @@ -2547,7 +2618,7 @@ msgid "" "time a song finishes." msgstr "V dynamickom režime budú nové skladby vybraté a pridané do playlistu zakaždým keď skončí pieseň." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Doručené" @@ -2559,135 +2630,135 @@ msgstr "Zahrnúť obal do upozornenia" msgid "Include all songs" msgstr "Zahrnúť všetky piesne." -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Nekompatibilná verzia Subsonic REST protokolu. Klienta musíte aktualizovať." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Nekompatibilná verzia Subsonic REST protokolu. Server musíte aktualizovať." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Neúplné nastavenie. Zabezpečte, prosím, aby boli všetky políčka vyplnené." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Zvýšiť hlasitosť o 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Znížiť hlasitosť o %" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Zvýšiť hlasitosť" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indexuje sa %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Informácie" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Možnosti vstupu" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Vložiť..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Nainštalované" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Kontrola integrity" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internetoví poskytovatelia" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Neplatný API kľúč" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Neplatný formát" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Neplatná metóda" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Neplatné parametre" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Určený neplatný zdroj" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Nefunkčná služba" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Neplatný kľúč sedenia" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Neplatné meno používateľa a/alebo heslo" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Invertovať výber" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo najpočúvanejšie skladby" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo naj skladby" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo naj skladby mesiaca" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo naj skladby týždňa" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo databáza" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Skočiť na práve prehrávanú skladbu" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Držte tlačidlá %1 sekundu..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Držte tlačidlá %1 sekúnd..." @@ -2696,11 +2767,12 @@ msgstr "Držte tlačidlá %1 sekúnd..." msgid "Keep running in the background when the window is closed" msgstr "Nechať bežať na pozadí, keď sa zavrie hlavné okno" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Zachovať pôvodné súbory" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Mačiatka" @@ -2708,11 +2780,11 @@ msgstr "Mačiatka" msgid "Language" msgstr "Jazyk" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Notebook/sluchátka" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Large Hall" @@ -2720,12 +2792,16 @@ msgstr "Large Hall" msgid "Large album cover" msgstr "Veľký obal albumu" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Veľký bočný panel" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Naposledy prehrávané" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Naposledy prehrávané" @@ -2733,45 +2809,7 @@ msgstr "Naposledy prehrávané" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm vlastné rádio: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm zbierka - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm rádio zmes - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm rádio suseda - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm rádio stanica - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm podobní interpréti ako %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm rádio tagu: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm je práve zaneprázdnené, prosím skúste za pár minút" @@ -2779,11 +2817,11 @@ msgstr "Last.fm je práve zaneprázdnené, prosím skúste za pár minút" msgid "Last.fm password" msgstr "Last.fm heslo" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm počet prehraní" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm tagy" @@ -2791,28 +2829,24 @@ msgstr "Last.fm tagy" msgid "Last.fm username" msgstr "Last.fm použ. meno" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Najmenej obľúbené skladby" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Nechajte prázdne, ak chcete pôvodné. Príklady: \"/dev/dsp\", \"front\", atď." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Ľavý" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Dĺžka" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Zbierka" @@ -2820,24 +2854,24 @@ msgstr "Zbierka" msgid "Library advanced grouping" msgstr "Pokročilé zoraďovanie zbierky" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Poznámka k preskenovaniu zbierky" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Hľadanie v zbierke" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Obmedzenia" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Počúvať Grooveshark piesne založené na tom, čo ste počúvali predtým" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2849,15 +2883,15 @@ msgstr "Načítať" msgid "Load cover from URL" msgstr "Načítať obal z URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Načítať obal z URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Načítať obal z disku" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Načítať obal z disku..." @@ -2865,84 +2899,89 @@ msgstr "Načítať obal z disku..." msgid "Load playlist" msgstr "Načítať playlist" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Načítať playlist..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Načítava sa Last.fm rádio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Načítava sa MTP zariadenie" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Načítava sa iPod databáza" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Načítava sa inteligentný playlist" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Načítavanie piesní" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Načítava sa stream" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Načítavajú sa skladby" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Načítavajú sa informácie o skladbe" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Načítava sa..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Načítať súbory/URL adresy, nahradiť nimi aktuálny playlist" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Prihlásiť sa" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Prihlásenie zlyhalo" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Odhlásiť" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Profil dlhodobej predpovede (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Obľúbené" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Nízke (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Nízka (256x256)" @@ -2954,12 +2993,17 @@ msgstr "Nízko-komplexný profil (LC)" msgid "Lyrics" msgstr "Texty piesní" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Texty z %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2971,15 +3015,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2987,7 +3031,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune sťahovanie" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune sťahovanie dokončené" @@ -2995,15 +3039,20 @@ msgstr "Magnatune sťahovanie dokončené" msgid "Main profile (MAIN)" msgstr "Hlavný profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Make it so!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Make it so!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Urobiť playlist dostupný offline" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Poškodená odpoveď" @@ -3016,15 +3065,15 @@ msgstr "Ručné nastavenie proxy" msgid "Manually" msgstr "Ručne" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Výrobca" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Označiť ako vypočuté" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Označiť ako nové" @@ -3036,17 +3085,21 @@ msgstr "Spĺňať všetky výrazy hľadania (AND)" msgid "Match one or more search terms (OR)" msgstr "Splniť jeden alebo viac výrazov (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Maximum výsledkov globálneho vyhľadávania" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maximálny dátový tok" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Stredné (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Stredná (512x512)" @@ -3058,11 +3111,15 @@ msgstr "Typ členstva" msgid "Minimum bitrate" msgstr "Minimálny dátový tok" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Nejmenšie naplnenie vyrovnávacej pamäte" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Chýbajú projectM predvoľby" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3070,20 +3127,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Sledovať zmeny v zbierke" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono prehrávanie" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Mesiace" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Nálada" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Štýl panelu nálady" @@ -3091,15 +3148,19 @@ msgstr "Štýl panelu nálady" msgid "Moodbars" msgstr "Panel nálady" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Viac" + +#: library/library.cpp:84 msgid "Most played" msgstr "Najviac hrané" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Bod pripojenia" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Body pripojenia" @@ -3108,7 +3169,7 @@ msgstr "Body pripojenia" msgid "Move down" msgstr "Posunúť nižšie" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Presunúť do zbierky..." @@ -3117,7 +3178,7 @@ msgstr "Presunúť do zbierky..." msgid "Move up" msgstr "Posunúť vyššie" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Hudba" @@ -3125,56 +3186,32 @@ msgstr "Hudba" msgid "Music Library" msgstr "Hudobná zbierka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Stlmiť" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Moja Last.fm zbierka" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Moje Last.fm mix rádio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Moji Last.fm susedia" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Moje odporúčané Last.fm rádio" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Moja rádio zmes" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Moja hudba" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Moji susedia" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Moja rádio stanica" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Moje odporúčania" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Názov" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Názov" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Možnosti pomenovávania" @@ -3182,23 +3219,19 @@ msgstr "Možnosti pomenovávania" msgid "Narrow band (NB)" msgstr "Úzke pásmo" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Susedia" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Sieťové proxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Diaľkové ovládanie cez sieť" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nikdy" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nikdy nehrané" @@ -3207,21 +3240,21 @@ msgstr "Nikdy nehrané" msgid "Never start playing" msgstr "Nezačne sa prehrávať" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nový playlist" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nový playlist" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nový inteligentný playlist..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nové piesne" @@ -3229,24 +3262,24 @@ msgstr "Nové piesne" msgid "New tracks will be added automatically." msgstr "Nové skladby budú pridané autamticky." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Najnovšie skladby" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Ďalšia" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Nasledujúca skladba" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Budúci týždeň" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Bez analyzéru" @@ -3254,7 +3287,7 @@ msgstr "Bez analyzéru" msgid "No background image" msgstr "Žiaden obrázok na pozadí" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Žiadne obaly na exportovanie." @@ -3262,7 +3295,7 @@ msgstr "Žiadne obaly na exportovanie." msgid "No long blocks" msgstr "Žiadne dlhé bloky" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nenájdené. Vymažte políčko hľadania pre opätovné zobrazenie celého playlistu." @@ -3276,11 +3309,11 @@ msgstr "Žiadne krátke bloky" msgid "None" msgstr "Nijako" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Žiadna z vybratých piesní nieje vhodná na kopírovanie do zariadenia" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normálny" @@ -3288,43 +3321,47 @@ msgstr "Normálny" msgid "Normal block type" msgstr "Normálny typ bloku" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Nedostupné, keď sa používajú dynamické playlisty" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nepripojené" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nedostatok obsahu" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Nedostatok fanúšikov" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nedostatok členov" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nedostatok susedov" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Nenainštalované" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Nieprihlásený" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Nepripojené - pripojíte dvojklikom" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Nič sa nenašlo" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Typ upozornení" @@ -3337,36 +3374,41 @@ msgstr "Upozornenia" msgid "Now Playing" msgstr "Prehráva sa" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD ukážka" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Vypnuté" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Zapnuté" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3374,11 +3416,11 @@ msgid "" "192.168.x.x" msgstr "Akceptovať iba spojenia z klientov s rozsahom ip adries:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Povoliť spojenie iba z lokálnej siete" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Iba prvé zobraziť" @@ -3386,23 +3428,23 @@ msgstr "Iba prvé zobraziť" msgid "Opacity" msgstr "Nepriehľadnosť" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Otvoriť %1 v prehliadači" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Otvoriť &zvukové CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Otvoriť OPML súbor" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Otvoriť OPML súbor..." @@ -3410,30 +3452,35 @@ msgstr "Otvoriť OPML súbor..." msgid "Open device" msgstr "Otvoriť zariadenie" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Otvoriť súbor ..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Otvoriť v Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "ju otvorí v novom playliste" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "ju otvorí v novom playliste" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Otvoriť v prehliadači" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Otvoriť..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Operácia zlyhala" @@ -3453,23 +3500,23 @@ msgstr "Možnosti..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizovať súbory" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Spravovať súbory..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Spravovanie súborov" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Pôvodné tagy" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Ostatné možnosti" @@ -3477,7 +3524,7 @@ msgstr "Ostatné možnosti" msgid "Output" msgstr "Výstup" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Výstupné zariadenie" @@ -3485,15 +3532,11 @@ msgstr "Výstupné zariadenie" msgid "Output options" msgstr "Možnosti výstupu" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Plugin výstupu" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Prepísať všetko" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Prepísať existujúce súbory" @@ -3505,15 +3548,15 @@ msgstr "Prepísať iba menšie" msgid "Owner" msgstr "Vlastník" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Analyzuje sa Jamendo katalóg" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3522,20 +3565,20 @@ msgstr "Party" msgid "Password" msgstr "Heslo" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pozastaviť" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pozastaviť prehrávanie" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pozastavené" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Účinkujúci" @@ -3544,34 +3587,22 @@ msgstr "Účinkujúci" msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Obyčajný bočný panel" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Hrať" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Hrať interpréta alebo tag" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Hrať rádio interpréta..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Počet prehraní" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Hrať vlastné rádio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Hrať ak je zastavené, pozastaviť ak hrá" @@ -3580,45 +3611,42 @@ msgstr "Hrať ak je zastavené, pozastaviť ak hrá" msgid "Play if there is nothing already playing" msgstr "Začne hrať, ak sa nič neprehráva" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Hrať rádio tagu..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Hrať . skladbu v playliste" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Hrať/Pozastaviť" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Prehrávanie" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Možnosti prehrávača" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Playlist" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Playlist dokončený" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Možnosti playlistu" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Typ playlistu" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Playlisty" @@ -3630,23 +3658,23 @@ msgstr "Prosím zatvorte váš internetový prehliadač a vráťte sa do Clement msgid "Plugin status:" msgstr "Stav pluginu:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasty" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Populárne piesne" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Populárne piesne tohto mesiaca" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Populárne piesne dneška" @@ -3655,22 +3683,23 @@ msgid "Popup duration" msgstr "Trvanie upozornenia" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Predzosilnenie" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Nastavenia" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Nastavenia..." @@ -3706,7 +3735,7 @@ msgstr "Stlačte kombináciu kláves na použitue pre" msgid "Press a key" msgstr "Stlač tlačítko" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Stlač kombináciu tlačítok na použitie pre %1..." @@ -3717,20 +3746,20 @@ msgstr "Možnosti krásneho OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Ukážka" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Predchádzajúca" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Predchádzajúca skladba" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Vypísať informáciu o verzii" @@ -3738,21 +3767,25 @@ msgstr "Vypísať informáciu o verzii" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Priebeh" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Priebeh" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psychedelické" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Stlač tlačidlo na Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Vložiť piesne v náhodnom poradí" @@ -3760,7 +3793,12 @@ msgstr "Vložiť piesne v náhodnom poradí" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Kvalita" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Kvalita" @@ -3768,28 +3806,33 @@ msgstr "Kvalita" msgid "Querying device..." msgstr "Zaraďuje sa zariadenie..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Správca poradia" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Zaradiť vybrané skladby" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Zaradiť skladbu" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Rádio (rovnaká hlasitosť pre všetky skladby)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Rádiá" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Dážď" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Dážď" @@ -3797,48 +3840,48 @@ msgstr "Dážď" msgid "Random visualization" msgstr "Náhodná vizualizácia" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Ohodnotiť aktuálnu pieseň 0 hviezdičkami" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Ohodnotiť aktuálnu pieseň 1 hviezdičkou" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Ohodnotiť aktuálnu pieseň 2 hviezdičkami" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Ohodnotiť aktuálnu pieseň 3 hviezdičkami" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Ohodnotiť aktuálnu pieseň 4 hviezdičkami" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Ohodnotiť aktuálnu pieseň 5 hviezdičkami" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Hodnotenie" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Naozaj zrušiť?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Prekročený limit presmerovaní, overte nastavenie servra" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Obnoviť" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Obnoviť katalóg" @@ -3846,19 +3889,15 @@ msgstr "Obnoviť katalóg" msgid "Refresh channels" msgstr "Obnoviť kanály" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Obnoviť zoznam priateľov" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Obnoviť zoznam staníc" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Obnoviť streamy" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3870,8 +3909,8 @@ msgstr "Pamätať si kývnutie Wii diaľkového" msgid "Remember from last time" msgstr "Zapamätať z naposledy" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Odstrániť" @@ -3879,7 +3918,7 @@ msgstr "Odstrániť" msgid "Remove action" msgstr "Odstrániť akciu" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Odstrániť duplikáty z playlistu" @@ -3887,73 +3926,77 @@ msgstr "Odstrániť duplikáty z playlistu" msgid "Remove folder" msgstr "Odstrániť priečinok" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Odstrániť z Mojej hudby" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Odstrániť zo záložiek" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Odstrániť z obľúbených" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Odstrániť z playlistu" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Odstrániť playlist" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Odstrániť playlisty" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Odstraňujú sa piesne z Mojej hudby" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Odstraňujú sa piesne z obľúbených" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Premenovať playlist \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Premenovať Grooveshark playlist" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Premenovať playlist" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Premenovať playlist..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Prečíslovať skladby v tomto poradí..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Opakovať" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Opakovať album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Opakovať playlist" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Opakovať skladbu" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Nahradiť aktuálny playlist" @@ -3962,15 +4005,15 @@ msgstr "Nahradiť aktuálny playlist" msgid "Replace the playlist" msgstr "ňou nahradí playlist" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Nahradiť medzery podčiarknutiami" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Vyrovnať hlasitosť" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Režim normalizovania hlasitosti" @@ -3978,24 +4021,24 @@ msgstr "Režim normalizovania hlasitosti" msgid "Repopulate" msgstr "Znovu naplniť" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Vyžadovať overovací kód" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Zresetovať" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Vynulovať počet prehraní" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Spustiť znovu prehrávanie skladby, alebo prehrať predchádzajúcu skladbu, ak ešte neprešlo 8 sekúnd od začiatku skladby." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Obmedziť na ASCII písmená" @@ -4003,15 +4046,15 @@ msgstr "Obmedziť na ASCII písmená" msgid "Resume playback on start" msgstr "Obnoviť prehrávanie pri spustení" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Získavajú sa piesne z Mojej hudby na Groovesharku" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Získavanie populárnych piesní z Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Získavajú sa Grooveshark playlisty" @@ -4025,17 +4068,17 @@ msgstr "Pravý" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Ripovať" #: ui/ripcd.cpp:116 msgid "Rip CD" msgstr "Ripovať CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Ripovať zvukové CD..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4047,25 +4090,25 @@ msgstr "Spustiť" msgid "SOCKS proxy" msgstr "SOCKS proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Chyba pri SSL handshakeu, overte nastavenie serveru. Možnosť SSLv3 nižšie môže niektoré problémy obísť." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Bezpečne odpojiť zariadenie" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Bezpečne odpojiť zariadenie po skončení kopírovania" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Rýchlosť vzorkovania" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Rýchlosť vzorkovania" @@ -4073,27 +4116,33 @@ msgstr "Rýchlosť vzorkovania" msgid "Save .mood files in your music library" msgstr "Ukladať súbory .mood vo vašej hudobnej zbierke" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Uložiť obal albumu" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Uložiť obal na disk..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Uložiť obrázok" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Uložiť playlist" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Uložiť playlist" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Uložiť playlist..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Uložiť predvoľbu" @@ -4109,11 +4158,11 @@ msgstr "Ukladať štatistiku do tagov súboru, keď je to možné" msgid "Save this stream in the Internet tab" msgstr "Uložiť tento stream na karte Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Ukladanie štatistiky piesní do súborov piesní" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Ukladajú sa skladby" @@ -4125,7 +4174,7 @@ msgstr "Profil so škálovateľnou vzorkovacou frekvenciou" msgid "Scale size" msgstr "Veľkosť škály" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Skóre" @@ -4133,10 +4182,14 @@ msgstr "Skóre" msgid "Scrobble tracks that I listen to" msgstr "Skroblovať skladby, ktoré počúvam" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Hľadať" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Hľadať" @@ -4144,23 +4197,23 @@ msgstr "Hľadať" msgid "Search Icecast stations" msgstr "Hľadať Icecast stanice" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Hľadať na Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Hľadať na Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Vyhľadať na Subsonicu" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Hľadať automaticky" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Hľadať obaly albumov..." @@ -4180,21 +4233,21 @@ msgstr "Hľadať na iTunes" msgid "Search mode" msgstr "Režim hľadania" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Možnosti hľadania" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Výsledky hľadania" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Výrazy na hľadanie" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Hľadanie na Grooveshak" @@ -4202,27 +4255,27 @@ msgstr "Hľadanie na Grooveshak" msgid "Second level" msgstr "Druhá úroveň" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Posunúť vzad" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Posunúť vpred" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Pretočiť súčasnú skladbu o určitý čas" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Pretočiť súčasnú skladbu na presné miesto" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Označiť všetko" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Nevybrať nič" @@ -4230,7 +4283,7 @@ msgstr "Nevybrať nič" msgid "Select background color:" msgstr "Vybrať farbu pozadia:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Vybrať obrázok pozadia" @@ -4246,7 +4299,7 @@ msgstr "Vybrať farbu popredia:" msgid "Select visualizations" msgstr "Vybrať vizualizácie" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Vybrať vizualizácie..." @@ -4254,7 +4307,7 @@ msgstr "Vybrať vizualizácie..." msgid "Select..." msgstr "Vybrať..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Sériové číslo" @@ -4266,51 +4319,51 @@ msgstr "URL servru" msgid "Server details" msgstr "Podrobnosti servera" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Služba je offline" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Nastaviť %1 do \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Nastaviť hlasitosť na percent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Nastaviť hodnotu pre všetky vybraté skladby..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Nastavenia" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Skratka" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Skratka pre %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Skratka pre %1 už existuje" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Zobraziť" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Zobraziť OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Zobraziť blikajúcu animáciu na súčasnej skladbe" @@ -4338,15 +4391,15 @@ msgstr "Zobrazovať upozornenia z tray lišty" msgid "Show a pretty OSD" msgstr "Zobrazovať krásne OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Zobraziť nad stavovou lištou" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Zobraziť všetky piesne" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Zobraziť všetky piesne" @@ -4358,32 +4411,36 @@ msgstr "Zobraziť obaly albumov v zbierke" msgid "Show dividers" msgstr "Zobraziť oddeľovače" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Zobraziť celú veľkosť..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Zobraziť skupiny vo výsledkoch globálneho vyhľadávania" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Zobraziť v prehliadači súborov..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Zobraziť v zbierke..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Zobrazovať v rôznych interprétoch" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Zobraziť panel nálady" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Zobraziť iba duplikáty" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Zobraziť iba neotagované" @@ -4392,8 +4449,8 @@ msgid "Show search suggestions" msgstr "Zobrazovať návrhy vyhľadávania" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Zobrazovať tlačítka \"obľúbené\" a \"zakázané\"" +msgid "Show the \"love\" button" +msgstr "Zobraziť tlačidlo \"Obľúbené\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4407,27 +4464,27 @@ msgstr "Zobrazovať tray ikonu" msgid "Show which sources are enabled and disabled" msgstr "Zobraziť, ktoré zdroje sú povolené, a ktoré zakázané" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Zobraziť/Skryť" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Zamiešať" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Zamiešať albumy" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Zamiešať všetko" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Zamiešať playlist" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Zamiešať skladby v tomto albume" @@ -4443,7 +4500,7 @@ msgstr "Odhlásiť" msgid "Signing in..." msgstr "Prihlasovanie..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Podobní interpréti" @@ -4455,43 +4512,51 @@ msgstr "Veľkosť" msgid "Size:" msgstr "Veľkosť:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Preskočiť dozadu v playliste" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Počet preskočení" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Preskočiť dopredu v playliste" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Preskočiť vybrané skladby" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Preskočiť skladbu" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Malý obal albumu" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Malý bočný panel" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Inteligentný playlist" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Inteligentné playlisty" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4499,11 +4564,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Informácie o piesni" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Pieseň" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4523,15 +4588,23 @@ msgstr "Usporiadať podľa žánru (podľa populatity)" msgid "Sort by station name" msgstr "Usporiadať podľa názvu stanice" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Radiť piesne v playlistoch podľa abecedy" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Zoradiť piesne podľa" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Triedenie" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Zdroj" @@ -4547,7 +4620,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Chyba pri prihlasovaní na Spotify" @@ -4555,7 +4628,7 @@ msgstr "Chyba pri prihlasovaní na Spotify" msgid "Spotify plugin" msgstr "Spotify plugin" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify plugin nieje nainštalovaný" @@ -4563,77 +4636,77 @@ msgstr "Spotify plugin nieje nainštalovaný" msgid "Standard" msgstr "Štandardný" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "S hviezdičkou" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "Začať ripovanie" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Začať playlist práve prehrávanou" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Začať transkódovanie" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Začnite písať niečo do vyhľadávacieho políčka vyššie, aby ste naplnili tento zoznam výsledkov hľadania" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Začína sa %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Začína sa ..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stanice" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Zastaviť" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Zastaviť po" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Zastaviť po tejto skladbe" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Zastaviť prehrávanie" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Zastaviť prehrávanie po aktuálnej skladbe" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Zastaviť prehrávanie po skladbe: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Zastavené" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Stream" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4643,7 +4716,7 @@ msgstr "Streamovanie zo servru Subsonic vyžaduje po 30 dňovej skúšobnej dobe msgid "Streaming membership" msgstr "Streamovacie členstvo" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Podpísané playlisty" @@ -4651,7 +4724,7 @@ msgstr "Podpísané playlisty" msgid "Subscribers" msgstr "Predplatitelia" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4659,12 +4732,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Hotovo!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Úspešne zapísané %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Nájdené tagy" @@ -4673,13 +4746,13 @@ msgstr "Nájdené tagy" msgid "Summary" msgstr "Zhrnutie" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Veľmi vysoké (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super vysoká (2048x2048)" @@ -4691,43 +4764,35 @@ msgstr "Podporované formáty" msgid "Synchronize statistics to files now" msgstr "Synchronizovať štatistiky do súborov teraz" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synchronizuje sa Spotify schránka" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synchronizuje sa Spotify playlist" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synchronizujú sa skladby ohviezdičkované na Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Systémové farby" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Karty na vrchu" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tag" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Získavač tagov" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Rádio tagu" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Cieľový dátový tok" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4735,11 +4800,11 @@ msgstr "Techno" msgid "Text options" msgstr "Textové možnosti" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Poďakovanie" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Príkaz \"%1\" nemohol začať." @@ -4748,17 +4813,12 @@ msgstr "Príkaz \"%1\" nemohol začať." msgid "The album cover of the currently playing song" msgstr "Obal albumu práve prehrávanej piesne" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Priečinok %1 nieje platný" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Playlist '%1' je prázdny alebo nemohol byť načítaný." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Druhá hodnota musí byť väčšia ako prvá!" @@ -4766,40 +4826,40 @@ msgstr "Druhá hodnota musí byť väčšia ako prvá!" msgid "The site you requested does not exist!" msgstr "Stránka, ktorú požadujete, neexistuje!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Stránka, ktorú požadujete, nie je obrázok!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Skúšobná verzia Subsonic servera uplynula. Prosím prispejte, aby ste získali licenčný kľúč. Navštívte subsonic.org pre detaily." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Verzia Clementine, na ktorú sa práve aktualizovali, vyžaduje preskenovanie celej zbierky kvôli novým funkciám uvedeným nižšie:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "V tomto albume sú ďalšie piesne" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Bol tu problém s komunikáciou s gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Nastal problém pri získavaní metadát z Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Bol tu problém so spracovaním odpovede z iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4811,13 +4871,13 @@ msgid "" "deleted:" msgstr "Nastal problém pri vymazávaní niektorých piesní. Nasledujúce súbory sa nedali vymazať:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Tieto súbory budú vymazané zo zariadenia, ste si istý, že chcete pokračovať?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4837,13 +4897,13 @@ msgstr "Tieto nastavenia sú použité v dialógu \"Transkódovať hudbu\", a ke msgid "Third level" msgstr "Tretia úroveň" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Táto činnosť vytvorí databázu ktorá môže byť veľká aj 150MB.\nChcete ajtak pokračovať?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Tento album nieje dostupný v požadovanom formáte" @@ -4857,11 +4917,11 @@ msgstr "Toto zariadenie musí byť najprv pripojené a otvorené, až potom mô msgid "This device supports the following file formats:" msgstr "Toto zariadenie podporuje nasledujúce formáty súborov:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Toto zariadenie nebude pracovať správne" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Toto síce je MTP zariadenie, ale skompilovali ste Clementine bez podpory libmtp." @@ -4870,7 +4930,7 @@ msgstr "Toto síce je MTP zariadenie, ale skompilovali ste Clementine bez podpor msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Toto síce je iPod, ale skompilovali ste Clementine bez podpory libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4880,33 +4940,33 @@ msgstr "Prvý krát ste pripojili toto zariadenie. Clementine teraz prehľadá z msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Táto možnosť sa dá zmeniť v nastaveniach, v časti Správanie" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Tento stream je len pre platiacich predplatiteľov" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Tento typ zariadení nieje podporovaný: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Názov" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Pred spustením Grooveshark rádia, by ste si mali najprv vypočuť niekoľko ďalších Grooveshark piesní" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Dnes" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Prepnúť Krásne OSD" @@ -4914,27 +4974,27 @@ msgstr "Prepnúť Krásne OSD" msgid "Toggle fullscreen" msgstr "Prepnúť na celú obrazovku" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Prepínať stav radu" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Prepnúť skroblovanie" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Prepnúť viditeľnosť Krásneho OSD" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Zajtra" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Príliš veľa presmerování" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Top skladby" @@ -4942,21 +5002,25 @@ msgstr "Top skladby" msgid "Total albums:" msgstr "Albumov celkom:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Spolu prenesených bytov" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Spolu urobených požiadavok cez sieť" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Č." -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Skladby" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Transkódovať hudbu" @@ -4968,7 +5032,7 @@ msgstr "Výpis transkódera" msgid "Transcoding" msgstr "Transkódovanie" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Transkódovanie %1 súborov použitím %2 vlákien." @@ -4977,11 +5041,11 @@ msgstr "Transkódovanie %1 súborov použitím %2 vlákien." msgid "Transcoding options" msgstr "Možnosti transkódovania" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbína" @@ -4989,72 +5053,72 @@ msgstr "Turbína" msgid "Turn off" msgstr "Vypnúť" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(y)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Heslo na Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Meno používateľa na Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultra široké pásmo (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Nedá sa stiahnuť %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "neznámy" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Neznámy typ obsahu" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Neznáma chyba" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Nenastavený obal" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Nepreskočiť vybraté skladby" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Nepreskočiť skladbu" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Zrušiť predplatné" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Pripravované koncerty" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Aktualizovať" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Aktualizovať Grooveshark playlist" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Aktualizovať všetky podcasty" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Aktualizovať zmenené priečinky v zbierke" @@ -5062,7 +5126,7 @@ msgstr "Aktualizovať zmenené priečinky v zbierke" msgid "Update the library when Clementine starts" msgstr "Aktualizovať zbierku pri zapnutí Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Aktualizovať tento podcast" @@ -5070,21 +5134,21 @@ msgstr "Aktualizovať tento podcast" msgid "Updating" msgstr "Aktualizuje sa" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Aktualizovanie %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Aktualizovanie %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Aktualizovanie zbierky" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Využitie" @@ -5092,11 +5156,11 @@ msgstr "Využitie" msgid "Use Album Artist tag when available" msgstr "Použiť tag Interprét albumu, ak je dostupný" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Použiť klávesové skratky GNOME" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Použiť metadáta na vyrovnanie hlasitosti ak sú dostupné" @@ -5116,7 +5180,7 @@ msgstr "Použiť vlastný set farieb" msgid "Use a custom message for notifications" msgstr "Používať vlastnú správu pre upozornenia" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Použiť sieťové diaľkové ovládanie" @@ -5156,20 +5220,20 @@ msgstr "Použiť systémové nastavenia proxy" msgid "Use volume normalisation" msgstr "Použiť normalizáciu hlasitosti" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Použitých" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Používateľ %1 nemá Grooveshark Anywhere účet" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Používateľské rozhranie" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5191,12 +5255,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Premenlivý dátový tok" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Rôzni interpréti" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Verzia %1" @@ -5209,7 +5273,7 @@ msgstr "Zobraziť" msgid "Visualization mode" msgstr "Režim vizualizácií" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Vizualizácie" @@ -5217,11 +5281,15 @@ msgstr "Vizualizácie" msgid "Visualizations Settings" msgstr "Nastavenia vizualizácií" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Detekcia hlasovej činnosti" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Hlasitosť %1%" @@ -5239,11 +5307,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Varovať ma pri zatvorení karty s playlistom" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5251,7 +5319,7 @@ msgstr "Wav" msgid "Website" msgstr "Webstránka" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Týždne" @@ -5277,32 +5345,32 @@ msgstr "Prečo neskúsiť..." msgid "Wide band (WB)" msgstr "Široké pásmo (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii diaľkové %1: aktivované" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii diaľkové %1: pripojené" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii diaľkové %1: kriticky slabá baterka (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii diaľkové %1: odaktivované" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii diaľkové %1: odpojené" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii diaľkové %1: slabá baterka (%2%)" @@ -5323,7 +5391,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "WMa" @@ -5331,25 +5399,25 @@ msgstr "WMa" msgid "Without cover:" msgstr "Bez obalu:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Chceli by ste presunúť tiež ostatné piesne v tomto albume do rôznych interprétov?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Chcete teraz spustiť úplné preskenovanie?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Zapísať všetky štatistiky piesní do súborov piesní" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Nesprávne meno používateľa alebo heslo." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5361,11 +5429,11 @@ msgstr "Rok" msgid "Year - Album" msgstr "Rok - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Roky" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Včera" @@ -5373,13 +5441,13 @@ msgstr "Včera" msgid "You are about to download the following albums" msgstr "Chystáte sa stiahnuť nasledujúce albumy" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Chystáte sa odstrániť %1 playlistov z vašich obľúbených, ste si istí?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5389,12 +5457,12 @@ msgstr "Chystáte sa odstrániť playlist, ktorý nie je súčasťou vašich ob msgid "You are not signed in." msgstr "Nie ste prihlásený." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Ste prihlásený ako %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Ste prihlásený." @@ -5402,13 +5470,13 @@ msgstr "Ste prihlásený." msgid "You can change the way the songs in the library are organised." msgstr "Môžete zmeniť spôsob, ktorým sú piesne v zbierke organizované." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Môžete počúvať zadarmo bez účtu, ale prémium členovia môžu počúvať kvalitnejšie streamy bez reklám." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5418,13 +5486,6 @@ msgstr "Môžete zadarmo počúvať Magnatune piesne bez účtu. Zakúpenie čle msgid "You can listen to background streams at the same time as other music." msgstr "Môžete počúvať streamy na pozadí v rovnakom čase ako inú hudbu." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Môžete skroblovať skladby zadarmo, ale len platiaci predplatitelia môžu streamovať Last.fm rádio z Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Môžete použiť vaše Wii diaľkové ako diaľkový ovládač pre Clementine. Pozrite si stránku na Clementine wiki pre viac informácií.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Nemáte Grooveshark Anywhere účet." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Nemáte Spotify prémium účet." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Nemáte aktívne predplatné" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Nemusíte byť prihlásený, aby ste mohli hľadať a počúvať hudbu na SoundCloud. Musíte sa ale prihlásiť, ak chcete pristupovať k vašim playlistom a streamom." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Boli ste odhlásení zo Spotify, prosím, zadajte heslo znovu v dialógu Nastavenia." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Boli ste odhlásený zo Spotify, prosím znovu zadajte heslo." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Milujete túto pieseň" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Potrebujete otvoriť Systémové nastavenia a povoliť Clementine \"ovládať váš počítač\" na použitie globálnych skratiek v Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5469,17 +5544,11 @@ msgstr "Potrebujete otvoriť Systémové nastavenia a zapnúť \"\n" +"PO-Revision-Date: 2014-05-11 08:08+0000\n" +"Last-Translator: R33D3M33R \n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/clementine/language/sl/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -46,9 +46,9 @@ msgstr " dni" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -61,11 +61,16 @@ msgstr " pt" msgid " seconds" msgstr " sekund" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " skladb" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 skladb)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albumov" @@ -75,12 +80,12 @@ msgstr "%1 albumov" msgid "%1 days" msgstr "%1 dni" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "pred %1 dnevi" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 na %2" @@ -90,48 +95,48 @@ msgstr "%1 na %2" msgid "%1 playlists (%2)" msgstr "%1 seznamov predvajanja (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "izbran %1 od" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 skladba" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 skladb" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "najdenih %1 skladb" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "najdenih %1 skladb (prikazanih %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 skladb" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 prenesenih" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: modul Wimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 drugih poslušalcev" @@ -145,18 +150,21 @@ msgstr "skupno %L1 predvajanj" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n spodletelih" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n končanih" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n preostaja" @@ -168,24 +176,24 @@ msgstr "Por&avnaj besedilo" msgid "&Center" msgstr "U&sredini" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "Po &meri" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Dodatki" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Pomoč" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Skrij %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Skrij ..." @@ -193,23 +201,23 @@ msgstr "&Skrij ..." msgid "&Left" msgstr "&Levo" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Glasba" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Brez" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Seznam &predvajanja" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Končaj" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Način p&onavljanja" @@ -217,23 +225,23 @@ msgstr "Način p&onavljanja" msgid "&Right" msgstr "&Desno" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Pre&mešani način" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Raztegni &stolpce, da se prilegajo oknu" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Orodja" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(različno preko več skladb)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... in vsem razvijalcem Amaroka" @@ -253,14 +261,10 @@ msgstr "0 px" msgid "1 day" msgstr "1 dan" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 skladba" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -270,7 +274,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40 %" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 naključnih skladb" @@ -278,12 +282,6 @@ msgstr "50 naključnih skladb" msgid "Upgrade to Premium now" msgstr "Nadgradite na Premium" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Ustvarite nov račun ali ponastavite geslo" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -294,6 +292,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Če ni označeno, bo Clementine poskusil shraniti vaše ocene in druge statistike v ločeno podatkovno zbirko in ne bo spreminjal vaših datotek.

Če je označeno, bo shranil statistike tako v podatkovno zbirko kot tudi neposredno v datoteko, vsakič, ko se spremenijo.

Zapomnite si, da to morda ne bo delovalo za vsako vrsto datotek in ker ni standardov, jih morda drugi predvajalniki ne bodo mogli prebrati.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Da omejite iskanje na eno izmed polj, dodajte ime polja pred iskalni pojem, npr. artist:Bode preišče knjižnico za vse izvajalce, ki vsebujejo besedo Bode.

Razpoložljiva polja: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -302,38 +311,38 @@ msgid "" "activated.

" msgstr "

To bo zapisalo vse ocene in statistike v oznake datotek za vse vaše skladbe v knjižnici.

To ni zahtevano, če je vedno vklopljena možnost "Shrani ocene in statistike v oznake datotek".

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Žetoni se pričnejo z %, na primer: %artist %album %title

\n\n

V primeru da odseke besedila, ki vsebujejo žetone, obdate z zavitimi oklepaji, bodo odseki skriti, če je žeton prazen.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Zahtevan je račun Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Zahtevan je račun Spotify Premium." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Odjemalec se lahko poveže le, če je vnesel pravo kodo." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Pametni seznam predvajanja je dinamični seznam skladb, ki se nahajajo v vaši knjižnici. Obstajajo različne vrste pametnih seznamov predvajanja, ki ponujajo različne načine izbire skladb." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Skladba bo vključena v seznam predvajanja, če se ujema s temi pogoji." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Ž" @@ -353,36 +362,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Prekini" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "O Clementine ..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "O Qt ..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Podrobnosti računa" @@ -394,11 +402,15 @@ msgstr "Podrobnosti računa (Premium)" msgid "Action" msgstr "Dejanje" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Omogoči/Onemogoči Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Pretok dejavnosti" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Dodaj podcast" @@ -414,39 +426,39 @@ msgstr "Dodaj novo vrstico, če jo podpira vrsta obvestila" msgid "Add action" msgstr "Dodaj dejanje" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Dodaj še en pretok ..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Dodaj mapo ..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Dodaj datoteko" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Dodaj datoteko v prekodirnik" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Dodaj datoteko(-e) v prekodirnik" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Dodaj datoteko ..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Dodajte datoteke za prekodiranje" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Dodaj mapo" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Dodaj mapo ..." @@ -458,11 +470,11 @@ msgstr "Dodaj novo mapo ..." msgid "Add podcast" msgstr "Dodaj podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Dodaj podcast ..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Dodaj iskalni pojem" @@ -526,6 +538,10 @@ msgstr "Dodaj oznako: število preskokov" msgid "Add song title tag" msgstr "Dodaj oznako: naslov" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Dodaj skladbo v predpomnilnik" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Dodaj oznako: številka skladbe" @@ -534,22 +550,34 @@ msgstr "Dodaj oznako: številka skladbe" msgid "Add song year tag" msgstr "Dodaj oznako: leto" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Dodaj skladbe med \"Moja glasba\", ko kliknem na gumb \"Priljubljena\"" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Dodaj pretok ..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Dodaj med priljubljene v Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Dodaj v sezname predvajanja Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Dodaj v Mojo glasbo" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Dodaj na drug seznam predvajanja" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Dodaj med zaznamke" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Dodaj na seznam predvajanja" @@ -558,6 +586,10 @@ msgstr "Dodaj na seznam predvajanja" msgid "Add to the queue" msgstr "Dodaj v vrsto" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Dodaj uporabnika/skupino v zaznamke" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Dodaj dejanje wiimotedev" @@ -587,15 +619,15 @@ msgstr "Dodano danes" msgid "Added within three months" msgstr "Dodano v zadnjih treh mesecih" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Dodajanje skladbe v Mojo glasbo" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Dodajanje skladbe med priljubljene" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Napredno združevanje ..." @@ -603,12 +635,12 @@ msgstr "Napredno združevanje ..." msgid "After " msgstr "Po " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Po kopiranju ..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -616,11 +648,11 @@ msgstr "Po kopiranju ..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (najboljša glasnost za vse skladbe)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -630,35 +662,36 @@ msgstr "Izvajalec albuma" msgid "Album cover" msgstr "Ovitek albuma" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Podrobnosti albuma na jamendo.com ..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumi z ovitkom" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumi brez ovitka" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Vse datoteke (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Vsi albumi" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Vsi izvajalci" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Vse datoteke (*)" @@ -667,19 +700,19 @@ msgstr "Vse datoteke (*)" msgid "All playlists (%1)" msgstr "Vsi seznami predvajanja (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Vsem prevajalcem" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Vse skladbe" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Dovoli odjemalcu, da prejme glasbo iz tega računalnika." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Dovoli prejeme" @@ -704,30 +737,30 @@ msgstr "Vedno pokaži glavno okno" msgid "Always start playing" msgstr "Vedno začni s predvajanjem" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Da lahko uporabite Spotify v Clementine, potrebujete dodaten vstavek. Ali ga želite prejeti in namestiti zdaj?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Med nalaganjem podatkovne zbirke iTunes je prišlo do napake" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Med zapisovanjem metapodatkov v '%1' je prišlo do napake" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Prišlo je do nedoločene napake." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "In:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Jezen" @@ -736,13 +769,13 @@ msgstr "Jezen" msgid "Appearance" msgstr "Videz" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Pripni datoteke/naslove URL seznamu predvajanja" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Pripni trenutnemu seznamu predvajanja" @@ -750,52 +783,47 @@ msgstr "Pripni trenutnemu seznamu predvajanja" msgid "Append to the playlist" msgstr "Pripni k seznamu predvajanja" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Uporabi stiskanje za preprečitev odrezanja" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Ali resnično želite izbrisati predlogo nastavitev \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Ali ste prepričani, da želite izbrisati ta seznam predvajanja?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Ali ste prepričani, da želite ponastaviti statistike te skladbe?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Ali ste prepričani, da želite zapisati statistike skladbe v datoteko skladbe za vse skladbe v vaši knjižnici?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Izvajalec" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "O izvajalcu" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radio izvajalca" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Oznake izvajalcev" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Začetnice izvajalca" @@ -803,9 +831,13 @@ msgstr "Začetnice izvajalca" msgid "Audio format" msgstr "Vrsta zvoka" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Izhod zvoka" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Overitev ni uspela" @@ -813,7 +845,7 @@ msgstr "Overitev ni uspela" msgid "Author" msgstr "Avtor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Avtorji" @@ -829,7 +861,7 @@ msgstr "Samodejno posodabljanje" msgid "Automatically open single categories in the library tree" msgstr "Samodejno razširi enojne kategorije v drevesnem pogledu knjižnice" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Na voljo" @@ -837,15 +869,15 @@ msgstr "Na voljo" msgid "Average bitrate" msgstr "Povprečna bitna hitrost" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Povprečna velikost slike" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC-jevi podcasti" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "udarcev/min" @@ -866,7 +898,7 @@ msgstr "Slika ozadja" msgid "Background opacity" msgstr "Prekrivnost ozadja" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Varnostno kopiranje podatkovne zbirke" @@ -874,11 +906,7 @@ msgstr "Varnostno kopiranje podatkovne zbirke" msgid "Balance" msgstr "Ravnovesje" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Izobči" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Stolpčni preučevalnik" @@ -898,18 +926,17 @@ msgstr "Obnašanje" msgid "Best" msgstr "Najboljše" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografija iz %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitna hitrost" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -917,7 +944,12 @@ msgstr "Bitna hitrost" msgid "Bitrate" msgstr "Bitna hitrost" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Bitna hitrost" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blokovni preučevalnik" @@ -933,7 +965,7 @@ msgstr "Raven zabrisanja" msgid "Body" msgstr "Telo" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Preučevalnik Boom" @@ -947,11 +979,11 @@ msgstr "Box" msgid "Browse..." msgstr "Prebrskaj ..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Trajanje medpomnilnika" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Medpomnjenje" @@ -963,43 +995,66 @@ msgstr "Ti viri so onemogočeni:" msgid "Buttons" msgstr "Gumbi" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Grooveshar privzeto razvršča skladbe po datumu dodatka" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Podpora predlogam CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Pot do predpomnilnika:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Predpomnjenje" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Predpomnjenje %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Prekliči" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Zahtevan je Captcha.\nDa rešite to težavo, se poskusite v Vk.prijaviti z vašim brskalnikom." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Spremeni ovitek albuma" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Spremeni velikost pisave ..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Spremeni način ponavljanja" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Spremeni bližnjico ..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Spremeni način naključnega predvajanja" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Sprememba jezika" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1009,15 +1064,19 @@ msgstr "Sprememba nastavitve predvajanja mono, bo dejavna za naslednje skladbe, msgid "Check for new episodes" msgstr "Preveri za novimi epizodami" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Preveri za posodobitvami ..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Izberi mapo s predpomnilnikom za Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Izberite ime za vaš pametni seznam predvajanja" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Izberi samodejno" @@ -1033,11 +1092,11 @@ msgstr "Izberi pisavo ..." msgid "Choose from the list" msgstr "Izberi s seznama" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Izberite kako bo seznam predvajanja razvrščen in koliko skladb bo vseboval." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Izberi mapo za prejeme podcastov" @@ -1046,7 +1105,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Izberite spletne strani za katere želite, da jih Clementine uporabi pri iskanju besedil" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasična" @@ -1054,17 +1113,17 @@ msgstr "Klasična" msgid "Cleaning up" msgstr "Čiščenje" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Počisti" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Počisti seznam predvajanja" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1077,8 +1136,8 @@ msgstr "Napaka v Clementine" msgid "Clementine Orange" msgstr "Clementine oranžna" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine predočenja" @@ -1100,9 +1159,9 @@ msgstr "Clementine lahko predvaja glasbo, ki ste jo poslali na Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine lahko predvaja glasbo, ki ste jo poslali na Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine lahko predvaja glasbo, ki ste jo poslali na Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine lahko predvaja glasbo, ki ste jo naložili na OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1115,20 +1174,13 @@ msgid "" "an account." msgstr "Clementine lahko uskladi vaš seznam naročil z drugimi računalniki in programi za podcast. Ustvari račun." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine ni mogel naložiti predočenj projectM. Preverite, če je Clementine pravilno nameščen." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine ni mogel pridobiti vašega stanja naročnine, ker so težave z vašo povezavo. Predvajane skladbe bodo predpomnjene in na Last.fm poslane kasneje." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Pregledovalnik slik Clementine" @@ -1140,11 +1192,11 @@ msgstr "Clementine ni mogel najti rezultatov za to datoteko" msgid "Clementine will find music in:" msgstr "Clementine bo našel glasbo v:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Kliknite sem za dodajanje glasbe" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1154,7 +1206,10 @@ msgstr "Kliknite sem, da dodate ta seznam predvajanja med priljubljene. Na ta na msgid "Click to toggle between remaining time and total time" msgstr "Kliknite za preklop med preostalim in celotnim časom" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1169,19 +1224,19 @@ msgstr "Zapri" msgid "Close playlist" msgstr "Zapri seznam predvajanja" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Zapri predočenje" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Zaprtje tega okna bo prekinilo prejem." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Zaprtje tega okna bo prekinilo iskanje ovitkov albumov." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Klubska" @@ -1189,73 +1244,78 @@ msgstr "Klubska" msgid "Colors" msgstr "Barve" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Z vejicami ločen seznam razred:raven, raven je 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Opomba" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Radio skupnosti" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Samodejno dopolni oznake" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Samodejno dopolni oznake ..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Skladatelj" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Nastavi %1 ..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Nastavi Grooveshark ..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Nastavi Last.fm ..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Nastavi Magnatune ..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Nastavi bližnjice" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Nastavi Spotify ..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Nastavite Subsonic ..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Nastavi Vk.com ..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Nastavi splošno iskanje" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Nastavi knjižnico ..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Nastavi podcaste ..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Nastavi ..." @@ -1263,11 +1323,11 @@ msgstr "Nastavi ..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Povežite Wii Remotes z uporabo dejanja omogoči/onemogoči" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Povežite napravo" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Povezovanje na Spotify" @@ -1277,12 +1337,16 @@ msgid "" "http://localhost:4040/" msgstr "Strežnik je zavrnil povezavo, preverite njegov naslov URL. Primer: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Povezava je časovno pretekla, preverite naslov URL strežnika. Primer: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Težava s povezavo ali pa je lastnik onemogočil zvok" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konzola" @@ -1298,17 +1362,21 @@ msgstr "Pretvori vso glasbo" msgid "Convert any music that the device can't play" msgstr "Pretvori vso glasbo, ki je naprava ne more predvajati" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Kopiraj naslov URL za deljenje v odložišče" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiraj v odložišče" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopiraj na napravo ..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopiraj v knjižnico ..." @@ -1316,156 +1384,152 @@ msgstr "Kopiraj v knjižnico ..." msgid "Copyright" msgstr "Avtorske pravice" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Ni se bilo mogoče povezati s Subsonic. Preverite naslov URL strežnika. Primer: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Ni bilo mogoče ustvariti GStreamer-jevega elementa \"%1\" - prepričajte se, da imate nameščene vse zahtevane vstavke GStreamer" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Ni bilo mogoče ustvariti seznama predvajanja" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Zvijalnika za %1 ni bilo mogoče najti. Preverite, če so nameščeni pravilni vstavki GStreamer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Kodirnika za %1 ni bilo mogoče najti. Preverite, če so nameščeni pravilni vstavki GStreamer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Radijske postaje last.fm ni bilo mogoče naložiti" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Izhodne datoteke %1 ni bilo mogoče odpreti" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Upravljalnik ovitkov" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Ovitek albuma iz vstavljene slike" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Ovitek albuma je bil samodejno naložen iz %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Ovitek albuma je bil ročno odstranjen iz uporabe" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Ovitek albuma ni nastavljen" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Ovitek albuma je nastavljen iz %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Ovitki iz %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Ustvari nov seznam prevajanja Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Postopni prehod med samodejno spremembo skladb" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Postopni prehod med ročno spremembo skladb" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Dol" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1473,7 +1537,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Gor" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Po meri" @@ -1485,54 +1549,50 @@ msgstr "Slika po meri:" msgid "Custom message settings" msgstr "Nastavitve sporočil po meri" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Radio po meri" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Po meri ..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Pot DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Plesna" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Zaznana je bila okvara podatkovne zbirke. Za navodila obnovitve podatkovne zbirke si oglejte: https://code.google.com/p/clementine-player/wiki/DatabaseCorruption" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum ustvarjenja" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum spremembe" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dnevi" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Privzeto" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Zmanjšaj glasnost za 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Zmanjšaj glasnost za odstotkov" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Zmanjšaj glasnost" @@ -1540,6 +1600,11 @@ msgstr "Zmanjšaj glasnost" msgid "Default background image" msgstr "Privzeta slika ozadja" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Privzeta naprava na %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Privzete vrednosti" @@ -1548,30 +1613,30 @@ msgstr "Privzete vrednosti" msgid "Delay between visualizations" msgstr "Zakasnitev med predočenji" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Izbriši" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Izbriši seznam predvajanja Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Izbriši prejete podatke" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Izbriši datoteke" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Izbriši iz naprave ..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Izbriši iz diska ..." @@ -1579,31 +1644,31 @@ msgstr "Izbriši iz diska ..." msgid "Delete played episodes" msgstr "Izbriši predvajane epizode" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Izbriši predlogo nastavitev" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Izbriši pameten seznam predvajanja" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Izbriši izvorne datoteke" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Brisanje datotek" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Odstrani izbrane skladbe iz vrste" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Odstrani skladbo iz vrste" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Cilj" @@ -1612,7 +1677,7 @@ msgstr "Cilj" msgid "Details..." msgstr "Podrobnosti ..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Naprava" @@ -1624,17 +1689,17 @@ msgstr "Lastnosti naprave" msgid "Device name" msgstr "Ime naprave" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Lastnosti naprave ..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Naprave" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Pogovorno okno" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1669,12 +1734,17 @@ msgstr "Trajanje onemogočenja" msgid "Disable moodbar generation" msgstr "Onemogoči ustvarjanje moodbara" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Onemogočeno" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Onemogočeno" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1684,15 +1754,15 @@ msgid "Discontinuous transmission" msgstr "Nezvezni prenos (DTX)" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Možnosti prikaza" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Pokaži prikaz na zaslonu" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Ponovno preišči celotno knjižnico" @@ -1704,27 +1774,27 @@ msgstr "Ne pretvarjaj glasbe" msgid "Do not overwrite" msgstr "Ne prepiši" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ne ponavljaj" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Ne prikaži med \"Različni izvajalci\"" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ne premešaj" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ne zaustavi!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Donacija" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dvoklik za odpiranje" @@ -1732,12 +1802,13 @@ msgstr "Dvoklik za odpiranje" msgid "Double clicking a song will..." msgstr "Dvoklik skladbe bo povzročil sledeče ..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Prejmi %n epizod" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Mapa prejemov" @@ -1753,7 +1824,7 @@ msgstr "Članstvo prejemanja" msgid "Download new episodes automatically" msgstr "Samodejno prejmi nove epizode" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Prejem je v čakalni vrsti" @@ -1761,15 +1832,15 @@ msgstr "Prejem je v čakalni vrsti" msgid "Download the Android app" msgstr "Prejmite app za Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Prejmi ta album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Prejmi ta album ..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Prejmi to epizodo" @@ -1777,7 +1848,7 @@ msgstr "Prejmi to epizodo" msgid "Download..." msgstr "Prejmi ..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Prejemanje (%1 %) ..." @@ -1786,23 +1857,23 @@ msgstr "Prejemanje (%1 %) ..." msgid "Downloading Icecast directory" msgstr "Prejemanje imenika Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Prejemanje kataloga Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Prejemanje kataloga Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Prejemanje vstavka Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Prejemanje metapodatkov" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Povlecite za spremembo položaja" @@ -1816,26 +1887,26 @@ msgstr "Dubstep" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Trajanje" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dinamični način je vključen" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dinamični naključni miks" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Uredi pametni seznam predvajanja ..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Uredi oznako \"%1\" ..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Uredi oznako ..." @@ -1847,16 +1918,16 @@ msgstr "Uredi oznake" msgid "Edit track information" msgstr "Uredi podrobnosti o skladbi" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Uredi podrobnosti o skladbi ..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Uredi podrobnosti skladb ..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Uredi ..." @@ -1864,6 +1935,10 @@ msgstr "Uredi ..." msgid "Enable Wii Remote support" msgstr "Omogoči podporo Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Omogoči samodejno predpomnjenje" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Omogoči uravnalnik" @@ -1878,7 +1953,7 @@ msgid "" "displayed in this order." msgstr "Omogočite spodnje vire, da bodo vključeni v iskalne rezultate. Rezultati bodo prikazani v sledečem vrstnem redu." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Omogoči/onemogoči pošiljanje podatkov o predvajanih skladbah v Last.fm" @@ -1906,15 +1981,10 @@ msgstr "Vnesite naslov URL, da prejmete ovitek z interneta:" msgid "Enter a filename for exported covers (no extension):" msgstr "Vnesite ime datoteke za izvožene ovitke (brez pripone):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Vnesite novo ime za ta seznam predvajanja" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Vnesite izvajalca ali oznako za začetek poslušanja radia Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1928,7 +1998,7 @@ msgstr "Spodaj vnesite iskalne pogoje, da najdete podcaste v trgovini iTunes" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Spodaj vnesite iskalne pogoje, da najdete podcaste na gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Sem vnesite iskalne pogoje" @@ -1937,11 +2007,11 @@ msgstr "Sem vnesite iskalne pogoje" msgid "Enter the URL of an internet radio stream:" msgstr "Vnesite naslov URL pretoka internetnega radia:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Vnesite ime mape" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Vnesite ta IP v App, da se povežete s Clementine." @@ -1949,21 +2019,22 @@ msgstr "Vnesite ta IP v App, da se povežete s Clementine." msgid "Entire collection" msgstr "Celotna zbirka" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Uravnalnik" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Enakovredno --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Enakovredno --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Napaka" @@ -1971,38 +2042,38 @@ msgstr "Napaka" msgid "Error connecting MTP device" msgstr "Napaka med povezovanjem naprave MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Napaka med kopiranjem skladb" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Napaka med brisanjem skladb" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Napaka med prejemanjem vstavka Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Napaka med nalaganjem %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Napaka med nalaganjem seznama predvajanja di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Napaka med obdelavo %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" -msgstr "Napaka med nalaganjem glasbenega CD-ja" +msgstr "Napaka med nalaganjem zvočnega CD-ja" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Sploh predvajano" @@ -2034,7 +2105,7 @@ msgstr "Vsakih 6 ur" msgid "Every hour" msgstr "Vsako uro" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Razen med skladbami na istem albumu ali v isti predlogi CUE" @@ -2046,7 +2117,7 @@ msgstr "Obstoječi ovitki" msgid "Expand" msgstr "Razširi" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Poteče %1" @@ -2067,36 +2138,36 @@ msgstr "Izvozi prejete ovitke" msgid "Export embedded covers" msgstr "Izvozi vstavljene ovitke" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Izvoz končan" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Izvoženih %1 od %2 ovitkov (%3 preskočenih)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2106,42 +2177,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Pojemaj ob premoru / povečaj ob nadaljevanju" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Pojemanje glasnosti ob zaustavitvi predvajanja" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Pojemanje" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Trajanje pojemanja" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" -msgstr "" +msgstr "Napaka med branjem iz pogona CD" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Imenika ni bilo mogoče prejeti" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Podcastov ni bilo mogoče prejeti" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Podcasta ni bilo mogoče naložiti" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "XML-ja za ta vir RSS ni bilo mogoče razčleniti" @@ -2150,11 +2221,11 @@ msgstr "XML-ja za ta vir RSS ni bilo mogoče razčleniti" msgid "Fast" msgstr "Hitro" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Priljubljene" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Priljubljene skladbe" @@ -2170,19 +2241,19 @@ msgstr "Samodejno pridobi" msgid "Fetch completed" msgstr "Prejemanje zaključeno" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Pridobivanje knjižnice Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Napaka med pridobivanjem ovitka" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Vrsta datoteke" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Pripona datoteke" @@ -2190,19 +2261,23 @@ msgstr "Pripona datoteke" msgid "File formats" msgstr "Vrste datotek" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Ime datoteke" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Ime datoteke (brez poti)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Vzorec imena datoteke:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Velikost datoteke" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2212,7 +2287,7 @@ msgstr "Vrsta datoteke" msgid "Filename" msgstr "Ime datoteke" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Datoteke" @@ -2220,15 +2295,19 @@ msgstr "Datoteke" msgid "Files to transcode" msgstr "Datoteke za prekodiranje" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Najdite skladbe v knjižnici, ki se ujemajo z merili, ki jih določite." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Najdi tega izvajalca" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Jemanje prstnega odtisa skladbe" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Končaj" @@ -2236,7 +2315,7 @@ msgstr "Končaj" msgid "First level" msgstr "Prva raven" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2252,12 +2331,12 @@ msgstr "Zaradi licence je podpora Spotify v ločenem vstavku." msgid "Force mono encoding" msgstr "Vsili mono kodiranje" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Pozabi napravo" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2272,7 +2351,7 @@ msgstr "Klik na \"Pozabi napravo\", bo napravo odstranil iz tega seznama. Ob nas #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2300,31 +2379,23 @@ msgstr "Hitrost sličic" msgid "Frames per buffer" msgstr "Sličic na medpomnilnik" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Prijatelji" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Zmrznjen" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Polni basi" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Polni basi in visoki toni" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Polni visoki toni" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Zvočni pogon GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Splošno" @@ -2332,30 +2403,30 @@ msgstr "Splošno" msgid "General settings" msgstr "Splošne nastavitve" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Zvrst" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Dobi naslov URL za deljenje tega seznama predvajanja Grooveshark" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Dobi naslov URL za deljenje te skladbe Grooveshark" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Pridobivanje seznama priljubljenih skladb iz Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Pridobivanje kanalov" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Pridobivanje pretokov" @@ -2367,11 +2438,11 @@ msgstr "Vnesite ime:" msgid "Go" msgstr "Pojdi" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Pojdi na naslednji zavihek seznama predvajanja" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Pojdi na predhodni zavihek seznama predvajanja" @@ -2379,7 +2450,7 @@ msgstr "Pojdi na predhodni zavihek seznama predvajanja" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2389,7 +2460,7 @@ msgstr "Pridobljenih je bilo %1 od %2 ovitkov (%3 spodletelih)" msgid "Grey out non existent songs in my playlists" msgstr "Označi s sivo skladbe, ki so na seznamih predvajanja in ne obstajajo več" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2397,15 +2468,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Napaka med prijavo v Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Naslov URL seznama predvajanja Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Radio Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Naslov URL skladbe Grooveshark" @@ -2413,44 +2484,44 @@ msgstr "Naslov URL skladbe Grooveshark" msgid "Group Library by..." msgstr "Združi knjižnico po ..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Združi po" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Združi po albumu" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Združi po izvajalcu" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Združi po izvajalcu/albumu" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Združi po izvajalcu/letu - albumu" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Združi po zvrsti/albumu" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Združi po zvrsti/izvajalcu/albumu" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Združevanje" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "Stran HTML ni vsebovala virov RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Prejeta je bila koda stanja HTTP 3xx brez naslova URL, preverite nastavitev strežnika." @@ -2459,7 +2530,7 @@ msgstr "Prejeta je bila koda stanja HTTP 3xx brez naslova URL, preverite nastavi msgid "HTTP proxy" msgstr "Posredniški strežnik HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Srečen" @@ -2475,25 +2546,25 @@ msgstr "Podrobnosti o strojni opremi so na voljo le, ko je naprava povezana" msgid "High" msgstr "Visoka" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Visoko (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Visoka (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Gostitelj ni bil najden, preverite naslov URL strežnika. Primer: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Ure" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2505,15 +2576,15 @@ msgstr "Nimam računa Magnatune" msgid "Icon" msgstr "Ikona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikone na vrhu" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Prepoznavanje skladbe" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2523,24 +2594,24 @@ msgstr "Če boste nadaljevali, bo naprava delovala počasi in skladbe, ki ste ji msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Če poznate naslov URL podcasta, ga vnesite spodaj in pritisnite Pojdi" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Prezri \"The\" v imenih izvajalcev" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "čez %1 dni" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "čez %1 tednov" @@ -2551,7 +2622,7 @@ msgid "" "time a song finishes." msgstr "V dinamičnem načinu bodo nove skladbe izbrane in dodane na seznam predvajanja vsakič, ko se prejšnja skladba konča." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Prejeto" @@ -2563,135 +2634,135 @@ msgstr "Vključi ovitek albuma v obvestilo" msgid "Include all songs" msgstr "Vključi vse skladbe" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Nezdružljiva različica protokola REST za Subsonic. Odjemalec mora nadgraditi." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Nezdružljiva različica protokola REST za Subsonic. Strežnik mora nadgraditi." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Nepopolna nastavitev, prepričajte se, da so vsa polja izpolnjena." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Povečaj glasnost za 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Povečaj glasnost za odstotkov" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Povečaj glasnost" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Izgradnja kazala za %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Podrobnosti" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Možnosti vhoda" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Vstavi ..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Nameščeno" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Preverjanje celovitosti" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Ponudniki interneta" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Neveljaven ključ API" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Neveljavna vrsta" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Neveljavni način" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Neveljavni parametri" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Podan je bil neveljaven vir" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Neveljavna storitev" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Neveljavni ključ seje" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Neveljavno uporabniško ime in/ali geslo" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Obrni izbor" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo: najbolj poslušane skladbe" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo: najboljše skladbe" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo: najboljše skladbe meseca" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo: najboljše skladbe tedna" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Podatkovna zbirka Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Skoči na trenutno predvajano skladbo" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Ohrani gumbe za %1 sekundo ..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Ohrani gumbe za %1 sekund ..." @@ -2700,11 +2771,12 @@ msgstr "Ohrani gumbe za %1 sekund ..." msgid "Keep running in the background when the window is closed" msgstr "Ostani zagnan v ozadju dokler se ne zapre okno" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Ohrani izvorne datoteke" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Mucke" @@ -2712,11 +2784,11 @@ msgstr "Mucke" msgid "Language" msgstr "Jezik" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Prenosnik/slušalke" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Velika dvorana" @@ -2724,12 +2796,16 @@ msgstr "Velika dvorana" msgid "Large album cover" msgstr "Velik ovitek albuma" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Velika stranska vrstica" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Zadnjič predvajano" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Zadnjič predvajano" @@ -2737,45 +2813,7 @@ msgstr "Zadnjič predvajano" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Radio po meri Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Knjižnica Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Miks radio Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Radio soseske Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Radio postaja Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm izvajalci podobni %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Radio oznak Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm je trenutno zaposlen, poskusite znova čez nekaj minut" @@ -2783,11 +2821,11 @@ msgstr "Last.fm je trenutno zaposlen, poskusite znova čez nekaj minut" msgid "Last.fm password" msgstr "Geslo Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Število predvajanj last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Oznake Last.fm" @@ -2795,28 +2833,24 @@ msgstr "Oznake Last.fm" msgid "Last.fm username" msgstr "Uporabniško ime Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Wiki last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Najmanj priljubljene skladbe" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Pustite prazno za privzeto. Primeri: \"/dev/dsp\", \"front\", itd." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Levo" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Dolžina" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Knjižnica" @@ -2824,24 +2858,24 @@ msgstr "Knjižnica" msgid "Library advanced grouping" msgstr "Napredno združevanje v knjižnici" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Obvestilo ponovnega preiskovanja knjižnice" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Iskanje po knjižnici" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Omejitve" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Poslušajte skladbe iz Grooveshark glede na tiste, ki ste jih že poslušali" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "V živo" @@ -2853,15 +2887,15 @@ msgstr "Naloži" msgid "Load cover from URL" msgstr "Naloži ovitek iz naslova URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Naloži ovitek iz naslova URL ..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Naloži ovitek iz diska" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Naloži ovitek iz diska ..." @@ -2869,84 +2903,89 @@ msgstr "Naloži ovitek iz diska ..." msgid "Load playlist" msgstr "Naloži seznam predvajanja" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Naloži seznam predvajanja ..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Nalaganje radia Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Nalaganje naprave MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Nalaganje zbirke podatkov iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Nalaganje pametnega seznama predvajanja" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Nalaganje skladb" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Nalaganje pretoka" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Nalaganje skladb" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Nalaganje podrobnosti o skladbah" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Nalaganje ..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Naloži datoteke/naslove URL in zamenjaj trenutni seznam predvajanja" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Prijava" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Prijava je spodletela" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Odjava" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Profil daljnosežnega predvidevanja (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Priljubljena" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Nizko (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Nizka (256x256)" @@ -2958,12 +2997,17 @@ msgstr "Profil nizke kompleksnosti (LC)" msgid "Lyrics" msgstr "Besedila" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Besedila iz %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2975,15 +3019,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2991,7 +3035,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Prejemi Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Prejem Magnatune je končan" @@ -2999,15 +3043,20 @@ msgstr "Prejem Magnatune je končan" msgid "Main profile (MAIN)" msgstr "Glavni profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Make it so!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Make it so!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Seznam predvajanja naj bo na voljo tudi brez povezave" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Napačno oblikovan odziv" @@ -3020,15 +3069,15 @@ msgstr "Ročna nastavitev posredniškega strežnika" msgid "Manually" msgstr "Ročno" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Proizvajalec" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Označi kot poslušano" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Označi kot novo" @@ -3040,17 +3089,21 @@ msgstr "Ujemanje s vsakim pogojem iskanja (IN)" msgid "Match one or more search terms (OR)" msgstr "Ujemanje enega ali več pogojev iskanja (ALI)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Največ rezultatov splošnega iskanja" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Največja bitna hitrost" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Srednje (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Srednja (512x512)" @@ -3062,11 +3115,15 @@ msgstr "Vrsta članstva" msgid "Minimum bitrate" msgstr "Najmanjša bitna hitrost" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Najmanjša zapolnitev medpomnilnika" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Manjkajoče predloge nastavitev projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3074,20 +3131,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Spremljaj knjižnico za spremembami" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Predvajanje v načinu mono" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Meseci" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Razpoloženje" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Slog vrstice razpoloženja" @@ -3095,15 +3152,19 @@ msgstr "Slog vrstice razpoloženja" msgid "Moodbars" msgstr "Vrstice razpoloženja" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Več" + +#: library/library.cpp:84 msgid "Most played" msgstr "Najbolj predvajano" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Priklopna točka" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Priklopne točke" @@ -3112,7 +3173,7 @@ msgstr "Priklopne točke" msgid "Move down" msgstr "Premakni dol" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Premakni v knjižnico ..." @@ -3121,7 +3182,7 @@ msgstr "Premakni v knjižnico ..." msgid "Move up" msgstr "Premakni gor" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Glasba" @@ -3129,56 +3190,32 @@ msgstr "Glasba" msgid "Music Library" msgstr "Glasbena knjižnica" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Utišaj" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Moja knjižnica Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Moj miks radio Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Moja soseska Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Moj radio priporočenih Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Moj miks radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Moja glasba" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Moja soseska" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Moja radijska postaja" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Moja priporočila" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Ime" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Ime" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Možnosti poimenovanja" @@ -3186,23 +3223,19 @@ msgstr "Možnosti poimenovanja" msgid "Narrow band (NB)" msgstr "Ozek pas (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Sosedje" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Omrežni posredniški strežnik" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Omrežni nadzor" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nikoli" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nikoli predvajano" @@ -3211,21 +3244,21 @@ msgstr "Nikoli predvajano" msgid "Never start playing" msgstr "Nikoli ne začni s predvajanjem" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nova mapa" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nov seznam predvajanja" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nov pametni seznam predvajanja" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nove skladbe" @@ -3233,24 +3266,24 @@ msgstr "Nove skladbe" msgid "New tracks will be added automatically." msgstr "Nove skladbe bodo samodejno dodane." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Najnovejše skladbe" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Naslednji" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Naslednja skladba" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Naslednji teden" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Brez preučevalnika" @@ -3258,7 +3291,7 @@ msgstr "Brez preučevalnika" msgid "No background image" msgstr "Brez slike ozadja" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Ni ovitkov za izvoz." @@ -3266,7 +3299,7 @@ msgstr "Ni ovitkov za izvoz." msgid "No long blocks" msgstr "Brez dolgih blokov" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Iskanje ni vrnilo rezultatov. Počistite iskalno polje za prikaz celotnega seznama predvajanja." @@ -3280,11 +3313,11 @@ msgstr "Brez kratkih blokov" msgid "None" msgstr "Brez" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nobena izmed izbranih skladb ni bila primerna za kopiranje na napravo" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Običajno" @@ -3292,43 +3325,47 @@ msgstr "Običajno" msgid "Normal block type" msgstr "Običajna vrsta bloka" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Ni razpoložljivo med uporabo dinamičnega seznama predvajanja" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Brez povezave" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Ni dovolj vsebine" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Ni dovolj oboževalcev" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Ni dovolj članov" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Ni dovolj sosedov" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Ni nameščeno" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Niste prijavljeni" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Ni priklopljeno - dvokliknite za priklop" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Nič ni bilo najdeno" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Vrsta obvestila" @@ -3341,36 +3378,41 @@ msgstr "Obvestila" msgid "Now Playing" msgstr "Se predvaja" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Predogled prikaza na zaslonu" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Izklopljeno" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Vklopljeno" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3378,11 +3420,11 @@ msgid "" "192.168.x.x" msgstr "Sprejmi samo povezave iz odjemalcev znotraj območij IP:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Dovoli samo povezave iz krajevnega omrežja" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Pokaži le prve" @@ -3390,23 +3432,23 @@ msgstr "Pokaži le prve" msgid "Opacity" msgstr "Motnost" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Odpri %1 v brskalniku" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Odpri &zvočni CD ..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Odpri datoteko OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Odpri datoteko OPML ..." @@ -3414,30 +3456,35 @@ msgstr "Odpri datoteko OPML ..." msgid "Open device" msgstr "Odpri napravo" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Odpri datoteko ..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Odpri v Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Odpri v novem seznamu predvajanja" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Odpri v novem seznamu predvajanja" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Odpri v brskalniku" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Odpri ..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Opravilo je spodletelo" @@ -3457,23 +3504,23 @@ msgstr "Možnosti ..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organiziraj datoteke" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organiziraj datoteke ..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organiziranje datotek" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Izvorne oznake" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Druge možnosti" @@ -3481,7 +3528,7 @@ msgstr "Druge možnosti" msgid "Output" msgstr "Izhod" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Izhodna naprava" @@ -3489,15 +3536,11 @@ msgstr "Izhodna naprava" msgid "Output options" msgstr "Možnosti izhoda" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Vstavek izhoda" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Prepiši vse" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Prepiši obstoječe datoteke" @@ -3509,15 +3552,15 @@ msgstr "Prepiši le manjše" msgid "Owner" msgstr "Lastnik" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Razčlenjanje kataloga Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Zabava" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3526,20 +3569,20 @@ msgstr "Zabava" msgid "Password" msgstr "Geslo" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Naredi premor" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Naredi premor predvajanja" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "V premoru" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Izvajalec" @@ -3548,34 +3591,22 @@ msgstr "Izvajalec" msgid "Pixel" msgstr "Slikovna točka" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Navadna stranska vrstica" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Predvajaj" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Predvajaj izvajalca ali oznako" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Predvajaj radio izvajalca ..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Število predvajanj" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Predvajaj radio po meri ..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Predvajaj, če je zaustavljeno, napravi premor, če se predvaja" @@ -3584,45 +3615,42 @@ msgstr "Predvajaj, če je zaustavljeno, napravi premor, če se predvaja" msgid "Play if there is nothing already playing" msgstr "Predvajaj, če se trenutno ne predvaja nič" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Predvajaj radio oznak ..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Predvajaj -to skladbo v seznamu predvajanja" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Predvajaj/premor" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Predvajanje" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Možnosti predvajalnika" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Seznam predvajanja" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Seznam predvajanja je končan" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Možnosti seznama predvajanja" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Vrsta seznama predvajanja" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Seznami predvajanja" @@ -3634,23 +3662,23 @@ msgstr "Zaprite vaš brskalnik in se vrnite v Clementine." msgid "Plugin status:" msgstr "Stanje vstavka:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasti" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Priljubljene skladbe" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Priljubljene skladbe meseca" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Današnje priljubljene skladbe" @@ -3659,22 +3687,23 @@ msgid "Popup duration" msgstr "Trajanje pojavnega obvestila" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Vrata" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Predojačanje" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Možnosti" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Možnosti ..." @@ -3710,7 +3739,7 @@ msgstr "Pritisnite kombinacijo gumbov za" msgid "Press a key" msgstr "Pritisnite tipko" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Pritisnite kombinacijo tipk, ki jo želite uporabiti za %1 ..." @@ -3721,20 +3750,20 @@ msgstr "Možnosti za lep prikaz na zaslonu" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Predogled" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Predhodni" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Predhodna skladba" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Izpiši podrobnosti o različici" @@ -3742,21 +3771,25 @@ msgstr "Izpiši podrobnosti o različici" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Napredek" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Napredek" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psihedelično" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Pritisnite gumb Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Razvrsti skladbe naključno" @@ -3764,7 +3797,12 @@ msgstr "Razvrsti skladbe naključno" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Kakovost" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Kakovost" @@ -3772,28 +3810,33 @@ msgstr "Kakovost" msgid "Querying device..." msgstr "Poizvedovanje po napravi ..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Upravljalnik vrste" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Postavi izbrane skladbe v vrsto" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Postavi skladbo v vrsto" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (enaka glasnost za vse skladbe)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Dež" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Dež" @@ -3801,48 +3844,48 @@ msgstr "Dež" msgid "Random visualization" msgstr "Naključno predočenje" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Oceni trenutno skladbo: 0 zvezdic" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Oceni trenutno skladbo: 1 zvezdica" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Oceni trenutno skladbo: 2 zvezdici" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Oceni trenutno skladbo: 3 zvezdice" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Oceni trenutno skladbo: 4 zvezdice" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Oceni trenutno skladbo: 5 zvezdic" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Ocena" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Resnično prekličem?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Presežena je bila omejitev preusmeritev, preverite nastavitev strežnika." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Osveži" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Osveži katalog" @@ -3850,19 +3893,15 @@ msgstr "Osveži katalog" msgid "Refresh channels" msgstr "Osveži kanale" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Osveži seznam prijateljev" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Osveži seznam postaj" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Osveži pretoke" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3874,8 +3913,8 @@ msgstr "Zapomni si Wii remote zamah" msgid "Remember from last time" msgstr "Zapomni si od zadnjič" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Odstrani" @@ -3883,7 +3922,7 @@ msgstr "Odstrani" msgid "Remove action" msgstr "Odstrani dejanje" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Odstrani podvojene iz seznama predvajanja" @@ -3891,73 +3930,77 @@ msgstr "Odstrani podvojene iz seznama predvajanja" msgid "Remove folder" msgstr "Odstrani mapo" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Odstrani iz Moje glasbe" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Odstrani iz zaznamkov" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Odstrani iz priljubljenih" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Odstrani iz seznama predvajanja" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Odstrani seznam predvajanja" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Odstrani sezname predvajanja" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Odstranjevanje skladb iz Moje glasbe" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Odstranjevanje skladb iz priljubljenih" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Preimenuj seznam predvajanja \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Preimenuj seznam predvajanja Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Preimenuj seznam predvajanja" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Preimenuj seznam predvajanja ..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Znova oštevilči skladbe v naslednjem vrstnem redu ..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Ponavljanje" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Ponavljaj album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Ponavljaj seznam predvajanja" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Ponavljaj skladbo" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Zamenjaj trenuten seznam predvajanja" @@ -3966,15 +4009,15 @@ msgstr "Zamenjaj trenuten seznam predvajanja" msgid "Replace the playlist" msgstr "Zamenjaj seznam predvajanja" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Zamenja presledke s podčrtaji" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Jakost predvajanja" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Način Jakosti predvajanja" @@ -3982,24 +4025,24 @@ msgstr "Način Jakosti predvajanja" msgid "Repopulate" msgstr "Znova napolni" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Zahtevaj overitveno kodo" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Ponastavi" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Ponastavi število predvajanj" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Znova zaženi skladbo ali predvajaj predhodno skladbo, če je znotraj 8 sekund začetka." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Omeji na znake ASCII" @@ -4007,15 +4050,15 @@ msgstr "Omeji na znake ASCII" msgid "Resume playback on start" msgstr "Ob zagonu nadaljuj s predvajanjem" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Pridobivanje skladb Grooveshark iz Moje glasbe" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Pridobivanje priljubljenih skladb Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Pridobivanje seznamov predvajanja Grooveshark" @@ -4029,17 +4072,17 @@ msgstr "Desno" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Zajemi" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "Zajemi CD" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." -msgstr "" +msgstr "Zajemi zvočni CD ..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4051,25 +4094,25 @@ msgstr "Zaženi" msgid "SOCKS proxy" msgstr "Posredniški strežnik SOCKS" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Napaka med rokovanjem SSH, preverite nastavitev strežnika. Za nekatere težave je morda začasna rešitev spodnja možnost SSLv3." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Varno odstrani napravo" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Varno odstrani napravo po kopiranju" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Hitrost vzorčenja" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Hitrost vzorčenja" @@ -4077,27 +4120,33 @@ msgstr "Hitrost vzorčenja" msgid "Save .mood files in your music library" msgstr "Shrani datoteke .mood v vašo glasbeno knjižnico" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Shrani ovitek albuma" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Shrani ovitek na disk ..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Shrani sliko" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Shrani seznam predvajanja" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Shrani seznam predvajanja" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Shrani seznam predvajanja ..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Shrani predlogo nastavitev" @@ -4113,11 +4162,11 @@ msgstr "Shrani statistike v oznake datotek, če je to mogoče" msgid "Save this stream in the Internet tab" msgstr "Shrani ta pretok v zavihek Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Shranjevanje statistike skladb v datoteke skladb" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Shranjevanje skladb" @@ -4129,7 +4178,7 @@ msgstr "Profil prilagodljive vzorčne hitrosti (SSR)" msgid "Scale size" msgstr "Umeri velikost" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Rezultat" @@ -4137,34 +4186,38 @@ msgstr "Rezultat" msgid "Scrobble tracks that I listen to" msgstr "Pošlji podatke o predvajanih skladbah" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Poišči" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "Išči" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Poišči postaje Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Poišči na Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Poišči na Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Poišči na Subsonicu" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Samodejno najdi" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Poišči ovitke albumov ..." @@ -4184,21 +4237,21 @@ msgstr "Poišči na iTunes" msgid "Search mode" msgstr "Način iskanja" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Možnosti iskanja" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Rezultati iskanja" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Iskalni pojmi" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Iskanje po Grooveshark" @@ -4206,27 +4259,27 @@ msgstr "Iskanje po Grooveshark" msgid "Second level" msgstr "Druga raven" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Previj nazaj" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Previj naprej" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Previj trenutno predvajano skladbo za relativno količino" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Previj trenutno predvajano skladbo na absoluten položaj" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Izberi vse" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Odstrani izbor" @@ -4234,7 +4287,7 @@ msgstr "Odstrani izbor" msgid "Select background color:" msgstr "Izberite barvo ozadja:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Izberi sliko ozadja" @@ -4250,15 +4303,15 @@ msgstr "Izberite barvo ospredja:" msgid "Select visualizations" msgstr "Izberi predočenja" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Izberi predočenja ..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "Izberi ..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Zaporedna številka" @@ -4270,51 +4323,51 @@ msgstr "Naslov URL strežnika" msgid "Server details" msgstr "Podrobnosti strežnika" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Storitev je nepovezana" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Nastavi %1 na \"%2\" ..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Nastavi glasnost na odstotkov" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Nastavi vrednost za vse izbrane skladbe ..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Nastavitve" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Bližnjica" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Bližnjica za %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Bližnjica za %1 že obstaja" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Pokaži" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Pokaži prikaz na zaslonu" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Pokaži žarečo animacijo na trenutni skladbi" @@ -4342,15 +4395,15 @@ msgstr "Prikaži pojavno okno iz sistemske vrstice" msgid "Show a pretty OSD" msgstr "Pokaži lep prikaz na zaslonu" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Pokaži nad vrstico stanja" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Pokaži vse skladbe" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Pokaži vse skladbe" @@ -4362,32 +4415,36 @@ msgstr "Pokaži ovitek albuma v knjižnici" msgid "Show dividers" msgstr "Pokaži razdelilnike" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Pokaži v polni velikosti ..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Pokaži skupine v rezultatih splošnega iskanja" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Pokaži v brskalniku datotek ..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." -msgstr "" +msgstr "Pokaži v knjižnici ..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Pokaži med \"Različni izvajalci\"" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Pokaži vrstico razpoloženja" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Pokaži samo podvojene" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Pokaži samo tiste brez oznak" @@ -4396,8 +4453,8 @@ msgid "Show search suggestions" msgstr "Prikaži iskalne predloge" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Pokaži gumbe \"Priljubljena\" in \"Blokiraj\"" +msgid "Show the \"love\" button" +msgstr "Pokaži gumb \"Priljubljena\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4411,27 +4468,27 @@ msgstr "Pokaži ikono v sistemski vrstici" msgid "Show which sources are enabled and disabled" msgstr "Prikaži kateri viri so omogočeni in kateri onemogočeni" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Pokaži/Skrij" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Premešaj" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Premešaj albume" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Premešaj vse" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Premešaj seznam predvajanja" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Premešaj skladbe v tem albumu" @@ -4447,7 +4504,7 @@ msgstr "Odjavi se" msgid "Signing in..." msgstr "Prijavljanje ..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Podobni izvajalci" @@ -4459,43 +4516,51 @@ msgstr "Velikost" msgid "Size:" msgstr "Velikost:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Skoči nazaj po seznamu predvajanja" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Število preskočenih" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Skoči naprej po seznamu predvajanja" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Preskoči izbrane skladbe" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Preskoči skladbo" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Majhen ovitek albuma" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Majhna stranska vrstica" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Pametni seznam predvajanja" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Pametni seznami predvajanja" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4503,11 +4568,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Podrobnosti o skladbi" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "O skladbi" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4527,15 +4592,23 @@ msgstr "Razvrsti po zvrsti (po priljubljenosti)" msgid "Sort by station name" msgstr "Razvrsti po imenu postaje" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Razvrsti skladbe na seznamu predvajanja po abecedi" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Razvrsti skladbe po" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Razvrščanje" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Vir" @@ -4551,7 +4624,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Napaka med prijavo na Spotify" @@ -4559,7 +4632,7 @@ msgstr "Napaka med prijavo na Spotify" msgid "Spotify plugin" msgstr "Vstavek Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Vstavek Spotify ni nameščen" @@ -4567,77 +4640,77 @@ msgstr "Vstavek Spotify ni nameščen" msgid "Standard" msgstr "Običajno" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Z zvezdico" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "Začni z zajemanjem" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Predvajaj skladbo, ki je označena v seznamu predvajanja" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Začni s prekodiranjem" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Natipkajte nekaj v iskalno polje, da napolnite te seznam z rezultati iskanja" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Začenjanje %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Začenjanje ..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Postaje" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Zaustavi" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Zaustavi po" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Zaustavi po tej skladbi" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Zaustavi predvajanje" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Zaustavi predvajanje po trenutni skladbi" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Zaustavi predvajanje po skladbi: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Zaustavljeno" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Pretok" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4647,7 +4720,7 @@ msgstr "Pretakanje iz strežnika Subsonic zahteva veljavno strežniško licenco, msgid "Streaming membership" msgstr "Članstvo pretakanja" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Naročeni seznami predvajanja" @@ -4655,7 +4728,7 @@ msgstr "Naročeni seznami predvajanja" msgid "Subscribers" msgstr "Naročniki" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4663,12 +4736,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Uspeh!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Uspešno zapisan %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Predlagane oznake" @@ -4677,13 +4750,13 @@ msgstr "Predlagane oznake" msgid "Summary" msgstr "Povzetek" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Zelo visoko (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Zelo visoko (2048x2048)" @@ -4695,43 +4768,35 @@ msgstr "Podprte vrste" msgid "Synchronize statistics to files now" msgstr "Uskladi statistike v datoteke zdaj" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Usklajevanje mape Spotify - prejeto" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Usklajevanje seznama predvajanja Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Usklajevanje označenih skladb v Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Sistemske barve" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Zavihki na vrhu" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Oznaka" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Prejemnik oznak" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Radio oznak" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Ciljna bitna hitrost" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4739,11 +4804,11 @@ msgstr "Techno" msgid "Text options" msgstr "Možnosti besedila" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Zahvala gre" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Ukaza \"%1\" ni bilo mogoče zagnati." @@ -4752,17 +4817,12 @@ msgstr "Ukaza \"%1\" ni bilo mogoče zagnati." msgid "The album cover of the currently playing song" msgstr "Ovitek albuma skladbe, ki se trenutno predvaja" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Mapa %1 ni veljavna" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Seznam predvajanja '%1' je prazen ali pa ga ni bilo mogoče naložiti." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Druga vrednost mora biti višja od prve!" @@ -4770,40 +4830,40 @@ msgstr "Druga vrednost mora biti višja od prve!" msgid "The site you requested does not exist!" msgstr "Zahtevana stran ne obstaja!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Zahtevana stran ni slika!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Preizkusno obdobje za strežnik Subsonic je končano. Da pridobite licenčni ključ, morate donirati. Za podrobnosti si oglejte subsonic.org." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Različica Clementine, ki ste jo posodobili, zahteva polno ponovno preiskovanje knjižnice, zaradi spodaj navedenih novih zmožnosti:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "V tem albumu so druge skladbe" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Med komunikacijo z gpodder.net je prišlo do težave" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Med pridobivanjem metapodatkov iz Magnatune je prišlo do težave" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Med razčlenjevanjem odgovora iz trgovine iTunes je prišlo do težave" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4815,13 +4875,13 @@ msgid "" "deleted:" msgstr "Med brisanjem nekaterih skladb so nastopile težave. Sledečih datotek ni bilo mogoče izbrisati:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Te datoteke bodo izbrisane iz naprave. Ali ste prepričani, da želite nadaljevati?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4841,13 +4901,13 @@ msgstr "Te nastavitve so uporabljene v pogovornem oknu \"Prekodiraj glasbo\" in msgid "Third level" msgstr "Tretja raven" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "To dejanje bo ustvarilo podatkovno zbirko, ki je lahko velika tudi do 150 MB.\nAli želite vseeno nadaljevati?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Ta album ni na voljo v zahtevani obliki" @@ -4861,11 +4921,11 @@ msgstr "Ta naprava mora biti povezana in odprta, preden lahko Clementine ugotovi msgid "This device supports the following file formats:" msgstr "Ta naprava podpira sledeče vrste datotek:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Ta naprava ne bo delovala pravilno" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "To je naprava MTP, Clementine pa je preveden brez podpore libmtp." @@ -4874,7 +4934,7 @@ msgstr "To je naprava MTP, Clementine pa je preveden brez podpore libmtp." msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "To je naprava iPod, Clementine pa je preveden brez podpore libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4884,33 +4944,33 @@ msgstr "Tokrat ste prvič priklopili to napravo. Clementine bo sedaj preiskal na msgid "This option can be changed in the \"Behavior\" preferences" msgstr "To možnost lahko spremenite v \"Obnašanje\"" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Ta pretok je le za plačane naročnike" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Ta vrsta naprave ni podprta: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Naslov" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Da zaženete radio Grooveshark, morate najprej poslušati nekaj drugih skladb Grooveshark" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Danes" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Preklopi lep prikaz na zaslonu" @@ -4918,27 +4978,27 @@ msgstr "Preklopi lep prikaz na zaslonu" msgid "Toggle fullscreen" msgstr "Preklopi celozaslonski način" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Preklopi stanje vrste" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Preklopi med pošiljanjem podatkov o predvajanih skladbah" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Preklopi vidnost lepega prikaza na zaslonu" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Jutri" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Preveč preusmeritev" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Najboljše skladbe" @@ -4946,21 +5006,25 @@ msgstr "Najboljše skladbe" msgid "Total albums:" msgstr "Skupno albumov:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Skupno prenesenih bajtov" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Skupno število omrežnih zahtev" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Skladba" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Skladbe" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Prekodiraj glasbo" @@ -4972,7 +5036,7 @@ msgstr "Dnevnik prekodirnika" msgid "Transcoding" msgstr "Prekodiranje" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Prekodiranje %1 datotek z uporabo %2 niti" @@ -4981,11 +5045,11 @@ msgstr "Prekodiranje %1 datotek z uporabo %2 niti" msgid "Transcoding options" msgstr "Možnosti prekodiranja" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" @@ -4993,72 +5057,72 @@ msgstr "Turbina" msgid "Turn off" msgstr "Izklopi" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "Naslov URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Naslovi URL" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Geslo Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Uporabniško ime Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Zelo širok pas (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Ni bilo mogoče prejeti %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Neznano" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Neznan content-type" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Neznana napaka" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Odstrani ovitek" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Ne preskoči izbranih skladb" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Ne preskoči skladbe" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Ukini naročnino" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Prihajajoči koncerti" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Posodobi" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Posodobi seznam predvajanja Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Posodobi vse podcaste" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Posodobi spremenjene mape v knjižnici" @@ -5066,7 +5130,7 @@ msgstr "Posodobi spremenjene mape v knjižnici" msgid "Update the library when Clementine starts" msgstr "Posodobi knjižnico ob zagonu Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Posodobi ta podcast" @@ -5074,21 +5138,21 @@ msgstr "Posodobi ta podcast" msgid "Updating" msgstr "Posodabljanje" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Posodabljanje %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Posodabljanje %1 % ..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Posodabljanje knjižnice" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Uporaba" @@ -5096,11 +5160,11 @@ msgstr "Uporaba" msgid "Use Album Artist tag when available" msgstr "Uporabi oznako Izvajalca albuma, če je ta na voljo" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Uporabi bližnjice Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Uporabi metapodatke Jakosti predvajanja, če je mogoče" @@ -5120,7 +5184,7 @@ msgstr "Izberite seznam barv po meri" msgid "Use a custom message for notifications" msgstr "Za obvestila uporabi sporočila po meri" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Uporabi omrežni oddaljeni nadzor" @@ -5160,20 +5224,20 @@ msgstr "Uporabi nastavitve posredniškega strežnika sistema" msgid "Use volume normalisation" msgstr "Uporabi izenačevanje glasnosti" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Uporabljeno" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Uporabnik %1 nima računa Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Uporabniški vmesnik" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5195,12 +5259,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Spremenljiva bitna hitrost" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Različni izvajalci" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Različica %1" @@ -5213,7 +5277,7 @@ msgstr "Pogled" msgid "Visualization mode" msgstr "Način predočenja" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Predočenja" @@ -5221,11 +5285,15 @@ msgstr "Predočenja" msgid "Visualizations Settings" msgstr "Nastavitve predočenja" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Zaznava dejavnosti glasu" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Glasnost %1 %" @@ -5243,11 +5311,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Opozori med pred zapiranjem zavihkov seznamov predvajanja" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5255,7 +5323,7 @@ msgstr "Wav" msgid "Website" msgstr "Spletišče" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Tednov" @@ -5281,32 +5349,32 @@ msgstr "Zakaj ne bi poskusili ..." msgid "Wide band (WB)" msgstr "Širok pas (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: omogočen" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: povezan" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: kritična baterija (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: onemogočen" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: nepovezan" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: šibka baterija (%2%)" @@ -5327,7 +5395,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media Audio" @@ -5335,25 +5403,25 @@ msgstr "Windows Media Audio" msgid "Without cover:" msgstr "Brez ovitka:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Ali bi želeli tudi druge skladbe v tem albumu premakniti med kategorijo Različni izvajalci?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Ali želite opraviti ponovno preiskovanje celotne knjižnice?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Zapiši vse statistike skladb v datoteke skladb" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Napačno uporabniško ime ali geslo." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5365,11 +5433,11 @@ msgstr "Leto" msgid "Year - Album" msgstr "Leto - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Let" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Včeraj" @@ -5377,13 +5445,13 @@ msgstr "Včeraj" msgid "You are about to download the following albums" msgstr "Pravkar boste prejeli naslednje albume" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Pravkar boste izbrisali %1 seznamov predvajanja iz vaših priljubljenih, ali ste prepričani?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5393,12 +5461,12 @@ msgstr "Pravkar boste odstranili seznam predvajanja, ki ni del vaših priljublje msgid "You are not signed in." msgstr "Niste prijavljeni." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Prijavljeni ste kot %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Ste prijavljeni." @@ -5406,13 +5474,13 @@ msgstr "Ste prijavljeni." msgid "You can change the way the songs in the library are organised." msgstr "Spremenite lahko kako so skladbe organizirane v knjižnici" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Brezplačno lahko poslušate tudi brez računa, ampak le Premium člani lahko poslušajo pretoke višje kakovosti brez reklam." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5422,13 +5490,6 @@ msgstr "Skladbe iz Magnatune lahko poslušate brezplačno tudi brez računa. Če msgid "You can listen to background streams at the same time as other music." msgstr "Sočasno lahko poslušate pretoke v ozadju in drugo glasbo." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Brezplačno lahko uporabljate pošiljanje seznamov predvajanih skladb, toda le plačniki lahko poslušajo radio Last.fm v Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Wii Remote lahko uporabite kot daljinski upravljalnik v Clementine. Obiščite Clementine wiki za več podrobnosti.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Nimate računa Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Nimate računa Spotify Premium." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Nimate dejavne naročnine" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Za iskanje in predvajanje glasbe se vam ni potrebno prijaviti v SoundCloud, vseeno pa se boste morali prijaviti za dostop do vaših seznamov predvajanja in vašega pretoka." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Bili ste odjavljeni iz Spotify. Ponovno vnesite geslo v pogovorno okno nastavitev." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Bili ste odjavljeni iz Spotify. Ponovno vnesite vaše geslo." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "To je vaša priljubljena skladba" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "V sistemskih nastavitvah morate vklopiti \"nadzor vašega računalnika\", da boste lahko uporabili splošne bližnjice v Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5473,17 +5548,11 @@ msgstr "V sistemskih nastavitvah morate vklopiti \\\", 2014 # FIRST AUTHOR , 2010 # Jovana Savic , 2012 # daimonion , 2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-02-02 00:11+0000\n" +"PO-Revision-Date: 2014-05-11 09:29+0000\n" "Last-Translator: daimonion \n" "Language-Team: Serbian (http://www.transifex.com/projects/p/clementine/language/sr/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +18,7 @@ msgstr "" "Language: sr\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -42,9 +43,9 @@ msgstr " дана" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -57,11 +58,16 @@ msgstr " pt" msgid " seconds" msgstr " секунди" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " песама" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 песама)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 албума" @@ -71,12 +77,12 @@ msgstr "%1 албума" msgid "%1 days" msgstr "%1 дана" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "пре %1 дана" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 на %2" @@ -86,48 +92,48 @@ msgstr "%1 на %2" msgid "%1 playlists (%2)" msgstr "%1 листи нумера (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 изабрано од" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 песма" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 песама" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 песама пронађено" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 песама пронађено (приказујем %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 нумера" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 пребачено" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev модул" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 других слушалаца" @@ -141,18 +147,21 @@ msgstr "%L1 укупних слушања" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n неуспешно" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n завршено" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n преостало" @@ -164,24 +173,24 @@ msgstr "&Поравнај текст" msgid "&Center" msgstr "&центрирај" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Посебна" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Додаци" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Помоћ" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Сакриј %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Сакриј..." @@ -189,23 +198,23 @@ msgstr "&Сакриј..." msgid "&Left" msgstr "&лево" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Музика" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Ниједна" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Листа нумера" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Напусти" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Режим понављања" @@ -213,23 +222,23 @@ msgstr "&Режим понављања" msgid "&Right" msgstr "&десно" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&Насумични режим" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Уклопи колоне у прозор" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Алатке" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(другачије кроз разне песме)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "и свима који су допринели Амароку" @@ -249,14 +258,10 @@ msgstr "0px" msgid "1 day" msgstr "1 дан" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 нумера" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -266,7 +271,7 @@ msgstr "128k МП3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 насумичних песама" @@ -274,12 +279,6 @@ msgstr "50 насумичних песама" msgid "Upgrade to Premium now" msgstr "Надогради на Премијум налог" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Направите нови налог или ресетујте вашу лозинку" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -290,6 +289,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Ако није штиклирано Клементина ће уписивати ваше оцене и и осталу статистику само у одвојеној бази података и неће мењати ваше фајлове.

Ако је штиклирано, уписиваће статистику и у бази података и директно у фајл при свакој измени.

Имајте на уму да ово можда неће радити за сваки формат фајла и, како нема стандарда за то, остали музички плејери можда неће умети да то прочитају.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Ставите име поља испред тражене речи да бисте ограничили претрагу само на то поље, нпр. artist:Бора тражиће све извођаче чије име садржи реч „Бора“.

Доступна поља: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -298,38 +308,38 @@ msgid "" "activated.

" msgstr "

Упис статистике и оцена песама у ознаке фајлова за све песме ваше библиотеке.

Није потребно ако је поставка „Упиши оцену/статистику песме у ознаке кад је то могуће“ увек била активирана.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" -msgstr "

Tokens start with %, for example: %artist %album %title

\n\n

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" +msgstr "

Показивачи почињу знаком %, на пример: %artist %album %title

\n\n

Ако део текста који садржи показиваче ставите у витичасте заграде, тај део ће бити сакривен ако је показивач празан.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." -msgstr "Потребан је Грувшарк Билокуд налог" +msgstr "Потребан је Грувшарков Билокуд налог." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Потребан је Спотифај Премијум налог" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Клијент може да се повеже само ако је унесен исправан кôд." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Паметна листа нумера је динамичка листа песама из ваше библиотеке. Постоје различити типови паметних листа који нуде различите начине избора песама." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Песма ће бити укључена у листу ако задовољава ове услове." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "А-Ш" @@ -349,36 +359,35 @@ msgstr "ААЦ 32k" msgid "AAC 64k" msgstr "ААЦ 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "АИФФ" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "СЛАВА ХИПНОЖАПЦУ" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Прекини" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "О %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "О Клементини..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Више о Куту..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Детаљи о налогу" @@ -388,13 +397,17 @@ msgstr "Детаљи о налогу (Премијум)" #: ../bin/src/ui_wiimotesettingspage.h:191 msgid "Action" -msgstr "Радња" +msgstr "радња" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Укључи/искључи Wii даљински" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Ток активности" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Додај подкаст" @@ -410,39 +423,39 @@ msgstr "Додај нову линију ако је подржано типом msgid "Add action" msgstr "Додај радњу" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Додај други ток..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Додај фасциклу..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Додавање фајла" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Додај фајл у прекодер" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Додај фајло(ове) у прекодер" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Додај фајл..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Додавање фајлова за прекодирање" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Додавање фасцикле" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Додај фасциклу..." @@ -454,13 +467,13 @@ msgstr "Додај нову фасциклу..." msgid "Add podcast" msgstr "Додавање подкаста" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Додај подкаст..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" -msgstr "Додај појам за претрагу" +msgstr "Додај појам за тражење" #: ../bin/src/ui_notificationssettingspage.h:380 msgid "Add song album tag" @@ -522,6 +535,10 @@ msgstr "Уметни број прескока песме" msgid "Add song title tag" msgstr "Уметни наслов песме" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Додај песму у кеш" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Уметни нумеру песме" @@ -530,22 +547,34 @@ msgstr "Уметни нумеру песме" msgid "Add song year tag" msgstr "Уметни годину песме" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Додај песму у „Моју музику“ кад кликнем на дугме „Волим“" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Додај ток..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" -msgstr "Додај у Грувшарк омиљене" +msgstr "Додај у Грувшаркове омиљене" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" -msgstr "Додај у Грувшарк плејлисте" +msgstr "Додај у Грувшаркове листе нумера" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Додај у Моју музику" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Додај у другу листу" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Додај у обележиваче" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Додај у листу нумера" @@ -554,6 +583,10 @@ msgstr "Додај у листу нумера" msgid "Add to the queue" msgstr "стави у ред" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Додај корисника/групу у обележиваче" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Додај wiimotedev радњу" @@ -568,7 +601,7 @@ msgstr "додато овог месеца" #: ../bin/src/ui_libraryfilterwidget.h:89 msgid "Added this week" -msgstr "додато ове недеље" +msgstr "додато ове седмице" #: ../bin/src/ui_libraryfilterwidget.h:94 msgid "Added this year" @@ -583,15 +616,15 @@ msgstr "додато данас" msgid "Added within three months" msgstr "додато у последња три месеца" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" -msgstr "" +msgstr "Додавање песме у Моју музику" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" -msgstr "" +msgstr "Додавање песме у омиљене" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Напредно груписање..." @@ -599,12 +632,12 @@ msgstr "Напредно груписање..." msgid "After " msgstr "након " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Након копирања:" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -612,11 +645,11 @@ msgstr "Након копирања:" msgid "Album" msgstr "албум" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "албум (идеална јачина за све песме)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -626,35 +659,36 @@ msgstr "извођач албума" msgid "Album cover" msgstr "Омот албума" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." -msgstr "Подаци албума са jamendo.com..." +msgstr "Подаци албума са Џаменда..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Албуми са омотима" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Албуми без омота" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Сви фајлови (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Слава Хипножапцу!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Сви албуми" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Сви извођачи" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Сви фајлови" @@ -663,19 +697,19 @@ msgstr "Сви фајлови" msgid "All playlists (%1)" msgstr "Све листе нумера (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "свим преводиоцима" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Све нумере" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Дозволи клијенту да преузима музику са овог рачунара." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Дозволи преузимања" @@ -700,30 +734,30 @@ msgstr "увек прикажи главни прозор" msgid "Always start playing" msgstr "увек ће почети пуштање" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Потребан је додатни прикључак за коришћење Спотифаја у Клементини. Желите ли да га преузмете и инсталирате сада?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" -msgstr "Дошло је до грешке услед учитавања базе података iTunes" +msgstr "Дошло је до грешке учитавања базе података Ајтјунса" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" -msgstr "Дошло је до грешке услед писања метаподатака на '%1'" +msgstr "Дошло је до грешке уписа метаподатака на „%1“" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." -msgstr "" +msgstr "Дошло је до неодређене грешке." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "И:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "љутит" @@ -732,66 +766,61 @@ msgstr "љутит" msgid "Appearance" msgstr "Изглед" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Додај нумере/УРЛ токове у листу нумера" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" -msgstr "Додај у тренутну листу нумера" +msgstr "Додај у текућу листу нумера" #: ../bin/src/ui_behavioursettingspage.h:217 msgid "Append to the playlist" msgstr "дода у листу нумера" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Примени компресију како би се спречило одсецање" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Желите ли заиста да обришете препоставку „%1“?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Желите ли заиста да обришете ову листу нумера?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Желите ли заиста да поништите статистику ове песме?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Желите ли заиста да упишете статистику песме у фајл песме за све песме из ваше библиотеке?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "извођач" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Подаци о извођачу" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Радио извођача" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Ознаке извођача" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "иницијали извођача" @@ -799,9 +828,13 @@ msgstr "иницијали извођача" msgid "Audio format" msgstr "Формат звука" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Излаз звука" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Аутентификација није успела" @@ -809,7 +842,7 @@ msgstr "Аутентификација није успела" msgid "Author" msgstr "Аутор" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Аутори" @@ -825,7 +858,7 @@ msgstr "Аутоматско ажурирање" msgid "Automatically open single categories in the library tree" msgstr "Аутоматски отвори појединачне категорије у стаблу библиотеке" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Доступно" @@ -833,15 +866,15 @@ msgstr "Доступно" msgid "Average bitrate" msgstr "Просечни битски проток" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Просечна величина слике" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "ББЦ-ијеви подкасти" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "темпо" @@ -862,7 +895,7 @@ msgstr "Слика позадине" msgid "Background opacity" msgstr "Непрозирност позадине" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Бекапујем базу података" @@ -870,11 +903,7 @@ msgstr "Бекапујем базу података" msgid "Balance" msgstr "Равнотежа" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Забрани" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Тракасти анализатор" @@ -894,18 +923,17 @@ msgstr "Понашање" msgid "Best" msgstr "најбољи" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Биографија са %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "битски проток" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -913,7 +941,12 @@ msgstr "битски проток" msgid "Bitrate" msgstr "Битски проток" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "битски проток" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Блок анализатор" @@ -929,7 +962,7 @@ msgstr "Замућење" msgid "Body" msgstr "Тело" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Бум анализатор" @@ -943,11 +976,11 @@ msgstr "Бокс" msgid "Browse..." msgstr "Прегледај..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Величина бафера" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Баферујем" @@ -957,63 +990,90 @@ msgstr "али ови извори су онемогућени:" #: ../bin/src/ui_wiimotesettingspage.h:192 msgid "Buttons" -msgstr "Дугмад" +msgstr "дугмад" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Подразумевано, Грувшарк ређа песме по датуму додавања" + +#: core/song.cpp:401 msgid "CDDA" msgstr "ЦДДА" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Подршка за ЦУЕ лист" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Путања кеша:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Кеширање" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Кеширам %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Одустани" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Потребан је кепча кôд.\nДа бисте поправили проблем покушајте да се пријавите на Vk.com у вашем прегледачу." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Промени слику омота" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Промени величину фонта..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" -msgstr "Промени понављање" +msgstr "Понављање" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Измени пречицу..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" -msgstr "Промени насумичност" +msgstr "Насумичност" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Промени језик" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" -msgstr "" +msgstr "Измена ће бити активна за наступајуће песме" #: ../bin/src/ui_podcastsettingspage.h:228 msgid "Check for new episodes" msgstr "Тражи нове епизоде" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Потражи надоградње..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Избор фасцикле кеша за Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Изаберите име за вашу паметну листу" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Изабери аутоматски" @@ -1029,11 +1089,11 @@ msgstr "Изабери фонт..." msgid "Choose from the list" msgstr "избор са списка" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Одредите сортирање листе нумера и колико песама ће да садржи." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Избор фасцикле преузимања за подкаст" @@ -1042,7 +1102,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Изаберите сајтове које желите да Клементина користи при тражењу стихова." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "класична" @@ -1050,17 +1110,17 @@ msgstr "класична" msgid "Cleaning up" msgstr "Чишћење" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Очисти" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Очисти листу нумера" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Клементина" @@ -1073,8 +1133,8 @@ msgstr "Грешка Клементине" msgid "Clementine Orange" msgstr "Клементина наранџаста" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Визуелизација Клементине" @@ -1096,9 +1156,9 @@ msgstr "Клементина може да пушта музику коју ст msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Клементина може да пушта музику коју сте учитали на Гугл Драјв" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Клементина може да пушта музику коју сте учитали на Убунту 1" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Клементина може да пушта музику коју сте учитали на ВанДрајв" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1109,22 +1169,15 @@ msgid "" "Clementine can synchronize your subscription list with your other computers " "and podcast applications. Create " "an account." -msgstr "" +msgstr "Клементина може да синхронизује ваше претплатничке листе са осталим вашим рачунарима и апликацијама подкаста. Направите налог." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Клементина не може да учита ниједну пројектМ визуелизацију. Проверите да ли сте исправно инсталирали Клементину." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Клементина није могла да добави ваш претплатнички статус због проблема са везом. Пуштене нумере ће бити кеширане и касније послате на Ласт.фм." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Клеметинин прегледач слика" @@ -1136,26 +1189,29 @@ msgstr "Клементина није могла да нађе резултат msgid "Clementine will find music in:" msgstr "Клементина ће тражити музику у:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Кликните овде да додате музику" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" -msgstr "Кликните овде да ставите ову листу нумера у омиљене да би била сачувана и приступачна преко „Листе нумера“ панела на бочној траци с лева" +msgstr "Кликните овде да ставите ову листу нумера у омиљене како би била сачувана и приступачна преко панела „Листе нумера“ на левој бочној траци" #: ../bin/src/ui_trackslider.h:72 msgid "Click to toggle between remaining time and total time" msgstr "Кликните да промените приказ преосталог/укупног времена" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." -msgstr "" +msgstr "Кликом на дугме пријаве отворићете веб прегледач. Вратите се на Клементину пошто се пријавите." #: widgets/didyoumean.cpp:37 msgid "Close" @@ -1165,19 +1221,19 @@ msgstr "Затвори" msgid "Close playlist" msgstr "Затвори листу нумера" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Затвори визуелизацију" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." -msgstr "Затварање овог прозора прекинуће преузимање." +msgstr "Затварањем овог прозора прекинућете преузимање." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." -msgstr "Затварање овог прозора прекинуће потрагу за омотима албума." +msgstr "Затварањем овог прозора прекинућете потрагу за омотима албума." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "клуб" @@ -1185,73 +1241,78 @@ msgstr "клуб" msgid "Colors" msgstr "Боје" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" -msgstr "Зарез раздваја листу од класа:ниво, ниво је 0-3" +msgstr "Зарез раздваја листу од класа: ниво, ниво је 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "коментар" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Друштвени радио" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Попуни ознаке аутоматски" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Попуни ознаке аутоматски..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "композитор" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Подеси %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Подеси Грувшарк..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Подеси Ласт.фм..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Подеси Магнатјун..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Поставке пречица" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Подеси Спотифај..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Подеси Субсоник..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 -msgid "Configure global search..." -msgstr "Подеси глобалну претрагу..." +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Подеси vk.com..." -#: ui/mainwindow.cpp:483 +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 +msgid "Configure global search..." +msgstr "Подеси општу претрагу..." + +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Подеси библиотеку..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Подеси подкасте..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Подеси..." @@ -1259,11 +1320,11 @@ msgstr "Подеси..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Повежи Wii даљинске користећи радње укључено/искључено" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Повежи уређај" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Повежи се на Спотифај" @@ -1271,14 +1332,18 @@ msgstr "Повежи се на Спотифај" msgid "" "Connection refused by server, check server URL. Example: " "http://localhost:4040/" -msgstr "" +msgstr "Сервер је одбио везу, проверите УРЛ. Пример: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" -msgstr "" +msgstr "Прековреме истекло, проверите УРЛ сервера. Пример: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Проблем са повезивањем или је власник онемогућио звук" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Конзола" @@ -1292,176 +1357,176 @@ msgstr "Претвори сву музику" #: ../bin/src/ui_deviceproperties.h:378 msgid "Convert any music that the device can't play" -msgstr "Претвори сву музику коју уређај не може да пусти." +msgstr "Претвори сву музику коју уређај не може да пусти" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Копирај УРЛ дељења на клипборд" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Копирај на клипборд" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Копирај на уређај...." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Копирај у библиотеку..." #: ../bin/src/ui_podcastinfowidget.h:194 msgid "Copyright" -msgstr "" +msgstr "Ауторска права" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" -msgstr "" +msgstr "Не могу да се повежем на Субсоник, проверите УРЛ сервера. Пример: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Не могу да направим Гстример елемент „%1“ - проверите да ли су инсталирани сви потребни Гстример прикључци" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Не могу да направим листу нумера" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Не могу да нађем муксер за %1, проверите да ли имате инсталиране потребне прикључке за Гстример" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Не могу да нађем кодер за %1, проверите да ли имате инсталиране потребне прикључке за Гстример" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Не могу да учитам ласт.фм радио станицу" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Не могу да отворим излазни фајл %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Менаџер омота" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Омот из уграђене слике" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Омот аутоматски учитан из %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Омот ручно уклоњен" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Омот није постављен" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Омот постављен из %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Омоти са %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" -msgstr "Направи нову Грувшарк листу нумера" +msgstr "Направи нову Грувшаркову листу нумера" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Претапање при аутоматској измени нумера" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Претапање при ручној измени нумера" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1469,7 +1534,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "посебно" @@ -1481,61 +1546,62 @@ msgstr "Посебна слика:" msgid "Custom message settings" msgstr "Поставке посебне поруке" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Посебни радио" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "посебна..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Дбус путања" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "денс" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" -msgstr "" +msgstr "Откривено оштећење базе података. Погледајте https://code.google.com/p/clementine-player/wiki/DatabaseCorruption за упутства како да повратите вашу базу података" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "направљен" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "измењен" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "дана" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Под&разумевана" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Утишај звук за 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" -msgstr "Утишај звук за <вредност> процената" +msgstr "Смањи јачину звука за <вредност> процената" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" -msgstr "Утишај звук" +msgstr "Смањи јачину звука" #: ../bin/src/ui_appearancesettingspage.h:280 msgid "Default background image" msgstr "Подразумевана" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Подразумевани уређај на %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Подразумевано" @@ -1544,30 +1610,30 @@ msgstr "Подразумевано" msgid "Delay between visualizations" msgstr "Застој између визуелизација" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Обриши" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" -msgstr "Обриши Грувшарк листу нумера" +msgstr "Обриши Грувшаркову листу нумера" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Обриши преузете податке" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Брисање фајлова" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Обриши са уређаја..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Обриши са диска..." @@ -1575,31 +1641,31 @@ msgstr "Обриши са диска..." msgid "Delete played episodes" msgstr "Обриши пуштене епизоде" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Обриши препоставку" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Обриши паметну листу" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "обриши оригиналне фајлове" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Бришем фајлове" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" -msgstr "Избаци означене нумере из реда" +msgstr "Избаци изабране нумере из реда" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Избаци нумеру из реда" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Одредиште" @@ -1608,7 +1674,7 @@ msgstr "Одредиште" msgid "Details..." msgstr "Детаљи..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Уређај" @@ -1620,15 +1686,15 @@ msgstr "Својства уређаја" msgid "Device name" msgstr "Име уређаја" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Својства уређаја..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Уређаји" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Дијалог" @@ -1665,12 +1731,17 @@ msgstr "Онемогући трајање" msgid "Disable moodbar generation" msgstr "Искључи стварање расположења" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Онемогућено" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Онемогућен" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "диск" @@ -1680,15 +1751,15 @@ msgid "Discontinuous transmission" msgstr "Испрекидан пренос" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Опције приказа" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Прикажи екрански преглед" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Поново скенирај библиотеку" @@ -1700,27 +1771,27 @@ msgstr "Не претварај музику" msgid "Do not overwrite" msgstr "Не пребрисуј" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Не понављај" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Не приказуј у разним извођачима" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Не пуштај насумично" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Не заустављај!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Донирај" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Кликните двапут да отворите" @@ -1728,12 +1799,13 @@ msgstr "Кликните двапут да отворите" msgid "Double clicking a song will..." msgstr "Двоклик на песму ће да је..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Преузми %n епизода" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Фасцикла за преузимање" @@ -1749,23 +1821,23 @@ msgstr "преузимања садржаја" msgid "Download new episodes automatically" msgstr "Преузимај нове епизоде аутоматски" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" -msgstr "" +msgstr "Преузимање је на чекању" #: ../bin/src/ui_networkremotesettingspage.h:202 msgid "Download the Android app" msgstr "Преузмите апликацију за Андроид" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Преузми овај албум" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Преузми овај албум..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Преузми ову епизоду" @@ -1773,7 +1845,7 @@ msgstr "Преузми ову епизоду" msgid "Download..." msgstr "Преузми..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Преузимам (%1%)..." @@ -1782,25 +1854,25 @@ msgstr "Преузимам (%1%)..." msgid "Downloading Icecast directory" msgstr "Преузимам Ајскаст директоријум" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Преузимам Џамендов каталог" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Преузимам Магнатјунов каталог" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Преузимам Спотифај прикључак" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Преузимам метаподатке" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" -msgstr "Одвуците га где желите" +msgstr "Превлачите да бисте мењали положај" #: ../bin/src/ui_dropboxsettingspage.h:103 msgid "Dropbox" @@ -1818,20 +1890,20 @@ msgstr "Трајање" msgid "Dynamic mode is on" msgstr "Динамички режим је укључен" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Динамички насумични микс" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Уреди паметну листу..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Уреди ознаку „%1“..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Уреди ознаку..." @@ -1843,22 +1915,26 @@ msgstr "Уреди ознаке" msgid "Edit track information" msgstr "Уређивање података нумере" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Уреди податке нумере..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Уреди податке нумера.." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Уреди..." #: ../bin/src/ui_wiimotesettingspage.h:183 msgid "Enable Wii Remote support" -msgstr "Омогући Wii Remote подршку" +msgstr "Омогући подршку за Wii даљински" + +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Аутоматско кеширање" #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" @@ -1872,11 +1948,11 @@ msgstr "Омогући пречице само кад је Клементина msgid "" "Enable sources below to include them in search results. Results will be " "displayed in this order." -msgstr "" +msgstr "Омогућите изворе приказане испод да бисте их укључили у претрагу. Резултати ће бити приказани овим редим." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" -msgstr "" +msgstr "Ласт.фм скробловање" #: ../bin/src/ui_transcoderoptionsspeex.h:235 msgid "Encoding complexity" @@ -1900,17 +1976,12 @@ msgstr "Унесите УРЛ за преузимање омота са инте #: ../bin/src/ui_albumcoverexport.h:205 msgid "Enter a filename for exported covers (no extension):" -msgstr "" +msgstr "Унесите име за извезене омоте (без наставка):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Унесите ново име за ову листу нумера" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Унесите извођача или ознаку да почнете да слушате Ласт.фм радио." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1918,48 +1989,49 @@ msgstr "Унесите појмове за тражење изнад да бис #: ../bin/src/ui_itunessearchpage.h:77 msgid "Enter search terms below to find podcasts in the iTunes Store" -msgstr "" +msgstr "Унесите појам за тражење испод да бисте нашли подкасте у Ајтјунс продавници" #: ../bin/src/ui_gpoddersearchpage.h:77 msgid "Enter search terms below to find podcasts on gpodder.net" -msgstr "" +msgstr "Унесите појам за тражење испод да бисте нашли подкасте на gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" -msgstr "Унесите израз за претрагу" +msgstr "Унесите појам за тражење овде" #: ../bin/src/ui_addstreamdialog.h:114 msgid "Enter the URL of an internet radio stream:" -msgstr "Унеси УРЛ интернет радио ток" +msgstr "Унесите УРЛ тока интернет радија:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Унесите име фасцикле" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." -msgstr "" +msgstr "Унесите овај ИП у апликацију да бисте је повезали са Клементином." #: ../bin/src/ui_libraryfilterwidget.h:87 msgid "Entire collection" msgstr "читаву колекцију" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Еквилајзер" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" -msgstr "" +msgstr "Исто као и --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" -msgstr "" +msgstr "Исто као и --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Грешка" @@ -1967,38 +2039,38 @@ msgstr "Грешка" msgid "Error connecting MTP device" msgstr "Грешка повезивања МТП уређаја" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Грешка копирања песама" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Грешка брисања песама" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Грешка преузимања Спотифај прикључка" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Грешка учитавања %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Грешка учитавања di.fm листе нумера" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Грешка обраде %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Грешка приликом учитавања аудио ЦД-а" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Већ пуштано" @@ -2030,7 +2102,7 @@ msgstr "сваких 6 сати" msgid "Every hour" msgstr "сваког сата" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Осим између нумера на истом албуму или на истом ЦУЕ листу" @@ -2040,9 +2112,9 @@ msgstr "Постојећи омоти" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" -msgstr "Рашири" +msgstr "Прошири" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Истиче %1" @@ -2063,36 +2135,36 @@ msgstr "Извези преузете омоте" msgid "Export embedded covers" msgstr "Извези уграђене омоте" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Извоз завршен" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Извезено %1 омота од %2 (%3 прескочено)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2102,42 +2174,42 @@ msgstr "F8" msgid "FLAC" msgstr "ФЛАЦ" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Утапај при паузи/настављању" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Утапај нумеру при заустављању" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Утапање" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Трајање претапања" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Неуспех читања ЦД уређаја" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Неуспех добављања директоријума" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Неуспех добављања подкаста" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Неуспех учитавања подкаста" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Неуспех рашчлањивања ИксМЛ-а за овај РСС довод" @@ -2146,11 +2218,11 @@ msgstr "Неуспех рашчлањивања ИксМЛ-а за овај РС msgid "Fast" msgstr "брз" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Омиљене" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Омиљене нумере" @@ -2166,11 +2238,11 @@ msgstr "Добави аутоматски" msgid "Fetch completed" msgstr "Добављање завршено" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Добављам Субсоникову библиотеку" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Грешка добављања омота" @@ -2178,7 +2250,7 @@ msgstr "Грешка добављања омота" msgid "File Format" msgstr "Формат фајла" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "наставак фајла" @@ -2186,19 +2258,23 @@ msgstr "наставак фајла" msgid "File formats" msgstr "Формати фајлова" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "име фајла" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "име фајла (без путање)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Шаблон имена фајла:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "величина фајла" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2208,7 +2284,7 @@ msgstr "тип фајла" msgid "Filename" msgstr "име фајла" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Фајлови" @@ -2216,15 +2292,19 @@ msgstr "Фајлови" msgid "Files to transcode" msgstr "Фајлови за прекодирање" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Пронађите песме у библиотеци које одговарају одређеном критеријуму." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Пронађи овог извођача" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Идентификујем песму" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Заврши" @@ -2232,7 +2312,7 @@ msgstr "Заврши" msgid "First level" msgstr "Први ниво" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "ФЛАЦ" @@ -2242,18 +2322,18 @@ msgstr "Величина фонта" #: ../bin/src/ui_spotifysettingspage.h:213 msgid "For licensing reasons Spotify support is in a separate plugin." -msgstr "Због лиценцираниг разлога Spotify подршка је на посебном додатку." +msgstr "Из разлога лиценцирања подршка за Спотифај је у одвојеном прикључку." #: ../bin/src/ui_transcoderoptionsmp3.h:204 msgid "Force mono encoding" msgstr "Присили моно кодирање" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Заборави уређај" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2268,7 +2348,7 @@ msgstr "Заборављањем уређаја уклонићете га са #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2296,31 +2376,23 @@ msgstr "Број кадрова" msgid "Frames per buffer" msgstr "Сличица по баферу" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Пријатељи" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "залеђен" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "пуни бас" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "пуни бас + сопран" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "пуни сопран" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Гстример звучни мотор" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Опште" @@ -2328,30 +2400,30 @@ msgstr "Опште" msgid "General settings" msgstr "Опште поставке" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "жанр" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" -msgstr "" +msgstr "Набави УРЛ за дељење ове Грувшаркове листе нумера" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" -msgstr "" +msgstr "Набави УРЛ за делење ове Грувшаркове песме" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" -msgstr "" +msgstr "Добављам популарне песме на Грувшарку" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Добављам канале" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Добављам токове" @@ -2363,11 +2435,11 @@ msgstr "Дајте јој име:" msgid "Go" msgstr "Иди" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Иди на следећи језичак листе" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Иди на претходни језичак листе" @@ -2375,7 +2447,7 @@ msgstr "Иди на претходни језичак листе" msgid "Google Drive" msgstr "Гугл Драјв" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2385,7 +2457,7 @@ msgstr "Добављено %1 омота од %2 (%3 неуспешно)" msgid "Grey out non existent songs in my playlists" msgstr "Посиви непостојеће песме у листи нумера" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Грувшарк" @@ -2393,69 +2465,69 @@ msgstr "Грувшарк" msgid "Grooveshark login error" msgstr "Грешка пријаве на Грувшарк" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" -msgstr "УРЛ листе нумера Грувшарка" +msgstr "УРЛ Грувшаркове листе нумера" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" -msgstr "Грувшарк радио" +msgstr "Грувшарков радио" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" -msgstr "УРЛ песме Грувшарка" +msgstr "УРЛ Грувшаркове песме" #: ../bin/src/ui_groupbydialog.h:124 msgid "Group Library by..." msgstr "Груписање библиотеке" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Груписање" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "албум" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "извођач" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "извођач/албум" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "извођач/година — албум" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "жанр/албум" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "жанр/извођач/албум" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "груписање" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "ХТМЛ страница не садржи ниједан РСС довод" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." -msgstr "" +msgstr "Примљен ХТТП 3xx кôд без УРЛ-а, проверите поставке сервера." #: ../bin/src/ui_networkproxysettingspage.h:163 msgid "HTTP proxy" msgstr "ХТТП прокси" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "срећан" @@ -2465,31 +2537,31 @@ msgstr "Подаци о хардверу" #: ../bin/src/ui_deviceproperties.h:372 msgid "Hardware information is only available while the device is connected." -msgstr "Подаци о хардверу су доступни само док је уређај повезан" +msgstr "Подаци о хардверу су доступни само док је уређај повезан." #: ../bin/src/ui_transcoderoptionsmp3.h:202 msgid "High" msgstr "висок" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "висок (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "висок (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Домаћин није нађен, проверите УРЛ сервера. Пример: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "сати" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Хипножабац" @@ -2501,15 +2573,15 @@ msgstr "немам налог на Магнатјуну" msgid "Icon" msgstr "Икона" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Иконе на врху" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Идентификујем песму" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2519,27 +2591,27 @@ msgstr "Ако наставите, овај уређај ће радити сп msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Ако знате УРЛ подкаста, унесите га испод и кликните на „Иди“." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Игонориши „The“ у имену извођача" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Слике (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Слике (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" -msgstr "" +msgstr "за %1 дана" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" -msgstr "" +msgstr "за %1 седмица" #: ../bin/src/ui_wizardfinishpage.h:86 msgid "" @@ -2547,7 +2619,7 @@ msgid "" "time a song finishes." msgstr "У динамичком режиму нове нумере ће бити изабране и додате на листу сваки пут кад се песма заврши." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Сандуче" @@ -2559,36 +2631,36 @@ msgstr "Укључи омоте албума у обавештења" msgid "Include all songs" msgstr "Укључи све песме" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." -msgstr "" +msgstr "Неодговарајуће издање Субсониковог РЕСТ протокола. Клијент треба надоградњу." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." -msgstr "" +msgstr "Неодговарајуће издање Субсониковог РЕСТ протокола. Сервер треба надоградњу." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." -msgstr "" +msgstr "Непотпуно подешавање, испуните сва поља." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Појачај звук за 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" -msgstr "Појачај звук за <вредност> процената" +msgstr "Повећај јачину звука за <вредност> процената" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" -msgstr "Појачај звук" +msgstr "Повећај јачину звука" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Индексирам %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Подаци" @@ -2596,55 +2668,55 @@ msgstr "Подаци" msgid "Input options" msgstr "Опције улаза" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Уметни..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" -msgstr "Инсталиран" +msgstr "инсталиран" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Провера интегритета" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Интернет" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Интернет сервиси" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" -msgstr "Неисправан АПИ кључ" +msgstr "Неважећи АПИ кључ" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Неисправан формат" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Неисправан начин" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Неисправни параметри" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Наведен неисправан ресурс" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" -msgstr "Неважећи сервис" +msgstr "Неисправан сервис" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Неважећи кључ сесије" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Неисправно корисничко име и/или лозинка" @@ -2652,55 +2724,56 @@ msgstr "Неисправно корисничко име и/или лозинк msgid "Invert Selection" msgstr "Обрни избор" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Џамендо" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" -msgstr "Џамендо најслушаније нумере" +msgstr "Џамендове најслушаније нумере" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" -msgstr "Џамендо најбоље нумере" +msgstr "Џамендове најбоље нумере" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" -msgstr "Џамендо најбоље нумере овог месеца" +msgstr "Џамендове најбоље нумере овог месеца" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" -msgstr "Џамендо најбоље нумере ове седмице" +msgstr "Џамендове најбоље нумере ове седмице" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" -msgstr "Џамендо база података" +msgstr "Џамендова база података" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" -msgstr "Скочи на тренутно пуштену нумеру" +msgstr "Скочи на текућу нумеру" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." -msgstr "" +msgstr "Држите тастере %1 секунду..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." -msgstr "" +msgstr "Држите тастере %1 секунди..." #: ../bin/src/ui_behavioursettingspage.h:193 msgid "Keep running in the background when the window is closed" msgstr "Настави рад у позадини кад се прозор затвори" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "задржи оригиналне фајлове" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Мачићи" @@ -2708,11 +2781,11 @@ msgstr "Мачићи" msgid "Language" msgstr "Језик" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "лаптоп/слушалице" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "велика дворана" @@ -2720,58 +2793,24 @@ msgstr "велика дворана" msgid "Large album cover" msgstr "Велики омот" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Широка трака" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" -msgstr "последњи пут пуштана" +msgstr "Последњи пут пуштано" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "последњи пут пуштена" #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Ласт.фм" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Ласт.фм библиотека - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Ласт.фм комшијски радио - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Ласт.фм радио станица - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm слични Извођачи са %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Ласт.фм је тренутно заузет, покушајте поново за неколико минута" @@ -2779,11 +2818,11 @@ msgstr "Ласт.фм је тренутно заузет, покушајте п msgid "Last.fm password" msgstr "Лозинка" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Ласт.фм број пуштања" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Ласт.фм ознаке" @@ -2791,28 +2830,24 @@ msgstr "Ласт.фм ознаке" msgid "Last.fm username" msgstr "Корисничко име" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Ласт.фм вики" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Најмање омиљене нумере" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Оставите празно за подразмевано. Примери: „/dev/dsp“, „front“, итд." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Лево" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "дужина" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Библиотека" @@ -2820,24 +2855,24 @@ msgstr "Библиотека" msgid "Library advanced grouping" msgstr "Напредно груписање библиотеке" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Обавештење о поновном скенирању библиотеке" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Претраживање библиотеке" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Ограничења" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" -msgstr "" +msgstr "Слушајте песме са Грувшарка биране на основу раније преслушаних" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "уживо" @@ -2847,17 +2882,17 @@ msgstr "Учитај" #: ../bin/src/ui_coverfromurldialog.h:102 msgid "Load cover from URL" -msgstr "Учитавање омот са УРЛ-а" +msgstr "Учитавање омота са УРЛ-а" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Учитај омот са УРЛ-а..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Учитавање омота са диска" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Учитај омот са диска..." @@ -2865,84 +2900,89 @@ msgstr "Учитај омот са диска..." msgid "Load playlist" msgstr "Учитавање листе нумера" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Учитај листу нумера..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Учитавам Ласт.фм радио" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Учитавам МТП уређај" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Учитавам Ајподову базу података" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Учитавам паметну листу" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Учитавам песме" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Учитавам ток" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Учитавам нумере" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" -msgstr "Учитавам податке нумера" +msgstr "Учитавам податке о нумерама" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Учитавам..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" -msgstr "Учитава датотеке/УРЛ-ове, замењујући тренутну листу" +msgstr "Учитава датотеке/УРЛ-ове, замењујући текућу листу" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Пријава" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Пријава није успела" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Одјава" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "дугорочно предвиђање (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" -msgstr "Воли" +msgstr "Волим" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "низак (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "низак (256X256)" @@ -2954,12 +2994,17 @@ msgstr "ниска комплексност (LC)" msgid "Lyrics" msgstr "Стихови" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Стихови са %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "М4А ААЦ" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MП3" @@ -2971,15 +3016,15 @@ msgstr "МП3 256k" msgid "MP3 96k" msgstr "МП3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "МП4 ААЦ" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "МПЦ" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Магнатјун" @@ -2987,7 +3032,7 @@ msgstr "Магнатјун" msgid "Magnatune Download" msgstr "Преузимање са Магнатјуна" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Завршено преузимање са Магнатјуна" @@ -2995,15 +3040,20 @@ msgstr "Завршено преузимање са Магнатјуна" msgid "Main profile (MAIN)" msgstr "главни профил (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Ентерпрајз!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Ентерпрајз!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Направи листу доступну ван мреже" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Лош одговор" @@ -3016,37 +3066,41 @@ msgstr "Ручно подешавање проксија" msgid "Manually" msgstr "ручно" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Произвођач" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Означи као преслушано" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Означи као ново" #: ../bin/src/ui_querysearchpage.h:116 msgid "Match every search term (AND)" -msgstr "Упореди сваки тражени термин (AND)" +msgstr "Упореди сваки тражени појам (AND)" #: ../bin/src/ui_querysearchpage.h:117 msgid "Match one or more search terms (OR)" -msgstr "Упореди један или више тражених термина (ОR)" +msgstr "Упореди један или више тражених појмова (ОR)" + +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Највише резултата опште претраге" #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Највећи битски проток" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "средњи (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "средњи (512X512)" @@ -3058,11 +3112,15 @@ msgstr "Тип чланства" msgid "Minimum bitrate" msgstr "Најмањи битски проток" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Најмањи испун бафера" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Недостају препоставке за пројектМ" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Модел" @@ -3070,20 +3128,20 @@ msgstr "Модел" msgid "Monitor the library for changes" msgstr "Надгледај измене у библиотеци" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Моно репродукција" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "месеци" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "расположење" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Стил расположења" @@ -3091,15 +3149,19 @@ msgstr "Стил расположења" msgid "Moodbars" msgstr "Расположења" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Још" + +#: library/library.cpp:84 msgid "Most played" msgstr "Најчешће пуштано" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" -msgstr "Тачка повезивања" +msgstr "Тачка монтирања" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Тачке монтирања" @@ -3108,7 +3170,7 @@ msgstr "Тачке монтирања" msgid "Move down" msgstr "Помери доле" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Премести у библиотеку" @@ -3117,7 +3179,7 @@ msgstr "Премести у библиотеку" msgid "Move up" msgstr "Помери горе" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Музика" @@ -3125,56 +3187,32 @@ msgstr "Музика" msgid "Music Library" msgstr "Музичка библиотека" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Утишај" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Моја Ласт.фм библиотека" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Мој бирани радио" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Моја музика" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Мој комшилук" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Моја радио станица" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Моје препоруке" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Име" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "име" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Опције именовања" @@ -3182,23 +3220,19 @@ msgstr "Опције именовања" msgid "Narrow band (NB)" msgstr "уски опсег (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Комшије" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Мрежни прокси" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Мрежни даљински" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Никад" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Никад пуштано" @@ -3207,46 +3241,46 @@ msgstr "Никад пуштано" msgid "Never start playing" msgstr "неће почети пуштање" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Нова фасцикла" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Нова листа нумера" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Нова паметна листа" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Нове песме" #: ../bin/src/ui_dynamicplaylistcontrols.h:110 msgid "New tracks will be added automatically." -msgstr "Нове нумере ће бити аутоматски додате" +msgstr "Нове нумере ће бити аутоматски додате." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Најновије нумере" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Следећа" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Следећа нумера" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" -msgstr "" +msgstr "следеће седмице" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Без анализатора" @@ -3254,7 +3288,7 @@ msgstr "Без анализатора" msgid "No background image" msgstr "Без слике позадине" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Нема омота за извоз." @@ -3262,7 +3296,7 @@ msgstr "Нема омота за извоз." msgid "No long blocks" msgstr "без дугих блокова" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Нема поклапања. Очистите поље претраге да бисте приказали целу листу поново." @@ -3276,11 +3310,11 @@ msgstr "без кратких блокова" msgid "None" msgstr "ништа" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ниједна од изабраних песама није погодна за копирање на уређај" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "нормалан" @@ -3288,42 +3322,46 @@ msgstr "нормалан" msgid "Normal block type" msgstr "нормални тип блока" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Није доступно док се користи промењива листа" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Неповезан" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Нема довољно садржаја" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" -msgstr "Нема довољно фанова" +msgstr "Нема довољно обожавалаца" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Нема довољно чланова" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Нема довољно комшија" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" -msgstr "Није уграђен" +msgstr "није инсталиран" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Нисте пријављени" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" -msgstr "Није" +msgstr "Није монтиран — кликните двапут да монтирате" + +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Ништа није нађено" #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" @@ -3335,38 +3373,43 @@ msgstr "Обавештења" #: ui/macsystemtrayicon.mm:64 msgid "Now Playing" -msgstr "Тренутно пушта" +msgstr "Сада пуштам" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "ОСД преглед" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" -msgstr "" +msgstr "искључено" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "ОГГ ФЛАЦ" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "ОГГ Опус" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "ОГГ Спикс" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "ОГГ Ворбис" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" -msgstr "" +msgstr "укључено" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "Ван Драјв" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3374,11 +3417,11 @@ msgid "" "192.168.x.x" msgstr "Прихватај везе само од клијената унутар овог распона ип адреса:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Дозволи само везе са локалне мреже" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Прикажи само почетних" @@ -3386,23 +3429,23 @@ msgstr "Прикажи само почетних" msgid "Opacity" msgstr "Прозирност" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Отвори %1 у прегледачу" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Отвори &аудио ЦД..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" -msgstr "Отвори ОПМЛ фајл" +msgstr "Отварање ОПМЛ фајла" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Отвори ОПМЛ фајл..." @@ -3410,30 +3453,35 @@ msgstr "Отвори ОПМЛ фајл..." msgid "Open device" msgstr "Отвори уређај" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Отвори фајл..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Отвори у Гугл Драјву" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Отвори у новој листи" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "отвори у новој листи" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Отвори у прегледачу" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Отвори..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Радња није успела" @@ -3453,23 +3501,23 @@ msgstr "Опције..." msgid "Opus" msgstr "Опус" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Организовање фајлова" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Организуј фајлове..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Организујем фајлове" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Почетне ознаке" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Остале опције" @@ -3477,7 +3525,7 @@ msgstr "Остале опције" msgid "Output" msgstr "Излаз" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Уређај излаза" @@ -3485,15 +3533,11 @@ msgstr "Уређај излаза" msgid "Output options" msgstr "Опције излаза" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Прикључак излаза" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Пребриши све" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Пребриши постојеће фајлове" @@ -3505,15 +3549,15 @@ msgstr "Пребриши само мање фајлове" msgid "Owner" msgstr "Власник" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Рашчлањујем Џамендов каталог" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "журка" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3522,20 +3566,20 @@ msgstr "журка" msgid "Password" msgstr "Лозинка" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Паузирај" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Паузирај пуштање" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Паузирано" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "извођач" @@ -3544,34 +3588,22 @@ msgstr "извођач" msgid "Pixel" msgstr "пиксела" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Обична трака" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Пусти" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Пусти извођача или ознаку" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Пусти радио извођача..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "број пуштања" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Пусти посебни радио..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Пусти ако је заустављено, заустави ако се пушта" @@ -3580,45 +3612,42 @@ msgstr "Пусти ако је заустављено, заустави ако msgid "Play if there is nothing already playing" msgstr "почеће пуштање ако тренутно ништа није пуштено" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Пусти радио ознаке..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" -msgstr "Пусти у нумеру сс листе" +msgstr "Пусти у нумеру са листе" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Пусти/паузирај" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Пуштање" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Опције плејера" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Листа нумера" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Листа нумера је завршена" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Опције листе нумера" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Тип листе" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Листе нумера" @@ -3628,49 +3657,50 @@ msgstr "Затворите ваш прегледач и вратите се на #: ../bin/src/ui_spotifysettingspage.h:214 msgid "Plugin status:" -msgstr "Статус додатка:" +msgstr "Стање прикључка:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасти" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "поп" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" -msgstr "" +msgstr "Популарне песме" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" -msgstr "" +msgstr "Популарне песме месеца" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" -msgstr "" +msgstr "Популарне песме данас" #: ../bin/src/ui_notificationssettingspage.h:438 msgid "Popup duration" msgstr "Трајање" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Порт" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Претпојачање" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Поставке" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Подешавање..." @@ -3700,16 +3730,16 @@ msgstr "Препоставка:" #: ../bin/src/ui_wiimoteshortcutgrabber.h:124 msgid "Press a button combination to use for" -msgstr "" +msgstr "Притисните комбинацију тастера за" #: ../bin/src/ui_globalshortcutgrabber.h:73 msgid "Press a key" msgstr "Притисните тастер" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." -msgstr "" +msgstr "Притисните комбинацију тастера за %1..." #: ../bin/src/ui_notificationssettingspage.h:451 msgid "Pretty OSD options" @@ -3717,20 +3747,20 @@ msgstr "Опције лепог ОСД-а" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Преглед" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Претходна" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Претходна нумера" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Прикажи податке о издању" @@ -3738,21 +3768,25 @@ msgstr "Прикажи податке о издању" msgid "Profile" msgstr "Профил" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Напредак" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "напредак" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "психоделично" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" -msgstr "" +msgstr "Притисните тастер на Wii даљинском" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Постави насумично" @@ -3760,7 +3794,12 @@ msgstr "Постави насумично" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Квалитет" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Квалитет" @@ -3768,28 +3807,33 @@ msgstr "Квалитет" msgid "Querying device..." msgstr "Испитујем уређај..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Менаџер редоследа" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Стави у ред изабране нумере" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Стави нумеру у ред" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "радио (једнака јачина за све песме)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Радио" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Киша" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Киша" @@ -3797,48 +3841,48 @@ msgstr "Киша" msgid "Random visualization" msgstr "насумично" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Оцени текућу песму са 0 звезда" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Оцени текућу песму са 1 звездом" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Оцени текућу песму са 2 звезде" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Оцени текућу песму са 3 звезде" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Оцени текућу песму са 4 звезде" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Оцени текућу песму са 5 звезда" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "оцена" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Заиста одустајете?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." -msgstr "" +msgstr "Пређено ограничење преусмеравања, проверите поставке сервера." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Освежи" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Освежи каталог" @@ -3846,32 +3890,28 @@ msgstr "Освежи каталог" msgid "Refresh channels" msgstr "Освежи канале" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Освежи списак пријатеља" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Освежи списак станица" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" -msgstr "" +msgstr "Освежи токове" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "реге" #: ../bin/src/ui_wiimoteshortcutgrabber.h:126 msgid "Remember Wii remote swing" -msgstr "" +msgstr "Запамти замах" #: ../bin/src/ui_behavioursettingspage.h:204 msgid "Remember from last time" msgstr "сети се од прошлог пута" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Уклони" @@ -3879,7 +3919,7 @@ msgstr "Уклони" msgid "Remove action" msgstr "Уклони радњу" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Уклони дупликате са листе" @@ -3887,90 +3927,94 @@ msgstr "Уклони дупликате са листе" msgid "Remove folder" msgstr "Уклони фасциклу" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" -msgstr "" +msgstr "Уклони из Моје музике" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Уклони из обележивача" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" -msgstr "" +msgstr "Уклони из омиљених" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Уклони са листе нумера" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" -msgstr "Уклони листу нумера" +msgstr "Уклањање листе нумера" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Уклони листе нумера" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" -msgstr "" +msgstr "Уклањам песме из Моје музике" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" -msgstr "" +msgstr "Уклањам песме из омиљених" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" -msgstr "Преименуј „%1“ листу" +msgstr "Преименовање „%1“ листе" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" -msgstr "" +msgstr "Преименуј Грувшаркову листу нумера" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Преименовање листе нумера" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Преименуј листу нумера..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." -msgstr "" +msgstr "Нумериши овим редом..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Понављање" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Понављај албум" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Понављај листу нумера" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Понављај нумеру" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" -msgstr "Замени тренутну листу" +msgstr "Замени текућу листу" #: ../bin/src/ui_behavioursettingspage.h:218 msgid "Replace the playlist" msgstr "замени листу нумера" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Замени размаке подвлаком" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Нивелатор јачине" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Режим нивелатора јачине" @@ -3978,24 +4022,24 @@ msgstr "Режим нивелатора јачине" msgid "Repopulate" msgstr "Попуни поново" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Захтевај аутентификацијски кôд" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Ресетуј" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Поништи број пуштања" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." -msgstr "" +msgstr "Поново пусти нумеру или пусти претходну ако је текућа унутар почетних 8 секунди." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Ограничи се на АСКИ знакове" @@ -4003,17 +4047,17 @@ msgstr "Ограничи се на АСКИ знакове" msgid "Resume playback on start" msgstr "Настави пуштање по покретању" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" -msgstr "" +msgstr "Добављам песме из Грувшаркове Моје музике" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" -msgstr "" +msgstr "Добављам Грувшаркове омиљене песме" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" -msgstr "" +msgstr "Добављам Грувшаркове листе нумера" #: ../data/oauthsuccess.html:5 msgid "Return to Clementine" @@ -4031,41 +4075,41 @@ msgstr "чупај" msgid "Rip CD" msgstr "Чупање ЦД-а" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Чупај аудио ЦД..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "рок" #: ../bin/src/ui_console.h:81 msgid "Run" -msgstr "" +msgstr "Изврши" #: ../bin/src/ui_networkproxysettingspage.h:164 msgid "SOCKS proxy" msgstr "СОЦКС прокси" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." -msgstr "" +msgstr "Грешка ССЛ руковања, проверите поставке сервера. ССЛв3 опција испод може заобићи неке проблеме." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Безбедно извади уређај" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Безбедно извади уређај после копирања" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "узорковање" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "узорковање" @@ -4073,27 +4117,33 @@ msgstr "узорковање" msgid "Save .mood files in your music library" msgstr "Сачувај .mood фајлове у музичкој библиотеци" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Уписивање омота албума" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Сачувај омот на диск..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Сачувај слику" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Сачувај листу нумера" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Упис листе нумера" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Сачувај листу нумера..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Сачувај препоставку" @@ -4107,13 +4157,13 @@ msgstr "Упиши статистику песме у ознаке кад је #: ../bin/src/ui_addstreamdialog.h:115 msgid "Save this stream in the Internet tab" -msgstr "Сачувај овај ток у интернет картици" +msgstr "Сачувај овај ток у интернет језичку" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Уписујем статистике песама у фајлове песама" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Уписујем нумере" @@ -4125,7 +4175,7 @@ msgstr "скалабилно узорковање (SSR)" msgid "Scale size" msgstr "Промени величину" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "скор" @@ -4133,34 +4183,38 @@ msgstr "скор" msgid "Scrobble tracks that I listen to" msgstr "Скроблуј нумере које пуштам" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Тражи" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "Претрага" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" -msgstr "Потражи Icecast станице" +msgstr "Тражи Ајскаст станице" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" -msgstr "Потражи Jamendo" +msgstr "Тражи на Џаменду" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" -msgstr "Претражи Магнатјун" +msgstr "Тражи на Магнатјуну" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" -msgstr "Претражи Субсоник" +msgstr "Тражи на Субсонику" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Тражи аутоматски" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Тражи омоте албума..." @@ -4174,27 +4228,27 @@ msgstr "Тражи на gpodder.net" #: ../bin/src/ui_itunessearchpage.h:76 msgid "Search iTunes" -msgstr "Тражи на iTunes" +msgstr "Тражи на Ајтјунсу" #: ../bin/src/ui_querysearchpage.h:113 msgid "Search mode" msgstr "Режим претраге" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Опције претраге" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Резултати претраге" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" -msgstr "Термини претраге" +msgstr "Појмови за претрагу" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Тражим на Грувшарку" @@ -4202,27 +4256,27 @@ msgstr "Тражим на Грувшарку" msgid "Second level" msgstr "Други ниво" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Тражи уназад" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Тражи унапред" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" -msgstr "Нађи тренутну нумеру по релативном износу" +msgstr "Иди на положај текуће нумере за релативни износ" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" -msgstr "Нађи тренутну нумеру на тачној позицији" +msgstr "Иди на положај текуће нумере за апсолутни износ" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Изабери све" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Очисти избор" @@ -4230,7 +4284,7 @@ msgstr "Очисти избор" msgid "Select background color:" msgstr "Боја позадине:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Слика позадине" @@ -4246,7 +4300,7 @@ msgstr "Главна боја:" msgid "Select visualizations" msgstr "Избор визуелизација" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Изабери визуелизације..." @@ -4254,7 +4308,7 @@ msgstr "Изабери визуелизације..." msgid "Select..." msgstr "Изабери..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Серијски број" @@ -4266,51 +4320,51 @@ msgstr "УРЛ сервера" msgid "Server details" msgstr "Детаљи сервера" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Сервис ван мреже" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." -msgstr "Постављено %1 од „%2“..." +msgstr "Промени %1 у „%2“..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Постави јачину звука на <вредност> процената" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." -msgstr "Подеси вредност за све означене нумере..." +msgstr "Подеси вредност за све изабране нумере..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Подешавања" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" -msgstr "Пречица" +msgstr "пречица" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Пречица за %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Пречица за %1 већ постоји" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Прикажи" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Прикажи ОСД" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Прикажи шљаштећу анимацију на пуштеној нумери" @@ -4328,7 +4382,7 @@ msgstr "Обавештење при промени режима понављањ #: ../bin/src/ui_notificationssettingspage.h:441 msgid "Show a notification when I change the volume" -msgstr "Обавештење про промени јачине звука" +msgstr "Обавештење при промени јачине звука" #: ../bin/src/ui_notificationssettingspage.h:436 msgid "Show a popup from the system tray" @@ -4338,15 +4392,15 @@ msgstr "Облачић са системске касете" msgid "Show a pretty OSD" msgstr "Лепи ОСД" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Прикажи изнад траке стања" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Прикажи све песме" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Прикажи све песме" @@ -4358,32 +4412,36 @@ msgstr "Прикажи омот у библиотеци" msgid "Show dividers" msgstr "Прикажи раздвајаче" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Пуна величина..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Прикажи групе у резултату опште претраге" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Прикажи у менаџеру фајлова" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Прикажи у библиотеци..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" -msgstr "Прикажи у разним извођачима" +msgstr "Приказуј у разним извођачима" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Прикажи расположење" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Прикажи само дупликате" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Прикажи само неозначене" @@ -4392,8 +4450,8 @@ msgid "Show search suggestions" msgstr "прикажи предлоге претраге" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Прикажи „волим“ и „мрзим“ дугмад" +msgid "Show the \"love\" button" +msgstr "Прикажи „волим“ дугме" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4401,33 +4459,33 @@ msgstr "Прикажи дугме скробловања у главном пр #: ../bin/src/ui_behavioursettingspage.h:192 msgid "Show tray icon" -msgstr "Прикажи икону системске касете" +msgstr "Усидри у системску касету" #: ../bin/src/ui_globalsearchsettingspage.h:152 msgid "Show which sources are enabled and disabled" msgstr "прикажи који су извори омогућени/онемогућени" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Прикажи/сакриј" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Насумично" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Насумично албуми" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Насумично све" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Претумбај листу" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Насумично нумере у овом албуму" @@ -4443,7 +4501,7 @@ msgstr "Одјави се" msgid "Signing in..." msgstr "Пријављујем се..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Слични извођачи" @@ -4455,43 +4513,51 @@ msgstr "Величина" msgid "Size:" msgstr "Величина:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "ска" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Прескочи уназад у листи нумера" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "број прескакања" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Прескочи унапред у листи нумера" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Прескочи изабране нумере" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Прескочи нумеру" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Мали омот" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Уска трака" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Паметна листа" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Паметне листе" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "лагана" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "лагани рок" @@ -4499,17 +4565,17 @@ msgstr "лагани рок" msgid "Song Information" msgstr "Подаци о песми" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Подаци о песми" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Сонограм" #: ../bin/src/ui_trackselectiondialog.h:205 msgid "Sorry" -msgstr "Извините" +msgstr "Жао нам је" #: ../bin/src/ui_icecastfilterwidget.h:75 msgid "Sort by genre (alphabetically)" @@ -4523,15 +4589,23 @@ msgstr "Поређај по жанру (по популарности)" msgid "Sort by station name" msgstr "Поређај по имену станице" -#: ../bin/src/ui_querysortpage.h:139 -msgid "Sort songs by" -msgstr "Поређај песме по" +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Поређај песме на листи абецедно" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:140 +msgid "Sort songs by" +msgstr "Критеријум ређања" + +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Ређање" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "Саундклауд" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "извор" @@ -4541,13 +4615,13 @@ msgstr "Извори" #: ../bin/src/ui_transcodersettingspage.h:178 msgid "Speex" -msgstr "Speex" +msgstr "Спикс" #: ../bin/src/ui_spotifysettingspage.h:207 msgid "Spotify" msgstr "Спотифај" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Грешка пријављивања на Спотифај" @@ -4555,7 +4629,7 @@ msgstr "Грешка пријављивања на Спотифај" msgid "Spotify plugin" msgstr "Спотифај прикључак" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Спотифај прикључак није инсталиран" @@ -4563,95 +4637,95 @@ msgstr "Спотифај прикључак није инсталиран" msgid "Standard" msgstr "стандардан" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Са звездицом" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Почни чупање" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" -msgstr "Почни листу тренутно пуштаним" +msgstr "Пусти текућу листу нумера" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Почни прекодирање" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" -msgstr "" +msgstr "Почните нешто да куцате у поље за претрагу изнад да бисте испунили овај списак резултата претраге" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Почињем %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Почињем..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Станице" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Заустави" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Заустави после" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Заустави после ове нумере" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Заустави пуштање" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Заустави после текуће нумере" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" -msgstr "Заустави пуштање након нумере: %1" +msgstr "Заустави пуштање после нумере: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Заустављено" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Ток" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." -msgstr "" +msgstr "Пуштање тока са Субсониковог сервера захтева важећу лиценцу сервера након 30-дневног пробног периода." #: ../bin/src/ui_magnatunesettingspage.h:160 msgid "Streaming membership" msgstr "стримовање садржаја" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" -msgstr "" +msgstr "Претплаћене листе нумера" #: ../bin/src/ui_podcastinfowidget.h:196 msgid "Subscribers" msgstr "Претплатници" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Субсоник" @@ -4659,12 +4733,12 @@ msgstr "Субсоник" msgid "Success!" msgstr "Успех!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Успешно уписано %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Предложене ознаке" @@ -4673,13 +4747,13 @@ msgstr "Предложене ознаке" msgid "Summary" msgstr "Резиме" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "супер висок (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "супер висок (2048x2048)" @@ -4691,43 +4765,35 @@ msgstr "Подржани формати" msgid "Synchronize statistics to files now" msgstr "Синхронизуј статистике у фајлове" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Синхронизовање Спотифај сандучета" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Синхронизовање Спотифај листе нумера" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Синхронизовање Спотифај оцењених нумера" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "системске боје" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Језичци на врху" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Ознака" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Добављач ознака" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Означи радио" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Циљани битски проток" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "техно" @@ -4735,11 +4801,11 @@ msgstr "техно" msgid "Text options" msgstr "Опције текста" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Захвалнице" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Наредбе „%1“ се не могу покренути." @@ -4748,17 +4814,12 @@ msgstr "Наредбе „%1“ се не могу покренути." msgid "The album cover of the currently playing song" msgstr "Омот албума текуће песме" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Директоријум „%1“ није исправан" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Листа нумера „%1“ је празна и не може се учитати." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Друга вредност мора бити већа од прве!" @@ -4766,40 +4827,40 @@ msgstr "Друга вредност мора бити већа од прве!" msgid "The site you requested does not exist!" msgstr "Сајт који сте затражили не постоји!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Сајт који сте затражили није слика!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." -msgstr "" +msgstr "Пробни период за Субсоников сервер је истекао. Донирајте да бисте добили лиценцни кључ. Посетите subsonic.org за више детаља." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Издање Клементине које сте управо надоградили захтева потпуно скенирање библиотеке због нових могућности које су излистане испод:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" -msgstr "" +msgstr "Има још песама у овом албуму" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Проблем приликом комуникације са gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Проблем приликом добављања метаподатака са Магнатјуна" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" -msgstr "Проблем приликом рашчлањивања одговора са iTunes продавнице." +msgstr "Проблем приликом рашчлањивања одговора са Ајтјунс продавнице." -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4811,13 +4872,13 @@ msgid "" "deleted:" msgstr "Било је проблема при брисању неких песама. Следећи фајлови нису обрисани:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Ови фајлови ће бити обрисани са уређаја, желите ли заиста да наставите?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4837,13 +4898,13 @@ msgstr "Ове поставке се користе у дијалогу „Пр msgid "Third level" msgstr "Трећи ниво" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Овај радња ће направити базу података која може бити велика и до 150 MB.\nЖелите ли ипак да наставите?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Овај албум није доступан у траженом формату" @@ -4857,20 +4918,20 @@ msgstr "Овај уређај мора бити повезан и отворен msgid "This device supports the following file formats:" msgstr "Овај уређај подржава следеће формате фајлова:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Овај уређај неће радити исправно" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Ово је МТП уређај, али ви сте компиловали Клементину без libmtp подршке." #: devices/devicemanager.cpp:575 msgid "This is an iPod, but you compiled Clementine without libgpod support." -msgstr "Ово је iPod, али ви сте компиловали Клементину без libgpod подршке." +msgstr "Ово је Ајпод, али ви сте компиловали Клементину без libgpod подршке." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4880,61 +4941,61 @@ msgstr "Ово је први пут да сте повезали овај уре msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Ову опцију можете изменити у поставкама „Понашања“" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Овај ток је само за претплатнике" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Овај тип уређаја није подржан: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "наслов" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" -msgstr "" +msgstr "Да бисте почели Грувшарков радио најпре бисте требали преслушати неколико осталих Грувшаркових песама" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" -msgstr "Данас" +msgstr "данас" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" -msgstr "Мењај лепи ОСД" +msgstr "Лепи ОСД" #: visualisations/visualisationcontainer.cpp:101 msgid "Toggle fullscreen" msgstr "Цео екран" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" -msgstr "" +msgstr "Мењај стање редоследа" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Мењај скробловање" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Мењај видљивост лепог ОСД-а" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" -msgstr "Сутра" +msgstr "сутра" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Превише преусмеравања" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Најбоље нумере" @@ -4942,21 +5003,25 @@ msgstr "Најбоље нумере" msgid "Total albums:" msgstr "Укупно албума:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Укупно бајтова пребачено" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Укупно направљених мрежних захтева" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "нумера" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Нумере" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Прекодирање музике" @@ -4968,7 +5033,7 @@ msgstr "Дневник прекодирања" msgid "Transcoding" msgstr "Прекодирање" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Прекодирам %1 фајлова користећи %2 ниски" @@ -4977,84 +5042,84 @@ msgstr "Прекодирам %1 фајлова користећи %2 ниски" msgid "Transcoding options" msgstr "Опције прекодирања" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" -msgstr "" +msgstr "ТруеАудио" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Турбина" #: ../bin/src/ui_dynamicplaylistcontrols.h:113 msgid "Turn off" -msgstr "" +msgstr "Искључи" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "УРИ" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Адресе" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "ултра широки опсег (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Не могу да преузмем %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Непознато" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Непознат тип садржаја" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Непозната грешка" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Уклони омот" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Уклони прескакање нумера" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Уклони прескакање" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Уклони претплату" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Предстојећи концерти" -#: internet/groovesharkservice.cpp:1200 -msgid "Update Grooveshark playlist" -msgstr "Ажурирај Грувшарк листу нумера" +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Ажурирај" -#: podcasts/podcastservice.cpp:319 +#: internet/groovesharkservice.cpp:1238 +msgid "Update Grooveshark playlist" +msgstr "Ажурирај Грувшаркову листу нумера" + +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Ажурирај све подкасте" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Ажурирај измењене фасцикле библиотеке" @@ -5062,7 +5127,7 @@ msgstr "Ажурирај измењене фасцикле библиотеке" msgid "Update the library when Clementine starts" msgstr "Ажурирај библиотеку при покретању Клементине" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Ажурирај овај подкаст" @@ -5070,33 +5135,33 @@ msgstr "Ажурирај овај подкаст" msgid "Updating" msgstr "Ажурирање" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Ажурирам %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Ажурирам %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Ажурирање библиотеке" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" -msgstr "Искоришћење" +msgstr "Употреба" #: ../bin/src/ui_lastfmsettingspage.h:159 msgid "Use Album Artist tag when available" msgstr "Користи ознаку извођача албума ако је доступна" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Користи Гномове пречице" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Користи метаподатке нивелисања ако су доступни" @@ -5116,7 +5181,7 @@ msgstr "Посебна палета боја" msgid "Use a custom message for notifications" msgstr "Користи посебну поруку за обавештења" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Укључи даљинско управљање преко мреже" @@ -5134,7 +5199,7 @@ msgstr "Динамички режим" #: ../bin/src/ui_wiimotesettingspage.h:188 msgid "Use notifications to report Wii Remote status" -msgstr "" +msgstr "Користите обавештења за пријаву стања Wii даљинског" #: ../bin/src/ui_transcoderoptionsaac.h:139 msgid "Use temporal noise shaping" @@ -5156,20 +5221,20 @@ msgstr "Системске поставке проксија" msgid "Use volume normalisation" msgstr "Нормализација јачине звука" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Искоришћено" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" -msgstr "Корисник %1 нема Грувшарк Билокуд налог" +msgstr "Корисник %1 нема Грувшарков Билокуд налог" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Корисничко сучеље" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,14 +5254,14 @@ msgstr "ВБР МП3" #: ../bin/src/ui_transcoderoptionsspeex.h:232 msgid "Variable bit rate" -msgstr "Променљив битски проток" +msgstr "Промењив битски проток" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Разни извођачи" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Издање %1" @@ -5209,7 +5274,7 @@ msgstr "Приказ" msgid "Visualization mode" msgstr "Режим визуелизација" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Визуелизације" @@ -5217,11 +5282,15 @@ msgstr "Визуелизације" msgid "Visualizations Settings" msgstr "Подешавање визуелизација" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Откривање гласовне активности" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Јачина %1%" @@ -5239,11 +5308,11 @@ msgstr "ВАВ" msgid "WMA" msgstr "ВМА" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Упозори ме приликом затварања језичка листе нумера" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "ВАВ" @@ -5251,7 +5320,7 @@ msgstr "ВАВ" msgid "Website" msgstr "Вебсајт" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "седмица" @@ -5267,7 +5336,7 @@ msgstr "Приликом тражења омота албума Клементи #: ../bin/src/ui_globalsearchsettingspage.h:151 msgid "When the list is empty..." -msgstr "Када је списак празан..." +msgstr "Када је списак празан:" #: ../bin/src/ui_globalsearchview.h:212 msgid "Why not try..." @@ -5277,39 +5346,39 @@ msgstr "Зашто не бисте пробали..." msgid "Wide band (WB)" msgstr "широки опсег (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" -msgstr "" +msgstr "Wii даљински %1: активиран" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" -msgstr "" +msgstr "Wii даљински %1: повезан" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " -msgstr "" +msgstr "Wii даљински %1: ниво батерије критичан (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" -msgstr "" +msgstr "Wii даљински %1: деактивиран" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" -msgstr "" +msgstr "Wii даљински %1: неповезан" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" -msgstr "" +msgstr "Wii даљински %1: ниво батерије низак (%2%)" #: ../bin/src/ui_wiimotesettingspage.h:182 msgid "Wiimotedev" -msgstr "" +msgstr "Wii даљински" #: ../bin/src/ui_digitallyimportedsettingspage.h:181 msgid "Windows Media 128k" @@ -5323,7 +5392,7 @@ msgstr "Виндоуз медија 40k" msgid "Windows Media 64k" msgstr "Виндоуз медија 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Виндоуз медија аудио" @@ -5331,25 +5400,25 @@ msgstr "Виндоуз медија аудио" msgid "Without cover:" msgstr "Без омота:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Желите ли да померите и остале песме из овог албума у разне извођаче такође?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Желите ли сада да покренете потпуно скенирање?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Уписивање статистика свих песама у фајлове песама" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Погрешно корисничко име или лозинка." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5361,54 +5430,54 @@ msgstr "година" msgid "Year - Album" msgstr "година — албум" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "година" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" -msgstr "Јуче" +msgstr "јуче" #: ../bin/src/ui_magnatunedownloaddialog.h:132 msgid "You are about to download the following albums" msgstr "Преузећете следеће албуме" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Желите ли заиста да уклоните %1 листи нумера из омиљених?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" -msgstr "" +msgstr "Уклонићете и обрисати листу нумера која није у вашим омиљеним (ова радња не може да се поништи). \nЖелите ли заиста да наставите?" #: ../bin/src/ui_loginstatewidget.h:172 msgid "You are not signed in." msgstr "Нисте пријављени." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." -msgstr "Пријављени сте као %1" +msgstr "Пријављени сте као %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Пријављени сте." #: ../bin/src/ui_groupbydialog.h:123 msgid "You can change the way the songs in the library are organised." -msgstr "Можете изменити начин организивања песама у библиотеци" +msgstr "Можете изменити начин организивања песама у библиотеци." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." -msgstr "" +msgstr "Можете да слушате бесплатно без налога, али само премијум корисници могу да слушају токове високог квалитета без реклама." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5418,68 +5487,69 @@ msgstr "Можете бесплатно слушати песме на Магн msgid "You can listen to background streams at the same time as other music." msgstr "Можете да слушате позадинске токове истовремено са другом музиком." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. See the page on the " "Clementine wiki for more information.\n" -msgstr "" +msgstr "Можете да користите ваш Wii даљински за даљинску контролу Клементине. Погледајте страницу на Клементином викију за више података.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." -msgstr "Немате Грувшарк Билокуд налог." +msgstr "Немате Грувшарков Билокуд налог." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Немате Спотифај Премијум налог." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" -msgstr "" +msgstr "Немате активну претплату" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Не морате бити пријављени да бисте претраживали и слушали музику са Саундклауда. Међутим, морате да се пријавите да бисте приступили вашим листама нумера и вашем току." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." -msgstr "" +msgstr "Одјављени сте са Спотифаја, унесите вашу лозинку поново у дијалогу поставки." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." -msgstr "" +msgstr "Одјављени сте са Спотифаја, унесите вашу лозинку поново." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Волите ову нумеру" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Морате да покренете подешавање система и дозволите Клементини да „управља вашим рачунаром“ да бисте користили опште пречице у Клементини." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " "shortcuts in Clementine." -msgstr "" +msgstr "Да бисте користили опште пречице у Клементини морате да укључите опцију „Омогући приступ помоћним уређајима“ у подешавањима система." #: ../bin/src/ui_behavioursettingspage.h:200 msgid "You will need to restart Clementine if you change the language." -msgstr "Морате да поново покренете Клементину да бисте променили језик." +msgstr "Морате поново да покренете Клементину да бисте променили језик." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Ваша ИП адреса:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Ваши акредитиви за Ласт.фм су нетачни" @@ -5487,42 +5557,43 @@ msgstr "Ваши акредитиви за Ласт.фм су нетачни" msgid "Your Magnatune credentials were incorrect" msgstr "Ваши акредитиви за Магнатјун су нетачни" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" -msgstr "Ваша библиотека је празна" +msgstr "Ваша библиотека је празна!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Ваши радио токови" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Ваша скробловања: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Ваш систем не подржава ОпенГЛ, визуелизације нису доступне." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." -msgstr "" +msgstr "Ваше корисничко име или лозинка су нетачни." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Ш-А" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "ништа" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" -msgstr "додај %n песама" +msgstr "додавање %n ставки" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "након" @@ -5542,19 +5613,19 @@ msgstr "аутоматски" msgid "before" msgstr "пре" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "између" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" -msgstr "" +msgstr "прво највеће" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "темпо" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "садржи" @@ -5564,87 +5635,88 @@ msgstr "садржи" msgid "disabled" msgstr "онемогућено" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "диск %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "не садржи" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "завршава са" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "једнак" #: ../bin/src/ui_podcastsettingspage.h:249 msgid "gpodder.net" -msgstr "" +msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" -msgstr "" +msgstr "gpodder.net директоријум" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "већи од" #: ../bin/src/ui_deviceviewcontainer.h:99 msgid "iPods and USB devices currently don't work on Windows. Sorry!" -msgstr "" +msgstr "Ајподи и УСБ уређаји за сада не раде на Виндоузу. Жао нам је!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "последњих" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kb/s" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "мањи од" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" -msgstr "" +msgstr "прво најдуже" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" -msgstr "" +msgstr "померање %n ставки" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" -msgstr "" +msgstr "прво најновије" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "није једнак" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "не у последњих" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "не на дан" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" -msgstr "" +msgstr "прво најстарије" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "на дан" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "Опције" @@ -5654,38 +5726,39 @@ msgstr "или скенирајте кôд испод!" #: widgets/didyoumean.cpp:56 msgid "press enter" -msgstr "pritisni enter" +msgstr "притисните ЕНТЕР" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" -msgstr "уклони %n песама" +msgstr "уклањање %n ставки" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" -msgstr "" +msgstr "прво најкраће" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" -msgstr "" +msgstr "тумбање" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" -msgstr "" +msgstr "прво најмање" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" -msgstr "" +msgstr "сортирање песама" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "почиње са" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "Заустави" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "нумера %1" diff --git a/src/translations/sr@latin.po b/src/translations/sr@latin.po index 5ba47c2d6..eaf84b5b1 100644 --- a/src/translations/sr@latin.po +++ b/src/translations/sr@latin.po @@ -3,12 +3,14 @@ # This file is distributed under the same license as the Clementine package. # # Translators: -# FIRST AUTHOR , 2011 +# daimonion , 2014 +# FIRST AUTHOR , 2010-2011 +# Jovana Savic , 2012 # daimonion , 2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-02-02 00:13+0000\n" +"PO-Revision-Date: 2014-05-11 09:29+0000\n" "Last-Translator: daimonion \n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/clementine/language/sr@latin/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,7 +18,7 @@ msgstr "" "Language: sr@latin\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -41,9 +43,9 @@ msgstr " dana" msgid " kbps" msgstr " kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -56,11 +58,16 @@ msgstr " pt" msgid " seconds" msgstr " sekundi" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " pesama" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 pesama)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albuma" @@ -70,12 +77,12 @@ msgstr "%1 albuma" msgid "%1 days" msgstr "%1 dana" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "pre %1 dana" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 na %2" @@ -85,48 +92,48 @@ msgstr "%1 na %2" msgid "%1 playlists (%2)" msgstr "%1 listi numera (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 izabrano od" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 pesma" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 pesama" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 pesama pronađeno" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 pesama pronađeno (prikazujem %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 numera" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 prebačeno" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 drugih slušalaca" @@ -140,18 +147,21 @@ msgstr "%L1 ukupnih slušanja" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n neuspešno" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n završeno" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n preostalo" @@ -163,24 +173,24 @@ msgstr "&Poravnaj tekst" msgid "&Center" msgstr "¢riraj" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Posebna" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Dodaci" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Pomoć" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Sakrij %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Sakrij..." @@ -188,23 +198,23 @@ msgstr "&Sakrij..." msgid "&Left" msgstr "&levo" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Muzika" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Nijedna" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Lista numera" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Napusti" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Režim ponavljanja" @@ -212,23 +222,23 @@ msgstr "&Režim ponavljanja" msgid "&Right" msgstr "&desno" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&Nasumični režim" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Uklopi kolone u prozor" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Alatke" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(drugačije kroz razne pesme)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "i svima koji su doprineli Amaroku" @@ -248,14 +258,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dan" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 numera" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -265,7 +271,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 nasumičnih pesama" @@ -273,12 +279,6 @@ msgstr "50 nasumičnih pesama" msgid "Upgrade to Premium now" msgstr "Nadogradi na Premijum nalog" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Napravite novi nalog ili resetujte vašu lozinku" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -289,6 +289,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Ako nije štiklirano Klementina će upisivati vaše ocene i i ostalu statistiku samo u odvojenoj bazi podataka i neće menjati vaše fajlove.

Ako je štiklirano, upisivaće statistiku i u bazi podataka i direktno u fajl pri svakoj izmeni.

Imajte na umu da ovo možda neće raditi za svaki format fajla i, kako nema standarda za to, ostali muzički plejeri možda neće umeti da to pročitaju.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Stavite ime polja ispred tražene reči da biste ograničili pretragu samo na to polje, npr. artist:Bora tražiće sve izvođače čije ime sadrži reč „Bora“.

Dostupna polja: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -297,40 +308,40 @@ msgid "" "activated.

" msgstr "

Upis statistike i ocena pesama u oznake fajlova za sve pesme vaše biblioteke.

Nije potrebno ako je postavka „Upiši ocenu/statistiku pesme u oznake kad je to moguće“ uvek bila aktivirana.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" -msgstr "

Tokens start with %, for example: %artist %album %title

\n\n

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" +msgstr "

Pokazivači počinju znakom %, na primer: %artist %album %title

\n\n

Ako deo teksta koji sadrži pokazivače stavite u vitičaste zagrade, taj deo će biti sakriven ako je pokazivač prazan.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." -msgstr "Potreban je Gruvšark Bilokud nalog" +msgstr "Potreban je Gruvšarkov Bilokud nalog." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Potreban je Spotifaj Premijum nalog" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Klijent može da se poveže samo ako je unesen ispravan kôd." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Pametna lista numera je dinamička lista pesama iz vaše biblioteke. Postoje različiti tipovi pametnih lista koji nude različite načine izbora pesama." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Pesma će biti uključena u listu ako zadovoljava ove uslove." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" -msgstr "A-Ž" +msgstr "A-Š" #: ../bin/src/ui_transcodersettingspage.h:179 msgid "AAC" @@ -348,36 +359,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "SLAVA HIPNOŽAPCU" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Prekini" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "O %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "O Klementini..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Više o Kutu..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Detalji o nalogu" @@ -387,13 +397,17 @@ msgstr "Detalji o nalogu (Premijum)" #: ../bin/src/ui_wiimotesettingspage.h:191 msgid "Action" -msgstr "Radnja" +msgstr "radnja" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Uključi/isključi Wii daljinski" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Tok aktivnosti" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Dodaj podkast" @@ -409,39 +423,39 @@ msgstr "Dodaj novu liniju ako je podržano tipom obaveštenja" msgid "Add action" msgstr "Dodaj radnju" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Dodaj drugi tok..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Dodaj fasciklu..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Dodavanje fajla" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Dodaj fajl u prekoder" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Dodaj fajlo(ove) u prekoder" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Dodaj fajl..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Dodavanje fajlova za prekodiranje" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Dodavanje fascikle" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Dodaj fasciklu..." @@ -453,13 +467,13 @@ msgstr "Dodaj novu fasciklu..." msgid "Add podcast" msgstr "Dodavanje podkasta" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Dodaj podkast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" -msgstr "Dodaj pojam za pretragu" +msgstr "Dodaj pojam za traženje" #: ../bin/src/ui_notificationssettingspage.h:380 msgid "Add song album tag" @@ -521,6 +535,10 @@ msgstr "Umetni broj preskoka pesme" msgid "Add song title tag" msgstr "Umetni naslov pesme" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Dodaj pesmu u keš" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Umetni numeru pesme" @@ -529,22 +547,34 @@ msgstr "Umetni numeru pesme" msgid "Add song year tag" msgstr "Umetni godinu pesme" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Dodaj pesmu u „Moju muziku“ kad kliknem na dugme „Volim“" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Dodaj tok..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" -msgstr "Dodaj u Gruvšark omiljene" +msgstr "Dodaj u Gruvšarkove omiljene" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" -msgstr "Dodaj u Gruvšark plejliste" +msgstr "Dodaj u Gruvšarkove liste numera" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Dodaj u Moju muziku" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Dodaj u drugu listu" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Dodaj u obeleživače" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Dodaj u listu numera" @@ -553,6 +583,10 @@ msgstr "Dodaj u listu numera" msgid "Add to the queue" msgstr "stavi u red" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Dodaj korisnika/grupu u obeleživače" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Dodaj wiimotedev radnju" @@ -567,7 +601,7 @@ msgstr "dodato ovog meseca" #: ../bin/src/ui_libraryfilterwidget.h:89 msgid "Added this week" -msgstr "dodato ove nedelje" +msgstr "dodato ove sedmice" #: ../bin/src/ui_libraryfilterwidget.h:94 msgid "Added this year" @@ -582,15 +616,15 @@ msgstr "dodato danas" msgid "Added within three months" msgstr "dodato u poslednja tri meseca" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" -msgstr "" +msgstr "Dodavanje pesme u Moju muziku" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" -msgstr "" +msgstr "Dodavanje pesme u omiljene" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Napredno grupisanje..." @@ -598,12 +632,12 @@ msgstr "Napredno grupisanje..." msgid "After " msgstr "nakon " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Nakon kopiranja:" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -611,11 +645,11 @@ msgstr "Nakon kopiranja:" msgid "Album" msgstr "album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "album (idealna jačina za sve pesme)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -625,35 +659,36 @@ msgstr "izvođač albuma" msgid "Album cover" msgstr "Omot albuma" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." -msgstr "Podaci albuma sa jamendo.com..." +msgstr "Podaci albuma sa Džamenda..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Albumi sa omotima" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Albumi bez omota" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Svi fajlovi (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Slava Hipnožapcu!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Svi albumi" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Svi izvođači" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Svi fajlovi" @@ -662,19 +697,19 @@ msgstr "Svi fajlovi" msgid "All playlists (%1)" msgstr "Sve liste numera (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "svim prevodiocima" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Sve numere" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Dozvoli klijentu da preuzima muziku sa ovog računara." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Dozvoli preuzimanja" @@ -699,30 +734,30 @@ msgstr "uvek prikaži glavni prozor" msgid "Always start playing" msgstr "uvek će početi puštanje" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Potreban je dodatni priključak za korišćenje Spotifaja u Klementini. Želite li da ga preuzmete i instalirate sada?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" -msgstr "Došlo je do greške usled učitavanja baze podataka iTunes" +msgstr "Došlo je do greške učitavanja baze podataka Ajtjunsa" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" -msgstr "Došlo je do greške usled pisanja metapodataka na '%1'" +msgstr "Došlo je do greške upisa metapodataka na „%1“" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." -msgstr "" +msgstr "Došlo je do neodređene greške." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "I:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "ljutit" @@ -731,66 +766,61 @@ msgstr "ljutit" msgid "Appearance" msgstr "Izgled" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Dodaj numere/URL tokove u listu numera" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" -msgstr "Dodaj u trenutnu listu numera" +msgstr "Dodaj u tekuću listu numera" #: ../bin/src/ui_behavioursettingspage.h:217 msgid "Append to the playlist" msgstr "doda u listu numera" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Primeni kompresiju kako bi se sprečilo odsecanje" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Želite li zaista da obrišete prepostavku „%1“?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Želite li zaista da obrišete ovu listu numera?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Želite li zaista da poništite statistiku ove pesme?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Želite li zaista da upišete statistiku pesme u fajl pesme za sve pesme iz vaše biblioteke?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "izvođač" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Podaci o izvođaču" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Radio izvođača" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Oznake izvođača" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "inicijali izvođača" @@ -798,9 +828,13 @@ msgstr "inicijali izvođača" msgid "Audio format" msgstr "Format zvuka" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Izlaz zvuka" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Autentifikacija nije uspela" @@ -808,7 +842,7 @@ msgstr "Autentifikacija nije uspela" msgid "Author" msgstr "Autor" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Autori" @@ -824,7 +858,7 @@ msgstr "Automatsko ažuriranje" msgid "Automatically open single categories in the library tree" msgstr "Automatski otvori pojedinačne kategorije u stablu biblioteke" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Dostupno" @@ -832,15 +866,15 @@ msgstr "Dostupno" msgid "Average bitrate" msgstr "Prosečni bitski protok" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Prosečna veličina slike" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC-ijevi podkasti" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "tempo" @@ -861,7 +895,7 @@ msgstr "Slika pozadine" msgid "Background opacity" msgstr "Neprozirnost pozadine" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Bekapujem bazu podataka" @@ -869,11 +903,7 @@ msgstr "Bekapujem bazu podataka" msgid "Balance" msgstr "Ravnoteža" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Zabrani" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Trakasti analizator" @@ -893,18 +923,17 @@ msgstr "Ponašanje" msgid "Best" msgstr "najbolji" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografija sa %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "bitski protok" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -912,7 +941,12 @@ msgstr "bitski protok" msgid "Bitrate" msgstr "Bitski protok" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "bitski protok" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blok analizator" @@ -928,7 +962,7 @@ msgstr "Zamućenje" msgid "Body" msgstr "Telo" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Bum analizator" @@ -942,11 +976,11 @@ msgstr "Boks" msgid "Browse..." msgstr "Pregledaj..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Veličina bafera" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Baferujem" @@ -956,63 +990,90 @@ msgstr "ali ovi izvori su onemogućeni:" #: ../bin/src/ui_wiimotesettingspage.h:192 msgid "Buttons" -msgstr "Dugmad" +msgstr "dugmad" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Podrazumevano, Gruvšark ređa pesme po datumu dodavanja" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Podrška za CUE list" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Putanja keša:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Keširanje" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Keširam %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Odustani" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Potreban je kepča kôd.\nDa biste popravili problem pokušajte da se prijavite na Vk.com u vašem pregledaču." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Promeni sliku omota" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Promeni veličinu fonta..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" -msgstr "Promeni ponavljanje" +msgstr "Ponavljanje" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Izmeni prečicu..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" -msgstr "Promeni nasumičnost" +msgstr "Nasumičnost" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Promeni jezik" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" -msgstr "" +msgstr "Izmena će biti aktivna za nastupajuće pesme" #: ../bin/src/ui_podcastsettingspage.h:228 msgid "Check for new episodes" msgstr "Traži nove epizode" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Potraži nadogradnje..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Izbor fascikle keša za Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Izaberite ime za vašu pametnu listu" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Izaberi automatski" @@ -1028,11 +1089,11 @@ msgstr "Izaberi font..." msgid "Choose from the list" msgstr "izbor sa spiska" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Odredite sortiranje liste numera i koliko pesama će da sadrži." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Izbor fascikle preuzimanja za podkast" @@ -1041,7 +1102,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Izaberite sajtove koje želite da Klementina koristi pri traženju stihova." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "klasična" @@ -1049,17 +1110,17 @@ msgstr "klasična" msgid "Cleaning up" msgstr "Čišćenje" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Očisti" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Očisti listu numera" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Klementina" @@ -1072,8 +1133,8 @@ msgstr "Greška Klementine" msgid "Clementine Orange" msgstr "Klementina narandžasta" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Vizuelizacija Klementine" @@ -1095,9 +1156,9 @@ msgstr "Klementina može da pušta muziku koju ste učitali na Dropboks" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Klementina može da pušta muziku koju ste učitali na Gugl Drajv" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Klementina može da pušta muziku koju ste učitali na Ubuntu 1" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Klementina može da pušta muziku koju ste učitali na VanDrajv" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1108,22 +1169,15 @@ msgid "" "Clementine can synchronize your subscription list with your other computers " "and podcast applications. Create " "an account." -msgstr "" +msgstr "Klementina može da sinhronizuje vaše pretplatničke liste sa ostalim vašim računarima i aplikacijama podkasta. Napravite nalog." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Klementina ne može da učita nijednu projektM vizuelizaciju. Proverite da li ste ispravno instalirali Klementinu." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Klementina nije mogla da dobavi vaš pretplatnički status zbog problema sa vezom. Puštene numere će biti keširane i kasnije poslate na Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Klemetinin pregledač slika" @@ -1135,26 +1189,29 @@ msgstr "Klementina nije mogla da nađe rezultate za ovaj fajl" msgid "Clementine will find music in:" msgstr "Klementina će tražiti muziku u:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Kliknite ovde da dodate muziku" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" -msgstr "Kliknite ovde da stavite ovu listu numera u omiljene da bi bila sačuvana i pristupačna preko „Liste numera“ panela na bočnoj traci s leva" +msgstr "Kliknite ovde da stavite ovu listu numera u omiljene kako bi bila sačuvana i pristupačna preko panela „Liste numera“ na levoj bočnoj traci" #: ../bin/src/ui_trackslider.h:72 msgid "Click to toggle between remaining time and total time" msgstr "Kliknite da promenite prikaz preostalog/ukupnog vremena" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." -msgstr "" +msgstr "Klikom na dugme prijave otvorićete veb pregledač. Vratite se na Klementinu pošto se prijavite." #: widgets/didyoumean.cpp:37 msgid "Close" @@ -1164,19 +1221,19 @@ msgstr "Zatvori" msgid "Close playlist" msgstr "Zatvori listu numera" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Zatvori vizuelizaciju" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." -msgstr "Zatvaranje ovog prozora prekinuće preuzimanje." +msgstr "Zatvaranjem ovog prozora prekinućete preuzimanje." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." -msgstr "Zatvaranje ovog prozora prekinuće potragu za omotima albuma." +msgstr "Zatvaranjem ovog prozora prekinućete potragu za omotima albuma." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "klub" @@ -1184,73 +1241,78 @@ msgstr "klub" msgid "Colors" msgstr "Boje" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" -msgstr "Zarez razdvaja listu od klasa:nivo, nivo je 0-3" +msgstr "Zarez razdvaja listu od klasa: nivo, nivo je 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "komentar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Društveni radio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Popuni oznake automatski" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Popuni oznake automatski..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "kompozitor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Podesi %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Podesi Gruvšark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Podesi Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Podesi Magnatjun..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Postavke prečica" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Podesi Spotifaj..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Podesi Subsonik..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 -msgid "Configure global search..." -msgstr "Podesi globalnu pretragu..." +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Podesi Vk.com..." -#: ui/mainwindow.cpp:483 +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 +msgid "Configure global search..." +msgstr "Podesi opštu pretragu..." + +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Podesi biblioteku..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Podesi podkaste..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Podesi..." @@ -1258,11 +1320,11 @@ msgstr "Podesi..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Poveži Wii daljinske koristeći radnje uključeno/isključeno" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Poveži uređaj" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Poveži se na Spotifaj" @@ -1270,14 +1332,18 @@ msgstr "Poveži se na Spotifaj" msgid "" "Connection refused by server, check server URL. Example: " "http://localhost:4040/" -msgstr "" +msgstr "Server je odbio vezu, proverite URL. Primer: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" -msgstr "" +msgstr "Prekovreme isteklo, proverite URL servera. Primer: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Problem sa povezivanjem ili je vlasnik onemogućio zvuk" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konzola" @@ -1291,176 +1357,176 @@ msgstr "Pretvori svu muziku" #: ../bin/src/ui_deviceproperties.h:378 msgid "Convert any music that the device can't play" -msgstr "Pretvori svu muziku koju uređaj ne može da pusti." +msgstr "Pretvori svu muziku koju uređaj ne može da pusti" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Kopiraj URL deljenja na klipbord" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiraj na klipbord" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopiraj na uređaj...." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopiraj u biblioteku..." #: ../bin/src/ui_podcastinfowidget.h:194 msgid "Copyright" -msgstr "" +msgstr "Autorska prava" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" -msgstr "" +msgstr "Ne mogu da se povežem na Subsonik, proverite URL servera. Primer: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Ne mogu da napravim Gstrimer element „%1“ - proverite da li su instalirani svi potrebni Gstrimer priključci" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Ne mogu da napravim listu numera" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Ne mogu da nađem mukser za %1, proverite da li imate instalirane potrebne priključke za Gstrimer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Ne mogu da nađem koder za %1, proverite da li imate instalirane potrebne priključke za Gstrimer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Ne mogu da učitam last.fm radio stanicu" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Ne mogu da otvorim izlazni fajl %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Menadžer omota" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Omot iz ugrađene slike" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Omot automatski učitan iz %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Omot ručno uklonjen" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Omot nije postavljen" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Omot postavljen iz %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Omoti sa %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" -msgstr "Napravi novu Gruvšark listu numera" +msgstr "Napravi novu Gruvšarkovu listu numera" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Pretapanje pri automatskoj izmeni numera" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Pretapanje pri ručnoj izmeni numera" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1468,7 +1534,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "posebno" @@ -1480,61 +1546,62 @@ msgstr "Posebna slika:" msgid "Custom message settings" msgstr "Postavke posebne poruke" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Posebni radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "posebna..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Dbus putanja" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "dens" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" -msgstr "" +msgstr "Otkriveno oštećenje baze podataka. Pogledajte https://code.google.com/p/clementine-player/wiki/DatabaseCorruption za uputstva kako da povratite vašu bazu podataka" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "napravljen" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "izmenjen" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "dana" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Pod&razumevana" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Utišaj zvuk za 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" -msgstr "Utišaj zvuk za procenata" +msgstr "Smanji jačinu zvuka za procenata" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" -msgstr "Utišaj zvuk" +msgstr "Smanji jačinu zvuka" #: ../bin/src/ui_appearancesettingspage.h:280 msgid "Default background image" msgstr "Podrazumevana" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Podrazumevani uređaj na %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Podrazumevano" @@ -1543,30 +1610,30 @@ msgstr "Podrazumevano" msgid "Delay between visualizations" msgstr "Zastoj između vizuelizacija" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Obriši" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" -msgstr "Obriši Gruvšark listu numera" +msgstr "Obriši Gruvšarkovu listu numera" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Obriši preuzete podatke" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Brisanje fajlova" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Obriši sa uređaja..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Obriši sa diska..." @@ -1574,31 +1641,31 @@ msgstr "Obriši sa diska..." msgid "Delete played episodes" msgstr "Obriši puštene epizode" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Obriši prepostavku" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Obriši pametnu listu" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "obriši originalne fajlove" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Brišem fajlove" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" -msgstr "Izbaci označene numere iz reda" +msgstr "Izbaci izabrane numere iz reda" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Izbaci numeru iz reda" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Odredište" @@ -1607,7 +1674,7 @@ msgstr "Odredište" msgid "Details..." msgstr "Detalji..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Uređaj" @@ -1619,15 +1686,15 @@ msgstr "Svojstva uređaja" msgid "Device name" msgstr "Ime uređaja" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Svojstva uređaja..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Uređaji" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Dijalog" @@ -1664,12 +1731,17 @@ msgstr "Onemogući trajanje" msgid "Disable moodbar generation" msgstr "Isključi stvaranje raspoloženja" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Onemogućeno" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Onemogućen" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "disk" @@ -1679,15 +1751,15 @@ msgid "Discontinuous transmission" msgstr "Isprekidan prenos" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Opcije prikaza" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Prikaži ekranski pregled" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Ponovo skeniraj biblioteku" @@ -1699,27 +1771,27 @@ msgstr "Ne pretvaraj muziku" msgid "Do not overwrite" msgstr "Ne prebrisuj" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Ne ponavljaj" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Ne prikazuj u raznim izvođačima" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Ne puštaj nasumično" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Ne zaustavljaj!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Doniraj" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Kliknite dvaput da otvorite" @@ -1727,12 +1799,13 @@ msgstr "Kliknite dvaput da otvorite" msgid "Double clicking a song will..." msgstr "Dvoklik na pesmu će da je..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Preuzmi %n epizoda" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Fascikla za preuzimanje" @@ -1748,23 +1821,23 @@ msgstr "preuzimanja sadržaja" msgid "Download new episodes automatically" msgstr "Preuzimaj nove epizode automatski" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" -msgstr "" +msgstr "Preuzimanje je na čekanju" #: ../bin/src/ui_networkremotesettingspage.h:202 msgid "Download the Android app" msgstr "Preuzmite aplikaciju za Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Preuzmi ovaj album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Preuzmi ovaj album..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Preuzmi ovu epizodu" @@ -1772,7 +1845,7 @@ msgstr "Preuzmi ovu epizodu" msgid "Download..." msgstr "Preuzmi..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Preuzimam (%1%)..." @@ -1781,25 +1854,25 @@ msgstr "Preuzimam (%1%)..." msgid "Downloading Icecast directory" msgstr "Preuzimam Ajskast direktorijum" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Preuzimam Džamendov katalog" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Preuzimam Magnatjunov katalog" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Preuzimam Spotifaj priključak" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Preuzimam metapodatke" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" -msgstr "Odvucite ga gde želite" +msgstr "Prevlačite da biste menjali položaj" #: ../bin/src/ui_dropboxsettingspage.h:103 msgid "Dropbox" @@ -1817,20 +1890,20 @@ msgstr "Trajanje" msgid "Dynamic mode is on" msgstr "Dinamički režim je uključen" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dinamički nasumični miks" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Uredi pametnu listu..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Uredi oznaku „%1“..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Uredi oznaku..." @@ -1842,22 +1915,26 @@ msgstr "Uredi oznake" msgid "Edit track information" msgstr "Uređivanje podataka numere" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Uredi podatke numere..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Uredi podatke numera.." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Uredi..." #: ../bin/src/ui_wiimotesettingspage.h:183 msgid "Enable Wii Remote support" -msgstr "Omogući Wii Remote podršku" +msgstr "Omogući podršku za Wii daljinski" + +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Automatsko keširanje" #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" @@ -1871,11 +1948,11 @@ msgstr "Omogući prečice samo kad je Klementina u fokusu" msgid "" "Enable sources below to include them in search results. Results will be " "displayed in this order." -msgstr "" +msgstr "Omogućite izvore prikazane ispod da biste ih uključili u pretragu. Rezultati će biti prikazani ovim redim." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" -msgstr "" +msgstr "Last.fm skroblovanje" #: ../bin/src/ui_transcoderoptionsspeex.h:235 msgid "Encoding complexity" @@ -1899,17 +1976,12 @@ msgstr "Unesite URL za preuzimanje omota sa interneta:" #: ../bin/src/ui_albumcoverexport.h:205 msgid "Enter a filename for exported covers (no extension):" -msgstr "" +msgstr "Unesite ime za izvezene omote (bez nastavka):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Unesite novo ime za ovu listu numera" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Unesite izvođača ili oznaku da počnete da slušate Last.fm radio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1917,48 +1989,49 @@ msgstr "Unesite pojmove za traženje iznad da biste pronašli muziku na vašem r #: ../bin/src/ui_itunessearchpage.h:77 msgid "Enter search terms below to find podcasts in the iTunes Store" -msgstr "" +msgstr "Unesite pojam za traženje ispod da biste našli podkaste u Ajtjuns prodavnici" #: ../bin/src/ui_gpoddersearchpage.h:77 msgid "Enter search terms below to find podcasts on gpodder.net" -msgstr "" +msgstr "Unesite pojam za traženje ispod da biste našli podkaste na gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" -msgstr "Unesite izraz za pretragu" +msgstr "Unesite pojam za traženje ovde" #: ../bin/src/ui_addstreamdialog.h:114 msgid "Enter the URL of an internet radio stream:" -msgstr "Unesi URL internet radio tok" +msgstr "Unesite URL toka internet radija:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Unesite ime fascikle" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." -msgstr "" +msgstr "Unesite ovaj IP u aplikaciju da biste je povezali sa Klementinom." #: ../bin/src/ui_libraryfilterwidget.h:87 msgid "Entire collection" msgstr "čitavu kolekciju" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekvilajzer" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" -msgstr "" +msgstr "Isto kao i --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" -msgstr "" +msgstr "Isto kao i --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Greška" @@ -1966,38 +2039,38 @@ msgstr "Greška" msgid "Error connecting MTP device" msgstr "Greška povezivanja MTP uređaja" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Greška kopiranja pesama" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Greška brisanja pesama" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Greška preuzimanja Spotifaj priključka" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Greška učitavanja %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Greška učitavanja di.fm liste numera" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Greška obrade %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Greška prilikom učitavanja audio CD-a" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Već puštano" @@ -2029,7 +2102,7 @@ msgstr "svakih 6 sati" msgid "Every hour" msgstr "svakog sata" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Osim između numera na istom albumu ili na istom CUE listu" @@ -2039,9 +2112,9 @@ msgstr "Postojeći omoti" #: ../bin/src/ui_dynamicplaylistcontrols.h:111 msgid "Expand" -msgstr "Raširi" +msgstr "Proširi" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Ističe %1" @@ -2062,36 +2135,36 @@ msgstr "Izvezi preuzete omote" msgid "Export embedded covers" msgstr "Izvezi ugrađene omote" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Izvoz završen" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Izvezeno %1 omota od %2 (%3 preskočeno)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2101,42 +2174,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Utapaj pri pauzi/nastavljanju" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Utapaj numeru pri zaustavljanju" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Utapanje" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Trajanje pretapanja" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Neuspeh čitanja CD uređaja" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Neuspeh dobavljanja direktorijuma" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Neuspeh dobavljanja podkasta" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Neuspeh učitavanja podkasta" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Neuspeh raščlanjivanja IksML-a za ovaj RSS dovod" @@ -2145,11 +2218,11 @@ msgstr "Neuspeh raščlanjivanja IksML-a za ovaj RSS dovod" msgid "Fast" msgstr "brz" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Omiljene" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Omiljene numere" @@ -2165,11 +2238,11 @@ msgstr "Dobavi automatski" msgid "Fetch completed" msgstr "Dobavljanje završeno" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Dobavljam Subsonikovu biblioteku" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Greška dobavljanja omota" @@ -2177,7 +2250,7 @@ msgstr "Greška dobavljanja omota" msgid "File Format" msgstr "Format fajla" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "nastavak fajla" @@ -2185,19 +2258,23 @@ msgstr "nastavak fajla" msgid "File formats" msgstr "Formati fajlova" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "ime fajla" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "ime fajla (bez putanje)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Šablon imena fajla:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "veličina fajla" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2207,7 +2284,7 @@ msgstr "tip fajla" msgid "Filename" msgstr "ime fajla" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fajlovi" @@ -2215,15 +2292,19 @@ msgstr "Fajlovi" msgid "Files to transcode" msgstr "Fajlovi za prekodiranje" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Pronađite pesme u biblioteci koje odgovaraju određenom kriterijumu." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Pronađi ovog izvođača" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Identifikujem pesmu" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Završi" @@ -2231,7 +2312,7 @@ msgstr "Završi" msgid "First level" msgstr "Prvi nivo" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2241,18 +2322,18 @@ msgstr "Veličina fonta" #: ../bin/src/ui_spotifysettingspage.h:213 msgid "For licensing reasons Spotify support is in a separate plugin." -msgstr "Zbog licenciranig razloga Spotify podrška je na posebnom dodatku." +msgstr "Iz razloga licenciranja podrška za Spotifaj je u odvojenom priključku." #: ../bin/src/ui_transcoderoptionsmp3.h:204 msgid "Force mono encoding" msgstr "Prisili mono kodiranje" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Zaboravi uređaj" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2267,7 +2348,7 @@ msgstr "Zaboravljanjem uređaja uklonićete ga sa spiska i Klementina će morati #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2295,31 +2376,23 @@ msgstr "Broj kadrova" msgid "Frames per buffer" msgstr "Sličica po baferu" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Prijatelji" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "zaleđen" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "puni bas" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "puni bas + sopran" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "puni sopran" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Gstrimer zvučni motor" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Opšte" @@ -2327,30 +2400,30 @@ msgstr "Opšte" msgid "General settings" msgstr "Opšte postavke" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "žanr" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" -msgstr "" +msgstr "Nabavi URL za deljenje ove Gruvšarkove liste numera" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" -msgstr "" +msgstr "Nabavi URL za delenje ove Gruvšarkove pesme" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" -msgstr "" +msgstr "Dobavljam popularne pesme na Gruvšarku" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Dobavljam kanale" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Dobavljam tokove" @@ -2362,11 +2435,11 @@ msgstr "Dajte joj ime:" msgid "Go" msgstr "Idi" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Idi na sledeći jezičak liste" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Idi na prethodni jezičak liste" @@ -2374,7 +2447,7 @@ msgstr "Idi na prethodni jezičak liste" msgid "Google Drive" msgstr "Gugl Drajv" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2384,7 +2457,7 @@ msgstr "Dobavljeno %1 omota od %2 (%3 neuspešno)" msgid "Grey out non existent songs in my playlists" msgstr "Posivi nepostojeće pesme u listi numera" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Gruvšark" @@ -2392,69 +2465,69 @@ msgstr "Gruvšark" msgid "Grooveshark login error" msgstr "Greška prijave na Gruvšark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" -msgstr "URL liste numera Gruvšarka" +msgstr "URL Gruvšarkove liste numera" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" -msgstr "Gruvšark radio" +msgstr "Gruvšarkov radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" -msgstr "URL pesme Gruvšarka" +msgstr "URL Gruvšarkove pesme" #: ../bin/src/ui_groupbydialog.h:124 msgid "Group Library by..." msgstr "Grupisanje biblioteke" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupisanje" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "izvođač" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "izvođač/album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "izvođač/godina — album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "žanr/album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "žanr/izvođač/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "grupisanje" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML stranica ne sadrži nijedan RSS dovod" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." -msgstr "" +msgstr "Primljen HTTP 3xx kôd bez URL-a, proverite postavke servera." #: ../bin/src/ui_networkproxysettingspage.h:163 msgid "HTTP proxy" msgstr "HTTP proksi" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "srećan" @@ -2464,31 +2537,31 @@ msgstr "Podaci o hardveru" #: ../bin/src/ui_deviceproperties.h:372 msgid "Hardware information is only available while the device is connected." -msgstr "Podaci o hardveru su dostupni samo dok je uređaj povezan" +msgstr "Podaci o hardveru su dostupni samo dok je uređaj povezan." #: ../bin/src/ui_transcoderoptionsmp3.h:202 msgid "High" msgstr "visok" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "visok (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "visok (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Domaćin nije nađen, proverite URL servera. Primer: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "sati" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hipnožabac" @@ -2500,15 +2573,15 @@ msgstr "nemam nalog na Magnatjunu" msgid "Icon" msgstr "Ikona" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikone na vrhu" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identifikujem pesmu" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2518,27 +2591,27 @@ msgstr "Ako nastavite, ovaj uređaj će raditi sporo a pesme kopirane na njega m msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Ako znate URL podkasta, unesite ga ispod i kliknite na „Idi“." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Igonoriši „The“ u imenu izvođača" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Slike (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" -msgstr "" +msgstr "za %1 dana" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" -msgstr "" +msgstr "za %1 sedmica" #: ../bin/src/ui_wizardfinishpage.h:86 msgid "" @@ -2546,7 +2619,7 @@ msgid "" "time a song finishes." msgstr "U dinamičkom režimu nove numere će biti izabrane i dodate na listu svaki put kad se pesma završi." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Sanduče" @@ -2558,36 +2631,36 @@ msgstr "Uključi omote albuma u obaveštenja" msgid "Include all songs" msgstr "Uključi sve pesme" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." -msgstr "" +msgstr "Neodgovarajuće izdanje Subsonikovog REST protokola. Klijent treba nadogradnju." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." -msgstr "" +msgstr "Neodgovarajuće izdanje Subsonikovog REST protokola. Server treba nadogradnju." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." -msgstr "" +msgstr "Nepotpuno podešavanje, ispunite sva polja." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Pojačaj zvuk za 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" -msgstr "Pojačaj zvuk za procenata" +msgstr "Povećaj jačinu zvuka za procenata" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" -msgstr "Pojačaj zvuk" +msgstr "Povećaj jačinu zvuka" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indeksiram %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Podaci" @@ -2595,55 +2668,55 @@ msgstr "Podaci" msgid "Input options" msgstr "Opcije ulaza" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Umetni..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" -msgstr "Instaliran" +msgstr "instaliran" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Provera integriteta" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internet servisi" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" -msgstr "Neispravan API ključ" +msgstr "Nevažeći API ključ" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Neispravan format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Neispravan način" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Neispravni parametri" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Naveden neispravan resurs" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" -msgstr "Nevažeći servis" +msgstr "Neispravan servis" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Nevažeći ključ sesije" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Neispravno korisničko ime i/ili lozinka" @@ -2651,55 +2724,56 @@ msgstr "Neispravno korisničko ime i/ili lozinka" msgid "Invert Selection" msgstr "Obrni izbor" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Džamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" -msgstr "Džamendo najslušanije numere" +msgstr "Džamendove najslušanije numere" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" -msgstr "Džamendo najbolje numere" +msgstr "Džamendove najbolje numere" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" -msgstr "Džamendo najbolje numere ovog meseca" +msgstr "Džamendove najbolje numere ovog meseca" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" -msgstr "Džamendo najbolje numere ove sedmice" +msgstr "Džamendove najbolje numere ove sedmice" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" -msgstr "Džamendo baza podataka" +msgstr "Džamendova baza podataka" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" -msgstr "Skoči na trenutno puštenu numeru" +msgstr "Skoči na tekuću numeru" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." -msgstr "" +msgstr "Držite tastere %1 sekundu..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." -msgstr "" +msgstr "Držite tastere %1 sekundi..." #: ../bin/src/ui_behavioursettingspage.h:193 msgid "Keep running in the background when the window is closed" msgstr "Nastavi rad u pozadini kad se prozor zatvori" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "zadrži originalne fajlove" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Mačići" @@ -2707,11 +2781,11 @@ msgstr "Mačići" msgid "Language" msgstr "Jezik" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "laptop/slušalice" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "velika dvorana" @@ -2719,58 +2793,24 @@ msgstr "velika dvorana" msgid "Large album cover" msgstr "Veliki omot" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Široka traka" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" -msgstr "poslednji put puštana" +msgstr "Poslednji put puštano" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "poslednji put puštena" #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm biblioteka - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm komšijski radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm radio stanica - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm slični Izvođači sa %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm je trenutno zauzet, pokušajte ponovo za nekoliko minuta" @@ -2778,11 +2818,11 @@ msgstr "Last.fm je trenutno zauzet, pokušajte ponovo za nekoliko minuta" msgid "Last.fm password" msgstr "Lozinka" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm broj puštanja" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm oznake" @@ -2790,28 +2830,24 @@ msgstr "Last.fm oznake" msgid "Last.fm username" msgstr "Korisničko ime" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm viki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Najmanje omiljene numere" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Ostavite prazno za podrazmevano. Primeri: „/dev/dsp“, „front“, itd." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Levo" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "dužina" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Biblioteka" @@ -2819,24 +2855,24 @@ msgstr "Biblioteka" msgid "Library advanced grouping" msgstr "Napredno grupisanje biblioteke" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Obaveštenje o ponovnom skeniranju biblioteke" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Pretraživanje biblioteke" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Ograničenja" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" -msgstr "" +msgstr "Slušajte pesme sa Gruvšarka birane na osnovu ranije preslušanih" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "uživo" @@ -2846,17 +2882,17 @@ msgstr "Učitaj" #: ../bin/src/ui_coverfromurldialog.h:102 msgid "Load cover from URL" -msgstr "Učitavanje omot sa URL-a" +msgstr "Učitavanje omota sa URL-a" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Učitaj omot sa URL-a..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Učitavanje omota sa diska" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Učitaj omot sa diska..." @@ -2864,84 +2900,89 @@ msgstr "Učitaj omot sa diska..." msgid "Load playlist" msgstr "Učitavanje liste numera" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Učitaj listu numera..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Učitavam Last.fm radio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Učitavam MTP uređaj" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Učitavam Ajpodovu bazu podataka" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Učitavam pametnu listu" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Učitavam pesme" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Učitavam tok" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Učitavam numere" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" -msgstr "Učitavam podatke numera" +msgstr "Učitavam podatke o numerama" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Učitavam..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" -msgstr "Učitava datoteke/URL-ove, zamenjujući trenutnu listu" +msgstr "Učitava datoteke/URL-ove, zamenjujući tekuću listu" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Prijava" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Prijava nije uspela" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Odjava" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "dugoročno predviđanje (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" -msgstr "Voli" +msgstr "Volim" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "nizak (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "nizak (256X256)" @@ -2953,12 +2994,17 @@ msgstr "niska kompleksnost (LC)" msgid "Lyrics" msgstr "Stihovi" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Stihovi sa %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2970,15 +3016,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatjun" @@ -2986,7 +3032,7 @@ msgstr "Magnatjun" msgid "Magnatune Download" msgstr "Preuzimanje sa Magnatjuna" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Završeno preuzimanje sa Magnatjuna" @@ -2994,15 +3040,20 @@ msgstr "Završeno preuzimanje sa Magnatjuna" msgid "Main profile (MAIN)" msgstr "glavni profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Enterprajz!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Enterprajz!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Napravi listu dostupnu van mreže" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Loš odgovor" @@ -3015,37 +3066,41 @@ msgstr "Ručno podešavanje proksija" msgid "Manually" msgstr "ručno" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Proizvođač" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Označi kao preslušano" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Označi kao novo" #: ../bin/src/ui_querysearchpage.h:116 msgid "Match every search term (AND)" -msgstr "Uporedi svaki traženi termin (AND)" +msgstr "Uporedi svaki traženi pojam (AND)" #: ../bin/src/ui_querysearchpage.h:117 msgid "Match one or more search terms (OR)" -msgstr "Uporedi jedan ili više traženih termina (OR)" +msgstr "Uporedi jedan ili više traženih pojmova (OR)" + +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Najviše rezultata opšte pretrage" #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Najveći bitski protok" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "srednji (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "srednji (512X512)" @@ -3057,11 +3112,15 @@ msgstr "Tip članstva" msgid "Minimum bitrate" msgstr "Najmanji bitski protok" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Najmanji ispun bafera" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Nedostaju prepostavke za projektM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3069,20 +3128,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Nadgledaj izmene u biblioteci" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono reprodukcija" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "meseci" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "raspoloženje" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Stil raspoloženja" @@ -3090,15 +3149,19 @@ msgstr "Stil raspoloženja" msgid "Moodbars" msgstr "Raspoloženja" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Još" + +#: library/library.cpp:84 msgid "Most played" msgstr "Najčešće puštano" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" -msgstr "Tačka povezivanja" +msgstr "Tačka montiranja" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Tačke montiranja" @@ -3107,7 +3170,7 @@ msgstr "Tačke montiranja" msgid "Move down" msgstr "Pomeri dole" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Premesti u biblioteku" @@ -3116,7 +3179,7 @@ msgstr "Premesti u biblioteku" msgid "Move up" msgstr "Pomeri gore" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Muzika" @@ -3124,56 +3187,32 @@ msgstr "Muzika" msgid "Music Library" msgstr "Muzička biblioteka" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Utišaj" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Moja Last.fm biblioteka" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Moj birani radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Moja muzika" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Moj komšiluk" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Moja radio stanica" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Moje preporuke" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Ime" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "ime" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Opcije imenovanja" @@ -3181,23 +3220,19 @@ msgstr "Opcije imenovanja" msgid "Narrow band (NB)" msgstr "uski opseg (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Komšije" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Mrežni proksi" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Mrežni daljinski" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Nikad" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Nikad puštano" @@ -3206,46 +3241,46 @@ msgstr "Nikad puštano" msgid "Never start playing" msgstr "neće početi puštanje" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Nova fascikla" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Nova lista numera" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Nova pametna lista" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nove pesme" #: ../bin/src/ui_dynamicplaylistcontrols.h:110 msgid "New tracks will be added automatically." -msgstr "Nove numere će biti automatski dodate" +msgstr "Nove numere će biti automatski dodate." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Najnovije numere" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Sledeća" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Sledeća numera" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" -msgstr "" +msgstr "sledeće sedmice" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Bez analizatora" @@ -3253,7 +3288,7 @@ msgstr "Bez analizatora" msgid "No background image" msgstr "Bez slike pozadine" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Nema omota za izvoz." @@ -3261,7 +3296,7 @@ msgstr "Nema omota za izvoz." msgid "No long blocks" msgstr "bez dugih blokova" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Nema poklapanja. Očistite polje pretrage da biste prikazali celu listu ponovo." @@ -3275,11 +3310,11 @@ msgstr "bez kratkih blokova" msgid "None" msgstr "ništa" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Nijedna od izabranih pesama nije pogodna za kopiranje na uređaj" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "normalan" @@ -3287,42 +3322,46 @@ msgstr "normalan" msgid "Normal block type" msgstr "normalni tip bloka" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Nije dostupno dok se koristi promenjiva lista" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Nepovezan" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Nema dovoljno sadržaja" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" -msgstr "Nema dovoljno fanova" +msgstr "Nema dovoljno obožavalaca" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Nema dovoljno članova" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Nema dovoljno komšija" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" -msgstr "Nije ugrađen" +msgstr "nije instaliran" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Niste prijavljeni" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" -msgstr "Nije" +msgstr "Nije montiran — kliknite dvaput da montirate" + +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Ništa nije nađeno" #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" @@ -3334,38 +3373,43 @@ msgstr "Obaveštenja" #: ui/macsystemtrayicon.mm:64 msgid "Now Playing" -msgstr "Trenutno pušta" +msgstr "Sada puštam" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD pregled" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" -msgstr "" +msgstr "isključeno" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "OGG FLAC" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "OGG Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" -msgstr "OGG Spiks" +msgstr "OGG Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "OGG Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" -msgstr "" +msgstr "uključeno" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "Van Drajv" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3373,11 +3417,11 @@ msgid "" "192.168.x.x" msgstr "Prihvataj veze samo od klijenata unutar ovog raspona ip adresa:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Dozvoli samo veze sa lokalne mreže" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Prikaži samo početnih" @@ -3385,23 +3429,23 @@ msgstr "Prikaži samo početnih" msgid "Opacity" msgstr "Prozirnost" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Otvori %1 u pregledaču" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Otvori &audio CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" -msgstr "Otvori OPML fajl" +msgstr "Otvaranje OPML fajla" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Otvori OPML fajl..." @@ -3409,30 +3453,35 @@ msgstr "Otvori OPML fajl..." msgid "Open device" msgstr "Otvori uređaj" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Otvori fajl..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Otvori u Gugl Drajvu" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Otvori u novoj listi" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "otvori u novoj listi" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Otvori u pregledaču" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Otvori..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Radnja nije uspela" @@ -3452,23 +3501,23 @@ msgstr "Opcije..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organizovanje fajlova" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organizuj fajlove..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organizujem fajlove" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Početne oznake" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Ostale opcije" @@ -3476,7 +3525,7 @@ msgstr "Ostale opcije" msgid "Output" msgstr "Izlaz" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Uređaj izlaza" @@ -3484,15 +3533,11 @@ msgstr "Uređaj izlaza" msgid "Output options" msgstr "Opcije izlaza" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Priključak izlaza" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Prebriši sve" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Prebriši postojeće fajlove" @@ -3504,15 +3549,15 @@ msgstr "Prebriši samo manje fajlove" msgid "Owner" msgstr "Vlasnik" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Raščlanjujem Džamendov katalog" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "žurka" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3521,20 +3566,20 @@ msgstr "žurka" msgid "Password" msgstr "Lozinka" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Pauziraj" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Pauziraj puštanje" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pauzirano" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "izvođač" @@ -3543,34 +3588,22 @@ msgstr "izvođač" msgid "Pixel" msgstr "piksela" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Obična traka" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Pusti" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Pusti izvođača ili oznaku" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Pusti radio izvođača..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "broj puštanja" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Pusti posebni radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Pusti ako je zaustavljeno, zaustavi ako se pušta" @@ -3579,45 +3612,42 @@ msgstr "Pusti ako je zaustavljeno, zaustavi ako se pušta" msgid "Play if there is nothing already playing" msgstr "počeće puštanje ako trenutno ništa nije pušteno" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Pusti radio oznake..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" -msgstr "Pusti u numeru ss liste" +msgstr "Pusti u numeru sa liste" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Pusti/pauziraj" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Puštanje" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Opcije plejera" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Lista numera" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Lista numera je završena" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Opcije liste numera" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Tip liste" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Liste numera" @@ -3627,49 +3657,50 @@ msgstr "Zatvorite vaš pregledač i vratite se na Klementinu." #: ../bin/src/ui_spotifysettingspage.h:214 msgid "Plugin status:" -msgstr "Status dodatka:" +msgstr "Stanje priključka:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podkasti" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" -msgstr "" +msgstr "Popularne pesme" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" -msgstr "" +msgstr "Popularne pesme meseca" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" -msgstr "" +msgstr "Popularne pesme danas" #: ../bin/src/ui_notificationssettingspage.h:438 msgid "Popup duration" msgstr "Trajanje" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pretpojačanje" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Postavke" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Podešavanje..." @@ -3699,16 +3730,16 @@ msgstr "Prepostavka:" #: ../bin/src/ui_wiimoteshortcutgrabber.h:124 msgid "Press a button combination to use for" -msgstr "" +msgstr "Pritisnite kombinaciju tastera za" #: ../bin/src/ui_globalshortcutgrabber.h:73 msgid "Press a key" msgstr "Pritisnite taster" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." -msgstr "" +msgstr "Pritisnite kombinaciju tastera za %1..." #: ../bin/src/ui_notificationssettingspage.h:451 msgid "Pretty OSD options" @@ -3716,20 +3747,20 @@ msgstr "Opcije lepog OSD-a" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Pregled" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Prethodna" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Prethodna numera" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Prikaži podatke o izdanju" @@ -3737,21 +3768,25 @@ msgstr "Prikaži podatke o izdanju" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Napredak" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "napredak" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "psihodelično" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" -msgstr "" +msgstr "Pritisnite taster na Wii daljinskom" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Postavi nasumično" @@ -3759,7 +3794,12 @@ msgstr "Postavi nasumično" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Kvalitet" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Kvalitet" @@ -3767,28 +3807,33 @@ msgstr "Kvalitet" msgid "Querying device..." msgstr "Ispitujem uređaj..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Menadžer redosleda" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Stavi u red izabrane numere" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Stavi numeru u red" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "radio (jednaka jačina za sve pesme)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Kiša" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Kiša" @@ -3796,48 +3841,48 @@ msgstr "Kiša" msgid "Random visualization" msgstr "nasumično" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Oceni tekuću pesmu sa 0 zvezda" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Oceni tekuću pesmu sa 1 zvezdom" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Oceni tekuću pesmu sa 2 zvezde" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Oceni tekuću pesmu sa 3 zvezde" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Oceni tekuću pesmu sa 4 zvezde" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Oceni tekuću pesmu sa 5 zvezda" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "ocena" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Zaista odustajete?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." -msgstr "" +msgstr "Pređeno ograničenje preusmeravanja, proverite postavke servera." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Osveži" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Osveži katalog" @@ -3845,32 +3890,28 @@ msgstr "Osveži katalog" msgid "Refresh channels" msgstr "Osveži kanale" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Osveži spisak prijatelja" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Osveži spisak stanica" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" -msgstr "" +msgstr "Osveži tokove" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "rege" #: ../bin/src/ui_wiimoteshortcutgrabber.h:126 msgid "Remember Wii remote swing" -msgstr "" +msgstr "Zapamti zamah" #: ../bin/src/ui_behavioursettingspage.h:204 msgid "Remember from last time" msgstr "seti se od prošlog puta" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Ukloni" @@ -3878,7 +3919,7 @@ msgstr "Ukloni" msgid "Remove action" msgstr "Ukloni radnju" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Ukloni duplikate sa liste" @@ -3886,90 +3927,94 @@ msgstr "Ukloni duplikate sa liste" msgid "Remove folder" msgstr "Ukloni fasciklu" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" -msgstr "" +msgstr "Ukloni iz Moje muzike" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Ukloni iz obeleživača" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" -msgstr "" +msgstr "Ukloni iz omiljenih" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Ukloni sa liste numera" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" -msgstr "Ukloni listu numera" +msgstr "Uklanjanje liste numera" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Ukloni liste numera" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" -msgstr "" +msgstr "Uklanjam pesme iz Moje muzike" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" -msgstr "" +msgstr "Uklanjam pesme iz omiljenih" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" -msgstr "Preimenuj „%1“ listu" +msgstr "Preimenovanje „%1“ liste" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" -msgstr "" +msgstr "Preimenuj Gruvšarkovu listu numera" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Preimenovanje liste numera" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Preimenuj listu numera..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." -msgstr "" +msgstr "Numeriši ovim redom..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Ponavljanje" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Ponavljaj album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Ponavljaj listu numera" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Ponavljaj numeru" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" -msgstr "Zameni trenutnu listu" +msgstr "Zameni tekuću listu" #: ../bin/src/ui_behavioursettingspage.h:218 msgid "Replace the playlist" msgstr "zameni listu numera" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Zameni razmake podvlakom" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Nivelator jačine" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Režim nivelatora jačine" @@ -3977,24 +4022,24 @@ msgstr "Režim nivelatora jačine" msgid "Repopulate" msgstr "Popuni ponovo" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Zahtevaj autentifikacijski kôd" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Resetuj" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Poništi broj puštanja" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." -msgstr "" +msgstr "Ponovo pusti numeru ili pusti prethodnu ako je tekuća unutar početnih 8 sekundi." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Ograniči se na ASKI znakove" @@ -4002,17 +4047,17 @@ msgstr "Ograniči se na ASKI znakove" msgid "Resume playback on start" msgstr "Nastavi puštanje po pokretanju" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" -msgstr "" +msgstr "Dobavljam pesme iz Gruvšarkove Moje muzike" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" -msgstr "" +msgstr "Dobavljam Gruvšarkove omiljene pesme" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" -msgstr "" +msgstr "Dobavljam Gruvšarkove liste numera" #: ../data/oauthsuccess.html:5 msgid "Return to Clementine" @@ -4030,41 +4075,41 @@ msgstr "čupaj" msgid "Rip CD" msgstr "Čupanje CD-a" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Čupaj audio CD..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "rok" #: ../bin/src/ui_console.h:81 msgid "Run" -msgstr "" +msgstr "Izvrši" #: ../bin/src/ui_networkproxysettingspage.h:164 msgid "SOCKS proxy" msgstr "SOCKS proksi" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." -msgstr "" +msgstr "Greška SSL rukovanja, proverite postavke servera. SSLv3 opcija ispod može zaobići neke probleme." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Bezbedno izvadi uređaj" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Bezbedno izvadi uređaj posle kopiranja" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "uzorkovanje" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "uzorkovanje" @@ -4072,27 +4117,33 @@ msgstr "uzorkovanje" msgid "Save .mood files in your music library" msgstr "Sačuvaj .mood fajlove u muzičkoj biblioteci" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Upisivanje omota albuma" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Sačuvaj omot na disk..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Sačuvaj sliku" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Sačuvaj listu numera" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Upis liste numera" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Sačuvaj listu numera..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Sačuvaj prepostavku" @@ -4106,13 +4157,13 @@ msgstr "Upiši statistiku pesme u oznake kad je to moguće" #: ../bin/src/ui_addstreamdialog.h:115 msgid "Save this stream in the Internet tab" -msgstr "Sačuvaj ovaj tok u internet kartici" +msgstr "Sačuvaj ovaj tok u internet jezičku" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Upisujem statistike pesama u fajlove pesama" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Upisujem numere" @@ -4124,7 +4175,7 @@ msgstr "skalabilno uzorkovanje (SSR)" msgid "Scale size" msgstr "Promeni veličinu" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "skor" @@ -4132,34 +4183,38 @@ msgstr "skor" msgid "Scrobble tracks that I listen to" msgstr "Skrobluj numere koje puštam" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Traži" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "Pretraga" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" -msgstr "Potraži Icecast stanice" +msgstr "Traži Ajskast stanice" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" -msgstr "Potraži Jamendo" +msgstr "Traži na Džamendu" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" -msgstr "Pretraži Magnatjun" +msgstr "Traži na Magnatjunu" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" -msgstr "Pretraži Subsonik" +msgstr "Traži na Subsoniku" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Traži automatski" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Traži omote albuma..." @@ -4173,27 +4228,27 @@ msgstr "Traži na gpodder.net" #: ../bin/src/ui_itunessearchpage.h:76 msgid "Search iTunes" -msgstr "Traži na iTunes" +msgstr "Traži na Ajtjunsu" #: ../bin/src/ui_querysearchpage.h:113 msgid "Search mode" msgstr "Režim pretrage" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Opcije pretrage" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Rezultati pretrage" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" -msgstr "Termini pretrage" +msgstr "Pojmovi za pretragu" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Tražim na Gruvšarku" @@ -4201,27 +4256,27 @@ msgstr "Tražim na Gruvšarku" msgid "Second level" msgstr "Drugi nivo" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Traži unazad" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Traži unapred" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" -msgstr "Nađi trenutnu numeru po relativnom iznosu" +msgstr "Idi na položaj tekuće numere za relativni iznos" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" -msgstr "Nađi trenutnu numeru na tačnoj poziciji" +msgstr "Idi na položaj tekuće numere za apsolutni iznos" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Izaberi sve" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Očisti izbor" @@ -4229,7 +4284,7 @@ msgstr "Očisti izbor" msgid "Select background color:" msgstr "Boja pozadine:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Slika pozadine" @@ -4245,7 +4300,7 @@ msgstr "Glavna boja:" msgid "Select visualizations" msgstr "Izbor vizuelizacija" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Izaberi vizuelizacije..." @@ -4253,7 +4308,7 @@ msgstr "Izaberi vizuelizacije..." msgid "Select..." msgstr "Izaberi..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Serijski broj" @@ -4265,51 +4320,51 @@ msgstr "URL servera" msgid "Server details" msgstr "Detalji servera" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Servis van mreže" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." -msgstr "Postavljeno %1 od „%2“..." +msgstr "Promeni %1 u „%2“..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Postavi jačinu zvuka na procenata" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." -msgstr "Podesi vrednost za sve označene numere..." +msgstr "Podesi vrednost za sve izabrane numere..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Podešavanja" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" -msgstr "Prečica" +msgstr "prečica" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Prečica za %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Prečica za %1 već postoji" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Prikaži" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Prikaži OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Prikaži šljašteću animaciju na puštenoj numeri" @@ -4327,7 +4382,7 @@ msgstr "Obaveštenje pri promeni režima ponavljanja/nasumičnosti" #: ../bin/src/ui_notificationssettingspage.h:441 msgid "Show a notification when I change the volume" -msgstr "Obaveštenje pro promeni jačine zvuka" +msgstr "Obaveštenje pri promeni jačine zvuka" #: ../bin/src/ui_notificationssettingspage.h:436 msgid "Show a popup from the system tray" @@ -4337,15 +4392,15 @@ msgstr "Oblačić sa sistemske kasete" msgid "Show a pretty OSD" msgstr "Lepi OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Prikaži iznad trake stanja" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Prikaži sve pesme" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Prikaži sve pesme" @@ -4357,32 +4412,36 @@ msgstr "Prikaži omot u biblioteci" msgid "Show dividers" msgstr "Prikaži razdvajače" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Puna veličina..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Prikaži grupe u rezultatu opšte pretrage" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Prikaži u menadžeru fajlova" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Prikaži u biblioteci..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" -msgstr "Prikaži u raznim izvođačima" +msgstr "Prikazuj u raznim izvođačima" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Prikaži raspoloženje" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Prikaži samo duplikate" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Prikaži samo neoznačene" @@ -4391,8 +4450,8 @@ msgid "Show search suggestions" msgstr "prikaži predloge pretrage" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Prikaži „volim“ i „mrzim“ dugmad" +msgid "Show the \"love\" button" +msgstr "Prikaži „volim“ dugme" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4400,33 +4459,33 @@ msgstr "Prikaži dugme skroblovanja u glavnom prozoru" #: ../bin/src/ui_behavioursettingspage.h:192 msgid "Show tray icon" -msgstr "Prikaži ikonu sistemske kasete" +msgstr "Usidri u sistemsku kasetu" #: ../bin/src/ui_globalsearchsettingspage.h:152 msgid "Show which sources are enabled and disabled" msgstr "prikaži koji su izvori omogućeni/onemogućeni" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Prikaži/sakrij" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Nasumično" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Nasumično albumi" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Nasumično sve" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Pretumbaj listu" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Nasumično numere u ovom albumu" @@ -4442,7 +4501,7 @@ msgstr "Odjavi se" msgid "Signing in..." msgstr "Prijavljujem se..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Slični izvođači" @@ -4454,43 +4513,51 @@ msgstr "Veličina" msgid "Size:" msgstr "Veličina:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Preskoči unazad u listi numera" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "broj preskakanja" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Preskoči unapred u listi numera" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Preskoči izabrane numere" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Preskoči numeru" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Mali omot" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Uska traka" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Pametna lista" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Pametne liste" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "lagana" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "lagani rok" @@ -4498,17 +4565,17 @@ msgstr "lagani rok" msgid "Song Information" msgstr "Podaci o pesmi" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Podaci o pesmi" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" #: ../bin/src/ui_trackselectiondialog.h:205 msgid "Sorry" -msgstr "Izvinite" +msgstr "Žao nam je" #: ../bin/src/ui_icecastfilterwidget.h:75 msgid "Sort by genre (alphabetically)" @@ -4522,15 +4589,23 @@ msgstr "Poređaj po žanru (po popularnosti)" msgid "Sort by station name" msgstr "Poređaj po imenu stanice" -#: ../bin/src/ui_querysortpage.h:139 -msgid "Sort songs by" -msgstr "Poređaj pesme po" +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Poređaj pesme na listi abecedno" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:140 +msgid "Sort songs by" +msgstr "Kriterijum ređanja" + +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Ređanje" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "izvor" @@ -4546,7 +4621,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotifaj" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Greška prijavljivanja na Spotifaj" @@ -4554,7 +4629,7 @@ msgstr "Greška prijavljivanja na Spotifaj" msgid "Spotify plugin" msgstr "Spotifaj priključak" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotifaj priključak nije instaliran" @@ -4562,95 +4637,95 @@ msgstr "Spotifaj priključak nije instaliran" msgid "Standard" msgstr "standardan" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Sa zvezdicom" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Počni čupanje" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" -msgstr "Počni listu trenutno puštanim" +msgstr "Pusti tekuću listu numera" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Počni prekodiranje" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" -msgstr "" +msgstr "Počnite nešto da kucate u polje za pretragu iznad da biste ispunili ovaj spisak rezultata pretrage" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Počinjem %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Počinjem..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stanice" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Zaustavi" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Zaustavi posle" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Zaustavi posle ove numere" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Zaustavi puštanje" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Zaustavi posle tekuće numere" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" -msgstr "Zaustavi puštanje nakon numere: %1" +msgstr "Zaustavi puštanje posle numere: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Zaustavljeno" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Tok" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." -msgstr "" +msgstr "Puštanje toka sa Subsonikovog servera zahteva važeću licencu servera nakon 30-dnevnog probnog perioda." #: ../bin/src/ui_magnatunesettingspage.h:160 msgid "Streaming membership" msgstr "strimovanje sadržaja" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" -msgstr "" +msgstr "Pretplaćene liste numera" #: ../bin/src/ui_podcastinfowidget.h:196 msgid "Subscribers" msgstr "Pretplatnici" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonik" @@ -4658,12 +4733,12 @@ msgstr "Subsonik" msgid "Success!" msgstr "Uspeh!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Uspešno upisano %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Predložene oznake" @@ -4672,13 +4747,13 @@ msgstr "Predložene oznake" msgid "Summary" msgstr "Rezime" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "super visok (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "super visok (2048x2048)" @@ -4690,43 +4765,35 @@ msgstr "Podržani formati" msgid "Synchronize statistics to files now" msgstr "Sinhronizuj statistike u fajlove" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Sinhronizovanje Spotifaj sandučeta" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Sinhronizovanje Spotifaj liste numera" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Sinhronizovanje Spotifaj ocenjenih numera" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "sistemske boje" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Jezičci na vrhu" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Oznaka" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Dobavljač oznaka" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Označi radio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Ciljani bitski protok" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "tehno" @@ -4734,11 +4801,11 @@ msgstr "tehno" msgid "Text options" msgstr "Opcije teksta" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Zahvalnice" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Naredbe „%1“ se ne mogu pokrenuti." @@ -4747,17 +4814,12 @@ msgstr "Naredbe „%1“ se ne mogu pokrenuti." msgid "The album cover of the currently playing song" msgstr "Omot albuma tekuće pesme" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Direktorijum „%1“ nije ispravan" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Lista numera „%1“ je prazna i ne može se učitati." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Druga vrednost mora biti veća od prve!" @@ -4765,40 +4827,40 @@ msgstr "Druga vrednost mora biti veća od prve!" msgid "The site you requested does not exist!" msgstr "Sajt koji ste zatražili ne postoji!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Sajt koji ste zatražili nije slika!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." -msgstr "" +msgstr "Probni period za Subsonikov server je istekao. Donirajte da biste dobili licencni ključ. Posetite subsonic.org za više detalja." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Izdanje Klementine koje ste upravo nadogradili zahteva potpuno skeniranje biblioteke zbog novih mogućnosti koje su izlistane ispod:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" -msgstr "" +msgstr "Ima još pesama u ovom albumu" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Problem prilikom komunikacije sa gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Problem prilikom dobavljanja metapodataka sa Magnatjuna" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" -msgstr "Problem prilikom raščlanjivanja odgovora sa iTunes prodavnice." +msgstr "Problem prilikom raščlanjivanja odgovora sa Ajtjuns prodavnice." -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4810,13 +4872,13 @@ msgid "" "deleted:" msgstr "Bilo je problema pri brisanju nekih pesama. Sledeći fajlovi nisu obrisani:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Ovi fajlovi će biti obrisani sa uređaja, želite li zaista da nastavite?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4836,13 +4898,13 @@ msgstr "Ove postavke se koriste u dijalogu „Prekodiranje muzike“, i prilikom msgid "Third level" msgstr "Treći nivo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Ovaj radnja će napraviti bazu podataka koja može biti velika i do 150 MB.\nŽelite li ipak da nastavite?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Ovaj album nije dostupan u traženom formatu" @@ -4856,20 +4918,20 @@ msgstr "Ovaj uređaj mora biti povezan i otvoren pre nego što Klementina može msgid "This device supports the following file formats:" msgstr "Ovaj uređaj podržava sledeće formate fajlova:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Ovaj uređaj neće raditi ispravno" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Ovo je MTP uređaj, ali vi ste kompilovali Klementinu bez libmtp podrške." #: devices/devicemanager.cpp:575 msgid "This is an iPod, but you compiled Clementine without libgpod support." -msgstr "Ovo je iPod, ali vi ste kompilovali Klementinu bez libgpod podrške." +msgstr "Ovo je Ajpod, ali vi ste kompilovali Klementinu bez libgpod podrške." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4879,61 +4941,61 @@ msgstr "Ovo je prvi put da ste povezali ovaj uređaj. Klementina će sad da sken msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Ovu opciju možete izmeniti u postavkama „Ponašanja“" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Ovaj tok je samo za pretplatnike" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Ovaj tip uređaja nije podržan: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "naslov" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" -msgstr "" +msgstr "Da biste počeli Gruvšarkov radio najpre biste trebali preslušati nekoliko ostalih Gruvšarkovih pesama" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" -msgstr "Danas" +msgstr "danas" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" -msgstr "Menjaj lepi OSD" +msgstr "Lepi OSD" #: visualisations/visualisationcontainer.cpp:101 msgid "Toggle fullscreen" msgstr "Ceo ekran" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" -msgstr "" +msgstr "Menjaj stanje redosleda" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Menjaj skroblovanje" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Menjaj vidljivost lepog OSD-a" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" -msgstr "Sutra" +msgstr "sutra" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Previše preusmeravanja" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Najbolje numere" @@ -4941,21 +5003,25 @@ msgstr "Najbolje numere" msgid "Total albums:" msgstr "Ukupno albuma:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Ukupno bajtova prebačeno" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Ukupno napravljenih mrežnih zahteva" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "numera" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Numere" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Prekodiranje muzike" @@ -4967,7 +5033,7 @@ msgstr "Dnevnik prekodiranja" msgid "Transcoding" msgstr "Prekodiranje" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Prekodiram %1 fajlova koristeći %2 niski" @@ -4976,84 +5042,84 @@ msgstr "Prekodiram %1 fajlova koristeći %2 niski" msgid "Transcoding options" msgstr "Opcije prekodiranja" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" -msgstr "" +msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbina" #: ../bin/src/ui_dynamicplaylistcontrols.h:113 msgid "Turn off" -msgstr "" +msgstr "Isključi" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Adrese" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "ultra široki opseg (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Ne mogu da preuzmem %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Nepoznato" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Nepoznat tip sadržaja" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Nepoznata greška" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Ukloni omot" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Ukloni preskakanje numera" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Ukloni preskakanje" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Ukloni pretplatu" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Predstojeći koncerti" -#: internet/groovesharkservice.cpp:1200 -msgid "Update Grooveshark playlist" -msgstr "Ažuriraj Gruvšark listu numera" +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Ažuriraj" -#: podcasts/podcastservice.cpp:319 +#: internet/groovesharkservice.cpp:1238 +msgid "Update Grooveshark playlist" +msgstr "Ažuriraj Gruvšarkovu listu numera" + +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Ažuriraj sve podkaste" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Ažuriraj izmenjene fascikle biblioteke" @@ -5061,7 +5127,7 @@ msgstr "Ažuriraj izmenjene fascikle biblioteke" msgid "Update the library when Clementine starts" msgstr "Ažuriraj biblioteku pri pokretanju Klementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Ažuriraj ovaj podkast" @@ -5069,33 +5135,33 @@ msgstr "Ažuriraj ovaj podkast" msgid "Updating" msgstr "Ažuriranje" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Ažuriram %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Ažuriram %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Ažuriranje biblioteke" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" -msgstr "Iskorišćenje" +msgstr "Upotreba" #: ../bin/src/ui_lastfmsettingspage.h:159 msgid "Use Album Artist tag when available" msgstr "Koristi oznaku izvođača albuma ako je dostupna" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Koristi Gnomove prečice" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Koristi metapodatke nivelisanja ako su dostupni" @@ -5115,7 +5181,7 @@ msgstr "Posebna paleta boja" msgid "Use a custom message for notifications" msgstr "Koristi posebnu poruku za obaveštenja" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Uključi daljinsko upravljanje preko mreže" @@ -5133,7 +5199,7 @@ msgstr "Dinamički režim" #: ../bin/src/ui_wiimotesettingspage.h:188 msgid "Use notifications to report Wii Remote status" -msgstr "" +msgstr "Koristite obaveštenja za prijavu stanja Wii daljinskog" #: ../bin/src/ui_transcoderoptionsaac.h:139 msgid "Use temporal noise shaping" @@ -5155,20 +5221,20 @@ msgstr "Sistemske postavke proksija" msgid "Use volume normalisation" msgstr "Normalizacija jačine zvuka" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Iskorišćeno" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" -msgstr "Korisnik %1 nema Gruvšark Bilokud nalog" +msgstr "Korisnik %1 nema Gruvšarkov Bilokud nalog" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Korisničko sučelje" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5188,14 +5254,14 @@ msgstr "VBR MP3" #: ../bin/src/ui_transcoderoptionsspeex.h:232 msgid "Variable bit rate" -msgstr "Promenljiv bitski protok" +msgstr "Promenjiv bitski protok" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Razni izvođači" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Izdanje %1" @@ -5208,7 +5274,7 @@ msgstr "Prikaz" msgid "Visualization mode" msgstr "Režim vizuelizacija" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Vizuelizacije" @@ -5216,11 +5282,15 @@ msgstr "Vizuelizacije" msgid "Visualizations Settings" msgstr "Podešavanje vizuelizacija" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Otkrivanje glasovne aktivnosti" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Jačina %1%" @@ -5238,11 +5308,11 @@ msgstr "VAV" msgid "WMA" msgstr "VMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Upozori me prilikom zatvaranja jezička liste numera" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "VAV" @@ -5250,7 +5320,7 @@ msgstr "VAV" msgid "Website" msgstr "Vebsajt" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "sedmica" @@ -5266,7 +5336,7 @@ msgstr "Prilikom traženja omota albuma Klementina će najpre da traži fajlove #: ../bin/src/ui_globalsearchsettingspage.h:151 msgid "When the list is empty..." -msgstr "Kada je spisak prazan..." +msgstr "Kada je spisak prazan:" #: ../bin/src/ui_globalsearchview.h:212 msgid "Why not try..." @@ -5276,39 +5346,39 @@ msgstr "Zašto ne biste probali..." msgid "Wide band (WB)" msgstr "široki opseg (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" -msgstr "" +msgstr "Wii daljinski %1: aktiviran" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" -msgstr "" +msgstr "Wii daljinski %1: povezan" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " -msgstr "" +msgstr "Wii daljinski %1: nivo baterije kritičan (%2%)" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" -msgstr "" +msgstr "Wii daljinski %1: deaktiviran" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" -msgstr "" +msgstr "Wii daljinski %1: nepovezan" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" -msgstr "" +msgstr "Wii daljinski %1: nivo baterije nizak (%2%)" #: ../bin/src/ui_wiimotesettingspage.h:182 msgid "Wiimotedev" -msgstr "" +msgstr "Wii daljinski" #: ../bin/src/ui_digitallyimportedsettingspage.h:181 msgid "Windows Media 128k" @@ -5322,7 +5392,7 @@ msgstr "Vindouz medija 40k" msgid "Windows Media 64k" msgstr "Vindouz medija 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Vindouz medija audio" @@ -5330,25 +5400,25 @@ msgstr "Vindouz medija audio" msgid "Without cover:" msgstr "Bez omota:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Želite li da pomerite i ostale pesme iz ovog albuma u razne izvođače takođe?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Želite li sada da pokrenete potpuno skeniranje?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Upisivanje statistika svih pesama u fajlove pesama" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Pogrešno korisničko ime ili lozinka." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5360,54 +5430,54 @@ msgstr "godina" msgid "Year - Album" msgstr "godina — album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "godina" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" -msgstr "Juče" +msgstr "juče" #: ../bin/src/ui_magnatunedownloaddialog.h:132 msgid "You are about to download the following albums" msgstr "Preuzećete sledeće albume" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Želite li zaista da uklonite %1 listi numera iz omiljenih?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" -msgstr "" +msgstr "Uklonićete i obrisati listu numera koja nije u vašim omiljenim (ova radnja ne može da se poništi). \nŽelite li zaista da nastavite?" #: ../bin/src/ui_loginstatewidget.h:172 msgid "You are not signed in." msgstr "Niste prijavljeni." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." -msgstr "Prijavljeni ste kao %1" +msgstr "Prijavljeni ste kao %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Prijavljeni ste." #: ../bin/src/ui_groupbydialog.h:123 msgid "You can change the way the songs in the library are organised." -msgstr "Možete izmeniti način organizivanja pesama u biblioteci" +msgstr "Možete izmeniti način organizivanja pesama u biblioteci." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." -msgstr "" +msgstr "Možete da slušate besplatno bez naloga, ali samo premijum korisnici mogu da slušaju tokove visokog kvaliteta bez reklama." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5417,68 +5487,69 @@ msgstr "Možete besplatno slušati pesme na Magnatjunu bez naloga. Kupovinom č msgid "You can listen to background streams at the same time as other music." msgstr "Možete da slušate pozadinske tokove istovremeno sa drugom muzikom." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. See the page on the " "Clementine wiki for more information.\n" -msgstr "" +msgstr "Možete da koristite vaš Wii daljinski za daljinsku kontrolu Klementine. Pogledajte stranicu na Klementinom vikiju za više podataka.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." -msgstr "Nemate Gruvšark Bilokud nalog." +msgstr "Nemate Gruvšarkov Bilokud nalog." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Nemate Spotifaj Premijum nalog." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" -msgstr "" +msgstr "Nemate aktivnu pretplatu" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Ne morate biti prijavljeni da biste pretraživali i slušali muziku sa Saundklauda. Međutim, morate da se prijavite da biste pristupili vašim listama numera i vašem toku." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." -msgstr "" +msgstr "Odjavljeni ste sa Spotifaja, unesite vašu lozinku ponovo u dijalogu postavki." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." -msgstr "" +msgstr "Odjavljeni ste sa Spotifaja, unesite vašu lozinku ponovo." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Volite ovu numeru" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Morate da pokrenete podešavanje sistema i dozvolite Klementini da „upravlja vašim računarom“ da biste koristili opšte prečice u Klementini." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " "shortcuts in Clementine." -msgstr "" +msgstr "Da biste koristili opšte prečice u Klementini morate da uključite opciju „Omogući pristup pomoćnim uređajima“ u podešavanjima sistema." #: ../bin/src/ui_behavioursettingspage.h:200 msgid "You will need to restart Clementine if you change the language." -msgstr "Morate da ponovo pokrenete Klementinu da biste promenili jezik." +msgstr "Morate ponovo da pokrenete Klementinu da biste promenili jezik." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Vaša IP adresa:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Vaši akreditivi za Last.fm su netačni" @@ -5486,42 +5557,43 @@ msgstr "Vaši akreditivi za Last.fm su netačni" msgid "Your Magnatune credentials were incorrect" msgstr "Vaši akreditivi za Magnatjun su netačni" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" -msgstr "Vaša biblioteka je prazna" +msgstr "Vaša biblioteka je prazna!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Vaši radio tokovi" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Vaša skroblovanja: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Vaš sistem ne podržava OpenGL, vizuelizacije nisu dostupne." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." -msgstr "" +msgstr "Vaše korisničko ime ili lozinka su netačni." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" -msgstr "Ž-A" +msgstr "Š-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "ništa" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" -msgstr "dodaj %n pesama" +msgstr "dodavanje %n stavki" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "nakon" @@ -5541,19 +5613,19 @@ msgstr "automatski" msgid "before" msgstr "pre" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "između" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" -msgstr "" +msgstr "prvo najveće" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "tempo" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "sadrži" @@ -5563,87 +5635,88 @@ msgstr "sadrži" msgid "disabled" msgstr "onemogućeno" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disk %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "ne sadrži" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "završava sa" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "jednak" #: ../bin/src/ui_podcastsettingspage.h:249 msgid "gpodder.net" -msgstr "" +msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" -msgstr "" +msgstr "gpodder.net direktorijum" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "veći od" #: ../bin/src/ui_deviceviewcontainer.h:99 msgid "iPods and USB devices currently don't work on Windows. Sorry!" -msgstr "" +msgstr "Ajpodi i USB uređaji za sada ne rade na Vindouzu. Žao nam je!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "poslednjih" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kb/s" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "manji od" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" -msgstr "" +msgstr "prvo najduže" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" -msgstr "" +msgstr "pomeranje %n stavki" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" -msgstr "" +msgstr "prvo najnovije" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "nije jednak" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "ne u poslednjih" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "ne na dan" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" -msgstr "" +msgstr "prvo najstarije" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "na dan" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "Opcije" @@ -5653,38 +5726,39 @@ msgstr "ili skenirajte kôd ispod!" #: widgets/didyoumean.cpp:56 msgid "press enter" -msgstr "pritisni enter" +msgstr "pritisnite ENTER" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" -msgstr "ukloni %n pesama" +msgstr "uklanjanje %n stavki" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" -msgstr "" +msgstr "prvo najkraće" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" -msgstr "" +msgstr "tumbanje" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" -msgstr "" +msgstr "prvo najmanje" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" -msgstr "" +msgstr "sortiranje pesama" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "počinje sa" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "Zaustavi" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "numera %1" diff --git a/src/translations/sv.po b/src/translations/sv.po index 87b9db106..b812eea8c 100644 --- a/src/translations/sv.po +++ b/src/translations/sv.po @@ -8,6 +8,9 @@ # FIRST AUTHOR , 2010 # kristian , 2013 # kristian , 2012 +# Kristoffer Grundströ , 2014 +# paperbagcorner , 2014 +# AsavarTzeth , 2014 # Rasmus Eneman , 2013 # Rasmus Eneman , 2012 # Robin Poulsen , 2011 @@ -16,7 +19,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/clementine/language/sv/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,7 +27,7 @@ msgstr "" "Language: sv\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -49,9 +52,9 @@ msgstr " dagar" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -64,11 +67,16 @@ msgstr " pt" msgid " seconds" msgstr " sekunder" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " låtar" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 låtar)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -78,12 +86,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 dagar" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 dagar sedan" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 av %2" @@ -93,48 +101,48 @@ msgstr "%1 av %2" msgid "%1 playlists (%2)" msgstr "%1 spellistor (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 vald(a) av" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 låt" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 låtarna" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 låtar hittades" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 låtar hittades (visar %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 spår" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 överfört" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev-modul" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 andra lyssnare" @@ -148,18 +156,21 @@ msgstr "%L1 totala uppspelningar" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n misslyckades" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n färdig" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n återstår" @@ -171,24 +182,24 @@ msgstr "&Justera text" msgid "&Center" msgstr "&Centrera" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "A&npassad" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Extrafunktioner" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Hjälp" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Dölj %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Dölj..." @@ -196,23 +207,23 @@ msgstr "Dölj..." msgid "&Left" msgstr "&Vänster" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Musik" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "I&nga" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Spellista" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "A&vsluta" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Upprepningsläge" @@ -220,23 +231,23 @@ msgstr "Upprepningsläge" msgid "&Right" msgstr "&Höger" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Blandningsläge" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Justera kolumner så de passar fönstret" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "Verktyg" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(olika på flera låtar)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "... och alla Amarok-bidragsgivare" @@ -256,14 +267,10 @@ msgstr "0px" msgid "1 day" msgstr "1 dag" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 spår" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -273,19 +280,13 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 slumpmässiga spår" #: ../bin/src/ui_digitallyimportedsettingspage.h:165 msgid "Upgrade to Premium now" -msgstr "Uppgradera till Premium nu" - -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Skapa ett nytt konto eller återställ ditt lösenord" +msgstr "Uppgradera till premium nu" #: ../bin/src/ui_librarysettingspage.h:195 msgid "" @@ -297,6 +298,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Om omarkerad, kommer Clementine att försöka spara dina betyg och annan statistik endast till en separat databas och dina filer lämnas oändrade.

Om markerad,kommer statistiken att sparas både i databasen och i filerna varje gång den ändras.

Notera att detta kanske inte fungerar för alla format för att ett standardsystem för att göra detta inte existerar, andra musikspelare kan kanske inte läsa dom.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Begränsa sökningen till ett specifikt fält genom att lägga till fältnamnet före sökordet. Till exempel söker artist:Bode igenom biblioteket efter alla artister som innehåller ordet Bode.

Tillgängliga fält: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -305,38 +317,38 @@ msgid "" "activated.

" msgstr "

Detta kommer att skriva låtbetyg och statistik till filetiketter i hela ditt musikbibliotek.

Detta är inte nödvändigt om "Spara betyg och statistik i filetiketter" alltid är aktiverat.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

En variabel påbörjas med %, till exempel: %artist %album %titel

\n\n

Om du omgärdar en variabel med klammerparanteser (måsvingar), så kommer den inte att visas om variabeln är tom.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Ett Grooveshark Anywhere konto krävs." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Kräver ett Spotify Premium-konto." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Fjärrkontrollen kan endast ansluta om rätt kod anges." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "En smart spellista är en dynamisk lista över låtar som finns i ditt bibliotek. Det finns olika typer av smarta spellistor som väljer låtar på olika sätt." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "En låt kommer att inkluderas i spellistan om den matchar dessa villkor." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Ö" @@ -356,36 +368,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ÄRAD VARE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Avbryt" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Om %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Om Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Om Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Kontodetaljer" @@ -397,11 +408,15 @@ msgstr "Kontoinformation (Premium)" msgid "Action" msgstr "Åtgärd" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Aktivera/inaktivera Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Aktivitetsström" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Lägg till podsändning" @@ -417,39 +432,39 @@ msgstr "Lägg till en ny rad om det stöds av notifieringstypen" msgid "Add action" msgstr "Lägg till åtgärd" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Lägg till en annan ström..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Lägg till katalog..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Lägg till fil" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Lägg till fil till transkodaren" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Lägg till fil(er) till transkodaren" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Lägg till fil..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Lägg till filer för omkodning" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Lägg till mapp" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Lägg till mapp..." @@ -461,11 +476,11 @@ msgstr "Lägg till mapp..." msgid "Add podcast" msgstr "Lägg till podsändning" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Lägg till podsändning..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Lägg till sökterm" @@ -503,7 +518,7 @@ msgstr "Lägg till etikett för genre" #: ../bin/src/ui_notificationssettingspage.h:398 msgid "Add song grouping tag" -msgstr "Lägg till låtgrupperings etikett" +msgstr "Lägg till låtgrupperingsetikett" #: ../bin/src/ui_notificationssettingspage.h:410 msgid "Add song length tag" @@ -511,7 +526,7 @@ msgstr "Lägg till etikett för låtens längd" #: ../bin/src/ui_notificationssettingspage.h:395 msgid "Add song performer tag" -msgstr "Lägg till artist etikett" +msgstr "Lägg till etikett för utövare" #: ../bin/src/ui_notificationssettingspage.h:413 msgid "Add song play count" @@ -529,6 +544,10 @@ msgstr "Lägg till antal överhoppningar" msgid "Add song title tag" msgstr "Lägg till etikett för låtens titel" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Lägg till en låt till cache" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Lägg till etikett för spårnummer" @@ -537,22 +556,34 @@ msgstr "Lägg till etikett för spårnummer" msgid "Add song year tag" msgstr "Lägg till etikett för år" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Lägg till sånger i \"Min musik\" när knappen \"Älskar\" är klickad på" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Lägg till ström..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Lägg till i Grooveshark-favoriter" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Lägg till i Grooveshark-spellistor" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Lägg till i Min Musik" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Lägg till i en annan spellista" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Lägg till i bokmärken" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Lägg till i spellistan" @@ -561,6 +592,10 @@ msgstr "Lägg till i spellistan" msgid "Add to the queue" msgstr "Lägg till kön" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Lägg till användare/grupp till bokmärken" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Lägg till Wiimotedev-åtgärd" @@ -590,15 +625,15 @@ msgstr "Tillagda idag" msgid "Added within three months" msgstr "Tillagda senaste tre månaderna" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Lägger till låt i Min Musik" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Lägg till låtar till favoriter" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Avancerad gruppering..." @@ -606,12 +641,12 @@ msgstr "Avancerad gruppering..." msgid "After " msgstr "Efter " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Efter kopiering..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -619,11 +654,11 @@ msgstr "Efter kopiering..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (lämplig ljudstyrka för alla spår)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -633,35 +668,36 @@ msgstr "Albumartist" msgid "Album cover" msgstr "Almbumomslag" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Album information från jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Album med omslag" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Album utan omslag" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Alla filer (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "All Glory to the Hypnotoad!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Alla album" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Alla artister" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Alla filer (*)" @@ -670,19 +706,19 @@ msgstr "Alla filer (*)" msgid "All playlists (%1)" msgstr "Alla spellistor (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Alla översättare" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Alla spår" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Tillåt en klient att ladda ner musik från denna dator." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Tillåt nedladdningar" @@ -705,32 +741,32 @@ msgstr "Visa alltid huvudfönstret" #: ../bin/src/ui_behavioursettingspage.h:212 #: ../bin/src/ui_behavioursettingspage.h:226 msgid "Always start playing" -msgstr "Starta alltid att spela" +msgstr "Starta alltid uppspelning" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Ett ytterligare insticksprogram krävs för att använda Spotify i Clementine. Vill du ladda ner och installera det nu?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Ett fel uppstod vid inläsning av iTunes-databasen" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Ett fel uppstod när metadata skulle skrivas till '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Ett okänt fel inträffade." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Och:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Arg" @@ -739,13 +775,13 @@ msgstr "Arg" msgid "Appearance" msgstr "Utseende" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Lägg till filer/webbadresser till spellistan" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Lägg till i den aktuella spellistan" @@ -753,52 +789,47 @@ msgstr "Lägg till i den aktuella spellistan" msgid "Append to the playlist" msgstr "Lägg till i spellistan" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Tillämpa komprimering för att förhindra distorsion" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Är du säker på att du vill ta bort förinställningen \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Är du säker på att du vill ta bort denna spellista?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Är du säker på att du vill återställa den här låtens statistik?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Är du säker på att du vill skriva låtstatistik till låtfilerna på alla låtar i ditt musikbibliotek?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Artistinfo" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Artistradio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Artist-taggar" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Artistens initialer" @@ -806,9 +837,13 @@ msgstr "Artistens initialer" msgid "Audio format" msgstr "Ljudformat" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Ljudutgång" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Behörighetskontroll misslyckades" @@ -816,7 +851,7 @@ msgstr "Behörighetskontroll misslyckades" msgid "Author" msgstr "Författare" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Upphovsmän" @@ -832,7 +867,7 @@ msgstr "Automatisk uppdatering" msgid "Automatically open single categories in the library tree" msgstr "Öppna enstaka kategorier i biblioteksträdet automatiskt" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Tillgängliga" @@ -840,15 +875,15 @@ msgstr "Tillgängliga" msgid "Average bitrate" msgstr "Genomsnittlig bithastighet" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Genomsnittlig bildstorlek" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC podsändningar" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +904,7 @@ msgstr "Bakgrundsbild" msgid "Background opacity" msgstr "Bakgrundsopacitet" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Säkerhetskopiera databasen" @@ -877,11 +912,7 @@ msgstr "Säkerhetskopiera databasen" msgid "Balance" msgstr "Balans" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Blockera" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Stapelanalysator" @@ -901,18 +932,17 @@ msgstr "Beteende" msgid "Best" msgstr "Bästa" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Biografi från %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bithastighet" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -920,7 +950,12 @@ msgstr "Bithastighet" msgid "Bitrate" msgstr "Bitfrekvens" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Bithastighet" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blockanalysator" @@ -936,7 +971,7 @@ msgstr "Grumlighet" msgid "Body" msgstr "Brödtext" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom-analysator" @@ -950,11 +985,11 @@ msgstr "Box" msgid "Browse..." msgstr "Bläddra..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Längd på buffer" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Buffrar" @@ -966,43 +1001,66 @@ msgstr "Men dessa källor är inaktiverade:" msgid "Buttons" msgstr "Knappar" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Som standard, sorterar Grooveshark låtar efter tillagt datum" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CD-ljud" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Stöd för CUE-filer" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Cache sökväg:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Cachar" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Cachar %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Avbryt" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Captcha krävs.\nFörsök logga in på Vk.com med din webbläsare, för att fixa det här problemet." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Ändra omslag" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Ändra typsnittsstorlek" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Ändra upprepningsläge" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Ändra snabbtangent..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Ändra blandningsläge" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Ändra språket" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1012,15 +1070,19 @@ msgstr "Byte från/till Monoljud börjar gälla från nästa låt" msgid "Check for new episodes" msgstr "Kolla efter nya avsnitt" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Leta efter uppdateringar..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Välj Vk.com cache-katalog" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Välj ett namn för din smara spellista" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Välj automatiskt" @@ -1036,11 +1098,11 @@ msgstr "Välj typsnitt..." msgid "Choose from the list" msgstr "Välj från listan" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Välj hur spellistan ska sorteras och hur många låtar den ska innehålla." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Välj nedladdningsmapp för podsändningar" @@ -1049,7 +1111,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Välj webbplatserna du vill att Clementine ska använda vid sökning efter låttexter." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klassisk" @@ -1057,17 +1119,17 @@ msgstr "Klassisk" msgid "Cleaning up" msgstr "Rensar upp" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Rensa" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Rensa spellistan" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1080,8 +1142,8 @@ msgstr "Clementine-fel" msgid "Clementine Orange" msgstr "Clementine-orange" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine-visualisering" @@ -1103,9 +1165,9 @@ msgstr "Clementine kan spela musik som du har laddat upp på Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine kan spela musik som du laddat upp till Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine kan spela upp musik som du har laddat upp till Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine kan spela musik som du laddat upp till OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1118,20 +1180,13 @@ msgid "" "an account." msgstr "Clementine kan synkronisera din prenumeration lista med dina andra datorer och podsändningsprogram. Skapa ett konto ." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine kunde inte läsa in några projectM-visualiseringar. Kontrollera att du har installerat Clementine ordentligt." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine kunde inte hämta information om din prenumeration eftersom det är något problem med din uppkoppling. Spelade spår kommer mellanlagras för att skickas till Last.fm vid ett senare tillfälle." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine-bildvisare" @@ -1143,11 +1198,11 @@ msgstr "Clementine kunde inte hitta resultat för den här filen" msgid "Clementine will find music in:" msgstr "Clementine kommer att söka musik i:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Klicka här för att lägga till musik" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1157,12 +1212,15 @@ msgstr "Klicka här för att favorisera denna spellista så att den sparas och f msgid "Click to toggle between remaining time and total time" msgstr "Klicka för att växla mellan återstående tid och total tid" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " "Clementine after you have logged in." -msgstr "Att klicka på Login kommer att öppna en webbläsare.Du bör återgå till Clementine efter att inloggningen slutförts." +msgstr "Att klicka på Login kommer att öppna en webbläsare. Du bör återgå till Clementine efter att inloggningen slutförts." #: widgets/didyoumean.cpp:37 msgid "Close" @@ -1172,19 +1230,19 @@ msgstr "Stäng" msgid "Close playlist" msgstr "Stäng spellista" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Stäng visualisering" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Stängning av detta fönster kommer att avbryta hämtningen." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Stängning av detta fönster kommer att stoppa sökningen efter albumomslag." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1192,73 +1250,78 @@ msgstr "Club" msgid "Colors" msgstr "Färger" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Lista, separerad med komma, över class:level; level är 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Kommentar" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Samhällsradio" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Fyll i etiketter automatiskt" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Fyll i etiketter automatiskt..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Kompositör" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Ställ in %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Konfigurera Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Konfigurera Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Konfigurera Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Konfigurera snabbtangenter" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Anpassa Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Konfigurera Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Konfigurera VK.com..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Ställ in Global sökning..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Konfigurera biblioteket..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Konfigurera podcasts..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Konfigurera..." @@ -1266,11 +1329,11 @@ msgstr "Konfigurera..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Anslut Wii-kontroller med åtgärden aktivera/inaktivera" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Anslut enhet" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Ansluter till Spotify" @@ -1280,12 +1343,16 @@ msgid "" "http://localhost:4040/" msgstr "Uppkoppling vägrad av servern, Kontrollera serverns URL. Exempel:http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Uppkopplingen har avbrutits, kontrollera serverns URL. Exempel: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Anslutningsproblem eller ljudet är inaktiverat av användaren" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsoll" @@ -1301,17 +1368,21 @@ msgstr "Konvertera all musik" msgid "Convert any music that the device can't play" msgstr "Konvertera all musik som enheten inte kan spela upp" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Kopiera delad url till urklipp" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Kopiera till klippbordet" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Kopiera till enhet..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kopiera till biblioteket..." @@ -1319,156 +1390,152 @@ msgstr "Kopiera till biblioteket..." msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Kunde inte ansluta till Subsonic, kontrollera serverns URL. Exampel: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Kunde inte skapa GStreamer-elementet \"%1\" - kontrollera att du har alla GStreamer-insticken som krävs installerade" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Kunde inte skapa spellista" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Kunde inte hitta en muxer för %1, kontrollera att du har de korrekta GStreamer-insticken installerade" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Kunde inte hitta en kodare för %1, kontrollera att du har de korrekta GStreamer-insticken installerade" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Kunde inte läsa in Last.fm-radiostationen" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Kunde inte öppna utdatafilen %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Omslagshanterare" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Omslagsbilder från inbäddad bild" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Omslagsbild laddas automatiskt från %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Omslagsbild kastades manuellt" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Omslagsbild inte angiven" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Omslagsbild angiven från %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Omslagsbilder från %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Skapa ny Grooveshark spellista" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Korstona vid automatiskt byte av spår" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Korstona vid manuellt byte av spår" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1476,7 +1543,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Anpassad" @@ -1488,54 +1555,50 @@ msgstr "Anpassad bild:" msgid "Custom message settings" msgstr "Egna meddelandeinställningar" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Anpassad radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Anpassad..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Dbus-sökväg" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dans" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Databas-korruption upptäckt. Läs https://code.google.com/p/clementine-player/wiki/DatabaseCorruption för instruktioner om hur du återställer din databas" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Datum skapad" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Datum ändrad" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Dagar" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "S&tandard" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Sänk volymen med 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Minska volymen med procent" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Sänk volymen" @@ -1543,6 +1606,11 @@ msgstr "Sänk volymen" msgid "Default background image" msgstr "Standardbakgrund" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Standardenhet på %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Standardvärden" @@ -1551,30 +1619,30 @@ msgstr "Standardvärden" msgid "Delay between visualizations" msgstr "Fördröjning mellan visualiseringar" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Ta bort" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Ta bort Grooveshark spellista" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Ta bort nedladdad data" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Ta bort filer" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Ta bort från enhet..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Ta bort från disk..." @@ -1582,31 +1650,31 @@ msgstr "Ta bort från disk..." msgid "Delete played episodes" msgstr "Ta bort uppspelade avsnitt" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Ta bort förinställning" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Radera smart spellista" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Ta bort originalfilerna" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Tar bort filer" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Avköa valda spår" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Avköa spår" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Mål" @@ -1615,7 +1683,7 @@ msgstr "Mål" msgid "Details..." msgstr "Detaljer..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Enhet" @@ -1627,17 +1695,17 @@ msgstr "Enhetsinställningar" msgid "Device name" msgstr "Enhetsnamn" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Enhetsinställningar..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Enheter" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "Dialog" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1672,12 +1740,17 @@ msgstr "Avaktivera tidsvisning" msgid "Disable moodbar generation" msgstr "Inaktivera moodbar-generering" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Inaktiverat" +msgstr "Inaktiverad" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Inaktiverad" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Skiva" @@ -1687,15 +1760,15 @@ msgid "Discontinuous transmission" msgstr "Icke-kontinuerlig sändning" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Visningsalternativ" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Visa on-screen-display" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Gör en fullständig omsökning av biblioteket" @@ -1707,27 +1780,27 @@ msgstr "Konvertera inte någon musik" msgid "Do not overwrite" msgstr "Skriv ej över" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Upprepa inte" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Visa inte i diverse artister" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Blanda inte" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Stoppa inte!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Donera" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Dubbelklicka för att öppna" @@ -1735,12 +1808,13 @@ msgstr "Dubbelklicka för att öppna" msgid "Double clicking a song will..." msgstr "Dubbelklicka på en låt kommer ..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Ladda ner %n avsnitt" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Nedladdningskatalog" @@ -1756,7 +1830,7 @@ msgstr "Hämta medlemskap" msgid "Download new episodes automatically" msgstr "Ladda ner nya avsnitt automatiskt" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Nedladdning köad" @@ -1764,15 +1838,15 @@ msgstr "Nedladdning köad" msgid "Download the Android app" msgstr "Ladda ner Android appen" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Hämta detta album" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Ladda ner det här albumet ..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Ladda ner detta avsnitt" @@ -1780,7 +1854,7 @@ msgstr "Ladda ner detta avsnitt" msgid "Download..." msgstr "Ladda ner..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Laddar ner (%1%)..." @@ -1789,23 +1863,23 @@ msgstr "Laddar ner (%1%)..." msgid "Downloading Icecast directory" msgstr "Ladda ner Icecast-katalog" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Ladda ner Jamendo-katalog" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Hämtar katalog från Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Laddar ner Spotify-insticket" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Hämtar metadata" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Dra för att ändra position" @@ -1815,30 +1889,30 @@ msgstr "Dropbox" #: ui/equalizer.cpp:119 msgid "Dubstep" -msgstr "" +msgstr "Dubstep" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "Längd" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "Dynamisk läge är på" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dynamisk slumpmässig blandning" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Redigera smart spellista..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Redigera etikett \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Redigera tagg..." @@ -1850,16 +1924,16 @@ msgstr "Redigera etiketter" msgid "Edit track information" msgstr "Redigera spårinformation" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Redigera spårinformation..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." -msgstr "Redigera spår information ..." +msgstr "Redigera spårinformation..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Redigera..." @@ -1867,6 +1941,10 @@ msgstr "Redigera..." msgid "Enable Wii Remote support" msgstr "Aktivera stöd för Wii-kontroll" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Aktivera automatisk caching" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Aktivera equalizer" @@ -1881,7 +1959,7 @@ msgid "" "displayed in this order." msgstr "Aktivera underliggande källor för att inkludera dem i sökresultatet.Resultaten kommer att visas i följande ordning." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Aktivera/avaktivera Last.fm-skrobbling" @@ -1909,15 +1987,10 @@ msgstr "Ange en URL för att ladda ner ett omslag från Internet:" msgid "Enter a filename for exported covers (no extension):" msgstr "Ange ett filnamn för exporterade omslag (utan ändelse):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Ange ett nytt namn för denna spellista" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Skriv in en artist eller tagg för att börja lyssna på Last.fm-radio." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1931,7 +2004,7 @@ msgstr "Ange en sökterm här under för att hitta en podsändning på iTunes" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Ange en sökterm här under för att hitta en podsändning på gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Ange söktermer här" @@ -1940,11 +2013,11 @@ msgstr "Ange söktermer här" msgid "Enter the URL of an internet radio stream:" msgstr "Skriv in webbadressen till en radiostation på Internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Ange katalogens namn" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Ange detta IP-nummer i Appen för att ansluta till Clementine." @@ -1952,21 +2025,22 @@ msgstr "Ange detta IP-nummer i Appen för att ansluta till Clementine." msgid "Entire collection" msgstr "Hela samlingen" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Equalizer" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Motsvarar --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Motsvarar --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Fel" @@ -1974,38 +2048,38 @@ msgstr "Fel" msgid "Error connecting MTP device" msgstr "Fel vid anslutning av MTP-enhet" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Fel vid kopiering av låtar" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Fel vid borttagning av låtar" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Fel vid hämtning av Spotify-insticket" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Fel vid insläsning av %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Fel vid laddning av di.fm spellista" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Fel vid bearbetning av %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Fel vid läsning av ljud-CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Någonsin spelade" @@ -2037,7 +2111,7 @@ msgstr "Var sjätte timma" msgid "Every hour" msgstr "Varje timma" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Förutom mellan spår på samma album eller i samma CUE-fil" @@ -2049,7 +2123,7 @@ msgstr "Existerande omslag" msgid "Expand" msgstr "Expandera" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Går ut den %1" @@ -2070,36 +2144,36 @@ msgstr "Exportera nedladdade omslag" msgid "Export embedded covers" msgstr "Exportera inbäddade omslag" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Exporteringen är färdig" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Exporterat %1 omslag av %2 (%3 överhoppade)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2109,42 +2183,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Tona ut vid pausning / tona in vid återupptagning" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Tona ut när ett spår stoppas" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Toning" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Toningslängd" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" -msgstr "" +msgstr "Fel vid läsning av CD-enhet" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Misslyckades hämta katalog" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Misslyckades att hämta podsändning" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Misslyckades att ladda podsändning" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Misslyckades att tolka XML för denna RSS-flöde" @@ -2153,11 +2227,11 @@ msgstr "Misslyckades att tolka XML för denna RSS-flöde" msgid "Fast" msgstr "Snabb" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoriter" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Favoritspår" @@ -2173,19 +2247,19 @@ msgstr "Hämta automatiskt" msgid "Fetch completed" msgstr "Hämtning klar" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Hämtar bibliotek från Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Fel vid hämtning av omslag" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "Filformat" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Filändelse" @@ -2193,19 +2267,23 @@ msgstr "Filändelse" msgid "File formats" msgstr "Filformat" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Filnamn" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Filnamn (utan sökväg)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Filnamnsmönster:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Filstorlek" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2215,7 +2293,7 @@ msgstr "Filtyp" msgid "Filename" msgstr "Filnamn" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Filer" @@ -2223,15 +2301,19 @@ msgstr "Filer" msgid "Files to transcode" msgstr "Filer som skall omkodas" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Hitta låtar i ditt bibliotek som matchar de kriterier du anger." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Hitta denna artisten" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Sätter fingeravtryck på låten" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Avsluta" @@ -2239,7 +2321,7 @@ msgstr "Avsluta" msgid "First level" msgstr "Första nivån" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "FLAC" @@ -2255,12 +2337,12 @@ msgstr "Av licensskäl finns Spotify-stöd i ett separat insticksprogram." msgid "Force mono encoding" msgstr "Tvinga enkanalskodning" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Glöm enhet" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2275,7 +2357,7 @@ msgstr "En enhet tas bort från listan om den glöms och Clementine kommer att b #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2303,31 +2385,23 @@ msgstr "Bildfrekvens" msgid "Frames per buffer" msgstr "Ramar per buffert" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Vänner" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Frusen" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full bas" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full bas + diskant" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full diskant" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer-ljudmotor" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Allmänt" @@ -2335,30 +2409,30 @@ msgstr "Allmänt" msgid "General settings" msgstr "Allmänna inställningar" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Genre" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Hämta adress för att dela Groovesharkspellista" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Hämta adress för att dela Groovesharklåt" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Ladda populära Groovesharklåtar" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Hämtar kanaler" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Hämtar ström" @@ -2370,11 +2444,11 @@ msgstr "Ge den ett namn:" msgid "Go" msgstr "Starta" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Gå till nästa spellisteflik" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Gå till föregående spellisteflik" @@ -2382,7 +2456,7 @@ msgstr "Gå till föregående spellisteflik" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2392,7 +2466,7 @@ msgstr "Erhöll %1 omslagsbild utav %2 (%3 misslyckades)" msgid "Grey out non existent songs in my playlists" msgstr "Gråa ut icke-existerande låtar i mina spellistor" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2400,15 +2474,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark login fel" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Adress för Groovesharkspellista" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Groovesharkradio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Adresser för Groovesharklåtar" @@ -2416,44 +2490,44 @@ msgstr "Adresser för Groovesharklåtar" msgid "Group Library by..." msgstr "Gruppera biblioteket efter..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Gruppera efter" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Gruppera efter album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Gruppera efter artist" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Gruppera efter artist/album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Gruppera efter artist/år - album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Gruppera efter genre/album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Gruppera efter genre/artist/album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruppera" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML-sida inehöll inget RSS-flöde" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "HTTP 3xx statuskod mottagen utan URL, verifiera serverkonfiguration." @@ -2462,7 +2536,7 @@ msgstr "HTTP 3xx statuskod mottagen utan URL, verifiera serverkonfiguration." msgid "HTTP proxy" msgstr "HTTP-proxy" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Glad" @@ -2478,25 +2552,25 @@ msgstr "Hårdvaruinformation är endast tillgänglig när enheten är ansluten." msgid "High" msgstr "Hög" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Hög (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Hög (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Hittade ingen värd, Kontrollera serverns URL. Exempel: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Timmar" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2508,15 +2582,15 @@ msgstr "Jag har inte ett Magnatune-konto" msgid "Icon" msgstr "Ikon" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Ikoner längst upp" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Identifierar låt" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2526,24 +2600,24 @@ msgstr "Om du fortsätter kommer denna enhet att arbeta långsamt och låtar som msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Om du känner till en adress till en podsändnin, ange den här under och tryck Starta" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ignorera \"The\" i artistnamn" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Bilder (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Bilder (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Om %1 dagar" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Om %1 veckor" @@ -2554,7 +2628,7 @@ msgid "" "time a song finishes." msgstr "I dynamiskt läge kommer nya spår väljas och läggas till i spellistan varje gång en låt tar slut." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Inkorg" @@ -2566,135 +2640,135 @@ msgstr "Inkludera albumomslag i notifieringen" msgid "Include all songs" msgstr "Inkludera alla spår" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Okompatibelt Subsonic REST protokoll. Klienten måste uppgraderas." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Okompatibel Subsonic REST protokollsversion. Servern måste uppgraderas." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Ej komplett konfiguration, var vänlig och kontrollera att alla fält är ifyllda." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Öka volymen med 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Öka volymen med procent" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Höj volymen" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Indexerar %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Information" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "Indataalternativ" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Infoga..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Installerad" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Integritetskontroll" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" -msgstr "Internet operatörer" +msgstr "Internetoperatörer" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Felaktig API-nyckel" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Ogiltigt format" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Ogiltig metod" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Ogiltiga parametrar" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Ogiltig resurs angiven" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Ogiltig tjänst" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Felaktig sessionsnyckel" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Fel användarnamn och/eller lösenord" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "Invertera val" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo Mest Lyssnade låtar" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo Topplåtar" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendos favoritspår för månaden" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendos favoritspår för veckan" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendos databas" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Hoppa till spåret som spelas just nu" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Behåll knappar i %1 sekund..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Behåll knappar i %1 sekunder..." @@ -2703,23 +2777,24 @@ msgstr "Behåll knappar i %1 sekunder..." msgid "Keep running in the background when the window is closed" msgstr "Fortsätt köra i bakgrunden när fönstret är stängt" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Behåll originalfilerna" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Kittens" +msgstr "Kattungar" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Språk" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/hörlurar" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Stor hall" @@ -2727,12 +2802,16 @@ msgstr "Stor hall" msgid "Large album cover" msgstr "Stort albumomslag" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Stor sidopanel" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Senast spelad" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Senast spelad" @@ -2740,45 +2819,7 @@ msgstr "Senast spelad" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm Anpassad Radio: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm-bibliotek - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Blandad Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm-grannradio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm-radiostation - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm-artister som liknar %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm-taggradio: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm är upptaget för närvarande, försök igen om ett par minuter" @@ -2786,11 +2827,11 @@ msgstr "Last.fm är upptaget för närvarande, försök igen om ett par minuter" msgid "Last.fm password" msgstr "Last.fm-lösenord" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm-låtstatistik" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm-taggar" @@ -2798,28 +2839,24 @@ msgstr "Last.fm-taggar" msgid "Last.fm username" msgstr "Last.fm-användarnamn" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm-wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Minst omtyckta spår" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Lämna tomt för standardvärdet. Exempel: \"/dev/dsp\", \"front\", etc." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Vänster" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Speltid" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Bibliotek" @@ -2827,24 +2864,24 @@ msgstr "Bibliotek" msgid "Library advanced grouping" msgstr "Avancerad bibliotekgruppering" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Notis om omsökning av biblioteket" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Bibliotekssökning" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Begränsningar" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Lyssna på Groovesharklåtar som baseras efter vad du tidigare lyssnat på." -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2856,15 +2893,15 @@ msgstr "Läs in" msgid "Load cover from URL" msgstr "Ladda omslag från URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Ladda omslag från URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Ladda omslag från hårddisk" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Läs in omslagsbild från disk..." @@ -2872,84 +2909,89 @@ msgstr "Läs in omslagsbild från disk..." msgid "Load playlist" msgstr "Läs in spellista" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Läs in spellista..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Läser in Last.fm-radio" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Läser in MTP-enhet" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Läser in iPod-databas" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Läser in smart spellista" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Laddar låtar" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Läser in ström" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Läser in spår" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Laddar låtinformation" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Läser in..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Läser in filer/webbadresser, ersätter aktuell spellista" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Inloggning" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Misslyckad inloggning" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Logga ut" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Långsiktig förutsägelseprofil (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Älska" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Låg (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Låg (256x256)" @@ -2961,12 +3003,17 @@ msgstr "Låg komplexitetprofil (LC)" msgid "Lyrics" msgstr "Låttexter" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Låttext från %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "MP4 AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2978,15 +3025,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2994,7 +3041,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatude-hämtning" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatude-hämtning slutförd" @@ -3002,15 +3049,20 @@ msgstr "Magnatude-hämtning slutförd" msgid "Main profile (MAIN)" msgstr "Huvudprofil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Gör så!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Gör det så!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Gör spellista tillgänglig offline" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Felformaterat svar" @@ -3023,15 +3075,15 @@ msgstr "Manuell proxykonfiguration" msgid "Manually" msgstr "Manuellt" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Tillverkare" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Markera som lyssnad" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Markera som ny" @@ -3043,17 +3095,21 @@ msgstr "Matcha varje sökterm (OCH)" msgid "Match one or more search terms (OR)" msgstr "Matcha en eller flera söktermer (ELLER)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Max globala sökresultat" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maximal bithastighet" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Mellan (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Mellan (512x512)" @@ -3065,11 +3121,15 @@ msgstr "Medlemskapstyp" msgid "Minimum bitrate" msgstr "Minimal bithastighet" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Minsta buffertfyllnad" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Saknar förinställningar för projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Modell" @@ -3077,20 +3137,20 @@ msgstr "Modell" msgid "Monitor the library for changes" msgstr "Övervaka förändringar i biblioteket" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Mono uppspeling" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Månader" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Stämning" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Stil på stämningsdiagrammet" @@ -3098,15 +3158,19 @@ msgstr "Stil på stämningsdiagrammet" msgid "Moodbars" msgstr "Stämningsdiagram" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Mer" + +#: library/library.cpp:84 msgid "Most played" msgstr "Mest spelade" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Monteringspunkt" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Monteringspunkter" @@ -3115,7 +3179,7 @@ msgstr "Monteringspunkter" msgid "Move down" msgstr "Flytta nedåt" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Flytta till biblioteket..." @@ -3124,7 +3188,7 @@ msgstr "Flytta till biblioteket..." msgid "Move up" msgstr "Flytta uppåt" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musik" @@ -3132,56 +3196,32 @@ msgstr "Musik" msgid "Music Library" msgstr "Musikbibliotek" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Tyst" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Mitt Last.fm Bibliotek" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Min Last.fm Mix Radio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Mitt Last.fm-grannskap" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Min Last.fm rekommenderade radio" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Min Blandade Radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Min Musik" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Mitt grannskap" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Min radiostation" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Mina rekommendationer" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Namn" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Namn" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Namngivningsalternativ" @@ -3189,23 +3229,19 @@ msgstr "Namngivningsalternativ" msgid "Narrow band (NB)" msgstr "Snävt band (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Grannar" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Nätverksproxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Fjärrstyr över nätverk" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Aldrig" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Aldrig spelade" @@ -3214,21 +3250,21 @@ msgstr "Aldrig spelade" msgid "Never start playing" msgstr "Starta aldrig uppspelning" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Ny mapp" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Ny spellista" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Ny smart spellista..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Nya låtar" @@ -3236,24 +3272,24 @@ msgstr "Nya låtar" msgid "New tracks will be added automatically." msgstr "Nya spår läggs till automatiskt." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Nyaste spåren" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Nästa" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Nästa spår" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Nästa vecka" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Ingen analysator" @@ -3261,7 +3297,7 @@ msgstr "Ingen analysator" msgid "No background image" msgstr "Ingen bagrundsbild" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Inga omslag att exportera." @@ -3269,7 +3305,7 @@ msgstr "Inga omslag att exportera." msgid "No long blocks" msgstr "Inga långa block" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Inga träffar hittades. Töm sökrutan för att visa hela spellistan igen." @@ -3283,11 +3319,11 @@ msgstr "Inga korta block" msgid "None" msgstr "Inga" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Ingen av de valda låtarna lämpar sig för kopiering till en enhet" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3295,43 +3331,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Normal blocktyp" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Inte tillgängligt när du använder en dynamisk spellista" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Inte ansluten" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Inte tillräckligt med innehåll" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Inte tillräckligt många fans" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Inte tillräckligt många medlemmar" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Inte tillräckligt med grannar" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Inte installerad" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Inte inloggad" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Inte monterad - dubbelklicka för att montera" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Inget hittades" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Notifieringstyp" @@ -3344,36 +3384,41 @@ msgstr "Notifieringar" msgid "Now Playing" msgstr "Spelas just nu" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Förhandsvisning av notifiering" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" -msgstr "" +msgstr "Av" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg FLAC" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" -msgstr "" +msgstr "På" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3381,11 +3426,11 @@ msgid "" "192.168.x.x" msgstr "Acceptera endast anslutningar från klienter inom dessa ip ranges:⏎ 10.x.x.x⏎ 172.16.0.0 - 172.31.255.255⏎ 192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Tillåt endast uppkopplingar från det lokala nätverket" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Visa endast de första" @@ -3393,23 +3438,23 @@ msgstr "Visa endast de första" msgid "Opacity" msgstr "Opacitet" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Öppna %1 i webbläsare" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Öppna &ljud-CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Öppna OPML fil" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Öppna OPML fil..." @@ -3417,30 +3462,35 @@ msgstr "Öppna OPML fil..." msgid "Open device" msgstr "Öppna enhet" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Öppna fil..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Öppna i Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Öppna i ny spellista" -#: songinfo/echonestbiographies.cpp:96 -msgid "Open in your browser" -msgstr "" +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Öppna i en ny spellista" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: songinfo/echonestbiographies.cpp:97 +msgid "Open in your browser" +msgstr "Öppna i webbläsare" + +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Öppna..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Åtgärden misslyckades" @@ -3460,23 +3510,23 @@ msgstr "Alternativ..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Organisera filer" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Organisera filer..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Organiserar filer..." -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Ursprungliga etiketter" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Övriga flaggor" @@ -3484,7 +3534,7 @@ msgstr "Övriga flaggor" msgid "Output" msgstr "Utgång" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Utgångsenhet" @@ -3492,15 +3542,11 @@ msgstr "Utgångsenhet" msgid "Output options" msgstr "Utdataalternativ" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Utgångsinstick" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Skriv över alla" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Skriv över befintliga filer" @@ -3512,15 +3558,15 @@ msgstr "Skriv endast över mindre" msgid "Owner" msgstr "Ägare" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Sorterar Jamendos katalog" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3529,56 +3575,44 @@ msgstr "Party" msgid "Password" msgstr "Lösenord" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Gör paus" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Gör paus i uppspelning" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Pausad" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" -msgstr "Artist" +msgstr "Utövare" #: ../bin/src/ui_albumcoverexport.h:215 msgid "Pixel" msgstr "Pixel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Vanlig sidorad" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Spela upp" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Spela upp artist eller tagg" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Spela upp artistradio..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Antal uppspelningar" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Spela upp anpassad radio..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Spela upp om stoppad, gör paus vid uppspelning" @@ -3587,45 +3621,42 @@ msgstr "Spela upp om stoppad, gör paus vid uppspelning" msgid "Play if there is nothing already playing" msgstr "Spela om ingenting redan spelas" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Spela upp taggradio..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Spela upp spår nummer från spellistan" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Spela upp/gör paus" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Uppspelning" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Spelaralternativ" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Spellista" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Spellistan slutförd" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Alternativ för spellista" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Spellistetyp" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Spellistor" @@ -3637,23 +3668,23 @@ msgstr "Var god och stäng din webbläsare och återgå till Clementine." msgid "Plugin status:" msgstr "Instickstatus:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podsändning" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Populära låtar" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Poplära låtar under månaden" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Populära låtar idag" @@ -3662,22 +3693,23 @@ msgid "Popup duration" msgstr "Popup-varaktighet" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Förförstärkare" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Inställningar" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Inställningar..." @@ -3713,7 +3745,7 @@ msgstr "Tryck en tangentkombination att använda för" msgid "Press a key" msgstr "Tryck en tangent" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Tryck en tangentkombination till att använda för %1" @@ -3724,20 +3756,20 @@ msgstr "Alternativ för Skön notifiering" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Förhandsvisning" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Föregående" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Föregående spår" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Visa versionsinformation" @@ -3745,21 +3777,25 @@ msgstr "Visa versionsinformation" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Förlopp" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Framgång" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" -msgstr "" +msgstr "Psykadelisk" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Tryck på Wii-kontrollknapp" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Lägg till låtar i slumpmässig ordning" @@ -3767,36 +3803,46 @@ msgstr "Lägg till låtar i slumpmässig ordning" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Kvalitet" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Förfrågar enhet..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Köhanterare" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Kölägg valda spår" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Kölägg spår" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radio (likvärdig ljudstyrka för alla spår)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Regn" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Regn" @@ -3804,48 +3850,48 @@ msgstr "Regn" msgid "Random visualization" msgstr "Slumpmässig visualisering" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Betygsätt den aktuella låten 0 stjärnor" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Betygsätt den aktuella låten 1 stjärnor" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Betygsätt den aktuella låten 2 stjärnor" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Betygsätt den aktuella låten 3 stjärnor" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Betygsätt den aktuella låten 4 stjärnor" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Betygsätt den aktuella låten 5 stjärnor" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Betyg" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Verkligen avbryta?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Gränsen för omdirigering överskriden, verifiera serverkonfiguration." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Uppdatera" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Updatera katalog" @@ -3853,19 +3899,15 @@ msgstr "Updatera katalog" msgid "Refresh channels" msgstr "Uppdatera kanaler" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Uppdatera vän listan" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Uppdatera kanallistan" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Uppdatera strömmar" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3877,8 +3919,8 @@ msgstr "Kom ihåg Wii-kontrollens rörelse" msgid "Remember from last time" msgstr "Kom ihåg från förra gången" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Ta bort" @@ -3886,7 +3928,7 @@ msgstr "Ta bort" msgid "Remove action" msgstr "Ta bort åtgärd" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Ta bort dubbletter från spellistan" @@ -3894,73 +3936,77 @@ msgstr "Ta bort dubbletter från spellistan" msgid "Remove folder" msgstr "Ta bort mapp" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Ta bort från Min Musik" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Ta bort från bokmärken" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Ta bort från favoriter" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Ta bort från spellistan" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Ta bort spellista" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Ta bort spellistor" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Tar bort låtar från Min Musik" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Tar bort låtar från favoriter" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Byt namn på %1 spellista" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Byt namn på Groovesharkspellista" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Döp om spellista" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Döp om spellistan..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Omnumrera spår i denna ordning..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Upprepa" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Upprepa album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Upprepa spellista" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Upprepa spår" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Ersätt den aktuella spellistan" @@ -3969,15 +4015,15 @@ msgstr "Ersätt den aktuella spellistan" msgid "Replace the playlist" msgstr "Ersätt spellistan" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Ersätter mellanslag med understreck" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Replay Gain läge" @@ -3985,24 +4031,24 @@ msgstr "Replay Gain läge" msgid "Repopulate" msgstr "Fyll i igen" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Kräv autentiseringskod" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Återställ" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Återställ låtstatistik" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Starta om spåret, eller spela föregående spår om inom 8 sekunder sedan start." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Begränsa till ASCII-tecken" @@ -4010,15 +4056,15 @@ msgstr "Begränsa till ASCII-tecken" msgid "Resume playback on start" msgstr "Fortsätt uppspelning vid start" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Hämtar Grooveshark Min Musik låtar" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Hämta favoritlåtar från Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Hämta spellistor från Grooveshark" @@ -4032,17 +4078,17 @@ msgstr "Höger" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "Kopiera" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "Kopiera CD-skiva" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." -msgstr "" +msgstr "Kopiera ljudskiva" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4054,25 +4100,25 @@ msgstr "Kör" msgid "SOCKS proxy" msgstr "SOCKS proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "SSL handslaget misslyckades, verifiera serverkonfigurationen. SSLv3 alternativet nedan kan lösa vissa problem." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Säker borttagning av enhet" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Säker borttagning av enheten efter kopiering" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Samplingsfrekvens" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Samplingsfrekvens" @@ -4080,27 +4126,33 @@ msgstr "Samplingsfrekvens" msgid "Save .mood files in your music library" msgstr "Spara .stämningsfiler i ditt musikbibliotek" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Spara skivomslag" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Spara omslag till disk..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Spara bild" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Spara spellista" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Spara spellista" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Spara spellistan..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Spara förinställning" @@ -4116,11 +4168,11 @@ msgstr "Spara statistik i filetiketter om möjligt" msgid "Save this stream in the Internet tab" msgstr "Spara denna ström i Internet-filken" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Spara låtstatistik till låtfiler" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Sparar spår" @@ -4132,7 +4184,7 @@ msgstr "Skalbar samplingsfrekvensprofil (SSR)" msgid "Scale size" msgstr "Skalnings storlek" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Poäng" @@ -4140,10 +4192,14 @@ msgstr "Poäng" msgid "Scrobble tracks that I listen to" msgstr "Skrobbla låtar som jag lyssnar på" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Sök" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Sök" @@ -4151,23 +4207,23 @@ msgstr "Sök" msgid "Search Icecast stations" msgstr "Leta efter stationer på Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Sök på Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Sök i Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Sök Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" -msgstr "" +msgstr "Sök automatiskt" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Sök efter albumomslag..." @@ -4187,21 +4243,21 @@ msgstr "Sök iTunes" msgid "Search mode" msgstr "Sökläge" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Sökalternativ" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Sökresultat" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Söktermer" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Söker på Grooveshark" @@ -4209,27 +4265,27 @@ msgstr "Söker på Grooveshark" msgid "Second level" msgstr "Andra nivån" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Hoppa bakåt" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Hoppa framåt" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Hoppa till en relativ position i spåret som spelas för närvarande" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Hoppa till en absolut position i spåret som spelas för närvarande" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Välj alla" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Välj ingen" @@ -4237,7 +4293,7 @@ msgstr "Välj ingen" msgid "Select background color:" msgstr "Välj bakgrundsfärg:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Väl en bakgrundsbild" @@ -4253,15 +4309,15 @@ msgstr "Väl förgrundsfärg:" msgid "Select visualizations" msgstr "Välj visualiseringar" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Välj visualiseringar..." #: ../bin/src/ui_transcodedialog.h:219 ../bin/src/ui_ripcd.h:319 msgid "Select..." -msgstr "" +msgstr "Välj..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Serienummer" @@ -4273,51 +4329,51 @@ msgstr "Server URL" msgid "Server details" msgstr "Serverdetaljer" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Tjänst inte tillgänglig" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Ställ in %1 till \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Ställ in volymen till procent" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Ställ in värde för alla valda spår..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Inställningar" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Snabbtangent" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Snabbtangent för %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Snabbtangent för %1 finns redan" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Visa" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Visa notifiering" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Visa en lysande animation på det nuvarande spåret" @@ -4345,15 +4401,15 @@ msgstr "Visa en popup från notifieringsytan" msgid "Show a pretty OSD" msgstr "Visa en skön notifiering" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Visa ovanför statusraden" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Visa alla låtar" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Visa alla låtarna" @@ -4365,32 +4421,36 @@ msgstr "Visa omslagsbilder i biblioteket" msgid "Show dividers" msgstr "Visa avdelare" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Visa full storlek..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Visa grupper i globala sökresultat" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Visa i filhanterare..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." -msgstr "" +msgstr "Visa i biblioteket" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Visa i diverse artister" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Visa stämningsdiagram" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Visa endast dubbletter" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Visa otaggade endast" @@ -4399,8 +4459,8 @@ msgid "Show search suggestions" msgstr "Visa sökförslag" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Visa knapparna \"Älska\" och \"Blockera\"" +msgid "Show the \"love\" button" +msgstr "Visa knappen \"Älska\"" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4414,27 +4474,27 @@ msgstr "Visa notifieringsikon" msgid "Show which sources are enabled and disabled" msgstr "Visa vilka källor som är aktiva/inaktiva" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Visa/dölj" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Blanda" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Blanda album" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Blanda allt" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Blanda spellistan" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Blanda låtar i detta album" @@ -4450,7 +4510,7 @@ msgstr "Logga ut" msgid "Signing in..." msgstr "Loggar in..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Liknande artister" @@ -4462,43 +4522,51 @@ msgstr "Storlek" msgid "Size:" msgstr "Storlek:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Gå bakåt i spellista" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Antal överhoppningar" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Gå framåt i spellista" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Hoppa över valda spår" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Hoppa över spår" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Liten omslagsbild" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Liten sidopanel" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Smart spellista" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Smarta spellistor" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4506,11 +4574,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Låtinformation" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Låtinfo" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Spektrogram" @@ -4530,15 +4598,23 @@ msgstr "Sortera på genre (ordning efter popularitet)" msgid "Sort by station name" msgstr "Sortera efter stationsnamn" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Sortera spellistors innehåll i bokstavsordning" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Ordna låtar efter" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sortering" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Källa" @@ -4554,7 +4630,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Fel vid inloggning på Spotify" @@ -4562,7 +4638,7 @@ msgstr "Fel vid inloggning på Spotify" msgid "Spotify plugin" msgstr "Spotify-insticksprogram" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify-insticksprogrammet är inte installerat" @@ -4570,77 +4646,77 @@ msgstr "Spotify-insticksprogrammet är inte installerat" msgid "Standard" msgstr "Standard" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Stjärnmärkta" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "Starta kopiering" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Starta spellistan som spelas för närvarande" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Starta omkodning" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Skriv nånting i sökrutan ovan för att få sökresultat i denna lista" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Startar %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Startar..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stationer" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Stoppa" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Stoppa efter" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Stoppa efter detta spår" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Stoppa uppspelning" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Sluta spela efter aktuellt spår" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" -msgstr "" +msgstr "Sluta spela efter spår: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Stoppad" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Ström" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4650,7 +4726,7 @@ msgstr "För att streama från Subsonics servrar krävs en giltig licens efter e msgid "Streaming membership" msgstr "Strömmningsmedlemskap" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Bevakade spellistor" @@ -4658,7 +4734,7 @@ msgstr "Bevakade spellistor" msgid "Subscribers" msgstr "Prenumeranter" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4666,12 +4742,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Lyckades!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Skrev %1 med lyckat resultat" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Föreslagna etiketter" @@ -4680,13 +4756,13 @@ msgstr "Föreslagna etiketter" msgid "Summary" msgstr "Sammanfattning" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Väldigt hög (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Super high (2048x2048)" @@ -4698,43 +4774,35 @@ msgstr "Stödda format" msgid "Synchronize statistics to files now" msgstr "Synkronisera statistik till filerna nu" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Synkroniserar Spotify-inkorg" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Synkroniserar Spotify-spellista" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Synkroniserar stjärnmärkta spår i Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Systemfärger" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Flikar längst upp" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Tagg" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Etiketthämtare" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Taggradio" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Önskad bithastighet" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4742,11 +4810,11 @@ msgstr "Techno" msgid "Text options" msgstr "Textalternativ" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Tack till" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Kommandot \"%1\" kunde inte startas." @@ -4755,17 +4823,12 @@ msgstr "Kommandot \"%1\" kunde inte startas." msgid "The album cover of the currently playing song" msgstr "Albumomslaget på den nu spelande låten." -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Katalogen %1 är inte giltig" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Spellistan '%1' var tom eller kunde inte läsas in." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Det andra värdet måste vara större än det första!" @@ -4773,40 +4836,40 @@ msgstr "Det andra värdet måste vara större än det första!" msgid "The site you requested does not exist!" msgstr "Den webbplats du söker finns inte!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Webbplatsen du söker är inte en bild!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Testperioden för Subsonics server är över. Var vänlig och donera för att få en licensnyckel. Besök subsonic.org för mer detaljer." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Den version av Clementine du precis uppdaterade till kräver en fullständig omsökning av biblioteket på grund av dessa nya funktioner:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Det finns 'andra låtar' i det här albumet." -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Det uppstod ett fel med kommunikationen till gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Ett fel uppstod vid hämtning av metadatan från Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Det uppstod ett fel med kommunikationen till iTunes" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4818,13 +4881,13 @@ msgid "" "deleted:" msgstr "Fel uppstod vid borttagning av några låtar. Följande filer kunde inte kopieras:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Filerna kommer att tas bort från enheten, är du säker på att du vill fortsätta?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4844,13 +4907,13 @@ msgstr "Dessa inställningar används i dialogrutan \"Omkoda musik\", och vid ko msgid "Third level" msgstr "Tredje nivån" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Den här åtgärden kommer skapa en databas som kan bli så stor som 150 Mb.\nVill du fortsätta i alla fall?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Detta album är inte tillgängligt i det begärda formatet" @@ -4864,11 +4927,11 @@ msgstr "Denna enhet måste vara ansluten och öppnad före Clementine kan se vil msgid "This device supports the following file formats:" msgstr "Denna enhet stöder följande filformat:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Denna enhet kommer inte att fungera ordentligt" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Detta är en MTP-enhet, men du kompilerade Clementine utan stöd av libmtp." @@ -4877,7 +4940,7 @@ msgstr "Detta är en MTP-enhet, men du kompilerade Clementine utan stöd av libm msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Detta är en iPod, men du kompilerade Clementine utan stöd av libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4887,33 +4950,33 @@ msgstr "Detta är första gången du ansluter denna enhet. Clementine kommer nu msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Detta alternativ kan ändras i \"Beteende\" i Inställningar" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Denna ström är endast för betalkunder" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Denna typ av enhet är inte stödd: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Titel" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "För att starta Groovesharkradio bör du först ha lyssnat på några låtar från Grooveshark." -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Idag" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Växla Pretty OSD" @@ -4921,49 +4984,53 @@ msgstr "Växla Pretty OSD" msgid "Toggle fullscreen" msgstr "Växla fullskärm" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Växla köstatus" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Växla skrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Växla synlighet för Pretty på-skärm-visning" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Imorgon" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "För många omdirigeringar" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" -msgstr "Topp låtar" +msgstr "Topplåtar" #: ../bin/src/ui_albumcovermanager.h:221 msgid "Total albums:" msgstr "Album totalt:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Totalt antal byte överfört" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Totalt antal nätverksbegäran" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Spår" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Spår" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Omkoda musik" @@ -4973,9 +5040,9 @@ msgstr "Omkodningslogg" #: ../bin/src/ui_transcodersettingspage.h:173 msgid "Transcoding" -msgstr "Omkodar" +msgstr "Omkodare" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Omkodar %1 filer med %2 trådar" @@ -4984,11 +5051,11 @@ msgstr "Omkodar %1 filer med %2 trådar" msgid "Transcoding options" msgstr "Omkodningsalternativ" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbin" @@ -4996,72 +5063,72 @@ msgstr "Turbin" msgid "Turn off" msgstr "Stäng av" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Webbadress(er)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One lösenord" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One användarnamn" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Ultrabredband (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Det går inte att hämta %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Okänt" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Okänd innehållstyp" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Okänt fel" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Ta bort omslag" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Hoppa inte över valda spår" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Hoppa inte över valt spår" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Avprenumerera" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Kommande konserter" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Uppdatering" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Uppdatera Groovesharkspellista " -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Uppdatera alla podsändningar" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Uppdatera ändrade bibliotekskataloger" @@ -5069,7 +5136,7 @@ msgstr "Uppdatera ändrade bibliotekskataloger" msgid "Update the library when Clementine starts" msgstr "Uppdatera biblioteket när Clementine startar" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Uppdatera denna podsändning" @@ -5077,21 +5144,21 @@ msgstr "Uppdatera denna podsändning" msgid "Updating" msgstr "Uppdatera" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Uppdaterar %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Uppdaterar %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Uppdaterar biblioteket" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Användning" @@ -5099,11 +5166,11 @@ msgstr "Användning" msgid "Use Album Artist tag when available" msgstr "Använd om möjligt album artist tagg" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Använd GNOMEs snabbtangenter" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Använd Replay Gain-metadata om det finns tillgängligt" @@ -5123,7 +5190,7 @@ msgstr "Använd en egen färguppsättning." msgid "Use a custom message for notifications" msgstr "Använd ett eget meddelande för notifieringar" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Använd en nätverks fjärrkontroll" @@ -5163,20 +5230,20 @@ msgstr "Använd systemets proxy inställningar" msgid "Use volume normalisation" msgstr "Använd ljudnormalisering" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Använd" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Användaren %1 har inte ett Grooveshark Anywhere konto" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Användargränssnitt" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5198,12 +5265,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Variabel bithastighet" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Diverse artister" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Version %1" @@ -5216,7 +5283,7 @@ msgstr "Visa" msgid "Visualization mode" msgstr "Visualiseringsläge" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Visualiseringar" @@ -5224,11 +5291,15 @@ msgstr "Visualiseringar" msgid "Visualizations Settings" msgstr "Inställningar för visualiseringar" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Avkänning av röstaktivitet" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Volym %1%" @@ -5246,11 +5317,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Varna mig när jag stänger en spellistsflik" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "WAV" @@ -5258,7 +5329,7 @@ msgstr "WAV" msgid "Website" msgstr "Webbsida" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Veckor" @@ -5284,32 +5355,32 @@ msgstr "Försök med..." msgid "Wide band (WB)" msgstr "Bredband (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii-kontroll %1: aktiverad" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii-kontroll %1: ansluten" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii-kontroll %1: kritisk batterinivå (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii-kontroll %1: inaktiverad" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii-kontroll %1: frånkopplad" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii-kontroll %1: låg batterinivå (%2%)" @@ -5330,7 +5401,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media-ljud" @@ -5338,25 +5409,25 @@ msgstr "Windows Media-ljud" msgid "Without cover:" msgstr "Utan omslag:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Vill du flytta på 'andra låtar' i det här albumet till Blandade Artister också?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Vill du köra en fullständig omsökning nu?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Skriv all låtstatistik till låtfilerna" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Fel användarnamn eller lösenord." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5368,11 +5439,11 @@ msgstr "År" msgid "Year - Album" msgstr "År - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "År" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Igår" @@ -5380,13 +5451,13 @@ msgstr "Igår" msgid "You are about to download the following albums" msgstr "Du är på väg att hämta de följande albumen" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Du är på väg att ta bort %1 spellista från dina favoriter, är du säker?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5396,12 +5467,12 @@ msgstr "Du är på väg att ta bort en spellista som inte är en av dina favoris msgid "You are not signed in." msgstr "Du är inte inloggad." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Du är inloggad som %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Du är inloggad." @@ -5409,13 +5480,13 @@ msgstr "Du är inloggad." msgid "You can change the way the songs in the library are organised." msgstr "Du kan ändra hur låtarna i biblioteket är organiserade." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." -msgstr "Du kan lyssna gratis utan ett konto, men Premium användare kan lyssna på strömmar med högre kvalité utan reklam." +msgstr "Du kan lyssna gratis utan ett konto, men premiumanvändare kan lyssna på strömmar med högre kvalité utan reklam." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5425,13 +5496,6 @@ msgstr "Du kan lyssna på Magnatune-låtar gratis utan ett konto. Köp av ett me msgid "You can listen to background streams at the same time as other music." msgstr "Du kan lyssna på bakgrundströmmar samtidigt som du lyssnar på annan musik." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Du kan skrobbla spår gratis, men endast betalkunder kan strömma Last.fm-radio från Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Du kan använda din Wii-kontroll som en fjärrkontroll för Clementine. Se sidan på Clementine-wikin för mer information.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Du har inte ett Grooveshark Anywhere konto." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Du har inget Spotify Premium konto" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Du har inte någon aktiv prenumeration" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Du har loggats ur Spotify, ange ditt lösenord på nytt i dialogrutan." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Du har loggats ut från Spotify, ange ditt lösenord på nytt." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Du älskar detta spår" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Du behöver starta Systeminställningar och tillåta Clementine att \"kontrollera din dator\" för att använda globala snabbtangenter i Clementine." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5476,17 +5554,11 @@ msgstr "Du behöver starta Systeminställningar och slå på \"\n" "Language-Team: Telugu (http://www.transifex.com/projects/p/clementine/language/te/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -15,7 +15,7 @@ msgstr "" "Language: te\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -40,9 +40,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -55,11 +55,16 @@ msgstr "" msgid " seconds" msgstr "సెకనులు" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "పాటలు" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 గీతమాలికలు" @@ -69,12 +74,12 @@ msgstr "%1 గీతమాలికలు" msgid "%1 days" msgstr "%1 రోజులు" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 రోజుల మునుపు" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -84,48 +89,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 పాటలజాబితాలు (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 ఎంచుకున్నారు" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 పాట" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 పాటలు" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 పాటలు కనుగొన్నాము" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 పాటలు కనుగొన్నాము (%2 చూపిస్తున్నాము)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 పాటలు" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 బదిలీ చేశాము" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 మిగతా శ్రోతలు" @@ -139,18 +144,21 @@ msgstr "మొత్తం‌ %L1 ఆటలు" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n విఫలమయ్యాయి" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n పూర్తయ్యాయి" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n మిగిలాయి" @@ -162,24 +170,24 @@ msgstr "&పాఠ్యాన్ని సమలేఖనం" msgid "&Center" msgstr "&మధ్యస్థం" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&అనురూపితం" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -187,23 +195,23 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -211,23 +219,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -247,14 +255,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -264,7 +268,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -272,12 +276,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -288,6 +286,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -296,38 +305,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -347,36 +356,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -388,11 +396,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -408,39 +420,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -452,11 +464,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -520,6 +532,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -528,22 +544,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -552,6 +580,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -581,15 +613,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -597,12 +629,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -610,11 +642,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -624,35 +656,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -661,19 +694,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -698,30 +731,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -730,13 +763,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -744,52 +777,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -797,9 +825,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -807,7 +839,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -823,7 +855,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -831,15 +863,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -860,7 +892,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -868,11 +900,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -892,18 +920,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -911,7 +938,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -927,7 +959,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -941,11 +973,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -957,43 +989,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1003,15 +1058,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1027,11 +1086,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1040,7 +1099,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1048,17 +1107,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1071,8 +1130,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1094,8 +1153,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1109,20 +1168,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1134,11 +1186,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1148,7 +1200,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1163,19 +1218,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1183,73 +1238,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1257,11 +1317,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1271,12 +1331,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1292,17 +1356,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1310,156 +1378,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "" @@ -1467,7 +1531,7 @@ msgstr "" msgid "Ctrl+Up" msgstr "" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1479,54 +1543,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1534,6 +1594,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1542,30 +1607,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1573,31 +1638,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1606,7 +1671,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1618,15 +1683,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1663,12 +1728,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1678,15 +1748,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1698,27 +1768,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1726,12 +1796,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1747,7 +1818,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1755,15 +1826,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1771,7 +1842,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1780,23 +1851,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1816,20 +1887,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1841,16 +1912,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1858,6 +1929,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1872,7 +1947,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1900,15 +1975,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1922,7 +1992,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1931,11 +2001,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1943,21 +2013,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1965,38 +2036,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2028,7 +2099,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2040,7 +2111,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2061,36 +2132,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2100,42 +2171,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2144,11 +2215,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2164,11 +2235,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2176,7 +2247,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2184,19 +2255,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2206,7 +2281,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2214,15 +2289,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2230,7 +2309,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2246,12 +2325,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2266,7 +2345,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2294,31 +2373,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2326,30 +2397,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2361,11 +2432,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2373,7 +2444,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2383,7 +2454,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2391,15 +2462,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2407,44 +2478,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2453,7 +2524,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2469,25 +2540,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2499,15 +2570,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2517,24 +2588,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2545,7 +2616,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2557,36 +2628,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2594,55 +2665,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2650,42 +2721,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2694,11 +2765,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2706,11 +2778,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2718,12 +2790,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2731,45 +2807,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2777,11 +2815,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2789,28 +2827,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2818,24 +2852,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2847,15 +2881,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2863,84 +2897,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2952,12 +2991,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2969,15 +3013,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -2985,7 +3029,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2993,15 +3037,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3014,15 +3063,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3034,17 +3083,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3056,11 +3109,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3068,20 +3125,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3089,15 +3146,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3106,7 +3167,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3115,7 +3176,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3123,56 +3184,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3180,23 +3217,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3205,21 +3238,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3227,24 +3260,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3252,7 +3285,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3260,7 +3293,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3274,11 +3307,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3286,43 +3319,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3335,36 +3372,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3372,11 +3414,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3384,23 +3426,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3408,30 +3450,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3451,23 +3498,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3475,7 +3522,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3483,15 +3530,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3503,15 +3546,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3520,20 +3563,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3542,34 +3585,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3578,45 +3609,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3628,23 +3656,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3653,22 +3681,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3704,7 +3733,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3715,20 +3744,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3736,21 +3765,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3758,7 +3791,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3766,28 +3804,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3795,48 +3838,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3844,19 +3887,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3868,8 +3907,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3877,7 +3916,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3885,73 +3924,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3960,15 +4003,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3976,24 +4019,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4001,15 +4044,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4029,11 +4072,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4045,25 +4088,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4071,27 +4114,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4107,11 +4156,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4123,7 +4172,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4131,10 +4180,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4142,23 +4195,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4178,21 +4231,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4200,27 +4253,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4228,7 +4281,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4244,7 +4297,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4252,7 +4305,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4264,51 +4317,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4336,15 +4389,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4356,32 +4409,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4390,7 +4447,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4405,27 +4462,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4441,7 +4498,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4453,43 +4510,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4497,11 +4562,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4521,15 +4586,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4545,7 +4618,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4553,7 +4626,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4561,77 +4634,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4641,7 +4714,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4649,7 +4722,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4657,12 +4730,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4671,13 +4744,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4689,43 +4762,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4733,11 +4798,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4746,17 +4811,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4764,40 +4824,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4809,13 +4869,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4835,13 +4895,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4855,11 +4915,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4868,7 +4928,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4878,33 +4938,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4912,27 +4972,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4940,21 +5000,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4966,7 +5030,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4975,11 +5039,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4987,72 +5051,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5060,7 +5124,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5068,21 +5132,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5090,11 +5154,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5114,7 +5178,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5154,20 +5218,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5189,12 +5253,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5207,7 +5271,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5215,11 +5279,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5237,11 +5305,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5249,7 +5317,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5275,32 +5343,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5321,7 +5389,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5329,25 +5397,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5359,11 +5427,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5371,13 +5439,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5387,12 +5455,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5400,13 +5468,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5416,13 +5484,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5467,17 +5542,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5485,42 +5554,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5540,19 +5610,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5562,20 +5632,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5583,11 +5653,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5595,54 +5665,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5654,36 +5725,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/tr.po b/src/translations/tr.po index 15470da22..f950e5811 100644 --- a/src/translations/tr.po +++ b/src/translations/tr.po @@ -24,7 +24,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 15:04+0000\n" +"PO-Revision-Date: 2014-05-11 11:39+0000\n" "Last-Translator: volkangezer \n" "Language-Team: Turkish (http://www.transifex.com/projects/p/clementine/language/tr/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -32,7 +32,7 @@ msgstr "" "Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -57,9 +57,9 @@ msgstr " günler" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -72,11 +72,16 @@ msgstr " pt" msgid " seconds" msgstr " saniye" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " şarkılar" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 şarkı)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albüm" @@ -86,12 +91,12 @@ msgstr "%1 albüm" msgid "%1 days" msgstr "%1 gün" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 gün önce" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%2 üzerinde %1" @@ -101,48 +106,48 @@ msgstr "%2 üzerinde %1" msgid "%1 playlists (%2)" msgstr "%1 çalma listesi (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 seçili" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 şarkı" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 şarkı" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 şarkı bulundu" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 şarkı bulundu (%2 tanesi gösteriliyor)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 parça" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 aktarıldı" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev modülü" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 başka dinleyici" @@ -156,18 +161,21 @@ msgstr "%L1 toplam çalma" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n başarısız" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n tamamlandı" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n kaldı" @@ -179,24 +187,24 @@ msgstr "&Metni hizala" msgid "&Center" msgstr "&Ortala" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Özel" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Ekler" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Yardım" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "&Gizle %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Gizle..." @@ -204,23 +212,23 @@ msgstr "&Gizle..." msgid "&Left" msgstr "&Sol" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Müzik" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Hiçbiri" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Çalma Listesi" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Çık" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Tekrar kipi" @@ -228,23 +236,23 @@ msgstr "Tekrar kipi" msgid "&Right" msgstr "&Sağ" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Rastgele kipi" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Sütunları pencereye sığacak şekilde ayarla" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Araçlar" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(her şarkı için farklı)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...ve tüm Amarok katkıcılarına" @@ -264,14 +272,10 @@ msgstr "0px" msgid "1 day" msgstr "1 gün" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 parça" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -281,7 +285,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 rastgele parça" @@ -289,12 +293,6 @@ msgstr "50 rastgele parça" msgid "Upgrade to Premium now" msgstr "Şimdi Premium üyeliğine geçin" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Bir yeni hesap oluştur veya parolayı sıfırla" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -305,6 +303,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Eğer işaretli değilse, Clementine beğenilerinizi ve diğer istatistikleri, sadece ayrı bir veritabanında saklayıp dosyalarınızı değiştirmeyecektir.

İşaretli ise, istatistikler hem veritabanına hem de her dosya değişiminde doğrudan dosyalara kaydedilecektir.

Lütfen, bu işlem için bir standart olmadığından ve bu işlem her biçim için çalışmayabileceğinden, diğer müzik oynatıcılar okuyamayabilir.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Aramayı ilgili alanla sınırlamak için bir kelimenin önüne ilgili alanı ekleyin. Örn. artist:Bode Bode kelimesini içeren tüm sanatçıları kütüphanede arar.

Kullanılabilir alanlar: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -313,38 +322,38 @@ msgid "" "activated.

" msgstr "

Bu şarkının beğenilerini ve isatistiklerini, tüm kütüphanenizin şarkılarındaki dosya etiketlerine yazacaktır.

Eğer "Beğeni ve istatistikleri dosya etiketinde sakla" seçeneği her zaman etkin ise, gerekli değildir.

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

% ile başlayan özellikler, örneğin: %artist %album %title

\n\n

İşaret içeren metnin bölümlerini süslü parantez ile sarmalarsanız, işaret boşsa o bölüm görünmeyecektir.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Bir Grooveshark Anywhere hesabı gereklidir." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Bir Spotify Premium hesabı gereklidir." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Kod doğru girilmişse, yalnızca bir istemciye bağlanabilirsiniz." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Akıllı çalma listesi, kütüphanenizden gelen şarkıların dinamik bir listesidir. Şarkı seçmenin farklı yollarını sunan farklı akıllı şarkı listesi türleri vardır." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Bir şarkı, eğer bu koşullara uyarsa çalma listesine eklenecektir." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -364,36 +373,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "TÜM ŞEREF HYPNOTOAD'A GİTSİN" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "İptal" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1 Hakkında" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Clementine Hakkında..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt Hakkında..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Hesap ayrıntıları" @@ -405,11 +413,15 @@ msgstr "Hesap detayları (Premium)" msgid "Action" msgstr "Eylem" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wiiremote etkinleştir/pasifleştir" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Etkinlik akışı" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Podcast Ekle" @@ -425,39 +437,39 @@ msgstr "Bildirim türü olarak yeni bir satır ekleyin" msgid "Add action" msgstr "Eylem ekle" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Başka bir yayın ekle..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Dizin ekle..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Dosya ekle" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Dosyayı dönüştürücüye ekle" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Dosyayı/dosyaları dönüştürücüye ekle" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Dosya ekle..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Dönüştürülecek dosyaları ekle" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Klasör ekle" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Klasör ekle..." @@ -469,11 +481,11 @@ msgstr "Yeni klasör ekle..." msgid "Add podcast" msgstr "Podcast ekle" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Podcast ekle..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Arama terimi ekle" @@ -537,6 +549,10 @@ msgstr "Şarkı atlama sayısı ekle" msgid "Add song title tag" msgstr "Şarkı adı etiketi ekle" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Şarkıyı önbelleğe ekle" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Şarkıya parça etiketi ekle" @@ -545,22 +561,34 @@ msgstr "Şarkıya parça etiketi ekle" msgid "Add song year tag" msgstr "Yıl etiketi ekle" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "\"Beğendim\" düğmesi tıklandığında şarkıları \"Müziklerim\"e ekle" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Yayın ekle..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Grooveshark'i favorilere ekle" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Grooveshark'i müzik listelerine ekle" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Müziklerime Ekle" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Başka bir çalma listesine ekle" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Yer imlerine ekle" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Çalma listesine ekle" @@ -569,6 +597,10 @@ msgstr "Çalma listesine ekle" msgid "Add to the queue" msgstr "Kuyruğa ekle" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Kullanıcı/grubu yer imlerine ekle" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "wiimotedev eylemi ekle" @@ -598,15 +630,15 @@ msgstr "Bugün eklenenler" msgid "Added within three months" msgstr "Son üç ay içinde eklenenler" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Parçayı müziklerime ekliyor" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Şarkı favorilere ekleniyor" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Gelişmiş gruplama..." @@ -614,12 +646,12 @@ msgstr "Gelişmiş gruplama..." msgid "After " msgstr "Sonra " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Kopyalandıktan sonra..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -627,11 +659,11 @@ msgstr "Kopyalandıktan sonra..." msgid "Album" msgstr "Albüm" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Albüm (tüm parçalar için ideal ses yüksekliği)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -641,35 +673,36 @@ msgstr "Albüm sanatçısı" msgid "Album cover" msgstr "Albüm kapağı" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Jamendo.com'daki albüm bilgileri..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Kapak resmine olan albümler" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Kapak resmi olmayan albümler" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Tüm Dosyalar (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Tüm şeref Hypnotoad'a gitsin!" +msgstr "All Glory to the Hypnotoad!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Tüm albümler" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Tüm sanatçılar" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Tüm dosyalar (*)" @@ -678,19 +711,19 @@ msgstr "Tüm dosyalar (*)" msgid "All playlists (%1)" msgstr "Tüm çalma listeleri (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Tüm çevirmenler" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Tüm parçalar" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Bir istemciye bu bilgisayardan müzik indirmesine izin ver." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "İndirmelere izin ver" @@ -715,30 +748,30 @@ msgstr "Ana pencereyi her zaman göster" msgid "Always start playing" msgstr "Her zaman çalarak başlat" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Spotify'ın Clementine'de kullanılması için harici bir eklenti gerekmektedir. Şimdi indirmek ve kurulumunu yapmak ister misiniz?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "iTunes veritabanı yüklenirken hata oluştu" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "'%1' dosyasına metadata yazarken hata oluştu" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Belirlenemeyen bir hata oluştu." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Ve:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Öfkeli" @@ -747,13 +780,13 @@ msgstr "Öfkeli" msgid "Appearance" msgstr "Görünüm" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Çalma listesine dosya/URL ekle" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Şu anki çalma listesine ekle" @@ -761,52 +794,47 @@ msgstr "Şu anki çalma listesine ekle" msgid "Append to the playlist" msgstr "Çalma listesine ekle" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Kesintiyi engellemek için sıkıştırma uygula" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "\"%1\" ayarını silmek istediğinizden emin misiniz?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Bu çalan listeyi silmek istediğinizden emin misiniz?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Bu şarkının istatistik bilgisini sıfırlamak istiyor musunuz?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Şarkıların istatistiklerini, kütüphanenizdeki tüm şarkıların kendi dosyalarına yazmak istediğinizden emin misiniz?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Sanatçı" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Sanatçı bilgisi" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Sanatçı radyosu" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Sanatçı etiketleri" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Sanatçının kısaltması" @@ -814,9 +842,13 @@ msgstr "Sanatçının kısaltması" msgid "Audio format" msgstr "Ses biçimi" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Ses çıkışı" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Kimlik doğrulama başarısız" @@ -824,7 +856,7 @@ msgstr "Kimlik doğrulama başarısız" msgid "Author" msgstr "Yazar" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Yazarlar" @@ -840,7 +872,7 @@ msgstr "Otomatik güncelleme" msgid "Automatically open single categories in the library tree" msgstr "Kütüphane ağacında tek kategori olanları otomatik olarak aç" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Mevcut" @@ -848,15 +880,15 @@ msgstr "Mevcut" msgid "Average bitrate" msgstr "Ortalama bit oranı" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Ortalama resim boyutu" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC Podcastları" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -877,7 +909,7 @@ msgstr "Arkaplan resmi" msgid "Background opacity" msgstr "Artalan saydamlığı" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Veritabanını yedekliyor" @@ -885,11 +917,7 @@ msgstr "Veritabanını yedekliyor" msgid "Balance" msgstr "Denge" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Yasakla" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Bar çözümleyici" @@ -909,18 +937,17 @@ msgstr "Davranış" msgid "Best" msgstr "En iyi" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "%1 sitesinden biyografi" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit oranı" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -928,7 +955,12 @@ msgstr "Bit oranı" msgid "Bitrate" msgstr "Veri Akış Hızı" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Veri Akış Hızı" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blok çözümleyici" @@ -944,7 +976,7 @@ msgstr "Bulanıklık miktarı" msgid "Body" msgstr "Gövde" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom çözümleyici" @@ -958,11 +990,11 @@ msgstr "Kutu" msgid "Browse..." msgstr "Gözat..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Önbellek süresi" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Arabelleğe alınıyor" @@ -974,43 +1006,66 @@ msgstr "Ancak şu kaynaklar pasif:" msgid "Buttons" msgstr "Düğmeler" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Öntanımlı olarak, Grooveshark şarkıları eklenme tarihine göre sıralar" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE desteği" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Önbellek yolu:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Önbellekleme" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Önbelleklenen %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "İptal" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Resim doğrulaması gerekli.\nBu sorunu çözmek için Vk.com'da tarayıcınızla oturum açmayı deneyin." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Kapak resmini değiştir" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Yazı boyutunu değiştir..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Tekrar kipin değiştir" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Kısayolu değiştir..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Karıştırma kipini değiştir" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Dili değiştir" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1020,15 +1075,19 @@ msgstr "Mono çalma ayarını değiştirmek sonraki şarkılarda da etkili olur" msgid "Check for new episodes" msgstr "Yeni bölümler için kontrol et" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Güncellemeleri denetle..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Vk.com önbellek dizinini seç" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Akıllı çalma listesi için isim seçin" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Otomatik seç" @@ -1044,11 +1103,11 @@ msgstr "Yazı tipi seç..." msgid "Choose from the list" msgstr "Listeden seç" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Çalma listesinin nasıl dizildiğini ve kaç şarkı içereceğini seçin." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Podcast indirme dizinini seç" @@ -1057,7 +1116,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Şarkı sözü ararken Clementine'in kullanacağı siteleri seçin." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Klasik" @@ -1065,17 +1124,17 @@ msgstr "Klasik" msgid "Cleaning up" msgstr "Temizliyor" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Temizle" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Çalma listesini temizle" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1088,8 +1147,8 @@ msgstr "Clementine Hatası" msgid "Clementine Orange" msgstr "Clementine Turuncu" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine Görselleştirme" @@ -1111,9 +1170,9 @@ msgstr "Clementine Dropbox'a yüklediğiniz müzikleri oynatabilir" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine Google Drive'a yüklediğiniz müzikleri oynatabilir" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine Ubuntu One'a yüklediğiniz müzikleri oynatabilir" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine, OneDrive'a yüklediğiniz müziği oynatabilir" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1126,20 +1185,13 @@ msgid "" "an account." msgstr "Clementine, diğer bilgisayarlar ve podcast uygulamaları ile abonelik listesini senkronize edebilirsiniz. bir hesap oluşturun ." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine projectM görsellerini yükleyemedi. Clementine programını düzgün yüklediğinizi kontrol edin." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine bağlantı sorunlarından dolayı abone bilgilerinize ulaşamadı. Çalınan şarkılar ön belleğe kaydedilecek ve daha sonra Last.fm'e gönderilecek." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine resim görüntüleyici" @@ -1151,11 +1203,11 @@ msgstr "Clementine bu dosya için sonuç bulamadı" msgid "Clementine will find music in:" msgstr "Clementine müzikleri şurada bulacak:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Parça eklemek için buraya tıklayın" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1165,7 +1217,10 @@ msgstr "Bu çalma listesini beğenmek için buraya tıkladığınızda, kenar ç msgid "Click to toggle between remaining time and total time" msgstr "Toplam zaman ve kalan zaman arasında seçim yapmak için tıklayın" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1180,19 +1235,19 @@ msgstr "Kapat" msgid "Close playlist" msgstr "oynatma lis" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Görselleştirmeyi kapat" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Bu pencereyi kapatmak indirme işlemini iptal edecektir." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Bu pencereyi kapatmak albüm kapakları için yapılan aramayı durduracaktır." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Kulüp" @@ -1200,73 +1255,78 @@ msgstr "Kulüp" msgid "Colors" msgstr "Renk" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Virgülle ayrılmış sınıf:seviye listesi, sınıf 0-3 arasında olabilir " -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Yorum" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Topluluk Radyosu" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Etiketleri otomatik tamamla" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Etiketleri otomatik tamamla..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Besteci" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Düzenle %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Grooveshark'i ayarla" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm'i Yapılandır..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Magnatune'u Yapılandır..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Kısayolları Yapılandır" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Spotify'ı Yapılandır..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Subsonic'i yapılandır..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Vk.com'u yapılandır..." + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Genel aramayı düzenle..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Kütüphaneyi düzenle..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Podcastları ayarla..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Yapılandır..." @@ -1274,11 +1334,11 @@ msgstr "Yapılandır..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Etkinleştir/pasifleştir eylemiyle Wii kumandasına bağlan" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Aygıtı bağla" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Spotify'a bağlanılıyor" @@ -1288,12 +1348,16 @@ msgid "" "http://localhost:4040/" msgstr "Bağlantı sunucu tarafından reddedildi, sunucu adresini denetleyin. Örnek: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Bağlantı zaman aşımına uğradı, sunucu adresini denetleyin. Örnek: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Bağlantı sorunu veya ses sahibi tarafından devre dışı bırakılmış" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsol" @@ -1309,17 +1373,21 @@ msgstr "Tüm müzikleri dönüştür" msgid "Convert any music that the device can't play" msgstr "Aygıtın çalamadığı müzikleri dönüştür" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Paylaşım adresini panoya kopyala" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Panoya kopyala" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Aygıta kopyala..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kütüphaneye kopyala..." @@ -1327,156 +1395,152 @@ msgstr "Kütüphaneye kopyala..." msgid "Copyright" msgstr "Copyright" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Subsonic'e bağlanılamadı, sunucu adresini kontrol edin. Örnek: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "GStreamer elementi \"%1\" oluşturulamadı - tüm Gstreamer eklentilerinin kurulu olduğundan emin olun" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Çalma listesi oluşturulamadı" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "%1 için ayrıştırıcı bulunamadı, gerekli GStreamer eklentilerinin kurulu olup olmadığını kontrol edin" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "%1 için kodlayıcı bulunamadı, gerekli GStreamer eklentilerinin yüklü olup olmadığını kontrol edin" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Last.fm radyo istasyonu yüklenemedi" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "%1 çıktı dosyası açılamadı" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Kapak Yöneticisi" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Gömülü resimden kapak resmi" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Kapak resmi %1 adresinden otomatik olarak yüklendi" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Kapak resmi elle çıkarıldı" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Kapak resmi ayarlanmamış" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Kapak resmi %1 adresinden ayarlandı" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "%1 adresindeki kapak resimleri" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Yeni bir Grooveshark müzik listesi oluşturun" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Parça değiştirirken otomatik olarak çapraz geçiş yap" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Parça değiştirirken elle çapraz geçiş yap" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1484,7 +1548,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Özel" @@ -1496,54 +1560,50 @@ msgstr "Özel resim:" msgid "Custom message settings" msgstr "Mesaj ayarlarını özelleştir" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Özel radyo" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Özel..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus yolu" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dans" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Veritabanında bozulma tespit edildi. Lütfen https://code.google.com/p/clementine-player/wiki/DatabaseCorruption adresindeki veritabanınızı nasıl kurtaracağınıza ilişkin talimatları okuyun." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Oluşturulduğu tarih" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Değiştirildiği tarih" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Gün" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Öntanımlı" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Ses seviyesini 4% azalt" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr " oranında sesi azaltın" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Sesi azalt" @@ -1551,6 +1611,11 @@ msgstr "Sesi azalt" msgid "Default background image" msgstr "Varsayılan arkaplan resmi" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "%1 üzerinde öntanımlı aygıt" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Öntanımlılar" @@ -1559,30 +1624,30 @@ msgstr "Öntanımlılar" msgid "Delay between visualizations" msgstr "Görselleştirmeler arasındaki gecikme" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Sil" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Grooveshark müzik listesini sil" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "İndirilmiş veriyi sil" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Dosyaları sil" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Aygıttan sil..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Diskten sil..." @@ -1590,31 +1655,31 @@ msgstr "Diskten sil..." msgid "Delete played episodes" msgstr "Çalımış bölümleri sil" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Ayarı sil" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Akıllı çalma listesini silin" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Orijinal dosyaları sil" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Dosyalar siliniyor" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Seçili parçaları kuyruktan çıkar" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Parçayı kuyruktan çıkar" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Hedef" @@ -1623,7 +1688,7 @@ msgstr "Hedef" msgid "Details..." msgstr "Detaylar..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Aygıt" @@ -1635,15 +1700,15 @@ msgstr "Aygıt Özellikleri" msgid "Device name" msgstr "Aygıt adı" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Aygıt özellikleri..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Aygıtlar" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "İletişim Kutusu" @@ -1680,12 +1745,17 @@ msgstr "Süreyi devre dışı bırak" msgid "Disable moodbar generation" msgstr "Moodbar oluşturmayı kapat" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Devre Dışı" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Devre Dışı" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1695,15 +1765,15 @@ msgid "Discontinuous transmission" msgstr "Kesikli aktarma" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Gösterim seçenekleri" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Ekran görselini göster" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Tüm kütüphaneyi yeniden tara" @@ -1715,27 +1785,27 @@ msgstr "Hiç bir müziği dönüştürme" msgid "Do not overwrite" msgstr "Üzerine yazma" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Tekrarlama" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Çeşitli sanatçılarda gösterme" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Karıştırma" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Durma!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Bağış Yap" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Açmak için çift tıkla" @@ -1743,12 +1813,13 @@ msgstr "Açmak için çift tıkla" msgid "Double clicking a song will..." msgstr "Bir şarkıyı çift tıklamak..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "%n bölüm indir" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "İndirme dizini" @@ -1764,7 +1835,7 @@ msgstr "İndirme üyeliği" msgid "Download new episodes automatically" msgstr "Yeni bölümleri otomatik olarak indir" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Sıradakileri indir" @@ -1772,15 +1843,15 @@ msgstr "Sıradakileri indir" msgid "Download the Android app" msgstr "Android uygulamasını indir" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Bu albümü indir" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Bu albümü indirin..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Bu bölümü indir" @@ -1788,7 +1859,7 @@ msgstr "Bu bölümü indir" msgid "Download..." msgstr "İndir..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "İndiriyor (%1%)..." @@ -1797,23 +1868,23 @@ msgstr "İndiriyor (%1%)..." msgid "Downloading Icecast directory" msgstr "Icecast dizini indiriliyor" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Jamendo kataloğu indiriliyor" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Magnatune kataloğu indiriliyor" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Spotify eklentisi indiriliyor" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Üstveri indiriliyor" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Yeniden konumlandırmak için sürükleyin" @@ -1833,20 +1904,20 @@ msgstr "Süre" msgid "Dynamic mode is on" msgstr "Dinamik kip açık" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Dinamik rastgele karışım" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Akıllı çalma listesini düzenleyin" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "\"%1\" etiketini düzenle..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Etiketi düzenle..." @@ -1858,16 +1929,16 @@ msgstr "Etiketleri düzenle" msgid "Edit track information" msgstr "Parça bilgisini düzenle" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Parça bilgisini düzenle..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Parça bilgilerini düzenle..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Düzenle..." @@ -1875,6 +1946,10 @@ msgstr "Düzenle..." msgid "Enable Wii Remote support" msgstr "Wii kumanda desteğini etkinleştir" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Otomatik önbelleklemeyi etkinleştir" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Ekolayzırı etkinleştir" @@ -1889,7 +1964,7 @@ msgid "" "displayed in this order." msgstr "Arama sonuçlarına dahil etmek için aşağıdaki kaynakları aktifleştirin. Sonuçlar bu sırayla gösterilecektir." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Last.fm skroplamayı aç/kapa" @@ -1917,15 +1992,10 @@ msgstr "Kapağı Internet'ten indirmek için URL girin:" msgid "Enter a filename for exported covers (no extension):" msgstr "Dışa aktarılan kapaklar için bir dosya adı girin (uzantı yok):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Bu çalma listesi için yeni bir isim gir" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Last.fm radyosunu dinlemeye başlamak için bir sanatçı veya bir etiket girin." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1939,7 +2009,7 @@ msgstr "iTunes Store üzerinde podcastlar bulmak için aşağıya arama terimler msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "gpodder.net üzerinde podcastlar bulmak için aşağıya arama terimleri gir" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Arama terimlerini buraya girin" @@ -1948,11 +2018,11 @@ msgstr "Arama terimlerini buraya girin" msgid "Enter the URL of an internet radio stream:" msgstr "Bir internet radyo yayın akışının URL'sini girin" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Klasör ismini girin" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "App Clementine için bağlanmak için IP girin." @@ -1960,21 +2030,22 @@ msgstr "App Clementine için bağlanmak için IP girin." msgid "Entire collection" msgstr "Tüm koleksiyon" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekolayzır" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "--log-levels *:1'e eşdeğer" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "--log-levels *:3'e eşdeğer" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Hata" @@ -1982,38 +2053,38 @@ msgstr "Hata" msgid "Error connecting MTP device" msgstr "MTP aygıtına bağlanırken hata" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Şarkılar kopyalanırken hata" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Şarkılar silinirken hata" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Spotify eklentisini indirirken hata" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "%1 yüklenirken hata" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "di.fm çalma listesi yüklenirken hata oluştu" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "%1 işlenirken hata: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Ses CD'si yüklenirken hata" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Önceden çalınmış" @@ -2045,7 +2116,7 @@ msgstr "Her 6 saatte" msgid "Every hour" msgstr "Her saat" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Aynı albümde veya aynı CUE dosyasında bulunan parçalar hariç" @@ -2057,7 +2128,7 @@ msgstr "Mevcut kapaklar" msgid "Expand" msgstr "Genişlet" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Bitiş tarihi %1" @@ -2078,36 +2149,36 @@ msgstr "İndirilen kapakları aktar" msgid "Export embedded covers" msgstr "Gömülü kapakları aktar" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Biteni aktar" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "%2 kapağın %1 tanesi aktarıldı (%3 atlandı)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2117,42 +2188,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Bekletmede sesi yavaşça kıs / devam ettiğinde aç" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Bir parça durdurulurken yumuşak geç" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Yumuşak geçiş" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Yumuşak geçiş süresi" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "CD sürücünü okuma başarısız" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Dizin getirme başarısız oldu" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Podcastların indirilmesi başarısız oldu" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Podcastların yüklenmesi başarısız oldu" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Bu RSS beslemesinin XML ayıklaması başarısız oldu" @@ -2161,11 +2232,11 @@ msgstr "Bu RSS beslemesinin XML ayıklaması başarısız oldu" msgid "Fast" msgstr "Hızlı" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Favoriler" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Beğenilen parçalar" @@ -2181,11 +2252,11 @@ msgstr "Otomatik indir" msgid "Fetch completed" msgstr "Alım tamamlandı" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Subsonic kütüphanesi eşleştiriliyor" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Kapak alınırken bir hata oluştu" @@ -2193,7 +2264,7 @@ msgstr "Kapak alınırken bir hata oluştu" msgid "File Format" msgstr "Dosya Biçimi" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Dosya uzantısı" @@ -2201,19 +2272,23 @@ msgstr "Dosya uzantısı" msgid "File formats" msgstr "Dosya biçimleri" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Dosya adı" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Dosya adı (yol hariç)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Dosya adı deseni:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dosya boyutu" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2223,7 +2298,7 @@ msgstr "Dosya türü" msgid "Filename" msgstr "Dosya adı" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Dosyalar" @@ -2231,15 +2306,19 @@ msgstr "Dosyalar" msgid "Files to transcode" msgstr "Dönüştürülecek dosyalar" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Kütüphanenizde belirttiğiniz kriterlerle eşleşen şarkıları bulun." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Bu sanatçıyı bul" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Şarkının parmak izi çıkartılıyor" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Bitir" @@ -2247,7 +2326,7 @@ msgstr "Bitir" msgid "First level" msgstr "İlk Seviye" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2263,12 +2342,12 @@ msgstr "Lisans sebepleri dolayısıyla Spotify desteği ayrı bir eklentidir." msgid "Force mono encoding" msgstr "Mono kodlamaya zorla" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Aygıtı unut" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2283,7 +2362,7 @@ msgstr "Bir aygıtı unuttuğunuzda listeden silinecek ve bu aygıtı tekrar ba #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2311,31 +2390,23 @@ msgstr "Kare oranı" msgid "Frames per buffer" msgstr "Tampon başına kare" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Arkadaşlar" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Soğuk" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Tiz" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Yüksek tiz" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer ses motoru" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Genel" @@ -2343,30 +2414,30 @@ msgstr "Genel" msgid "General settings" msgstr "Genel ayarlar" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Tür" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Bu Grooveshark çalma listesini paylaşmak için bir URL al" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Bu Grooveshark şarkısını paylaşmak için bir URL al" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Grooveshark popüler şarkılar alınıyor" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Kanallar alınıyor" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Akışlar alınıyor" @@ -2378,11 +2449,11 @@ msgstr "Bir isim verin:" msgid "Go" msgstr "Git" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Sıradaki listeye git" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Önceki listeye git" @@ -2390,7 +2461,7 @@ msgstr "Önceki listeye git" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2400,7 +2471,7 @@ msgstr "%2 kapaktan %1 tanesi alındı (%3 tanesi başarısız)" msgid "Grey out non existent songs in my playlists" msgstr "Çalma listemde olmayan şarkıları gri göster" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2408,15 +2479,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark giriş hatası" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark çalma listesinin URL adresi" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark radyo" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark şarkısının adresi" @@ -2424,44 +2495,44 @@ msgstr "Grooveshark şarkısının adresi" msgid "Group Library by..." msgstr "Kütüpheneyi şuna göre grupla..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Grupla" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Albüme göre grupla" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Sanatçıya göre grupla" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Sanatçı/Albüme göre grupla" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Sanatçı/Yıl - Albüme göre grupla" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Tür/Albüme göre grupla" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Tür/Sanatçı/Albüme göre grupla" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Gruplandırma" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML sayfası herhangi bir RSS beslemesi içermiyor" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "HTTP 3xx durum kodu adressiz alındı, sunucu yapılandırmasını doğrulayın." @@ -2470,7 +2541,7 @@ msgstr "HTTP 3xx durum kodu adressiz alındı, sunucu yapılandırmasını doğr msgid "HTTP proxy" msgstr "HTTP vekil sunucu" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Mutlu" @@ -2486,25 +2557,25 @@ msgstr "Donanım bilgisine sadece aygıt bağlıyken erişilebilir." msgid "High" msgstr "Yüksek" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Yüksek (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Yüksek (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Sunucu bulunamadı, sunucu adresini denetleyin. Örnek: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Saat" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2516,15 +2587,15 @@ msgstr "Magnatune hesabım yok" msgid "Icon" msgstr "Simge" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Üstteki simgeler" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Şarkı teşhis ediliyor" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2534,24 +2605,24 @@ msgstr "Devam ederseniz, aygıt yavaş çalışacak ve kopyaladığınız şark msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Eğer bir podcast'ın URL adresini biliyorsanız, aşağıya yazın ve Git'e basın." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Sanatçı isimlerinde \"The\" kelimesini önemseme" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Resimler (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Resimler (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "%1 günde" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 haftada" @@ -2562,7 +2633,7 @@ msgid "" "time a song finishes." msgstr "Dinamik kipte yeni şarkılar seçilerek, her şarkı bittiğinde çalma listesine eklenecektir." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Gelen Kutusu" @@ -2574,36 +2645,36 @@ msgstr "Bildirimde albüm resimlendirmesini göster" msgid "Include all songs" msgstr "Tüm şarkıları içer" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Uyumsuz Subsonic REST protokol sürümü. İstemci yükseltilmeli." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Uyumsuz Subsonic REST protokol sürümü. Sunucu yükseltilmeli." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Tamamlanmamış yapılandırma, lütfen tüm alanların dolduğundan emin olun" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Ses seviyesini 4% arttır" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr " oranında sesi artırın" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Sesi arttır" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "%1 İndekslendi" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Bilgi" @@ -2611,55 +2682,55 @@ msgstr "Bilgi" msgid "Input options" msgstr "Girdi seçenekleri" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Ekle..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Kuruldu" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Bütünlük doğrulaması" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "İnternet sağlayıcılar" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Geçersiz API anahtarı" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Geçersiz biçim" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Geçersiz metod" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Geçersiz parametreler" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Geçersiz kaynak belirtildi" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Geçersiz servis" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Geçersiz oturum anahtarı" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Geçersiz kullanici adi yada şifre" @@ -2667,42 +2738,42 @@ msgstr "Geçersiz kullanici adi yada şifre" msgid "Invert Selection" msgstr "Seçimi Tersine Çevir" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo En Çok Dinlenen Parçalar" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo Zirvedeki Parçalar" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo Ayın Zirvedeki Parçaları" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo Haftanın Zirvedeki Parçaları" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo veritabanı" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Şu anda çalınan parçaya atla" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Düğmeleri %1 saniye tut..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Düğmeleri %1 saniye tut..." @@ -2711,11 +2782,12 @@ msgstr "Düğmeleri %1 saniye tut..." msgid "Keep running in the background when the window is closed" msgstr "Pencere kapandığında arkaplanda çalışmaya devam et" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Orijinal dosyaları sakla" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Kedicikler" @@ -2723,11 +2795,11 @@ msgstr "Kedicikler" msgid "Language" msgstr "Dil" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Dizüstü/Kulaklık" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Geniş Salon" @@ -2735,12 +2807,16 @@ msgstr "Geniş Salon" msgid "Large album cover" msgstr "Geniş albüm kapağı" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Büyük kenar çubuğu" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "Son çalınan" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "Son çalınan" @@ -2748,45 +2824,7 @@ msgstr "Son çalınan" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Las.fm Kişisel Radyo: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm Kütüphanesi - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Karışık Radyo - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm Komşu Radyo - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm Radyo İstasyonu - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm %1 ile Benzer Sanatçılar" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm Etiket Radyosu: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm şu anda meşgul, lütfen birkaç dakika içinde tekrar deneyin" @@ -2794,11 +2832,11 @@ msgstr "Last.fm şu anda meşgul, lütfen birkaç dakika içinde tekrar deneyin" msgid "Last.fm password" msgstr "Last.fm parolası" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm çalma sayısı" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm etiketleri" @@ -2806,28 +2844,24 @@ msgstr "Last.fm etiketleri" msgid "Last.fm username" msgstr "Last.fm kullanıcı adı" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Az beğenilen parçalar" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Öntanımlıların kullanılması için boş bırakın. Örnekler: \"/dev/dsp\", \"front\" vs." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "So" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Süre" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Kütüphane" @@ -2835,24 +2869,24 @@ msgstr "Kütüphane" msgid "Library advanced grouping" msgstr "Kütüphane gelişmiş gruplama" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Kütüphane yeniden tarama bildirisi" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Kütüphane araması" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Limitler" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Daha önceden dinlediğiniz şarkılar temel alınarak Grooveshark şarkıları dinleyin" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Canlı" @@ -2864,15 +2898,15 @@ msgstr "Yükle" msgid "Load cover from URL" msgstr "Bağlantıdan kapak al" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Kapağı bu URL'den yükle..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Diskten kapak yükle" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Albüm kapağını diskten yükle..." @@ -2880,84 +2914,89 @@ msgstr "Albüm kapağını diskten yükle..." msgid "Load playlist" msgstr "Çalma listesini yükle" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Çalma listesi yükle..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm radyosu yükleniyor" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "MTP aygıtı yükleniyor" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod veritabanı yükleniyor" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Akıllı çalma listesi yükleniyor" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Şarkılar yükleniyor" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Yayın akışı yükleniyor" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Parçalar yükleniyor" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Parça bilgileri yükleniyor" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Yükleniyor..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Dosyaları/URLleri yükler, mevcut çalma listesinin yerine koyar" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Oturum aç" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Giriş başarısız oldu." +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Oturumu Kapat" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Long term prediction profile (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Beğen" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Düşük (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Düşük (256x256)" @@ -2969,12 +3008,17 @@ msgstr "Düşük karmaşıklık profili (LC)" msgid "Lyrics" msgstr "Şarkı sözleri" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "%1 sitesinden şarkı sözleri" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2986,15 +3030,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -3002,7 +3046,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune İndir" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune indirme bitti" @@ -3010,15 +3054,20 @@ msgstr "Magnatune indirme bitti" msgid "Main profile (MAIN)" msgstr "Ana profil (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Yap gitsin!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Yap gitsin!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Çalma listesini çevrim dışındayken kullanılabilir yap" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Bozuk yanıt" @@ -3031,15 +3080,15 @@ msgstr "Elle vekil sunucu yapılandırma" msgid "Manually" msgstr "El ile" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Üretici" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Dinlenmiş olarak işaretle" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Yeni olarak işaretle" @@ -3051,17 +3100,21 @@ msgstr "Her arama terimiyle eşleştir (VE)" msgid "Match one or more search terms (OR)" msgstr "Bir veya daha fazla arama terimiyle eşleştir (VEYA)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "En fazla genel arama sonucu" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Maksimum bit oranı" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Orta (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Orta (512x512)" @@ -3073,11 +3126,15 @@ msgstr "Üyelik türü" msgid "Minimum bitrate" msgstr "Minimum bit oranı" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Asgari tampon doldurma" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Eksik projectM ayarları" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3085,20 +3142,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Kütüphanede olacak değişiklikleri izle" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Tekli oynat" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Ay" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Atmosfer" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Atmosfer çubuğu tasarımı" @@ -3106,15 +3163,19 @@ msgstr "Atmosfer çubuğu tasarımı" msgid "Moodbars" msgstr "Atmosfer çubukları" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Daha fazla" + +#: library/library.cpp:84 msgid "Most played" msgstr "En fazla çalınan" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Bağlama noktası" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Bağlama noktaları" @@ -3123,7 +3184,7 @@ msgstr "Bağlama noktaları" msgid "Move down" msgstr "Aşağı taşı" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Kütüphaneye taşı..." @@ -3132,7 +3193,7 @@ msgstr "Kütüphaneye taşı..." msgid "Move up" msgstr "Yukarı taşı" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Müzik" @@ -3140,56 +3201,32 @@ msgstr "Müzik" msgid "Music Library" msgstr "Müzik Kütüphanesi" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Sessiz" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Last.fm Kütüphanem" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Last.fm Karışık Radyom" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Last.fm Komşularım" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Last.fm Önerilen Radyom" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Karışık Radyom" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Müziğim" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Komşularım" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Radyom" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Önerdiklerim" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "İsim" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "İsim" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "İsimlendirme seçenekleri" @@ -3197,23 +3234,19 @@ msgstr "İsimlendirme seçenekleri" msgid "Narrow band (NB)" msgstr "Dar band (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Komşular" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Vekil Sunucu" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Ağ Denetimi" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Hiçbir zaman" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Hiç çalınmamış" @@ -3222,21 +3255,21 @@ msgstr "Hiç çalınmamış" msgid "Never start playing" msgstr "Asla çalarak başlama" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Yeni klasör" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Yeni çalma listesi" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Yeni akıllı çalma listesi..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Yeni şarkılar" @@ -3244,24 +3277,24 @@ msgstr "Yeni şarkılar" msgid "New tracks will be added automatically." msgstr "Yeni parçalar otomatik olarak eklenecektir." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "En yeni parçalar" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "İleri" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Sonraki parça" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Gelecek hafta" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Çözümleyici yok" @@ -3269,7 +3302,7 @@ msgstr "Çözümleyici yok" msgid "No background image" msgstr "Arkaplan resmi yok" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Aktarılacak kapak yok." @@ -3277,7 +3310,7 @@ msgstr "Aktarılacak kapak yok." msgid "No long blocks" msgstr "Uzun blok yok" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Eşleşen bulunmadı. Çalma listesini tekrar görmek için arama çubuğunu temizleyin." @@ -3291,11 +3324,11 @@ msgstr "Kısa blok yok" msgid "None" msgstr "Hiçbiri" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Seçili şarkıların hiçbiri aygıta yüklemeye uygun değil" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Normal" @@ -3303,43 +3336,47 @@ msgstr "Normal" msgid "Normal block type" msgstr "Normal blok tipi" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Dinamik şarkı listesi kullanırken geçerli değil" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Bağlı Değil" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Yeterli içerik yok" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Yeterli hayran yok" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Yeterli üye yok" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Yeterli komşu yok" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Kurulu değil" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Giriş yapmadınız" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Bağlı değil - bağlamak için çift tıklayın" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Hiçbir şey bulunamadı" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Bildirim türü" @@ -3352,36 +3389,41 @@ msgstr "Bildirimler" msgid "Now Playing" msgstr "Şimdi Çalıyor" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD Önizleme" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Kapalı" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Açık" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3389,11 +3431,11 @@ msgid "" "192.168.x.x" msgstr "Sadece bu IP aralıklarındaki istemcilerden bağlantı kabul et:\\n 10.x.x.x\\n 172.16.0.0 - 172.31.255.255\\n 192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "Sadece yerel ağdan bağlantılara izin ver" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Sadece ilki göster" @@ -3401,23 +3443,23 @@ msgstr "Sadece ilki göster" msgid "Opacity" msgstr "Opaklık" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Tarayıcıda aç: %1" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "&Ses CD'si aç..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "OPML dosyası aç" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "OPML dosyasını aç..." @@ -3425,30 +3467,35 @@ msgstr "OPML dosyasını aç..." msgid "Open device" msgstr "Aygıtı aç" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Dosya aç..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Google Drive'da aç" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Yeni çalma listesinde aç" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Yeni çalma listesinde aç" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Tarayıcınızda açın" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Aç..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "İşlem başarısız" @@ -3468,23 +3515,23 @@ msgstr "Seçenekler..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Dosyaları Düzenle" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Dosyaları düzenle..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Dosyalar düzenleniyor" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Özgün etiketler" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Diğer seçenekler" @@ -3492,7 +3539,7 @@ msgstr "Diğer seçenekler" msgid "Output" msgstr "Çıktı" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Çıktı aygıtı" @@ -3500,15 +3547,11 @@ msgstr "Çıktı aygıtı" msgid "Output options" msgstr "Çıktı seçenekleri" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Çıktı eklentisi" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Tümünün üzerine yaz" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Mevcut dosyaların üzerine yaz" @@ -3520,15 +3563,15 @@ msgstr "Sadece daha küçük olanların üzerine yaz" msgid "Owner" msgstr "Sahibi" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Jamendo kataloğu ayrıştırılıyor" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Parti" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3537,20 +3580,20 @@ msgstr "Parti" msgid "Password" msgstr "Parola" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Duraklat" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Beklet" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Duraklatıldı" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Sanatçı" @@ -3559,34 +3602,22 @@ msgstr "Sanatçı" msgid "Pixel" msgstr "Piksel" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Düz kenar çubuğu" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Çal" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Sanatçı veya Etiket Çal" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Sanatçı radyosu çal..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Çalma sayısı" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Özel radyo çal..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Duraklatılmışsa çal, çalıyorsa beklet" @@ -3595,45 +3626,42 @@ msgstr "Duraklatılmışsa çal, çalıyorsa beklet" msgid "Play if there is nothing already playing" msgstr "Çalan bir şey yoksa çal" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Etiket radyosu çal..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Listedeki numaralı parçayı çal" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Çal/Duraklat" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Oynat" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Oynatıcı seçenekleri" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Çalma Listesi" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Parça listesi tamamlandı" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Çalma listesi seçenekleri" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Çalma listesi türü" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Çalma listeleri" @@ -3645,23 +3673,23 @@ msgstr "Lütfen tarayıcınızı kapatıp Clementine'e geri dönün." msgid "Plugin status:" msgstr "Eklenti durumu:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcastlar" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Popüler şarkılar" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Bu ayın popüler şarkıları" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Bugünün popüler şarkıları" @@ -3670,22 +3698,23 @@ msgid "Popup duration" msgstr "Açılır pencere süresi" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Ön yükseltici" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Tercihler" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Tercihler..." @@ -3721,7 +3750,7 @@ msgstr "Kullanmak için bir tuş kombinasyonuna basın" msgid "Press a key" msgstr "Bir tuşa basın" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "%1 için kullanmak için bir tuş kombinasyonun basın..." @@ -3732,20 +3761,20 @@ msgstr "OSD seçenekleri" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Önizleme" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Önceki" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Önceki parça" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Sürüm bilgisini bastır" @@ -3753,21 +3782,25 @@ msgstr "Sürüm bilgisini bastır" msgid "Profile" msgstr "Profil" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "İlerleme" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "İlerleme" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Psikodelik" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Wiiremote düğmesine basın" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Şarkıları rastgele sırala" @@ -3775,7 +3808,12 @@ msgstr "Şarkıları rastgele sırala" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Kalite" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Kalite" @@ -3783,28 +3821,33 @@ msgstr "Kalite" msgid "Querying device..." msgstr "Aygıt sorgulanıyor..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Kuyruk Yöneticisi" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Seçili parçaları kuyruğa ekle" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Parçayı kuyruğa ekle" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Radyo (tüm parçalar için eşit ses seviyesi)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radyolar" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Yağmur" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Yağmur" @@ -3812,48 +3855,48 @@ msgstr "Yağmur" msgid "Random visualization" msgstr "Karışık görseller" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Geçerli şarkıyı 0 yıldızla oyla" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Geçerli şarkıyı 1 yıldızla oyla" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Geçerli şarkıyı 2 yıldızla oyla" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Geçerli şarkıyı 3 yıldızla oyla" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Geçerli şarkıyı 4 yıldızla oyla" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Geçerli şarkıyı 5 yıldızla oyla" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Beğeni" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Gerçekten iptal edeyim mi?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Yönlendirme limiti aşıldı, sunucu yapılandırmasını doğrulayın." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Yenile" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Kataloğu yenile" @@ -3861,19 +3904,15 @@ msgstr "Kataloğu yenile" msgid "Refresh channels" msgstr "Kanalları yenile" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Arkadaş listesini yenile" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "İstasyon listesini yenile" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Akışları yenile" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3885,8 +3924,8 @@ msgstr "Wii kumanda sallamayı hatırla" msgid "Remember from last time" msgstr "Son seferkinden hatırla" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Kaldır" @@ -3894,7 +3933,7 @@ msgstr "Kaldır" msgid "Remove action" msgstr "Eylemi kaldır" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Şarkı listesindeki çiftleri birleştir" @@ -3902,73 +3941,77 @@ msgstr "Şarkı listesindeki çiftleri birleştir" msgid "Remove folder" msgstr "Klasörü kaldır..." -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Müziklerimden sil" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Yer imlerinden kaldır" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Favorilerden kaldır" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Çalma listesinden kaldır" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Çalma listesini kaldır" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Çalma listesini kaldır" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Parçalar müziklerimden siliniyor" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Parçalar favorilerimden siliniyor" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "\"%1\" çalma listesini yeniden adlandır" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Grooveshark çalma listesini yeniden adlandır" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Çalma listesini yeniden adlandır" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Çalma listesini yeniden adlandır..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Parçaları bu sırada hatırla..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Tekrarla" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Albümü tekrarla" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Çalma listesini tekrarla" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Parçayı tekrarla" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Şu anki çalma listesinin yerine geç" @@ -3977,15 +4020,15 @@ msgstr "Şu anki çalma listesinin yerine geç" msgid "Replace the playlist" msgstr "Çalma listesinin yerine geç" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Boşlukları alt çizgiyle değiştirir" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Yeniden Oynatma Kazanç kipi" @@ -3993,24 +4036,24 @@ msgstr "Yeniden Oynatma Kazanç kipi" msgid "Repopulate" msgstr "Yeniden doldur" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Doğrulama kodu iste" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Sıfırla" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Çalma sayısını sıfırla" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Eğer başlangıçtan en fazla 8 saniye geçmişse parçayı yeniden başlat veya önceki parçayı çal." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "ASCII karakterler olarak kısıtla" @@ -4018,15 +4061,15 @@ msgstr "ASCII karakterler olarak kısıtla" msgid "Resume playback on start" msgstr "Başlarken çalmaya devam et" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Grooveshark'tan My Music şakıları çekiliyor" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Grooveşark favori şarkılar alınıyor" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Grooveshark çalma listeleri alınıyor" @@ -4046,11 +4089,11 @@ msgstr "Dönüştür" msgid "Rip CD" msgstr "CD Dönüştür" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Ses CD'si dönüştür..." -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4062,25 +4105,25 @@ msgstr "Çalıştır" msgid "SOCKS proxy" msgstr "SOCKS vekil sunucu" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "SSL anlaşma hatası, sunucu yapılandırmasını doğrulayın. SSLv3 seçeneği bazı durumlarda sorunu çözebilir." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Aygıtı güvenli kaldır" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Kopyalama işleminden sonra aygıtı güvenli kaldır" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Örnekleme oranı" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Örneklemeoranı" @@ -4088,27 +4131,33 @@ msgstr "Örneklemeoranı" msgid "Save .mood files in your music library" msgstr ".mood dosyalarını müzik kütüphaneme kaydet" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Kapağı kaydet" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Kapağı diske kaydet..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Görüntüyü kaydet" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Çalma listesini kaydet" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Çalma listesini kaydet" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Çalma listesini kaydet..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Ayarı kaydet" @@ -4124,11 +4173,11 @@ msgstr "Mümkün olduğunda istatistikleri dosya etiketlerine kaydet" msgid "Save this stream in the Internet tab" msgstr "Bu akışı Internet sekmesine kaydet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Şarkı istatistikleri şarkı dosyalarına kaydediliyor" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Parçalar kaydediliyor" @@ -4140,7 +4189,7 @@ msgstr "Ölçeklenebilir örnekleme oranı profili (SSR)" msgid "Scale size" msgstr "ÖLçek boyutu" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Puan" @@ -4148,10 +4197,14 @@ msgstr "Puan" msgid "Scrobble tracks that I listen to" msgstr "Dinlediğim parçaları skropla" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Ara" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Ara" @@ -4159,23 +4212,23 @@ msgstr "Ara" msgid "Search Icecast stations" msgstr "Icecast istasyonları ara" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Jamendo'da ara" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Magnatune'da Ara" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Subsonic'de Ara" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Otomatik ara" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Albüm kapaklarını ara..." @@ -4195,21 +4248,21 @@ msgstr "iTunes'u ara" msgid "Search mode" msgstr "Arama kipi" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Arama seçenekleri" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Arama sonuçları" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Arama terimleri" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Grooveshark'da Ara" @@ -4217,27 +4270,27 @@ msgstr "Grooveshark'da Ara" msgid "Second level" msgstr "İkinci seviye" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Geriye doğru ara" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "İleri doğru ara" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Çalan parçayı görece miktara göre ara" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Çalan parçayı kesin bir konuma göre ara" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Tümünü Seç" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Hiçbirini Seçme" @@ -4245,7 +4298,7 @@ msgstr "Hiçbirini Seçme" msgid "Select background color:" msgstr "Arkaplan rengini seçin:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Arkaplan resmini seçin" @@ -4261,7 +4314,7 @@ msgstr "Ön plan rengi seçin:" msgid "Select visualizations" msgstr "Görsel seç" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Görselleştirmeleri seç..." @@ -4269,7 +4322,7 @@ msgstr "Görselleştirmeleri seç..." msgid "Select..." msgstr "Seç..." -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Seri numarası" @@ -4281,51 +4334,51 @@ msgstr "Sunucu URL'si" msgid "Server details" msgstr "Sunucu ayrıntıları" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Hizmet çevrim dışı" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "%1'i \"%2\" olarak ayarla" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Ses seviyesini yüzde yap" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Seçili tüm parçalar için değeri ayarla..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Ayarlar" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Kısayol" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "%1 için kısayol" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "%1 için kısayol zaten tanımlı" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Göster" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "OSD göster" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Mevcut parçada parlayan bir animasyon göster" @@ -4353,15 +4406,15 @@ msgstr "Sistem tepsisinden bir açılır pencere göster" msgid "Show a pretty OSD" msgstr "Şirin bir OSD göster" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Durum çubuğunun üzerinde göster" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Tüm şarkıları göster" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Tüm şarkıları göster" @@ -4373,32 +4426,36 @@ msgstr "Kapak resmini kütüphanede göster" msgid "Show dividers" msgstr "Ayırıcıları göster" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Tam boyutta göster" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Genel arama sonuçlarında grupları göster" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Dosya gözatıcısında göster..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Kütüphanede göster..." -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Çeşitli sanatçılarda göster" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Atmosfer çubuğunu göster" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Sadece aynı olanları göster" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Sadece etiketi olmayanları göster" @@ -4407,8 +4464,8 @@ msgid "Show search suggestions" msgstr "Arama önerilerini göster" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "\"Beğen\" ve \"Yasakla\" tuşlarını göster" +msgid "Show the \"love\" button" +msgstr "\"Beğen\" düğmesini göster" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4422,27 +4479,27 @@ msgstr "Sistem çekmecesi simgesini göster" msgid "Show which sources are enabled and disabled" msgstr "Hangi kaynakların aktif ya da pasif olduğunu göster" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Göster/Gizle" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Karışık" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Albümleri karıştır" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Hepsini karıştır" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Çalma listesini karıştır" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Bu albümdeki şarkıları karıştır" @@ -4458,7 +4515,7 @@ msgstr "Çıkış yap" msgid "Signing in..." msgstr "Oturum açılıyor..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Benzer sanatçılar" @@ -4470,43 +4527,51 @@ msgstr "Boyut" msgid "Size:" msgstr "Boyut:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Parça listesinde geri git" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Atlama sayısı" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Parça listesinde ileri git" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Seçili parçaları atla" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Parçayı atla" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Küçük albüm kapağı" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Küçük kenar çubuğu" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Akıllı çalma listesi" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Akıllı çalma listeleri" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Hafif" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Hafif Rock" @@ -4514,11 +4579,11 @@ msgstr "Hafif Rock" msgid "Song Information" msgstr "Şarkı Bilgisi" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Şarkı bilgisi" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4538,15 +4603,23 @@ msgstr "Türe göre sırala (popülarite)" msgid "Sort by station name" msgstr "İstasyon adına göre sırala" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Çalma listelerini alfabetik olarak sırala" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Şarkıları şuna göre diz" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Dizim" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Kaynak" @@ -4562,7 +4635,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify giriş hatası" @@ -4570,7 +4643,7 @@ msgstr "Spotify giriş hatası" msgid "Spotify plugin" msgstr "Spotify eklentisi" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify eklentisi kurulu değil" @@ -4578,77 +4651,77 @@ msgstr "Spotify eklentisi kurulu değil" msgid "Standard" msgstr "Standart" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Yıldızlı" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Dönüştürmeyi başlat" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Çalma listesini mevcut çalınanla başlat" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Dönüştürmeye başla" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Arama sonucunu görmek için arama kutusuna bir şeyler yazmaya başlayın." -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "%1 Başlatılıyor" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Başlatılıyor..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "İstasyonlar" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Durdur" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Şundan sonra durdur" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Bu parçadan sonra durdur" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Duraklat" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Bu parçadan sonra durdur" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Şu parçadan sonra çalmayı durdur: %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Durduruldu" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Akış" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4658,7 +4731,7 @@ msgstr "Bir Subsonik sunucudan Stream 30 günlük deneme süresinden sonra geçe msgid "Streaming membership" msgstr "Yayın akış üyeliği" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Abone olunan çalma listeleri" @@ -4666,7 +4739,7 @@ msgstr "Abone olunan çalma listeleri" msgid "Subscribers" msgstr "Aboneler" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4674,12 +4747,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Başarılı!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "%1 başarıyla yazıldı" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Önerilen etiketler" @@ -4688,13 +4761,13 @@ msgstr "Önerilen etiketler" msgid "Summary" msgstr "Özet" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Süper yüksek (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Çok yüksek çözünürlük (2048x2048)" @@ -4706,43 +4779,35 @@ msgstr "Desteklenen biçimler" msgid "Synchronize statistics to files now" msgstr "İstatistikleri dosyalara şimdi eşleştir" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Spotify gelen kutusu eşleniyor" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Spotify çalma listesi eşleniyor" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Spotify yıldızlı şarkılar eşleniyor" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Sistem renkleri" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Üstteki sekmeler" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Etiket" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Etiket getirici" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Etiket radyosu" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Hedeflenen bit oranı" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Tekno" @@ -4750,11 +4815,11 @@ msgstr "Tekno" msgid "Text options" msgstr "Metin seçenekleri" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Teşekkürler" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "\"%1\" komutu başlatılamadı." @@ -4763,17 +4828,12 @@ msgstr "\"%1\" komutu başlatılamadı." msgid "The album cover of the currently playing song" msgstr "Şu anda çalan şarkının albüm kapağı" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "%1 dizini geçersiz" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Çalma listesi '%1' boş veya yüklenemiyor." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "İkinci değer ilk değerden büyük olmak zorunda!" @@ -4781,40 +4841,40 @@ msgstr "İkinci değer ilk değerden büyük olmak zorunda!" msgid "The site you requested does not exist!" msgstr "İstediğiniz site mevcut değil!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "İstediğiniz site bir resim değil!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Subsonic sunucusunun deneme süresi bitti. Lisans anahtarı almak için lütfen bağış yapın. Ayrıntılar için subsonic.org'u ziyaret edin." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Güncellediğiniz Clementine sürümü, aşağıda listelenen yeni özellikler nedeniyle kütüphanenizin baştan taranmasını gerektiriyor:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Bu albümde başka şarkılar da var" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "gpodder.net ile iletişimde bir sorun oluştu." -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Magnatude servisinden veri alınırken hata oluştu" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "iTunes Store'dan gelen yanıtı ayıklamada bir sorun oluştu" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4826,13 +4886,13 @@ msgid "" "deleted:" msgstr "Bazı şarkılar silinirken hata oluştu. Şu dosyalar silinemedi:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Bu dosyalar aygıttan silinecek, devam etmek istiyor musunuz?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4852,13 +4912,13 @@ msgstr "Bu seçenekler \"Müzik Dönüştür\" penceresinde ve aygıta müzik ko msgid "Third level" msgstr "Üçüncü seviye" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Bu eylem 150 MB kadar büyüklükte olabilecek bir veri tabanı oluşturacak.\nYine de devam etmek istiyor musunuz?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Bu albüm istenilen biçimde mevcut değil" @@ -4872,11 +4932,11 @@ msgstr "Bu aygıt Clementine başlamadan önce bağlanmalı ve açılmalıdır a msgid "This device supports the following file formats:" msgstr "Bu aygıt aşağıdaki dosya biçimlerini destekler:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Bu aygıt düzgün çalışmayacak" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Bu bir MTP aygıtı fakat Clementine libmtp desteği olmadan derlenmiş." @@ -4885,7 +4945,7 @@ msgstr "Bu bir MTP aygıtı fakat Clementine libmtp desteği olmadan derlenmiş. msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Bu bir iPod fakat Clementine libgpod desteği olmadan derlenmiş." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4895,33 +4955,33 @@ msgstr "Bu aygıtı ilk defa bağlıyorsunuz. Clementine müzik dosyalarını b msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Bu seçenek \"Davranış\" tercihlerinden değiştirilebilir" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Bu yayın sadece abone olan kullanıcılar içindir" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Bu tür bir aygıt desteklenmiyor: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Başlık" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Grooveshark radyosu dinleyebilmeniz için öncelikle birkaç tane Grooveshark şarkısı dinlemelisiniz." -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Bugün" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Şirin OSD'yi Aç/Kapa" @@ -4929,27 +4989,27 @@ msgstr "Şirin OSD'yi Aç/Kapa" msgid "Toggle fullscreen" msgstr "Tam ekran göster/gizle" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Kuyruk durumunu göster/gizle" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Skroplamayı aç/kapa" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Şirin OSD görünürlüğünü aç/kapa" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Yarın" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Çok fazla yeniden yönlendirme" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "En çok dinlenen parçalar" @@ -4957,21 +5017,25 @@ msgstr "En çok dinlenen parçalar" msgid "Total albums:" msgstr "Toplam albüm:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Aktarılan toplam bayt" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Yapılmış toplam ağ istemi" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Parça" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Parçalar" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Müzik Dönüştür" @@ -4983,7 +5047,7 @@ msgstr "Dönüştürücü Kaydı" msgid "Transcoding" msgstr "Kod çevrimi" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "%1 adet dosya %2 adet thread ile dönüştürülüyor" @@ -4992,11 +5056,11 @@ msgstr "%1 adet dosya %2 adet thread ile dönüştürülüyor" msgid "Transcoding options" msgstr "Kod çevrimi seçenekleri" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Türbin" @@ -5004,72 +5068,72 @@ msgstr "Türbin" msgid "Turn off" msgstr "Kapat" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(ler)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One parolası" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One kullanıcı adı" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Engin frekans bandı (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "%1 indirilemedi (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Bilinmeyen" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Bilinmeyen içerik türü" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Bilinmeyen hata" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Albüm kapağını çıkar" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Seçili parçaları atlama" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Parçayı atlama" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Abonelikten çık" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Yaklaşan Konserler" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Güncelle" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Grooveshark çalma listesini güncelle" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Bütün podcastları güncelle" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Değişen kütüphane klasörlerini güncelle" @@ -5077,7 +5141,7 @@ msgstr "Değişen kütüphane klasörlerini güncelle" msgid "Update the library when Clementine starts" msgstr "Clementine başladığında kütüphaneyi güncelle" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Bu podcast'ı güncelle" @@ -5085,21 +5149,21 @@ msgstr "Bu podcast'ı güncelle" msgid "Updating" msgstr "Güncelliyor" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "%1 Güncelleniyor" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "%1% Güncelleniyor..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Kütüphane güncelleniyor" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Kullanım" @@ -5107,11 +5171,11 @@ msgstr "Kullanım" msgid "Use Album Artist tag when available" msgstr "Varsa Albüm sanatçısı etiketini kullan" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Gnome kısayol tuşlarını kullan" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Varsa Replay Gain verisini kullan" @@ -5131,7 +5195,7 @@ msgstr "Özel bir renk düzeni kullan" msgid "Use a custom message for notifications" msgstr "Bildirimler için özel bir mesaj kullan" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Bir ağ uzak denetimi kullan" @@ -5171,20 +5235,20 @@ msgstr "Sistem vekil sunucu ayarlarını kullan" msgid "Use volume normalisation" msgstr "Ses normalleştirme kullan" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Kullanılan" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "%1 Kullanicinin Grooveshark Anywhere hasabi yok" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Kullanıcı arayüzü" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5206,12 +5270,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Değişken bit oranı" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Çeşitli sanatçılar" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Sürüm %1" @@ -5224,7 +5288,7 @@ msgstr "Görünüm" msgid "Visualization mode" msgstr "Görüntüleme kipi" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Görseller" @@ -5232,11 +5296,15 @@ msgstr "Görseller" msgid "Visualizations Settings" msgstr "Görüntüleme Ayarları" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Ses aktivitesi algılama" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Ses %1%" @@ -5254,11 +5322,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Bir çalma listesi sekmesini kapatırken beni uyar" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5266,7 +5334,7 @@ msgstr "Wav" msgid "Website" msgstr "İnternet sitesi" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Haftalar" @@ -5292,32 +5360,32 @@ msgstr "Neden denemeyelim..." msgid "Wide band (WB)" msgstr "Geniş Bant (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Kumanda %1: etkin" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Kumanda %1: bağlandı" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Kumanda %1: kritik pil seviyesi (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Kumanda %1: etkin değil" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Kumanda %1: çıkarıldı" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Kumanda %1: düşük pil seviyesi (%2%)" @@ -5338,7 +5406,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Medya 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5346,25 +5414,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Kapak resmi olmayan:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Bu albümdeki diğer şarkıları da Çeşitli Sanatçılar'a taşımak ister misiniz?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Şu anda tam bir yeniden tarama çalıştırmak ister misiniz?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Tüm şarkı istatistiklerini şarkı dosyalarına yaz" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Yanlış kullanıcı adı veya parola." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5376,11 +5444,11 @@ msgstr "Yıl" msgid "Year - Album" msgstr "Yıl - Albüm" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Yıl" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Dün" @@ -5388,13 +5456,13 @@ msgstr "Dün" msgid "You are about to download the following albums" msgstr "Aşağıdaki albümleri indirmek üzeresiniz" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Beğenilenlerinizden %1 oynatma listesini kaldırmak üzeresiniz. Emin misiniz?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5404,12 +5472,12 @@ msgstr "Beğenilen çalma listelerinizin bir parçası olmayan bir çalma listes msgid "You are not signed in." msgstr "Oturum açmadınız." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "%1 olarak oturum açtınız." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Oturum açtınız." @@ -5417,13 +5485,13 @@ msgstr "Oturum açtınız." msgid "You can change the way the songs in the library are organised." msgstr "Kütüphanedeki parçalarını farklı şekilde organize edebilirsiniz." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Hesabınız olmadan ücretsiz dinleyebilirsiniz fakat Premium üyeler reklamsız ve daha yüksek kalitedeki akışları dinleyebilir." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5433,13 +5501,6 @@ msgstr "Bir hesabınız olmadan ücretsiz olarak Magnatude'dan şarkı dinleyebi msgid "You can listen to background streams at the same time as other music." msgstr "Arkaplan akışlarını diğer müzikler gibi aynı anda dinleyebilirsiniz." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Parçaları ücretsiz olarak skroplayabilirsiniz, fakat sadece ücretli aboneler Last.fm radyosunu dinleyebilir." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Wii kumandanızı kullanarak Clementine'ı uzaktan kumanda edebilirsiniz. Daha fazla bilgi için Clementine wikideki ilgili sayfayı ziyaret edin.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Bir Grooveshark Anywhere hesabınız yok" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Spotify Premium hesabınız yok." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Aktif bir aboneliğiniz yok" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "SoundCloud üzerinde arama yapmak ve müzik dinlemek için oturum açmanız gerekmiyor. Ancak oynatma listenize veya akışlarınıza ulaşabilmeniz için oturum açmanız gerekli." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Spotify servisinden çıktınız, lütfen Ayarlar ekranında parolanızı yeniden girin." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Spotify servisinden çıktınız, lütfen parolanızı yeniden girin." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Bu şarkıyı seviyorsunuz" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Clementine'da genel kısayolları kullanabilmek için Sistem Tercihleri'ne girmeli ve \"bilgisayarı denetleme\"si için etkinleştirmelisiniz.." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5484,17 +5559,11 @@ msgstr "Clementine'da genel kısayolları kullanabilmek için Sistem Ayarlarına msgid "You will need to restart Clementine if you change the language." msgstr "Dili değiştirdiyseniz programı yeniden başlatmanız gerekmektedir." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Last.fm abonesi olmadığınız için Last.fm kanallarını dinleyemeyeceksiniz." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "IP adresiniz:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Last.fm giriş bilgileriniz doğru değil" @@ -5502,42 +5571,43 @@ msgstr "Last.fm giriş bilgileriniz doğru değil" msgid "Your Magnatune credentials were incorrect" msgstr "Magnatune kimlik bilgileriniz hatalı" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Kütüphaneniz boş!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Radyo yayın akışlarınız" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Skroplarınız: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "Sisteminizde OpenGL desteği yok, görselleştirmeler çalışmayacak." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Kullanıcı adı veya parolanız yanlış." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Sıfır" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "%n şarkıyı ekle" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "sonra" @@ -5557,19 +5627,19 @@ msgstr "otomatik" msgid "before" msgstr "önce" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "arasında" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "ilk önce en büyüğü" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "şunu içeriyor" @@ -5579,20 +5649,20 @@ msgstr "şunu içeriyor" msgid "disabled" msgstr "devre dışı" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disk %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "şunu içermiyor" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "şununla bitiyor" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "eşittir" @@ -5600,11 +5670,11 @@ msgstr "eşittir" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net dizini" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "büyüktür" @@ -5612,54 +5682,55 @@ msgstr "büyüktür" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "iPod'lar ve USB aygıtları şimdilik Windows'ta çalışmıyor. Üzgünüz!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "Sonuncu" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "küçüktür" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "ilk önce en uzunu" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "%n şarkıyı taşı" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "ilk önce en yenisi" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "eşit değiller" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "şu süreden beri değil:" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "değil" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "ilk önce en eskisi" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "açık" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "seçenekler" @@ -5671,36 +5742,37 @@ msgstr "veya QR kodunu tara!" msgid "press enter" msgstr "enter'a basın" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "%n şarkıyı kaldır" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "ilk önce en kısası" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "Parçaları karıştır" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "ilk önce en küçüğü" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "şarkıları sırala" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "şununla başlıyor" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "durdur" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "parça %1" diff --git a/src/translations/tr_TR.po b/src/translations/tr_TR.po index fa20f733a..9283a97c5 100644 --- a/src/translations/tr_TR.po +++ b/src/translations/tr_TR.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/clementine/language/tr_TR/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -37,7 +37,7 @@ msgstr "" "Language: tr_TR\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -62,9 +62,9 @@ msgstr "" msgid " kbps" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr "" @@ -77,11 +77,16 @@ msgstr "" msgid " seconds" msgstr "" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "" @@ -91,12 +96,12 @@ msgstr "" msgid "%1 days" msgstr "" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -106,48 +111,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "" @@ -161,18 +166,21 @@ msgstr "" msgid "%filename%" msgstr "" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "" @@ -184,24 +192,24 @@ msgstr "" msgid "&Center" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "" @@ -209,23 +217,23 @@ msgstr "" msgid "&Left" msgstr "" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "" @@ -233,23 +241,23 @@ msgstr "" msgid "&Right" msgstr "" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "" @@ -269,14 +277,10 @@ msgstr "" msgid "1 day" msgstr "" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -286,7 +290,7 @@ msgstr "" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "" @@ -294,12 +298,6 @@ msgstr "" msgid "Upgrade to Premium now" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -310,6 +308,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -318,38 +327,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "" @@ -369,36 +378,35 @@ msgstr "" msgid "AAC 64k" msgstr "" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "" @@ -410,11 +418,15 @@ msgstr "" msgid "Action" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "" @@ -430,39 +442,39 @@ msgstr "" msgid "Add action" msgstr "" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "" @@ -474,11 +486,11 @@ msgstr "" msgid "Add podcast" msgstr "" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "" -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "" @@ -542,6 +554,10 @@ msgstr "" msgid "Add song title tag" msgstr "" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "" @@ -550,22 +566,34 @@ msgstr "" msgid "Add song year tag" msgstr "" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "" @@ -574,6 +602,10 @@ msgstr "" msgid "Add to the queue" msgstr "" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "" @@ -603,15 +635,15 @@ msgstr "" msgid "Added within three months" msgstr "" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "" @@ -619,12 +651,12 @@ msgstr "" msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -632,11 +664,11 @@ msgstr "" msgid "Album" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -646,35 +678,36 @@ msgstr "" msgid "Album cover" msgstr "" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "" @@ -683,19 +716,19 @@ msgstr "" msgid "All playlists (%1)" msgstr "" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -720,30 +753,30 @@ msgstr "" msgid "Always start playing" msgstr "" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -752,13 +785,13 @@ msgstr "" msgid "Appearance" msgstr "" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "" @@ -766,52 +799,47 @@ msgstr "" msgid "Append to the playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "" @@ -819,9 +847,13 @@ msgstr "" msgid "Audio format" msgstr "" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "" @@ -829,7 +861,7 @@ msgstr "" msgid "Author" msgstr "" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "" @@ -845,7 +877,7 @@ msgstr "" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "" @@ -853,15 +885,15 @@ msgstr "" msgid "Average bitrate" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "" @@ -882,7 +914,7 @@ msgstr "" msgid "Background opacity" msgstr "" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -890,11 +922,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "" @@ -914,18 +942,17 @@ msgstr "" msgid "Best" msgstr "" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -933,7 +960,12 @@ msgstr "" msgid "Bitrate" msgstr "" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "" @@ -949,7 +981,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "" @@ -963,11 +995,11 @@ msgstr "" msgid "Browse..." msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "" @@ -979,43 +1011,66 @@ msgstr "" msgid "Buttons" msgstr "" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1025,15 +1080,19 @@ msgstr "" msgid "Check for new episodes" msgstr "" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "" @@ -1049,11 +1108,11 @@ msgstr "" msgid "Choose from the list" msgstr "" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "" @@ -1062,7 +1121,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "" @@ -1070,17 +1129,17 @@ msgstr "" msgid "Cleaning up" msgstr "" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "" @@ -1093,8 +1152,8 @@ msgstr "" msgid "Clementine Orange" msgstr "" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "" @@ -1116,8 +1175,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1131,20 +1190,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "" @@ -1156,11 +1208,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1170,7 +1222,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1185,19 +1240,19 @@ msgstr "" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "" @@ -1205,73 +1260,78 @@ msgstr "" msgid "Colors" msgstr "" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "" -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "" @@ -1279,11 +1339,11 @@ msgstr "" msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "" @@ -1293,12 +1353,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1314,17 +1378,21 @@ msgstr "" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "" @@ -1332,156 +1400,152 @@ msgstr "" msgid "Copyright" msgstr "" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "" @@ -1489,7 +1553,7 @@ msgstr "" msgid "Ctrl+Up" msgstr "" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "" @@ -1501,54 +1565,50 @@ msgstr "" msgid "Custom message settings" msgstr "" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "" @@ -1556,6 +1616,11 @@ msgstr "" msgid "Default background image" msgstr "" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "" @@ -1564,30 +1629,30 @@ msgstr "" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "" @@ -1595,31 +1660,31 @@ msgstr "" msgid "Delete played episodes" msgstr "" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1628,7 +1693,7 @@ msgstr "" msgid "Details..." msgstr "" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "" @@ -1640,15 +1705,15 @@ msgstr "" msgid "Device name" msgstr "" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1685,12 +1750,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "" @@ -1700,15 +1770,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1720,27 +1790,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "" @@ -1748,12 +1818,13 @@ msgstr "" msgid "Double clicking a song will..." msgstr "" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "" @@ -1769,7 +1840,7 @@ msgstr "" msgid "Download new episodes automatically" msgstr "" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1777,15 +1848,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "" @@ -1793,7 +1864,7 @@ msgstr "" msgid "Download..." msgstr "" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1802,23 +1873,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1838,20 +1909,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "" @@ -1863,16 +1934,16 @@ msgstr "" msgid "Edit track information" msgstr "" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "" @@ -1880,6 +1951,10 @@ msgstr "" msgid "Enable Wii Remote support" msgstr "" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "" @@ -1894,7 +1969,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "" @@ -1922,15 +1997,10 @@ msgstr "" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1944,7 +2014,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "" @@ -1953,11 +2023,11 @@ msgstr "" msgid "Enter the URL of an internet radio stream:" msgstr "" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1965,21 +2035,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "" @@ -1987,38 +2058,38 @@ msgstr "" msgid "Error connecting MTP device" msgstr "" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2050,7 +2121,7 @@ msgstr "" msgid "Every hour" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2062,7 +2133,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2083,36 +2154,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "" @@ -2122,42 +2193,42 @@ msgstr "" msgid "FLAC" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2166,11 +2237,11 @@ msgstr "" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2186,11 +2257,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2198,7 +2269,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2206,19 +2277,23 @@ msgstr "" msgid "File formats" msgstr "" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2228,7 +2303,7 @@ msgstr "" msgid "Filename" msgstr "" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "" @@ -2236,15 +2311,19 @@ msgstr "" msgid "Files to transcode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2252,7 +2331,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "" @@ -2268,12 +2347,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2288,7 +2367,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2316,31 +2395,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "" @@ -2348,30 +2419,30 @@ msgstr "" msgid "General settings" msgstr "" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "" @@ -2383,11 +2454,11 @@ msgstr "" msgid "Go" msgstr "" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2395,7 +2466,7 @@ msgstr "" msgid "Google Drive" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2405,7 +2476,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "" @@ -2413,15 +2484,15 @@ msgstr "" msgid "Grooveshark login error" msgstr "" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2429,44 +2500,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2475,7 +2546,7 @@ msgstr "" msgid "HTTP proxy" msgstr "" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2491,25 +2562,25 @@ msgstr "" msgid "High" msgstr "" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2521,15 +2592,15 @@ msgstr "" msgid "Icon" msgstr "" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2539,24 +2610,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2567,7 +2638,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "" @@ -2579,36 +2650,36 @@ msgstr "" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "" @@ -2616,55 +2687,55 @@ msgstr "" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "" @@ -2672,42 +2743,42 @@ msgstr "" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2716,11 +2787,12 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "" @@ -2728,11 +2800,11 @@ msgstr "" msgid "Language" msgstr "" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2740,12 +2812,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2753,45 +2829,7 @@ msgstr "" msgid "Last.fm" msgstr "" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2799,11 +2837,11 @@ msgstr "" msgid "Last.fm password" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "" @@ -2811,28 +2849,24 @@ msgstr "" msgid "Last.fm username" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "" @@ -2840,24 +2874,24 @@ msgstr "" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2869,15 +2903,15 @@ msgstr "" msgid "Load cover from URL" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "" @@ -2885,84 +2919,89 @@ msgstr "" msgid "Load playlist" msgstr "" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "" @@ -2974,12 +3013,17 @@ msgstr "" msgid "Lyrics" msgstr "" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "" @@ -2991,15 +3035,15 @@ msgstr "" msgid "MP3 96k" msgstr "" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "" @@ -3007,7 +3051,7 @@ msgstr "" msgid "Magnatune Download" msgstr "" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -3015,15 +3059,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3036,15 +3085,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3056,17 +3105,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3078,11 +3131,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "" @@ -3090,20 +3147,20 @@ msgstr "" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3111,15 +3168,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3128,7 +3189,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3137,7 +3198,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "" @@ -3145,56 +3206,32 @@ msgstr "" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3202,23 +3239,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "" @@ -3227,21 +3260,21 @@ msgstr "" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "" @@ -3249,24 +3282,24 @@ msgstr "" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3274,7 +3307,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3282,7 +3315,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3296,11 +3329,11 @@ msgstr "" msgid "None" msgstr "" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3308,43 +3341,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3357,36 +3394,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3394,11 +3436,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3406,23 +3448,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3430,30 +3472,35 @@ msgstr "" msgid "Open device" msgstr "" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "" @@ -3473,23 +3520,23 @@ msgstr "" msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "" @@ -3497,7 +3544,7 @@ msgstr "" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3505,15 +3552,11 @@ msgstr "" msgid "Output options" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "" @@ -3525,15 +3568,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3542,20 +3585,20 @@ msgstr "" msgid "Password" msgstr "" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3564,34 +3607,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3600,45 +3631,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "" @@ -3650,23 +3678,23 @@ msgstr "" msgid "Plugin status:" msgstr "" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "" @@ -3675,22 +3703,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "" @@ -3726,7 +3755,7 @@ msgstr "" msgid "Press a key" msgstr "" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3737,20 +3766,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3758,21 +3787,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3780,7 +3813,12 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "" @@ -3788,28 +3826,33 @@ msgstr "" msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3817,48 +3860,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3866,19 +3909,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3890,8 +3929,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3899,7 +3938,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3907,73 +3946,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3982,15 +4025,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3998,24 +4041,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4023,15 +4066,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4051,11 +4094,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "" @@ -4067,25 +4110,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4093,27 +4136,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4129,11 +4178,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "" @@ -4145,7 +4194,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4153,10 +4202,14 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "" @@ -4164,23 +4217,23 @@ msgstr "" msgid "Search Icecast stations" msgstr "" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4200,21 +4253,21 @@ msgstr "" msgid "Search mode" msgstr "" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "" @@ -4222,27 +4275,27 @@ msgstr "" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "" @@ -4250,7 +4303,7 @@ msgstr "" msgid "Select background color:" msgstr "" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "" @@ -4266,7 +4319,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4274,7 +4327,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "" @@ -4286,51 +4339,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4358,15 +4411,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "" @@ -4378,32 +4431,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4412,7 +4469,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4427,27 +4484,27 @@ msgstr "" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4463,7 +4520,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4475,43 +4532,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "" @@ -4519,11 +4584,11 @@ msgstr "" msgid "Song Information" msgstr "" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4543,15 +4608,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "" @@ -4567,7 +4640,7 @@ msgstr "" msgid "Spotify" msgstr "" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "" @@ -4575,7 +4648,7 @@ msgstr "" msgid "Spotify plugin" msgstr "" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "" @@ -4583,77 +4656,77 @@ msgstr "" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4663,7 +4736,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4671,7 +4744,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4679,12 +4752,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4693,13 +4766,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4711,43 +4784,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4755,11 +4820,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4768,17 +4833,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4786,40 +4846,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4831,13 +4891,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4857,13 +4917,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4877,11 +4937,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4890,7 +4950,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4900,33 +4960,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4934,27 +4994,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4962,21 +5022,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "" @@ -4988,7 +5052,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4997,11 +5061,11 @@ msgstr "" msgid "Transcoding options" msgstr "" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -5009,72 +5073,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5082,7 +5146,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5090,21 +5154,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5112,11 +5176,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5136,7 +5200,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5176,20 +5240,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5211,12 +5275,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "" @@ -5229,7 +5293,7 @@ msgstr "" msgid "Visualization mode" msgstr "" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "" @@ -5237,11 +5301,15 @@ msgstr "" msgid "Visualizations Settings" msgstr "" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5259,11 +5327,11 @@ msgstr "" msgid "WMA" msgstr "" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "" @@ -5271,7 +5339,7 @@ msgstr "" msgid "Website" msgstr "" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "" @@ -5297,32 +5365,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "" -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "" @@ -5343,7 +5411,7 @@ msgstr "" msgid "Windows Media 64k" msgstr "" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "" @@ -5351,25 +5419,25 @@ msgstr "" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5381,11 +5449,11 @@ msgstr "" msgid "Year - Album" msgstr "" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "" @@ -5393,13 +5461,13 @@ msgstr "" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5409,12 +5477,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5422,13 +5490,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5438,13 +5506,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5489,17 +5564,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5507,42 +5576,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "" @@ -5562,19 +5632,19 @@ msgstr "" msgid "before" msgstr "" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5584,20 +5654,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "" @@ -5605,11 +5675,11 @@ msgstr "" msgid "gpodder.net" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5617,54 +5687,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "" @@ -5676,36 +5747,37 @@ msgstr "" msgid "press enter" msgstr "" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "" diff --git a/src/translations/uk.po b/src/translations/uk.po index 1a5bbd0ad..3ca4770c8 100644 --- a/src/translations/uk.po +++ b/src/translations/uk.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 05:53+0000\n" +"PO-Revision-Date: 2014-05-11 10:40+0000\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/clementine/language/uk/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +17,7 @@ msgstr "" "Language: uk\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -42,9 +42,9 @@ msgstr " днів" msgid " kbps" msgstr " кб/с" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " мс" @@ -57,11 +57,16 @@ msgstr " тчк" msgid " seconds" msgstr " секунд" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " композицій" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 композицій)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 альбом(ів)" @@ -71,12 +76,12 @@ msgstr "%1 альбом(ів)" msgid "%1 days" msgstr "%1 д." -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 день тому" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 на %2" @@ -86,48 +91,48 @@ msgstr "%1 на %2" msgid "%1 playlists (%2)" msgstr "%1 списків відтворення (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "обрано %1 з" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 композиція" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 пісень" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "Знайдено %1 пісень" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "Знайдено %1 пісень (показано %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 доріжок" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 передано" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Модуль Wiimotedev" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 інших слухачів" @@ -141,18 +146,21 @@ msgstr "%L1 відтворень в цілому" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n з помилкою" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n завершено" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n залишилось" @@ -164,24 +172,24 @@ msgstr "&Вирівняти текст" msgid "&Center" msgstr "По &центру" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Нетипово" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "Додатково" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Довідка" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Приховати %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Приховати…" @@ -189,23 +197,23 @@ msgstr "Приховати…" msgid "&Left" msgstr "&Ліворуч" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "Музика" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Немає" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "Список відтворення" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "Ви&йти" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "Режим повтору" @@ -213,23 +221,23 @@ msgstr "Режим повтору" msgid "&Right" msgstr "&Праворуч" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Режим перемішування" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Розтягнути стовпчики відповідно вмісту вікна" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Інструменти" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(відрізняється поміж багатьма піснями)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "…та всім розробникам Amarok" @@ -249,14 +257,10 @@ msgstr "0 т." msgid "1 day" msgstr "1 день" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 доріжка" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -266,7 +270,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 випадкових доріжок" @@ -274,12 +278,6 @@ msgstr "50 випадкових доріжок" msgid "Upgrade to Premium now" msgstr "Оновитися до Premium зараз" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "Створити обліковий запис або відновити ваш пароль" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -290,6 +288,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

Якщо цей пункт не позначено, Clementine намагатиметься зберігати дані щодо оцінок та інші статистичні дані у окремій базі даних і не вноситиме змін до ваших файлів.

Якщо пункт позначено, програма зберігатиме статистичні дані у базі даних та безпосередньо у файлі, щойно буде виявлено зміни у даних.

Будь ласка, зауважте, що збереження даних можливе не для всіх форматів файлів. Крім того, не існує стандартів зберігання подібних даних, тому може так статися, що інші програвачі не зможуть прочитати ці дані.

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

Вкажіть перед словом назву поля, щоб обмежити пошук вмістом вказаного поля. Приклад: artist:Руслана призведе до пошуку у бібліотеці усіх виконавців, записи назв яких містять слово «Руслана».

Передбачено доступ до таких полів: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -298,38 +307,38 @@ msgid "" "activated.

" msgstr "

За допомогою цього пункту можна наказати програмі записувати для всіх композицій у вашій бібліотеці оцінки та статистичні дані щодо композицій до міток у файлі.

Потреби у використанні цього пункту немає, якщо постійно позначено пункт «Зберігати дані щодо оцінки та статистичні дані у мітках файлів».

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Мітки починаються з %, наприклад: %artist %album %title

\n\n

Якщо ви берете частину тексту з міткою у фігурні дужки, ця частина буде приховуватись, якщо мітка порожня.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Потрібен обліковий запис Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Потрібен обліковий запис Spotify Premium." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Клієнтське з’єднання стане можливим лише після введення належного коду." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "«Розумний» список відтворення — це динамічний список композицій з вашої фонотеки. Існують різні типи таких списків з різними способами вибору композицій." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Пісню буде включено до списку відтворення якщо вона відповідає наступним умовам." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -349,36 +358,35 @@ msgstr "AAC, 32 кб" msgid "AAC 64k" msgstr "AAC, 64 кб" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ВСЯ СЛАВА ГІПНОЖАБІ" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Перервати" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Про %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Про Clementine…" -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Про Qt…" -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Параметри облікового запису" @@ -390,11 +398,15 @@ msgstr "Параметри облікового запису (Premium)" msgid "Action" msgstr "Дія" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Активувати/деактивувати Wiiremote" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "Потік дій" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Додати подкаст" @@ -410,39 +422,39 @@ msgstr "Додати новий рядок, якщо підтримується msgid "Add action" msgstr "Додати дію" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Додати інший потік…" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Додати теку…" -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Додати файл" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Додати файл для перекодування" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Додати файли для перекодування" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Додати файл…" -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Додати файли для перекодування" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Додати теку" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Додати теку…" @@ -454,11 +466,11 @@ msgstr "Додати нову теку…" msgid "Add podcast" msgstr "Додати подкаст" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Додати подкаст..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Додати критерій пошуку" @@ -522,6 +534,10 @@ msgstr "Додати мітку кількості пропусків" msgid "Add song title tag" msgstr "Додати мітку назви пісні" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "Додати композицію до кешу" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Додати мітку номеру доріжки" @@ -530,22 +546,34 @@ msgstr "Додати мітку номеру доріжки" msgid "Add song year tag" msgstr "Додати мітку року пісні" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "Додавати композиції до теки «Моя музика», якщо натиснуто кнопку «Уподобати»" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Додати потік…" -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Додати до улюблених на Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Додати до списків відтворення Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "Додати до «Моєї музики»" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Додати до іншого списку відтворення" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "Додати до закладок" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Додати до списку відтворення" @@ -554,6 +582,10 @@ msgstr "Додати до списку відтворення" msgid "Add to the queue" msgstr "Додати до черги" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "Додати користувача/групу до закладок" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Додати дію wiimotedev" @@ -583,15 +615,15 @@ msgstr "Додано сьогодні" msgid "Added within three months" msgstr "Додано за три місяці" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Додавання композицій до теки Моя музика" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Додавання пісні до улюблених" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Розширене групування…" @@ -599,12 +631,12 @@ msgstr "Розширене групування…" msgid "After " msgstr "Після " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Після копіювання…" -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -612,11 +644,11 @@ msgstr "Після копіювання…" msgid "Album" msgstr "Альбом" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Альбом (ідеальна гучність для всіх композицій)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -626,35 +658,36 @@ msgstr "Виконавець альбому" msgid "Album cover" msgstr "Обкладинка альбому" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Дані про альбом на jamendo.com…" -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Альбоми з обкладинками" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Альбоми без обкладинок" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Всі файли (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" msgstr "Вся слава Гіпножабі!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Всі альбоми" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Всі виконавці" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Всі файли (*)" @@ -663,19 +696,19 @@ msgstr "Всі файли (*)" msgid "All playlists (%1)" msgstr "Всі списки відтворення (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Всім перекладачам" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Всі доріжки" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "Дозволити клієнту отримувати музику з цього комп’ютера." -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Дозволити отримання" @@ -700,30 +733,30 @@ msgstr "Завжди показувати головне вікно" msgid "Always start playing" msgstr "Завжди починати відтворення" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Для користування Spotify в Clementine, потрібний додатковий модуль. Завантажити і встановити його зараз?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Виникла помилка завантаження бази даних iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Трапилася помилка під час запису метаданих до '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Сталася неочікувана помилка." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Та:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Злість" @@ -732,13 +765,13 @@ msgstr "Злість" msgid "Appearance" msgstr "Вигляд" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Додати файли/адреси до списку відтворення" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Додати до списку відтворення" @@ -746,52 +779,47 @@ msgstr "Додати до списку відтворення" msgid "Append to the playlist" msgstr "Додати до списку відтворення" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Застосувати стиснення для запобігання зрізанню" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Ви дійсно хочете вилучити задане \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Ви справді хочете вилучити цей список відтворення?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Впевнені, що бажаєте скинути статистику цієї композиції?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "Ви справді хочете записати статистичні дані до всіх файлів композицій у вашій бібліотеці?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Виконавець" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Про виконавця" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Радіо виконавця" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Мітки виконавця" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Ініціали виконавця" @@ -799,9 +827,13 @@ msgstr "Ініціали виконавця" msgid "Audio format" msgstr "Аудіо-формат" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "Виведення звуку" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Помилка автентификації" @@ -809,7 +841,7 @@ msgstr "Помилка автентификації" msgid "Author" msgstr "Автор" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Автори" @@ -825,7 +857,7 @@ msgstr "Автоматичне оновлення" msgid "Automatically open single categories in the library tree" msgstr "Автоматично відкривати одиночні категорії в дереві фонотеки" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Доступне" @@ -833,15 +865,15 @@ msgstr "Доступне" msgid "Average bitrate" msgstr "Середня бітова швидкість" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Середній розмір малюнку" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Подкасти BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "Бітів за хвилину" @@ -862,7 +894,7 @@ msgstr "Зображення тла" msgid "Background opacity" msgstr "Прозорість фону" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Створення резервної копії бази даних" @@ -870,11 +902,7 @@ msgstr "Створення резервної копії бази даних" msgid "Balance" msgstr "Баланс" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Додати до заборонених" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Смужка аналізатора" @@ -894,18 +922,17 @@ msgstr "Поведінка" msgid "Best" msgstr "Найкраще" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Біографія з %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Бітова швидкість" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -913,7 +940,12 @@ msgstr "Бітова швидкість" msgid "Bitrate" msgstr "Бітова швидкість" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "Бітова швидкість" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Блок аналізатора" @@ -929,7 +961,7 @@ msgstr "Рівень розмивання" msgid "Body" msgstr "Текст" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Плаваючий аналізатор" @@ -943,11 +975,11 @@ msgstr "Box" msgid "Browse..." msgstr "Огляд…" -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "Місткість буфера" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Буферизація" @@ -959,43 +991,66 @@ msgstr "Ці джерела вимкнено:" msgid "Buttons" msgstr "Кнопки" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "Типово, у Grooveshark композиції упорядковуються за додаванням" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Підтримка листів CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "Каталог кешу:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "Кешування" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "Кешування %1" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Скасувати" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "Слід пройти перевірку CAPTCHA.\nСпробуйте увійти до Vk.com за допомогою вашої програми для перегляду інтернету, щоб виправити це." + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Змінити обкладинку" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Змінити розмір шрифту…" -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Змінити режим повторення" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Змінити комбінацію клавіш…" -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Змінити режим перемішування" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Змінити мову" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1005,15 +1060,19 @@ msgstr "Зміни, внесені до параметрів монофоніч msgid "Check for new episodes" msgstr "Перевіряти наявність нових випусків" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Перевірити оновлення…" -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "Виберіть каталог кешування даних Vk.com" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Оберіть ім’я для вашого розумного списку відтворення" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Вибрати автоматично" @@ -1029,11 +1088,11 @@ msgstr "Вибрати шрифт…" msgid "Choose from the list" msgstr "Вибрати зі списку" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Вибрати спосіб сортування списку та кількість композицій в ньому." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Обрати теку для завантаження подкастів" @@ -1042,7 +1101,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Оберіть веб-сайти, які Clementine має використати для пошуку текстів пісень." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Класична" @@ -1050,17 +1109,17 @@ msgstr "Класична" msgid "Cleaning up" msgstr "Вичищаю" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Очистити" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Очистити список відтворення" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1073,8 +1132,8 @@ msgstr "Помилка Clementine" msgid "Clementine Orange" msgstr "Помаранчевий Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Візуалізація Clementine" @@ -1096,9 +1155,9 @@ msgstr "Clementine може відтворювати музичні дані, я msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine може відтворювати музику, вивантажену вами на Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine може відтворювати музичні дані, які вивантажили на Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine може відтворювати музику, вивантажену вами на OneDrive" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1111,20 +1170,13 @@ msgid "" "an account." msgstr "Clementine може синхронізувати список ваших підписок з іншими комп’ютерами та додатками для подкастів. Створити рахунок." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine не вдалось завантажити візуалізації projectM. Перевірте чи ви правильно встановили Clementine." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine не вдається отримати стан вашої передплати через проблеми зі зв'язком. Відтворювані доріжки буде кешовано і надіслано до Last.fm пізніше." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Переглядач зображень Clementine" @@ -1136,11 +1188,11 @@ msgstr "Clementine не зміг здобути результатів для ц msgid "Clementine will find music in:" msgstr "Clementine шукатиме музику у:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Клацніть тут, щоб додати музику" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1150,7 +1202,10 @@ msgstr "Натисніть тут, щоб зробити цей список в msgid "Click to toggle between remaining time and total time" msgstr "Клацніть аби перемкнутися між часом, що залишився, та загальним" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1165,19 +1220,19 @@ msgstr "Закрити" msgid "Close playlist" msgstr "Закрити список відтворення" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Закрити візуалізацію" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Закриття цього вікна скасує завантаження." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Закриття цього вікна зупинить пошук обкладинок альбомів." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Клубна" @@ -1185,73 +1240,78 @@ msgstr "Клубна" msgid "Colors" msgstr "Кольори" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Список, розділений комами, виду клас:рівень, рівень може бути від 0 до 3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Коментар" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "Громадське радіо" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Заповнити мітки автоматично" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Заповнити мітки автоматично…" -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Композитор" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Налаштувати %1…" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Налаштувати Grooveshark…" -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Налаштування Last.fm…" - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Налаштувати Magnatune…" -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Налаштування комбінацій клавіш" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Налаштування Spotify…" -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Налаштувати Subsonic…" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "Налаштувати Vk.com…" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Налаштувати загальні правила пошуку…" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Налаштувати фонотеку" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Налаштувати подкасти..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Налаштувати…" @@ -1259,11 +1319,11 @@ msgstr "Налаштувати…" msgid "Connect Wii Remotes using active/deactive action" msgstr "Під’єднати Wii Remotes через дію активувати/деактивувати" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "З’єднати пристрій" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "З'єднання зі Spotify" @@ -1273,12 +1333,16 @@ msgid "" "http://localhost:4040/" msgstr "Сервер відмовив у з’єднанні. Переконайтеся, що адресу сервера вказано правильно. Приклад: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Вичерпано строк очікування на з’єднання. Переконайтеся, що адресу сервера вказано правильно. Приклад: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "Проблеми зі з’єднанням або надсилання звукових даних вимкнено власником" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Консоль" @@ -1294,17 +1358,21 @@ msgstr "Конвертувати всю музику" msgid "Convert any music that the device can't play" msgstr "Конвертувати всю музику, яку не може відтворити пристрій" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "Копіювати адресу оприлюднення до буфера" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Копіювати до буфера" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Копіювати до пристрою…" -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Скопіювати до фонотеки…" @@ -1312,156 +1380,152 @@ msgstr "Скопіювати до фонотеки…" msgid "Copyright" msgstr "Копірайт" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Не вдалося встановити з’єднання з Subsonic, перевірте адресу сервера. Приклад: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Не вдалось створити елемент GStreamer \"%1\" - переконайтесь, що всі потрібні для GStreamer модулі встановлені" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "Не вдалося створити список відтворення" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Не вдалось знайти ущільнювач для %1, перевірте чи правильно встановлений модуль GStreamer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Не вдалось знайти кодер для %1, перевірте чи правильно встановлений модуль GStreamer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Не вдалось завантажити радіостанцію last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Не вдалось відкрити вихідний файл %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Менеджер обкладинок" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Обкладинка з вбудованого малюнка" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Обкладинку завантажено з %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Обкладинку прибрано вручну" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Обкладинку не встановлено" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Обкладинку встановлено з %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Обкладинки з %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Створити список відтворення Grooveshark" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Перехресне згасання під час автоматичної зміни доріжок" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Перехресне згасання під час ручної зміни доріжок" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Вниз" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1469,7 +1533,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Вгору" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Інша" @@ -1481,54 +1545,50 @@ msgstr "Нетипове зображення:" msgid "Custom message settings" msgstr "Власні налаштування повідомлень" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Інша радіостанція" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Нетиповий…" -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Шлях DBus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Танцювальна" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Виявлено пошкодження бази даних. Будь ласка, ознайомтеся з даними на сторінці https://code.google.com/p/clementine-player/wiki/DatabaseCorruption , щоб дізнатися більше про способи відновлення вашої бази даних." -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Дата створення" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Дата зміни" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Днів" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "Ти&пово" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Зменшити гучність на 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Зменшити гучність на відсотків" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Зменшити гучність" @@ -1536,6 +1596,11 @@ msgstr "Зменшити гучність" msgid "Default background image" msgstr "Типове зображення тла" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "Типовий пристрій у %1" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Типові значення" @@ -1544,30 +1609,30 @@ msgstr "Типові значення" msgid "Delay between visualizations" msgstr "Затримка між візуалізаціями" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Вилучити" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Вилучити список відтворення Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Видалити завантажені дані" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Вилучити файли" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Вилучити з пристрою…" -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Вилучити з диска…" @@ -1575,31 +1640,31 @@ msgstr "Вилучити з диска…" msgid "Delete played episodes" msgstr "Видалити відтворені випуски" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Скинути налаштування" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Видалити розумний список відтворення" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Вилучити оригінальні файли" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Вилучення файлів" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Вилучити з черги вибрані доріжки" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Вилучити з черги доріжки" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Призначення" @@ -1608,7 +1673,7 @@ msgstr "Призначення" msgid "Details..." msgstr "Детальніше…" -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Пристрій" @@ -1620,15 +1685,15 @@ msgstr "Налаштування пристрою" msgid "Device name" msgstr "Назва пристрою" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Налаштування пристрою…" -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Пристрої" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "Діалогове вікно" @@ -1665,12 +1730,17 @@ msgstr "Вимкнути тривалість" msgid "Disable moodbar generation" msgstr "Вимкнути створення смужок настрою" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "Вимкнено" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "Вимкнено" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Диск" @@ -1680,15 +1750,15 @@ msgid "Discontinuous transmission" msgstr "Переривчаста передача" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Налаштування відображення" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Показувати екранні повідомлення" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Повторити повне сканування фонотеки" @@ -1700,27 +1770,27 @@ msgstr "Не конвертувати ніяку музику" msgid "Do not overwrite" msgstr "Не перезаписувати" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Не повторювати" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Не показувати в «різних виконавцях»" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Не перемішувати" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Не зупиняти!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Підтримати фінансово" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Подвійне клацання, щоб відкрити" @@ -1728,12 +1798,13 @@ msgstr "Подвійне клацання, щоб відкрити" msgid "Double clicking a song will..." msgstr "Подвійне клацання на пісні:" -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Завантажити %n випусків" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Тека завантаження" @@ -1749,7 +1820,7 @@ msgstr "Завантажити членство" msgid "Download new episodes automatically" msgstr "Завантажувати нові епізоди автоматично" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Завантаження поставлено в чергу" @@ -1757,15 +1828,15 @@ msgstr "Завантаження поставлено в чергу" msgid "Download the Android app" msgstr "Отримати програму для Android" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Завантажити цей альбом" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Завантажити цей альбом…" -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Завантажити цей випуск" @@ -1773,7 +1844,7 @@ msgstr "Завантажити цей випуск" msgid "Download..." msgstr "Звантажити…" -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Завантажую (%1%)..." @@ -1782,23 +1853,23 @@ msgstr "Завантажую (%1%)..." msgid "Downloading Icecast directory" msgstr "Завантажую каталог Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Завантажую каталог Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Завантаження каталогу Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Завантаження модуля Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Завантажую метадані" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Перетягніть, щоб змінити розташування" @@ -1818,20 +1889,20 @@ msgstr "Тривалість" msgid "Dynamic mode is on" msgstr "Динамічний режим увімкнено" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Динамічний випадковий мікс" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Редагувати розумний список відтворення…" -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "Змінити «%1»…" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Редагувати мітку…" @@ -1843,16 +1914,16 @@ msgstr "Редагувати мітки" msgid "Edit track information" msgstr "Редагувати дані доріжки" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Редагувати дані про доріжку…" -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Редагувати дані про доріжки…" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Змінити…" @@ -1860,6 +1931,10 @@ msgstr "Змінити…" msgid "Enable Wii Remote support" msgstr "Увімкнути підтримку Wii Remote" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "Увімкнути автоматичне кешування" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Увімкнути еквалайзер" @@ -1874,7 +1949,7 @@ msgid "" "displayed in this order." msgstr "Включити наведені нижче адреси до джерел пошуку. Результати буде показано відповідно до вказаного вами порядку." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Увімкнути/вимкнути скроблінг в Last.fm" @@ -1902,15 +1977,10 @@ msgstr "Введіть посилання для завантаження обк msgid "Enter a filename for exported covers (no extension):" msgstr "Вкажіть назву файла для експортованих обкладинок (без суфікса назви):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Введіть нову назву для цього списку відтворення" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Вкажіть виконавця або мітку, щоб слухати радіо Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1924,7 +1994,7 @@ msgstr "Введіть критерії пошуку для пошуку под msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Введіть критерії пошуку для пошуку подкастів на gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Введіть сюди критерії пошуку" @@ -1933,11 +2003,11 @@ msgstr "Введіть сюди критерії пошуку" msgid "Enter the URL of an internet radio stream:" msgstr "Введіть адресу радіо-потоку:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Вкажіть назву теки" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Вкажіть цю IP-адресу у програмі для встановлення з’єднання з Clementine." @@ -1945,21 +2015,22 @@ msgstr "Вкажіть цю IP-адресу у програмі для вста msgid "Entire collection" msgstr "Вся фонотека" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Еквалайзер" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Відповідає --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Відповідає --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Помилка" @@ -1967,38 +2038,38 @@ msgstr "Помилка" msgid "Error connecting MTP device" msgstr "Помилка з’єднання з пристроєм MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Помилка копіювання композицій" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Помилка вилучення композицій" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Помилка завантаження модуля Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Помилка завантаження %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Помилка завантаження списку відтворення di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Помилка обробляння %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Помилка завантаження аудіо CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Будь-коли відтворений" @@ -2030,7 +2101,7 @@ msgstr "Кожні 6 годин" msgid "Every hour" msgstr "Кожну годину" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Крім як між треками на одному альбомі, або в тому ж CUE листі" @@ -2042,7 +2113,7 @@ msgstr "Наявні обкладинки" msgid "Expand" msgstr "Розгорнути" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Діє до %1" @@ -2063,36 +2134,36 @@ msgstr "Експортувати отримані обкладинки" msgid "Export embedded covers" msgstr "Експортувати вбудовані обкладинки" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Експортування завершено" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "Експортовано %1 обкладинок з %2 (%3 пропущено)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2102,42 +2173,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "Зтишувати під час призупинення і робити голоснішим під час відновлення" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Згасання під час зупинки відтворення" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Згасання" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Тривалість згасання" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "Не вдалося виконати читання з простою читання компакт-дисків" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Не вдалося отримати каталог" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Не вдалося отримати подкасти" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Не вдалося завантажити подкаст" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Не вдалося розібрати XML для цієї RSS стрічки" @@ -2146,11 +2217,11 @@ msgstr "Не вдалося розібрати XML для цієї RSS стрі msgid "Fast" msgstr "Швидко" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Улюблені" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Улюблені композиції" @@ -2166,11 +2237,11 @@ msgstr "Отримувати автоматично" msgid "Fetch completed" msgstr "Отримання завершено" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Отримуємо бібліотеку Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Не вдалося отримати обкладинку" @@ -2178,7 +2249,7 @@ msgstr "Не вдалося отримати обкладинку" msgid "File Format" msgstr "Формат файлів" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Розширення файлу" @@ -2186,19 +2257,23 @@ msgstr "Розширення файлу" msgid "File formats" msgstr "Формати файлів" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Назва файлу" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Назва файлу (без шляху)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "Зразок назви файла:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Розмір файлу" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2208,7 +2283,7 @@ msgstr "Тип файлу" msgid "Filename" msgstr "Назва файлу" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Файли" @@ -2216,15 +2291,19 @@ msgstr "Файли" msgid "Files to transcode" msgstr "Файли для перекодування" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Знайти композиції у фонотеці, що відповідають вказаним вами критеріям." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "Знайти цього виконавця" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Роблю відбиток пісні" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Готово" @@ -2232,7 +2311,7 @@ msgstr "Готово" msgid "First level" msgstr "Перший рівень" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2248,12 +2327,12 @@ msgstr "З підстав ліцензування, для підтримки Sp msgid "Force mono encoding" msgstr "Примусове моно-кодування" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Забути пристрій" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2268,7 +2347,7 @@ msgstr "Забування пристрою вилучає його з цьог #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2296,31 +2375,23 @@ msgstr "Частота кадрів" msgid "Frames per buffer" msgstr "Кадрів на буфер" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Друзі" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Холодність" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Повні баси" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Повні баси + верхи" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Повні верхи" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Аудіо-рушій GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Загальне" @@ -2328,30 +2399,30 @@ msgstr "Загальне" msgid "General settings" msgstr "Загальні налаштування" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Жанр" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Отримати адресу цього списку Grooveshark для оприлюднення" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Отримати адресу цієї композиції Grooveshark для оприлюднення" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Отримання популярних пісень з Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Отримання каналів" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Отримання потоків" @@ -2363,11 +2434,11 @@ msgstr "Дати назву:" msgid "Go" msgstr "Вперед" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "До наступної вкладки списку відтворення" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "До попередньої вкладки списку відтворення" @@ -2375,7 +2446,7 @@ msgstr "До попередньої вкладки списку відтворе msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2385,7 +2456,7 @@ msgstr "Отримано %1 обкладинок з %2 (%3 не вдалось)" msgid "Grey out non existent songs in my playlists" msgstr "Позначати сірим пісні у списках відтворення, що не існують" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2393,15 +2464,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Помилка під час спроби увійти до Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Адреса списку відтворення Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Радіо Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Адреса пісні у Grooveshark" @@ -2409,44 +2480,44 @@ msgstr "Адреса пісні у Grooveshark" msgid "Group Library by..." msgstr "Групувати фонотеку за…" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Групувати за" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Групувати за альбомом" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Групувати за виконавцем" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Групувати за виконавецем/альбомом" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Групувати зак виконавцем/роком - альбомом" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Групувати за жанром/альбомом" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Групувати за жанром/Виконавцем/альбомом" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Групування" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML сторінка не містить жодних RSS стрічок" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "Отримано код стану HTTP 3xx без адреси. Перевірте налаштування сервера." @@ -2455,7 +2526,7 @@ msgstr "Отримано код стану HTTP 3xx без адреси. Пер msgid "HTTP proxy" msgstr "HTTP проксі" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Щастя" @@ -2471,25 +2542,25 @@ msgstr "Відомості про обладнання доступні лише msgid "High" msgstr "Високий" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Висока (%1 к/с)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Висока (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Вузол не знайдено. Переконайтеся, що адресу сервера вказано правильно. Приклад: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Годин" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Гіпножаба" @@ -2501,15 +2572,15 @@ msgstr "У мене немає облікового запису на Magnatune" msgid "Icon" msgstr "Значок" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Значки зверху" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Визначаю пісню" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2519,24 +2590,24 @@ msgstr "Якщо продовжите, цей пристрій буде прац msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Якщо ви знаєте URL подкасту, введіть його та натисніть Вперед." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ігнорувати «The» в іменах виконавців" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Зображення (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Зображення (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "За %1 днів" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "За %1 тижнів" @@ -2547,7 +2618,7 @@ msgid "" "time a song finishes." msgstr "У динамічному режимі нові доріжку буде обрано та додано до списку відтворення кожного разу як завершується пісня." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Вхідні" @@ -2559,36 +2630,36 @@ msgstr "Показувати обкладинку в повідомлені" msgid "Include all songs" msgstr "Включити всі композиції" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Несумісна версія протоколу REST Subsonic. Слід оновити клієнтську частину." -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Несумісна версія протоколу REST Subsonic. Слід оновити серверну частину." -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Налаштовування не завершено! Переконайтеся, що заповнено всі поля." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Збільшити гучність на 4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Збільшити гучність на відсотків" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Збільшити гучність" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Індексуємо %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Інформація" @@ -2596,55 +2667,55 @@ msgstr "Інформація" msgid "Input options" msgstr "Налаштування вхідних даних" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Вставити…" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Встановлено" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Перевірка цілісності даних" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Інтернет" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Інтернет-джерела" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Неправильний ключ API" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Не чинний формат" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Неправильний метод" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Неправильні параметри" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Неправильно вказане джерело" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Нечинна служба" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Неправильний ключ сеансу" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Некоректне ім’я користувача і/або пароль" @@ -2652,42 +2723,42 @@ msgstr "Некоректне ім’я користувача і/або паро msgid "Invert Selection" msgstr "Інвертувати позначення" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Композиції Jamendo, що прослуховувалися найбільше" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Найпопулярніші композиції Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Найпопулярніші композиції місяця в Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Найпопулярніші композиції тижня в Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "База даних Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Перейти до відтворюваної доріжки" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Тримати кнопки %1 секунду…" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Тримати кнопки %1 секунд…" @@ -2696,11 +2767,12 @@ msgstr "Тримати кнопки %1 секунд…" msgid "Keep running in the background when the window is closed" msgstr "Продовжувати виконання у фоні коли вікно зачинено" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Зберегти оригінальні файли" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" msgstr "Кошенята" @@ -2708,11 +2780,11 @@ msgstr "Кошенята" msgid "Language" msgstr "Мова" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "портативний комп’ютер/навушники" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Велика зала" @@ -2720,58 +2792,24 @@ msgstr "Велика зала" msgid "Large album cover" msgstr "Велика обкладинка альбому" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Велика бічна панель" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Востаннє відтворено" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "Останні відтворені" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm Custom Radio: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Збірка Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm Mix Radio - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Радіо сусідів Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Радіостанція Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Подібні виконавці Last.fm на %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Радіо мітки Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "На цей час Last.fm зайнятий, спробуйте через кілька хвилин" @@ -2779,11 +2817,11 @@ msgstr "На цей час Last.fm зайнятий, спробуйте чере msgid "Last.fm password" msgstr "Пароль Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Статистика Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Мітки Last.fm" @@ -2791,28 +2829,24 @@ msgstr "Мітки Last.fm" msgid "Last.fm username" msgstr "Користувач Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Вікі Last.fm" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Найменш улюблені композиції" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Типово, залишити порожнім. Наприклад: \"/dev/dsp\", \"front\" тощо." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Ліворуч" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Тривалість" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Фонотека" @@ -2820,24 +2854,24 @@ msgstr "Фонотека" msgid "Library advanced grouping" msgstr "Розширене групування фонотеки" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Повідомлення про повторне сканування фонотеки" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Пошук у фонотеці" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Обмеження" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Слухати пісні з Grooveshark на основі того, що ви слухали раніше" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Наживо" @@ -2849,15 +2883,15 @@ msgstr "Завантажити" msgid "Load cover from URL" msgstr "Завантажити обкладинку з нетрів" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Завантажити обкладинку з нетрів…" -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Завантажити обкладинку з диска" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Завантажити обкладинку з диска" @@ -2865,84 +2899,89 @@ msgstr "Завантажити обкладинку з диска" msgid "Load playlist" msgstr "Завантажити список відтворення" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Завантажити список відтворення…" -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Завантаження радіо Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Завантаження пристрою MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Завантаження бази даних iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Завантаження «розумного» списку відтворення" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Завантаження пісень" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Завантаження потоку" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Завантаження доріжок" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Завантажую дані доріжок" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Завантаження…" -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Завантажити файли/адреси, замінюючи поточний список відтворення" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Увійти" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Не вдалося увійти" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "Вийти" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Профіль довготривалого передбачення (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Додати до улюблених" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Низька (%1 к/с)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Низька (256x256)" @@ -2954,12 +2993,17 @@ msgstr "Профіль низької складності (LC)" msgid "Lyrics" msgstr "Тексти пісень" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Текст пісні з %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2971,15 +3015,15 @@ msgstr "MP3, 256 кб" msgid "MP3 96k" msgstr "MP3, 96 кб" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2987,7 +3031,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Завантаження з Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Завантаження з Magnatune завершено" @@ -2995,15 +3039,20 @@ msgstr "Завантаження з Magnatune завершено" msgid "Main profile (MAIN)" msgstr "Основний профіль (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Гаразд!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "Гаразд!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Зробити список відтворення доступним онлайн" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Спотворений відгук" @@ -3016,15 +3065,15 @@ msgstr "Ручне налаштування проксі" msgid "Manually" msgstr "Вручну" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Виробник" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Позначити як прослуханий" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Позначити як новий" @@ -3036,17 +3085,21 @@ msgstr "Враховувати кожний пошуковий термін (AND msgid "Match one or more search terms (OR)" msgstr "Враховувати один чи більше пошукових термінів (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "Максимальна кількість результатів загального пошуку" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Найбільша бітова швидкість" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Середня (%1 к/с)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Середня (512x512)" @@ -3058,11 +3111,15 @@ msgstr "Тип членства" msgid "Minimum bitrate" msgstr "Найменша бітова швидкість" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "Мінімальне заповнення буфера" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Відсутні типові налаштування projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Модель" @@ -3070,20 +3127,20 @@ msgstr "Модель" msgid "Monitor the library for changes" msgstr "Стежити за змінами у фонотеці" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Відтворення у режимі моно" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Місяців" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Настрій" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Стиль смужки настрою" @@ -3091,15 +3148,19 @@ msgstr "Стиль смужки настрою" msgid "Moodbars" msgstr "Смужки настрою" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "Більше" + +#: library/library.cpp:84 msgid "Most played" msgstr "Найчастіше відтворювані" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Точка монтування" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Точки монтування" @@ -3108,7 +3169,7 @@ msgstr "Точки монтування" msgid "Move down" msgstr "Перемістити вниз" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Перемістити до фонотеки…" @@ -3117,7 +3178,7 @@ msgstr "Перемістити до фонотеки…" msgid "Move up" msgstr "Перемістити вгору" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Музика" @@ -3125,56 +3186,32 @@ msgstr "Музика" msgid "Music Library" msgstr "Фонотека" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Вимкнути звук" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Моя бібліотека на Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Моє Mix Radio на Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Мої сусіди на Last.fm" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Моє Recommended Radio на Last.fm" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Моє Mix Radio" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Моя музика" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Моє сусідство" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Моя радіостанція" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Мої рекомендації" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Назва" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "Назва" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Налаштування найменування" @@ -3182,23 +3219,19 @@ msgstr "Налаштування найменування" msgid "Narrow band (NB)" msgstr "Вузька смуга (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Сусіди" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Проксі мережі" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Дистанційне керування з мережі" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Ніколи" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Ніколи не відтворені" @@ -3207,21 +3240,21 @@ msgstr "Ніколи не відтворені" msgid "Never start playing" msgstr "Ніколи не починати відтворення" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Нова тека" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Новий список відтворення" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Новий «розумний» список відтворення" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Нові композиції" @@ -3229,24 +3262,24 @@ msgstr "Нові композиції" msgid "New tracks will be added automatically." msgstr "Нові композиції буде додано автоматично" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Найновіші доріжки" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Наступна" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Наступна доріжка" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Наступного тижня" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Без аналізатора" @@ -3254,7 +3287,7 @@ msgstr "Без аналізатора" msgid "No background image" msgstr "Без зображення тла" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Немає зображень обкладинок для експортування." @@ -3262,7 +3295,7 @@ msgstr "Немає зображень обкладинок для експорт msgid "No long blocks" msgstr "Без довгих блоків" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Нічого не знайдено. Очистіть вікно пошуку, щоб знову показати весь список відтворення." @@ -3276,11 +3309,11 @@ msgstr "Без коротких блоків" msgid "None" msgstr "Немає" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Жодна з вибраних композицій не придатна для копіювання на пристрій" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Звичайний" @@ -3288,43 +3321,47 @@ msgstr "Звичайний" msgid "Normal block type" msgstr "Нормальний тип блоку" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Недоступно при використанні динамічних списків відтворення" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Не з’єднано" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Не достатньо вмісту" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Недостатньо фанів" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Не достатньо учасників" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Недостатньо сусідів" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Не встановлено" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Вхід не здійснено" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Не змонтовано — двічі клацніть, щоб змонтувати" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "Нічого не знайдено" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Тип повідомлення" @@ -3337,36 +3374,41 @@ msgstr "Сповіщення" msgid "Now Playing" msgstr "Зараз відтворюється" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Повідомлення OSD" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "Вимкн." -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Opus Ogg" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "Увімкн." -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3374,11 +3416,11 @@ msgid "" "192.168.x.x" msgstr "Підтримувати зв’язок лише з клієнтами у таких діапазонах IP-адрес:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "З’єднуватися лише у межах локальної мережі" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Показувати лише перший" @@ -3386,23 +3428,23 @@ msgstr "Показувати лише перший" msgid "Opacity" msgstr "Непрозорість" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Відкрити %1 у переглядачі" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Відкрити &аудіо CD…" -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Відкрити файл OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Відкрити файл OPML…" @@ -3410,30 +3452,35 @@ msgstr "Відкрити файл OPML…" msgid "Open device" msgstr "Відкрити пристрій" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Відкрити файл…" -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Відкрити у Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Відкрити у новому списку відтворення" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "Відкрити у новому списку відтворення" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "Відкрити у вашому переглядачі" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Відкрити…" -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Помилка виконання операції" @@ -3453,23 +3500,23 @@ msgstr "Налаштування…" msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Упорядкування файлів" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Упорядкування файлів…" -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Упорядкування файлів" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Початкові мітки" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Інші налаштування" @@ -3477,7 +3524,7 @@ msgstr "Інші налаштування" msgid "Output" msgstr "Результат" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Пристрій відтворення" @@ -3485,15 +3532,11 @@ msgstr "Пристрій відтворення" msgid "Output options" msgstr "Налаштування виведення" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "Додаток відтворення" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "Перезаписати все" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Перезаписати існуючі файли" @@ -3505,15 +3548,15 @@ msgstr "Перезаписати лише менші" msgid "Owner" msgstr "Власник" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Опрацьовую каталог Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Вечірка" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3522,20 +3565,20 @@ msgstr "Вечірка" msgid "Password" msgstr "Пароль" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Призупинити" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Призупинити відтворення" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Призупинено" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "Виконавець" @@ -3544,34 +3587,22 @@ msgstr "Виконавець" msgid "Pixel" msgstr "Піксель" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Звичайна бічна панель" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Відтворити" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Відтворити «Виконавця» або «Мітку»" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Відтворити радіо виконавця…" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Кількість відтворень" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Слухати іншу радіостанцію…" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Відтворити, якщо зупинено; призупинити, якщо відтворюється" @@ -3580,45 +3611,42 @@ msgstr "Відтворити, якщо зупинено; призупинити, msgid "Play if there is nothing already playing" msgstr "Відтворювати, якщо зараз нічого не відтворюється" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Відтворювати радіо за міткою…" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Відтворити доріжку в списку відтворення" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Відтворити/Призупинити" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Відтворення" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Налаштування програвача" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Список відтворення" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Список відтворення завершився" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Налаштування списку відтворення" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Тип списку відтворення" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Списки відтворення" @@ -3630,23 +3658,23 @@ msgstr "Будь ласка, закрийте вікно програми для msgid "Plugin status:" msgstr "Статус модуля:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Подкасти" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Поп" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Популярні пісні" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Популярні пісні за місяць" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Популярні пісні за день" @@ -3655,22 +3683,23 @@ msgid "Popup duration" msgstr "Тривалість виринаючого повідомлення" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Порт" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Підсилення" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Параметри" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Параметри…" @@ -3706,7 +3735,7 @@ msgstr "Натисніть комбінацію кнопок для" msgid "Press a key" msgstr "Натисніть клавішу" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Натисніть комбінацію клавіш для %1…" @@ -3717,20 +3746,20 @@ msgstr "Налаштування OSD" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Перегляд" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Попередня" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Попередня доріжка" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Відобразити дані про версію" @@ -3738,21 +3767,25 @@ msgstr "Відобразити дані про версію" msgid "Profile" msgstr "Профіль" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Поступ" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "Поступ" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "Психоделічна музика" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Натиснути кнопку Wiiremote" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Виводити композиції у випадковому порядку" @@ -3760,7 +3793,12 @@ msgstr "Виводити композиції у випадковому поря #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "Якість" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "Якість" @@ -3768,28 +3806,33 @@ msgstr "Якість" msgid "Querying device..." msgstr "Опитування пристрою…" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Керування чергою" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Поставити в чергу вибрані доріжки" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Поставити в чергу доріжки" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Радіо (однакова гучність всіх композицій)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Радіо" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "Дощ" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "Дощ" @@ -3797,48 +3840,48 @@ msgstr "Дощ" msgid "Random visualization" msgstr "Випадкова візуалізація" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Поставити поточній композиції нуль зірочок" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Поставити поточній композиції одну зірочку" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Поставити поточній композиції дві зірочки" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Поставити поточній композиції три зірочки" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Поставити поточній композиції чотири зірочки" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Поставити поточній композиції п’ять зірочок" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Оцінка" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Дійсно скасувати?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "Досягнено максимальної кількості переспрямовувань, перевірте налаштування сервера." -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Оновити" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Оновити каталог" @@ -3846,19 +3889,15 @@ msgstr "Оновити каталог" msgid "Refresh channels" msgstr "Оновити канали" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Оновити список друзів" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Оновити список станцій" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Оновити потоки" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Реґґі" @@ -3870,8 +3909,8 @@ msgstr "Пам’ятати рухи в Wii remote" msgid "Remember from last time" msgstr "Пам'ятати з минулого разу" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Вилучити" @@ -3879,7 +3918,7 @@ msgstr "Вилучити" msgid "Remove action" msgstr "Вилучити дію" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Вилучити повтори зі списку відтворення" @@ -3887,73 +3926,77 @@ msgstr "Вилучити повтори зі списку відтворення msgid "Remove folder" msgstr "Вилучити теку" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Вилучити з теки Моя музика" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "Вилучити із закладок" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Вилучити з улюблених" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Вилучити зі списку відтворення" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "Вилучення списку відтворення" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Вилучення списків відтворення" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Вилучення з теки Моя музика" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Вилучення композицій зі списку улюблених" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Перейменувати список відтворення \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Перейменувати список відтворення Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Перейменувати список відтворення" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Перейменувати список відтворення…" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Пронумерувати доріжки в такому порядку…" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Повторювати" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Повторювати альбом" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Повторювати список відтворення" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Повторювати композицію" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Замінити список відтворення" @@ -3962,15 +4005,15 @@ msgstr "Замінити список відтворення" msgid "Replace the playlist" msgstr "Замінити список відтворення" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Замінити пробіли підкресленнями" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Replay Gain" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "Режим вирівнювання гучності" @@ -3978,24 +4021,24 @@ msgstr "Режим вирівнювання гучності" msgid "Repopulate" msgstr "Знов наповнити" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "Потрібен код розпізнавання" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Скинути" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Скинути лічильник відтворень" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "Повторно відтворити композицію або відтворити попередню композицію, якщо було відтворено не більше 8 секунд поточної композиції." -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Обмежитись символами ASCII" @@ -4003,15 +4046,15 @@ msgstr "Обмежитись символами ASCII" msgid "Resume playback on start" msgstr "Відновлювати відтворення після запуску" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Отримання даних щодо композицій теки Моя музика з Grooveshark" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Отримання улюблених пісень з Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Отримання списків відтворення з Grooveshark" @@ -4031,11 +4074,11 @@ msgstr "Оцифрувати" msgid "Rip CD" msgstr "Оцифрувати КД" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "Оцифрувати звуковий КД…" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Рок" @@ -4047,25 +4090,25 @@ msgstr "Виконати" msgid "SOCKS proxy" msgstr "SOCKS проксі" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "Помилка під час спроби встановлення з’єднання SSL. Перевірте налаштування сервера. За допомогою наведеного нижче пункту використання SSLv3 можна уникнути деяких проблем." -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Безпечно вилучити пристрій" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Безпечне вилучення пристрою після копіювання" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Частота вибірки" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Частота вибірки" @@ -4073,27 +4116,33 @@ msgstr "Частота вибірки" msgid "Save .mood files in your music library" msgstr "Зберегти файли .mood до вашої музичної бібліотеки" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Зберегти обкладинку" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Зберегти обкладинку на диск…" -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Зберегти зображення" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "Зберегти список відтворення" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "Збереження списку відтворення" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Зберегти список відтворення…" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Зберегти налаштування" @@ -4109,11 +4158,11 @@ msgstr "Зберігати статистичні дані у мітках фа msgid "Save this stream in the Internet tab" msgstr "Зберегти цей потік на вкладці «Інтернет»" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "Зберігаємо статистичні дані щодо композицій до файлів композицій" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Зберігаю доріжки" @@ -4125,7 +4174,7 @@ msgstr "Профіль масштабованої частоти вибірки msgid "Scale size" msgstr "Масштабований розмір" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Рахунок" @@ -4133,10 +4182,14 @@ msgstr "Рахунок" msgid "Scrobble tracks that I listen to" msgstr "Скробблити доріжки, які я слухаю" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "Пошук" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "Пошук" @@ -4144,23 +4197,23 @@ msgstr "Пошук" msgid "Search Icecast stations" msgstr "Шукати станції Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Шукати на Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Пошук на Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Шукати на Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "Шукати автоматично" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Пошук обкладинок альбомів…" @@ -4180,21 +4233,21 @@ msgstr "Пошук по iTunes" msgid "Search mode" msgstr "Режим пошуку" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Налаштування пошуку" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Результати пошуку" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Умови пошуку" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Пошук на Grooveshark" @@ -4202,27 +4255,27 @@ msgstr "Пошук на Grooveshark" msgid "Second level" msgstr "Другий рівень" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Перемотати назад" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Перемотати вперед" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Трохи перемотати поточну доріжку" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Перемотати поточну доріжку на абсолютну позицію" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Вибрати все" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Скасувати вибір" @@ -4230,7 +4283,7 @@ msgstr "Скасувати вибір" msgid "Select background color:" msgstr "Оберіть колір заднього плану:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Вибір зображення тла" @@ -4246,7 +4299,7 @@ msgstr "Оберіть колір переднього плану:" msgid "Select visualizations" msgstr "Вибрати візуалізації" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Вибрати візуалізації…" @@ -4254,7 +4307,7 @@ msgstr "Вибрати візуалізації…" msgid "Select..." msgstr "Вибрати…" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Серійний номер" @@ -4266,51 +4319,51 @@ msgstr "Адреса сервера" msgid "Server details" msgstr "Параметри сервера" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Служба вимкнена" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Встановити %1 до \"%2\"…" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Встановити гучність до відсотків" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Встановити значення для всіх вибраних доріжок…" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "Параметри" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Комбінація клавіш" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Комбінація клавіш для %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Комбінація клавіш для %1 вже є" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Показати" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Показувати OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Показувати для поточної доріжки блимаючу анімацію" @@ -4338,15 +4391,15 @@ msgstr "Показувати підказки в системному лотку msgid "Show a pretty OSD" msgstr "Показувати приємні повідомлення OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Показати вище, в рядку стану" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Показати всі композиції" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Показати всі композиції" @@ -4358,32 +4411,36 @@ msgstr "Показувати обкладинки у фонотеці" msgid "Show dividers" msgstr "Показати розділювачі" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Показати на повний розмір…" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "Показувати групи у результатах загального пошуку" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Показати в оглядачі файлів…" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "Показати у фонотеці…" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Показувати в різних виконавцях" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Показувати смужку настрою" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Показати тільки дублікати" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Показати тільки без міток" @@ -4392,8 +4449,8 @@ msgid "Show search suggestions" msgstr "Показувати пропозиції щодо пошуку" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Показувати кнопки \"Додати до улюблених\" та \"Додати до заборонених\"" +msgid "Show the \"love\" button" +msgstr "Показувати кнопку «love»" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4407,27 +4464,27 @@ msgstr "Показувати значок в лотку" msgid "Show which sources are enabled and disabled" msgstr "Показати список увімкнених та вимкнених джерел" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Показати/приховати" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Режим перемішування" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Перемішати альбоми" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Перемішати все" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Перемішати список відтворення" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Перемішати поточний альбом" @@ -4443,7 +4500,7 @@ msgstr "Вийти" msgid "Signing in..." msgstr "Реєстрація…" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Подібні виконавці" @@ -4455,43 +4512,51 @@ msgstr "Розмір" msgid "Size:" msgstr "Розмір:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ска" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Перескочити назад в списку композицій" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Кількість пропусків" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Перескочити вперед у списку композицій" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "Пропустити позначені композиції" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "Пропустити композицію" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Маленька обкладинка альбому" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Маленька бічна панель" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "«Розумний» список відтворення" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "«Розумні» списки відтворення" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Легка" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Легкий рок" @@ -4499,11 +4564,11 @@ msgstr "Легкий рок" msgid "Song Information" msgstr "Про композицію" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Про композицію" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Сонограма" @@ -4523,15 +4588,23 @@ msgstr "Сортувати за жанром (за популярністю)" msgid "Sort by station name" msgstr "Сортувати за назвою станції" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "Упорядковувати списки композицій за абеткою" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Сортувати композиції за" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Сортування" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Джерело" @@ -4547,7 +4620,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Помилка входу до Spotify" @@ -4555,7 +4628,7 @@ msgstr "Помилка входу до Spotify" msgid "Spotify plugin" msgstr "Модуль Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Модуль Spotify не встановлено" @@ -4563,77 +4636,77 @@ msgstr "Модуль Spotify не встановлено" msgid "Standard" msgstr "Типово" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Оцінені" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "Почати оцифрування" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Запустити список відтворення, що відтворюється на цей час" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Почати перекодування" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Введіть щось у полі пошуку, розташованому вище, щоб побачити на цій панелі список результатів пошуку" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Запуск %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Запуск…" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Станції" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Зупинити" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Зупинити після" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Зупинити після цієї доріжки" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Зупинити відтворення" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Зупинити відтворення після цієї доріжки" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "Зупинити відтворення після композиції %1" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Зупинено" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Потік" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4643,7 +4716,7 @@ msgstr "Після завершення 30-денного періоду тес msgid "Streaming membership" msgstr "Потокове членство" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Підписки на списки відтворення" @@ -4651,7 +4724,7 @@ msgstr "Підписки на списки відтворення" msgid "Subscribers" msgstr "Передплатники" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4659,12 +4732,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Виконано!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Успішно записано %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Пропоновані мітки" @@ -4673,13 +4746,13 @@ msgstr "Пропоновані мітки" msgid "Summary" msgstr "Зведення" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Найвища (%1 к/с)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Надвисока (2048x2048)" @@ -4691,43 +4764,35 @@ msgstr "Підтримувані формати" msgid "Synchronize statistics to files now" msgstr "Синхронізувати статистичні дані з файлами" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Синхронізація вхідних Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Синхронізація списку відтворення Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Синхронізація оцінених доріжок Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Кольори системи" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Вкладки зверху" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Мітка" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Упорядник міток" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Радіо мітки" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Цільова бітова швидкість" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Техно" @@ -4735,11 +4800,11 @@ msgstr "Техно" msgid "Text options" msgstr "Налаштування тексту" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Подяки" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Команда \"%1\" не може бути виконана" @@ -4748,17 +4813,12 @@ msgstr "Команда \"%1\" не може бути виконана" msgid "The album cover of the currently playing song" msgstr "Обкладинка альбому, до якого увійшла композиція, яка зараз відтворюється" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Тека %1 не чинна" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Список відтворення '%1' порожній або не може бути завантажений." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Друге значення має бути більшим за перше!" @@ -4766,40 +4826,40 @@ msgstr "Друге значення має бути більшим за перш msgid "The site you requested does not exist!" msgstr "Вказана вами адреса не існує!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Вказана вами адреса не є малюнком!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Час тестування сервера Subsonic завершено. Будь ласка, придбайте ліцензійний ключ. Відвідайте subsonic.org, щоб дізнатися більше." -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Версія Clementine, яку ви щойно встановили, вимагає повного сканування фонотеки задля використання наступних нових можливостей:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "У цьому альбомі є інші композиції" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Виникла проблема зв’язку з gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Не вдалося отримати метадані з Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Виникла проблема розбору відповіді iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4811,13 +4871,13 @@ msgid "" "deleted:" msgstr "Виникли проблеми вилучення деяких композицій. Не вдалось вилучити такі:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Ці файли будуть вилучені з пристрою. Ви впевнені? Вилучити їх?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4837,13 +4897,13 @@ msgstr "Ці налаштування використовуються у діа msgid "Third level" msgstr "Третій рівень" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Ця дія створить базу даних розміром у 150МБ\nВи точно хочете продовжити?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Цей альбом не доступний в запитуваному форматі" @@ -4857,11 +4917,11 @@ msgstr "Потрібно під’єднати та відкрити прист msgid "This device supports the following file formats:" msgstr "Цей пристрій підтримує такі формати файлів:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Цей пристрій не працюватиме як слід" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Це пристрій MTP, але ви скомпілювали Clementine без підтримки libmtp." @@ -4870,7 +4930,7 @@ msgstr "Це пристрій MTP, але ви скомпілювали Clementi msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Це пристрій iPod, але ви скомпілювали Clementine без підтримки libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4880,33 +4940,33 @@ msgstr "Під час першого під’єднання пристрою, C msgid "This option can be changed in the \"Behavior\" preferences" msgstr "Значення цього параметра можна змінити на сторінці «Поведінка» налаштувань програми." -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Цей потік лише для платних передплатників" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Цей тип пристрою не підтримується: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Назва" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Щоб започаткувати Grooveshark радіо, вам варто спочатку прослухати кілька пісень на Grooveshark." -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Сьогодні" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Змінити режим приємних OSD" @@ -4914,27 +4974,27 @@ msgstr "Змінити режим приємних OSD" msgid "Toggle fullscreen" msgstr "Повноекранний режим" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Перемикнути статус черги" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Змінити режим скроблінгу" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Змінити режим видимості приємних OSD" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Завтра" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Забагато перенапрямлень" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Найкращі композиції" @@ -4942,21 +5002,25 @@ msgstr "Найкращі композиції" msgid "Total albums:" msgstr "Загалом альбомів:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Всього передано байтів" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Всього зроблено запитів до мережі" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Доріжка" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "Композиції" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Перекодування музики" @@ -4968,7 +5032,7 @@ msgstr "Журнал перекодування" msgid "Transcoding" msgstr "Перекодування" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Перекодовано %1 файлів, використовуючи %2 гілки" @@ -4977,11 +5041,11 @@ msgstr "Перекодовано %1 файлів, використовуючи % msgid "Transcoding options" msgstr "Налаштування перекодування" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Турбіна" @@ -4989,72 +5053,72 @@ msgstr "Турбіна" msgid "Turn off" msgstr "Вимкнути" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "Адреса" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "Адреса(и)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Пароль до Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ім’я користувача Ubuntu One" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Надзвичайно широка смуга (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Не вдалось завантажити %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Невідомо" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Невідомий content-type" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Невідома помилка" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Вилучити обкладинку" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "Не пропускати позначені композиції" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "Не пропускати композицію" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Відписатися" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Найближчі виступи" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "Оновити" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Оновити список відтворення на Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Оновити всі подкасти" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Оновити змінені теки у фонотеці" @@ -5062,7 +5126,7 @@ msgstr "Оновити змінені теки у фонотеці" msgid "Update the library when Clementine starts" msgstr "Оновлювати фонотеку під час запуску Clementine" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Оновити цей подкаст" @@ -5070,21 +5134,21 @@ msgstr "Оновити цей подкаст" msgid "Updating" msgstr "Оновлення" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Оновлення %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Оновлення %1%…" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Оновлення фонотеки" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Використання" @@ -5092,11 +5156,11 @@ msgstr "Використання" msgid "Use Album Artist tag when available" msgstr "Використовувати мітку виконавця альбому, якщо є" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Використовувати комбінації клавіш Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Використовувати метадані Replay Gain, якщо такі є" @@ -5116,7 +5180,7 @@ msgstr "Використати власну палітру" msgid "Use a custom message for notifications" msgstr "Використати власне повідомлення для сповіщень" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "Використовувати віддалене керування мережею" @@ -5156,20 +5220,20 @@ msgstr "Використовувати системні налаштування msgid "Use volume normalisation" msgstr "Використати нормалізацію гучності" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Використано" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "У користувача %1 немає облікового запису Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Інтерфейс користувача" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5191,12 +5255,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Змінна бітова швидкість" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Різні виконавці" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Версія %1" @@ -5209,7 +5273,7 @@ msgstr "Перегляд" msgid "Visualization mode" msgstr "Режим візуалізації" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Візуалізації" @@ -5217,11 +5281,15 @@ msgstr "Візуалізації" msgid "Visualizations Settings" msgstr "Налаштування візуалізацій" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Визначення голосової активності" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Гучність %1%" @@ -5239,11 +5307,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "Попереджати про закриття вкладки списку відтворення" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5251,7 +5319,7 @@ msgstr "Wav" msgid "Website" msgstr "Веб-сайт" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Тижнів" @@ -5277,32 +5345,32 @@ msgstr "Чому б не спробувати…" msgid "Wide band (WB)" msgstr "Широка смуга (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: активовано" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: під’єднано" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: критичний розряд батареї (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: деактивовано" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: від’єднано" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: низький заряд батареї (%2%)" @@ -5323,7 +5391,7 @@ msgstr "Windows Media, 40 кб" msgid "Windows Media 64k" msgstr "Windows Media, 64 кб" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5331,25 +5399,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "Без обкладинки:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Хочете пересунути всі ініші композиції цього альбому до розділу «Різні виконавці»?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Бажаєте зараз виконати повторне сканування фонотеки?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Записати статичні дані щодо всіх композицій до файлів композицій" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Помилкове ім’я користувача або пароль." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5361,11 +5429,11 @@ msgstr "Рік" msgid "Year - Album" msgstr "Рік - Альбом" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Років" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Вчора" @@ -5373,13 +5441,13 @@ msgstr "Вчора" msgid "You are about to download the following albums" msgstr "Ви збираєтеся завантажити такі альбоми" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Ви маєте намір вилучити %1 списків відтворення зі списку улюблених. Ви впевнені у цьому?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5389,12 +5457,12 @@ msgstr "Ви наказали програми вилучити список в msgid "You are not signed in." msgstr "Вас не зареєстровано." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Вас зареєстровано як %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Вас зареєстровано." @@ -5402,13 +5470,13 @@ msgstr "Вас зареєстровано." msgid "You can change the way the songs in the library are organised." msgstr "Ви можете змінити спосіб упорядкування композицій у фонотеці." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Ви можете безкоштовно слухати будь-яку музику без облікового запису, але учасники з Premium мають змогу покращити якість звукового потоку та усунути рекламу." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5418,13 +5486,6 @@ msgstr "Ви можете прослухати композиції з Magnatune msgid "You can listen to background streams at the same time as other music." msgstr "Ви можете чути фонові звуки разом з іншою музикою." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Ви можете вільно скробблити доріжки, але лише платні передплатники можуть слухати потокове радіо Last.fm з Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Можете використовувати Wii Remote для віддаленого керування Clementine. Детальніше, на сторінці вікі Clementine.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "У вас немає облікового запису Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "У вас немає облікового запису Spotify Premium." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "У вас немає оформленої передплати" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "Вам не потрібно входити до системи, щоб шукати і слухати музику із SoundCloud. Втім, вам доведеться увійти до системи, якщо ви хочете отримати доступу до ваших списків відтворення та потоків даних." + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Ви вийшли зі Spotify, введіть ваш пароль знов у налаштуваннях, будь ласка." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Ви вийшли зі Spotify, введіть ваш пароль знов, будь ласка." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Улюблена композиція" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "Щоб мати змогу користуватися загальними клавіатурними скороченнями у Clementine, вам слід запустити програму «Системні налаштування» і дозволити Clementine «керувати вашим комп’ютером»." + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5469,17 +5544,11 @@ msgstr "Потрібно запустити «Системні налаштув msgid "You will need to restart Clementine if you change the language." msgstr "Потрібно перезапустити Clementine, щоб змінити мову." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "Ви не зможете прослуховувати радіостанції Last.fm, якщо ви не передплатник Last.fm." - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "Ваша IP-адреса:" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "Ваші облікові дані Last.fm неправильні" @@ -5487,42 +5556,43 @@ msgstr "Ваші облікові дані Last.fm неправильні" msgid "Your Magnatune credentials were incorrect" msgstr "Введені дані облікового запису Magnatune некоректні" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "Ваша фонотека порожня!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Ваші радіо-потоки" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "%1 відтворень у вас" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "У вашій системі не передбачено підтримки OpenGL, отже візуалізаціями не можна буде скористатися." -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Вами вказано помилкове ім’я користувача або пароль." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "додати %n композицій" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "після" @@ -5542,19 +5612,19 @@ msgstr "автоматично" msgid "before" msgstr "до" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "між" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "спочатку найбільші" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "такт/хв." -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "містить" @@ -5564,20 +5634,20 @@ msgstr "містить" msgid "disabled" msgstr "вимкнено" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "диск %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "не містить" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "закінчується на" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "збігається з" @@ -5585,11 +5655,11 @@ msgstr "збігається з" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "Каталог gpodder.net " -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "більше ніж" @@ -5597,54 +5667,55 @@ msgstr "більше ніж" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "У поточній версії робота з пристроями iPod та USB у операційній системі Windows неможлива. Вибачте!" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "за останні" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "кбіт/с" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "менше ніж" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "спочатку найдовші" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "пересунути %n композицій" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "спочатку найновіші" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "не дорівнює" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "не за останні" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "не на" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "спочатку найстаріші" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "на" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "налаштування" @@ -5656,36 +5727,37 @@ msgstr "або скануйте QR-код!" msgid "press enter" msgstr "натисніть клавішу «enter»" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "вилучити %n композицій" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "спочатку найкоротші" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "перемішати композиції" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "спочатку найменші" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "впорядкувати композиції" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "починається з" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "зупинити" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "доріжка %1" diff --git a/src/translations/uz.po b/src/translations/uz.po index 76fee5b8e..a229cfc11 100644 --- a/src/translations/uz.po +++ b/src/translations/uz.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Uzbek (http://www.transifex.com/projects/p/clementine/language/uz/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -16,7 +16,7 @@ msgstr "" "Language: uz\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -41,9 +41,9 @@ msgstr "kun" msgid " kbps" msgstr "kb/s" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " ms" @@ -56,11 +56,16 @@ msgstr " punkt" msgid " seconds" msgstr "soniya" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr "qo'shiq" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 albom" @@ -70,12 +75,12 @@ msgstr "%1 albom" msgid "%1 days" msgstr "%1 kun" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 kun oldin" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 %2'da" @@ -85,48 +90,48 @@ msgstr "%1 %2'da" msgid "%1 playlists (%2)" msgstr "%1 pleylist (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 tanlangan" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 qo'shiq" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 qo'shiq" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 qo'shiq topildi" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 qo'shiq topildi (ko'rsatildi %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 trek" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 ko'chirildi" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev moduli" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 boshqa eshituvchilar" @@ -140,18 +145,21 @@ msgstr "%L1 jami eshitildi" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n muvaffaqiyatsiz tugadi" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n tugadi" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n qoldi" @@ -163,24 +171,24 @@ msgstr "Matnni &tekislash" msgid "&Center" msgstr "&Markaz" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Boshqa" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Extras" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "&Yordam" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "%1 &Yashirish" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "&Yashirish..." @@ -188,23 +196,23 @@ msgstr "&Yashirish..." msgid "&Left" msgstr "&Chap" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Musiqa" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Yo'q" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Pleylist" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "&Chiqish" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Takrorlash" @@ -212,23 +220,23 @@ msgstr "&Takrorlash" msgid "&Right" msgstr "&O'ng" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "&Tasodifan" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "&Ustunlarni oynaga moslash" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Vositalar" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(har xil bir nechta qo'shiqlar orqali)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...va barcha Amarok tuzuvchilariga" @@ -248,14 +256,10 @@ msgstr "0px" msgid "1 day" msgstr "1 kun" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 trek" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -265,7 +269,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 tasodifiy trek" @@ -273,12 +277,6 @@ msgstr "50 tasodifiy trek" msgid "Upgrade to Premium now" msgstr "Premium versiyagacha yangilash" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -289,6 +287,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -297,38 +306,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Grooveshark Anywhere uchun hisob kerak." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Spotify Premium uchun hisob kerak." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Agar qo'shiq shartlarga mos kelsa, u pleylistga qo'shiladi." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -348,36 +357,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "%1 haqida" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Clementine haqida..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Qt haqida..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Hisob tafsilotlari" @@ -389,11 +397,15 @@ msgstr "Hisob tafsilotlari (Premium)" msgid "Action" msgstr "Amal" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Wiiremote yoqish/o'chirish" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Podcast qo'shish" @@ -409,39 +421,39 @@ msgstr "Eslatma turi tomonidan qo'llansa yangi satr qo'shish" msgid "Add action" msgstr "Amal qo'shish" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Boshqa to'lqinni qo'shish..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Jild qo'shish..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Fayl qo'shish" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Fayl qo'shish..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Transkodlash uchun fayllar qo'shish" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Jild qo'shish" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Jild qo'shish..." @@ -453,11 +465,11 @@ msgstr "Yangi jild qo'shish..." msgid "Add podcast" msgstr "Podcast qo'shish" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Podcast qo'shish..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Qidirish shartini qo'shish" @@ -521,6 +533,10 @@ msgstr "Qo'shiq o'tkazib yuborishlar soni tegini qo'shish" msgid "Add song title tag" msgstr "Qo'shiq nomi tegini qo'shish" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Qo'shiq treki tegini qo'shish" @@ -529,22 +545,34 @@ msgstr "Qo'shiq treki tegini qo'shish" msgid "Add song year tag" msgstr "Qo'shiq yili tegini qo'shish" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "To'lqinni qo'shish..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Grooveshark xatcho'plariga qo'shish" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Grooveshark pleylistlariga qo'shish" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Boshqa pleylistga qo'shish" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Pleylistga qo'shish" @@ -553,6 +581,10 @@ msgstr "Pleylistga qo'shish" msgid "Add to the queue" msgstr "Navbatga qo'shish" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Wiimotedev amalini qo'shish" @@ -582,15 +614,15 @@ msgstr "Bugun qo'shilgan" msgid "Added within three months" msgstr "Uch oy ichida qo'shilgan" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Qo'shiqni xatcho'plariga qo'shmoqda" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Kengaytirilgan guruhlarga bo'lish..." @@ -598,12 +630,12 @@ msgstr "Kengaytirilgan guruhlarga bo'lish..." msgid "After " msgstr "Keyin" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Nusxa olgandan keyin..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -611,11 +643,11 @@ msgstr "Nusxa olgandan keyin..." msgid "Album" msgstr "Albom" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Albom (hamma treklar uchun ideal ovoz balandligi)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -625,35 +657,36 @@ msgstr "Albom artisti" msgid "Album cover" msgstr "Albom rasmi" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "jamendo.com sahifasida albom haqida ma'lumot..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Rasmli albomlar" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Rasmsiz albomlar" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Hamma fayllar (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "Gipnobaqaga shon-sharaflar!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Hamma albomlar" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Hamma artistlar" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Hamma fayllar (*)" @@ -662,19 +695,19 @@ msgstr "Hamma fayllar (*)" msgid "All playlists (%1)" msgstr "Hamma pleylistlar (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Hamma tarjimonlar" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Hamma treklar" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -699,30 +732,30 @@ msgstr "Bosh oynani hamisha ko'rsatish" msgid "Always start playing" msgstr "Hamisha ijro ettirish" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Clementine'da Spotify'dan foydalanish uchun qo'shimcha plagin kerak. Uni yuklab olishni va o'rnatishni istaysizmi?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "iTunes ma'lumot bazasini yuklaganda xato ro'y berdi" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "'%1'ga meta-ma'lumot yozilganda xato ro'y berdi" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Va:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "" @@ -731,13 +764,13 @@ msgstr "" msgid "Appearance" msgstr "Ko'rinish" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Fayllarni/URL'larni pleylistga qo'shish" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Joriy pleylistga qo'shish" @@ -745,52 +778,47 @@ msgstr "Joriy pleylistga qo'shish" msgid "Append to the playlist" msgstr "Pleylistga qo'shish" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Kesilmaslik uchun qisishni qo'llash" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "\"%1\" presetini o'chirishga ishonchingiz komilmi?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Ushbu pleylistni o'chirishga ishonchingiz komilmi?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Statistikani boshlang'ich holatga qaytarishga ishonchingiz komilmi?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Artist" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Artist haqida ma'lumot" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Artist radio" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Artist teglari" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Artistning ismi-sharifi" @@ -798,9 +826,13 @@ msgstr "Artistning ismi-sharifi" msgid "Audio format" msgstr "Audio format" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Tasdiqlash muvaffaqiyatsiz tugadi" @@ -808,7 +840,7 @@ msgstr "Tasdiqlash muvaffaqiyatsiz tugadi" msgid "Author" msgstr "Muallif" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Mualliflar" @@ -824,7 +856,7 @@ msgstr "Avomatik yangilash" msgid "Automatically open single categories in the library tree" msgstr "" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Mavjud" @@ -832,15 +864,15 @@ msgstr "Mavjud" msgid "Average bitrate" msgstr "O'rtacha bitreyt" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "O'rtacha rasm o'lchami" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -861,7 +893,7 @@ msgstr "Orqa fon rasmi" msgid "Background opacity" msgstr "Orqa fon tiniqligi" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "" @@ -869,11 +901,7 @@ msgstr "" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Taqiqlash" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Bar analizatori" @@ -893,18 +921,17 @@ msgstr "Amal" msgid "Best" msgstr "Zo'r" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "%1'dan tarjimai holi" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bitreyt" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -912,7 +939,12 @@ msgstr "Bitreyt" msgid "Bitrate" msgstr "Bitreyt" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Blok analizatori" @@ -928,7 +960,7 @@ msgstr "" msgid "Body" msgstr "" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Boom analizatori" @@ -942,11 +974,11 @@ msgstr "" msgid "Browse..." msgstr "Ko'rib chiqish..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Buferizatsiya" @@ -958,43 +990,66 @@ msgstr "" msgid "Buttons" msgstr "Tugmalar" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE sheet qo'llash" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Bekor qilish" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Albom rasmini o'zgartirish" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Shrift o'lchamini o'zgartirish..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Takrorlash usulini o'zgartirish" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Tugmalar birikmasini o'zgartirish..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Tasodifiy usulini o'zgartirish" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Tilni o'zgartirish" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1004,15 +1059,19 @@ msgstr "" msgid "Check for new episodes" msgstr "Yangi epizodlarni tekshirish" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Yangilanishlarni tekshirish..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Aqlli pleylist nomini tanlang" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Avtomatik ravishda tanlash" @@ -1028,11 +1087,11 @@ msgstr "Shrift tanlash..." msgid "Choose from the list" msgstr "Ro'yxatdan tanlash" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Pleylist qanday saralashini va nechta qo'shiq borligini tanlash" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Podkast yuklab olish direktoriyasini tanlash" @@ -1041,7 +1100,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Clementine qo'shiq matnlarini qidirish uchun veb-sahifalarni tanlash" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Classical" @@ -1049,17 +1108,17 @@ msgstr "Classical" msgid "Cleaning up" msgstr "Tozalanmoqda" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Tozalash" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Pleylistni tozalash" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1072,8 +1131,8 @@ msgstr "Clementine xatosi" msgid "Clementine Orange" msgstr "Apelsin Clementine" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine vizualizatsiyasi" @@ -1095,8 +1154,8 @@ msgstr "Clementine Dropboxga yuklangan musiqangizni ijri ettirishi mumkin" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1110,20 +1169,13 @@ msgid "" "an account." msgstr "" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine rasm ko'ruvchisi" @@ -1135,11 +1187,11 @@ msgstr "" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Musiqani qo'shish uchun shu joyga bosing" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1149,7 +1201,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1164,19 +1219,19 @@ msgstr "Yopish" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Vizualizatsiyani yopish" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Ushbu oynani yopganda yuklab olish bekor qilinadi." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Ushbu oynani yopganda albom rasmlarini qidirish to'xtatiladi." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Club" @@ -1184,73 +1239,78 @@ msgstr "Club" msgid "Colors" msgstr "Ranglar" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Izoh" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Teglarni avtomatik ravishda yakunlash" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Teglarni avtomatik ravishda yakunlash..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Bastakor" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Grooveshark moslash..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Last.fm moslash..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Magnatune moslash..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Tugmalar birikmalarini moslash" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Spotify moslash..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Kutubxonani sozlash..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Podkastlarni moslash..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Moslash..." @@ -1258,11 +1318,11 @@ msgstr "Moslash..." msgid "Connect Wii Remotes using active/deactive action" msgstr "" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Uskunaga ulanish" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Spotify'ga ulanmoqda" @@ -1272,12 +1332,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Konsol" @@ -1293,17 +1357,21 @@ msgstr "Hamma musiqani konvertasiya qilish" msgid "Convert any music that the device can't play" msgstr "" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Klipbordga nusxa olish" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Uskunaga nusxa olish..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Kutubxonaga nusxa ko'chirish..." @@ -1311,156 +1379,152 @@ msgstr "Kutubxonaga nusxa ko'chirish..." msgid "Copyright" msgstr "Mualliflik huquqlari" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Albom rasmi boshqaruvchisi" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Albom rasmi avtomatik ravishda %1'dan yuklandi" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "%1'dan albom rasmlari" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Yangi Grooveshark pleylistini yaratish" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1468,7 +1532,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Boshqa" @@ -1480,54 +1544,50 @@ msgstr "Boshqa rasm:" msgid "Custom message settings" msgstr "Boshqa xabar moslamalari" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Boshqa radio" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Boshqa..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus yo'li" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Yaratilgan sanasi" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "O'zgartirilgan sanasi" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Kun" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Andoza" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Ovoz balandligini 4%'ga kamaytirish" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Ovoz balandligini kamaytirish" @@ -1535,6 +1595,11 @@ msgstr "Ovoz balandligini kamaytirish" msgid "Default background image" msgstr "Orqa fon andoza rasmi" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Andoza" @@ -1543,30 +1608,30 @@ msgstr "Andoza" msgid "Delay between visualizations" msgstr "" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "O'chirish" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Grooveshark pleylistini o'chirish" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Yuklab olingan ma'lumotni o'chirish" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Fayllarni o'chirish" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Uskunadan o'chirish..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Diskdan o'chirish..." @@ -1574,31 +1639,31 @@ msgstr "Diskdan o'chirish..." msgid "Delete played episodes" msgstr "Ijro etilgan epizodlarni o'chirish" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Presetni o'chirish" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Aqlli pleylistni o'chirish" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Asl faylini o'chirish" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Fayllar o'chirilmoqda" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "" @@ -1607,7 +1672,7 @@ msgstr "" msgid "Details..." msgstr "Tafsilotlar..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Uskuna" @@ -1619,15 +1684,15 @@ msgstr "Uskuna hossalari" msgid "Device name" msgstr "Uskuna nomi" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Uskuna hossalari..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Uskunalar" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1664,12 +1729,17 @@ msgstr "" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Disk" @@ -1679,15 +1749,15 @@ msgid "Discontinuous transmission" msgstr "" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Ko'rsatish parametrlari" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "" @@ -1699,27 +1769,27 @@ msgstr "" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Takrorlanmasin" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Boshqa artistlarda ko'rsatilmasin" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "To'xtatilmasin!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Ochish uchun ikki marta bosish" @@ -1727,12 +1797,13 @@ msgstr "Ochish uchun ikki marta bosish" msgid "Double clicking a song will..." msgstr "Qo'shiqni ikki marta bosganda..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "%n epizodlarni yuklab olish" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Direktoriyani yuklab olish" @@ -1748,7 +1819,7 @@ msgstr "A'zolikni yuklab olish" msgid "Download new episodes automatically" msgstr "Yangi epizodlarni avtomatik ravishda yuklab olish" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Yuklab olish navbatga qo'yildi" @@ -1756,15 +1827,15 @@ msgstr "Yuklab olish navbatga qo'yildi" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Ushbu albomni yuklab olish" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Ushbu albomni yuklab olish..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Ushbu epizodni yuklab olish" @@ -1772,7 +1843,7 @@ msgstr "Ushbu epizodni yuklab olish" msgid "Download..." msgstr "Yuklab olish..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "(%1%) yuklab olinmoqda..." @@ -1781,23 +1852,23 @@ msgstr "(%1%) yuklab olinmoqda..." msgid "Downloading Icecast directory" msgstr "Icecast direktoriyasi yuklab olinmoqda" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Jamendo katalogi yuklab olinmoqda" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Magnatune katalogi yuklab olinmoqda" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Spotify plagini yuklab olinmoqda" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Meta-ma'lumot yuklab olinmoqda" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "" @@ -1817,20 +1888,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Smart ijro ro'yxatini tahrirlash..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Tegni tahrirlash..." @@ -1842,16 +1913,16 @@ msgstr "Teglarni tahrirlash" msgid "Edit track information" msgstr "Trek ma'lumotini tahrirlash" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Trek ma'lumotini tahrirlash..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Treklar ma'lumotini tahrirlash" -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Tahrirlash..." @@ -1859,6 +1930,10 @@ msgstr "Tahrirlash..." msgid "Enable Wii Remote support" msgstr "Wii Remote qo'llab-quvvatlashini yoqish" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Ekvalayzer yoqish" @@ -1873,7 +1948,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Last.fm scrobblingni yoqish/o'chirish" @@ -1901,15 +1976,10 @@ msgstr "Albom rasmini internetdan yuklab olish uchun URL kiriting:" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Ushbu pleylist uchun yangi nom kiriting" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Last.fm radio eshitish uchun artistni yoki tegni kiriting." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1923,7 +1993,7 @@ msgstr "iTunes Store'da podkastni topish uchun qidirish shartlarini kiriting" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "gpodder.net'da podkastni topish uchun qidirish shartlarini kiriting" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Qidirish shartlarini kiriting" @@ -1932,11 +2002,11 @@ msgstr "Qidirish shartlarini kiriting" msgid "Enter the URL of an internet radio stream:" msgstr "Internet radio to'lqini uchun URL kiriting:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Jild nomini kiriting" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1944,21 +2014,22 @@ msgstr "" msgid "Entire collection" msgstr "" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Ekvalayzer" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Xato" @@ -1966,38 +2037,38 @@ msgstr "Xato" msgid "Error connecting MTP device" msgstr "MTP uskunasiga ulanganda xato ro'y berdi" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Qo'shiqlar nusxa olinganda xato ro'y berdi" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Qo'shiqlarni o'chirganda xato ro'y berdi" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Spotify plaginini yuklab olganda xato ro'y berdi" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "%1'ni yuklaganda xato ro'y berdi" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "di.fm pleylistini yuklaganda xato ro'y berdi" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Audio CD yuklanganda xato ro'y berdi" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "" @@ -2029,7 +2100,7 @@ msgstr "Har 6 soat" msgid "Every hour" msgstr "Har soat" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "" @@ -2041,7 +2112,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2062,36 +2133,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2101,42 +2172,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Podkast olish muvaffaqiyatsiz tugadi" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Podkast yuklash muvaffaqiyatsiz tugadi" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Ushbu RSS manbai uchun XML tahlil qilish muvaffaqiyatsiz tugadi" @@ -2145,11 +2216,11 @@ msgstr "Ushbu RSS manbai uchun XML tahlil qilish muvaffaqiyatsiz tugadi" msgid "Fast" msgstr "" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "" @@ -2165,11 +2236,11 @@ msgstr "" msgid "Fetch completed" msgstr "" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "" @@ -2177,7 +2248,7 @@ msgstr "" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "" @@ -2185,19 +2256,23 @@ msgstr "" msgid "File formats" msgstr "Fayl formatlari" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Fayl nomi" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Fayl hajmi" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2207,7 +2282,7 @@ msgstr "Fayl turi" msgid "Filename" msgstr "Fayl nomi" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Fayllar" @@ -2215,15 +2290,19 @@ msgstr "Fayllar" msgid "Files to transcode" msgstr "Transkodlash uchun fayllar" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "" @@ -2231,7 +2310,7 @@ msgstr "" msgid "First level" msgstr "" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2247,12 +2326,12 @@ msgstr "" msgid "Force mono encoding" msgstr "" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2267,7 +2346,7 @@ msgstr "" #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2295,31 +2374,23 @@ msgstr "" msgid "Frames per buffer" msgstr "" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Do'stlar" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Umumiy" @@ -2327,30 +2398,30 @@ msgstr "Umumiy" msgid "General settings" msgstr "Umumiy moslamalar" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Janr" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Kanallarni olish" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "To'lqinlarni olish" @@ -2362,11 +2433,11 @@ msgstr "" msgid "Go" msgstr "O'tish" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "" @@ -2374,7 +2445,7 @@ msgstr "" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2384,7 +2455,7 @@ msgstr "" msgid "Grey out non existent songs in my playlists" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2392,15 +2463,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark'ga kirish xatosi" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark radio" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "" @@ -2408,44 +2479,44 @@ msgstr "" msgid "Group Library by..." msgstr "" -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2454,7 +2525,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP proksi" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "" @@ -2470,25 +2541,25 @@ msgstr "" msgid "High" msgstr "Yuqori" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Yuqori (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Yuqori (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Soat" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "" @@ -2500,15 +2571,15 @@ msgstr "Mening Magnatune hisob qaydnomam yo'q" msgid "Icon" msgstr "Nishoncha" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2518,24 +2589,24 @@ msgstr "" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Ijrochi nomlarida \"The\" artiklini e'tiborsiz qoldirish" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Rasmlar (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Rasmlar (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "%1 kundan so'ng" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 haftadan so'ng" @@ -2546,7 +2617,7 @@ msgid "" "time a song finishes." msgstr "" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Kelganlar" @@ -2558,36 +2629,36 @@ msgstr "Xabarnomaga albom bezagini qo'shish" msgid "Include all songs" msgstr "" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Ma'lumot" @@ -2595,55 +2666,55 @@ msgstr "Ma'lumot" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "O'rnatilgan" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Internet provayderlari" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "API kaliti haqiqiy emas" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Format haqiqiy emas" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Usul haqiqiy emas" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Parametrlar haqiqiy emas" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Xizmat haqiqiy emas" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Seans kaliti haqiqiy emas" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Foydalanuvchi nomi yoki maxfiy so'z haqiqiy emas" @@ -2651,42 +2722,42 @@ msgstr "Foydalanuvchi nomi yoki maxfiy so'z haqiqiy emas" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo ma'lumot bazasi" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "" @@ -2695,23 +2766,24 @@ msgstr "" msgid "Keep running in the background when the window is closed" msgstr "" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Mushukchalar" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Til" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "" @@ -2719,12 +2791,16 @@ msgstr "" msgid "Large album cover" msgstr "" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 +msgid "Last played" +msgstr "" + +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." msgid "Last played" msgstr "" @@ -2732,45 +2808,7 @@ msgstr "" msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "" @@ -2778,11 +2816,11 @@ msgstr "" msgid "Last.fm password" msgstr "Last.fm maxfiy so'zi" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm teglari" @@ -2790,28 +2828,24 @@ msgstr "Last.fm teglari" msgid "Last.fm username" msgstr "Last.fm foydalanuvchi nomi" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Uzunligi" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Kutubxona" @@ -2819,24 +2853,24 @@ msgstr "Kutubxona" msgid "Library advanced grouping" msgstr "" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "" @@ -2848,15 +2882,15 @@ msgstr "Yuklash" msgid "Load cover from URL" msgstr "Albom rasmini URL'dan yuklash" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Albom rasmini URL'dan yuklash..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Albom rasmini diskdan yuklash" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Albom rasmini diskdan yuklash..." @@ -2864,84 +2898,89 @@ msgstr "Albom rasmini diskdan yuklash..." msgid "Load playlist" msgstr "Pleylistni yuklash" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Pleylistni yuklash..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Last.fm radio yuklanmoqda" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "MTP uskunasi yuklanmoqda" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "iPod ma'lumot bazasi yuklanmoqda" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Aqlli pleylist yuklanmoqda" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Qo'shiqlar yuklanmoqda" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "To'lqin yuklanmoqda" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Treklar yuklanmoqda" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Treklar haqida ma'lumot yuklanmoqda" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Yuklanmoqda..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Kirish" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Kirish muvaffaqiyatsiz tugadi" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Past (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Past (256x256)" @@ -2953,12 +2992,17 @@ msgstr "" msgid "Lyrics" msgstr "Qo'shiq matnlari" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "%1'dan qo'shiq matnlari" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2970,15 +3014,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2986,7 +3030,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune Download" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "" @@ -2994,15 +3038,20 @@ msgstr "" msgid "Main profile (MAIN)" msgstr "" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Shunday qilinsin!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "" @@ -3015,15 +3064,15 @@ msgstr "" msgid "Manually" msgstr "" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3035,17 +3084,21 @@ msgstr "" msgid "Match one or more search terms (OR)" msgstr "" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "" @@ -3057,11 +3110,15 @@ msgstr "" msgid "Minimum bitrate" msgstr "" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3069,20 +3126,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3090,15 +3147,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "" @@ -3107,7 +3168,7 @@ msgstr "" msgid "Move down" msgstr "" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "" @@ -3116,7 +3177,7 @@ msgstr "" msgid "Move up" msgstr "" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Musiqa" @@ -3124,56 +3185,32 @@ msgstr "Musiqa" msgid "Music Library" msgstr "" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Mening musiqam" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "" @@ -3181,23 +3218,19 @@ msgstr "" msgid "Narrow band (NB)" msgstr "" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Tarmoq proksi" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Hech qachon" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Hech qachon ijro ettirilmagan" @@ -3206,21 +3239,21 @@ msgstr "Hech qachon ijro ettirilmagan" msgid "Never start playing" msgstr "" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Yangi jild" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Yangi pleylist" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Yangi aqlli pleylist..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Yangi qo'shiqlar" @@ -3228,24 +3261,24 @@ msgstr "Yangi qo'shiqlar" msgid "New tracks will be added automatically." msgstr "" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Keyingi" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Keyingi trek" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Kelasi hafta" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "" @@ -3253,7 +3286,7 @@ msgstr "" msgid "No background image" msgstr "" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3261,7 +3294,7 @@ msgstr "" msgid "No long blocks" msgstr "" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "" @@ -3275,11 +3308,11 @@ msgstr "" msgid "None" msgstr "Yo'q" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3287,43 +3320,47 @@ msgstr "" msgid "Normal block type" msgstr "" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Ulanmagan" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Hajmi yetarli emas" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "O'rnatilmagan" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Ulanmagan - ulash uchun ikki marta bosing" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "" @@ -3336,36 +3373,41 @@ msgstr "" msgid "Now Playing" msgstr "" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3373,11 +3415,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "" @@ -3385,23 +3427,23 @@ msgstr "" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "%1 brauzerda ochish" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "&Audio CD ochish..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3409,30 +3451,35 @@ msgstr "" msgid "Open device" msgstr "Uskunani ochish" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Failni ochish..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Google Driveda ochish" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Yangi pleylistda ochish" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Ochish..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Jarayon muvaffaqiyatsiz tugadi" @@ -3452,23 +3499,23 @@ msgstr "Parametrlar..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Fayllarni boshqarish" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Fayllarni boshqarish..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Fayllarni tashkillashtirish" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Asl teglar" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Boshqa parametrlar" @@ -3476,7 +3523,7 @@ msgstr "Boshqa parametrlar" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3484,15 +3531,11 @@ msgstr "" msgid "Output options" msgstr "Chiqarish parametrlari" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Mavjud fayllarni almashtirish" @@ -3504,15 +3547,15 @@ msgstr "" msgid "Owner" msgstr "" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3521,20 +3564,20 @@ msgstr "" msgid "Password" msgstr "Maxfiy so'z" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3543,34 +3586,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "" - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "" @@ -3579,45 +3610,42 @@ msgstr "" msgid "Play if there is nothing already playing" msgstr "" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "" - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Pleyer parametrlari" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Pleylist" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Pleylist parametrlari" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Pleylist turi" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Pleylistlar" @@ -3629,23 +3657,23 @@ msgstr "Brauzerni yopib Clementinega qayting" msgid "Plugin status:" msgstr "Plagin holati:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podkastlar" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Mashhur qo'shiqlar" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Bugun mashhur qo'shiqlar" @@ -3654,22 +3682,23 @@ msgid "Popup duration" msgstr "" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Port" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Moslamalar" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Moslamalar..." @@ -3705,7 +3734,7 @@ msgstr "" msgid "Press a key" msgstr "Tugmani bosing" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "" @@ -3716,20 +3745,20 @@ msgstr "" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Ko'rib chiqish" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Oldingi" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Oldingi trek" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "" @@ -3737,21 +3766,25 @@ msgstr "" msgid "Profile" msgstr "" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "" @@ -3759,36 +3792,46 @@ msgstr "" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Sifati" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "" -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Radio" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 +msgid "Rain" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." msgid "Rain" msgstr "" @@ -3796,48 +3839,48 @@ msgstr "" msgid "Random visualization" msgstr "" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Joriy qo'shiqni baholash 0 yulduz" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Joriy qo'shiqni baholash 1 yulduz" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Joriy qo'shiqni baholash 2 yulduz" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Joriy qo'shiqni baholash 3 yulduz" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Joriy qo'shiqni baholash 4 yulduz" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Joriy qo'shiqni baholash 5 yulduz" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Baho" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Rostdan bekor qilinsinmi?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Yangilash" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "" @@ -3845,19 +3888,15 @@ msgstr "" msgid "Refresh channels" msgstr "" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "" @@ -3869,8 +3908,8 @@ msgstr "" msgid "Remember from last time" msgstr "" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "" @@ -3878,7 +3917,7 @@ msgstr "" msgid "Remove action" msgstr "" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "" @@ -3886,73 +3925,77 @@ msgstr "" msgid "Remove folder" msgstr "" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Mening musiqamdan o'chirish" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Mening musiqamdan o'chirilmoqda" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "\"%1\" pleylistning nomini o'zgartirish" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "" -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "" @@ -3961,15 +4004,15 @@ msgstr "" msgid "Replace the playlist" msgstr "" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3977,24 +4020,24 @@ msgstr "" msgid "Repopulate" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "" @@ -4002,15 +4045,15 @@ msgstr "" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4030,11 +4073,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4046,25 +4089,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "" @@ -4072,27 +4115,33 @@ msgstr "" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Albom rasmini saqlash" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Albom rasmini diskka saqlash..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Rasmni saqlash" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Pleylistni saqlash" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Pleylistni saqlash..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "" @@ -4108,11 +4157,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Treklar saqlanmoqda" @@ -4124,7 +4173,7 @@ msgstr "" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "" @@ -4132,34 +4181,38 @@ msgstr "" msgid "Scrobble tracks that I listen to" msgstr "" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Qidirish" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Icecast stansiyalarni qidirish" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Jamendo qidirish" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Magnatune qidirish" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "" @@ -4179,21 +4232,21 @@ msgstr "iTunes qidirish" msgid "Search mode" msgstr "Qidirish usuli" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Qidirish parametrlari" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Qidirish shartlari" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Grooveshark'da qidirilmodqa" @@ -4201,27 +4254,27 @@ msgstr "Grooveshark'da qidirilmodqa" msgid "Second level" msgstr "" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Hammasini tanlash" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Hech qaysini tanlamaslik" @@ -4229,7 +4282,7 @@ msgstr "Hech qaysini tanlamaslik" msgid "Select background color:" msgstr "Orqa fon rangini tanlash:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Orqa fon rasmini tanlash" @@ -4245,7 +4298,7 @@ msgstr "" msgid "Select visualizations" msgstr "" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "" @@ -4253,7 +4306,7 @@ msgstr "" msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Seriya raqami" @@ -4265,51 +4318,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "" -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Tugmalar birikmasi" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "%1 uchun tugmalar birikmasi" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "%1 uchun tugmalar birikmasi mavjud" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Ko'rsatish" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "OSD ko'rsatish" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "" @@ -4337,15 +4390,15 @@ msgstr "" msgid "Show a pretty OSD" msgstr "" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Hamma qo'shiqlarni ko'rsatish" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Hamma qo'shiqlarni ko'rsatish" @@ -4357,32 +4410,36 @@ msgstr "" msgid "Show dividers" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "" -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "" -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "" @@ -4391,7 +4448,7 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" +msgid "Show the \"love\" button" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 @@ -4406,27 +4463,27 @@ msgstr "Trey nishonchasini ko'rsatish" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Ko'rsatish/Yashirish" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "" @@ -4442,7 +4499,7 @@ msgstr "" msgid "Signing in..." msgstr "" -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "" @@ -4454,43 +4511,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4498,11 +4563,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Qo'shiq haqida ma'lumot" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Qo'shiq haqida ma'lumot" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "" @@ -4522,15 +4587,23 @@ msgstr "" msgid "Sort by station name" msgstr "" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Manba" @@ -4546,7 +4619,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify kirish xatosi" @@ -4554,7 +4627,7 @@ msgstr "Spotify kirish xatosi" msgid "Spotify plugin" msgstr "Spotify plagini" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify plagini o'rnatilmagan" @@ -4562,77 +4635,77 @@ msgstr "Spotify plagini o'rnatilmagan" msgid "Standard" msgstr "" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "" -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Stansiyalar" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "To'lqin" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4642,7 +4715,7 @@ msgstr "" msgid "Streaming membership" msgstr "" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4650,7 +4723,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4658,12 +4731,12 @@ msgstr "" msgid "Success!" msgstr "Muvaffaqiyat!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Muvaffaqiyatli yozilgan %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "" @@ -4672,13 +4745,13 @@ msgstr "" msgid "Summary" msgstr "" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4690,43 +4763,35 @@ msgstr "" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Tizim ranglari" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Teg" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "" @@ -4734,11 +4799,11 @@ msgstr "" msgid "Text options" msgstr "" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Tashakkurlar" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "" @@ -4747,17 +4812,12 @@ msgstr "" msgid "The album cover of the currently playing song" msgstr "" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "%1 direktoriyasi haqiqiy emas" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "" @@ -4765,40 +4825,40 @@ msgstr "" msgid "The site you requested does not exist!" msgstr "" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Ushbi albomda boshqa qo'shiqlar mavjud" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4810,13 +4870,13 @@ msgid "" "deleted:" msgstr "" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4836,13 +4896,13 @@ msgstr "" msgid "Third level" msgstr "" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "" @@ -4856,11 +4916,11 @@ msgstr "" msgid "This device supports the following file formats:" msgstr "" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "" @@ -4869,7 +4929,7 @@ msgstr "" msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4879,33 +4939,33 @@ msgstr "" msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Bugun" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "" @@ -4913,27 +4973,27 @@ msgstr "" msgid "Toggle fullscreen" msgstr "" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Ertaga" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4941,21 +5001,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Trek" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Musiqani transkodlash" @@ -4967,7 +5031,7 @@ msgstr "" msgid "Transcoding" msgstr "" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "" @@ -4976,11 +5040,11 @@ msgstr "" msgid "Transcoding options" msgstr "Transkodlash parametrlari" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "" @@ -4988,72 +5052,72 @@ msgstr "" msgid "Turn off" msgstr "" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(lar)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "%1 (%2) yuklab olib bo'lmadi" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Noma'lum" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Noma'lum xato" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Grooveshark pleylistini yangilash" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "" @@ -5061,7 +5125,7 @@ msgstr "" msgid "Update the library when Clementine starts" msgstr "" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "" @@ -5069,21 +5133,21 @@ msgstr "" msgid "Updating" msgstr "" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "" -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "" @@ -5091,11 +5155,11 @@ msgstr "" msgid "Use Album Artist tag when available" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "" @@ -5115,7 +5179,7 @@ msgstr "" msgid "Use a custom message for notifications" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5155,20 +5219,20 @@ msgstr "" msgid "Use volume normalisation" msgstr "" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Foydalanuvchi interfeysi" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5190,12 +5254,12 @@ msgstr "" msgid "Variable bit rate" msgstr "" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Versiya %1" @@ -5208,7 +5272,7 @@ msgstr "Ko'rish" msgid "Visualization mode" msgstr "Vizualizatsiya usuli" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Vizualizatsiyalar" @@ -5216,11 +5280,15 @@ msgstr "Vizualizatsiyalar" msgid "Visualizations Settings" msgstr "Vizualizatsiya moslamalari" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "" @@ -5238,11 +5306,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5250,7 +5318,7 @@ msgstr "Wav" msgid "Website" msgstr "Veb sahifa" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Hafta" @@ -5276,32 +5344,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "Keng band (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii Remote %1: yoqilgan" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: ulangan" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: critical battery (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: o'chirilgan" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: ulanmagan" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: low battery (%2%)" @@ -5322,7 +5390,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media audio" @@ -5330,25 +5398,25 @@ msgstr "Windows Media audio" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5360,11 +5428,11 @@ msgstr "Yil" msgid "Year - Album" msgstr "Yil - Albom" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Yillar" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Kecha" @@ -5372,13 +5440,13 @@ msgstr "Kecha" msgid "You are about to download the following albums" msgstr "" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5388,12 +5456,12 @@ msgstr "" msgid "You are not signed in." msgstr "" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "" @@ -5401,13 +5469,13 @@ msgstr "" msgid "You can change the way the songs in the library are organised." msgstr "" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5417,13 +5485,6 @@ msgstr "" msgid "You can listen to background streams at the same time as other music." msgstr "" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Sizda Grooveshark Anywhere hisobi yo'q." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Sizda Spotify Premium hisobi yo'q." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Siz Spotify'dan chiqib ketdingiz, Moslamalar oynasida maxfiy so'zni qaytadan kiriting." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Siz Spotify'dan chiqib ketdingiz, maxfiy so'zni qaytadan kiriting." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Usbu trek sizga yoqdi" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5468,17 +5543,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "Tilni o'zgartirganda Clementine'dan chiqib qaytadan kirish kerak." -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5486,42 +5555,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "Radio to'lqinlaringiz" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "Skrobbling: %1" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "Foydalanuvchi nomi yoki maxfiy so'z noto'g'ri." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "Z-A" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Andoza" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "%n qo'shiqni qo'shish" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "keyin" @@ -5541,19 +5611,19 @@ msgstr "avtomatik" msgid "before" msgstr "oldin" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "orasida" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "kattasidan boshlab" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "" @@ -5563,20 +5633,20 @@ msgstr "" msgid "disabled" msgstr "" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "disk %1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "tugaydi" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "teng" @@ -5584,11 +5654,11 @@ msgstr "teng" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net direktoriyasi" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "" @@ -5596,54 +5666,55 @@ msgstr "" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kb/s" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "uzunidan boshlab" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "yangisidan boshlab" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "teng emas" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "oldingisidan boshlab" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "parametrlar" @@ -5655,36 +5726,37 @@ msgstr "" msgid "press enter" msgstr "Enter bosing" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "%n qo'shiqni o'chirish" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "qisqasidan boshlab" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "kichigidan boshlab" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "boshlanadi" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "to'xtatish" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "trek %1" diff --git a/src/translations/vi.po b/src/translations/vi.po index 0efdbeef3..021b5d035 100644 --- a/src/translations/vi.po +++ b/src/translations/vi.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" +"PO-Revision-Date: 2014-05-11 07:38+0000\n" "Last-Translator: Clementine Buildbot \n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/clementine/language/vi/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,7 +19,7 @@ msgstr "" "Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -44,9 +44,9 @@ msgstr " ngày" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " mili giây" @@ -59,11 +59,16 @@ msgstr " điểm" msgid " seconds" msgstr " giây" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " bài hát" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 album" @@ -73,12 +78,12 @@ msgstr "%1 album" msgid "%1 days" msgstr "%1 ngày" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 ngày trước" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 trên %2" @@ -88,48 +93,48 @@ msgstr "%1 trên %2" msgid "%1 playlists (%2)" msgstr "Danh sách %1 (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 chọn" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 bài hát" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 bài hát" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 bài hát được tìm thấy" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "%1 bài hát được tìm thấy (đang hiện %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 bài" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "Đã tải %1" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: mô-đun tay cầm Wii" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 người nghe khác" @@ -143,18 +148,21 @@ msgstr "%L1 tổng số lần phát" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n thất bại" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n kết thúc" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "Còn lại %n" @@ -166,24 +174,24 @@ msgstr "&Căn chỉnh" msgid "&Center" msgstr "&Giữa" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "&Tùy chọn" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "&Hiệu ứng" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "Trợ &giúp" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "Ẩ&n %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "Ẩ&n..." @@ -191,23 +199,23 @@ msgstr "Ẩ&n..." msgid "&Left" msgstr "T&rái" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "&Nhạc" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "&Không" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "&Danh sách" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "T&hoát" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "&Chế độ lặp lại" @@ -215,23 +223,23 @@ msgstr "&Chế độ lặp lại" msgid "&Right" msgstr "&Phải" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "Chế độ phát n&gẫu nhiên" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "Căng các cột ra cho &vừa với cửa sổ" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "&Công cụ" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(mỗi bài mỗi khác)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...và tất cả cộng tác viên của Amarok" @@ -251,14 +259,10 @@ msgstr "0 điểm ảnh" msgid "1 day" msgstr "1 ngày" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 bài" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -268,7 +272,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 bài ngẫu nhiên" @@ -276,12 +280,6 @@ msgstr "50 bài ngẫu nhiên" msgid "Upgrade to Premium now" msgstr "Nâng cấp lên tài khoản cao cấp ngay" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -292,6 +290,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -300,38 +309,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Các dấu bắt đầu là %, ví dụ: %artist %album %title

\n\n

Nếu bạn quét chọn đoạn văn bản chứa dấu ngoặc nhọn, đoạn đó sẽ bị ẩn đi nếu dấu bắt đầu rỗng.

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "Cần có tài khoản Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "Cần có tài khoản cao cấp của Spotify." -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "Máy khách được kết nối chỉ khi nhập đúng mã." -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "Danh sách thông minh là danh sách các bài hát trong thư viện có thể tự động thay đổi. Có nhiều loại danh sách nhạc thông minh khác nhau và chúng cung cấp cho bạn nhiều cách để lựa chọn các bài hát." -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "Một bài hát sẽ được đưa vào danh sách nếu như nó đáp ứng những điều kiện sau." -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -351,36 +360,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "Huỷ bỏ" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "Giới thiệu %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "Giới thiệu Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "Giới thiệu Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "Chi tiết tài khoản" @@ -392,11 +400,15 @@ msgstr "Chi tiết tài khoản (Cao cấp)" msgid "Action" msgstr "Hoạt động" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "Kích hoạt/vô hiệu tay cầm Wii" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "Thêm Podcast" @@ -412,39 +424,39 @@ msgstr "Thêm một dòng mới nếu được hỗ trợ từ kiểu thông bá msgid "Add action" msgstr "Thêm hành động" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "Thêm luồng dữ liệu khác..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "Thêm thư mục..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "Thêm tập tin" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "Thêm tập tin vào bộ chuyển mã" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "Thêm (các) tập tin vào bộ chuyển mã" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "Thêm tập tin..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "Thêm các tập tin để chuyển mã" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "Thêm thư mục" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "Thêm thư mục..." @@ -456,11 +468,11 @@ msgstr "Thêm thư mục mới..." msgid "Add podcast" msgstr "Thêm podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "Thêm podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "Thêm điều kiện tìm kiếm" @@ -524,6 +536,10 @@ msgstr "Thêm bỏ qua đếm bài hát" msgid "Add song title tag" msgstr "Thêm thẻ tựa đề bài hát" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "Thêm thẻ bài hát" @@ -532,22 +548,34 @@ msgstr "Thêm thẻ bài hát" msgid "Add song year tag" msgstr "Thêm thẻ năm của bài hát" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "Thêm luồng dữ liệu..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "Thêm vào yêu thích của Grooveshark" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "Thêm vào danh sách Grooveshark" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "Thêm vào danh sách khác" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "Thêm vào danh sách" @@ -556,6 +584,10 @@ msgstr "Thêm vào danh sách" msgid "Add to the queue" msgstr "Thêm vào danh sách đợi" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "Thêm hoạt động tay cầm wii" @@ -585,15 +617,15 @@ msgstr "Đã thêm vào trong ngày" msgid "Added within three months" msgstr "Đã thêm vào trong ba tháng" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "Thêm bài hát vào Nhạc của tôi" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "Đang thêm bài hát vào yêu thích" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "Nhóm nâng cao..." @@ -601,12 +633,12 @@ msgstr "Nhóm nâng cao..." msgid "After " msgstr "Sau " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "Sau khi sao chép..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -614,11 +646,11 @@ msgstr "Sau khi sao chép..." msgid "Album" msgstr "Album" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "Album (âm lượng lớn cho mọi bài hát)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -628,35 +660,36 @@ msgstr "Nghệ sĩ của Album" msgid "Album cover" msgstr "Ảnh bìa" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "Thông tin của album trên jamendo.com..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "Album có ảnh bìa" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "Album không có ảnh bìa" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "Mọi tập tin (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "All Glory to the Hypnotoad!" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "Tất cả album" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "Tất cả nghệ sĩ" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "Mọi tập tin (*)" @@ -665,19 +698,19 @@ msgstr "Mọi tập tin (*)" msgid "All playlists (%1)" msgstr "Tất cả danh sách (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "Tất cả những người dịch" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "Tất cả bài hát" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "Cho phép tải về" @@ -702,30 +735,30 @@ msgstr "Luôn hiện cửa sổ chính" msgid "Always start playing" msgstr "Bắt đầu phát nhạc" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Cần có một phần mở rộng để sử dụng Spotify trong Clementine. Bạn có muốn tải nó về và cài đặt ngay không?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "Có lỗi khi nạp cơ sở dữ liệu iTunes" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "Có lỗi khi ghi thông tin vào '%1'" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "Lỗi không xác định." -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "Và:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "Angry" @@ -734,13 +767,13 @@ msgstr "Angry" msgid "Appearance" msgstr "Giao diện" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "Thêm tập tin/URLs vào danh sách" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "Thêm vào danh sách hiện tại" @@ -748,52 +781,47 @@ msgstr "Thêm vào danh sách hiện tại" msgid "Append to the playlist" msgstr "Thêm vào danh sách" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "Nén để chặn việc ngắt đoạn" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "Bạn có chắc sẽ xóa thiết lập \"%1\"?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "Bạn có chắc muốn xóa danh sách này?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "Bạn có chắc muốn thiết đặt lại bộ đếm của bài hát này?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "Nghệ sĩ" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "Nghệ sĩ" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "Kênh phát thanh nghệ sĩ" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "Thẻ nghệ sĩ" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "Tên viết tắt của nghệ sĩ" @@ -801,9 +829,13 @@ msgstr "Tên viết tắt của nghệ sĩ" msgid "Audio format" msgstr "Định dạng" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "Xác thực thất bại" @@ -811,7 +843,7 @@ msgstr "Xác thực thất bại" msgid "Author" msgstr "Tác giả" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "Các tác giả" @@ -827,7 +859,7 @@ msgstr "Tự động cập nhật" msgid "Automatically open single categories in the library tree" msgstr "Tự động mở các mục đơn trong cây thư mục" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "Còn trống" @@ -835,15 +867,15 @@ msgstr "Còn trống" msgid "Average bitrate" msgstr "Bitrate trung bình" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "Kích thước ảnh trung bình" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "Podcast BBC" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -864,7 +896,7 @@ msgstr "Ảnh nền" msgid "Background opacity" msgstr "Độ mờ của khung nền" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "Đang sao lưu cơ sở dữ liệu" @@ -872,11 +904,7 @@ msgstr "Đang sao lưu cơ sở dữ liệu" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "Cấm" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "Phân tích theo các thanh" @@ -896,18 +924,17 @@ msgstr "Hành động" msgid "Best" msgstr "Tốt nhất" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "Thông tin từ %1" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "Bit rate" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -915,7 +942,12 @@ msgstr "Bit rate" msgid "Bitrate" msgstr "Bitrate" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "Phân tích theo các khối vuông" @@ -931,7 +963,7 @@ msgstr "" msgid "Body" msgstr "Nội dung" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "Phân tích theo dạng cây" @@ -945,11 +977,11 @@ msgstr "Box" msgid "Browse..." msgstr "Duyệt tìm..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "Đang tạo bộ đệm" @@ -961,43 +993,66 @@ msgstr "Những nguồn này đã bị vô hiệu:" msgid "Buttons" msgstr "Nút" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "Hỗ trợ danh sách CUE" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "Hủy bỏ" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "Đổi ảnh bìa" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "Đổi kích cỡ phông chữ..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "Thay đổi chế độ lặp lại" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "Đổi phím tắt..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "Thay đổi chế độ phát ngẫu nhiên" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "Đổi ngôn ngữ" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1007,15 +1062,19 @@ msgstr "Thay đổi tùy chỉnh phát đơn kênh sẽ ảnh hưởng đến b msgid "Check for new episodes" msgstr "Kiểm tra tập mới" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "Kiểm tra cập nhật..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "Đặt tên cho danh sách nhạc của bạn" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "Tự động lựa chọn" @@ -1031,11 +1090,11 @@ msgstr "Chọn phông chữ..." msgid "Choose from the list" msgstr "Chọn từ danh sách" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "Chọn cách sắp xếp của danh sách nhạc và số bài hát trong đó." -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "Chọn thư mục lưu podcast tải về" @@ -1044,7 +1103,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "Chọn các trang web bạn muốn Clementine tìm lời bài hát." -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "Cổ điển" @@ -1052,17 +1111,17 @@ msgstr "Cổ điển" msgid "Cleaning up" msgstr "Dọn dẹp" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "Loại bỏ tất cả" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "Loại bỏ tất cả b.hát trong d.sách" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1075,8 +1134,8 @@ msgstr "Lỗi Clementine" msgid "Clementine Orange" msgstr "Clementine Orange" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine - Hình ảnh ảo" @@ -1098,9 +1157,9 @@ msgstr "Clementine có thể phát nhạc trong tài khoản Dropbox" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine có thể phát nhạc trong tài khoản Google Drive" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine có thể phát nhạc trong tài khoản Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1113,20 +1172,13 @@ msgid "" "an account." msgstr "Clementine có thể đồng bộ danh sách đăng kí của bạn với máy tính khác và ứng dụng podcast khác. Tạo tài khoản." -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine không thể nạp hiệu ứng hình ảnh ảo projectM. Hãy chắc rằng bạn đã cài Clementine đúng cách." -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine không thể lấy trạng thái chuyển tải thông tin vì kết nối mạng có vấn đề. Các bài hát đã phát sẽ được lưu vào bộ đệm và sau đó được gửi đến Last.fm." - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine - Xem ảnh" @@ -1138,11 +1190,11 @@ msgstr "Clementine không tìm thấy kết quả cho tập tin này" msgid "Clementine will find music in:" msgstr "Clementine sẽ tìm nhạc trong:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "Nhấp vào đây để thêm nhạc" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1152,7 +1204,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "Nhấn vào đây để chuyển đổi giữa thời gian còn lại và tổng thời gian" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1167,19 +1222,19 @@ msgstr "Ðóng" msgid "Close playlist" msgstr "Đóng danh sách" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "Đóng hiệu ứng hình ảnh ảo" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "Đóng cửa sổ này sẽ hủy tải xuống." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "Đóng cửa sổ này sẽ kết thúc tìm ảnh bìa." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "Hội" @@ -1187,73 +1242,78 @@ msgstr "Hội" msgid "Colors" msgstr "Màu" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "Dấu phẩy phân cách danh sách lớp:mức độ, mức độ từ 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "Lời bình" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "Điền thông tin bài hát" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "Điền thông tin bài hát..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "Soạn nhạc" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "Cấu hình %1..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "Cấu hình Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "Cấu hình Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "Cấu hình Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "Phím tắt" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "Cấu hình Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "Cấu hình Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "Cấu hình tìm kiếm chung..." -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "Cấu hình thư viện..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "Cấu hình podcast..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "Cấu hình..." @@ -1261,11 +1321,11 @@ msgstr "Cấu hình..." msgid "Connect Wii Remotes using active/deactive action" msgstr "Kết nối tay cầm Wii sử dụng thao tác kích hoạt/vô hiệu" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "Kết nối thiết bị" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "Kết nối đến Spotify" @@ -1275,12 +1335,16 @@ msgid "" "http://localhost:4040/" msgstr "Kết nối bị máy chủ từ chối, kiểm tra URL máy chủ. Ví dụ: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "Hết thời gian kết nối, kiểm tra URL máy chủ. Ví dụ: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "Console" @@ -1296,17 +1360,21 @@ msgstr "Chuyển đổi toàn bộ nhạc" msgid "Convert any music that the device can't play" msgstr "Chuyển đổi bất kì bản nhạc nào mà thiết bị không thể chơi" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "Chép vào bộ đệm" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "Chép vào thiết bị..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "Chép vào thư viện..." @@ -1314,156 +1382,152 @@ msgstr "Chép vào thư viện..." msgid "Copyright" msgstr "Bản quyền" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "Không thể kết nối đến Subsonic, kiểm tra URL của máy chủ. Ví dụ: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "Không thể tạo phần tử GStreamer \"%1\" - hãy chắc chắn là bạn đã có đủ các phần bổ trợ mà GStreamer cần" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "Không tìm thấy thiết bị ghép kênh cho %1, hãy chắn chắn là bạn đã cài đặt đủ các phần bổ sung của GStreamer" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "Không tim thấy bộ mã hóa cho %1, hãy chắc chắn là bạn đã cài đặt đủ các phần bổ sung của GStreamer" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "Không thể nạp đài phát thanh last.fm" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "Không thể mở tập tin %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "Quản lí ảnh bìa" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "Ảnh bìa từ ảnh nhúng" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "Ảnh bìa được nạp tự động từ %1" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "Bỏ thiết đặt ảnh bìa một cách thủ công" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "Chưa có ảnh bìa" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "Ảnh bìa được thiết lập từ %1" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "Ảnh bìa từ %1" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "Tạo danh sách Grooveshark mới" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "Tự động giảm dần âm lượng khi chuyển sang bài khác" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "Giảm dần âm lượng khi chuyển sang bài khác" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1471,7 +1535,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "Tuỳ chọn" @@ -1483,54 +1547,50 @@ msgstr "Chọn ảnh:" msgid "Custom message settings" msgstr "Thiết lập tùy chọn tin nhắn" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "Tùy chọn phát thanh" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "Tùy chọn..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "Đường dẫn Dbus" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "Dance" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "Cơ sở dữ liệu bị hỏng. Xem trang https://code.google.com/p/clementine-player/wiki/DatabaseCorruption để biết các chỉ dẫn phục hồi cho cơ sở dữ liệu" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "Ngày tạo" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "Ngày chỉnh sửa" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "Ngày" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "&Mặc định" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "Giảm 4% âm lượng" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "Giảm phần trăm âm lượng" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "Giảm âm lượng" @@ -1538,6 +1598,11 @@ msgstr "Giảm âm lượng" msgid "Default background image" msgstr "Dùng ảnh nền mặc định" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "Mặc định" @@ -1546,30 +1611,30 @@ msgstr "Mặc định" msgid "Delay between visualizations" msgstr "Độ trễ giữa các hiệu ứng hình ảnh ảo" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "Xóa" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "Xoá danh sách Grooveshark" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "Xóa dữ liệu đã tải về" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "Xóa các tập tin" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "Xóa khỏi thiết bị..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "Xóa khỏi ổ cứng..." @@ -1577,31 +1642,31 @@ msgstr "Xóa khỏi ổ cứng..." msgid "Delete played episodes" msgstr "Xóa tập đã phát" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "Xoá thiết lập" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "Xóa danh sách thông minh" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "Xóa tập tin gốc" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "Đang xóa các tập tin" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "Loại các bài đã chọn khỏi danh sách chờ" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "Loại bài hát khỏi d.sách chờ" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "Xuất ra" @@ -1610,7 +1675,7 @@ msgstr "Xuất ra" msgid "Details..." msgstr "Chi tiết..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "Thiết bị" @@ -1622,15 +1687,15 @@ msgstr "Thuộc tính của thiết bị" msgid "Device name" msgstr "Tên thiết bị" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "Thuộc tính của thiết bị..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "Thiết bị" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1667,12 +1732,17 @@ msgstr "Tắt thời lượng" msgid "Disable moodbar generation" msgstr "Tắt khởi tạo thanh trạng thái" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "Tắt" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "Đĩa" @@ -1682,15 +1752,15 @@ msgid "Discontinuous transmission" msgstr "Dừng truyền tải" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "Tùy chọn hiển thị" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "Hiện hộp thông báo trên màn hình" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "Quét toàn bộ thư viện" @@ -1702,27 +1772,27 @@ msgstr "Không chuyển đổi bất kì bản nhạc nào" msgid "Do not overwrite" msgstr "Không ghi đè" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "Không lặp lại" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "Không hiện trong mục nhiều nghệ sĩ" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "Không phát ngẫu nhiên" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "Không dừng lại!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "Quyên góp" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "Nhấn đúp chuột để mở" @@ -1730,12 +1800,13 @@ msgstr "Nhấn đúp chuột để mở" msgid "Double clicking a song will..." msgstr "Nhấn đúp chuột vào một bài hát sẽ..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "Tải về %n tập" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "Tải thư mục" @@ -1751,7 +1822,7 @@ msgstr "Tải với tư cách thành viên" msgid "Download new episodes automatically" msgstr "Tự động tải về các tập mới" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "Đợi tải về" @@ -1759,15 +1830,15 @@ msgstr "Đợi tải về" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "Tải album này" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "Tải album này..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "Tải tập này" @@ -1775,7 +1846,7 @@ msgstr "Tải tập này" msgid "Download..." msgstr "Tải về..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "Đang tải (%1%)..." @@ -1784,23 +1855,23 @@ msgstr "Đang tải (%1%)..." msgid "Downloading Icecast directory" msgstr "Đang tải thư mục Icecast" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "Đang tải mục lục Jamendo" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "Đang tải mục lục Magnatune" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "Đang tải phần hỗ trợ cho Spotify" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "Đang tải thông tin dữ liệu" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "Kéo để xác định lại vị trí" @@ -1820,20 +1891,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "Chế độ năng động đã bật" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "Hòa trộn âm thanh động ngẫu nhiên" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "Cập nhật danh sách thông minh..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "Cập nhật thẻ..." @@ -1845,16 +1916,16 @@ msgstr "Sửa thông tin" msgid "Edit track information" msgstr "Sửa thông tin bài hát" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "Sửa thông tin bài hát..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "Sửa thông tin bài hát..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "Cập nhật..." @@ -1862,6 +1933,10 @@ msgstr "Cập nhật..." msgid "Enable Wii Remote support" msgstr "Bật hỗ trợ tay cầm Wii" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "Bật bộ cân chỉnh âm" @@ -1876,7 +1951,7 @@ msgid "" "displayed in this order." msgstr "Bật những nguồn tương ứng để tìm nhạc. Kết quả được hiển thị theo thứ tự này." -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "Bật/Tắt Chuyển thông tin bài hát đến Last.fm" @@ -1904,15 +1979,10 @@ msgstr "Nhập một địa chỉ để tải ảnh bìa từ internet:" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "Nhập tên mới cho danh sách này" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "Nhập tên một nghệ sĩ hoặc thẻ để bắt đầu nghe kênh phát thanh Last.fm." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1926,7 +1996,7 @@ msgstr "Nhập từ khóa để tìm podcast trên iTunes Store" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "Nhập từ khóa vào bên dưới để tìm podcast trên gpodder.net" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "Nhập điều kiện tìm kiếm" @@ -1935,11 +2005,11 @@ msgstr "Nhập điều kiện tìm kiếm" msgid "Enter the URL of an internet radio stream:" msgstr "Nhập địa chỉ của kênh phát thanh trên internet:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "Nhập tên thư mục" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "Nhập IP này vào ứng dụng để kết nối đến Clementine." @@ -1947,21 +2017,22 @@ msgstr "Nhập IP này vào ứng dụng để kết nối đến Clementine." msgid "Entire collection" msgstr "Trọn bộ sưu tập" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "Bộ cân chỉnh âm" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "Tương đương với --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "Tương đương với --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "Lỗi" @@ -1969,38 +2040,38 @@ msgstr "Lỗi" msgid "Error connecting MTP device" msgstr "Lỗi kết nối thiết bị MTP" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "Lỗi chép nhạc" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "Lỗi xóa bài hát" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "Lỗi khi tải phần hỗ trợ Spotify" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "Lỗi nạp %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "Lỗi khi nạp danh sách di.fm" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "Lỗi xử lý %1: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "Có lỗi xảy ra khi nạp đĩa CD" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "Chưa bao giờ được phát" @@ -2032,7 +2103,7 @@ msgstr "Mỗi 6 giờ" msgid "Every hour" msgstr "Mỗi giờ" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "Ngoại trừ giữa các bài hát trong album tương tự hoặc trong danh sách CUE tương tự" @@ -2044,7 +2115,7 @@ msgstr "" msgid "Expand" msgstr "Mở rộng" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "Hết hạn vào %1" @@ -2065,36 +2136,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "Đã xuất xong" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2104,42 +2175,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "Giảm dần âm lượng khi dừng một bài hát" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "Giảm dần âm lượng" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "Thời gian giảm dần âm lượng" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "Lỗi tải thư mục" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "Lỗi lấy podcast" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "Lỗi nạp podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "Lỗi phân tích XML cho nguồn tin RSS" @@ -2148,11 +2219,11 @@ msgstr "Lỗi phân tích XML cho nguồn tin RSS" msgid "Fast" msgstr "Nhanh" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "Yêu thích" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "Bài hát yêu thích" @@ -2168,11 +2239,11 @@ msgstr "Tự động tải" msgid "Fetch completed" msgstr "Đã tải xong" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "Đang tải thư viện Subsonic" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "Lỗi khi tải ảnh bìa" @@ -2180,7 +2251,7 @@ msgstr "Lỗi khi tải ảnh bìa" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "Phần mở rộng tập tin" @@ -2188,19 +2259,23 @@ msgstr "Phần mở rộng tập tin" msgid "File formats" msgstr "Định dạng tập tin" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "Tên tập tin" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "Tên tập tin (không có đường dẫn)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "Dung lượng" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2210,7 +2285,7 @@ msgstr "Loại tập tin" msgid "Filename" msgstr "Tên tập tin" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "Tập tin" @@ -2218,15 +2293,19 @@ msgstr "Tập tin" msgid "Files to transcode" msgstr "Tập tin để chuyển mã" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "Tìm bài hát trong thư viện của bạn phù hợp với tiêu chuẩn mà bạn chỉ định." -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "Đang lấy thông tin bài hát" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "Hoàn tất" @@ -2234,7 +2313,7 @@ msgstr "Hoàn tất" msgid "First level" msgstr "Mức độ đầu" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2250,12 +2329,12 @@ msgstr "Vì lí do giấy phép nên Spotify được hỗ trợ thông qua mộ msgid "Force mono encoding" msgstr "Buộc mã hóa đơn kênh" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "Quên thiết bị" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2270,7 +2349,7 @@ msgstr "Chọn Quên thiết bị sẽ xóa tên nó khỏi danh sách này và #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2298,31 +2377,23 @@ msgstr "Tần số khung hình" msgid "Frames per buffer" msgstr "Số khung mỗi lần tạo bộ đệm" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "Bạn bè" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "Frozen" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "Full Bass" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "Full Bass + Treble" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "Full Treble" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "Engine âm thanh GStreamer" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "Tổng quát" @@ -2330,30 +2401,30 @@ msgstr "Tổng quát" msgid "General settings" msgstr "Thiết lập chung" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "Thể loại" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "Lấy URL để chia sẻ danh sách Grooveshark này" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "Lấy URL để chia sẻ bài này " -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "Đang lấy danh sách các bài hát phổ biến trên Grooveshark" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "Đang tải các kênh" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "Đang tải các luồng" @@ -2365,11 +2436,11 @@ msgstr "Đặt tên:" msgid "Go" msgstr "Đi" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "Đến tab danh sách tiếp theo" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "Trở về tab danh sách trước" @@ -2377,7 +2448,7 @@ msgstr "Trở về tab danh sách trước" msgid "Google Drive" msgstr "Google Drive" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2387,7 +2458,7 @@ msgstr "Đã tải %1 ảnh bìa trong số %2 (thất bại %3)" msgid "Grey out non existent songs in my playlists" msgstr "Loại bỏ những bài hát không tồn tại khỏi các danh sách" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2395,15 +2466,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Lỗi đăng nhập Grooveshark" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "URL của danh sách Grooveshark" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Phát thanh Grooveshark" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "URL của bài hát trên Grooveshark" @@ -2411,44 +2482,44 @@ msgstr "URL của bài hát trên Grooveshark" msgid "Group Library by..." msgstr "Nhóm Thư viện theo..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "Nhóm theo" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "Nhóm theo Album" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "Nhóm theo Nghệ sĩ" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "Nhóm theo Nghệ sĩ/Album" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "Nhóm theo Nghệ sĩ/Năm - Album" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "Nhóm theo Thể loại/Album" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "Nhóm theo Thể loại/Nghệ sĩ/Album" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "Nhóm" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "Trang HTML không chứa nguồn tin RSS" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2457,7 +2528,7 @@ msgstr "" msgid "HTTP proxy" msgstr "Proxy HTTP" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "Happy" @@ -2473,25 +2544,25 @@ msgstr "Chỉ xem được thông tin phần cứng khi đã kết nối thiết msgid "High" msgstr "Cao" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "Cao (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "Cao (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "Không tìm thấy máy chủ, kiểm tra lại URL. Ví dụ: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "Giờ" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "Hypnotoad" @@ -2503,15 +2574,15 @@ msgstr "Không có tài khoản Magnatune" msgid "Icon" msgstr "Biểu tượng" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "Biểu tượng trên cùng" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "Đang nhận diện bài hát" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2521,24 +2592,24 @@ msgstr "Nếu bạn tiếp tục, thiết bị này sẽ hoạt động chậm l msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "Nếu bạn biết URL của một podcast, nhập nó vào bên dưới và nhấn Đi." -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "Bỏ qua \"The\" trong phần tên nghệ sĩ" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Hình ảnh (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "Hình ảnh (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "Trong %1 ngày" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "Trong %1 tuần" @@ -2549,7 +2620,7 @@ msgid "" "time a song finishes." msgstr "Trong chế độ năng động, các bài hát mới sẽ được chọn và thêm vào danh sách mỗi khi một bài hát được phát xong." -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "Hộp thư đến" @@ -2561,36 +2632,36 @@ msgstr "Kèm theo ảnh bìa trong thông báo" msgid "Include all songs" msgstr "Bao gồm tất cả bài hát" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "Chưa cấu hình xong, hãy điền vào tất cả các trường." -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "Tăng 4% âm lượng" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "Tăng phần trăm âm lượng" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "Tăng âm lượng" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "Đang đánh chỉ mục %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "Thông tin" @@ -2598,55 +2669,55 @@ msgstr "Thông tin" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "Nhập..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "Đã cài đặt" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "Kiểm tra tính toàn vẹn" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "Internet" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "Dịch vụ" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "Khóa API không hợp lệ" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "Định dạng không hợp lệ" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "Phương thức không hợp lệ" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "Tham số không hợp lệ" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "Nguồn được xác lập không hợp lệ" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "Dịch vụ không hợp lệ" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "Khoá phiên chạy không hợp lệ" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "Vui lòng kiểm tra lại tên người dùng và mật khẩu" @@ -2654,42 +2725,42 @@ msgstr "Vui lòng kiểm tra lại tên người dùng và mật khẩu" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Những bài hát được nghe nhiều nhất trên Jamendo" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Những bài hát đầu bảng trên Jamendo" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Những bài hát đầu bảng trong tháng trên Jamendo" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Những bài hát đầu bảng trong tuần trên Jamendo" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Cơ sở dữ liệu Jamendo" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "Chọn bài đang được phát" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "Giữ nút trong %1 giây..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "Giữ nút trong %1 giây..." @@ -2698,23 +2769,24 @@ msgstr "Giữ nút trong %1 giây..." msgid "Keep running in the background when the window is closed" msgstr "Chạy nền khi đã đóng cửa sổ chính" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "Giữ nguyên tập tin gốc" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "Kittens" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "Ngôn ngữ" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "Laptop/Headphones" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "Large Hall" @@ -2722,58 +2794,24 @@ msgstr "Large Hall" msgid "Large album cover" msgstr "Ảnh bìa lớn" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "Thanh bên cỡ lớn" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "Lần phát cuối" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Tùy chọn phát thanh Last.fm: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Thư viện Last.fm - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Phát thanh Last.fm mix - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Kênh phát thanh Last.fm lân cận - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Đài phát thanh Last.fm - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Nghệ sĩ tương tự trên Last.fm %1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Thẻ phát thanh Last.fm: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm hiện đang bận, vui lòng thử lại sau vài phút" @@ -2781,11 +2819,11 @@ msgstr "Last.fm hiện đang bận, vui lòng thử lại sau vài phút" msgid "Last.fm password" msgstr "Mật khẩu Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Số lần phát trên Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Các thẻ trên Last.fm" @@ -2793,28 +2831,24 @@ msgstr "Các thẻ trên Last.fm" msgid "Last.fm username" msgstr "Tên đăng nhập Last.fm" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm wiki" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "Những bài hát ít được yêu thích nhất" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "Để trống cho mặc định. Ví dụ: \"/dev/dsp\", \"front\", ..." - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "Trái" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "Thời lượng" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "Thư viện" @@ -2822,24 +2856,24 @@ msgstr "Thư viện" msgid "Library advanced grouping" msgstr "Nhóm thư viện nâng cao" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "Chú ý quét lại thư viện" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "Tìm trong thư viện" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "Giới hạn" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "Nghe nhạc từ Grooveshark dựa theo những gì bạn đã nghe trước đó" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "Live" @@ -2851,15 +2885,15 @@ msgstr "Nạp" msgid "Load cover from URL" msgstr "Nạp ảnh bìa từ URL" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "Nạp ảnh bìa từ URL..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "Nạp ảnh bìa từ đĩa" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "Nạp ảnh bìa từ đĩa..." @@ -2867,84 +2901,89 @@ msgstr "Nạp ảnh bìa từ đĩa..." msgid "Load playlist" msgstr "Mở danh sách" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "Mở danh sách..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "Đang nạp kênh phát thanh Last.fm" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "Đang nạp thiết bị MTP" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "Đang nạp cơ sở dữ liệu iPod" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "Đang nạp danh sách thông minh" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "Đang nạp bài hát" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "Đang nạp luồng dữ liệu" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "Đang nạp bài hát" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "Đang nạp thông tin bài hát" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "Đang nạp..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "Mở tập tin/URL, thay thế danh sách hiện tại" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "Đăng nhập" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "Đăng nhập thất bại" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "Hồ sơ dự báo lâu dài (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "Yêu thích" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "Thấp (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "Thấp (256x256)" @@ -2956,12 +2995,17 @@ msgstr "Hồ sơ ít phức tạp (LC)" msgid "Lyrics" msgstr "Lời bài hát" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "Lời bài hát từ %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2973,15 +3017,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2989,7 +3033,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Tải về Magnatune" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Hoàn tất tải về Magnatune" @@ -2997,15 +3041,20 @@ msgstr "Hoàn tất tải về Magnatune" msgid "Main profile (MAIN)" msgstr "Hồ sơ chính (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "Make it so!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "Danh sách sẵn sàng ngoại tuyến" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "Phản hồi có vẻ xấu" @@ -3018,15 +3067,15 @@ msgstr "Cấu hình proxy thủ công" msgid "Manually" msgstr "Thủ công" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "Nhà sản xuất" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "Đánh dấu là đã nghe" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "Đánh dấu mới" @@ -3038,17 +3087,21 @@ msgstr "Tất cả các điều kiện đều khớp (AND)" msgid "Match one or more search terms (OR)" msgstr "Một hay nhiều điều kiện khớp (OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "Bitrate tối đa" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "Trung bình (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "Trung bình (512x512)" @@ -3060,11 +3113,15 @@ msgstr "Kiểu thành viên" msgid "Minimum bitrate" msgstr "Bitrate tối thiểu" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "Thiếu thiết đặt projectM" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "Model" @@ -3072,20 +3129,20 @@ msgstr "Model" msgid "Monitor the library for changes" msgstr "Giám sát các thay đổi trong thư viện" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "Phát đơn kênh" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "Tháng" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "Sắc thái" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "Kiểu thanh sắc thái" @@ -3093,15 +3150,19 @@ msgstr "Kiểu thanh sắc thái" msgid "Moodbars" msgstr "Thanh sắc thái" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "Phát nhiều nhất" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "Điểm gắn" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "Các điểm gắn" @@ -3110,7 +3171,7 @@ msgstr "Các điểm gắn" msgid "Move down" msgstr "Chuyển xuống" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "Dời vào thư viện..." @@ -3119,7 +3180,7 @@ msgstr "Dời vào thư viện..." msgid "Move up" msgstr "Chuyển lên" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "Nhạc" @@ -3127,56 +3188,32 @@ msgstr "Nhạc" msgid "Music Library" msgstr "Thư viện nhạc" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "Tắt âm" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "Thư viện Last.fm của tôi" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "Kênh phát thanh Last.fm mix của tôi" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "Kênh Last.fm địa phương của tôi" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "Kênh phát thanh Last.fm khuyến nghị của tôi" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "Kênh phát thanh mix của tôi" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "Nhạc của tôi" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "Địa phương của tôi" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "Đài phát thanh của tôi" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "Bài nên nghe" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "Hành động" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "Tùy chọn đặt tên" @@ -3184,23 +3221,19 @@ msgstr "Tùy chọn đặt tên" msgid "Narrow band (NB)" msgstr "Băng hẹp (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "Lân cận" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "Proxy" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "Điều khiển qua mạng" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "Chưa bao giờ" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "Chưa bao giờ phát" @@ -3209,21 +3242,21 @@ msgstr "Chưa bao giờ phát" msgid "Never start playing" msgstr "Không phát nhạc" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "Thư mục mới" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "Tạo danh sách mới" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "Tạo danh sách thông minh..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "Bài hát mới" @@ -3231,24 +3264,24 @@ msgstr "Bài hát mới" msgid "New tracks will be added automatically." msgstr "Những bài hát mới sẽ được tự động thêm vào." -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "Những bài mới nhất" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "Tiếp theo" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "Phát bài tiếp theo" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "Tuần sau" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "Không phân tích" @@ -3256,7 +3289,7 @@ msgstr "Không phân tích" msgid "No background image" msgstr "Không dùng ảnh nền" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "Không có ảnh bìa để xuất." @@ -3264,7 +3297,7 @@ msgstr "Không có ảnh bìa để xuất." msgid "No long blocks" msgstr "Các khối không dài" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "Không có kết quả nào trùng khớp. Xóa nội dung trong ô tìm kiếm để hiện danh sách trở lại." @@ -3278,11 +3311,11 @@ msgstr "Các khối ngắn" msgid "None" msgstr "Không" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "Không bài hát nào phù hợp để chép qua thiết bị" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "Bình thường" @@ -3290,43 +3323,47 @@ msgstr "Bình thường" msgid "Normal block type" msgstr "Kiểu khối bình thường" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "Không khả thi khi dùng danh sách năng động" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "Chưa kết nối" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "Không đủ nội dung" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "Chưa đủ người hâm mộ" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "Chưa đủ thành viên" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "Chưa đủ những người lân cận" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "Chưa cài đặt" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "Chưa đăng nhập" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "Chưa gắn kết - nhấp đúp chuột để gắn kết" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "Thông báo" @@ -3339,36 +3376,41 @@ msgstr "Thông báo" msgid "Now Playing" msgstr "Đang phát" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "Xem trước hộp thông báo" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3376,11 +3418,11 @@ msgid "" "192.168.x.x" msgstr "Chỉ chấp nhận kết nối từ máy khách có ip trong các khoảng:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "Hiện số bài hát đầu tiên" @@ -3388,23 +3430,23 @@ msgstr "Hiện số bài hát đầu tiên" msgid "Opacity" msgstr "Độ mờ" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "Mở %1 bằng trình duyệt" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "Mở đĩa &CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "Mở tập tin OPML" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "Mở tập tin OPML..." @@ -3412,30 +3454,35 @@ msgstr "Mở tập tin OPML..." msgid "Open device" msgstr "Mở thiết bị" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "Mở tập tin..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "Mở trong Google Drive" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "Mở trong danh sách mới" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "Mở..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "Thao tác thất bại" @@ -3455,23 +3502,23 @@ msgstr "Tuỳ chọn..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "Sao chép tập tin" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "Sao chép tập tin..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "Tổ chức tập tin" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "Thẻ gốc" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "Các tuỳ chọn khác" @@ -3479,7 +3526,7 @@ msgstr "Các tuỳ chọn khác" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "Thiết bị xuất" @@ -3487,15 +3534,11 @@ msgstr "Thiết bị xuất" msgid "Output options" msgstr "Tùy chọn xuất" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "Ghi đè tập tin đã tồn tại" @@ -3507,15 +3550,15 @@ msgstr "" msgid "Owner" msgstr "Sở hữu" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "Đang phân tích mục lục Jamendo" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "Party" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3524,20 +3567,20 @@ msgstr "Party" msgid "Password" msgstr "Mật khẩu" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "Tạm dừng" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "Tạm dừng phát" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "Đã tạm dừng" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3546,34 +3589,22 @@ msgstr "" msgid "Pixel" msgstr "Điểm ảnh" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "Thanh bên đơn giản" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "Phát" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "Phát theo Nghệ sĩ hoặc theo Thẻ" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "Phát kênh phát thanh nghệ sĩ..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "Số lần phát" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "Phát kênh phát thanh tùy chọn..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "Phát nếu như đang dừng, tạm dừng nếu như đang phát" @@ -3582,45 +3613,42 @@ msgstr "Phát nếu như đang dừng, tạm dừng nếu như đang phát" msgid "Play if there is nothing already playing" msgstr "Phát nhạc nếu không có bài khác đang phát" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "Phát thẻ phát thanh..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "Phát bài hát thứ trong danh sách" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "Phát/Tạm dừng" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "Phát nhạc" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "Tùy chỉnh phát nhạc" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "Danh sách" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "Kết thúc danh sách" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "Tùy chọn danh sách" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "Loại danh sách" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "Danh sách" @@ -3632,23 +3660,23 @@ msgstr "Hãy đóng trình duyệt và trở lại Clementine." msgid "Plugin status:" msgstr "Trạng thái phần mở rộng:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcast" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "Pop" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "Những bài hát phổ biến" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "Bài hát phổ biến trong tháng" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "Bài hát phổ biến hôm nay" @@ -3657,22 +3685,23 @@ msgid "Popup duration" msgstr "Thời gian xuất hiện" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "Cổng" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "Pre-amp" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "Tùy chỉnh" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "Tùy chỉnh..." @@ -3708,7 +3737,7 @@ msgstr "Ấn tổ hợp phím để" msgid "Press a key" msgstr "Ấn một phím" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "Bấm tổ hợp phím để %1..." @@ -3719,20 +3748,20 @@ msgstr "Tùy chọn hộp thông báo" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "Xem trước" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "Trước" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "Phát bài trước" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "Hiển thị thông tin phiên bản" @@ -3740,21 +3769,25 @@ msgstr "Hiển thị thông tin phiên bản" msgid "Profile" msgstr "Hồ sơ" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "Tiến độ" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "Ấn vào nút tay cầm Wii" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "Sắp xếp ngẫu nhiên các bài hát" @@ -3762,85 +3795,95 @@ msgstr "Sắp xếp ngẫu nhiên các bài hát" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "Chất lượng" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "Truy vấn thiết bị..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "Quản lý danh sách chờ" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "Chờ phát những bài đã chọn" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "Chờ phát sau" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "Phát thanh (âm thanh bằng nhau cho mọi bài hát)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "Phát thanh" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "Rain" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "Hiệu ứng hình ảnh ảo ngẫu nhiên" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "Đánh giá 0 sao cho bài hiện tại" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "Đánh giá 1 sao cho bài hiện tại" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "Đánh giá 2 sao cho bài hiện tại" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "Đánh giá 3 sao cho bài hiện tại" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "Đánh giá 4 sao cho bài hiện tại" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "Đánh giá 5 sao cho bài hiện tại" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "Đánh giá" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "Thực sự hủy bỏ?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "Cập nhật" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "Cập nhật mục lục" @@ -3848,19 +3891,15 @@ msgstr "Cập nhật mục lục" msgid "Refresh channels" msgstr "Cập nhật kênh" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "Cập nhật danh sách bạn" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "Cập nhật danh sách đài" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "Cập nhật các luồng" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3872,8 +3911,8 @@ msgstr "Ghi nhớ dao động của tay cầm Wii" msgid "Remember from last time" msgstr "Nhớ từ lần trước" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "Loại bỏ" @@ -3881,7 +3920,7 @@ msgstr "Loại bỏ" msgid "Remove action" msgstr "Loại bỏ hành động" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "Loại bỏ mục trùng nhau khỏi d.sách" @@ -3889,73 +3928,77 @@ msgstr "Loại bỏ mục trùng nhau khỏi d.sách" msgid "Remove folder" msgstr "Loại bỏ thư mục" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "Loại bỏ khỏi Nhạc của tôi" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "Loại bỏ khỏi yêu thích" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "Loại bỏ khỏi danh sách" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "Loại bỏ danh sách" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "Loại bài hát khỏi Nhạc của tôi" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "Loại bài hát khỏi yêu thích" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "Đổi tên danh sách \"%1\"" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "Đổi tên danh sách Grooveshark" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "Đổi tên danh sách" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "Đổi tên danh sách..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "Đánh số lại các bài hát theo thứ tự này..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "Lặp lại" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "Lặp lại album" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "Lặp lại danh sách" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "Lặp lại bài hát" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "Thay thế danh sách hiện tại" @@ -3964,15 +4007,15 @@ msgstr "Thay thế danh sách hiện tại" msgid "Replace the playlist" msgstr "Thay thế danh sách" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "Thay thế những khoảng trắng bằng dấu gạch dưới" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "Tăng thêm âm lượng" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "" @@ -3980,24 +4023,24 @@ msgstr "" msgid "Repopulate" msgstr "Phục hồi số lượng" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "Thiết lập lại" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "Thiết lập lại bộ đếm số lần phát" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "Phải dùng kí tự mã ASCII" @@ -4005,15 +4048,15 @@ msgstr "Phải dùng kí tự mã ASCII" msgid "Resume playback on start" msgstr "Tiếp tục phát nhạc khi khởi động" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "Đang lấy các bài hát Grooveshark trong Nhạc của tôi" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "Đang tải các bài hát yêu thích trên Grooveshark" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "Đang tải danh sách Grooveshark" @@ -4033,11 +4076,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "Rock" @@ -4049,25 +4092,25 @@ msgstr "Chạy" msgid "SOCKS proxy" msgstr "SOCKS proxy" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "Tháo gỡ thiết bị an toàn" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "Tháo gỡ thiết bị an toàn sau khi sao chép" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "Tần số âm" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "Tần số âm thanh" @@ -4075,27 +4118,33 @@ msgstr "Tần số âm thanh" msgid "Save .mood files in your music library" msgstr "Lưu tập tin .mood trong thư viện nhạc" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "Lưu ảnh bìa album" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "Lưu lại ảnh bìa..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "Lưu ảnh" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "Lưu danh sách" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "Lưu danh sách..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "Lưu thiết lập" @@ -4111,11 +4160,11 @@ msgstr "Lưu thống kê vào tập tin khi có thể" msgid "Save this stream in the Internet tab" msgstr "Lưu luồng dữ liệu này trong thẻ Internet" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "Đang lưu các bài hát" @@ -4127,7 +4176,7 @@ msgstr "Hồ sơ tỉ lệ mẫu có thể mở rộng (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "Điểm" @@ -4135,34 +4184,38 @@ msgstr "Điểm" msgid "Scrobble tracks that I listen to" msgstr "Tự động gửi tên các bài hát tôi nghe" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "Tìm kiếm" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "Tìm trên Icecast" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "Tìm trên Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "Tìm trên Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "Tìm trên Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "Tìm ảnh bìa..." @@ -4182,21 +4235,21 @@ msgstr "Tìm trên iTunes" msgid "Search mode" msgstr "Chế độ tìm kiếm" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "Tùy chỉnh tìm kiếm" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "Kết quả tìm kiếm" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "Điều kiện tìm kiếm" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "Đang tìm trên Grooveshark" @@ -4204,27 +4257,27 @@ msgstr "Đang tìm trên Grooveshark" msgid "Second level" msgstr "Mức độ hai" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "Lùi về sau" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "Tiến về trước" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "Tua đến khoảng tương đối trong bài đang phát" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "Tua đến vị trí chính xác trong bài đang phát" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "Chọn hết" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "Bỏ chọn hết" @@ -4232,7 +4285,7 @@ msgstr "Bỏ chọn hết" msgid "Select background color:" msgstr "Chọn màu nền:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "Chọn ảnh nền" @@ -4248,7 +4301,7 @@ msgstr "Chọn màu lớp trên:" msgid "Select visualizations" msgstr "Chọn hiệu ứng hình ảnh ảo" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "Chọn hiệu ứng hình ảnh ảo..." @@ -4256,7 +4309,7 @@ msgstr "Chọn hiệu ứng hình ảnh ảo..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "Số sê-ri" @@ -4268,51 +4321,51 @@ msgstr "URL máy chủ" msgid "Server details" msgstr "Chi tiết máy chủ" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "Dịch vụ ngoại tuyến" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "Thiết lập %1 sang \"%2\"..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "Đặt âm lượng ở mức phần trăm" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "Đặt giá trị cho tất cả những bài được chọn..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "Phím tắt" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "Phím tắt để %1" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "Đã có phím tắt để %1" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "Hiển thị" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "Hiện hộp thông báo" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "Hiện hiệu ứng làm nổi bật bài hát hiện tại" @@ -4340,15 +4393,15 @@ msgstr "Hiện một thông báo nhỏ dưới khay hệ thống" msgid "Show a pretty OSD" msgstr "Tùy chỉnh thông báo" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "Hiện phía trên thanh trạng thái" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "Hiện tất cả bài hát" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "Hiện tất cả bài hát" @@ -4360,32 +4413,36 @@ msgstr "Hiện ảnh bìa trong thư viện" msgid "Show dividers" msgstr "Hiện đường phân cách" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "Hiện với kích thước gốc..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "Mở thư mục lưu..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "Hiện trong mục nhiều nghệ sĩ" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "Hiện thanh sắc thái" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "Chỉ hiện những mục bị trùng" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "Chỉ hiện những mục không được gán thẻ" @@ -4394,8 +4451,8 @@ msgid "Show search suggestions" msgstr "Hiện đề nghị tìm kiếm" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "Hiện các nút \"yêu thích\" và \"cấm\"" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4409,27 +4466,27 @@ msgstr "Hiện biểu tượng dưới khay hệ thống" msgid "Show which sources are enabled and disabled" msgstr "Hiện những nguồn đã được bật và tắt" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "Hiện/Ẩn" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "Phát ngẫu nhiên" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "Phát ngẫu nhiên album" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "Phát ngẫu nhiên tất cả" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "Phát ngẫu nhiên danh sách" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "Phát ngẫu nhiên trong album này" @@ -4445,7 +4502,7 @@ msgstr "Đăng xuất" msgid "Signing in..." msgstr "Đang đăng nhập..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "Nghệ sĩ tương tự" @@ -4457,43 +4514,51 @@ msgstr "Kích thước" msgid "Size:" msgstr "Kích thước:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "Không cho lùi lại trong danh sách" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "Không đếm" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "Không cho chuyển bài trong danh sách" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "Ảnh bìa nhỏ" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "Thanh bên nhỏ" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "Danh sách thông minh" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "Danh sách thông minh" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4501,11 +4566,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "Thông tin bài hát" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "Bài hát" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "Sonogram" @@ -4525,15 +4590,23 @@ msgstr "Sắp xếp theo thể loại (theo mức độ phổ biến)" msgid "Sort by station name" msgstr "Sắp xếp dựa theo tên đài" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "Sắp xếp bài hát theo" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "Sắp xếp" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "Nguồn" @@ -4549,7 +4622,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Lỗi đăng nhập Spotify" @@ -4557,7 +4630,7 @@ msgstr "Lỗi đăng nhập Spotify" msgid "Spotify plugin" msgstr "Phần hỗ trợ Spotify" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Phần hỗ trợ Spotify chưa được cài đặt" @@ -4565,77 +4638,77 @@ msgstr "Phần hỗ trợ Spotify chưa được cài đặt" msgid "Standard" msgstr "Chuẩn" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "Đã đánh giá" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "Bắt đầu danh sách đang phát" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "Bắt đầu chuyển mã" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "Gõ gì đó vào ô tìm kiếm" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "Bắt đầu %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "Đang bắt đầu..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "Đài" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "Dừng" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "Dừng lại sau khi" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "Dừng sau khi phát xong bài này" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "Dừng lại" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "Dừng khi phát xong bài hiện tại" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "Đã dừng" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "Truyền tải" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4645,7 +4718,7 @@ msgstr "Cần giấy phép hợp lệ để tải nhạc từ Subsonic sau 30 ng msgid "Streaming membership" msgstr "Truyền tải thông tin thành viên" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "Danh sách đã đăng kí" @@ -4653,7 +4726,7 @@ msgstr "Danh sách đã đăng kí" msgid "Subscribers" msgstr "Người đăng kí" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4661,12 +4734,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "Thành công!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "Đã ghi vào %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "Thẻ được đề nghị" @@ -4675,13 +4748,13 @@ msgstr "Thẻ được đề nghị" msgid "Summary" msgstr "Tóm tắt" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "Rất cao (%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "Rất lớn (2048x2048)" @@ -4693,43 +4766,35 @@ msgstr "Các định dạng được hỗ trợ" msgid "Synchronize statistics to files now" msgstr "Đồng bộ thống kê vào tập tin ngay" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "Đang đồng bộ hộp thư đến Spotify" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "Đang đồng bộ danh sách Spotify" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "Đang đồng bộ các bài hát được đánh dấu sao của Spotify" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "Màu hệ thống" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "Các thẻ ở phía trên" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "Thẻ" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "Trình tải thẻ" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "Thẻ phát thanh" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "Bitrate mục tiêu" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4737,11 +4802,11 @@ msgstr "Techno" msgid "Text options" msgstr "Tùy chỉnh văn bản" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "Xin gửi lời cám ơn đến" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "Không thể bắt đầu lệnh \"%1\"." @@ -4750,17 +4815,12 @@ msgstr "Không thể bắt đầu lệnh \"%1\"." msgid "The album cover of the currently playing song" msgstr "Ảnh bìa của bài hát hiện tại" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "Thư mục %1 không hợp lệ" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "Danh sách '%1' rỗng hoặc không thể nạp được." - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "Giá trị thứ hai phải lớn hơn giá trị thứ nhất!" @@ -4768,40 +4828,40 @@ msgstr "Giá trị thứ hai phải lớn hơn giá trị thứ nhất!" msgid "The site you requested does not exist!" msgstr "Trang bạn đã yêu cầu không tồn tại!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "Trang bạn đã yêu cầu không phải là một tấm ảnh!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Thời hạn dùng thử Subsonic đã hết. Hãy nộp phí để nhận giấy phép. Xem thêm chi tiết tại subsonic.org" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "Phiên bản Clementine bạn vừa cập nhật yêu cầu quét thư viện bởi các tính năng mới được liệt kê bên dưới:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "Có bài khác trong album này" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "Có một vấn đề khi giao tiếp với gpodder.net" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "Có vấn đề khi lấy thông tin từ Magnatune" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "Có vấn đề khi phân tích phản hồi từ iTunes Store" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4813,13 +4873,13 @@ msgid "" "deleted:" msgstr "Có vấn đề khi xóa một số bài hát. Không thể xóa các tập tin sau đây:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "Các tập tin này sẽ bị xóa khỏi thiết bị, bạn có muốn tiếp tục?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4839,13 +4899,13 @@ msgstr "Các thiết lập này được sử dụng trong hộp thoại \"Chuy msgid "Third level" msgstr "Mức độ ba" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "Thao tác này sẽ tạo một cơ sở dữ liệu và dung lượng của nó có thể đạt 150MB.\nBạn có muốn tiếp tục không?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "Album này không có trong định dạng yêu cầu" @@ -4859,11 +4919,11 @@ msgstr "Thiết bị này phải được kết nối và mở trước để Cl msgid "This device supports the following file formats:" msgstr "Thiết bị này hỗ trợ các định dạng sau đây:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "Thiết bị này sẽ không làm việc đúng cách" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "Đây là thiết bị MTP, nhưng bạn đã biên dịch Clementine mà không có hỗ trợ libmtp." @@ -4872,7 +4932,7 @@ msgstr "Đây là thiết bị MTP, nhưng bạn đã biên dịch Clementine m msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "Đây là một chiếc iPod, nhưng bạn đã biên dịch Clementine mà không có hỗ trợ libgpod." -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4882,33 +4942,33 @@ msgstr "Đây là lần đầu tiên bạn kết nối thiết bị này. Clemen msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "Luồng này chỉ dành cho người trả phí" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "Loại thiết bị này không được hỗ trợ: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "Tựa đề" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "Để mở kênh phát thanh Grooveshark, bạn nên nghe vài bài hát trên Grooveshark trước" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "Hôm nay" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "Bật/Tắt hộp thông báo" @@ -4916,27 +4976,27 @@ msgstr "Bật/Tắt hộp thông báo" msgid "Toggle fullscreen" msgstr "Tắt/Bật toàn màn hình" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "Tắt/Bật trạng thái chờ" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "Bật/Tắt Chuyển thông tin bài hát" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "Bật/Tắt hiển thị của hộp thông báo" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "Ngày mai" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "Quá nhiều chuyển hướng" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "Những bài đứng đầu" @@ -4944,21 +5004,25 @@ msgstr "Những bài đứng đầu" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "Số byte đã truyền tải" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "Số lần gửi yêu cầu" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "Bài hát" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "Chuyển mã nhạc" @@ -4970,7 +5034,7 @@ msgstr "Nhật kí chuyển mã" msgid "Transcoding" msgstr "Chuyển mã" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "Đang chuyển mã %1 tập tin sử dụng %2 luồng" @@ -4979,11 +5043,11 @@ msgstr "Đang chuyển mã %1 tập tin sử dụng %2 luồng" msgid "Transcoding options" msgstr "Tùy chỉnh chuyển mã" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4991,72 +5055,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "Tắt" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "Băng siêu rộng (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "Không thể tải về %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "Chưa xác định" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "Không hiểu nội dung" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "Lỗi không xác định" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "Bỏ thiết đặt ảnh bìa" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "Hủy đăng kí" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "Các buổi hòa nhạc sắp diễn ra" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "Cập nhật danh sách Grooveshark" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "Cập nhật tất cả podcast" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "Cập nhập thư mục thư viện đã thay đổi" @@ -5064,7 +5128,7 @@ msgstr "Cập nhập thư mục thư viện đã thay đổi" msgid "Update the library when Clementine starts" msgstr "Cập nhật thư viện khi Clementine khởi động" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "Cập nhật podcast này" @@ -5072,21 +5136,21 @@ msgstr "Cập nhật podcast này" msgid "Updating" msgstr "Cập nhật" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "Đang cập nhật %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "Đang cập nhật %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "Đang cập nhật thư viện" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "Cách sử dụng" @@ -5094,11 +5158,11 @@ msgstr "Cách sử dụng" msgid "Use Album Artist tag when available" msgstr "Dùng thẻ Nghệ sĩ của album khi có thể" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "Sử dụng phím tắt của Gnome" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "Sử dụng thông tin để tăng âm lượng nếu có" @@ -5118,7 +5182,7 @@ msgstr "Chọn màu" msgid "Use a custom message for notifications" msgstr "Tùy chọn tin nhắn thông báo" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5158,20 +5222,20 @@ msgstr "Sử dụng thiết lập proxy của hệ thống" msgid "Use volume normalisation" msgstr "Sử dụng cân bằng âm lượng" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "Đã dùng" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "Người dùng %1 không có tài khoản Grooveshark Anywhere" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "Giao diện người dùng" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5193,12 +5257,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "Bit rate thay đổi" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "Nhiều nghệ sỹ" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "Phiên bản %1" @@ -5211,7 +5275,7 @@ msgstr "Hiển thị" msgid "Visualization mode" msgstr "Chế độ hình ảnh ảo" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "Hình ảnh ảo" @@ -5219,11 +5283,15 @@ msgstr "Hình ảnh ảo" msgid "Visualizations Settings" msgstr "Thiết đặt hiệu ứng hình ảnh ảo" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "Nhận dạng âm thanh hoạt động" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "Âm lượng %1%" @@ -5241,11 +5309,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5253,7 +5321,7 @@ msgstr "Wav" msgid "Website" msgstr "Trang web" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "Tuần" @@ -5279,32 +5347,32 @@ msgstr "Tại sao không thử..." msgid "Wide band (WB)" msgstr "Băng rộng (Wb)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Tay cầm Wii %1: đã kích hoạt" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Tay cầm Wii %1: đã kết nối" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Tay cầm Wii %1: sắp hết pin (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Tay cầm Wii %1: đã tắt" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Tay cầm Wii %1: đã ngắt kết nối" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Tay cầm Wii %1: Pin yếu (%2%)" @@ -5325,7 +5393,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Âm thanh Windows Media" @@ -5333,25 +5401,25 @@ msgstr "Âm thanh Windows Media" msgid "Without cover:" msgstr "Không có ảnh bìa:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "Bạn có muốn chuyển những bài khác trong album này vào mục nhiều nghệ sĩ không?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "Bạn muốn quét lại toàn bộ ngay bây giờ?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "Ghi tất cả thống kê của các bài hát vào các tập tin" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "Sai tên người dùng hoặc mật khẩu." -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5363,11 +5431,11 @@ msgstr "Năm" msgid "Year - Album" msgstr "Năm - Album" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "Năm" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "Hôm qua" @@ -5375,13 +5443,13 @@ msgstr "Hôm qua" msgid "You are about to download the following albums" msgstr "Bạn muốn tải xuống các album sau" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "Bạn có chắc muốn loại bỏ %1 danh sách từ yêu thích?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5391,12 +5459,12 @@ msgstr "" msgid "You are not signed in." msgstr "Bạn chưa đăng nhập." -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "Bạn đã đăng nhập với tên %1." -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "Bạn đã đăng nhập." @@ -5404,13 +5472,13 @@ msgstr "Bạn đã đăng nhập." msgid "You can change the way the songs in the library are organised." msgstr "Bạn có thể thay đổi cách tổ chức các bài hát trong thư viện." -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "Bạn có thể nghe nhạc miễn phí không cần tài khoản, nhưng nếu dùng tài khoản cao cấp, chất lượng nhạc sẽ cao hơn và không có quảng cáo." -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5420,13 +5488,6 @@ msgstr "Bạn có thể nghe các bài hát từ Magnatune miễn phí và khôn msgid "You can listen to background streams at the same time as other music." msgstr "Bạn có thể nghe âm thanh nền một cách riêng lẻ hay được lồng vào nhạc." -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "Bạn có thể gửi thông tin các bài hát một cách miễn phí nhưng chỉ những thành viên đã thanh toán mới có thể lấy dữ liệu của kênh phát thanh Last.fm từ Clementine." - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "Bạn có thể điều khiển Clementine từ xa với tay cầm Wii. Xem bài viết trên Clementine wiki để biết thêm chi tiết.\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "Bạn không có tài khoản Grooveshark Anywhere." -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "Bạn không có tài khoản cao cấp của Spotify." -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "Bạn không có một đăng kí được kích hoạt" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "Bạn đã đăng xuất khỏi Spotify, hãy nhập lại mật khẩu trong hộp thoại Thiết lập." -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "Bạn đã đăng xuất khỏi Spotify, hãy nhập lại mật khẩu." -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "Bạn thích bài hát này" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5471,17 +5546,11 @@ msgstr "Bạn cần mở Tùy chỉnh hệ thống và bật \", 2012 # bingmou , 2012 # xaojan , 2012 +# mabier , 2014 # walking , 2013 # xaojan , 2012 # Xinkai Chen , 2012 # Xinkai Chen , 2012 -# zhangmin , 2013 -# zhangmin , 2013-2014 +# min zhang , 2013-2014 +# min zhang , 2013-2014 msgid "" msgstr "" "Project-Id-Version: Clementine Music Player\n" -"PO-Revision-Date: 2014-01-27 02:54+0000\n" -"Last-Translator: Clementine Buildbot \n" +"PO-Revision-Date: 2014-05-11 11:11+0000\n" +"Last-Translator: min zhang \n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/clementine/language/zh_CN/)\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_CN\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -47,11 +48,11 @@ msgstr "天" #: ../bin/src/ui_transcoderoptionsvorbis.h:211 #: ../bin/src/ui_transcoderoptionswma.h:80 msgid " kbps" -msgstr " kbps" +msgstr "千比特每秒" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " 毫秒" @@ -64,11 +65,16 @@ msgstr " 磅" msgid " seconds" msgstr " 秒" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " 首" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "%1 (%2 首歌)" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 个专辑" @@ -78,12 +84,12 @@ msgstr "%1 个专辑" msgid "%1 days" msgstr "%1 天" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 天前" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "%1 在 %2" @@ -93,48 +99,48 @@ msgstr "%1 在 %2" msgid "%1 playlists (%2)" msgstr "%1 播放列表 (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 选定" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 首" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 首" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" -msgstr "找到 %1 首" +msgstr "找到 %1 首歌" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "找到 %1 首(显示 %2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 首" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "%1 已传输" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wii 遥控器设备模块" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1 位收听者" @@ -148,18 +154,21 @@ msgstr "%L1 合计播放" msgid "%filename%" msgstr "%filename%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n 失败" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n 完成" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n 剩余" @@ -171,24 +180,24 @@ msgstr "对齐文本(&A)" msgid "&Center" msgstr "居中(&C)" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "自定义(&C)" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "附件" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "帮助" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "隐藏 %1(&H)" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "隐藏(&H)..." @@ -196,23 +205,23 @@ msgstr "隐藏(&H)..." msgid "&Left" msgstr "左(&L)" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "音乐" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "无(&N)" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "播放列表" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "退出(&Q)" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "循环模式" @@ -220,23 +229,23 @@ msgstr "循环模式" msgid "&Right" msgstr "右(&R)" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "随机播放模式&S" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "拉伸栏以适应窗口(&S)" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "工具" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(多个曲目间不同)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...和所有 Amarok 的贡献者" @@ -256,14 +265,10 @@ msgstr "0px" msgid "1 day" msgstr "1 天" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 个曲目" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "127.0.0.1" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -273,7 +278,7 @@ msgstr "128k MP3" msgid "40%" msgstr "40%" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 个随机曲目" @@ -281,12 +286,6 @@ msgstr "50 个随机曲目" msgid "Upgrade to Premium now" msgstr "立即升级至豪华版" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "创建新账户或重置您的密码" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -297,6 +296,17 @@ msgid "" "music players might not be able to read them.

" msgstr "

如果未勾选, Clementine 将尽量在外部数据库中保存您的内容评级及其它统计信息,并不会修改您的文件。

如果勾选,程序在每次信息更新时会将统计信息保存至数据库并同时直接写入文件。

注意,因为缺少标准可循,这并不对所以格式都有效,其它播放器也不一定都能读取这些信息。

" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "

在搜索关键词前加分类前缀进行搜索,例如: artist:Bode 搜索所有名字中包含 Bode 的艺术家。

可用的前缀有: %1.

" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -305,38 +315,38 @@ msgid "" "activated.

" msgstr "

这会将每首歌曲的评级和统计信息写入您所有歌曲库中歌曲的文件标记中。

如果 "保存评级和统计到文件标记中" 选项始终开启,本操作没有必要执行。

" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

变量标记以%开头,例如: %artist %album %title

\n\n

如果您用花括号\"{}\"将含有标记的部分文本括起来,此部分在标记内容为空时将自动隐藏。

" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "需要一个 Grooveshark Anywhere 帐户。" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "需要一个 Spotify 的付费账户。" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "只有在输入正确代码后,客户端才能连接。" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "智能播放列表是产生于您的媒体库的动态列表。不同的智能播放列表提供帮您选歌的不同方式。" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "一首歌如果满足这些条件就会被加入此播放列表。" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -356,36 +366,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "ALL GLORY TO THE HYPNOTOAD" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "中止" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "关于 %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "关于 Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "关于 Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "帐号详情" @@ -397,11 +406,15 @@ msgstr "帐号详情 (付费账户)" msgid "Action" msgstr "操作" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "启用/禁用 Wii 遥控器" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "热门音频" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "添加播客" @@ -417,39 +430,39 @@ msgstr "如果消息提示支持的话则添加一个新行" msgid "Add action" msgstr "添加动作" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "添加其他流媒体..." -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "添加目录..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "添加文件" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "添加文件至转码器" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "添加文件至转码器" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "添加文件..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "添加需转码文件" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "添加文件夹" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "添加文件夹..." @@ -461,11 +474,11 @@ msgstr "添加新文件夹..." msgid "Add podcast" msgstr "添加播客" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "添加播客..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "添加查询条件" @@ -529,6 +542,10 @@ msgstr "统计跳过歌曲的次数" msgid "Add song title tag" msgstr "添加歌曲标题标签" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "添加歌曲到缓存" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "添加歌曲曲目标签" @@ -537,22 +554,34 @@ msgstr "添加歌曲曲目标签" msgid "Add song year tag" msgstr "添加歌曲年份标签" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "当点击\"喜欢\"按钮后将歌曲添加到\"我的音乐\"" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "添加流媒体..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "添加到 Grooveshark 收藏夹" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "添加到 Grooveshark 播放列表" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "添加到我的音乐" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "添加到另一播放列表" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "添加到书签" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "添加到播放列表" @@ -561,6 +590,10 @@ msgstr "添加到播放列表" msgid "Add to the queue" msgstr "添加到队列" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "添加用户/组到书签" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "添加 Wii 遥控器设备动作" @@ -590,15 +623,15 @@ msgstr "今日加入" msgid "Added within three months" msgstr "于三个月内加入" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "添加到我的音乐" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "添加歌曲到收藏夹" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "高级分组..." @@ -606,12 +639,12 @@ msgstr "高级分组..." msgid "After " msgstr "之后 " -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "复制后..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -619,11 +652,11 @@ msgstr "复制后..." msgid "Album" msgstr "专辑" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "专辑(所有曲目采用合适音量)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -633,35 +666,36 @@ msgstr "专辑艺人" msgid "Album cover" msgstr "专辑封面" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr "jamendo.com 上的专辑信息..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "有封面的专辑" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "无封面的专辑" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "全部文件 (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "人人都爱催眠蛤蟆" +msgstr "全部归功于睡蛙!" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "全部专辑" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "全部艺人" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "全部文件 (*)" @@ -670,19 +704,19 @@ msgstr "全部文件 (*)" msgid "All playlists (%1)" msgstr "全部播放列表 (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "所有翻译人员" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "全部曲目" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "允许客户端从本机下载音乐。" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "允许下载" @@ -707,30 +741,30 @@ msgstr "总是显示主窗口" msgid "Always start playing" msgstr "总是开始播放" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "Clementine 需要安装额外的插件才能使用 Spotify。现在就下载并安装吗?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "加载 iTunes 数据库时出错" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "向 '%1' 写入元数据时出错" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "出现了意外错误。" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "和:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "愤怒" @@ -739,13 +773,13 @@ msgstr "愤怒" msgid "Appearance" msgstr "外观" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "添加文件/URL 到播放列表" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "追加至当前播放列表" @@ -753,52 +787,47 @@ msgstr "追加至当前播放列表" msgid "Append to the playlist" msgstr "追加至播放列表" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "允许压缩以阻止剪切" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "您确定要删除预设 %1 吗?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "您确定要删除这个播放列表吗?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "您确定要重置此曲目的统计信息吗?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "您确定要将媒体库中所有歌曲的统计信息写入相应的歌曲文件?" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "艺人" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "艺人信息" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "艺人电台" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "艺人标签" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "艺术家名字的首字母" @@ -806,9 +835,13 @@ msgstr "艺术家名字的首字母" msgid "Audio format" msgstr "音频格式" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "音频输出" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "认证失败" @@ -816,7 +849,7 @@ msgstr "认证失败" msgid "Author" msgstr "作者" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "作者" @@ -832,7 +865,7 @@ msgstr "自动更新" msgid "Automatically open single categories in the library tree" msgstr "自动打开媒体库树重的单个分类" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "可用" @@ -840,15 +873,15 @@ msgstr "可用" msgid "Average bitrate" msgstr "平均位速率" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "图片平均大小" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC 播客" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -869,7 +902,7 @@ msgstr "背景图片" msgid "Background opacity" msgstr "背景透明度" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "备份数据库" @@ -877,11 +910,7 @@ msgstr "备份数据库" msgid "Balance" msgstr "均衡" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "禁止" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "条形分析器" @@ -901,18 +930,17 @@ msgstr "行为" msgid "Best" msgstr "最佳" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "%1 上的个人档案" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "位速率" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -920,7 +948,12 @@ msgstr "位速率" msgid "Bitrate" msgstr "位速率" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "比特率" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "块状分析器" @@ -936,7 +969,7 @@ msgstr "模糊量" msgid "Body" msgstr "通知正文" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "轰鸣音分析器" @@ -950,11 +983,11 @@ msgstr "Box" msgid "Browse..." msgstr "浏览..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "缓冲时长" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "缓冲中" @@ -966,43 +999,66 @@ msgstr "但这些资源已经被禁止" msgid "Buttons" msgstr "按钮" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "默认情况下,Grooveshark 按照上传时间排序文件" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE 支持" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "缓存路径:" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "缓存中" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "缓存 %1 中" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "取消" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "需要Captcha\n请使用浏览器登录 VK.com 修复此问题" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "更改封面" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "更改字号..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "改变重复模式" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "更改快捷键..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "更改乱序模式" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "更改语言" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1012,15 +1068,19 @@ msgstr "单声道回放设置的改变将在下首歌曲播放时生效" msgid "Check for new episodes" msgstr "检测新节目" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "检查更新..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "选择 VK.com 缓存目录" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "为您的智能播放列表起名" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "自动选择" @@ -1036,11 +1096,11 @@ msgstr "选择字体..." msgid "Choose from the list" msgstr "从列表中选择" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "选择播放列表的排序方式和包含歌曲数量。" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "选择播客下载目录" @@ -1049,7 +1109,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "选择 Clementine 搜索歌词的网站。" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "古典" @@ -1057,17 +1117,17 @@ msgstr "古典" msgid "Cleaning up" msgstr "清理" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "清空" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "清空播放列表" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1080,8 +1140,8 @@ msgstr "Clementine 错误" msgid "Clementine Orange" msgstr "Clementine 橙" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine 视觉效果" @@ -1103,9 +1163,9 @@ msgstr "Clementine 可以播放你上传到 Dropbox 的音乐" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine 可以播放你上传到Google云存储的音乐" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" -msgstr "Clementine 可以播放你上传到 Ubuntu One 中的音乐" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" +msgstr "Clementine 可以播放 OneDrive 上保存的音乐" #: ../bin/src/ui_notificationssettingspage.h:431 msgid "Clementine can show a message when the track changes." @@ -1118,20 +1178,13 @@ msgid "" "an account." msgstr "Clementine 能够同步您在不同计算机和播客程序订阅的博客。创建新帐户。" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine 无法加载 projectM 可视化效果。请确定您已正确安装了 Clementine。" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "由于连接问题,Clementine不能读取您的订阅状态。已播放的曲目将会被缓存并稍后发送到Last.fm。" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine 图像查看器" @@ -1143,11 +1196,11 @@ msgstr "Clementine 无法为此文件查找结果" msgid "Clementine will find music in:" msgstr "Clementine 将在这些地方搜索音乐:" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "点击此处添加一些音乐" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1157,7 +1210,10 @@ msgstr "点此收藏播放列表,列表将被保存并可稍候通过左侧边 msgid "Click to toggle between remaining time and total time" msgstr "单击切换剩余时间和总计时间模式" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1172,19 +1228,19 @@ msgstr "关闭" msgid "Close playlist" msgstr "关闭播放列表" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "关闭视觉效果" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "关闭此窗口将取消下载。" -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "关闭此窗口将停止寻找专辑封面。" -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "俱乐部" @@ -1192,73 +1248,78 @@ msgstr "俱乐部" msgid "Colors" msgstr "颜色" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "class:level 列表用逗号分隔,level 范围 0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "备注" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "社区广播" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "自动补全标签" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "自动补全标签..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "作曲" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "配置 %1 ..." -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "正在配置 Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "配置 Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "配置 Magnatune..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "配置快捷键" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "配置Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "配置 Subsonic..." -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "配置 VK.com" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "配置全局搜索…" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "配置媒体库..." -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "正在设置播客..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "配置..." @@ -1266,11 +1327,11 @@ msgstr "配置..." msgid "Connect Wii Remotes using active/deactive action" msgstr "连接 Wii 遥控器" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "连接设备" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "连接Spotify" @@ -1280,12 +1341,16 @@ msgid "" "http://localhost:4040/" msgstr "连接被服务器拒绝,请检查服务器链接。例如: http://localhost:4040/" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "连接超时,请检查服务器链接。例如: http://localhost:4040/" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "连接出错或用户已禁用音频" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "终端" @@ -1301,17 +1366,21 @@ msgstr "转换全部音乐" msgid "Convert any music that the device can't play" msgstr "转换设备不能播放的音乐" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "复制分享链接" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "复制到剪切板" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "复制到设备..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "复制到媒体库..." @@ -1319,156 +1388,152 @@ msgstr "复制到媒体库..." msgid "Copyright" msgstr "版权所有" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "无法连接至 Subsonic,请检查服务器链接。例如: http://localhost:4040/" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "无法创建GStreamer元素 \"%1\" - 请确认您已安装了所需GStreamer插件" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "无法创建列表" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "无法为%1找到混音器,请检查是否安装了正确的Gstreamer插件" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "无法找到适合 %1 的解码器,请确认您正确安装了GStreamer插件" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "无法加载 last.fm 电台" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "无法打开输出文件 %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "封面管理器" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "从内嵌图片获取封面" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "从 %1 自动加载封面" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "手工清除了封面" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "未设置封面" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "从 %1 中设置封面" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "来自%1的封面" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "创建一个新的 Grooveshark 播放列表" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "自动换曲时淡入淡出" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "手动换曲时淡入淡出" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "Ctrl+Shift+T" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1476,7 +1541,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "自定义" @@ -1488,54 +1553,50 @@ msgstr "自定义图片:" msgid "Custom message settings" msgstr "自定义消息设置" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "自定义广播" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "自定义..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus 路径" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "舞曲" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "检测到数据库损坏,请查阅 https://code.google.com/p/clementine-player/wiki/DatabaseCorruption 获取恢复数据库的方法" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "创建日期" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "修改日期" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "天" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "默认(&F)" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "音量减少 4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "降低音量 %" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "降低音量" @@ -1543,6 +1604,11 @@ msgstr "降低音量" msgid "Default background image" msgstr "默认背景图片" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "%1 的默认设备" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "默认" @@ -1551,30 +1617,30 @@ msgstr "默认" msgid "Delay between visualizations" msgstr "在两个视觉化效果间延迟切换" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "删除" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "删除 Grooveshark 播放列表" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "删除已下载的数据" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "删除文件" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "从设备删除..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "从硬盘删除..." @@ -1582,31 +1648,31 @@ msgstr "从硬盘删除..." msgid "Delete played episodes" msgstr "删除收听过的节目" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "删除预设" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "删除智能播放列表" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "删除原始文件" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "删除文件" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "移除选定曲目" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "移除曲目" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "目标" @@ -1615,7 +1681,7 @@ msgstr "目标" msgid "Details..." msgstr "详情..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "设备" @@ -1627,17 +1693,17 @@ msgstr "设备属性" msgid "Device name" msgstr "设备名称" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "设备属性..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "设备" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" -msgstr "" +msgstr "对话框" #: widgets/didyoumean.cpp:55 msgid "Did you mean" @@ -1672,12 +1738,17 @@ msgstr "关闭时长" msgid "Disable moodbar generation" msgstr "禁止生成心情指示条" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" msgstr "禁用" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "关闭" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "盘片" @@ -1687,15 +1758,15 @@ msgid "Discontinuous transmission" msgstr "断续传输" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "显示选项" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "显示屏幕显示" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "重新扫描整个媒体库" @@ -1707,27 +1778,27 @@ msgstr "不转换任何曲目" msgid "Do not overwrite" msgstr "不要覆盖" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "不循环播放" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "不在群星中显示" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "不随机播放" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "不要停止!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "捐助" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "双击打开" @@ -1735,12 +1806,13 @@ msgstr "双击打开" msgid "Double clicking a song will..." msgstr "双击歌曲将..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "已经下载了 %n 个节目" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "下载目录" @@ -1756,7 +1828,7 @@ msgstr "下载会员" msgid "Download new episodes automatically" msgstr "自动下载新的节目" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "下载队列" @@ -1764,15 +1836,15 @@ msgstr "下载队列" msgid "Download the Android app" msgstr "下载 Android 应用" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "下载此专辑" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "下载此专辑..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "下载此节目" @@ -1780,7 +1852,7 @@ msgstr "下载此节目" msgid "Download..." msgstr "下载..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "下载中 (%1%)..." @@ -1789,23 +1861,23 @@ msgstr "下载中 (%1%)..." msgid "Downloading Icecast directory" msgstr "正在下载 Icecast 目录" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "正在下载 Jamendo 分类" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "正在下载 Magnatune 分类" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "下载Spotify插件中" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "下载元数据" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "拖拽以重新定位" @@ -1819,26 +1891,26 @@ msgstr "回响贝斯" #: ../bin/src/ui_ripcd.h:309 msgid "Duration" -msgstr "" +msgstr "长度" #: ../bin/src/ui_dynamicplaylistcontrols.h:109 msgid "Dynamic mode is on" msgstr "已打开动态模式" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "动态随机混音" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "编辑智能播放列表..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "编辑标签 \"%1\"..." -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "编辑标签..." @@ -1850,16 +1922,16 @@ msgstr "编辑标签" msgid "Edit track information" msgstr "编辑曲目信息" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "编辑曲目信息..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "编辑曲目信息..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "编辑..." @@ -1867,6 +1939,10 @@ msgstr "编辑..." msgid "Enable Wii Remote support" msgstr "启用 Wii 遥控支持" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "启用自动缓存" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "启用均衡器" @@ -1881,7 +1957,7 @@ msgid "" "displayed in this order." msgstr "在搜索结果中启用以下来源。结果将按以下顺序显示。" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "启用/禁用 Last.fm 的音乐记录" @@ -1909,15 +1985,10 @@ msgstr "输入 URL 以便从网络下载封面:" msgid "Enter a filename for exported covers (no extension):" msgstr "输入导出封面的文件名(不含扩展名):" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "输入播放列表的新名称" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "输入一个 艺人标签 来开始收听 Last.fm 电台。" - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1931,7 +2002,7 @@ msgstr "使用下方输入的内容在 iTunes商店 上搜索播客" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "使用下方输入的内容在 gpodder.net 上搜索播客" -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "在此输入查找条件" @@ -1940,11 +2011,11 @@ msgstr "在此输入查找条件" msgid "Enter the URL of an internet radio stream:" msgstr "请输入互联网广播流媒体地址:" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "输入文件夹名字" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "在应用中输入此 IP 来连接上 Clementine。" @@ -1952,21 +2023,22 @@ msgstr "在应用中输入此 IP 来连接上 Clementine。" msgid "Entire collection" msgstr "整个集合" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "均衡器" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "相当于 --log-levels *:1" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "相当于 --log-levels *:3" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "错误" @@ -1974,38 +2046,38 @@ msgstr "错误" msgid "Error connecting MTP device" msgstr "连接 MTP 设备出错" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "复制曲目出错" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "删除曲目出错" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "下载Spotify插件出错" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "载入 %1 出错" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "读取di.fm播放列表错误" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "处理 %1 出错:%2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "读取CD时发生错误" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "曾经播放" @@ -2037,7 +2109,7 @@ msgstr "每6小时" msgid "Every hour" msgstr "每小时" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "同一专辑歌曲或者同一CUE sheet不淡出" @@ -2049,7 +2121,7 @@ msgstr "现有封面" msgid "Expand" msgstr "扩展" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "于%1过期" @@ -2070,36 +2142,36 @@ msgstr "导出下载的封面" msgid "Export embedded covers" msgstr "导出内嵌封面" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "导出完成" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "已导出 %1 个封面,共 %2 个(跳过 %3 个)" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2109,42 +2181,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "暂停时淡出/恢复时淡入" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "停止播放曲目时淡出" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "淡出" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "淡出时长" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" -msgstr "" +msgstr "读取 CD 失败" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "无法获取目录" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "无法获取播客" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "无法读取播客" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "无法解析此 RSS 种子的XML" @@ -2153,11 +2225,11 @@ msgstr "无法解析此 RSS 种子的XML" msgid "Fast" msgstr "快速" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "收藏夹" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "收藏的曲目" @@ -2173,19 +2245,19 @@ msgstr "自动获取" msgid "Fetch completed" msgstr "读取完毕" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "正在获取 Subsonic 曲目库" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "获取封面出错" #: ../bin/src/ui_ripcd.h:320 msgid "File Format" -msgstr "" +msgstr "文件格式" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "文件扩展名" @@ -2193,19 +2265,23 @@ msgstr "文件扩展名" msgid "File formats" msgstr "文件格式" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "文件名" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "文件名(无路径)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "文件名模式:" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "文件大小" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2215,7 +2291,7 @@ msgstr "文件类型" msgid "Filename" msgstr "文件名" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "文件" @@ -2223,15 +2299,19 @@ msgstr "文件" msgid "Files to transcode" msgstr "要转换的文件" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "在你的媒体库里查找符合条件的歌曲。" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "搜索此艺术家" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "识别音乐" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "完成" @@ -2239,7 +2319,7 @@ msgstr "完成" msgid "First level" msgstr "第一阶段" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2255,12 +2335,12 @@ msgstr "由于许可证原因 Spotify 支持位于单独的插件中。" msgid "Force mono encoding" msgstr "强制单声道编码" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "忘记设备" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2275,7 +2355,7 @@ msgstr "忘记设备将从列表删除该设备.如果下次您再次插入该 #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2301,33 +2381,25 @@ msgstr "帧速率" #: ../bin/src/ui_transcoderoptionsspeex.h:236 msgid "Frames per buffer" -msgstr "每帧缓冲" +msgstr "每次缓冲帧数" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "好友" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "冻结" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "重低音" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "低音饱满 + 高音清丽" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "高音" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer 音频引擎" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "一般" @@ -2335,30 +2407,30 @@ msgstr "一般" msgid "General settings" msgstr "常规设置" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "流派" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "获取一个分享该 Grooveshark 播放列表的地址" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "获取一个分享该 Grooveshark 音乐的地址" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "正在获取 Grooveshark 的流行榜单" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "获得频道" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "获取流" @@ -2370,11 +2442,11 @@ msgstr "给它起个名字" msgid "Go" msgstr "Go" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "转到下一播放列表标签" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "转到上一播放列表标签" @@ -2382,7 +2454,7 @@ msgstr "转到上一播放列表标签" msgid "Google Drive" msgstr "Google云存储" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2392,7 +2464,7 @@ msgstr "获取了 %1 个封面,共 %2 个(失败 %3 个)" msgid "Grey out non existent songs in my playlists" msgstr "灰色显示播放列表中不存在的歌曲" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2400,15 +2472,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark 登录错误" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark 的播放列表地址" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark 电台" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark 歌曲地址" @@ -2416,44 +2488,44 @@ msgstr "Grooveshark 歌曲地址" msgid "Group Library by..." msgstr "媒体库分组..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "分组" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "按专辑分组" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "按艺人分组" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "按艺人/专辑分组" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "按艺人/年份分组 - 专辑" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "按流派/专辑分组" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "按流派/艺人/专辑分组" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "分组" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "HTML页面没有包含任何 RSS 种子" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "未获得 URL 返回 HTTP 3xx 状态代码, 请检查服务器配置。" @@ -2462,7 +2534,7 @@ msgstr "未获得 URL 返回 HTTP 3xx 状态代码, 请检查服务器配置。" msgid "HTTP proxy" msgstr "HTTP 代理" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "高兴" @@ -2478,25 +2550,25 @@ msgstr "硬件信息仅在设备连接上后可用。" msgid "High" msgstr "高" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "高(%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "高(1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "主机未找到,请检查服务器链接。例如: http://localhost:4040/" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "小时" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "蛤蟆" @@ -2508,15 +2580,15 @@ msgstr "我没有 Magnatune 帐号" msgid "Icon" msgstr "图标" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "图标在上" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "识别曲目" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2526,24 +2598,24 @@ msgstr "如果您选择继续,设备运行将会变慢并且复制歌曲工作 msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "如果您知道播客地址,请在下面填入地址并且点击 Go。" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "忽略艺人名称中的“The”" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "图像 (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "图像 (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "在 %1 天内" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "%1 周内" @@ -2554,7 +2626,7 @@ msgid "" "time a song finishes." msgstr "在动态模式中, 每次歌曲播放完之后会被选择并添加新歌曲到播放列表.使用动态模式将忽略您的播放列表大小设定值。" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "收件夹" @@ -2566,135 +2638,135 @@ msgstr "在提示中中加入专辑封面" msgid "Include all songs" msgstr "包含所有的歌曲" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "Subsonic REST 协议版本不兼容。客户端需更新。" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "Subsonic REST 协议版本不兼容。服务端需更新。" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "配置不完整,请确认所有字段都已填好。" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "以 4% 为单位增大音量" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "提升音量 %" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "增大音量" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "正在索引 %1" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "信息" #: ../bin/src/ui_ripcd.h:301 msgid "Input options" -msgstr "" +msgstr "输入选项" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "插入..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "已安装" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "完整性检验" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "互联网" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "互联网提供商" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "无效的 API 密钥" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "无效格式" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "无效方式" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "无效参数" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "指定的资源无效" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "服务无效" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "会话钥匙无效" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "用户名/密码无效" #: ../bin/src/ui_ripcd.h:312 msgid "Invert Selection" -msgstr "" +msgstr "反选" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamedo 最受欢迎曲目" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo 曲目排行" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo 本月曲目排行" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo 本周曲目排行" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo 数据库" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "跳转到当前播放的曲目" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "保持按钮 %1 秒..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "保持按钮 %1 秒..." @@ -2703,23 +2775,24 @@ msgstr "保持按钮 %1 秒..." msgid "Keep running in the background when the window is closed" msgstr "当窗口关闭时仍在后台运行" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "保留原始文件" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "猫咪" +msgstr "小猫咪" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "语言" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "笔记本电脑/耳机" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "大礼堂" @@ -2727,58 +2800,24 @@ msgstr "大礼堂" msgid "Large album cover" msgstr "大专辑封面" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "大侧边栏" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "最近播放" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "上次播放的" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm 自定义广播:%1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm 媒体库 - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "last.fm混音电台 - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm 邻居电台 - %1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm 电台 - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm 上 %1 的相似艺人" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm 标签电台:%1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm 正忙,请及分钟后再试" @@ -2786,11 +2825,11 @@ msgstr "Last.fm 正忙,请及分钟后再试" msgid "Last.fm password" msgstr "Last.fm 密码" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm 播放计数" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm 标签" @@ -2798,28 +2837,24 @@ msgstr "Last.fm 标签" msgid "Last.fm username" msgstr "Last.fm 用户名" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm 维基" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "最不喜欢的曲目" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "空白为默认,例如: \"/dev/dsp\",\"front\" 等。" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "左" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "长度" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "媒体库" @@ -2827,24 +2862,24 @@ msgstr "媒体库" msgid "Library advanced grouping" msgstr "媒体库高级分组" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "重新扫描媒体库提示" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "媒体库搜索" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "限制" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "以您之前收听过的音乐为基础来收听 Grooveshark 的歌曲" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "直播" @@ -2856,15 +2891,15 @@ msgstr "载入" msgid "Load cover from URL" msgstr "从 URL 载入封面" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "从 URL 载入封面..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "从磁盘读取封面" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "从磁盘载入封面..." @@ -2872,84 +2907,89 @@ msgstr "从磁盘载入封面..." msgid "Load playlist" msgstr "载入播放列表" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "载入播放列表..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "正在载入 Last.fm 电台" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "正在载入 MTP 设备" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "正在载入 iPod 数据库" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "正在载入智能播放列表" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "加载曲目" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "正在载入媒体流" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "正在载入曲目" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "正在加载曲目信息" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "正在载入..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "载入文件或URL,替换当前播放列表" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "登录" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "登录失败" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "注销" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "长期预测 (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "喜爱" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "低(%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "低(256x256)" @@ -2961,12 +3001,17 @@ msgstr "低复杂度 (LC)" msgid "Lyrics" msgstr "歌词" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "歌词来自 %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "M4A AAC" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2978,15 +3023,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2994,7 +3039,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune 下载" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune 下载完成" @@ -3002,15 +3047,20 @@ msgstr "Magnatune 下载完成" msgid "Main profile (MAIN)" msgstr "主要档案(MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "就这样吧!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "努力去实现它!" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "播放列表离线可用" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "无效的响应" @@ -3023,15 +3073,15 @@ msgstr "手工设置代理" msgid "Manually" msgstr "手动" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "生产商" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "标记为已听" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "标记为新的" @@ -3043,17 +3093,21 @@ msgstr "匹配每个查询条件(与)" msgid "Match one or more search terms (OR)" msgstr "匹配一个或多个查询条件(或)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "最大全局搜索结果" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "最大位速率" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "中(%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "中(512x512)" @@ -3065,11 +3119,15 @@ msgstr "会员类型" msgid "Minimum bitrate" msgstr "最小位速率" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "最小缓冲填充" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "projectM 设置缺失" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "型号" @@ -3077,20 +3135,20 @@ msgstr "型号" msgid "Monitor the library for changes" msgstr "监控媒体库的更改" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "单曲循环" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "月" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "心情" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "心情指示条风格" @@ -3098,15 +3156,19 @@ msgstr "心情指示条风格" msgid "Moodbars" msgstr "心情指示条" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "更多" + +#: library/library.cpp:84 msgid "Most played" msgstr "最常播放" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "挂载点" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "挂载点" @@ -3115,7 +3177,7 @@ msgstr "挂载点" msgid "Move down" msgstr "下移" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "移动至媒体库..." @@ -3124,7 +3186,7 @@ msgstr "移动至媒体库..." msgid "Move up" msgstr "上移" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "音乐" @@ -3132,56 +3194,32 @@ msgstr "音乐" msgid "Music Library" msgstr "媒体库" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "静音" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "我的 Last.fm 媒体库" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "我的 Last.fm Mix Radio" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "我的 Last.fm 邻居" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "我的 Last.fm 推荐广播" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "我的混音电台" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "我的音乐" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "我的邻居" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "我的电台" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "我的推荐" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "名称" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "名字" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "命名选项" @@ -3189,23 +3227,19 @@ msgstr "命名选项" msgid "Narrow band (NB)" msgstr "窄带(NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "邻居" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "网络代理" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "网络远程" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "从不" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "从未播放" @@ -3214,21 +3248,21 @@ msgstr "从未播放" msgid "Never start playing" msgstr "从未播放" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "创建新文件夹" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "新建播放列表" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "新建智能播放列表..." -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "新曲目" @@ -3236,24 +3270,24 @@ msgstr "新曲目" msgid "New tracks will be added automatically." msgstr "新曲目会被自动添加。" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "最新曲目" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "下一首" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "下一个曲目" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "下一周" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "无均衡器" @@ -3261,7 +3295,7 @@ msgstr "无均衡器" msgid "No background image" msgstr "无背景图片" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "无封面可供导出。" @@ -3269,7 +3303,7 @@ msgstr "无封面可供导出。" msgid "No long blocks" msgstr "无长块" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "无匹配。清空搜索框以重新显示整个播放列表。" @@ -3283,11 +3317,11 @@ msgstr "无短块" msgid "None" msgstr "无" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "已选择的曲目均不适合复制到设备" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "正常" @@ -3295,43 +3329,47 @@ msgstr "正常" msgid "Normal block type" msgstr "普通块类型" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "使用动态播放列表时不可用" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "未连接" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "内容不足" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "歌迷不足" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "会员不足" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "邻居不足" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "未安装" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "未登录" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "尚未挂载 - 双击进行挂载" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "无内容" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "提示类型" @@ -3344,36 +3382,41 @@ msgstr "提示" msgid "Now Playing" msgstr "现在播放" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD 预览" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "关闭" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "Ogg Opus" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "打开" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "OneDrive" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3381,11 +3424,11 @@ msgid "" "192.168.x.x" msgstr "只接受来自以下 IP 段的客户端连接:\n10.x.x.x\n172.16.0.0 - 172.31.255.255\n192.168.x.x" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "只允许来自本地网络的连接" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "只显示第一个" @@ -3393,23 +3436,23 @@ msgstr "只显示第一个" msgid "Opacity" msgstr "不透明度" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "在浏览器中打开%1" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "打开音频CD..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "打开 OPML 文件" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "打开 OPML 文件…" @@ -3417,30 +3460,35 @@ msgstr "打开 OPML 文件…" msgid "Open device" msgstr "打开设备" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "打开文件..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "打开 Google 云存储" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "在新播放列表中打开" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "在新的播放列表中打开" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "在浏览器中打开" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "打开..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "操作失败" @@ -3460,23 +3508,23 @@ msgstr "选项..." msgid "Opus" msgstr "Opus" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "组织文件" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "组织文件..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "组织文件" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "原始标签" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "其它选项" @@ -3484,7 +3532,7 @@ msgstr "其它选项" msgid "Output" msgstr "输出" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "输出设备" @@ -3492,15 +3540,11 @@ msgstr "输出设备" msgid "Output options" msgstr "输出选项" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "输出插件" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "覆盖全部" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "覆盖已存在的文件" @@ -3512,15 +3556,15 @@ msgstr "只覆盖体积较小的文件" msgid "Owner" msgstr "所有者" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "正在解析 Jamendo 分类" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "晚会" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3529,20 +3573,20 @@ msgstr "晚会" msgid "Password" msgstr "密码" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "暂停" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "暂停播放" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "已暂停" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "表演者" @@ -3551,34 +3595,22 @@ msgstr "表演者" msgid "Pixel" msgstr "像素" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "普通侧边栏" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "播放" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "按艺术家或标签播放" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "播放艺人电台..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "播放计数" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "播放自定义广播..." - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "若停止则播放,若播放则停止" @@ -3587,45 +3619,42 @@ msgstr "若停止则播放,若播放则停止" msgid "Play if there is nothing already playing" msgstr "如无歌曲播放则自动播放添加的歌曲" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "播放标签电台..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "播放列表中的第首" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "播放/暂停" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "播放" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "播放器选项" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "播放列表" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "已完成播放列表" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "播放列表选项" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "播放列表类型" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "播放列表" @@ -3637,23 +3666,23 @@ msgstr "请关闭你的浏览器,回到 Clementine。" msgid "Plugin status:" msgstr "插件状态:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "播客" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "流行" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "流行音乐" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "每月最热歌曲" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "今日最热歌曲" @@ -3662,22 +3691,23 @@ msgid "Popup duration" msgstr "弹出时长" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "端口" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "前置放大" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "首选项" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "首选项..." @@ -3713,7 +3743,7 @@ msgstr "按下组合键定义为" msgid "Press a key" msgstr "按一个键" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "请为 %1 按下新的组合键..." @@ -3724,20 +3754,20 @@ msgstr "漂亮的 OSD 选项" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "预览" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "上一首" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "上一个曲目" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "输出版本信息" @@ -3745,21 +3775,25 @@ msgstr "输出版本信息" msgid "Profile" msgstr "档案" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "进度" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "进度" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "迷幻" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "按下 Wii遥控器 按钮" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "随机打乱曲目顺序" @@ -3767,7 +3801,12 @@ msgstr "随机打乱曲目顺序" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" +msgid "Quality" +msgstr "质量" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" msgid "Quality" msgstr "质量" @@ -3775,77 +3814,82 @@ msgstr "质量" msgid "Querying device..." msgstr "正在查询设备..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "队列管理器" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "将选定曲目加入队列" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "加入队列" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "电台(所有曲目采用相同的音量)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "电台" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "雨声" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "雨" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "随机视觉效果" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "给当前曲目评级为零星" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "给当前曲目评级为一星" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "给当前曲目评级为两星" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "给当前曲目评级为三星" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "给当前曲目评级为四星" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "给当前曲目评级为五星" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "评级" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "确实取消?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "重定向次数超过限制,请验证客户端配置。" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "刷新" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "刷新分类" @@ -3853,19 +3897,15 @@ msgstr "刷新分类" msgid "Refresh channels" msgstr "刷新频道" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "刷新好友列表" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "刷新电台列表" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "刷新流" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "Reggae" @@ -3877,8 +3917,8 @@ msgstr "记住 Wii遥控器 节奏" msgid "Remember from last time" msgstr "记住上次设置" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "删除" @@ -3886,7 +3926,7 @@ msgstr "删除" msgid "Remove action" msgstr "删除操作" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "从播放列表中移除重复项" @@ -3894,73 +3934,77 @@ msgstr "从播放列表中移除重复项" msgid "Remove folder" msgstr "删除文件夹" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "从我的音乐中移出" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "从书签移除" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "从收藏夹的中删除" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "从播放列表中移除" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "删除播放列表" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "删除播放列表" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "正在从我的音乐中移出" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "正在从收藏夹中删除歌曲" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "重命名 \"%1\" 播放列表" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "重命名 Grooveshark 播放列表" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "重命名播放列表" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "重命名播放列表..." -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "以此顺序为曲目重新编号..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "循环" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "专辑循环" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "播放列表循环" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "单曲循环" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "移除当前播放列表" @@ -3969,15 +4013,15 @@ msgstr "移除当前播放列表" msgid "Replace the playlist" msgstr "移除播放列表" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "以下划线代替空格" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "回放增益" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "回放增益模式" @@ -3985,24 +4029,24 @@ msgstr "回放增益模式" msgid "Repopulate" msgstr "重现加入队列" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "需要验证码" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "重置" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "重置播放计数" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "重播当前曲目,如果曲目开播不足8秒钟则播放上一曲。" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "仅使用 ASCII 字符" @@ -4010,15 +4054,15 @@ msgstr "仅使用 ASCII 字符" msgid "Resume playback on start" msgstr "启动时恢复播放" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "正在获取 Grooveshark 我的音乐中的歌曲" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "正在获取 Grooveshark 收藏夹中的歌曲" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "正在检索 Grooveshark 播放列表" @@ -4032,17 +4076,17 @@ msgstr "右" #: ../bin/src/ui_ripcd.h:303 msgid "Rip" -msgstr "" +msgstr "抓轨" #: ui/ripcd.cpp:116 msgid "Rip CD" -msgstr "" +msgstr "CD 抓轨" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." -msgstr "" +msgstr "音乐 CD 抓轨" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "摇滚" @@ -4054,25 +4098,25 @@ msgstr "运行" msgid "SOCKS proxy" msgstr "SOCKS 代理" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "SSL 握手出错,请验证服务器配置。下面的 SSLv3 选项可能解决一些问题。" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "安全移除设备" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "复制后安全移除设备" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "采样率" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "采样率" @@ -4080,27 +4124,33 @@ msgstr "采样率" msgid "Save .mood files in your music library" msgstr "保存 .mood 文件至您的音乐库" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "保存转接封面" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "保存封面至硬盘..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "保存图像" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" msgstr "保存播放列表" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "保存播放列表" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "保存播放列表..." -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "保存预设" @@ -4116,11 +4166,11 @@ msgstr "如果可能,保存统计信息至文件标记中" msgid "Save this stream in the Internet tab" msgstr "在网络标签中收藏此媒体流" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "正在保存统计信息至歌曲文件" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "正在保存曲目" @@ -4132,7 +4182,7 @@ msgstr "可变采样频率 (SSR)" msgid "Scale size" msgstr "缩放" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "得分" @@ -4140,10 +4190,14 @@ msgstr "得分" msgid "Scrobble tracks that I listen to" msgstr "提交正在收听的音乐" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 +msgid "Search" +msgstr "搜索" + +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." msgid "Search" msgstr "搜索" @@ -4151,23 +4205,23 @@ msgstr "搜索" msgid "Search Icecast stations" msgstr "搜索 Icecast 电台" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "搜索 Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "搜索 Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "搜索 Subsonic" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "自动搜索" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "搜索专辑封面..." @@ -4187,21 +4241,21 @@ msgstr "搜索iTunes" msgid "Search mode" msgstr "搜索模式" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "搜索选项" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "搜索结果" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "搜索条目" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "在 Grooveshark 搜索" @@ -4209,27 +4263,27 @@ msgstr "在 Grooveshark 搜索" msgid "Second level" msgstr "第二阶段" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "快退" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "快进" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "当前播放的曲目以相对步长快进/快退" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "当前播放的曲目快进/快退至指定时间点" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "选择全部" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "不选择" @@ -4237,7 +4291,7 @@ msgstr "不选择" msgid "Select background color:" msgstr "选择背景色:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "选择背景图片" @@ -4253,7 +4307,7 @@ msgstr "选择前景色:" msgid "Select visualizations" msgstr "选择视觉效果" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "选择视觉效果..." @@ -4261,7 +4315,7 @@ msgstr "选择视觉效果..." msgid "Select..." msgstr "选择……" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "序列号" @@ -4273,51 +4327,51 @@ msgstr "服务器 URL" msgid "Server details" msgstr "服务器详情" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "服务离线" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "将 %1 设置为 %2..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "设置音量为 %" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "为全部选中的曲目设置值..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "设置" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "快捷键" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "%1 的快捷键" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "已存在 %1 的快捷键" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "显示" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "显示 OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "当前曲目显示发光动画" @@ -4345,15 +4399,15 @@ msgstr "系统托盘气泡通知" msgid "Show a pretty OSD" msgstr "显示漂亮的 OSD" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "在状态栏之上显示" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "显示所有歌曲" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "显示全部曲目" @@ -4365,32 +4419,36 @@ msgstr "在媒体库中显示封面" msgid "Show dividers" msgstr "显示分频器" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "显示完整尺寸..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "在全局搜索结果中显示分组" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "在文件管理器中打开..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "在媒体库中显示" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "在群星中显示" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "显示心情指示条" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "只显示重复" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "只显示未加标签的" @@ -4399,8 +4457,8 @@ msgid "Show search suggestions" msgstr "显示搜索建议" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "显示“标记喜爱”和“禁止”按钮" +msgid "Show the \"love\" button" +msgstr "显示\"喜欢\"按钮" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4414,27 +4472,27 @@ msgstr "显示托盘图标" msgid "Show which sources are enabled and disabled" msgstr "显示来源启用/禁用状态" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "显示/隐藏" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "乱序" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "乱序专辑" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "乱序全部" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "随机播放列表" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "此专辑的曲目乱序播放" @@ -4450,7 +4508,7 @@ msgstr "注销" msgid "Signing in..." msgstr "登录..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "相似艺人" @@ -4462,43 +4520,51 @@ msgstr "大小" msgid "Size:" msgstr "大小:" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "Ska" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "在播放列表中后退" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "跳过计数" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "在播放列表中前进" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "跳过所选择的曲目" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "跳过曲目" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "小专辑封面" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "小侧边栏" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "智能播放列表" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "智能播放列表" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "Soft" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "Soft Rock" @@ -4506,11 +4572,11 @@ msgstr "Soft Rock" msgid "Song Information" msgstr "曲目信息" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "曲目信息" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "声波图" @@ -4530,15 +4596,23 @@ msgstr "按流派排序(流行度)" msgid "Sort by station name" msgstr "通过电台名排序" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "按字母顺序排序" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "排序曲目" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "正在排序" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "SoundCloud" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "来源" @@ -4554,7 +4628,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify 登录失败" @@ -4562,7 +4636,7 @@ msgstr "Spotify 登录失败" msgid "Spotify plugin" msgstr "Spotify插件" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "potify 插件未安装" @@ -4570,77 +4644,77 @@ msgstr "potify 插件未安装" msgid "Standard" msgstr "标准" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "用星号标记" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" -msgstr "" +msgstr "开始抓轨" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "开始播放当前播放列表" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "开始转换" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "请在上方搜索栏中输入一些词条,来充实搜索结果列表" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "正在开始 %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "正在开始..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "工作站" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "停止" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "后停止" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "在此曲目后停止" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "停止播放" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "播放完此曲目后停止" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "播完曲目 %1 后停止" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "已停止" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "流媒体" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4650,7 +4724,7 @@ msgstr "在30天试用期过后,从 Subsonic 服务器播放流媒体,需要 msgid "Streaming membership" msgstr "流媒体成员" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "订阅的播放列表" @@ -4658,7 +4732,7 @@ msgstr "订阅的播放列表" msgid "Subscribers" msgstr "订阅" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "Subsonic" @@ -4666,12 +4740,12 @@ msgstr "Subsonic" msgid "Success!" msgstr "成功!" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "成功写入 %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "推荐标签" @@ -4680,13 +4754,13 @@ msgstr "推荐标签" msgid "Summary" msgstr "总览" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "很高(%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "超高质 (2048x2048)" @@ -4698,43 +4772,35 @@ msgstr "支持的格式" msgid "Synchronize statistics to files now" msgstr "立即同步统计数据至文件" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "同步 Spotify 收件箱" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "同步 Spotify 播放列表" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "同步 Spotify 星号标记的曲目" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "系统颜色" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "标签在上" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "标签" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "标签提取程序" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "标签电台 (Tag Radio)" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "目标位速率" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "Techno" @@ -4742,11 +4808,11 @@ msgstr "Techno" msgid "Text options" msgstr "文本设置" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "感谢" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "命令\"%1\"无法执行。" @@ -4755,17 +4821,12 @@ msgstr "命令\"%1\"无法执行。" msgid "The album cover of the currently playing song" msgstr "目前正在播放的音乐的专辑封面" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "文件夹 %1 无效" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "播放列表 '%1' 为空或者无法加载。" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "第二音量应该比第一音量还大!" @@ -4773,40 +4834,40 @@ msgstr "第二音量应该比第一音量还大!" msgid "The site you requested does not exist!" msgstr "请求的站点不存在!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "您请求的站点并不是一个图片!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "Subsonic 服务器的试用期已过。请捐助来获得许可文件。详情请访问 subsonic.org 。" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "已更新Clementine,由于添加了如下特性,您需要更新您的收藏:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "此专辑中还有其它歌曲" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "与 gpodder.net 通讯时出现了问题" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "从Magnatune获取元数据出错" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "在解析 iTunes 商店的回馈信息出现了问题" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4818,13 +4879,13 @@ msgid "" "deleted:" msgstr "删除歌曲出错。以下歌曲无法删除:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "将从设备中删除这些文件.确定删除吗?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4844,13 +4905,13 @@ msgstr "这些设置将用于“音乐转码”对话框,及向设备中复制 msgid "Third level" msgstr "第三阶段" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "将会创建一个超过 150 MB 的数据库,\n您无论如何也要继续吗?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "这张专辑不是有效的格式" @@ -4864,11 +4925,11 @@ msgstr "此设备必须在连接并打开之前,Clementine可以检测它支 msgid "This device supports the following file formats:" msgstr "该设备支持以下文件格式:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "这个设备将不会正常工作" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "这个一部 MTP 设备,但是您可以通过 Clementine 来编辑而无需 libmtp 的支持。" @@ -4877,7 +4938,7 @@ msgstr "这个一部 MTP 设备,但是您可以通过 Clementine 来编辑而 msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "这是 iPod 设备,但 Clementine 编译时未包含 libgpod 支持。" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4887,33 +4948,33 @@ msgstr "这是您第一次连接该设备。Clementine 将扫描设备上的音 msgid "This option can be changed in the \"Behavior\" preferences" msgstr "这些选项可以在“行为”设置中修改" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "该流媒体只有付费用户才能收听" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "这种设备不被支持: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "标题" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "在开始收听 Grooveshark 电台之前,您需要收听几首 Grooveshark 的歌曲" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "今日" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "切换漂亮的 OSD" @@ -4921,27 +4982,27 @@ msgstr "切换漂亮的 OSD" msgid "Toggle fullscreen" msgstr "切换全屏" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "切换队列状态" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "切换歌曲记录" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "切换 OSD 可见性" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "明天" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "太多的重定向" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "热门曲目" @@ -4949,21 +5010,25 @@ msgstr "热门曲目" msgid "Total albums:" msgstr "专辑总数:" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "已传输字节总数" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "已发出网络连接总数" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "曲目" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "曲目" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "音乐转码" @@ -4975,7 +5040,7 @@ msgstr "转换日志" msgid "Transcoding" msgstr "转码" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "正在转码 %1 个文件,占用线程 %2 个" @@ -4984,11 +5049,11 @@ msgstr "正在转码 %1 个文件,占用线程 %2 个" msgid "Transcoding options" msgstr "转码设置" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "Turbine" @@ -4996,72 +5061,72 @@ msgstr "Turbine" msgid "Turn off" msgstr "关闭" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "Ubuntu One" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "Ubuntu One 密码" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "Ubuntu One 用户名" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "超宽带 (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "无法下载 %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "未知" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "未知的content-type" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "未知错误" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "撤销封面" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "取消略过的选定曲目" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "取消掠过曲目" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "取消订阅" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "近期音乐会" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "更新" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "更新 Grooveshark 播放列表" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "更新所有播客" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "更新改变的媒体库文件夹" @@ -5069,7 +5134,7 @@ msgstr "更新改变的媒体库文件夹" msgid "Update the library when Clementine starts" msgstr "Clementine 启动时更新媒体库" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "更新此播客" @@ -5077,21 +5142,21 @@ msgstr "更新此播客" msgid "Updating" msgstr "更新中" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "正在更新 %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "正在更新 %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "正在更新媒体库" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "用法" @@ -5099,11 +5164,11 @@ msgstr "用法" msgid "Use Album Artist tag when available" msgstr "使用专辑艺术家标记(如果可用)" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "使用 GNOME 快捷键" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "使用播放增益元数据(如果可用)" @@ -5123,7 +5188,7 @@ msgstr "使用自定义颜色集" msgid "Use a custom message for notifications" msgstr "自定义提示信息" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "使用网络远程控制" @@ -5163,20 +5228,20 @@ msgstr "使用系统代理设置" msgid "Use volume normalisation" msgstr "使用音量标准化" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "已使用" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "用户 %1 没有 Grooveshark Anywhere 帐户" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "用户界面" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5198,12 +5263,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "可变比特率" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "群星" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "版本 %1" @@ -5216,7 +5281,7 @@ msgstr "查看" msgid "Visualization mode" msgstr "视觉效果模式" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "视觉效果" @@ -5224,11 +5289,15 @@ msgstr "视觉效果" msgid "Visualizations Settings" msgstr "视觉效果设置" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "Vk.com" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "语音活动检测" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "音量 %1%" @@ -5246,11 +5315,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "关闭播放列表标签时,提示我" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5258,7 +5327,7 @@ msgstr "Wav" msgid "Website" msgstr "网站" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "周" @@ -5284,32 +5353,32 @@ msgstr "为什么不试试…" msgid "Wide band (WB)" msgstr "宽带 (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii 遥控器 %1:活动" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii 遥控器 %1:已连接" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii 遥控器 %1:电池告急(%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii 遥控器 %1:不活动" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii 遥控器 %1:已断开" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii 遥控器 %1:电池电量低(%2%)" @@ -5330,7 +5399,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media 音频" @@ -5338,25 +5407,25 @@ msgstr "Windows Media 音频" msgid "Without cover:" msgstr "无封面:" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "您想要把此专辑的其它歌曲移动到 群星?" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "您要立即做个全部重新扫描?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "所有统计信息写入至歌曲文件" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "用户名密码错误。" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5368,11 +5437,11 @@ msgstr "年份" msgid "Year - Album" msgstr "年份 - 专辑" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "年" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "昨天" @@ -5380,13 +5449,13 @@ msgstr "昨天" msgid "You are about to download the following albums" msgstr "您即将下载以下专辑" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "您正试图从收藏夹中删除播放列表 %1 ,确定要这样做吗?" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5396,12 +5465,12 @@ msgstr "您正试图删除未收藏的播放列表: 此播放列表将被真正 msgid "You are not signed in." msgstr "您未登录。" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "您已经作为%1登录。" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "您已经登录。" @@ -5409,13 +5478,13 @@ msgstr "您已经登录。" msgid "You can change the way the songs in the library are organised." msgstr "您可以更改媒体库中音乐的组织形式。" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "您无需注册即可免费收听音乐,但是高级会员可以收听无广告的高音质内容。" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5425,13 +5494,6 @@ msgstr "您无需注册帐户即可收听 Magnatune 的音乐。 订购会员 msgid "You can listen to background streams at the same time as other music." msgstr "在聆听音乐的同时,您也可以同时后台收听其它流媒体。" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "您可以免费提交收听的音乐信息(scrobbling),但付费用户才能使用 Clementine 收听 Last.fm 提供的流媒体。" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "您可以使用Wii遥控器来控制 Clementine。参见 Clementine Wiki for more information。\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "您没有 Grooveshark Anywhere 帐户。" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "您没有Spotify付费账户。" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "您没有活动订阅" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "你不需要登录就可以搜索或聆听 SoundCloud 上的音乐。但是只有登录后才能获取您自己的播放列表和流" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "您已经登出了 Spotify,请在设置对话框中重新输入您的密码。" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "您已经登出了 Spotify,请重新输入您的密码。" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "您喜爱这个曲目" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "您需要在系统设置中开启\"控制您的电脑\"选项,允许Clementine使用全局快捷键。" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5476,17 +5552,11 @@ msgstr "您需要打开系统设置并开启\"\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/clementine/language/zh_TW/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: playlist/playlistlistview.cpp:39 +#: playlist/playlistlistview.cpp:37 msgid "" "\n" "\n" @@ -43,9 +43,9 @@ msgstr "天" msgid " kbps" msgstr " kbps" -#: ../bin/src/ui_playbacksettingspage.h:305 -#: ../bin/src/ui_playbacksettingspage.h:308 -#: ../bin/src/ui_playbacksettingspage.h:328 +#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:321 +#: ../bin/src/ui_playbacksettingspage.h:335 msgid " ms" msgstr " 毫秒" @@ -58,11 +58,16 @@ msgstr " pt" msgid " seconds" msgstr " 秒" -#: ../bin/src/ui_querysortpage.h:143 +#: ../bin/src/ui_querysortpage.h:144 msgid " songs" msgstr " 歌曲" -#: widgets/osd.cpp:193 +#: internet/vkservice.cpp:145 +#, qt-format +msgid "%1 (%2 songs)" +msgstr "" + +#: widgets/osd.cpp:190 #, qt-format msgid "%1 albums" msgstr "%1 專輯" @@ -72,12 +77,12 @@ msgstr "%1 專輯" msgid "%1 days" msgstr "%1 天" -#: core/utilities.cpp:131 +#: core/utilities.cpp:129 #, qt-format msgid "%1 days ago" msgstr "%1 天前" -#: podcasts/gpoddersync.cpp:79 +#: podcasts/gpoddersync.cpp:81 #, qt-format msgid "%1 on %2" msgstr "" @@ -87,48 +92,48 @@ msgstr "" msgid "%1 playlists (%2)" msgstr "%1 播放清單 (%2)" -#: playlist/playlistmanager.cpp:413 +#: playlist/playlistmanager.cpp:381 #, qt-format msgid "%1 selected of" msgstr "%1 選定" -#: devices/deviceview.cpp:123 +#: devices/deviceview.cpp:125 #, qt-format msgid "%1 song" msgstr "%1 歌曲" -#: devices/deviceview.cpp:125 +#: devices/deviceview.cpp:127 #, qt-format msgid "%1 songs" msgstr "%1 歌曲" -#: smartplaylists/searchpreview.cpp:133 +#: smartplaylists/searchpreview.cpp:132 #, qt-format msgid "%1 songs found" msgstr "%1 首歌曲找到" -#: smartplaylists/searchpreview.cpp:130 +#: smartplaylists/searchpreview.cpp:128 #, qt-format msgid "%1 songs found (showing %2)" msgstr "發現%1首歌(顯示%2)" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 #, qt-format msgid "%1 tracks" msgstr "%1 歌曲" -#: ui/albumcovermanager.cpp:459 +#: ui/albumcovermanager.cpp:466 #, qt-format msgid "%1 transferred" msgstr "傳送%1" -#: widgets/osd.cpp:243 widgets/osd.cpp:248 widgets/osd.cpp:253 -#: widgets/osd.cpp:258 widgets/osd.cpp:263 widgets/osd.cpp:268 +#: widgets/osd.cpp:237 widgets/osd.cpp:243 widgets/osd.cpp:249 +#: widgets/osd.cpp:255 widgets/osd.cpp:261 widgets/osd.cpp:268 #, qt-format msgid "%1: Wiimotedev module" msgstr "%1: Wiimotedev 模組" -#: songinfo/lastfmtrackinfoprovider.cpp:94 +#: songinfo/lastfmtrackinfoprovider.cpp:95 #, qt-format msgid "%L1 other listeners" msgstr "%L1其他聽眾" @@ -142,18 +147,21 @@ msgstr "%L1總共播放" msgid "%filename%" msgstr "%檔案名稱%" -#: transcoder/transcodedialog.cpp:207 +#: transcoder/transcodedialog.cpp:205 #, c-format, qt-plural-format +msgctxt "" msgid "%n failed" msgstr "%n 失敗的" -#: transcoder/transcodedialog.cpp:202 +#: transcoder/transcodedialog.cpp:200 #, c-format, qt-plural-format +msgctxt "" msgid "%n finished" msgstr "%n 完成的" -#: transcoder/transcodedialog.cpp:197 +#: transcoder/transcodedialog.cpp:194 #, c-format, qt-plural-format +msgctxt "" msgid "%n remaining" msgstr "%n 剩餘的" @@ -165,24 +173,24 @@ msgstr "對齊文字(&A)" msgid "&Center" msgstr "中間(&C)" -#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:188 msgid "&Custom" msgstr "自訂(&C)" -#: ../bin/src/ui_mainwindow.h:735 +#: ../bin/src/ui_mainwindow.h:717 msgid "&Extras" msgstr "外掛程式(&E)" -#: ../bin/src/ui_mainwindow.h:734 +#: ../bin/src/ui_mainwindow.h:716 msgid "&Help" msgstr "幫助(&H)" -#: playlist/playlistheader.cpp:70 +#: playlist/playlistheader.cpp:73 #, qt-format msgid "&Hide %1" msgstr "隱藏 %1" -#: playlist/playlistheader.cpp:33 +#: playlist/playlistheader.cpp:32 msgid "&Hide..." msgstr "隱藏(&H)..." @@ -190,23 +198,23 @@ msgstr "隱藏(&H)..." msgid "&Left" msgstr "左邊(&L)" -#: ../bin/src/ui_mainwindow.h:732 +#: ../bin/src/ui_mainwindow.h:714 msgid "&Music" msgstr "音樂(&M)" -#: ../bin/src/ui_globalshortcutssettingspage.h:176 +#: ../bin/src/ui_globalshortcutssettingspage.h:186 msgid "&None" msgstr "無(&N)" -#: ../bin/src/ui_mainwindow.h:733 +#: ../bin/src/ui_mainwindow.h:715 msgid "&Playlist" msgstr "播放清單(&P)" -#: ../bin/src/ui_mainwindow.h:660 +#: ../bin/src/ui_mainwindow.h:644 msgid "&Quit" msgstr "結束(&Q)" -#: ../bin/src/ui_mainwindow.h:698 +#: ../bin/src/ui_mainwindow.h:680 msgid "&Repeat mode" msgstr "循環播放模式(&R)" @@ -214,23 +222,23 @@ msgstr "循環播放模式(&R)" msgid "&Right" msgstr "右邊(&R)" -#: ../bin/src/ui_mainwindow.h:697 +#: ../bin/src/ui_mainwindow.h:679 msgid "&Shuffle mode" msgstr "隨機播放模式(&S)" -#: playlist/playlistheader.cpp:34 +#: playlist/playlistheader.cpp:33 msgid "&Stretch columns to fit window" msgstr "將列伸展至視窗邊界(&S)" -#: ../bin/src/ui_mainwindow.h:736 +#: ../bin/src/ui_mainwindow.h:718 msgid "&Tools" msgstr "工具(&T)" -#: ui/edittagdialog.cpp:48 +#: ui/edittagdialog.cpp:49 msgid "(different across multiple songs)" msgstr "(在多首歌曲的差異)" -#: ui/about.cpp:77 +#: ui/about.cpp:83 msgid "...and all the Amarok contributors" msgstr "...和所有的 Amarok 的貢獻者" @@ -250,14 +258,10 @@ msgstr "" msgid "1 day" msgstr "1 天" -#: playlist/playlistmanager.cpp:419 +#: playlist/playlistmanager.cpp:387 msgid "1 track" msgstr "1 歌曲" -#: ../bin/src/ui_networkremotesettingspage.h:201 -msgid "127.0.0.1" -msgstr "" - #: ../bin/src/ui_magnatunedownloaddialog.h:143 #: ../bin/src/ui_magnatunesettingspage.h:174 msgid "128k MP3" @@ -267,7 +271,7 @@ msgstr "128k MP3" msgid "40%" msgstr "" -#: library/library.cpp:60 +#: library/library.cpp:62 msgid "50 random tracks" msgstr "50 隨機歌曲" @@ -275,12 +279,6 @@ msgstr "50 隨機歌曲" msgid "Upgrade to Premium now" msgstr "現在就升級至進階" -#: ../bin/src/ui_ubuntuonesettingspage.h:133 -msgid "" -"Create a new account or reset " -"your password" -msgstr "" - #: ../bin/src/ui_librarysettingspage.h:195 msgid "" "

If not checked, Clementine will try to save your " @@ -291,6 +289,17 @@ msgid "" "music players might not be able to read them.

" msgstr "" +#: ../bin/src/ui_libraryfilterwidget.h:97 +#, qt-format +msgid "" +"

Prefix a word with a field name to limit the search to" +" that field, e.g. artist:Bode searches the library for all " +"artists that contain the word Bode.

Available fields: %1.

" +msgstr "" + #: ../bin/src/ui_librarysettingspage.h:199 msgid "" "

This will write songs' ratings and statistics into " @@ -299,38 +308,38 @@ msgid "" "activated.

" msgstr "" -#: ../bin/src/ui_organisedialog.h:199 +#: ../bin/src/ui_organisedialog.h:245 msgid "" "

Tokens start with %, for example: %artist %album %title

\n" "\n" "

If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.

" msgstr "

Tokens 由%開頭, 例如:%artist %album %title

\n\n

若您將一段文字的前後用大括號括起來,那段文字將在token是空白的情況下被隱藏。" -#: internet/groovesharksettingspage.cpp:111 +#: internet/groovesharksettingspage.cpp:119 msgid "A Grooveshark Anywhere account is required." msgstr "必須為Grooveshark Anywhere會員。" -#: internet/spotifysettingspage.cpp:162 +#: internet/spotifysettingspage.cpp:163 msgid "A Spotify Premium account is required." msgstr "必須為 Spotify 的高級帳戶。" -#: ../bin/src/ui_networkremotesettingspage.h:189 +#: ../bin/src/ui_networkremotesettingspage.h:190 msgid "A client can connect only, if the correct code was entered." msgstr "" -#: smartplaylists/wizard.cpp:78 +#: smartplaylists/wizard.cpp:74 msgid "" "A smart playlist is a dynamic list of songs that come from your library. " "There are different types of smart playlist that offer different ways of " "selecting songs." msgstr "智慧型播放清單是一動態的歌曲清單,其歌曲來源是您的音樂庫。有不同類型的智慧型播放清單,其提供不同的選擇歌曲方式。" -#: smartplaylists/querywizardplugin.cpp:153 +#: smartplaylists/querywizardplugin.cpp:157 msgid "" "A song will be included in the playlist if it matches these conditions." msgstr "一首歌曲將被包括在播放清單中,如果這些條件是符合的。" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "A-Z" msgstr "A-Z" @@ -350,36 +359,35 @@ msgstr "AAC 32k" msgid "AAC 64k" msgstr "AAC 64k" -#: core/song.cpp:348 +#: core/song.cpp:395 msgid "AIFF" msgstr "AIFF" -#: widgets/nowplayingwidget.cpp:127 +#: widgets/nowplayingwidget.cpp:131 msgid "ALL GLORY TO THE HYPNOTOAD" msgstr "所有的榮耀歸於大蟾蜍" -#: ui/albumcovermanager.cpp:108 ui/albumcoversearcher.cpp:166 +#: ui/albumcovermanager.cpp:111 ui/albumcoversearcher.cpp:158 msgid "Abort" msgstr "" -#: ui/about.cpp:32 +#: ui/about.cpp:30 #, qt-format msgid "About %1" msgstr "關於 %1" -#: ../bin/src/ui_mainwindow.h:681 +#: ../bin/src/ui_mainwindow.h:663 msgid "About Clementine..." msgstr "關於 Clementine..." -#: ../bin/src/ui_mainwindow.h:716 +#: ../bin/src/ui_mainwindow.h:698 msgid "About Qt..." msgstr "關於 Qt..." -#: ../bin/src/ui_groovesharksettingspage.h:113 +#: ../bin/src/ui_groovesharksettingspage.h:141 #: ../bin/src/ui_magnatunesettingspage.h:155 -#: ../bin/src/ui_spotifysettingspage.h:208 +#: ../bin/src/ui_spotifysettingspage.h:208 ../bin/src/ui_vksettingspage.h:211 #: ../bin/src/ui_lastfmsettingspage.h:151 -#: ../bin/src/ui_ubuntuonesettingspage.h:129 msgid "Account details" msgstr "帳戶詳情" @@ -391,11 +399,15 @@ msgstr "帳戶詳情(高級)" msgid "Action" msgstr "功能" -#: wiimotedev/wiimotesettingspage.cpp:98 +#: wiimotedev/wiimotesettingspage.cpp:96 msgid "Active/deactive Wiiremote" msgstr "開啟/關閉 Wii 遙控器" -#: podcasts/addpodcastdialog.cpp:56 +#: internet/soundcloudservice.cpp:124 +msgid "Activities stream" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:59 msgid "Add Podcast" msgstr "加入 Podcast" @@ -411,39 +423,39 @@ msgstr "如果通知類型支援的話新增一欄" msgid "Add action" msgstr "加入功能" -#: internet/savedradio.cpp:103 +#: internet/savedradio.cpp:106 msgid "Add another stream..." msgstr "加入其它的網路串流" -#: library/librarysettingspage.cpp:68 +#: library/librarysettingspage.cpp:67 msgid "Add directory..." msgstr "加入目錄..." -#: ui/mainwindow.cpp:1623 +#: ui/mainwindow.cpp:1797 msgid "Add file" msgstr "加入檔案" -#: ../bin/src/ui_mainwindow.h:727 +#: ../bin/src/ui_mainwindow.h:709 msgid "Add file to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:725 +#: ../bin/src/ui_mainwindow.h:707 msgid "Add file(s) to transcoder" msgstr "" -#: ../bin/src/ui_mainwindow.h:685 +#: ../bin/src/ui_mainwindow.h:667 msgid "Add file..." msgstr "加入檔案..." -#: transcoder/transcodedialog.cpp:219 +#: transcoder/transcodedialog.cpp:215 msgid "Add files to transcode" msgstr "加入檔案以轉碼" -#: transcoder/transcodedialog.cpp:281 ui/mainwindow.cpp:1651 ui/ripcd.cpp:386 +#: transcoder/transcodedialog.cpp:272 ui/mainwindow.cpp:1824 ui/ripcd.cpp:389 msgid "Add folder" msgstr "加入資料夾" -#: ../bin/src/ui_mainwindow.h:702 +#: ../bin/src/ui_mainwindow.h:684 msgid "Add folder..." msgstr "加入資料夾..." @@ -455,11 +467,11 @@ msgstr "新增資料夾..." msgid "Add podcast" msgstr "加入 Podcast" -#: podcasts/podcastservice.cpp:316 ../bin/src/ui_mainwindow.h:723 +#: podcasts/podcastservice.cpp:328 ../bin/src/ui_mainwindow.h:705 msgid "Add podcast..." msgstr "加入 Podcast..." -#: smartplaylists/searchtermwidget.cpp:341 +#: smartplaylists/searchtermwidget.cpp:352 msgid "Add search term" msgstr "加入搜尋字詞" @@ -523,6 +535,10 @@ msgstr "加入歌曲跳過次數" msgid "Add song title tag" msgstr "加入歌曲標題標籤" +#: internet/vkservice.cpp:314 +msgid "Add song to cache" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:404 msgid "Add song track tag" msgstr "加入歌曲曲目標籤" @@ -531,22 +547,34 @@ msgstr "加入歌曲曲目標籤" msgid "Add song year tag" msgstr "加入歌曲年份標籤" -#: ../bin/src/ui_mainwindow.h:687 +#: ../bin/src/ui_vksettingspage.h:216 +msgid "Add songs to \"My Music\" when the \"Love\" button is clicked" +msgstr "" + +#: ../bin/src/ui_mainwindow.h:669 msgid "Add stream..." msgstr "加入網路串流..." -#: internet/groovesharkservice.cpp:1087 +#: internet/groovesharkservice.cpp:1121 msgid "Add to Grooveshark favorites" msgstr "加入到 Grooveshark 最愛" -#: internet/groovesharkservice.cpp:1099 +#: internet/groovesharkservice.cpp:1136 msgid "Add to Grooveshark playlists" msgstr "加入到 Grooveshark 播放清單" -#: ui/mainwindow.cpp:1448 +#: internet/vkservice.cpp:306 +msgid "Add to My Music" +msgstr "" + +#: ui/mainwindow.cpp:1618 msgid "Add to another playlist" msgstr "加入到其他播放清單" +#: internet/vkservice.cpp:292 +msgid "Add to bookmarks" +msgstr "" + #: ../bin/src/ui_albumcovermanager.h:218 msgid "Add to playlist" msgstr "加入播放清單" @@ -555,6 +583,10 @@ msgstr "加入播放清單" msgid "Add to the queue" msgstr "加入到佇列中" +#: internet/vkservice.cpp:322 +msgid "Add user/group to bookmarks" +msgstr "" + #: ../bin/src/ui_wiimoteshortcutgrabber.h:123 msgid "Add wiimotedev action" msgstr "加入 wiimotedev 功能" @@ -584,15 +616,15 @@ msgstr "今天加入" msgid "Added within three months" msgstr "在三個月內加入" -#: internet/groovesharkservice.cpp:1394 +#: internet/groovesharkservice.cpp:1435 msgid "Adding song to My Music" msgstr "" -#: internet/groovesharkservice.cpp:1371 +#: internet/groovesharkservice.cpp:1412 msgid "Adding song to favorites" msgstr "將歌曲新增至最愛" -#: library/libraryfilterwidget.cpp:116 +#: library/libraryfilterwidget.cpp:142 msgid "Advanced grouping..." msgstr "進階歸類..." @@ -600,12 +632,12 @@ msgstr "進階歸類..." msgid "After " msgstr "" -#: ../bin/src/ui_organisedialog.h:190 +#: ../bin/src/ui_organisedialog.h:236 msgid "After copying..." msgstr "複製後 ..." -#: playlist/playlist.cpp:1211 ui/organisedialog.cpp:56 -#: ui/qtsystemtrayicon.cpp:252 ../bin/src/ui_groupbydialog.h:129 +#: playlist/playlist.cpp:1303 ui/organisedialog.cpp:61 +#: ui/qtsystemtrayicon.cpp:236 ../bin/src/ui_groupbydialog.h:129 #: ../bin/src/ui_groupbydialog.h:143 ../bin/src/ui_groupbydialog.h:157 #: ../bin/src/ui_albumcoversearcher.h:111 #: ../bin/src/ui_albumcoversearcher.h:113 ../bin/src/ui_edittagdialog.h:686 @@ -613,11 +645,11 @@ msgstr "複製後 ..." msgid "Album" msgstr "專輯" -#: ../bin/src/ui_playbacksettingspage.h:315 +#: ../bin/src/ui_playbacksettingspage.h:328 msgid "Album (ideal loudness for all tracks)" msgstr "專輯 (為所有歌曲取得理想音量)" -#: playlist/playlist.cpp:1217 ui/organisedialog.cpp:59 +#: playlist/playlist.cpp:1315 ui/organisedialog.cpp:64 #: ../bin/src/ui_groupbydialog.h:131 ../bin/src/ui_groupbydialog.h:145 #: ../bin/src/ui_groupbydialog.h:159 ../bin/src/ui_edittagdialog.h:688 msgid "Album artist" @@ -627,35 +659,36 @@ msgstr "專輯演出者" msgid "Album cover" msgstr "專輯封面" -#: internet/jamendoservice.cpp:415 +#: internet/jamendoservice.cpp:421 msgid "Album info on jamendo.com..." msgstr " jamendo.com上的專輯資訊..." -#: ui/albumcovermanager.cpp:134 +#: ui/albumcovermanager.cpp:135 msgid "Albums with covers" msgstr "有封面的專輯" -#: ui/albumcovermanager.cpp:135 +#: ui/albumcovermanager.cpp:136 msgid "Albums without covers" msgstr "無封面的專輯" -#: ui/mainwindow.cpp:160 +#: ui/mainwindow.cpp:161 msgid "All Files (*)" msgstr "所有檔案 (*)" -#: ../bin/src/ui_mainwindow.h:693 +#: ../bin/src/ui_mainwindow.h:675 +msgctxt "Label for button to enable/disable Hypnotoad background sound." msgid "All Glory to the Hypnotoad!" -msgstr "所有的榮耀歸於大蟾蜍" +msgstr "" -#: ui/albumcovermanager.cpp:133 +#: ui/albumcovermanager.cpp:134 msgid "All albums" msgstr "所有專輯" -#: ui/albumcovermanager.cpp:265 +#: ui/albumcovermanager.cpp:268 msgid "All artists" msgstr "所有演出者" -#: ui/albumcoverchoicecontroller.cpp:47 +#: ui/albumcoverchoicecontroller.cpp:48 msgid "All files (*)" msgstr "所有檔案 (*)" @@ -664,19 +697,19 @@ msgstr "所有檔案 (*)" msgid "All playlists (%1)" msgstr "所有播放清單 (%1)" -#: ui/about.cpp:74 +#: ui/about.cpp:79 msgid "All the translators" msgstr "所有翻譯者" -#: library/library.cpp:84 +#: library/library.cpp:98 msgid "All tracks" msgstr "所有曲目" -#: ../bin/src/ui_networkremotesettingspage.h:194 +#: ../bin/src/ui_networkremotesettingspage.h:195 msgid "Allow a client to download music from this computer." msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:196 +#: ../bin/src/ui_networkremotesettingspage.h:197 msgid "Allow downloads" msgstr "" @@ -701,30 +734,30 @@ msgstr "總是顯示主要視窗" msgid "Always start playing" msgstr "總是開始播放" -#: internet/spotifyblobdownloader.cpp:60 +#: internet/spotifyblobdownloader.cpp:65 msgid "" "An additional plugin is required to use Spotify in Clementine. Would you " "like to download and install it now?" msgstr "在 Clementine 中使用 Spotify 需要額外的插件。 \n您想要下載並安裝此插件嗎?" -#: devices/gpodloader.cpp:61 +#: devices/gpodloader.cpp:60 msgid "An error occurred loading the iTunes database" msgstr "讀取 iTunes 資料時發生錯誤" -#: ui/edittagdialog.cpp:663 +#: ui/edittagdialog.cpp:679 #, qt-format msgid "An error occurred writing metadata to '%1'" msgstr "寫入目標數據至「%1」時發生錯誤" -#: internet/subsonicsettingspage.cpp:103 +#: internet/subsonicsettingspage.cpp:102 msgid "An unspecified error occurred." msgstr "" -#: ui/about.cpp:78 +#: ui/about.cpp:84 msgid "And:" msgstr "以及:" -#: moodbar/moodbarrenderer.cpp:156 +#: moodbar/moodbarrenderer.cpp:171 msgid "Angry" msgstr "生氣" @@ -733,13 +766,13 @@ msgstr "生氣" msgid "Appearance" msgstr "外觀" -#: core/commandlineoptions.cpp:166 +#: core/commandlineoptions.cpp:161 msgid "Append files/URLs to the playlist" msgstr "附加檔案或網址到播放清單" -#: devices/deviceview.cpp:211 globalsearch/globalsearchview.cpp:433 -#: internet/internetservice.cpp:56 library/libraryview.cpp:367 -#: widgets/fileviewlist.cpp:32 +#: devices/deviceview.cpp:216 globalsearch/globalsearchview.cpp:452 +#: internet/internetservice.cpp:53 library/libraryview.cpp:370 +#: widgets/fileviewlist.cpp:31 msgid "Append to current playlist" msgstr "附加到目前的播放清單" @@ -747,52 +780,47 @@ msgstr "附加到目前的播放清單" msgid "Append to the playlist" msgstr "附加到播放清單" -#: ../bin/src/ui_playbacksettingspage.h:318 +#: ../bin/src/ui_playbacksettingspage.h:331 msgid "Apply compression to prevent clipping" msgstr "使用壓縮,以防止截波失真" -#: ui/equalizer.cpp:201 +#: ui/equalizer.cpp:216 #, qt-format msgid "Are you sure you want to delete the \"%1\" preset?" msgstr "您確定您想要刪除預設的「%1」嗎?" -#: internet/groovesharkservice.cpp:1292 +#: internet/groovesharkservice.cpp:1334 msgid "Are you sure you want to delete this playlist?" msgstr "您確定要刪除這個播放清單?" -#: ui/edittagdialog.cpp:769 +#: ui/edittagdialog.cpp:785 msgid "Are you sure you want to reset this song's statistics?" msgstr "您確定要重置歌曲的統計嗎?" -#: library/librarysettingspage.cpp:152 +#: library/librarysettingspage.cpp:155 msgid "" "Are you sure you want to write song's statistics into song's file for all " "the songs of your library?" msgstr "" -#: playlist/playlist.cpp:1210 ui/organisedialog.cpp:57 -#: ui/qtsystemtrayicon.cpp:250 ../bin/src/ui_groupbydialog.h:130 +#: playlist/playlist.cpp:1301 ui/organisedialog.cpp:62 +#: ui/qtsystemtrayicon.cpp:234 ../bin/src/ui_groupbydialog.h:130 #: ../bin/src/ui_groupbydialog.h:144 ../bin/src/ui_groupbydialog.h:158 #: ../bin/src/ui_albumcoversearcher.h:107 #: ../bin/src/ui_albumcoversearcher.h:109 ../bin/src/ui_edittagdialog.h:684 -#: ../bin/src/ui_trackselectiondialog.h:210 -#: ../bin/src/ui_lastfmstationdialog.h:96 ../bin/src/ui_ripcd.h:316 +#: ../bin/src/ui_trackselectiondialog.h:210 ../bin/src/ui_ripcd.h:316 msgid "Artist" msgstr "演出者" -#: ui/mainwindow.cpp:248 +#: ui/mainwindow.cpp:245 msgid "Artist info" msgstr "演出者" -#: internet/lastfmservice.cpp:208 -msgid "Artist radio" -msgstr "藝術家電台" - -#: songinfo/echonesttags.cpp:59 +#: songinfo/echonesttags.cpp:61 msgid "Artist tags" msgstr "演出者標籤" -#: ui/organisedialog.cpp:58 +#: ui/organisedialog.cpp:63 msgid "Artist's initial" msgstr "演唱者簽署" @@ -800,9 +828,13 @@ msgstr "演唱者簽署" msgid "Audio format" msgstr "音頻格式" -#: internet/digitallyimportedsettingspage.cpp:82 -#: internet/magnatunesettingspage.cpp:113 internet/lastfmservice.cpp:427 -#: internet/lastfmsettingspage.cpp:84 internet/ubuntuonesettingspage.cpp:75 +#: ../bin/src/ui_playbacksettingspage.h:332 +msgid "Audio output" +msgstr "" + +#: internet/digitallyimportedsettingspage.cpp:80 +#: internet/magnatunesettingspage.cpp:112 internet/lastfmservice.cpp:222 +#: internet/lastfmsettingspage.cpp:80 msgid "Authentication failed" msgstr "認證失敗" @@ -810,7 +842,7 @@ msgstr "認證失敗" msgid "Author" msgstr "作者" -#: ui/about.cpp:65 +#: ui/about.cpp:67 msgid "Authors" msgstr "作者" @@ -826,7 +858,7 @@ msgstr "自動更新" msgid "Automatically open single categories in the library tree" msgstr "自動開啟音樂庫中的單一類型" -#: widgets/freespacebar.cpp:45 +#: widgets/freespacebar.cpp:44 msgid "Available" msgstr "可用的" @@ -834,15 +866,15 @@ msgstr "可用的" msgid "Average bitrate" msgstr "平均位元率" -#: covers/coversearchstatisticsdialog.cpp:70 +#: covers/coversearchstatisticsdialog.cpp:67 msgid "Average image size" msgstr "平均圖片大小" -#: podcasts/addpodcastdialog.cpp:80 +#: podcasts/addpodcastdialog.cpp:84 msgid "BBC Podcasts" msgstr "BBC Podcasts" -#: playlist/playlist.cpp:1228 ui/organisedialog.cpp:65 +#: playlist/playlist.cpp:1335 ui/organisedialog.cpp:70 #: ../bin/src/ui_edittagdialog.h:668 msgid "BPM" msgstr "BPM" @@ -863,7 +895,7 @@ msgstr "背景圖片" msgid "Background opacity" msgstr "背景不透明" -#: core/database.cpp:644 +#: core/database.cpp:640 msgid "Backing up database" msgstr "備份資料庫" @@ -871,11 +903,7 @@ msgstr "備份資料庫" msgid "Balance" msgstr "" -#: ../bin/src/ui_mainwindow.h:666 -msgid "Ban" -msgstr "禁止" - -#: analyzers/baranalyzer.cpp:19 +#: analyzers/baranalyzer.cpp:20 msgid "Bar analyzer" msgstr "條狀分析儀" @@ -895,18 +923,17 @@ msgstr "行為" msgid "Best" msgstr "最佳" -#: songinfo/echonestbiographies.cpp:83 +#: songinfo/echonestbiographies.cpp:84 #, qt-format msgid "Biography from %1" msgstr "%1的傳記" -#: playlist/playlist.cpp:1229 ../bin/src/ui_edittagdialog.h:670 +#: playlist/playlist.cpp:1337 ../bin/src/ui_edittagdialog.h:670 msgid "Bit rate" msgstr "位元率" -#: ui/organisedialog.cpp:70 ../bin/src/ui_groupbydialog.h:137 -#: ../bin/src/ui_groupbydialog.h:151 ../bin/src/ui_groupbydialog.h:165 -#: ../bin/src/ui_transcoderoptionsaac.h:129 +#: ../bin/src/ui_groupbydialog.h:137 ../bin/src/ui_groupbydialog.h:151 +#: ../bin/src/ui_groupbydialog.h:165 ../bin/src/ui_transcoderoptionsaac.h:129 #: ../bin/src/ui_transcoderoptionsmp3.h:194 #: ../bin/src/ui_transcoderoptionsopus.h:80 #: ../bin/src/ui_transcoderoptionsspeex.h:218 @@ -914,7 +941,12 @@ msgstr "位元率" msgid "Bitrate" msgstr "位元率" -#: analyzers/blockanalyzer.cpp:22 +#: ui/organisedialog.cpp:75 +msgctxt "Refers to bitrate in file organise dialog." +msgid "Bitrate" +msgstr "" + +#: analyzers/blockanalyzer.cpp:23 msgid "Block analyzer" msgstr "區塊分析儀" @@ -930,7 +962,7 @@ msgstr "" msgid "Body" msgstr "主體" -#: analyzers/boomanalyzer.cpp:8 +#: analyzers/boomanalyzer.cpp:9 msgid "Boom analyzer" msgstr "聲響分析儀" @@ -944,11 +976,11 @@ msgstr "" msgid "Browse..." msgstr "瀏覽..." -#: ../bin/src/ui_playbacksettingspage.h:327 +#: ../bin/src/ui_playbacksettingspage.h:334 msgid "Buffer duration" msgstr "" -#: engines/gstengine.cpp:784 +#: engines/gstengine.cpp:862 msgid "Buffering" msgstr "緩衝" @@ -960,43 +992,66 @@ msgstr "" msgid "Buttons" msgstr "按鈕" -#: core/song.cpp:351 +#: ../bin/src/ui_groovesharksettingspage.h:139 +msgid "By default, Grooveshark sorts songs on date added" +msgstr "" + +#: core/song.cpp:401 msgid "CDDA" msgstr "CDDA" -#: library/library.cpp:100 +#: library/library.cpp:118 msgid "CUE sheet support" msgstr "CUE 表單支援" -#: internet/spotifyblobdownloader.cpp:44 +#: ../bin/src/ui_vksettingspage.h:220 +msgid "Cache path:" +msgstr "" + +#: ../bin/src/ui_vksettingspage.h:218 +msgid "Caching" +msgstr "" + +#: internet/vkmusiccache.cpp:121 +#, qt-format +msgid "Caching %1" +msgstr "" + +#: internet/spotifyblobdownloader.cpp:50 msgid "Cancel" msgstr "取消" +#: internet/vkservice.cpp:622 +msgid "" +"Captcha is needed.\n" +"Try to login into Vk.com with your browser,to fix this problem." +msgstr "" + #: ../bin/src/ui_edittagdialog.h:664 msgid "Change cover art" msgstr "更換封面圖片" -#: songinfo/songinfotextview.cpp:83 +#: songinfo/songinfotextview.cpp:73 msgid "Change font size..." msgstr "變更字型大小..." -#: core/globalshortcuts.cpp:62 +#: core/globalshortcuts.cpp:69 msgid "Change repeat mode" msgstr "更改重複模式" -#: ../bin/src/ui_globalshortcutssettingspage.h:179 +#: ../bin/src/ui_globalshortcutssettingspage.h:189 msgid "Change shortcut..." msgstr "變更快速鍵..." -#: core/globalshortcuts.cpp:61 +#: core/globalshortcuts.cpp:67 msgid "Change shuffle mode" msgstr "切換隨機模式" -#: core/commandlineoptions.cpp:172 +#: core/commandlineoptions.cpp:166 msgid "Change the language" msgstr "變更語言" -#: ../bin/src/ui_playbacksettingspage.h:330 +#: ../bin/src/ui_playbacksettingspage.h:338 msgid "" "Changing mono playback preference will be effective for the next playing " "songs" @@ -1006,15 +1061,19 @@ msgstr "" msgid "Check for new episodes" msgstr "檢查是否有新的片斷內容" -#: ui/mainwindow.cpp:602 +#: ui/mainwindow.cpp:702 msgid "Check for updates..." msgstr "檢查更新..." -#: smartplaylists/wizard.cpp:86 +#: internet/vksettingspage.cpp:97 +msgid "Choose Vk.com cache directory" +msgstr "" + +#: smartplaylists/wizard.cpp:84 msgid "Choose a name for your smart playlist" msgstr "為您智慧型播放清單選擇一個名稱" -#: ../bin/src/ui_playbacksettingspage.h:323 +#: engines/gstengine.cpp:883 msgid "Choose automatically" msgstr "自動選擇" @@ -1030,11 +1089,11 @@ msgstr "選擇字體..." msgid "Choose from the list" msgstr "從清單中選擇" -#: smartplaylists/querywizardplugin.cpp:155 +#: smartplaylists/querywizardplugin.cpp:161 msgid "Choose how the playlist is sorted and how many songs it will contain." msgstr "選擇此播放清單將要如何分類以及擁有多少歌曲" -#: podcasts/podcastsettingspage.cpp:132 +#: podcasts/podcastsettingspage.cpp:133 msgid "Choose podcast download directory" msgstr "選擇 podcast 下載目錄" @@ -1043,7 +1102,7 @@ msgid "" "Choose the websites you want Clementine to use when searching for lyrics." msgstr "選擇您想要 Clementine 使用來搜尋歌詞的網站。" -#: ui/equalizer.cpp:115 +#: ui/equalizer.cpp:112 msgid "Classical" msgstr "古典" @@ -1051,17 +1110,17 @@ msgstr "古典" msgid "Cleaning up" msgstr "清除" -#: transcoder/transcodedialog.cpp:62 widgets/lineedit.cpp:42 +#: transcoder/transcodedialog.cpp:60 widgets/lineedit.cpp:41 #: ../bin/src/ui_queuemanager.h:139 msgid "Clear" msgstr "清除" -#: ../bin/src/ui_mainwindow.h:668 ../bin/src/ui_mainwindow.h:670 +#: ../bin/src/ui_mainwindow.h:650 ../bin/src/ui_mainwindow.h:652 msgid "Clear playlist" msgstr "清除播放清單" -#: smartplaylists/searchtermwidget.cpp:329 ../bin/src/ui_mainwindow.h:651 -#: visualisations/visualisationcontainer.cpp:211 +#: smartplaylists/searchtermwidget.cpp:341 ../bin/src/ui_mainwindow.h:635 +#: visualisations/visualisationcontainer.cpp:215 #: ../bin/src/ui_visualisationoverlay.h:183 msgid "Clementine" msgstr "Clementine" @@ -1074,8 +1133,8 @@ msgstr "Clementine 錯誤" msgid "Clementine Orange" msgstr "Clementine 的橘黃色" -#: visualisations/visualisationcontainer.cpp:77 -#: visualisations/visualisationcontainer.cpp:151 +#: visualisations/visualisationcontainer.cpp:76 +#: visualisations/visualisationcontainer.cpp:158 msgid "Clementine Visualization" msgstr "Clementine的視覺化效果" @@ -1097,8 +1156,8 @@ msgstr "" msgid "Clementine can play music that you have uploaded to Google Drive" msgstr "Clementine 可以播放您已經上傳到Google 雲端硬碟的音樂" -#: ../bin/src/ui_ubuntuonesettingspage.h:128 -msgid "Clementine can play music that you have uploaded to Ubuntu One" +#: ../bin/src/ui_skydrivesettingspage.h:104 +msgid "Clementine can play music that you have uploaded to OneDrive" msgstr "" #: ../bin/src/ui_notificationssettingspage.h:431 @@ -1112,20 +1171,13 @@ msgid "" "an account." msgstr "Clementine 可以和您的其它電腦及 podcast 應用程式同步訂閱清單。建立一個帳戶。" -#: visualisations/projectmvisualisation.cpp:133 +#: visualisations/projectmvisualisation.cpp:132 msgid "" "Clementine could not load any projectM visualisations. Check that you have " "installed Clementine properly." msgstr "Clementine 無法載入任何 ProjectM 視覺化工具。\n請檢查是否正確安裝 Clementine。" -#: internet/lastfmsettingspage.cpp:110 -msgid "" -"Clementine couldn't fetch your subscription status since there are problems " -"with your connection. Played tracks will be cached and sent later to " -"Last.fm." -msgstr "Clementine 無法擷取的訂閱情形自從連結問題出現。被播放的音軌將會被保留快取並稍後送至Last.fm。" - -#: widgets/prettyimage.cpp:201 +#: widgets/prettyimage.cpp:200 msgid "Clementine image viewer" msgstr "Clementine 圖片檢視器" @@ -1137,11 +1189,11 @@ msgstr "Clementine 無法搜尋到任何符合此檔案的結果" msgid "Clementine will find music in:" msgstr "" -#: library/libraryview.cpp:349 +#: library/libraryview.cpp:351 msgid "Click here to add some music" msgstr "點擊此處加入一些音樂" -#: playlist/playlisttabbar.cpp:293 +#: playlist/playlisttabbar.cpp:286 msgid "" "Click here to favorite this playlist so it will be saved and remain " "accessible through the \"Playlists\" panel on the left side bar" @@ -1151,7 +1203,10 @@ msgstr "" msgid "Click to toggle between remaining time and total time" msgstr "點擊以切換剩餘時間/全部時間" -#: ../bin/src/ui_dropboxsettingspage.h:106 ../bin/src/ui_boxsettingspage.h:106 +#: ../bin/src/ui_soundcloudsettingspage.h:107 +#: ../bin/src/ui_dropboxsettingspage.h:106 +#: ../bin/src/ui_skydrivesettingspage.h:106 +#: ../bin/src/ui_boxsettingspage.h:106 #: ../bin/src/ui_googledrivesettingspage.h:106 msgid "" "Clicking the Login button will open a web browser. You should return to " @@ -1166,19 +1221,19 @@ msgstr "關閉" msgid "Close playlist" msgstr "" -#: visualisations/visualisationcontainer.cpp:127 +#: visualisations/visualisationcontainer.cpp:135 msgid "Close visualization" msgstr "關閉視覺化效果" -#: internet/magnatunedownloaddialog.cpp:280 +#: internet/magnatunedownloaddialog.cpp:304 msgid "Closing this window will cancel the download." msgstr "關閉此視窗將取消下載." -#: ui/albumcovermanager.cpp:216 +#: ui/albumcovermanager.cpp:219 msgid "Closing this window will stop searching for album covers." msgstr "關閉此視窗將停止搜尋專輯封面." -#: ui/equalizer.cpp:116 +#: ui/equalizer.cpp:114 msgid "Club" msgstr "俱樂部" @@ -1186,73 +1241,78 @@ msgstr "俱樂部" msgid "Colors" msgstr "顏色" -#: core/commandlineoptions.cpp:175 +#: core/commandlineoptions.cpp:169 msgid "Comma separated list of class:level, level is 0-3" msgstr "用逗號化分類別清單:等級為0-3" -#: playlist/playlist.cpp:1238 smartplaylists/searchterm.cpp:288 -#: ui/organisedialog.cpp:68 ../bin/src/ui_edittagdialog.h:694 +#: playlist/playlist.cpp:1354 smartplaylists/searchterm.cpp:353 +#: ui/organisedialog.cpp:73 ../bin/src/ui_edittagdialog.h:694 msgid "Comment" msgstr "評論" +#: internet/vkservice.cpp:151 +msgid "Community Radio" +msgstr "" + #: ../bin/src/ui_edittagdialog.h:693 msgid "Complete tags automatically" msgstr "標籤完全自動分類" -#: ../bin/src/ui_mainwindow.h:720 +#: ../bin/src/ui_mainwindow.h:702 msgid "Complete tags automatically..." msgstr "標籤完全自動分類..." -#: playlist/playlist.cpp:1218 ui/organisedialog.cpp:60 +#: playlist/playlist.cpp:1317 ui/organisedialog.cpp:65 #: ../bin/src/ui_groupbydialog.h:132 ../bin/src/ui_groupbydialog.h:146 #: ../bin/src/ui_groupbydialog.h:160 ../bin/src/ui_edittagdialog.h:689 msgid "Composer" msgstr "作曲家" -#: internet/searchboxwidget.cpp:42 +#: internet/searchboxwidget.cpp:41 #, qt-format msgid "Configure %1..." msgstr "" -#: internet/groovesharkservice.cpp:552 +#: internet/groovesharkservice.cpp:560 msgid "Configure Grooveshark..." msgstr "設定 Grooveshark..." -#: internet/lastfmservice.cpp:126 -msgid "Configure Last.fm..." -msgstr "設定 Last.fm..." - -#: internet/magnatuneservice.cpp:280 +#: internet/magnatuneservice.cpp:282 msgid "Configure Magnatune..." msgstr "設定 Magnatune ..." -#: ../bin/src/ui_globalshortcutssettingspage.h:167 +#: ../bin/src/ui_globalshortcutssettingspage.h:176 msgid "Configure Shortcuts" msgstr "設定快速鍵" -#: internet/spotifyservice.cpp:526 internet/spotifyservice.cpp:538 +#: internet/spotifyservice.cpp:545 internet/spotifyservice.cpp:556 msgid "Configure Spotify..." msgstr "設定 Spotify..." -#: internet/subsonicservice.cpp:96 +#: internet/subsonicservice.cpp:90 msgid "Configure Subsonic..." msgstr "" -#: globalsearch/globalsearchview.cpp:140 globalsearch/globalsearchview.cpp:446 +#: internet/vkservice.cpp:335 +msgid "Configure Vk.com..." +msgstr "" + +#: globalsearch/globalsearchview.cpp:149 globalsearch/globalsearchview.cpp:472 msgid "Configure global search..." msgstr "" -#: ui/mainwindow.cpp:483 +#: ui/mainwindow.cpp:553 msgid "Configure library..." msgstr "設定音樂庫" -#: podcasts/addpodcastdialog.cpp:67 podcasts/podcastservice.cpp:350 +#: podcasts/addpodcastdialog.cpp:71 podcasts/podcastservice.cpp:362 msgid "Configure podcasts..." msgstr "設定 podcasts..." -#: internet/digitallyimportedservicebase.cpp:186 +#: internet/cloudfileservice.cpp:85 +#: internet/digitallyimportedservicebase.cpp:178 #: ../bin/src/ui_globalsearchsettingspage.h:150 -#: internet/googledriveservice.cpp:193 +#: internet/googledriveservice.cpp:198 msgid "Configure..." msgstr "設定..." @@ -1260,11 +1320,11 @@ msgstr "設定..." msgid "Connect Wii Remotes using active/deactive action" msgstr "連結 Wii 遙控器可以使用「作用」/「取消作用」的行動" -#: devices/devicemanager.cpp:323 devices/devicemanager.cpp:327 +#: devices/devicemanager.cpp:321 devices/devicemanager.cpp:326 msgid "Connect device" msgstr "連接裝置" -#: internet/spotifyservice.cpp:253 +#: internet/spotifyservice.cpp:266 msgid "Connecting to Spotify" msgstr "連接到 Spotify" @@ -1274,12 +1334,16 @@ msgid "" "http://localhost:4040/" msgstr "" -#: internet/subsonicsettingspage.cpp:117 +#: internet/subsonicsettingspage.cpp:119 msgid "" "Connection timed out, check server URL. Example: http://localhost:4040/" msgstr "" -#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:696 +#: internet/vkservice.cpp:961 +msgid "Connection trouble or audio is disabled by owner" +msgstr "" + +#: ../bin/src/ui_console.h:80 ../bin/src/ui_mainwindow.h:678 msgid "Console" msgstr "" @@ -1295,17 +1359,21 @@ msgstr "轉換所有音樂" msgid "Convert any music that the device can't play" msgstr "轉換任何裝置無法播放的音樂" -#: internet/groovesharkservice.cpp:1172 +#: internet/vkservice.cpp:318 +msgid "Copy share url to clipboard" +msgstr "" + +#: internet/groovesharkservice.cpp:1210 msgid "Copy to clipboard" msgstr "複製到剪貼簿" -#: library/libraryview.cpp:389 podcasts/podcastservice.cpp:336 -#: ui/mainwindow.cpp:517 widgets/fileviewlist.cpp:44 +#: library/libraryview.cpp:400 podcasts/podcastservice.cpp:349 +#: ui/mainwindow.cpp:602 widgets/fileviewlist.cpp:43 msgid "Copy to device..." msgstr "複製到裝置..." -#: devices/deviceview.cpp:218 ui/mainwindow.cpp:514 -#: widgets/fileviewlist.cpp:39 +#: devices/deviceview.cpp:225 ui/mainwindow.cpp:592 +#: widgets/fileviewlist.cpp:38 msgid "Copy to library..." msgstr "複製到音樂庫" @@ -1313,156 +1381,152 @@ msgstr "複製到音樂庫" msgid "Copyright" msgstr "著作權" -#: internet/subsonicsettingspage.cpp:81 +#: internet/subsonicsettingspage.cpp:75 msgid "" "Could not connect to Subsonic, check server URL. Example: " "http://localhost:4040/" msgstr "" -#: transcoder/transcoder.cpp:64 +#: transcoder/transcoder.cpp:57 #, qt-format msgid "" "Could not create the GStreamer element \"%1\" - make sure you have all the " "required GStreamer plugins installed" msgstr "無法建立 GStreamer 元件「%1」- 請確認您安裝了所有需要的GStreamer外掛。" -#: transcoder/transcoder.cpp:434 +#: playlist/playlistmanager.cpp:166 +msgid "Couldn't create playlist" +msgstr "" + +#: transcoder/transcoder.cpp:429 #, qt-format msgid "" "Couldn't find a muxer for %1, check you have the correct GStreamer plugins " "installed" msgstr "無法為%1找到混合器,請確認已正確安裝 GStreamer 外掛。" -#: transcoder/transcoder.cpp:428 +#: transcoder/transcoder.cpp:423 #, qt-format msgid "" "Couldn't find an encoder for %1, check you have the correct GStreamer " "plugins installed" msgstr "無法找到%1的解碼器,請確認已正確安裝 GStreamer 外掛。" -#: internet/lastfmservice.cpp:875 -msgid "Couldn't load the last.fm radio station" -msgstr "無法載入 last.fm 廣播電台" - -#: internet/magnatunedownloaddialog.cpp:203 +#: internet/magnatunedownloaddialog.cpp:218 #, qt-format msgid "Couldn't open output file %1" msgstr "無法開啟輸出檔 %1" -#: internet/cloudfileservice.cpp:88 ../bin/src/ui_albumcovermanager.h:215 -#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:691 -#: internet/googledriveservice.cpp:189 +#: internet/cloudfileservice.cpp:82 ../bin/src/ui_albumcovermanager.h:215 +#: ../bin/src/ui_albumcoversearcher.h:105 ../bin/src/ui_mainwindow.h:673 +#: internet/googledriveservice.cpp:196 msgid "Cover Manager" msgstr "封面管理員" -#: ui/edittagdialog.cpp:443 +#: ui/edittagdialog.cpp:460 msgid "Cover art from embedded image" msgstr "從嵌入式影像取得封面圖片" -#: ui/edittagdialog.cpp:445 +#: ui/edittagdialog.cpp:463 #, qt-format msgid "Cover art loaded automatically from %1" msgstr "封面圖片自動從 %1 載入" -#: ui/edittagdialog.cpp:438 +#: ui/edittagdialog.cpp:455 msgid "Cover art manually unset" msgstr "手動取消設置封面圖片" -#: ui/edittagdialog.cpp:447 +#: ui/edittagdialog.cpp:465 msgid "Cover art not set" msgstr "封面圖片未設置" -#: ui/edittagdialog.cpp:441 +#: ui/edittagdialog.cpp:458 #, qt-format msgid "Cover art set from %1" msgstr "從 %1 取得封面圖片" -#: covers/coversearchstatisticsdialog.cpp:60 ui/albumcoversearcher.cpp:106 +#: covers/coversearchstatisticsdialog.cpp:57 ui/albumcoversearcher.cpp:100 #, qt-format msgid "Covers from %1" msgstr "來自 %1 的封面" -#: internet/groovesharkservice.cpp:520 internet/groovesharkservice.cpp:1244 +#: internet/groovesharkservice.cpp:528 internet/groovesharkservice.cpp:1286 msgid "Create a new Grooveshark playlist" msgstr "建立一個新的 Grooveshark 播放清單" -#: ../bin/src/ui_playbacksettingspage.h:302 +#: ../bin/src/ui_playbacksettingspage.h:315 msgid "Cross-fade when changing tracks automatically" msgstr "當自動改變曲目時,聲音同時淡出及淡入" -#: ../bin/src/ui_playbacksettingspage.h:301 +#: ../bin/src/ui_playbacksettingspage.h:314 msgid "Cross-fade when changing tracks manually" msgstr "當手動改變曲目時,聲音同時淡出及淡入" -#: ../bin/src/ui_mainwindow.h:663 +#: ../bin/src/ui_mainwindow.h:647 msgid "Ctrl+Alt+V" msgstr "Ctrl+Alt+V" -#: ../bin/src/ui_mainwindow.h:667 -msgid "Ctrl+B" -msgstr "Ctrl+B" - #: ../bin/src/ui_queuemanager.h:133 msgid "Ctrl+Down" msgstr "Ctrl+Down" -#: ../bin/src/ui_mainwindow.h:674 +#: ../bin/src/ui_mainwindow.h:656 msgid "Ctrl+E" msgstr "Ctrl+E" -#: ../bin/src/ui_mainwindow.h:684 +#: ../bin/src/ui_mainwindow.h:666 msgid "Ctrl+H" msgstr "Ctrl+H" -#: ../bin/src/ui_mainwindow.h:704 +#: ../bin/src/ui_mainwindow.h:686 msgid "Ctrl+J" msgstr "Ctrl+J" -#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:672 +#: ../bin/src/ui_queuemanager.h:141 ../bin/src/ui_mainwindow.h:654 msgid "Ctrl+K" msgstr "Ctrl+K" -#: ../bin/src/ui_mainwindow.h:665 +#: ../bin/src/ui_mainwindow.h:649 msgid "Ctrl+L" msgstr "Ctrl+L" -#: ../bin/src/ui_mainwindow.h:718 +#: ../bin/src/ui_mainwindow.h:700 msgid "Ctrl+M" msgstr "Ctrl+M" -#: ../bin/src/ui_mainwindow.h:706 +#: ../bin/src/ui_mainwindow.h:688 msgid "Ctrl+N" msgstr "Ctrl+N" -#: ../bin/src/ui_mainwindow.h:688 +#: ../bin/src/ui_mainwindow.h:670 msgid "Ctrl+O" msgstr "Ctrl+O" -#: ../bin/src/ui_mainwindow.h:680 +#: ../bin/src/ui_mainwindow.h:662 msgid "Ctrl+P" msgstr "Ctrl+P" -#: ../bin/src/ui_mainwindow.h:661 +#: ../bin/src/ui_mainwindow.h:645 msgid "Ctrl+Q" msgstr "Ctrl+Q" -#: ../bin/src/ui_mainwindow.h:708 +#: ../bin/src/ui_mainwindow.h:690 msgid "Ctrl+S" msgstr "Ctrl+S" -#: ../bin/src/ui_mainwindow.h:686 +#: ../bin/src/ui_mainwindow.h:668 msgid "Ctrl+Shift+A" msgstr "Ctrl+Shift+A" -#: ../bin/src/ui_mainwindow.h:710 +#: ../bin/src/ui_mainwindow.h:692 msgid "Ctrl+Shift+O" msgstr "Ctrl+Shift+O" -#: ../bin/src/ui_mainwindow.h:729 +#: ../bin/src/ui_mainwindow.h:711 msgid "Ctrl+Shift+T" msgstr "" -#: ../bin/src/ui_mainwindow.h:721 +#: ../bin/src/ui_mainwindow.h:703 msgid "Ctrl+T" msgstr "Ctrl+T" @@ -1470,7 +1534,7 @@ msgstr "Ctrl+T" msgid "Ctrl+Up" msgstr "Ctrl+Up" -#: ui/equalizer.cpp:114 ../bin/src/ui_lastfmstationdialog.h:98 +#: ui/equalizer.cpp:110 msgid "Custom" msgstr "自訂" @@ -1482,54 +1546,50 @@ msgstr "自訂圖片:" msgid "Custom message settings" msgstr "自訂訊息設定" -#: internet/lastfmservice.cpp:216 -msgid "Custom radio" -msgstr "自訂電台" - #: ../bin/src/ui_notificationssettingspage.h:458 msgid "Custom..." msgstr "自訂..." -#: devices/devicekitlister.cpp:123 +#: devices/devicekitlister.cpp:125 msgid "DBus path" msgstr "DBus 路徑" -#: ui/equalizer.cpp:117 +#: ui/equalizer.cpp:116 msgid "Dance" msgstr "舞蹈" -#: core/database.cpp:598 +#: core/database.cpp:593 msgid "" "Database corruption detected. Please read https://code.google.com/p" "/clementine-player/wiki/DatabaseCorruption for instructions on how to " "recover your database" msgstr "" -#: playlist/playlist.cpp:1236 ../bin/src/ui_edittagdialog.h:679 +#: playlist/playlist.cpp:1351 ../bin/src/ui_edittagdialog.h:679 msgid "Date created" msgstr "創建的日期" -#: playlist/playlist.cpp:1235 ../bin/src/ui_edittagdialog.h:678 +#: playlist/playlist.cpp:1349 ../bin/src/ui_edittagdialog.h:678 msgid "Date modified" msgstr "修改的日期" -#: smartplaylists/searchterm.cpp:311 +#: smartplaylists/searchterm.cpp:388 msgid "Days" msgstr "天" -#: ../bin/src/ui_globalshortcutssettingspage.h:177 +#: ../bin/src/ui_globalshortcutssettingspage.h:187 msgid "De&fault" msgstr "預設(&F)" -#: core/commandlineoptions.cpp:159 +#: core/commandlineoptions.cpp:151 msgid "Decrease the volume by 4%" msgstr "減低音量4%" -#: core/commandlineoptions.cpp:161 +#: core/commandlineoptions.cpp:153 msgid "Decrease the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:54 wiimotedev/wiimotesettingspage.cpp:104 +#: core/globalshortcuts.cpp:58 wiimotedev/wiimotesettingspage.cpp:105 msgid "Decrease volume" msgstr "減低音量" @@ -1537,6 +1597,11 @@ msgstr "減低音量" msgid "Default background image" msgstr "預設的背景圖片" +#: engines/gstengine.cpp:908 +#, qt-format +msgid "Default device on %1" +msgstr "" + #: ../bin/src/ui_wiimotesettingspage.h:195 msgid "Defaults" msgstr "預設" @@ -1545,30 +1610,30 @@ msgstr "預設" msgid "Delay between visualizations" msgstr "在兩個視覺化效果間延遲切換" -#: playlist/playlistlistcontainer.cpp:73 +#: playlist/playlistlistcontainer.cpp:70 #: ../bin/src/ui_playlistlistcontainer.h:131 msgid "Delete" msgstr "" -#: internet/groovesharkservice.cpp:523 internet/groovesharkservice.cpp:1291 +#: internet/groovesharkservice.cpp:531 internet/groovesharkservice.cpp:1333 msgid "Delete Grooveshark playlist" msgstr "刪除 Grooveshark 播放清單" -#: podcasts/podcastservice.cpp:333 +#: podcasts/podcastservice.cpp:345 msgid "Delete downloaded data" msgstr "刪除下載的資料" -#: devices/deviceview.cpp:388 library/libraryview.cpp:608 -#: ui/mainwindow.cpp:1960 widgets/fileview.cpp:187 +#: devices/deviceview.cpp:404 library/libraryview.cpp:636 +#: ui/mainwindow.cpp:2160 widgets/fileview.cpp:186 msgid "Delete files" msgstr "刪除檔案" -#: devices/deviceview.cpp:220 +#: devices/deviceview.cpp:228 msgid "Delete from device..." msgstr "從裝置中刪除..." -#: library/libraryview.cpp:391 ui/mainwindow.cpp:518 -#: widgets/fileviewlist.cpp:45 +#: library/libraryview.cpp:402 ui/mainwindow.cpp:604 +#: widgets/fileviewlist.cpp:44 msgid "Delete from disk..." msgstr "從硬碟中刪除 ..." @@ -1576,31 +1641,31 @@ msgstr "從硬碟中刪除 ..." msgid "Delete played episodes" msgstr "刪除播放過的片斷內容" -#: ui/equalizer.cpp:200 ../bin/src/ui_equalizer.h:169 +#: ui/equalizer.cpp:215 ../bin/src/ui_equalizer.h:169 msgid "Delete preset" msgstr "刪除預設" -#: library/libraryview.cpp:383 +#: library/libraryview.cpp:391 msgid "Delete smart playlist" msgstr "刪除智慧型播放清單" -#: ../bin/src/ui_organisedialog.h:194 +#: ../bin/src/ui_organisedialog.h:240 msgid "Delete the original files" msgstr "刪除原本的檔案" -#: core/deletefiles.cpp:50 +#: core/deletefiles.cpp:48 msgid "Deleting files" msgstr "檔案刪除中" -#: ui/mainwindow.cpp:1382 +#: ui/mainwindow.cpp:1539 msgid "Dequeue selected tracks" msgstr "將選取的歌曲移出佇列中" -#: ui/mainwindow.cpp:1380 +#: ui/mainwindow.cpp:1537 msgid "Dequeue track" msgstr "將歌曲移出佇列中" -#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:189 +#: ../bin/src/ui_transcodedialog.h:214 ../bin/src/ui_organisedialog.h:235 #: ../bin/src/ui_ripcd.h:321 msgid "Destination" msgstr "目的地" @@ -1609,7 +1674,7 @@ msgstr "目的地" msgid "Details..." msgstr "詳情..." -#: devices/devicekitlister.cpp:126 devices/giolister.cpp:160 +#: devices/devicekitlister.cpp:128 devices/giolister.cpp:156 msgid "Device" msgstr "裝置" @@ -1621,15 +1686,15 @@ msgstr "裝置屬性" msgid "Device name" msgstr "裝置名稱" -#: devices/deviceview.cpp:207 +#: devices/deviceview.cpp:210 msgid "Device properties..." msgstr "裝置屬性..." -#: ui/mainwindow.cpp:245 +#: ui/mainwindow.cpp:240 msgid "Devices" msgstr "裝置" -#: ../bin/src/ui_ripcd.h:300 +#: ../bin/src/ui_vksearchdialog.h:61 ../bin/src/ui_ripcd.h:300 msgid "Dialog" msgstr "" @@ -1666,12 +1731,17 @@ msgstr "禁用期限" msgid "Disable moodbar generation" msgstr "" -#: globalsearch/searchproviderstatuswidget.cpp:47 #: ../bin/src/ui_notificationssettingspage.h:433 +msgctxt "Refers to a disabled notification type in Notification settings." msgid "Disabled" -msgstr "停用" +msgstr "" -#: playlist/playlist.cpp:1214 ui/organisedialog.cpp:64 +#: globalsearch/searchproviderstatuswidget.cpp:46 +msgctxt "Refers to search provider's status." +msgid "Disabled" +msgstr "" + +#: playlist/playlist.cpp:1309 ui/organisedialog.cpp:69 #: ../bin/src/ui_edittagdialog.h:685 ../bin/src/ui_ripcd.h:314 msgid "Disc" msgstr "唱片" @@ -1681,15 +1751,15 @@ msgid "Discontinuous transmission" msgstr "不連續傳送" #: internet/icecastfilterwidget.cpp:33 internet/searchboxwidget.cpp:30 -#: library/libraryfilterwidget.cpp:88 ../bin/src/ui_librarysettingspage.h:207 +#: library/libraryfilterwidget.cpp:104 ../bin/src/ui_librarysettingspage.h:207 msgid "Display options" msgstr "顯示選項" -#: core/commandlineoptions.cpp:170 +#: core/commandlineoptions.cpp:164 msgid "Display the on-screen-display" msgstr "顯示螢幕上的顯示" -#: ../bin/src/ui_mainwindow.h:719 +#: ../bin/src/ui_mainwindow.h:701 msgid "Do a full library rescan" msgstr "做一個完整的音樂庫重新掃描" @@ -1701,27 +1771,27 @@ msgstr "沒有轉換任何音樂" msgid "Do not overwrite" msgstr "" -#: widgets/osd.cpp:291 ../bin/src/ui_playlistsequence.h:103 +#: widgets/osd.cpp:302 ../bin/src/ui_playlistsequence.h:103 msgid "Don't repeat" msgstr "不要循環播放" -#: library/libraryview.cpp:405 +#: library/libraryview.cpp:420 msgid "Don't show in various artists" msgstr "不要顯示不同的演出者" -#: widgets/osd.cpp:278 ../bin/src/ui_playlistsequence.h:107 +#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:107 msgid "Don't shuffle" msgstr "不要隨機播放" -#: internet/magnatunedownloaddialog.cpp:282 ui/albumcovermanager.cpp:218 +#: internet/magnatunedownloaddialog.cpp:306 ui/albumcovermanager.cpp:221 msgid "Don't stop!" msgstr "不要停止!" -#: internet/somafmservice.cpp:103 +#: internet/somafmservice.cpp:101 msgid "Donate" msgstr "" -#: devices/deviceview.cpp:115 +#: devices/deviceview.cpp:117 msgid "Double click to open" msgstr "雙擊打開" @@ -1729,12 +1799,13 @@ msgstr "雙擊打開" msgid "Double clicking a song will..." msgstr "雙擊一首歌曲將..." -#: podcasts/podcastservice.cpp:421 +#: podcasts/podcastservice.cpp:437 #, c-format, qt-plural-format +msgctxt "" msgid "Download %n episodes" msgstr "下載 %n 片斷內容" -#: internet/magnatunedownloaddialog.cpp:252 +#: internet/magnatunedownloaddialog.cpp:266 msgid "Download directory" msgstr "下載目錄" @@ -1750,7 +1821,7 @@ msgstr "下載會員" msgid "Download new episodes automatically" msgstr "自動下載新的片斷內容" -#: podcasts/podcastservice.cpp:246 +#: podcasts/podcastservice.cpp:253 msgid "Download queued" msgstr "" @@ -1758,15 +1829,15 @@ msgstr "" msgid "Download the Android app" msgstr "" -#: internet/magnatuneservice.cpp:276 +#: internet/magnatuneservice.cpp:272 msgid "Download this album" msgstr "下載此專輯" -#: internet/jamendoservice.cpp:417 +#: internet/jamendoservice.cpp:424 msgid "Download this album..." msgstr "下載此專輯..." -#: podcasts/podcastservice.cpp:423 +#: podcasts/podcastservice.cpp:439 msgid "Download this episode" msgstr "下載這個片斷內容" @@ -1774,7 +1845,7 @@ msgstr "下載這個片斷內容" msgid "Download..." msgstr "下載..." -#: podcasts/podcastservice.cpp:254 +#: podcasts/podcastservice.cpp:261 #, qt-format msgid "Downloading (%1%)..." msgstr "" @@ -1783,23 +1854,23 @@ msgstr "" msgid "Downloading Icecast directory" msgstr "下載 Icecast 目錄中" -#: internet/jamendoservice.cpp:187 +#: internet/jamendoservice.cpp:195 msgid "Downloading Jamendo catalogue" msgstr "下載 Jamendo 目錄中" -#: internet/magnatuneservice.cpp:158 +#: internet/magnatuneservice.cpp:152 msgid "Downloading Magnatune catalogue" msgstr "下載 Magnatune 目錄中" -#: internet/spotifyblobdownloader.cpp:44 +#: internet/spotifyblobdownloader.cpp:49 msgid "Downloading Spotify plugin" msgstr "下載 Spotify 插件中" -#: musicbrainz/tagfetcher.cpp:102 +#: musicbrainz/tagfetcher.cpp:107 msgid "Downloading metadata" msgstr "下載詮釋資料中" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "Drag to reposition" msgstr "拖曳以重新定位" @@ -1819,20 +1890,20 @@ msgstr "" msgid "Dynamic mode is on" msgstr "動態模式開啟" -#: internet/jamendoservice.cpp:113 library/library.cpp:93 +#: internet/jamendoservice.cpp:121 library/library.cpp:112 msgid "Dynamic random mix" msgstr "動態隨機混合" -#: library/libraryview.cpp:381 +#: library/libraryview.cpp:388 msgid "Edit smart playlist..." msgstr "編輯智慧型播放清單..." -#: ui/mainwindow.cpp:1415 +#: ui/mainwindow.cpp:1581 #, qt-format msgid "Edit tag \"%1\"..." msgstr "" -#: ../bin/src/ui_mainwindow.h:677 +#: ../bin/src/ui_mainwindow.h:659 msgid "Edit tag..." msgstr "編輯標籤 ..." @@ -1844,16 +1915,16 @@ msgstr "編輯標籤" msgid "Edit track information" msgstr "編輯歌曲資訊" -#: library/libraryview.cpp:395 widgets/fileviewlist.cpp:50 -#: ../bin/src/ui_mainwindow.h:673 +#: library/libraryview.cpp:407 widgets/fileviewlist.cpp:49 +#: ../bin/src/ui_mainwindow.h:655 msgid "Edit track information..." msgstr "編輯歌曲資訊..." -#: library/libraryview.cpp:397 +#: library/libraryview.cpp:410 msgid "Edit tracks information..." msgstr "編輯音軌資訊..." -#: internet/savedradio.cpp:101 +#: internet/savedradio.cpp:103 msgid "Edit..." msgstr "編輯..." @@ -1861,6 +1932,10 @@ msgstr "編輯..." msgid "Enable Wii Remote support" msgstr "啟用 Wii 遙控器的支持" +#: ../bin/src/ui_vksettingspage.h:219 +msgid "Enable automatic caching" +msgstr "" + #: ../bin/src/ui_equalizer.h:171 msgid "Enable equalizer" msgstr "啟用等化器" @@ -1875,7 +1950,7 @@ msgid "" "displayed in this order." msgstr "" -#: core/globalshortcuts.cpp:63 +#: core/globalshortcuts.cpp:72 msgid "Enable/disable Last.fm scrobbling" msgstr "啟用/停用 Last.fm scrobbling" @@ -1903,15 +1978,10 @@ msgstr "輸入網址,從網路中取得封面" msgid "Enter a filename for exported covers (no extension):" msgstr "" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:136 msgid "Enter a new name for this playlist" msgstr "為這個播放清單輸入新的名稱" -#: ../bin/src/ui_lastfmstationdialog.h:93 -msgid "" -"Enter an artist or tag to start listening to Last.fm radio." -msgstr "輸入一個 演出者標籤 以開始收聽 Last.fm 電台." - #: ../bin/src/ui_globalsearchview.h:209 msgid "" "Enter search terms above to find music on your computer and on the internet" @@ -1925,7 +1995,7 @@ msgstr "" msgid "Enter search terms below to find podcasts on gpodder.net" msgstr "在 gpodder.net 上,輸入下面搜尋字詞以尋找 podcasts " -#: ../bin/src/ui_libraryfilterwidget.h:96 +#: ../bin/src/ui_libraryfilterwidget.h:99 #: ../bin/src/ui_albumcovermanager.h:219 msgid "Enter search terms here" msgstr "在這裡輸入搜尋字詞" @@ -1934,11 +2004,11 @@ msgstr "在這裡輸入搜尋字詞" msgid "Enter the URL of an internet radio stream:" msgstr "輸入網路廣播串流的網址(URL):" -#: playlist/playlistlistcontainer.cpp:172 +#: playlist/playlistlistcontainer.cpp:169 msgid "Enter the name of the folder" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:198 +#: ../bin/src/ui_networkremotesettingspage.h:199 msgid "Enter this IP in the App to connect to Clementine." msgstr "" @@ -1946,21 +2016,22 @@ msgstr "" msgid "Entire collection" msgstr "整個收藏" -#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:700 +#: ../bin/src/ui_equalizer.h:163 ../bin/src/ui_mainwindow.h:682 msgid "Equalizer" msgstr "等化器" -#: core/commandlineoptions.cpp:173 +#: core/commandlineoptions.cpp:167 msgid "Equivalent to --log-levels *:1" msgstr "" -#: core/commandlineoptions.cpp:174 +#: core/commandlineoptions.cpp:168 msgid "Equivalent to --log-levels *:3" msgstr "" -#: internet/groovesharkservice.cpp:1017 -#: internet/magnatunedownloaddialog.cpp:225 library/libraryview.cpp:602 -#: ui/mainwindow.cpp:1690 ui/mainwindow.cpp:1912 ui/mainwindow.cpp:2028 +#: internet/groovesharkservice.cpp:1048 +#: internet/magnatunedownloaddialog.cpp:240 library/libraryview.cpp:630 +#: ui/mainwindow.cpp:1863 ui/mainwindow.cpp:2110 ui/mainwindow.cpp:2258 +#: internet/vkservice.cpp:621 msgid "Error" msgstr "錯誤" @@ -1968,38 +2039,38 @@ msgstr "錯誤" msgid "Error connecting MTP device" msgstr "連接 MTP 裝置錯誤" -#: ui/organiseerrordialog.cpp:55 +#: ui/organiseerrordialog.cpp:52 msgid "Error copying songs" msgstr "複製歌曲錯誤" -#: ui/organiseerrordialog.cpp:60 +#: ui/organiseerrordialog.cpp:59 msgid "Error deleting songs" msgstr "刪除歌曲錯誤" -#: internet/spotifyblobdownloader.cpp:215 +#: internet/spotifyblobdownloader.cpp:220 msgid "Error downloading Spotify plugin" msgstr "下載 Spotify 插件出現錯誤" -#: playlist/songloaderinserter.cpp:73 playlist/songloaderinserter.cpp:135 +#: playlist/songloaderinserter.cpp:64 #, qt-format msgid "Error loading %1" msgstr "錯誤載入 %1" -#: internet/digitallyimportedservicebase.cpp:203 -#: internet/digitallyimportedurlhandler.cpp:89 +#: internet/digitallyimportedservicebase.cpp:196 +#: internet/digitallyimportedurlhandler.cpp:85 msgid "Error loading di.fm playlist" msgstr "載入 di.fm 播放清單錯誤" -#: transcoder/transcoder.cpp:401 +#: transcoder/transcoder.cpp:394 #, qt-format msgid "Error processing %1: %2" msgstr "處理 %1 錯誤: %2" -#: playlist/songloaderinserter.cpp:102 +#: playlist/songloaderinserter.cpp:92 msgid "Error while loading audio CD" msgstr "載入音樂CD時,出現錯誤" -#: library/library.cpp:63 +#: library/library.cpp:66 msgid "Ever played" msgstr "曾經播放的" @@ -2031,7 +2102,7 @@ msgstr "每隔六小時" msgid "Every hour" msgstr "每隔一小時" -#: ../bin/src/ui_playbacksettingspage.h:303 +#: ../bin/src/ui_playbacksettingspage.h:316 msgid "Except between tracks on the same album or in the same CUE sheet" msgstr "除非是在相同專輯或是CUE表單的歌曲之間" @@ -2043,7 +2114,7 @@ msgstr "" msgid "Expand" msgstr "" -#: widgets/loginstatewidget.cpp:142 +#: widgets/loginstatewidget.cpp:139 #, qt-format msgid "Expires on %1" msgstr "" @@ -2064,36 +2135,36 @@ msgstr "" msgid "Export embedded covers" msgstr "" -#: ui/albumcovermanager.cpp:777 ui/albumcovermanager.cpp:801 +#: ui/albumcovermanager.cpp:785 ui/albumcovermanager.cpp:809 msgid "Export finished" msgstr "" -#: ui/albumcovermanager.cpp:786 +#: ui/albumcovermanager.cpp:794 #, qt-format msgid "Exported %1 covers out of %2 (%3 skipped)" msgstr "" -#: ../bin/src/ui_mainwindow.h:682 +#: ../bin/src/ui_mainwindow.h:664 msgid "F1" msgstr "F1" -#: ../bin/src/ui_mainwindow.h:678 +#: ../bin/src/ui_mainwindow.h:660 msgid "F2" msgstr "F2" -#: ../bin/src/ui_mainwindow.h:653 +#: ../bin/src/ui_mainwindow.h:637 msgid "F5" msgstr "F5" -#: ../bin/src/ui_mainwindow.h:655 +#: ../bin/src/ui_mainwindow.h:639 msgid "F6" msgstr "F6" -#: ../bin/src/ui_mainwindow.h:657 +#: ../bin/src/ui_mainwindow.h:641 msgid "F7" msgstr "F7" -#: ../bin/src/ui_mainwindow.h:659 +#: ../bin/src/ui_mainwindow.h:643 msgid "F8" msgstr "F8" @@ -2103,42 +2174,42 @@ msgstr "F8" msgid "FLAC" msgstr "FLAC" -#: ../bin/src/ui_playbacksettingspage.h:306 +#: ../bin/src/ui_playbacksettingspage.h:319 msgid "Fade out on pause / fade in on resume" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:300 +#: ../bin/src/ui_playbacksettingspage.h:313 msgid "Fade out when stopping a track" msgstr "當停播一首歌時,聲音逐漸淡出" -#: ../bin/src/ui_playbacksettingspage.h:299 +#: ../bin/src/ui_playbacksettingspage.h:312 msgid "Fading" msgstr "淡出" -#: ../bin/src/ui_playbacksettingspage.h:304 -#: ../bin/src/ui_playbacksettingspage.h:307 +#: ../bin/src/ui_playbacksettingspage.h:317 +#: ../bin/src/ui_playbacksettingspage.h:320 msgid "Fading duration" msgstr "淡出持續時間" -#: ui/mainwindow.cpp:1690 +#: ui/mainwindow.cpp:1864 msgid "Failed reading CD drive" msgstr "" -#: podcasts/gpoddertoptagspage.cpp:76 +#: podcasts/gpoddertoptagspage.cpp:69 msgid "Failed to fetch directory" msgstr "" -#: podcasts/gpoddersearchpage.cpp:76 podcasts/gpoddertoptagsmodel.cpp:109 -#: podcasts/itunessearchpage.cpp:66 podcasts/itunessearchpage.cpp:75 -#: podcasts/itunessearchpage.cpp:82 +#: podcasts/gpoddersearchpage.cpp:72 podcasts/gpoddertoptagsmodel.cpp:101 +#: podcasts/itunessearchpage.cpp:63 podcasts/itunessearchpage.cpp:74 +#: podcasts/itunessearchpage.cpp:81 msgid "Failed to fetch podcasts" msgstr "" -#: podcasts/addpodcastbyurl.cpp:70 podcasts/fixedopmlpage.cpp:54 +#: podcasts/addpodcastbyurl.cpp:66 podcasts/fixedopmlpage.cpp:52 msgid "Failed to load podcast" msgstr "無法載入 podcast" -#: podcasts/podcasturlloader.cpp:167 +#: podcasts/podcasturlloader.cpp:173 msgid "Failed to parse the XML for this RSS feed" msgstr "" @@ -2147,11 +2218,11 @@ msgstr "" msgid "Fast" msgstr "快速" -#: internet/groovesharkservice.cpp:617 +#: internet/groovesharkservice.cpp:639 msgid "Favorites" msgstr "我的最愛" -#: library/library.cpp:77 +#: library/library.cpp:88 msgid "Favourite tracks" msgstr "最喜愛的歌曲" @@ -2167,11 +2238,11 @@ msgstr "自動取得" msgid "Fetch completed" msgstr "取得完成" -#: internet/subsonicservice.cpp:241 +#: internet/subsonicservice.cpp:228 msgid "Fetching Subsonic library" msgstr "" -#: ui/coverfromurldialog.cpp:71 ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:70 ui/coverfromurldialog.cpp:82 msgid "Fetching cover error" msgstr "取得封面出錯" @@ -2179,7 +2250,7 @@ msgstr "取得封面出錯" msgid "File Format" msgstr "" -#: ui/organisedialog.cpp:72 +#: ui/organisedialog.cpp:77 msgid "File extension" msgstr "副檔名" @@ -2187,19 +2258,23 @@ msgstr "副檔名" msgid "File formats" msgstr "檔案格式" -#: playlist/playlist.cpp:1231 ../bin/src/ui_edittagdialog.h:680 +#: playlist/playlist.cpp:1341 ../bin/src/ui_edittagdialog.h:680 msgid "File name" msgstr "檔名" -#: playlist/playlist.cpp:1232 +#: playlist/playlist.cpp:1343 msgid "File name (without path)" msgstr "檔名(不含路徑)" -#: playlist/playlist.cpp:1233 ../bin/src/ui_edittagdialog.h:674 +#: ../bin/src/ui_vksettingspage.h:221 +msgid "File name pattern:" +msgstr "" + +#: playlist/playlist.cpp:1345 ../bin/src/ui_edittagdialog.h:674 msgid "File size" msgstr "檔案大小" -#: playlist/playlist.cpp:1234 ../bin/src/ui_groupbydialog.h:133 +#: playlist/playlist.cpp:1347 ../bin/src/ui_groupbydialog.h:133 #: ../bin/src/ui_groupbydialog.h:147 ../bin/src/ui_groupbydialog.h:161 #: ../bin/src/ui_edittagdialog.h:676 msgid "File type" @@ -2209,7 +2284,7 @@ msgstr "檔案型態" msgid "Filename" msgstr "檔名" -#: ui/mainwindow.cpp:242 +#: ui/mainwindow.cpp:233 msgid "Files" msgstr "檔案" @@ -2217,15 +2292,19 @@ msgstr "檔案" msgid "Files to transcode" msgstr "要轉碼的檔案" -#: smartplaylists/querywizardplugin.cpp:90 +#: smartplaylists/querywizardplugin.cpp:82 msgid "Find songs in your library that match the criteria you specify." msgstr "在您的歌曲庫裡找到符合您指定的歌曲。" -#: musicbrainz/tagfetcher.cpp:55 +#: internet/vkservice.cpp:302 +msgid "Find this artist" +msgstr "" + +#: musicbrainz/tagfetcher.cpp:58 msgid "Fingerprinting song" msgstr "指紋歌曲" -#: smartplaylists/wizard.cpp:85 +#: smartplaylists/wizard.cpp:83 msgid "Finish" msgstr "完成" @@ -2233,7 +2312,7 @@ msgstr "完成" msgid "First level" msgstr "第一層次" -#: core/song.cpp:340 +#: core/song.cpp:379 transcoder/transcoder.cpp:230 msgid "Flac" msgstr "Flac" @@ -2249,12 +2328,12 @@ msgstr "由於許可證的原因,Spotify 支援是在一個獨立的插件中 msgid "Force mono encoding" msgstr "強制單聲道編碼" -#: devices/deviceview.cpp:204 devices/deviceview.cpp:310 -#: devices/deviceview.cpp:314 +#: devices/deviceview.cpp:207 devices/deviceview.cpp:330 +#: devices/deviceview.cpp:335 msgid "Forget device" msgstr "忘記裝置" -#: devices/deviceview.cpp:311 +#: devices/deviceview.cpp:331 msgid "" "Forgetting a device will remove it from this list and Clementine will have " "to rescan all the songs again next time you connect it." @@ -2269,7 +2348,7 @@ msgstr "忘記裝置這個動作將會把此裝置從名單中移除且 Clementi #: ../bin/src/ui_playlistcontainer.h:143 #: ../bin/src/ui_playlistlistcontainer.h:126 #: ../bin/src/ui_podcastinfowidget.h:191 ../bin/src/ui_querysearchpage.h:112 -#: ../bin/src/ui_querysortpage.h:136 ../bin/src/ui_searchpreview.h:104 +#: ../bin/src/ui_querysortpage.h:137 ../bin/src/ui_searchpreview.h:104 #: ../bin/src/ui_searchtermwidget.h:268 ../bin/src/ui_wizardfinishpage.h:83 #: ../bin/src/ui_songkickconcertwidget.h:100 #: ../bin/src/ui_transcoderoptionsaac.h:128 @@ -2297,31 +2376,23 @@ msgstr "畫面更新率" msgid "Frames per buffer" msgstr "幀/每段緩衝" -#: internet/lastfmservice.cpp:224 -msgid "Friends" -msgstr "好友" - -#: moodbar/moodbarrenderer.cpp:157 +#: moodbar/moodbarrenderer.cpp:173 msgid "Frozen" msgstr "" -#: ui/equalizer.cpp:120 +#: ui/equalizer.cpp:121 msgid "Full Bass" msgstr "全部低音" -#: ui/equalizer.cpp:122 +#: ui/equalizer.cpp:125 msgid "Full Bass + Treble" msgstr "全部低音+高音" -#: ui/equalizer.cpp:121 +#: ui/equalizer.cpp:123 msgid "Full Treble" msgstr "全部高音" -#: ../bin/src/ui_playbacksettingspage.h:319 -msgid "GStreamer audio engine" -msgstr "GStreamer 的音訊引擎" - -#: ui/settingsdialog.cpp:131 +#: ui/settingsdialog.cpp:133 msgid "General" msgstr "一般" @@ -2329,30 +2400,30 @@ msgstr "一般" msgid "General settings" msgstr "一般設定" -#: playlist/playlist.cpp:1216 ui/organisedialog.cpp:67 +#: playlist/playlist.cpp:1313 ui/organisedialog.cpp:72 #: ../bin/src/ui_groupbydialog.h:134 ../bin/src/ui_groupbydialog.h:148 #: ../bin/src/ui_groupbydialog.h:162 ../bin/src/ui_edittagdialog.h:692 #: ../bin/src/ui_ripcd.h:317 msgid "Genre" msgstr "風格" -#: internet/groovesharkservice.cpp:542 +#: internet/groovesharkservice.cpp:550 msgid "Get a URL to share this Grooveshark playlist" msgstr "獲取一個網址以分享這個 Grooveshark 播放清單" -#: internet/groovesharkservice.cpp:539 internet/groovesharkservice.cpp:1110 +#: internet/groovesharkservice.cpp:547 internet/groovesharkservice.cpp:1149 msgid "Get a URL to share this Grooveshark song" msgstr "獲取一個網址以分享這個 Grooveshark 歌曲" -#: internet/groovesharkservice.cpp:790 +#: internet/groovesharkservice.cpp:823 msgid "Getting Grooveshark popular songs" msgstr "獲取 Grooveshark 熱門歌曲" -#: internet/somafmservice.cpp:114 +#: internet/somafmservice.cpp:115 msgid "Getting channels" msgstr "取得頻道" -#: internet/digitallyimportedservicebase.cpp:108 +#: internet/digitallyimportedservicebase.cpp:101 msgid "Getting streams" msgstr "取得串流" @@ -2364,11 +2435,11 @@ msgstr "給它一個名字:" msgid "Go" msgstr "前往" -#: ../bin/src/ui_mainwindow.h:711 +#: ../bin/src/ui_mainwindow.h:693 msgid "Go to next playlist tab" msgstr "到下一個播放清單分頁" -#: ../bin/src/ui_mainwindow.h:712 +#: ../bin/src/ui_mainwindow.h:694 msgid "Go to previous playlist tab" msgstr "到前一個播放清單分頁" @@ -2376,7 +2447,7 @@ msgstr "到前一個播放清單分頁" msgid "Google Drive" msgstr "Google 雲端硬碟" -#: covers/coversearchstatisticsdialog.cpp:54 ui/albumcovermanager.cpp:453 +#: covers/coversearchstatisticsdialog.cpp:51 ui/albumcovermanager.cpp:460 #: ../bin/src/ui_coversearchstatisticsdialog.h:76 #, qt-format msgid "Got %1 covers out of %2 (%3 failed)" @@ -2386,7 +2457,7 @@ msgstr "獲得 %1 涵蓋了 %2 ( %3 失敗 )" msgid "Grey out non existent songs in my playlists" msgstr "用灰色顯示在我播放清單有,但不存在的歌曲" -#: ../bin/src/ui_groovesharksettingspage.h:112 +#: ../bin/src/ui_groovesharksettingspage.h:137 msgid "Grooveshark" msgstr "Grooveshark" @@ -2394,15 +2465,15 @@ msgstr "Grooveshark" msgid "Grooveshark login error" msgstr "Grooveshark登入錯誤" -#: internet/groovesharkservice.cpp:1162 +#: internet/groovesharkservice.cpp:1200 msgid "Grooveshark playlist's URL" msgstr "Grooveshark 播放清單的網址" -#: internet/groovesharkservice.cpp:603 +#: internet/groovesharkservice.cpp:619 msgid "Grooveshark radio" msgstr "Grooveshark 電台" -#: internet/groovesharkservice.cpp:1140 +#: internet/groovesharkservice.cpp:1178 msgid "Grooveshark song's URL" msgstr "Grooveshark 歌曲的網址" @@ -2410,44 +2481,44 @@ msgstr "Grooveshark 歌曲的網址" msgid "Group Library by..." msgstr "歸類音樂庫依..." -#: globalsearch/globalsearchview.cpp:444 library/libraryfilterwidget.cpp:82 +#: globalsearch/globalsearchview.cpp:469 library/libraryfilterwidget.cpp:97 msgid "Group by" msgstr "歸類方式" -#: library/libraryfilterwidget.cpp:110 +#: library/libraryfilterwidget.cpp:131 msgid "Group by Album" msgstr "依專輯歸類" -#: library/libraryfilterwidget.cpp:104 +#: library/libraryfilterwidget.cpp:120 msgid "Group by Artist" msgstr "依演出者歸類" -#: library/libraryfilterwidget.cpp:106 +#: library/libraryfilterwidget.cpp:123 msgid "Group by Artist/Album" msgstr "依演出者/專輯歸類" -#: library/libraryfilterwidget.cpp:108 +#: library/libraryfilterwidget.cpp:127 msgid "Group by Artist/Year - Album" msgstr "依演出者/專輯發行年度歸類" -#: library/libraryfilterwidget.cpp:112 +#: library/libraryfilterwidget.cpp:134 msgid "Group by Genre/Album" msgstr "依風格/專輯歸類" -#: library/libraryfilterwidget.cpp:114 +#: library/libraryfilterwidget.cpp:138 msgid "Group by Genre/Artist/Album" msgstr "依風格/演出者/專輯歸類" -#: playlist/playlist.cpp:1220 ui/organisedialog.cpp:62 +#: playlist/playlist.cpp:1321 ui/organisedialog.cpp:67 #: ../bin/src/ui_edittagdialog.h:691 msgid "Grouping" msgstr "" -#: podcasts/podcasturlloader.cpp:196 +#: podcasts/podcasturlloader.cpp:204 msgid "HTML page did not contain any RSS feeds" msgstr "" -#: internet/subsonicsettingspage.cpp:135 +#: internet/subsonicsettingspage.cpp:141 msgid "" "HTTP 3xx status code received without URL, verify server configuration." msgstr "" @@ -2456,7 +2527,7 @@ msgstr "" msgid "HTTP proxy" msgstr "HTTP 代理" -#: moodbar/moodbarrenderer.cpp:158 +#: moodbar/moodbarrenderer.cpp:175 msgid "Happy" msgstr "快樂" @@ -2472,25 +2543,25 @@ msgstr "硬體資訊只有當裝置是連結的時候可以取得。" msgid "High" msgstr "高級" -#: analyzers/analyzercontainer.cpp:64 -#: visualisations/visualisationcontainer.cpp:109 +#: analyzers/analyzercontainer.cpp:63 +#: visualisations/visualisationcontainer.cpp:111 #, qt-format msgid "High (%1 fps)" msgstr "高 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:119 +#: visualisations/visualisationcontainer.cpp:124 msgid "High (1024x1024)" msgstr "高 (1024x1024)" -#: internet/subsonicsettingspage.cpp:112 +#: internet/subsonicsettingspage.cpp:113 msgid "Host not found, check server URL. Example: http://localhost:4040/" msgstr "" -#: smartplaylists/searchterm.cpp:310 +#: smartplaylists/searchterm.cpp:386 msgid "Hours" msgstr "小時" -#: core/backgroundstreams.cpp:30 +#: core/backgroundstreams.cpp:27 msgid "Hypnotoad" msgstr "大蟾蜍" @@ -2502,15 +2573,15 @@ msgstr "我沒有 Magnatune 帳號" msgid "Icon" msgstr "圖示" -#: widgets/fancytabwidget.cpp:674 +#: widgets/fancytabwidget.cpp:666 msgid "Icons on top" msgstr "圖示在上面" -#: musicbrainz/tagfetcher.cpp:86 +#: musicbrainz/tagfetcher.cpp:90 msgid "Identifying song" msgstr "辨識歌曲" -#: devices/devicemanager.cpp:568 devices/devicemanager.cpp:576 +#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:577 msgid "" "If you continue, this device will work slowly and songs copied to it may not" " work." @@ -2520,24 +2591,24 @@ msgstr "如果您要繼續,此裝置將會變慢且可能無法複製歌曲" msgid "If you know the URL of a podcast, enter it below and press Go." msgstr "如果您知道一個 podcast 的網址,在下面輸入並按下「前往」。" -#: ../bin/src/ui_organisedialog.h:204 +#: ../bin/src/ui_organisedialog.h:250 msgid "Ignore \"The\" in artist names" msgstr "忽視在演出者名字中的“The”" -#: ui/albumcoverchoicecontroller.cpp:43 +#: ui/albumcoverchoicecontroller.cpp:44 msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "圖片 (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" -#: ui/albumcoverchoicecontroller.cpp:45 +#: ui/albumcoverchoicecontroller.cpp:46 msgid "Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" msgstr "圖片(*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)" -#: core/utilities.cpp:147 +#: core/utilities.cpp:141 #, qt-format msgid "In %1 days" msgstr "" -#: core/utilities.cpp:151 +#: core/utilities.cpp:144 #, qt-format msgid "In %1 weeks" msgstr "" @@ -2548,7 +2619,7 @@ msgid "" "time a song finishes." msgstr "在動態模式中當一手個播畢新的音軌會被選中且新增至播放清單" -#: internet/spotifyservice.cpp:360 +#: internet/spotifyservice.cpp:371 msgid "Inbox" msgstr "收件匣" @@ -2560,36 +2631,36 @@ msgstr "包括封面圖片的通知" msgid "Include all songs" msgstr "包括所有歌曲" -#: internet/subsonicsettingspage.cpp:90 +#: internet/subsonicsettingspage.cpp:85 msgid "Incompatible Subsonic REST protocol version. Client must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:94 +#: internet/subsonicsettingspage.cpp:90 msgid "Incompatible Subsonic REST protocol version. Server must upgrade." msgstr "" -#: internet/subsonicsettingspage.cpp:127 +#: internet/subsonicsettingspage.cpp:131 msgid "Incomplete configuration, please ensure all fields are populated." msgstr "" -#: core/commandlineoptions.cpp:158 +#: core/commandlineoptions.cpp:150 msgid "Increase the volume by 4%" msgstr "增加音量4%" -#: core/commandlineoptions.cpp:160 +#: core/commandlineoptions.cpp:152 msgid "Increase the volume by percent" msgstr "" -#: core/globalshortcuts.cpp:53 wiimotedev/wiimotesettingspage.cpp:103 +#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:103 msgid "Increase volume" msgstr "提高音量" -#: internet/cloudfileservice.cpp:136 +#: internet/cloudfileservice.cpp:133 #, qt-format msgid "Indexing %1" msgstr "" -#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:124 +#: ../bin/src/ui_deviceproperties.h:373 wiimotedev/wiimotesettingspage.cpp:132 msgid "Information" msgstr "資訊" @@ -2597,55 +2668,55 @@ msgstr "資訊" msgid "Input options" msgstr "" -#: ../bin/src/ui_organisedialog.h:203 +#: ../bin/src/ui_organisedialog.h:249 msgid "Insert..." msgstr "插入..." -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Installed" msgstr "已安裝" -#: core/database.cpp:583 +#: core/database.cpp:577 msgid "Integrity check" msgstr "" -#: ui/mainwindow.cpp:244 +#: ui/mainwindow.cpp:237 msgid "Internet" msgstr "網路" -#: ui/settingsdialog.cpp:153 +#: ui/settingsdialog.cpp:155 msgid "Internet providers" msgstr "網際網路服務供應商" -#: internet/lastfmservice.cpp:433 +#: internet/lastfmservice.cpp:234 msgid "Invalid API key" msgstr "無效的 API key" -#: internet/lastfmservice.cpp:428 +#: internet/lastfmservice.cpp:224 msgid "Invalid format" msgstr "無效的格式" -#: internet/lastfmservice.cpp:426 +#: internet/lastfmservice.cpp:220 msgid "Invalid method" msgstr "無效的方法" -#: internet/lastfmservice.cpp:429 +#: internet/lastfmservice.cpp:226 msgid "Invalid parameters" msgstr "無效的參數" -#: internet/lastfmservice.cpp:430 +#: internet/lastfmservice.cpp:228 msgid "Invalid resource specified" msgstr "無效的資源指定" -#: internet/lastfmservice.cpp:425 +#: internet/lastfmservice.cpp:218 msgid "Invalid service" msgstr "無效的服務" -#: internet/lastfmservice.cpp:432 +#: internet/lastfmservice.cpp:232 msgid "Invalid session key" msgstr "無效對稱金鑰" -#: internet/groovesharkservice.cpp:401 +#: internet/groovesharkservice.cpp:400 msgid "Invalid username and/or password" msgstr "無效使用者名稱 及/或 密碼" @@ -2653,42 +2724,42 @@ msgstr "無效使用者名稱 及/或 密碼" msgid "Invert Selection" msgstr "" -#: internet/jamendoservice.cpp:127 +#: internet/jamendoservice.cpp:133 msgid "Jamendo" msgstr "Jamendo" -#: internet/jamendoservice.cpp:109 +#: internet/jamendoservice.cpp:117 msgid "Jamendo Most Listened Tracks" msgstr "Jamendo 最常聆聽音軌" -#: internet/jamendoservice.cpp:107 +#: internet/jamendoservice.cpp:114 msgid "Jamendo Top Tracks" msgstr "Jamendo 熱門曲目" -#: internet/jamendoservice.cpp:103 +#: internet/jamendoservice.cpp:108 msgid "Jamendo Top Tracks of the Month" msgstr "Jamendo 每月熱門曲目" -#: internet/jamendoservice.cpp:105 +#: internet/jamendoservice.cpp:111 msgid "Jamendo Top Tracks of the Week" msgstr "Jamendo 每週熱門曲目" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:175 msgid "Jamendo database" msgstr "Jamendo 資料庫" -#: ../bin/src/ui_mainwindow.h:703 +#: ../bin/src/ui_mainwindow.h:685 msgid "Jump to the currently playing track" msgstr "跳轉到目前播放的曲目" -#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:69 #, qt-format msgid "Keep buttons for %1 second..." msgstr "按住按鈕 %1 秒..." #: ../bin/src/ui_wiimoteshortcutgrabber.h:127 -#: wiimotedev/wiimoteshortcutgrabber.cpp:73 -#: wiimotedev/wiimoteshortcutgrabber.cpp:117 +#: wiimotedev/wiimoteshortcutgrabber.cpp:72 +#: wiimotedev/wiimoteshortcutgrabber.cpp:114 #, qt-format msgid "Keep buttons for %1 seconds..." msgstr "按住按鈕 %1 秒..." @@ -2697,23 +2768,24 @@ msgstr "按住按鈕 %1 秒..." msgid "Keep running in the background when the window is closed" msgstr "當視窗關閉時,保持在背景運轉" -#: ../bin/src/ui_organisedialog.h:193 +#: ../bin/src/ui_organisedialog.h:239 msgid "Keep the original files" msgstr "保留原本的檔案" -#: ../bin/src/ui_mainwindow.h:695 +#: ../bin/src/ui_mainwindow.h:677 +msgctxt "Label for buton to enable/disable kittens in the now playing widget" msgid "Kittens" -msgstr "小貓" +msgstr "" #: ../bin/src/ui_behavioursettingspage.h:195 msgid "Language" msgstr "語言" -#: ui/equalizer.cpp:123 +#: ui/equalizer.cpp:127 msgid "Laptop/Headphones" msgstr "筆記本電腦 /耳機" -#: ui/equalizer.cpp:124 +#: ui/equalizer.cpp:129 msgid "Large Hall" msgstr "大型音樂廳" @@ -2721,58 +2793,24 @@ msgstr "大型音樂廳" msgid "Large album cover" msgstr "大的專輯封面" -#: widgets/fancytabwidget.cpp:670 +#: widgets/fancytabwidget.cpp:662 msgid "Large sidebar" msgstr "大型側邊欄" -#: library/library.cpp:71 playlist/playlist.cpp:1225 -#: ../bin/src/ui_edittagdialog.h:671 +#: library/library.cpp:80 msgid "Last played" msgstr "最近播放" +#: playlist/playlist.cpp:1330 ../bin/src/ui_edittagdialog.h:671 +msgctxt "A playlist's tag." +msgid "Last played" +msgstr "" + #: ../bin/src/ui_lastfmsettingspage.h:150 msgid "Last.fm" msgstr "Last.fm" -#: internet/lastfmservice.cpp:85 -#, qt-format -msgid "Last.fm Custom Radio: %1" -msgstr "Last.fm 自訂頻道: %1" - -#: internet/lastfmservice.cpp:255 internet/lastfmservice.cpp:699 -#: internet/lastfmservice.cpp:722 -#, qt-format -msgid "Last.fm Library - %1" -msgstr "Last.fm 音樂庫 - %1" - -#: globalsearch/lastfmsearchprovider.cpp:77 internet/lastfmservice.cpp:257 -#: internet/lastfmservice.cpp:260 -#, qt-format -msgid "Last.fm Mix Radio - %1" -msgstr "Last.fm 混合頻道 - %1" - -#: globalsearch/lastfmsearchprovider.cpp:79 internet/lastfmservice.cpp:262 -#: internet/lastfmservice.cpp:265 -#, qt-format -msgid "Last.fm Neighbor Radio - %1" -msgstr "Last.fm 鄰近頻道 -%1" - -#: globalsearch/lastfmsearchprovider.cpp:75 internet/lastfmservice.cpp:252 -#, qt-format -msgid "Last.fm Radio Station - %1" -msgstr "Last.fm 廣播電台 - %1" - -#: internet/lastfmservice.cpp:83 -#, qt-format -msgid "Last.fm Similar Artists to %1" -msgstr "Last.fm 類似的演出者至%1" - -#: internet/lastfmservice.cpp:84 -#, qt-format -msgid "Last.fm Tag Radio: %1" -msgstr "Last.fm 標籤頻道: %1" - -#: internet/lastfmservice.cpp:437 +#: internet/lastfmservice.cpp:241 msgid "Last.fm is currently busy, please try again in a few minutes" msgstr "Last.fm 目前正在忙,請在幾分鐘後再試一次" @@ -2780,11 +2818,11 @@ msgstr "Last.fm 目前正在忙,請在幾分鐘後再試一次" msgid "Last.fm password" msgstr "Last.fm 密碼" -#: songinfo/lastfmtrackinfoprovider.cpp:78 +#: songinfo/lastfmtrackinfoprovider.cpp:76 msgid "Last.fm play counts" msgstr "Last.fm 播放計數" -#: songinfo/lastfmtrackinfoprovider.cpp:131 +#: songinfo/lastfmtrackinfoprovider.cpp:130 msgid "Last.fm tags" msgstr "Last.fm 標籤" @@ -2792,28 +2830,24 @@ msgstr "Last.fm 標籤" msgid "Last.fm username" msgstr "Last.fm 帳號" -#: songinfo/lastfmtrackinfoprovider.cpp:111 +#: songinfo/lastfmtrackinfoprovider.cpp:110 msgid "Last.fm wiki" msgstr "Last.fm 維基百科" -#: library/library.cpp:87 +#: library/library.cpp:102 msgid "Least favourite tracks" msgstr "最不喜歡的曲目" -#: ../bin/src/ui_playbacksettingspage.h:326 -msgid "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc." -msgstr "如果送出空白將使用預設值。\n範例: \"/dev/dsp\",\"front\"等等。" - #: ../bin/src/ui_equalizer.h:172 msgid "Left" msgstr "" -#: playlist/playlist.cpp:1212 ui/organisedialog.cpp:69 -#: ui/qtsystemtrayicon.cpp:255 ../bin/src/ui_edittagdialog.h:666 +#: playlist/playlist.cpp:1305 ui/organisedialog.cpp:74 +#: ui/qtsystemtrayicon.cpp:239 ../bin/src/ui_edittagdialog.h:666 msgid "Length" msgstr "長度" -#: ui/mainwindow.cpp:231 ui/mainwindow.cpp:241 +#: ui/mainwindow.cpp:219 ui/mainwindow.cpp:232 msgid "Library" msgstr "音樂庫" @@ -2821,24 +2855,24 @@ msgstr "音樂庫" msgid "Library advanced grouping" msgstr "音樂庫進階的歸類" -#: ui/mainwindow.cpp:2145 +#: ui/mainwindow.cpp:2382 msgid "Library rescan notice" msgstr "音樂庫重新掃描提示" -#: smartplaylists/querywizardplugin.cpp:86 +#: smartplaylists/querywizardplugin.cpp:79 msgid "Library search" msgstr "音樂庫搜尋" -#: ../bin/src/ui_querysortpage.h:140 +#: ../bin/src/ui_querysortpage.h:141 msgid "Limits" msgstr "限制" -#: internet/groovesharkservice.cpp:604 +#: internet/groovesharkservice.cpp:621 msgid "" "Listen to Grooveshark songs based on what you've listened to previously" msgstr "聽取 Grooveshark 歌曲,根據您先前已經聽過的" -#: ui/equalizer.cpp:125 +#: ui/equalizer.cpp:131 msgid "Live" msgstr "即時" @@ -2850,15 +2884,15 @@ msgstr "載入" msgid "Load cover from URL" msgstr "從網址載入封面" -#: ui/albumcoverchoicecontroller.cpp:61 +#: ui/albumcoverchoicecontroller.cpp:64 msgid "Load cover from URL..." msgstr "從網址載入封面..." -#: ui/albumcoverchoicecontroller.cpp:98 +#: ui/albumcoverchoicecontroller.cpp:104 msgid "Load cover from disk" msgstr "從磁碟載入封面" -#: ui/albumcoverchoicecontroller.cpp:59 +#: ui/albumcoverchoicecontroller.cpp:60 msgid "Load cover from disk..." msgstr "從磁碟載入封面..." @@ -2866,84 +2900,89 @@ msgstr "從磁碟載入封面..." msgid "Load playlist" msgstr "載入播放清單" -#: ../bin/src/ui_mainwindow.h:709 +#: ../bin/src/ui_mainwindow.h:691 msgid "Load playlist..." msgstr "載入播放清單..." -#: internet/lastfmservice.cpp:884 -msgid "Loading Last.fm radio" -msgstr "載入 Last.fm 電台" - #: devices/mtploader.cpp:42 msgid "Loading MTP device" msgstr "載入 MTP 裝置" -#: devices/gpodloader.cpp:46 +#: devices/gpodloader.cpp:45 msgid "Loading iPod database" msgstr "載入 iPod 資料庫" -#: smartplaylists/generatorinserter.cpp:52 +#: smartplaylists/generatorinserter.cpp:50 msgid "Loading smart playlist" msgstr "載入智慧型播放清單" -#: library/librarymodel.cpp:139 +#: library/librarymodel.cpp:148 msgid "Loading songs" msgstr "載入歌曲" -#: internet/digitallyimportedurlhandler.cpp:67 -#: internet/somafmurlhandler.cpp:58 +#: internet/digitallyimportedurlhandler.cpp:63 +#: internet/somafmurlhandler.cpp:49 msgid "Loading stream" msgstr "載入串流" -#: playlist/songloaderinserter.cpp:81 ui/edittagdialog.cpp:233 +#: playlist/songloaderinserter.cpp:124 ui/edittagdialog.cpp:242 msgid "Loading tracks" msgstr "載入曲目" -#: playlist/songloaderinserter.cpp:141 +#: playlist/songloaderinserter.cpp:144 msgid "Loading tracks info" msgstr "載入曲目資訊" -#: library/librarymodel.cpp:134 podcasts/podcastdiscoverymodel.cpp:97 -#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:99 +#: library/librarymodel.cpp:143 podcasts/podcastdiscoverymodel.cpp:102 +#: widgets/prettyimage.cpp:168 widgets/widgetfadehelper.cpp:96 +#: internet/vkservice.cpp:485 internet/vksettingspage.cpp:122 #: ../bin/src/ui_addpodcastdialog.h:180 ../bin/src/ui_searchpreview.h:106 +#: ../bin/src/ui_organisedialog.h:255 msgid "Loading..." msgstr "載入中..." -#: core/commandlineoptions.cpp:167 +#: core/commandlineoptions.cpp:162 msgid "Loads files/URLs, replacing current playlist" msgstr "載入檔案/網址,取代目前的播放清單" +#: internet/vksettingspage.cpp:110 #: ../bin/src/ui_digitallyimportedsettingspage.h:163 -#: ../bin/src/ui_groovesharksettingspage.h:116 +#: ../bin/src/ui_groovesharksettingspage.h:144 #: ../bin/src/ui_magnatunesettingspage.h:164 +#: ../bin/src/ui_soundcloudsettingspage.h:106 #: ../bin/src/ui_spotifysettingspage.h:211 #: ../bin/src/ui_subsonicsettingspage.h:130 -#: ../bin/src/ui_dropboxsettingspage.h:105 ../bin/src/ui_boxsettingspage.h:105 +#: ../bin/src/ui_dropboxsettingspage.h:105 +#: ../bin/src/ui_skydrivesettingspage.h:105 +#: ../bin/src/ui_boxsettingspage.h:105 ../bin/src/ui_vksettingspage.h:213 #: ../bin/src/ui_lastfmsettingspage.h:153 #: ../bin/src/ui_googledrivesettingspage.h:105 -#: ../bin/src/ui_ubuntuonesettingspage.h:131 msgid "Login" msgstr "登錄" -#: podcasts/podcastsettingspage.cpp:119 +#: podcasts/podcastsettingspage.cpp:120 msgid "Login failed" msgstr "登錄失敗" +#: internet/vksettingspage.cpp:121 +msgid "Logout" +msgstr "" + #: ../bin/src/ui_transcoderoptionsaac.h:137 msgid "Long term prediction profile (LTP)" msgstr "長時期預測規格 (LTP)" -#: ../bin/src/ui_mainwindow.h:664 +#: ../bin/src/ui_mainwindow.h:648 msgid "Love" msgstr "喜愛" -#: analyzers/analyzercontainer.cpp:62 +#: analyzers/analyzercontainer.cpp:61 #: visualisations/visualisationcontainer.cpp:107 #, qt-format msgid "Low (%1 fps)" msgstr "低 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:117 +#: visualisations/visualisationcontainer.cpp:121 msgid "Low (256x256)" msgstr "低 (256x256)" @@ -2955,12 +2994,17 @@ msgstr "低複雜度規格 (LC)" msgid "Lyrics" msgstr "歌詞" -#: songinfo/ultimatelyricsprovider.cpp:156 +#: songinfo/ultimatelyricsprovider.cpp:154 #, qt-format msgid "Lyrics from %1" msgstr "歌詞來自 %1" -#: core/song.cpp:343 ../bin/src/ui_transcodersettingspage.h:175 +#: transcoder/transcoder.cpp:232 +msgid "M4A AAC" +msgstr "" + +#: core/song.cpp:385 transcoder/transcoder.cpp:235 +#: ../bin/src/ui_transcodersettingspage.h:175 msgid "MP3" msgstr "MP3" @@ -2972,15 +3016,15 @@ msgstr "MP3 256k" msgid "MP3 96k" msgstr "MP3 96k" -#: core/song.cpp:341 +#: core/song.cpp:381 msgid "MP4 AAC" msgstr "MP4 AAC" -#: core/song.cpp:342 +#: core/song.cpp:383 msgid "MPC" msgstr "MPC" -#: internet/magnatuneservice.cpp:103 ../bin/src/ui_magnatunesettingspage.h:154 +#: internet/magnatuneservice.cpp:101 ../bin/src/ui_magnatunesettingspage.h:154 msgid "Magnatune" msgstr "Magnatune" @@ -2988,7 +3032,7 @@ msgstr "Magnatune" msgid "Magnatune Download" msgstr "Magnatune 下載" -#: widgets/osd.cpp:195 +#: widgets/osd.cpp:192 msgid "Magnatune download finished" msgstr "Magnatune 下載完成" @@ -2996,15 +3040,20 @@ msgstr "Magnatune 下載完成" msgid "Main profile (MAIN)" msgstr "主規格 (MAIN)" -#: core/backgroundstreams.cpp:36 ../bin/src/ui_mainwindow.h:694 +#: core/backgroundstreams.cpp:33 msgid "Make it so!" msgstr "使它這樣的!" -#: internet/spotifyservice.cpp:533 +#: ../bin/src/ui_mainwindow.h:676 +msgctxt "Label for button to enable/disable Enterprise background sound." +msgid "Make it so!" +msgstr "" + +#: internet/spotifyservice.cpp:552 msgid "Make playlist available offline" msgstr "使播放清單可離線使用" -#: internet/lastfmservice.cpp:444 +#: internet/lastfmservice.cpp:253 msgid "Malformed response" msgstr "格式不正確的反應" @@ -3017,15 +3066,15 @@ msgstr "手動代理伺服器設定" msgid "Manually" msgstr "手動" -#: devices/deviceproperties.cpp:153 +#: devices/deviceproperties.cpp:156 msgid "Manufacturer" msgstr "製造商" -#: podcasts/podcastservice.cpp:346 +#: podcasts/podcastservice.cpp:357 msgid "Mark as listened" msgstr "標記為聽過的" -#: podcasts/podcastservice.cpp:344 +#: podcasts/podcastservice.cpp:356 msgid "Mark as new" msgstr "" @@ -3037,17 +3086,21 @@ msgstr "符合每個搜尋字詞(AND)" msgid "Match one or more search terms (OR)" msgstr "符合一個或更多搜尋字詞(OR)" +#: ../bin/src/ui_vksettingspage.h:215 +msgid "Max global search results" +msgstr "" + #: ../bin/src/ui_transcoderoptionsvorbis.h:209 msgid "Maximum bitrate" msgstr "最大位元率" -#: analyzers/analyzercontainer.cpp:63 -#: visualisations/visualisationcontainer.cpp:108 +#: analyzers/analyzercontainer.cpp:62 +#: visualisations/visualisationcontainer.cpp:109 #, qt-format msgid "Medium (%1 fps)" msgstr "中 (%1 fps)" -#: visualisations/visualisationcontainer.cpp:118 +#: visualisations/visualisationcontainer.cpp:122 msgid "Medium (512x512)" msgstr "中 (512x512)" @@ -3059,11 +3112,15 @@ msgstr "會員類型" msgid "Minimum bitrate" msgstr "最小位元率" -#: visualisations/projectmvisualisation.cpp:132 +#: ../bin/src/ui_playbacksettingspage.h:336 +msgid "Minimum buffer fill" +msgstr "" + +#: visualisations/projectmvisualisation.cpp:131 msgid "Missing projectM presets" msgstr "略過 projectM 預設" -#: devices/deviceproperties.cpp:152 +#: devices/deviceproperties.cpp:155 msgid "Model" msgstr "樣本" @@ -3071,20 +3128,20 @@ msgstr "樣本" msgid "Monitor the library for changes" msgstr "監視音樂庫的變化" -#: ../bin/src/ui_playbacksettingspage.h:332 +#: ../bin/src/ui_playbacksettingspage.h:340 msgid "Mono playback" msgstr "單聲道播放" -#: smartplaylists/searchterm.cpp:313 +#: smartplaylists/searchterm.cpp:392 msgid "Months" msgstr "月" -#: playlist/playlist.cpp:1240 +#: playlist/playlist.cpp:1358 msgid "Mood" msgstr "" #: ../bin/src/ui_appearancesettingspage.h:294 -#: moodbar/moodbarproxystyle.cpp:342 +#: moodbar/moodbarproxystyle.cpp:376 msgid "Moodbar style" msgstr "" @@ -3092,15 +3149,19 @@ msgstr "" msgid "Moodbars" msgstr "" -#: library/library.cpp:74 +#: internet/vkservice.cpp:489 +msgid "More" +msgstr "" + +#: library/library.cpp:84 msgid "Most played" msgstr "最常播放的" -#: devices/giolister.cpp:159 +#: devices/giolister.cpp:155 msgid "Mount point" msgstr "掛載點" -#: devices/devicekitlister.cpp:125 +#: devices/devicekitlister.cpp:127 msgid "Mount points" msgstr "掛載點" @@ -3109,7 +3170,7 @@ msgstr "掛載點" msgid "Move down" msgstr "下移" -#: ui/mainwindow.cpp:515 widgets/fileviewlist.cpp:41 +#: ui/mainwindow.cpp:595 widgets/fileviewlist.cpp:40 msgid "Move to library..." msgstr "移到音樂庫..." @@ -3118,7 +3179,7 @@ msgstr "移到音樂庫..." msgid "Move up" msgstr "上移" -#: transcoder/transcodedialog.cpp:221 ui/mainwindow.cpp:1625 +#: transcoder/transcodedialog.cpp:216 ui/mainwindow.cpp:1798 msgid "Music" msgstr "音樂" @@ -3126,56 +3187,32 @@ msgstr "音樂" msgid "Music Library" msgstr "音樂庫" -#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:717 -#: wiimotedev/wiimotesettingspage.cpp:105 +#: core/globalshortcuts.cpp:59 ../bin/src/ui_mainwindow.h:699 +#: wiimotedev/wiimotesettingspage.cpp:106 msgid "Mute" msgstr "靜音" -#: globalsearch/lastfmsearchprovider.cpp:53 internet/lastfmservice.cpp:195 -msgid "My Last.fm Library" -msgstr "我的 Last.fm 音樂庫" - -#: globalsearch/lastfmsearchprovider.cpp:55 internet/lastfmservice.cpp:200 -msgid "My Last.fm Mix Radio" -msgstr "我的 Last.fm 混合頻道" - -#: globalsearch/lastfmsearchprovider.cpp:57 internet/lastfmservice.cpp:205 -msgid "My Last.fm Neighborhood" -msgstr "我的 Last.fm 鄰居" - -#: globalsearch/lastfmsearchprovider.cpp:51 internet/lastfmservice.cpp:190 -msgid "My Last.fm Recommended Radio" -msgstr "我的 Last.fm 推薦頻道" - -#: internet/lastfmservice.cpp:197 -msgid "My Mix Radio" -msgstr "我的混合頻道" - -#: internet/groovesharkservice.cpp:608 +#: internet/groovesharkservice.cpp:628 internet/vkservice.cpp:504 msgid "My Music" msgstr "" -#: internet/lastfmservice.cpp:202 -msgid "My Neighborhood" -msgstr "我的鄰居" - -#: internet/lastfmservice.cpp:192 -msgid "My Radio Station" -msgstr "我的廣播電台" - -#: internet/lastfmservice.cpp:187 +#: internet/vkservice.cpp:496 msgid "My Recommendations" msgstr "我推薦的電台" -#: internet/groovesharkservice.cpp:1245 internet/groovesharkservice.cpp:1338 -#: ui/equalizer.cpp:182 ../bin/src/ui_deviceproperties.h:369 -#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: internet/groovesharkservice.cpp:1287 internet/groovesharkservice.cpp:1382 +#: ui/equalizer.cpp:199 ../bin/src/ui_deviceproperties.h:369 #: ../bin/src/ui_wizardfinishpage.h:84 -#: ../bin/src/ui_globalshortcutssettingspage.h:174 msgid "Name" msgstr "名稱" -#: ../bin/src/ui_organisedialog.h:197 +#: ../bin/src/ui_magnatunedownloaddialog.h:135 +#: ../bin/src/ui_globalshortcutssettingspage.h:184 +msgctxt "Category label" +msgid "Name" +msgstr "" + +#: ../bin/src/ui_organisedialog.h:243 msgid "Naming options" msgstr "命名選項" @@ -3183,23 +3220,19 @@ msgstr "命名選項" msgid "Narrow band (NB)" msgstr "窄頻 (NB)" -#: internet/lastfmservice.cpp:229 -msgid "Neighbors" -msgstr "鄰居" - #: ../bin/src/ui_networkproxysettingspage.h:157 msgid "Network Proxy" msgstr "網路代理伺服器" -#: ../bin/src/ui_networkremotesettingspage.h:177 +#: ../bin/src/ui_networkremotesettingspage.h:178 msgid "Network Remote" msgstr "" -#: playlist/playlistdelegates.cpp:304 ui/edittagdialog.cpp:487 +#: playlist/playlistdelegates.cpp:296 ui/edittagdialog.cpp:507 msgid "Never" msgstr "從未" -#: library/library.cpp:67 +#: library/library.cpp:73 msgid "Never played" msgstr "從未播放" @@ -3208,21 +3241,21 @@ msgstr "從未播放" msgid "Never start playing" msgstr "永不開始播放" -#: playlist/playlistlistcontainer.cpp:72 -#: playlist/playlistlistcontainer.cpp:171 +#: playlist/playlistlistcontainer.cpp:69 +#: playlist/playlistlistcontainer.cpp:168 #: ../bin/src/ui_playlistlistcontainer.h:128 msgid "New folder" msgstr "" -#: ui/mainwindow.cpp:1465 ../bin/src/ui_mainwindow.h:705 +#: ui/mainwindow.cpp:1635 ../bin/src/ui_mainwindow.h:687 msgid "New playlist" msgstr "新增播放清單" -#: library/libraryview.cpp:379 +#: library/libraryview.cpp:385 msgid "New smart playlist..." msgstr "新增智慧型播放清單" -#: widgets/freespacebar.cpp:46 +#: widgets/freespacebar.cpp:45 msgid "New songs" msgstr "新的歌曲" @@ -3230,24 +3263,24 @@ msgstr "新的歌曲" msgid "New tracks will be added automatically." msgstr "新曲目將被自動加入。" -#: library/library.cpp:80 +#: library/library.cpp:92 msgid "Newest tracks" msgstr "最新曲目" -#: ui/edittagdialog.cpp:161 ui/trackselectiondialog.cpp:49 +#: ui/edittagdialog.cpp:163 ui/trackselectiondialog.cpp:48 msgid "Next" msgstr "下一個" -#: core/globalshortcuts.cpp:51 ../bin/src/ui_mainwindow.h:658 -#: wiimotedev/wiimotesettingspage.cpp:99 +#: core/globalshortcuts.cpp:53 ../bin/src/ui_mainwindow.h:642 +#: wiimotedev/wiimotesettingspage.cpp:97 msgid "Next track" msgstr "下一首曲目" -#: core/utilities.cpp:149 +#: core/utilities.cpp:142 msgid "Next week" msgstr "" -#: analyzers/analyzercontainer.cpp:80 +#: analyzers/analyzercontainer.cpp:79 msgid "No analyzer" msgstr "沒有分析儀" @@ -3255,7 +3288,7 @@ msgstr "沒有分析儀" msgid "No background image" msgstr "沒有背景圖片" -#: ui/albumcovermanager.cpp:778 +#: ui/albumcovermanager.cpp:786 msgid "No covers to export." msgstr "" @@ -3263,7 +3296,7 @@ msgstr "" msgid "No long blocks" msgstr "無長區塊" -#: playlist/playlistcontainer.cpp:366 +#: playlist/playlistcontainer.cpp:365 msgid "" "No matches found. Clear the search box to show the whole playlist again." msgstr "沒有找到符合的.清除搜尋框,再次顯示整個播放清單" @@ -3277,11 +3310,11 @@ msgstr "無短區塊" msgid "None" msgstr "沒有" -#: library/libraryview.cpp:603 ui/mainwindow.cpp:1913 ui/mainwindow.cpp:2029 +#: library/libraryview.cpp:631 ui/mainwindow.cpp:2111 ui/mainwindow.cpp:2259 msgid "None of the selected songs were suitable for copying to a device" msgstr "所選歌曲沒有適合複製到裝置的" -#: moodbar/moodbarrenderer.cpp:155 +#: moodbar/moodbarrenderer.cpp:169 msgid "Normal" msgstr "" @@ -3289,43 +3322,47 @@ msgstr "" msgid "Normal block type" msgstr "普通區塊型態" -#: playlist/playlistsequence.cpp:170 +#: playlist/playlistsequence.cpp:189 msgid "Not available while using a dynamic playlist" msgstr "不可使用,當使用一個動態播放清單" -#: devices/deviceview.cpp:107 +#: devices/deviceview.cpp:109 msgid "Not connected" msgstr "沒有連接" -#: internet/lastfmservice.cpp:439 +#: internet/lastfmservice.cpp:244 msgid "Not enough content" msgstr "沒有足夠的內容" -#: internet/lastfmservice.cpp:441 +#: internet/lastfmservice.cpp:248 msgid "Not enough fans" msgstr "沒有足夠的粉絲" -#: internet/lastfmservice.cpp:440 +#: internet/lastfmservice.cpp:246 msgid "Not enough members" msgstr "沒有足夠的成員" -#: internet/lastfmservice.cpp:442 +#: internet/lastfmservice.cpp:250 msgid "Not enough neighbors" msgstr "沒有足夠的鄰居" -#: internet/spotifysettingspage.cpp:75 +#: internet/spotifysettingspage.cpp:72 msgid "Not installed" msgstr "沒有安裝" -#: globalsearch/globalsearchsettingspage.cpp:120 -#: globalsearch/searchproviderstatuswidget.cpp:48 +#: globalsearch/globalsearchsettingspage.cpp:119 +#: globalsearch/searchproviderstatuswidget.cpp:47 msgid "Not logged in" msgstr "沒有登錄" -#: devices/deviceview.cpp:111 +#: devices/deviceview.cpp:113 msgid "Not mounted - double click to mount" msgstr "未掛載 - 雙擊以掛載" +#: internet/vksearchdialog.cpp:94 +msgid "Nothing found" +msgstr "" + #: ../bin/src/ui_notificationssettingspage.h:432 msgid "Notification type" msgstr "通知型式" @@ -3338,36 +3375,41 @@ msgstr "通知" msgid "Now Playing" msgstr "現在正播放" -#: ui/notificationssettingspage.cpp:37 +#: ui/notificationssettingspage.cpp:36 msgid "OSD Preview" msgstr "OSD 的預覽" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "Off" msgstr "" -#: core/song.cpp:344 +#: core/song.cpp:387 transcoder/transcoder.cpp:241 msgid "Ogg Flac" msgstr "Ogg Flac" -#: core/song.cpp:347 +#: core/song.cpp:393 transcoder/transcoder.cpp:247 msgid "Ogg Opus" msgstr "" -#: core/song.cpp:345 +#: core/song.cpp:389 transcoder/transcoder.cpp:244 msgid "Ogg Speex" msgstr "Ogg Speex" -#: core/song.cpp:346 ../bin/src/ui_magnatunedownloaddialog.h:139 +#: core/song.cpp:391 transcoder/transcoder.cpp:238 +#: ../bin/src/ui_magnatunedownloaddialog.h:139 #: ../bin/src/ui_magnatunesettingspage.h:170 msgid "Ogg Vorbis" msgstr "Ogg Vorbis" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 msgid "On" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:182 +#: ../bin/src/ui_skydrivesettingspage.h:103 +msgid "OneDrive" +msgstr "" + +#: ../bin/src/ui_networkremotesettingspage.h:183 msgid "" "Only accept connections from clients within the ip ranges:\n" "10.x.x.x\n" @@ -3375,11 +3417,11 @@ msgid "" "192.168.x.x" msgstr "" -#: ../bin/src/ui_networkremotesettingspage.h:187 +#: ../bin/src/ui_networkremotesettingspage.h:188 msgid "Only allow connections from the local network" msgstr "" -#: ../bin/src/ui_querysortpage.h:142 +#: ../bin/src/ui_querysortpage.h:143 msgid "Only show the first" msgstr "只顯示第一" @@ -3387,23 +3429,23 @@ msgstr "只顯示第一" msgid "Opacity" msgstr "" -#: internet/digitallyimportedservicebase.cpp:179 -#: internet/groovesharkservice.cpp:546 internet/icecastservice.cpp:296 -#: internet/jamendoservice.cpp:419 internet/magnatuneservice.cpp:278 -#: internet/somafmservice.cpp:100 internet/soundcloudservice.cpp:194 +#: internet/digitallyimportedservicebase.cpp:172 +#: internet/groovesharkservice.cpp:554 internet/icecastservice.cpp:297 +#: internet/jamendoservice.cpp:428 internet/magnatuneservice.cpp:276 +#: internet/somafmservice.cpp:97 internet/soundcloudservice.cpp:356 #, qt-format msgid "Open %1 in browser" msgstr "在瀏覽器中開啟 %1" -#: ../bin/src/ui_mainwindow.h:690 +#: ../bin/src/ui_mainwindow.h:672 msgid "Open &audio CD..." msgstr "開啟音樂光碟(&A)..." -#: podcasts/addpodcastdialog.cpp:230 +#: podcasts/addpodcastdialog.cpp:235 msgid "Open OPML file" msgstr "" -#: podcasts/addpodcastdialog.cpp:73 +#: podcasts/addpodcastdialog.cpp:77 msgid "Open OPML file..." msgstr "" @@ -3411,30 +3453,35 @@ msgstr "" msgid "Open device" msgstr "開啟裝置" -#: ../bin/src/ui_mainwindow.h:689 +#: ../bin/src/ui_mainwindow.h:671 msgid "Open file..." msgstr "開啟檔案..." -#: internet/googledriveservice.cpp:184 +#: internet/googledriveservice.cpp:193 msgid "Open in Google Drive" msgstr "" -#: devices/deviceview.cpp:215 globalsearch/globalsearchview.cpp:437 -#: internet/internetservice.cpp:76 library/libraryview.cpp:371 -#: widgets/fileviewlist.cpp:36 ../bin/src/ui_behavioursettingspage.h:219 +#: devices/deviceview.cpp:221 globalsearch/globalsearchview.cpp:460 +#: internet/internetservice.cpp:75 library/libraryview.cpp:375 +#: widgets/fileviewlist.cpp:35 msgid "Open in new playlist" msgstr "開啟在新的播放清單" -#: songinfo/echonestbiographies.cpp:96 +#: ../bin/src/ui_behavioursettingspage.h:219 +msgctxt "Refers to behavior settings in Clementine settings page." +msgid "Open in new playlist" +msgstr "" + +#: songinfo/echonestbiographies.cpp:97 msgid "Open in your browser" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:169 -#: ../bin/src/ui_globalshortcutssettingspage.h:171 +#: ../bin/src/ui_globalshortcutssettingspage.h:178 +#: ../bin/src/ui_globalshortcutssettingspage.h:181 msgid "Open..." msgstr "開啟..." -#: internet/lastfmservice.cpp:431 +#: internet/lastfmservice.cpp:230 msgid "Operation failed" msgstr "操作失敗" @@ -3454,23 +3501,23 @@ msgstr "選擇..." msgid "Opus" msgstr "" -#: ../bin/src/ui_organisedialog.h:188 +#: ../bin/src/ui_organisedialog.h:234 msgid "Organise Files" msgstr "組織檔案" -#: library/libraryview.cpp:387 ui/mainwindow.cpp:516 +#: library/libraryview.cpp:396 ui/mainwindow.cpp:598 msgid "Organise files..." msgstr "組織檔案..." -#: core/organise.cpp:66 +#: core/organise.cpp:67 msgid "Organising files" msgstr "組織檔案中" -#: ui/trackselectiondialog.cpp:167 +#: ui/trackselectiondialog.cpp:162 msgid "Original tags" msgstr "原來的標籤" -#: core/commandlineoptions.cpp:169 +#: core/commandlineoptions.cpp:164 msgid "Other options" msgstr "其它選項" @@ -3478,7 +3525,7 @@ msgstr "其它選項" msgid "Output" msgstr "" -#: ../bin/src/ui_playbacksettingspage.h:325 +#: ../bin/src/ui_playbacksettingspage.h:333 msgid "Output device" msgstr "" @@ -3486,15 +3533,11 @@ msgstr "" msgid "Output options" msgstr "輸出選項" -#: ../bin/src/ui_playbacksettingspage.h:320 -msgid "Output plugin" -msgstr "" - #: ../bin/src/ui_albumcoverexport.h:210 msgid "Overwrite all" msgstr "" -#: ../bin/src/ui_organisedialog.h:207 +#: ../bin/src/ui_organisedialog.h:253 msgid "Overwrite existing files" msgstr "覆寫現有的檔案" @@ -3506,15 +3549,15 @@ msgstr "" msgid "Owner" msgstr "擁有者" -#: internet/jamendoservice.cpp:214 +#: internet/jamendoservice.cpp:222 msgid "Parsing Jamendo catalogue" msgstr "擷取 Jamendo目錄" -#: ui/equalizer.cpp:126 +#: ui/equalizer.cpp:133 msgid "Party" msgstr "派對" -#: ../bin/src/ui_groovesharksettingspage.h:115 +#: ../bin/src/ui_groovesharksettingspage.h:143 #: ../bin/src/ui_magnatunesettingspage.h:165 #: ../bin/src/ui_spotifysettingspage.h:210 #: ../bin/src/ui_subsonicsettingspage.h:128 @@ -3523,20 +3566,20 @@ msgstr "派對" msgid "Password" msgstr "密碼" -#: core/globalshortcuts.cpp:47 ui/mainwindow.cpp:871 ui/mainwindow.cpp:1304 -#: ui/qtsystemtrayicon.cpp:178 wiimotedev/wiimotesettingspage.cpp:106 +#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:1007 ui/mainwindow.cpp:1448 +#: ui/qtsystemtrayicon.cpp:175 wiimotedev/wiimotesettingspage.cpp:107 msgid "Pause" msgstr "暫停" -#: core/commandlineoptions.cpp:153 +#: core/commandlineoptions.cpp:146 msgid "Pause playback" msgstr "暫停播放" -#: widgets/osd.cpp:156 +#: widgets/osd.cpp:153 msgid "Paused" msgstr "已暫停" -#: playlist/playlist.cpp:1219 ui/organisedialog.cpp:61 +#: playlist/playlist.cpp:1319 ui/organisedialog.cpp:66 #: ../bin/src/ui_edittagdialog.h:690 msgid "Performer" msgstr "" @@ -3545,34 +3588,22 @@ msgstr "" msgid "Pixel" msgstr "" -#: widgets/fancytabwidget.cpp:672 +#: widgets/fancytabwidget.cpp:664 msgid "Plain sidebar" msgstr "樸素的側邊欄" -#: core/globalshortcuts.cpp:46 ui/mainwindow.cpp:498 ui/mainwindow.cpp:839 -#: ui/mainwindow.cpp:858 ui/mainwindow.cpp:1307 ui/qtsystemtrayicon.cpp:166 -#: ui/qtsystemtrayicon.cpp:192 ../bin/src/ui_mainwindow.h:654 -#: wiimotedev/wiimotesettingspage.cpp:101 +#: core/globalshortcuts.cpp:45 ui/mainwindow.cpp:570 ui/mainwindow.cpp:977 +#: ui/mainwindow.cpp:994 ui/mainwindow.cpp:1451 ui/qtsystemtrayicon.cpp:164 +#: ui/qtsystemtrayicon.cpp:188 ../bin/src/ui_mainwindow.h:638 +#: wiimotedev/wiimotesettingspage.cpp:100 msgid "Play" msgstr "播放" -#: ../bin/src/ui_lastfmstationdialog.h:92 -msgid "Play Artist or Tag" -msgstr "播放藝術家或標籤" - -#: internet/lastfmservice.cpp:118 -msgid "Play artist radio..." -msgstr "播放藝術加的頻道..." - -#: playlist/playlist.cpp:1223 ../bin/src/ui_edittagdialog.h:667 +#: playlist/playlist.cpp:1326 ../bin/src/ui_edittagdialog.h:667 msgid "Play count" msgstr "播放計數" -#: internet/lastfmservice.cpp:122 -msgid "Play custom radio..." -msgstr "播放自定義電台" - -#: core/commandlineoptions.cpp:152 +#: core/commandlineoptions.cpp:145 msgid "Play if stopped, pause if playing" msgstr "停止的話就開始播放,播放中的就暫停" @@ -3581,45 +3612,42 @@ msgstr "停止的話就開始播放,播放中的就暫停" msgid "Play if there is nothing already playing" msgstr "播放如果沒有歌曲是正在播放中" -#: internet/lastfmservice.cpp:120 -msgid "Play tag radio..." -msgstr "播放標籤的頻道..." - -#: core/commandlineoptions.cpp:168 +#: core/commandlineoptions.cpp:163 msgid "Play the th track in the playlist" msgstr "播放清單中的第首歌曲" -#: core/globalshortcuts.cpp:48 wiimotedev/wiimotesettingspage.cpp:107 +#: core/globalshortcuts.cpp:47 wiimotedev/wiimotesettingspage.cpp:109 msgid "Play/Pause" msgstr "播放/暫停" -#: ../bin/src/ui_playbacksettingspage.h:297 +#: ../bin/src/ui_playbacksettingspage.h:310 msgid "Playback" msgstr "播放" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:143 msgid "Player options" msgstr "播放器選項" -#: playlist/playlistcontainer.cpp:280 playlist/playlistlistcontainer.cpp:228 -#: playlist/playlistmanager.cpp:84 playlist/playlistmanager.cpp:152 -#: playlist/playlistmanager.cpp:497 playlist/playlisttabbar.cpp:357 +#: playlist/playlistcontainer.cpp:282 playlist/playlistlistcontainer.cpp:228 +#: playlist/playlistmanager.cpp:86 playlist/playlistmanager.cpp:155 +#: playlist/playlistmanager.cpp:466 playlist/playlisttabbar.cpp:349 msgid "Playlist" msgstr "播放清單" -#: widgets/osd.cpp:178 +#: widgets/osd.cpp:176 msgid "Playlist finished" msgstr "完成的播放清單" -#: core/commandlineoptions.cpp:165 +#: core/commandlineoptions.cpp:160 msgid "Playlist options" msgstr "播放清單選擇" -#: smartplaylists/wizard.cpp:77 +#: smartplaylists/wizard.cpp:72 msgid "Playlist type" msgstr "播放清單類型" -#: internet/groovesharkservice.cpp:626 ui/mainwindow.cpp:243 +#: internet/groovesharkservice.cpp:649 internet/soundcloudservice.cpp:130 +#: ui/mainwindow.cpp:235 msgid "Playlists" msgstr "播放清單" @@ -3631,23 +3659,23 @@ msgstr "" msgid "Plugin status:" msgstr "插件狀態:" -#: podcasts/podcastservice.cpp:116 ../bin/src/ui_podcastsettingspage.h:226 +#: podcasts/podcastservice.cpp:120 ../bin/src/ui_podcastsettingspage.h:226 msgid "Podcasts" msgstr "Podcasts" -#: ui/equalizer.cpp:127 +#: ui/equalizer.cpp:135 msgid "Pop" msgstr "流行音樂" -#: internet/groovesharkservice.cpp:577 +#: internet/groovesharkservice.cpp:586 msgid "Popular songs" msgstr "熱門歌曲" -#: internet/groovesharkservice.cpp:580 +#: internet/groovesharkservice.cpp:590 msgid "Popular songs of the Month" msgstr "月份熱門歌曲" -#: internet/groovesharkservice.cpp:587 +#: internet/groovesharkservice.cpp:599 msgid "Popular songs today" msgstr "今日熱門歌曲" @@ -3656,22 +3684,23 @@ msgid "Popup duration" msgstr "彈出持續時間" #: ../bin/src/ui_networkproxysettingspage.h:166 -#: ../bin/src/ui_networkremotesettingspage.h:180 +#: ../bin/src/ui_networkremotesettingspage.h:181 msgid "Port" msgstr "連接埠" -#: ui/equalizer.cpp:47 ../bin/src/ui_playbacksettingspage.h:317 +#: ui/equalizer.cpp:44 ../bin/src/ui_playbacksettingspage.h:330 msgid "Pre-amp" msgstr "前置放大" #: ../bin/src/ui_digitallyimportedsettingspage.h:166 +#: ../bin/src/ui_groovesharksettingspage.h:145 #: ../bin/src/ui_magnatunesettingspage.h:166 #: ../bin/src/ui_spotifysettingspage.h:216 ../bin/src/ui_settingsdialog.h:116 -#: ../bin/src/ui_lastfmsettingspage.h:155 +#: ../bin/src/ui_vksettingspage.h:214 ../bin/src/ui_lastfmsettingspage.h:155 msgid "Preferences" msgstr "偏好設定" -#: ../bin/src/ui_mainwindow.h:679 +#: ../bin/src/ui_mainwindow.h:661 msgid "Preferences..." msgstr "偏好設定…" @@ -3707,7 +3736,7 @@ msgstr "按下一組按鍵來操作" msgid "Press a key" msgstr "按一個鍵" -#: ui/globalshortcutgrabber.cpp:39 ../bin/src/ui_globalshortcutgrabber.h:74 +#: ui/globalshortcutgrabber.cpp:35 ../bin/src/ui_globalshortcutgrabber.h:74 #, qt-format msgid "Press a key combination to use for %1..." msgstr "按下一組按鍵來操作 %1" @@ -3718,20 +3747,20 @@ msgstr "漂亮的 OSD 選項" #: ../bin/src/ui_searchpreview.h:105 ../bin/src/ui_songinfosettingspage.h:158 #: ../bin/src/ui_notificationssettingspage.h:446 -#: ../bin/src/ui_organisedialog.h:208 +#: ../bin/src/ui_organisedialog.h:254 msgid "Preview" msgstr "預覽" -#: ui/edittagdialog.cpp:160 ui/trackselectiondialog.cpp:48 +#: ui/edittagdialog.cpp:162 ui/trackselectiondialog.cpp:47 msgid "Previous" msgstr "往前" -#: core/globalshortcuts.cpp:52 ../bin/src/ui_mainwindow.h:652 -#: wiimotedev/wiimotesettingspage.cpp:100 +#: core/globalshortcuts.cpp:55 ../bin/src/ui_mainwindow.h:636 +#: wiimotedev/wiimotesettingspage.cpp:99 msgid "Previous track" msgstr "上一首歌曲" -#: core/commandlineoptions.cpp:176 +#: core/commandlineoptions.cpp:170 msgid "Print out version information" msgstr "印出版本資訊" @@ -3739,21 +3768,25 @@ msgstr "印出版本資訊" msgid "Profile" msgstr "規格" -#: ../bin/src/ui_magnatunedownloaddialog.h:134 #: ../bin/src/ui_transcodedialog.h:220 ../bin/src/ui_ripcd.h:324 msgid "Progress" msgstr "進展" -#: ui/equalizer.cpp:129 +#: ../bin/src/ui_magnatunedownloaddialog.h:134 +msgctxt "Category label" +msgid "Progress" +msgstr "" + +#: ui/equalizer.cpp:138 msgid "Psychedelic" msgstr "" #: ../bin/src/ui_wiimoteshortcutgrabber.h:125 -#: wiimotedev/wiimotesettingspage.cpp:227 +#: wiimotedev/wiimotesettingspage.cpp:239 msgid "Push Wiiremote button" msgstr "按 Wiiremote 按鈕" -#: ../bin/src/ui_querysortpage.h:138 +#: ../bin/src/ui_querysortpage.h:139 msgid "Put songs in a random order" msgstr "將歌曲放入隨機曲單" @@ -3761,85 +3794,95 @@ msgstr "將歌曲放入隨機曲單" #: ../bin/src/ui_transcoderoptionsmp3.h:192 #: ../bin/src/ui_transcoderoptionsspeex.h:217 #: ../bin/src/ui_transcoderoptionsvorbis.h:202 -#: visualisations/visualisationcontainer.cpp:114 +msgctxt "Sound quality" msgid "Quality" -msgstr "品質" +msgstr "" + +#: visualisations/visualisationcontainer.cpp:118 +msgctxt "Visualisation quality" +msgid "Quality" +msgstr "" #: ../bin/src/ui_deviceproperties.h:383 msgid "Querying device..." msgstr "查詢裝置..." -#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:715 +#: ../bin/src/ui_queuemanager.h:125 ../bin/src/ui_mainwindow.h:697 msgid "Queue Manager" msgstr "佇列管理員" -#: ui/mainwindow.cpp:1386 +#: ui/mainwindow.cpp:1543 msgid "Queue selected tracks" msgstr "將選取的歌曲加入佇列中" -#: globalsearch/globalsearchview.cpp:441 library/libraryview.cpp:375 -#: ui/mainwindow.cpp:1384 +#: globalsearch/globalsearchview.cpp:465 library/libraryview.cpp:380 +#: ui/mainwindow.cpp:1541 msgid "Queue track" msgstr "將歌曲加入佇列中" -#: ../bin/src/ui_playbacksettingspage.h:314 +#: ../bin/src/ui_playbacksettingspage.h:327 msgid "Radio (equal loudness for all tracks)" msgstr "廣播 (為所有歌曲取得相同音量)" -#: internet/groovesharkservice.cpp:595 +#: internet/groovesharkservice.cpp:608 msgid "Radios" msgstr "" -#: core/backgroundstreams.cpp:31 ../bin/src/ui_mainwindow.h:692 +#: core/backgroundstreams.cpp:28 msgid "Rain" msgstr "下雨" +#: ../bin/src/ui_mainwindow.h:674 +msgctxt "Label for button to enable/disable rain background sound." +msgid "Rain" +msgstr "" + #: ../bin/src/ui_visualisationselector.h:112 msgid "Random visualization" msgstr "隨機視覺化" -#: core/globalshortcuts.cpp:65 +#: core/globalshortcuts.cpp:75 msgid "Rate the current song 0 stars" msgstr "評價目前的歌曲 0 顆星" -#: core/globalshortcuts.cpp:66 +#: core/globalshortcuts.cpp:77 msgid "Rate the current song 1 star" msgstr "評價目前的歌曲 1 顆星" -#: core/globalshortcuts.cpp:67 +#: core/globalshortcuts.cpp:79 msgid "Rate the current song 2 stars" msgstr "評價目前的歌曲 2 顆星" -#: core/globalshortcuts.cpp:68 +#: core/globalshortcuts.cpp:81 msgid "Rate the current song 3 stars" msgstr "評價目前的歌曲 3 顆星" -#: core/globalshortcuts.cpp:69 +#: core/globalshortcuts.cpp:83 msgid "Rate the current song 4 stars" msgstr "評價目前的歌曲 4 顆星" -#: core/globalshortcuts.cpp:70 +#: core/globalshortcuts.cpp:85 msgid "Rate the current song 5 stars" msgstr "評價目前的歌曲 5 顆星" -#: playlist/playlist.cpp:1222 ../bin/src/ui_edittagdialog.h:675 +#: playlist/playlist.cpp:1324 ../bin/src/ui_edittagdialog.h:675 msgid "Rating" msgstr "評分" -#: internet/magnatunedownloaddialog.cpp:279 ui/albumcovermanager.cpp:215 +#: internet/magnatunedownloaddialog.cpp:303 ui/albumcovermanager.cpp:218 msgid "Really cancel?" msgstr "真的要取消?" -#: internet/subsonicsettingspage.cpp:131 +#: internet/subsonicsettingspage.cpp:136 msgid "Redirect limit exceeded, verify server configuration." msgstr "" -#: internet/groovesharkservice.cpp:549 +#: internet/groovesharkservice.cpp:556 msgid "Refresh" msgstr "重新整理" -#: internet/jamendoservice.cpp:420 internet/magnatuneservice.cpp:279 -#: internet/subsonicservice.cpp:92 +#: internet/jamendoservice.cpp:431 internet/magnatuneservice.cpp:279 +#: internet/subsonicservice.cpp:87 msgid "Refresh catalogue" msgstr "刷新目錄" @@ -3847,19 +3890,15 @@ msgstr "刷新目錄" msgid "Refresh channels" msgstr "刷新頻道" -#: internet/lastfmservice.cpp:124 -msgid "Refresh friends list" -msgstr "重新整理朋友清單" - -#: internet/icecastservice.cpp:297 +#: internet/icecastservice.cpp:300 msgid "Refresh station list" msgstr "重新整理電台清單" -#: internet/digitallyimportedservicebase.cpp:182 +#: internet/digitallyimportedservicebase.cpp:175 msgid "Refresh streams" msgstr "重新整理串流" -#: ui/equalizer.cpp:130 +#: ui/equalizer.cpp:140 msgid "Reggae" msgstr "雷鬼" @@ -3871,8 +3910,8 @@ msgstr "記住Wii遙控器揮動" msgid "Remember from last time" msgstr "記得上一次的狀態" -#: internet/savedradio.cpp:100 ../bin/src/ui_queuemanager.h:135 -#: ../bin/src/ui_transcodedialog.h:210 internet/lastfmservice.cpp:115 +#: internet/savedradio.cpp:101 ../bin/src/ui_queuemanager.h:135 +#: ../bin/src/ui_transcodedialog.h:210 msgid "Remove" msgstr "移除" @@ -3880,7 +3919,7 @@ msgstr "移除" msgid "Remove action" msgstr "刪除功能" -#: ../bin/src/ui_mainwindow.h:724 +#: ../bin/src/ui_mainwindow.h:706 msgid "Remove duplicates from playlist" msgstr "從播放清單中移除重複的" @@ -3888,73 +3927,77 @@ msgstr "從播放清單中移除重複的" msgid "Remove folder" msgstr "移除資料夾" -#: internet/groovesharkservice.cpp:536 +#: internet/groovesharkservice.cpp:544 internet/vkservice.cpp:310 msgid "Remove from My Music" msgstr "" -#: internet/groovesharkservice.cpp:533 +#: internet/vkservice.cpp:296 +msgid "Remove from bookmarks" +msgstr "" + +#: internet/groovesharkservice.cpp:541 msgid "Remove from favorites" msgstr "從我的最愛中刪除" -#: internet/groovesharkservice.cpp:530 ../bin/src/ui_mainwindow.h:699 +#: internet/groovesharkservice.cpp:538 ../bin/src/ui_mainwindow.h:681 msgid "Remove from playlist" msgstr "從播放清單移除" -#: playlist/playlisttabbar.cpp:174 +#: playlist/playlisttabbar.cpp:172 msgid "Remove playlist" msgstr "" -#: playlist/playlistlistcontainer.cpp:315 +#: playlist/playlistlistcontainer.cpp:317 msgid "Remove playlists" msgstr "" -#: internet/groovesharkservice.cpp:1539 +#: internet/groovesharkservice.cpp:1584 msgid "Removing songs from My Music" msgstr "" -#: internet/groovesharkservice.cpp:1489 +#: internet/groovesharkservice.cpp:1531 msgid "Removing songs from favorites" msgstr "" -#: internet/groovesharkservice.cpp:1337 +#: internet/groovesharkservice.cpp:1381 #, qt-format msgid "Rename \"%1\" playlist" msgstr "" -#: internet/groovesharkservice.cpp:526 +#: internet/groovesharkservice.cpp:534 msgid "Rename Grooveshark playlist" msgstr "重命名 Grooveshark 播放清單" -#: playlist/playlisttabbar.cpp:137 +#: playlist/playlisttabbar.cpp:135 msgid "Rename playlist" msgstr "變更播放清單名稱" -#: playlist/playlisttabbar.cpp:55 +#: playlist/playlisttabbar.cpp:56 msgid "Rename playlist..." msgstr "重新命名播放清單" -#: ../bin/src/ui_mainwindow.h:675 +#: ../bin/src/ui_mainwindow.h:657 msgid "Renumber tracks in this order..." msgstr "按此順序重新為歌曲編號..." -#: playlist/playlistsequence.cpp:174 ../bin/src/ui_playlistsequence.h:112 +#: playlist/playlistsequence.cpp:193 ../bin/src/ui_playlistsequence.h:112 msgid "Repeat" msgstr "循環播放" -#: widgets/osd.cpp:293 ../bin/src/ui_playlistsequence.h:105 +#: widgets/osd.cpp:308 ../bin/src/ui_playlistsequence.h:105 msgid "Repeat album" msgstr "循環播放專輯" -#: widgets/osd.cpp:294 ../bin/src/ui_playlistsequence.h:106 +#: widgets/osd.cpp:311 ../bin/src/ui_playlistsequence.h:106 msgid "Repeat playlist" msgstr "循環播放所有歌曲" -#: widgets/osd.cpp:292 ../bin/src/ui_playlistsequence.h:104 +#: widgets/osd.cpp:305 ../bin/src/ui_playlistsequence.h:104 msgid "Repeat track" msgstr "循環播放單曲" -#: devices/deviceview.cpp:213 globalsearch/globalsearchview.cpp:435 -#: internet/internetservice.cpp:66 library/libraryview.cpp:369 +#: devices/deviceview.cpp:219 globalsearch/globalsearchview.cpp:456 +#: internet/internetservice.cpp:64 library/libraryview.cpp:372 #: widgets/fileviewlist.cpp:34 msgid "Replace current playlist" msgstr "取代目前播放清單" @@ -3963,15 +4006,15 @@ msgstr "取代目前播放清單" msgid "Replace the playlist" msgstr "取代播放清單" -#: ../bin/src/ui_organisedialog.h:205 +#: ../bin/src/ui_organisedialog.h:251 msgid "Replaces spaces with underscores" msgstr "用底線取代空格" -#: ../bin/src/ui_playbacksettingspage.h:309 +#: ../bin/src/ui_playbacksettingspage.h:322 msgid "Replay Gain" msgstr "播放增益" -#: ../bin/src/ui_playbacksettingspage.h:311 +#: ../bin/src/ui_playbacksettingspage.h:324 msgid "Replay Gain mode" msgstr "播放增益模式" @@ -3979,24 +4022,24 @@ msgstr "播放增益模式" msgid "Repopulate" msgstr "重新填充" -#: ../bin/src/ui_networkremotesettingspage.h:191 +#: ../bin/src/ui_networkremotesettingspage.h:192 msgid "Require authentication code" msgstr "" -#: widgets/lineedit.cpp:52 +#: widgets/lineedit.cpp:52 ../bin/src/ui_vksettingspage.h:222 msgid "Reset" msgstr "重置" -#: ui/edittagdialog.cpp:768 ../bin/src/ui_edittagdialog.h:665 +#: ui/edittagdialog.cpp:784 ../bin/src/ui_edittagdialog.h:665 msgid "Reset play counts" msgstr "重置播放計數" -#: core/commandlineoptions.cpp:164 +#: core/commandlineoptions.cpp:158 msgid "" "Restart the track, or play the previous track if within 8 seconds of start." msgstr "" -#: ../bin/src/ui_organisedialog.h:206 +#: ../bin/src/ui_organisedialog.h:252 msgid "Restrict to ASCII characters" msgstr "限制為 ASCII 字符" @@ -4004,15 +4047,15 @@ msgstr "限制為 ASCII 字符" msgid "Resume playback on start" msgstr "" -#: internet/groovesharkservice.cpp:758 +#: internet/groovesharkservice.cpp:789 msgid "Retrieving Grooveshark My Music songs" msgstr "" -#: internet/groovesharkservice.cpp:726 +#: internet/groovesharkservice.cpp:756 msgid "Retrieving Grooveshark favorites songs" msgstr "" -#: internet/groovesharkservice.cpp:663 +#: internet/groovesharkservice.cpp:688 msgid "Retrieving Grooveshark playlists" msgstr "" @@ -4032,11 +4075,11 @@ msgstr "" msgid "Rip CD" msgstr "" -#: ../bin/src/ui_mainwindow.h:730 +#: ../bin/src/ui_mainwindow.h:712 msgid "Rip audio CD..." msgstr "" -#: ui/equalizer.cpp:131 +#: ui/equalizer.cpp:142 msgid "Rock" msgstr "搖滾" @@ -4048,25 +4091,25 @@ msgstr "" msgid "SOCKS proxy" msgstr "SOCKS 代理" -#: internet/subsonicsettingspage.cpp:122 +#: internet/subsonicsettingspage.cpp:125 msgid "" "SSL handshake error, verify server configuration. SSLv3 option below may " "workaround some issues." msgstr "" -#: devices/deviceview.cpp:202 +#: devices/deviceview.cpp:203 msgid "Safely remove device" msgstr "安全地移除裝置" -#: ../bin/src/ui_organisedialog.h:196 +#: ../bin/src/ui_organisedialog.h:242 msgid "Safely remove the device after copying" msgstr "在複製之後,安全的移除裝置" -#: playlist/playlist.cpp:1230 ../bin/src/ui_edittagdialog.h:672 +#: playlist/playlist.cpp:1339 ../bin/src/ui_edittagdialog.h:672 msgid "Sample rate" msgstr "取樣頻率" -#: ui/organisedialog.cpp:71 +#: ui/organisedialog.cpp:76 msgid "Samplerate" msgstr "取樣頻率" @@ -4074,27 +4117,33 @@ msgstr "取樣頻率" msgid "Save .mood files in your music library" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:121 +#: ui/albumcoverchoicecontroller.cpp:127 msgid "Save album cover" msgstr "儲存專輯封面" -#: ui/albumcoverchoicecontroller.cpp:60 +#: ui/albumcoverchoicecontroller.cpp:62 msgid "Save cover to disk..." msgstr "儲存封面到磁碟..." -#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:232 +#: widgets/prettyimage.cpp:185 widgets/prettyimage.cpp:230 msgid "Save image" msgstr "儲存圖片" -#: playlist/playlistlistcontainer.cpp:74 playlist/playlistmanager.cpp:240 +#: playlist/playlistlistcontainer.cpp:72 +msgctxt "Save playlist menu action." msgid "Save playlist" -msgstr "儲存播放清單" +msgstr "" -#: playlist/playlisttabbar.cpp:56 ../bin/src/ui_mainwindow.h:707 +#: playlist/playlistmanager.cpp:223 +msgctxt "Title of the playlist save dialog." +msgid "Save playlist" +msgstr "" + +#: playlist/playlisttabbar.cpp:58 ../bin/src/ui_mainwindow.h:689 msgid "Save playlist..." msgstr "儲存播放清單" -#: ui/equalizer.cpp:182 ../bin/src/ui_equalizer.h:166 +#: ui/equalizer.cpp:199 ../bin/src/ui_equalizer.h:166 msgid "Save preset" msgstr "儲存設定" @@ -4110,11 +4159,11 @@ msgstr "" msgid "Save this stream in the Internet tab" msgstr "儲存這個串流網址到「網路」這個分頁標籤" -#: library/library.cpp:164 +#: library/library.cpp:177 msgid "Saving songs statistics into songs files" msgstr "" -#: ui/edittagdialog.cpp:670 ui/trackselectiondialog.cpp:256 +#: ui/edittagdialog.cpp:687 ui/trackselectiondialog.cpp:254 msgid "Saving tracks" msgstr "儲存曲目" @@ -4126,7 +4175,7 @@ msgstr "可變取樣率規格 (SSR)" msgid "Scale size" msgstr "" -#: playlist/playlist.cpp:1226 ../bin/src/ui_edittagdialog.h:673 +#: playlist/playlist.cpp:1332 ../bin/src/ui_edittagdialog.h:673 msgid "Score" msgstr "分數" @@ -4134,34 +4183,38 @@ msgstr "分數" msgid "Scrobble tracks that I listen to" msgstr "Scrobble 我在聽的曲目" -#: ui/albumcoversearcher.cpp:173 ui/albumcoversearcher.cpp:190 -#: ui/mainwindow.cpp:240 ../bin/src/ui_globalsearchsettingspage.h:145 -#: ../bin/src/ui_gpoddersearchpage.h:78 ../bin/src/ui_itunessearchpage.h:78 -#: ../bin/src/ui_albumcoversearcher.h:114 +#: ui/albumcoversearcher.cpp:165 ui/albumcoversearcher.cpp:182 +#: internet/vkservice.cpp:512 ../bin/src/ui_gpoddersearchpage.h:78 +#: ../bin/src/ui_itunessearchpage.h:78 ../bin/src/ui_albumcoversearcher.h:114 msgid "Search" msgstr "搜尋" +#: ui/mainwindow.cpp:230 ../bin/src/ui_globalsearchsettingspage.h:145 +msgctxt "Global search settings dialog title." +msgid "Search" +msgstr "" + #: ../bin/src/ui_icecastfilterwidget.h:78 msgid "Search Icecast stations" msgstr "搜尋 Icecast stations" -#: internet/jamendoservice.cpp:426 +#: internet/jamendoservice.cpp:438 msgid "Search Jamendo" msgstr "搜尋 Jamendo" -#: internet/magnatuneservice.cpp:285 +#: internet/magnatuneservice.cpp:288 msgid "Search Magnatune" msgstr "搜尋 Magnatune" -#: internet/subsonicservice.cpp:75 +#: internet/subsonicservice.cpp:71 msgid "Search Subsonic" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:66 +#: ui/albumcoverchoicecontroller.cpp:73 msgid "Search automatically" msgstr "" -#: ui/albumcoverchoicecontroller.cpp:62 +#: ui/albumcoverchoicecontroller.cpp:66 msgid "Search for album covers..." msgstr "搜尋專輯封面..." @@ -4181,21 +4234,21 @@ msgstr "搜尋 iTunes" msgid "Search mode" msgstr "搜尋模式" -#: smartplaylists/querywizardplugin.cpp:154 +#: smartplaylists/querywizardplugin.cpp:159 msgid "Search options" msgstr "搜尋選項" -#: internet/groovesharkservice.cpp:569 internet/soundcloudservice.cpp:104 -#: internet/spotifyservice.cpp:347 +#: internet/groovesharkservice.cpp:577 internet/soundcloudservice.cpp:114 +#: internet/spotifyservice.cpp:357 msgid "Search results" msgstr "搜尋結果" -#: smartplaylists/querywizardplugin.cpp:152 +#: smartplaylists/querywizardplugin.cpp:155 #: ../bin/src/ui_querysearchpage.h:120 msgid "Search terms" msgstr "搜尋條件" -#: internet/groovesharkservice.cpp:270 +#: internet/groovesharkservice.cpp:271 msgid "Searching on Grooveshark" msgstr "在 Grooveshark 上搜尋" @@ -4203,27 +4256,27 @@ msgstr "在 Grooveshark 上搜尋" msgid "Second level" msgstr "第二個層次" -#: core/globalshortcuts.cpp:57 wiimotedev/wiimotesettingspage.cpp:108 +#: core/globalshortcuts.cpp:61 wiimotedev/wiimotesettingspage.cpp:111 msgid "Seek backward" msgstr "倒帶" -#: core/globalshortcuts.cpp:56 wiimotedev/wiimotesettingspage.cpp:109 +#: core/globalshortcuts.cpp:60 wiimotedev/wiimotesettingspage.cpp:113 msgid "Seek forward" msgstr "快轉" -#: core/commandlineoptions.cpp:163 +#: core/commandlineoptions.cpp:156 msgid "Seek the currently playing track by a relative amount" msgstr "藉由相對數字尋找現在播放的曲目" -#: core/commandlineoptions.cpp:162 +#: core/commandlineoptions.cpp:154 msgid "Seek the currently playing track to an absolute position" msgstr "藉由絕對位置尋找現在播放的曲目" -#: visualisations/visualisationselector.cpp:40 ../bin/src/ui_ripcd.h:310 +#: visualisations/visualisationselector.cpp:37 ../bin/src/ui_ripcd.h:310 msgid "Select All" msgstr "選擇全部" -#: visualisations/visualisationselector.cpp:42 ../bin/src/ui_ripcd.h:311 +#: visualisations/visualisationselector.cpp:38 ../bin/src/ui_ripcd.h:311 msgid "Select None" msgstr "不選取" @@ -4231,7 +4284,7 @@ msgstr "不選取" msgid "Select background color:" msgstr "選擇背景色:" -#: ui/appearancesettingspage.cpp:247 +#: ui/appearancesettingspage.cpp:258 msgid "Select background image" msgstr "選擇背景圖片" @@ -4247,7 +4300,7 @@ msgstr "選擇前景色:" msgid "Select visualizations" msgstr "選取視覺化" -#: visualisations/visualisationcontainer.cpp:124 +#: visualisations/visualisationcontainer.cpp:131 msgid "Select visualizations..." msgstr "選取視覺化..." @@ -4255,7 +4308,7 @@ msgstr "選取視覺化..." msgid "Select..." msgstr "" -#: devices/devicekitlister.cpp:124 +#: devices/devicekitlister.cpp:126 msgid "Serial number" msgstr "序號" @@ -4267,51 +4320,51 @@ msgstr "" msgid "Server details" msgstr "" -#: internet/lastfmservice.cpp:434 +#: internet/lastfmservice.cpp:236 msgid "Service offline" msgstr "服務離線" -#: ui/mainwindow.cpp:1413 +#: ui/mainwindow.cpp:1580 #, qt-format msgid "Set %1 to \"%2\"..." msgstr "設定 %1 到「%2」..." -#: core/commandlineoptions.cpp:157 +#: core/commandlineoptions.cpp:149 msgid "Set the volume to percent" msgstr "設定音量到百分之" -#: ../bin/src/ui_mainwindow.h:676 +#: ../bin/src/ui_mainwindow.h:658 msgid "Set value for all selected tracks..." msgstr "為所有選擇的歌曲設定音量..." -#: ../bin/src/ui_networkremotesettingspage.h:179 +#: ../bin/src/ui_networkremotesettingspage.h:180 msgid "Settings" msgstr "" -#: ../bin/src/ui_globalshortcutssettingspage.h:173 +#: ../bin/src/ui_globalshortcutssettingspage.h:183 msgid "Shortcut" msgstr "快速鍵" -#: ui/globalshortcutssettingspage.cpp:135 -#: ../bin/src/ui_globalshortcutssettingspage.h:175 +#: ui/globalshortcutssettingspage.cpp:144 +#: ../bin/src/ui_globalshortcutssettingspage.h:185 #, qt-format msgid "Shortcut for %1" msgstr "%1 的快速鍵" -#: wiimotedev/wiimotesettingspage.cpp:124 +#: wiimotedev/wiimotesettingspage.cpp:133 #, qt-format msgid "Shortcut for %1 already exists" msgstr "%1 的快速鍵已經存在" -#: library/libraryfilterwidget.cpp:61 +#: library/libraryfilterwidget.cpp:69 msgid "Show" msgstr "顯示" -#: core/globalshortcuts.cpp:59 wiimotedev/wiimotesettingspage.cpp:111 +#: core/globalshortcuts.cpp:63 wiimotedev/wiimotesettingspage.cpp:115 msgid "Show OSD" msgstr "顯示 OSD" -#: ../bin/src/ui_playbacksettingspage.h:298 +#: ../bin/src/ui_playbacksettingspage.h:311 msgid "Show a glowing animation on the current track" msgstr "顯示一發光動畫在目前播放歌曲上" @@ -4339,15 +4392,15 @@ msgstr "從系統工作列顯示一個彈出訊息" msgid "Show a pretty OSD" msgstr "顯示一個漂亮的螢幕顯示" -#: widgets/nowplayingwidget.cpp:121 +#: widgets/nowplayingwidget.cpp:122 msgid "Show above status bar" msgstr "顯示在狀態欄上方" -#: ui/mainwindow.cpp:471 +#: ui/mainwindow.cpp:538 msgid "Show all songs" msgstr "顯示所有歌曲" -#: ../bin/src/ui_querysortpage.h:141 +#: ../bin/src/ui_querysortpage.h:142 msgid "Show all the songs" msgstr "顯示所有的歌曲" @@ -4359,32 +4412,36 @@ msgstr "在音樂庫,顯示封面圖片" msgid "Show dividers" msgstr "顯示分隔線" -#: ui/albumcoverchoicecontroller.cpp:64 widgets/prettyimage.cpp:183 +#: ui/albumcoverchoicecontroller.cpp:70 widgets/prettyimage.cpp:182 msgid "Show fullsize..." msgstr "全螢幕..." -#: library/libraryview.cpp:399 ui/mainwindow.cpp:519 -#: widgets/fileviewlist.cpp:52 +#: ../bin/src/ui_vksettingspage.h:217 +msgid "Show groups in global search result" +msgstr "" + +#: library/libraryview.cpp:413 ui/mainwindow.cpp:607 +#: widgets/fileviewlist.cpp:51 msgid "Show in file browser..." msgstr "在檔案瀏覽器顯示..." -#: ui/mainwindow.cpp:520 +#: ui/mainwindow.cpp:610 msgid "Show in library..." msgstr "" -#: library/libraryview.cpp:403 +#: library/libraryview.cpp:417 msgid "Show in various artists" msgstr "顯示各演出者" -#: moodbar/moodbarproxystyle.cpp:337 +#: moodbar/moodbarproxystyle.cpp:371 msgid "Show moodbar" msgstr "" -#: ui/mainwindow.cpp:472 +#: ui/mainwindow.cpp:540 msgid "Show only duplicates" msgstr "只顯示重複的" -#: ui/mainwindow.cpp:473 +#: ui/mainwindow.cpp:542 msgid "Show only untagged" msgstr "只顯示未標記的" @@ -4393,8 +4450,8 @@ msgid "Show search suggestions" msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:157 -msgid "Show the \"love\" and \"ban\" buttons" -msgstr "顯示 [喜愛] 和 [禁止] 按鈕" +msgid "Show the \"love\" button" +msgstr "" #: ../bin/src/ui_lastfmsettingspage.h:158 msgid "Show the scrobble button in the main window" @@ -4408,27 +4465,27 @@ msgstr "顯示工作列圖示" msgid "Show which sources are enabled and disabled" msgstr "" -#: core/globalshortcuts.cpp:58 +#: core/globalshortcuts.cpp:62 msgid "Show/Hide" msgstr "顯示 / 隱藏" -#: playlist/playlistsequence.cpp:173 ../bin/src/ui_playlistsequence.h:115 +#: playlist/playlistsequence.cpp:192 ../bin/src/ui_playlistsequence.h:115 msgid "Shuffle" msgstr "隨機播放" -#: widgets/osd.cpp:281 ../bin/src/ui_playlistsequence.h:110 +#: widgets/osd.cpp:290 ../bin/src/ui_playlistsequence.h:110 msgid "Shuffle albums" msgstr "隨機播放專輯" -#: widgets/osd.cpp:279 ../bin/src/ui_playlistsequence.h:109 +#: widgets/osd.cpp:284 ../bin/src/ui_playlistsequence.h:109 msgid "Shuffle all" msgstr "隨機播放所有歌曲" -#: ../bin/src/ui_mainwindow.h:683 +#: ../bin/src/ui_mainwindow.h:665 msgid "Shuffle playlist" msgstr "隨機排列播放清單" -#: widgets/osd.cpp:280 ../bin/src/ui_playlistsequence.h:108 +#: widgets/osd.cpp:287 ../bin/src/ui_playlistsequence.h:108 msgid "Shuffle tracks in this album" msgstr "隨機播放這張專輯中的曲目" @@ -4444,7 +4501,7 @@ msgstr "登出" msgid "Signing in..." msgstr "登錄..." -#: songinfo/echonestsimilarartists.cpp:57 +#: songinfo/echonestsimilarartists.cpp:58 msgid "Similar artists" msgstr "相似的演出者" @@ -4456,43 +4513,51 @@ msgstr "" msgid "Size:" msgstr "" -#: ui/equalizer.cpp:133 +#: ui/equalizer.cpp:146 msgid "Ska" msgstr "強節奏流行音樂" -#: core/commandlineoptions.cpp:155 +#: core/commandlineoptions.cpp:147 msgid "Skip backwards in playlist" msgstr "跳至播放清單開頭" -#: playlist/playlist.cpp:1224 ../bin/src/ui_edittagdialog.h:669 +#: playlist/playlist.cpp:1328 ../bin/src/ui_edittagdialog.h:669 msgid "Skip count" msgstr "略過計數" -#: core/commandlineoptions.cpp:156 +#: core/commandlineoptions.cpp:148 msgid "Skip forwards in playlist" msgstr "跳至播放清單最後頭" -#: widgets/nowplayingwidget.cpp:93 +#: ui/mainwindow.cpp:1554 +msgid "Skip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1552 +msgid "Skip track" +msgstr "" + +#: widgets/nowplayingwidget.cpp:92 msgid "Small album cover" msgstr "小的專輯封面" -#: widgets/fancytabwidget.cpp:671 +#: widgets/fancytabwidget.cpp:663 msgid "Small sidebar" msgstr "小型測邊欄" -#: smartplaylists/wizard.cpp:68 +#: smartplaylists/wizard.cpp:63 msgid "Smart playlist" msgstr "智慧型播放清單" -#: library/librarymodel.cpp:1207 +#: library/librarymodel.cpp:1228 msgid "Smart playlists" msgstr "智慧型播放清單" -#: ui/equalizer.cpp:132 +#: ui/equalizer.cpp:144 msgid "Soft" msgstr "輕柔的音樂" -#: ui/equalizer.cpp:134 +#: ui/equalizer.cpp:148 msgid "Soft Rock" msgstr "比較輕柔的搖滾樂" @@ -4500,11 +4565,11 @@ msgstr "比較輕柔的搖滾樂" msgid "Song Information" msgstr "歌曲資訊" -#: ui/mainwindow.cpp:247 +#: ui/mainwindow.cpp:243 msgid "Song info" msgstr "歌曲" -#: analyzers/sonogram.cpp:18 +#: analyzers/sonogram.cpp:19 msgid "Sonogram" msgstr "聲納圖" @@ -4524,15 +4589,23 @@ msgstr "按風格排序(按熱門程度)" msgid "Sort by station name" msgstr "以站名分類" -#: ../bin/src/ui_querysortpage.h:139 +#: ../bin/src/ui_groovesharksettingspage.h:146 +msgid "Sort playlists songs alphabetically" +msgstr "" + +#: ../bin/src/ui_querysortpage.h:140 msgid "Sort songs by" msgstr "歌曲排序方式" -#: ../bin/src/ui_querysortpage.h:137 +#: ../bin/src/ui_querysortpage.h:138 msgid "Sorting" msgstr "分類" -#: playlist/playlist.cpp:1239 +#: ../bin/src/ui_soundcloudsettingspage.h:104 +msgid "SoundCloud" +msgstr "" + +#: playlist/playlist.cpp:1356 msgid "Source" msgstr "來源" @@ -4548,7 +4621,7 @@ msgstr "Speex" msgid "Spotify" msgstr "Spotify" -#: internet/spotifyservice.cpp:184 +#: internet/spotifyservice.cpp:190 msgid "Spotify login error" msgstr "Spotify 登錄錯誤" @@ -4556,7 +4629,7 @@ msgstr "Spotify 登錄錯誤" msgid "Spotify plugin" msgstr "Spotify 插件" -#: internet/spotifyblobdownloader.cpp:59 +#: internet/spotifyblobdownloader.cpp:64 msgid "Spotify plugin not installed" msgstr "Spotify 插件沒有安裝" @@ -4564,77 +4637,77 @@ msgstr "Spotify 插件沒有安裝" msgid "Standard" msgstr "標準" -#: internet/spotifyservice.cpp:354 +#: internet/spotifyservice.cpp:365 msgid "Starred" msgstr "已標記星號" -#: ui/ripcd.cpp:90 +#: ui/ripcd.cpp:88 msgid "Start ripping" msgstr "" -#: core/commandlineoptions.cpp:151 +#: core/commandlineoptions.cpp:144 msgid "Start the playlist currently playing" msgstr "開始播放目前播放清單" -#: transcoder/transcodedialog.cpp:90 +#: transcoder/transcodedialog.cpp:87 msgid "Start transcoding" msgstr "開始轉碼" -#: internet/groovesharkservice.cpp:570 internet/soundcloudservice.cpp:105 -#: internet/spotifyservice.cpp:348 +#: internet/groovesharkservice.cpp:579 internet/soundcloudservice.cpp:116 +#: internet/spotifyservice.cpp:359 msgid "" "Start typing something on the search box above to fill this search results " "list" msgstr "" -#: transcoder/transcoder.cpp:407 +#: transcoder/transcoder.cpp:401 #, qt-format msgid "Starting %1" msgstr "標記星號 %1" -#: internet/magnatunedownloaddialog.cpp:120 +#: internet/magnatunedownloaddialog.cpp:122 msgid "Starting..." msgstr "開啟..." -#: internet/groovesharkservice.cpp:598 +#: internet/groovesharkservice.cpp:612 msgid "Stations" msgstr "" -#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:656 -#: wiimotedev/wiimotesettingspage.cpp:102 +#: core/globalshortcuts.cpp:49 ../bin/src/ui_mainwindow.h:640 +#: wiimotedev/wiimotesettingspage.cpp:101 msgid "Stop" msgstr "停止" -#: wiimotedev/wiimotesettingspage.cpp:110 +#: wiimotedev/wiimotesettingspage.cpp:114 msgid "Stop after" msgstr "在...之後停止" -#: ui/mainwindow.cpp:500 ../bin/src/ui_mainwindow.h:662 +#: ui/mainwindow.cpp:573 ../bin/src/ui_mainwindow.h:646 msgid "Stop after this track" msgstr "在這首歌之後停止" -#: core/commandlineoptions.cpp:154 +#: core/commandlineoptions.cpp:146 msgid "Stop playback" msgstr "停止播放" -#: core/globalshortcuts.cpp:50 +#: core/globalshortcuts.cpp:51 msgid "Stop playing after current track" msgstr "在目前這首歌之後停止" -#: widgets/osd.cpp:171 +#: widgets/osd.cpp:169 #, qt-format msgid "Stop playing after track: %1" msgstr "" -#: widgets/osd.cpp:166 +#: widgets/osd.cpp:163 msgid "Stopped" msgstr "已停止" -#: core/song.cpp:353 +#: core/song.cpp:404 msgid "Stream" msgstr "串流" -#: internet/subsonicsettingspage.cpp:30 +#: internet/subsonicsettingspage.cpp:29 msgid "" "Streaming from a Subsonic server requires a valid server license after the " "30-day trial period." @@ -4644,7 +4717,7 @@ msgstr "" msgid "Streaming membership" msgstr "串流成員" -#: internet/groovesharkservice.cpp:629 +#: internet/groovesharkservice.cpp:653 msgid "Subscribed playlists" msgstr "" @@ -4652,7 +4725,7 @@ msgstr "" msgid "Subscribers" msgstr "" -#: internet/subsonicservice.cpp:105 ../bin/src/ui_subsonicsettingspage.h:124 +#: internet/subsonicservice.cpp:98 ../bin/src/ui_subsonicsettingspage.h:124 msgid "Subsonic" msgstr "" @@ -4660,12 +4733,12 @@ msgstr "" msgid "Success!" msgstr "" -#: transcoder/transcoder.cpp:200 +#: transcoder/transcoder.cpp:188 #, qt-format msgid "Successfully written %1" msgstr "成功寫入 %1" -#: ui/trackselectiondialog.cpp:171 +#: ui/trackselectiondialog.cpp:166 msgid "Suggested tags" msgstr "建議標籤" @@ -4674,13 +4747,13 @@ msgstr "建議標籤" msgid "Summary" msgstr "摘要" -#: analyzers/analyzercontainer.cpp:65 -#: visualisations/visualisationcontainer.cpp:110 +#: analyzers/analyzercontainer.cpp:64 +#: visualisations/visualisationcontainer.cpp:113 #, qt-format msgid "Super high (%1 fps)" msgstr "超級高(%1 fps)" -#: visualisations/visualisationcontainer.cpp:120 +#: visualisations/visualisationcontainer.cpp:126 msgid "Super high (2048x2048)" msgstr "" @@ -4692,43 +4765,35 @@ msgstr "支持格式" msgid "Synchronize statistics to files now" msgstr "" -#: internet/spotifyservice.cpp:561 +#: internet/spotifyservice.cpp:579 msgid "Syncing Spotify inbox" msgstr "同步 Spotify 的收件匣" -#: internet/spotifyservice.cpp:556 +#: internet/spotifyservice.cpp:573 msgid "Syncing Spotify playlist" msgstr "同步 Spotify 的播放清單" -#: internet/spotifyservice.cpp:565 +#: internet/spotifyservice.cpp:584 msgid "Syncing Spotify starred tracks" msgstr "同步 Spotify 的星號標記曲目" -#: moodbar/moodbarrenderer.cpp:159 +#: moodbar/moodbarrenderer.cpp:177 msgid "System colors" msgstr "系統顏色" -#: widgets/fancytabwidget.cpp:673 +#: widgets/fancytabwidget.cpp:665 msgid "Tabs on top" msgstr "標籤在上面" -#: ../bin/src/ui_lastfmstationdialog.h:97 -msgid "Tag" -msgstr "標記" - #: ../bin/src/ui_trackselectiondialog.h:204 msgid "Tag fetcher" msgstr "標籤擷取器" -#: internet/lastfmservice.cpp:212 -msgid "Tag radio" -msgstr "標記電台" - #: ../bin/src/ui_transcoderoptionsvorbis.h:204 msgid "Target bitrate" msgstr "目標位元率" -#: ui/equalizer.cpp:135 +#: ui/equalizer.cpp:150 msgid "Techno" msgstr "電子音樂" @@ -4736,11 +4801,11 @@ msgstr "電子音樂" msgid "Text options" msgstr "文字選項" -#: ui/about.cpp:70 +#: ui/about.cpp:73 msgid "Thanks to" msgstr "感謝" -#: ui/globalshortcutssettingspage.cpp:177 +#: ui/globalshortcutssettingspage.cpp:184 #, qt-format msgid "The \"%1\" command could not be started." msgstr "無法開始指令\"%1\"" @@ -4749,17 +4814,12 @@ msgstr "無法開始指令\"%1\"" msgid "The album cover of the currently playing song" msgstr "目前播放歌曲的專輯封面" -#: internet/magnatunedownloaddialog.cpp:90 +#: internet/magnatunedownloaddialog.cpp:92 #, qt-format msgid "The directory %1 is not valid" msgstr "目錄%1是無效的" -#: playlist/playlistmanager.cpp:166 playlist/playlistmanager.cpp:184 -#, qt-format -msgid "The playlist '%1' was empty or could not be loaded." -msgstr "播放清單 '%1' 為空白或無法讀取。" - -#: smartplaylists/searchtermwidget.cpp:330 +#: smartplaylists/searchtermwidget.cpp:342 msgid "The second value must be greater than the first one!" msgstr "第二個值必須大於第一個!" @@ -4767,40 +4827,40 @@ msgstr "第二個值必須大於第一個!" msgid "The site you requested does not exist!" msgstr "您要求的網站不存在!" -#: ui/coverfromurldialog.cpp:82 +#: ui/coverfromurldialog.cpp:83 msgid "The site you requested is not an image!" msgstr "您要求的網址不是一個圖片!" -#: internet/subsonicsettingspage.cpp:98 +#: internet/subsonicsettingspage.cpp:95 msgid "" "The trial period for the Subsonic server is over. Please donate to get a " "license key. Visit subsonic.org for details." msgstr "" -#: ui/mainwindow.cpp:2138 +#: ui/mainwindow.cpp:2373 msgid "" "The version of Clementine you've just updated to requires a full library " "rescan because of the new features listed below:" msgstr "方才更新的 Clementine 因為以下新的功能,需要對音樂庫做完整的重新掃描:" -#: library/libraryview.cpp:529 +#: library/libraryview.cpp:553 msgid "There are other songs in this album" msgstr "有其他歌曲在這張專輯中" -#: podcasts/gpoddersearchpage.cpp:77 podcasts/gpoddertoptagsmodel.cpp:110 -#: podcasts/gpoddertoptagspage.cpp:77 +#: podcasts/gpoddersearchpage.cpp:73 podcasts/gpoddertoptagsmodel.cpp:102 +#: podcasts/gpoddertoptagspage.cpp:70 msgid "There was a problem communicating with gpodder.net" msgstr "與 gpodder.net 進行通信有一個問題" -#: internet/magnatunedownloaddialog.cpp:158 +#: internet/magnatunedownloaddialog.cpp:161 msgid "There was a problem fetching the metadata from Magnatune" msgstr "從 Magnatune 獲取詮釋資料有一個問題" -#: podcasts/itunessearchpage.cpp:76 +#: podcasts/itunessearchpage.cpp:75 msgid "There was a problem parsing the response from the iTunes Store" msgstr "" -#: ui/organiseerrordialog.cpp:56 +#: ui/organiseerrordialog.cpp:54 msgid "" "There were problems copying some songs. The following files could not be " "copied:" @@ -4812,13 +4872,13 @@ msgid "" "deleted:" msgstr "刪除歌曲時發生問題,以下檔案將無法刪除:" -#: devices/deviceview.cpp:389 +#: devices/deviceview.cpp:405 msgid "" "These files will be deleted from the device, are you sure you want to " "continue?" msgstr "這些檔案將從裝置上被移除,你確定你要繼續?" -#: library/libraryview.cpp:609 ui/mainwindow.cpp:1961 widgets/fileview.cpp:188 +#: library/libraryview.cpp:637 ui/mainwindow.cpp:2161 widgets/fileview.cpp:187 msgid "" "These files will be permanently deleted from disk, are you sure you want to " "continue?" @@ -4838,13 +4898,13 @@ msgstr "這些設定是使用在「音樂轉碼」對話框中。" msgid "Third level" msgstr "第三個層次" -#: internet/jamendoservice.cpp:171 +#: internet/jamendoservice.cpp:176 msgid "" "This action will create a database which could be as big as 150 MB.\n" "Do you want to continue anyway?" msgstr "這項動作將新增一個容量大約 150MB 的資料庫,仍然要繼續?" -#: internet/magnatunedownloaddialog.cpp:175 +#: internet/magnatunedownloaddialog.cpp:188 msgid "This album is not available in the requested format" msgstr "這張專輯中不提供所要求的格式" @@ -4858,11 +4918,11 @@ msgstr "裝置必須在 Clementine 發現可支援的檔案格式前連接並開 msgid "This device supports the following file formats:" msgstr "裝置支援以下檔案格式:" -#: devices/devicemanager.cpp:566 devices/devicemanager.cpp:574 +#: devices/devicemanager.cpp:563 devices/devicemanager.cpp:574 msgid "This device will not work properly" msgstr "裝置將無法正常運作" -#: devices/devicemanager.cpp:567 +#: devices/devicemanager.cpp:564 msgid "" "This is an MTP device, but you compiled Clementine without libmtp support." msgstr "這是一個 MTP 裝置,但您編譯的 Clementine 卻為包含 libmtp 支援。" @@ -4871,7 +4931,7 @@ msgstr "這是一個 MTP 裝置,但您編譯的 Clementine 卻為包含 libmtp msgid "This is an iPod, but you compiled Clementine without libgpod support." msgstr "這是一個 iPod,但是您編譯 Clementine 卻未包含 libgpod 支援。" -#: devices/devicemanager.cpp:324 +#: devices/devicemanager.cpp:322 msgid "" "This is the first time you have connected this device. Clementine will now " "scan the device to find music files - this may take some time." @@ -4881,33 +4941,33 @@ msgstr "這是您第一次連接這個裝置,Clementine 將掃描裝置並搜 msgid "This option can be changed in the \"Behavior\" preferences" msgstr "" -#: internet/lastfmservice.cpp:435 +#: internet/lastfmservice.cpp:238 msgid "This stream is for paid subscribers only" msgstr "此串流音樂是只針對付費用戶" -#: devices/devicemanager.cpp:587 +#: devices/devicemanager.cpp:591 #, qt-format msgid "This type of device is not supported: %1" msgstr "這種裝置不被支援: %1" -#: playlist/playlist.cpp:1209 ui/organisedialog.cpp:55 -#: ui/qtsystemtrayicon.cpp:248 ../bin/src/ui_about.h:142 +#: playlist/playlist.cpp:1299 ui/organisedialog.cpp:60 +#: ui/qtsystemtrayicon.cpp:232 ../bin/src/ui_about.h:142 #: ../bin/src/ui_edittagdialog.h:682 ../bin/src/ui_trackselectiondialog.h:211 #: ../bin/src/ui_ripcd.h:307 msgid "Title" msgstr "標題" -#: internet/groovesharkservice.cpp:1018 +#: internet/groovesharkservice.cpp:1049 msgid "" "To start Grooveshark radio, you should first listen to a few other " "Grooveshark songs" msgstr "" -#: core/utilities.cpp:127 core/utilities.cpp:143 +#: core/utilities.cpp:127 core/utilities.cpp:139 msgid "Today" msgstr "今日" -#: core/globalshortcuts.cpp:60 +#: core/globalshortcuts.cpp:65 msgid "Toggle Pretty OSD" msgstr "拖曳漂亮的螢幕顯示" @@ -4915,27 +4975,27 @@ msgstr "拖曳漂亮的螢幕顯示" msgid "Toggle fullscreen" msgstr "切換全螢幕模式" -#: ui/mainwindow.cpp:1388 +#: ui/mainwindow.cpp:1545 msgid "Toggle queue status" msgstr "切換佇列狀態" -#: ../bin/src/ui_mainwindow.h:722 +#: ../bin/src/ui_mainwindow.h:704 msgid "Toggle scrobbling" msgstr "切換 scrobbling" -#: core/commandlineoptions.cpp:171 +#: core/commandlineoptions.cpp:165 msgid "Toggle visibility for the pretty on-screen-display" msgstr "調整漂亮的螢幕顯示的可見度" -#: core/utilities.cpp:145 +#: core/utilities.cpp:140 msgid "Tomorrow" msgstr "" -#: podcasts/podcasturlloader.cpp:116 +#: podcasts/podcasturlloader.cpp:115 msgid "Too many redirects" msgstr "" -#: internet/spotifyservice.cpp:366 +#: internet/spotifyservice.cpp:377 msgid "Top tracks" msgstr "" @@ -4943,21 +5003,25 @@ msgstr "" msgid "Total albums:" msgstr "" -#: covers/coversearchstatisticsdialog.cpp:71 +#: covers/coversearchstatisticsdialog.cpp:68 msgid "Total bytes transferred" msgstr "總傳輸位元組" -#: covers/coversearchstatisticsdialog.cpp:68 +#: covers/coversearchstatisticsdialog.cpp:65 msgid "Total network requests made" msgstr "總發送網路請求" -#: playlist/playlist.cpp:1213 ui/organisedialog.cpp:63 +#: playlist/playlist.cpp:1307 ui/organisedialog.cpp:68 #: ../bin/src/ui_edittagdialog.h:683 ../bin/src/ui_trackselectiondialog.h:213 #: ../bin/src/ui_ripcd.h:305 msgid "Track" msgstr "歌曲" -#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:701 +#: internet/soundcloudservice.cpp:134 +msgid "Tracks" +msgstr "" + +#: ../bin/src/ui_transcodedialog.h:204 ../bin/src/ui_mainwindow.h:683 msgid "Transcode Music" msgstr "音樂轉碼" @@ -4969,7 +5033,7 @@ msgstr "轉碼日誌" msgid "Transcoding" msgstr "轉碼" -#: transcoder/transcoder.cpp:312 +#: transcoder/transcoder.cpp:305 #, qt-format msgid "Transcoding %1 files using %2 threads" msgstr "轉碼 %1 個檔案使用 %2 個進程" @@ -4978,11 +5042,11 @@ msgstr "轉碼 %1 個檔案使用 %2 個進程" msgid "Transcoding options" msgstr "轉碼選項" -#: core/song.cpp:350 +#: core/song.cpp:399 msgid "TrueAudio" msgstr "TrueAudio" -#: analyzers/turbine.cpp:15 +#: analyzers/turbine.cpp:16 msgid "Turbine" msgstr "渦輪" @@ -4990,72 +5054,72 @@ msgstr "渦輪" msgid "Turn off" msgstr "關閉" -#: devices/giolister.cpp:161 +#: devices/giolister.cpp:157 msgid "URI" msgstr "URI" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "URL(s)" msgstr "URL(s)" -#: ../bin/src/ui_ubuntuonesettingspage.h:127 -msgid "Ubuntu One" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:132 -msgid "Ubuntu One password" -msgstr "" - -#: ../bin/src/ui_ubuntuonesettingspage.h:130 -msgid "Ubuntu One username" -msgstr "" - #: ../bin/src/ui_transcoderoptionsspeex.h:228 msgid "Ultra wide band (UWB)" msgstr "超寬頻 (UWB)" -#: internet/magnatunedownloaddialog.cpp:144 +#: internet/magnatunedownloaddialog.cpp:147 #, qt-format msgid "Unable to download %1 (%2)" msgstr "無法下載 %1 (%2)" -#: core/song.cpp:357 library/librarymodel.cpp:312 library/librarymodel.cpp:317 -#: library/librarymodel.cpp:322 library/librarymodel.cpp:999 -#: playlist/playlistdelegates.cpp:314 playlist/playlistmanager.cpp:505 -#: playlist/playlistmanager.cpp:508 ui/albumcoverchoicecontroller.cpp:117 -#: ui/edittagdialog.cpp:424 ui/edittagdialog.cpp:465 +#: core/song.cpp:408 library/librarymodel.cpp:336 library/librarymodel.cpp:340 +#: library/librarymodel.cpp:344 library/librarymodel.cpp:1018 +#: playlist/playlistdelegates.cpp:306 playlist/playlistmanager.cpp:473 +#: playlist/playlistmanager.cpp:474 ui/albumcoverchoicecontroller.cpp:124 +#: ui/edittagdialog.cpp:439 ui/edittagdialog.cpp:483 msgid "Unknown" msgstr "未知的" -#: podcasts/podcasturlloader.cpp:198 +#: podcasts/podcasturlloader.cpp:206 msgid "Unknown content-type" msgstr "未知的內容類型" -#: internet/digitallyimportedclient.cpp:69 internet/lastfmservice.cpp:448 +#: internet/digitallyimportedclient.cpp:71 internet/lastfmservice.cpp:257 msgid "Unknown error" msgstr "不明的錯誤" -#: ui/albumcoverchoicecontroller.cpp:63 +#: ui/albumcoverchoicecontroller.cpp:68 msgid "Unset cover" msgstr "未設置封面" -#: podcasts/addpodcastdialog.cpp:61 podcasts/podcastservice.cpp:339 +#: ui/mainwindow.cpp:1550 +msgid "Unskip selected tracks" +msgstr "" + +#: ui/mainwindow.cpp:1548 +msgid "Unskip track" +msgstr "" + +#: podcasts/addpodcastdialog.cpp:65 podcasts/podcastservice.cpp:351 msgid "Unsubscribe" msgstr "" -#: songinfo/songkickconcerts.cpp:168 +#: songinfo/songkickconcerts.cpp:172 msgid "Upcoming Concerts" msgstr "" -#: internet/groovesharkservice.cpp:1200 +#: internet/vkservice.cpp:326 internet/vkservice.cpp:330 +msgid "Update" +msgstr "" + +#: internet/groovesharkservice.cpp:1238 msgid "Update Grooveshark playlist" msgstr "更新 Grooveshark 播放清單" -#: podcasts/podcastservice.cpp:319 +#: podcasts/podcastservice.cpp:331 msgid "Update all podcasts" msgstr "更新全部的 podcasts" -#: ../bin/src/ui_mainwindow.h:713 +#: ../bin/src/ui_mainwindow.h:695 msgid "Update changed library folders" msgstr "更新改變的音樂庫資料夾" @@ -5063,7 +5127,7 @@ msgstr "更新改變的音樂庫資料夾" msgid "Update the library when Clementine starts" msgstr "當啟動 Clementine 時,更新音樂庫" -#: podcasts/podcastservice.cpp:327 +#: podcasts/podcastservice.cpp:339 msgid "Update this podcast" msgstr "更新這個 podcast" @@ -5071,21 +5135,21 @@ msgstr "更新這個 podcast" msgid "Updating" msgstr "更新" -#: library/librarywatcher.cpp:92 +#: library/librarywatcher.cpp:94 #, qt-format msgid "Updating %1" msgstr "更新 %1" -#: devices/deviceview.cpp:103 +#: devices/deviceview.cpp:105 #, qt-format msgid "Updating %1%..." msgstr "更新 %1%..." -#: library/librarywatcher.cpp:90 +#: library/librarywatcher.cpp:92 msgid "Updating library" msgstr "正在更新音樂庫" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "Usage" msgstr "使用" @@ -5093,11 +5157,11 @@ msgstr "使用" msgid "Use Album Artist tag when available" msgstr "當有可以用時,使用專輯演出者標籤" -#: ../bin/src/ui_globalshortcutssettingspage.h:168 +#: ../bin/src/ui_globalshortcutssettingspage.h:177 msgid "Use Gnome's shortcut keys" msgstr "使用 Gnome 的快速鍵" -#: ../bin/src/ui_playbacksettingspage.h:310 +#: ../bin/src/ui_playbacksettingspage.h:323 msgid "Use Replay Gain metadata if it is available" msgstr "使用播放增益元數據,如果它是可獲得的" @@ -5117,7 +5181,7 @@ msgstr "使用自訂顏色組合" msgid "Use a custom message for notifications" msgstr "使用自訂訊息的通知" -#: ../bin/src/ui_networkremotesettingspage.h:178 +#: ../bin/src/ui_networkremotesettingspage.h:179 msgid "Use a network remote control" msgstr "" @@ -5157,20 +5221,20 @@ msgstr "使用系統代理設置" msgid "Use volume normalisation" msgstr "使用音量正常化" -#: widgets/freespacebar.cpp:47 +#: widgets/freespacebar.cpp:46 msgid "Used" msgstr "已用" -#: internet/groovesharkservice.cpp:404 +#: internet/groovesharkservice.cpp:403 #, qt-format msgid "User %1 doesn't have a Grooveshark Anywhere account" msgstr "使用者 %1 並沒有 Grooveshark Anywhere 帳號" -#: ui/settingsdialog.cpp:145 +#: ui/settingsdialog.cpp:147 msgid "User interface" msgstr "使用者介面" -#: ../bin/src/ui_groovesharksettingspage.h:114 +#: ../bin/src/ui_groovesharksettingspage.h:142 #: ../bin/src/ui_magnatunesettingspage.h:163 #: ../bin/src/ui_spotifysettingspage.h:209 #: ../bin/src/ui_subsonicsettingspage.h:127 @@ -5192,12 +5256,12 @@ msgstr "VBR MP3" msgid "Variable bit rate" msgstr "可變位元率" -#: globalsearch/globalsearchmodel.cpp:104 library/librarymodel.cpp:242 -#: playlist/playlistmanager.cpp:520 ui/albumcovermanager.cpp:266 +#: globalsearch/globalsearchmodel.cpp:106 library/librarymodel.cpp:269 +#: playlist/playlistmanager.cpp:485 ui/albumcovermanager.cpp:270 msgid "Various artists" msgstr "各種演出者" -#: ui/about.cpp:34 +#: ui/about.cpp:33 #, qt-format msgid "Version %1" msgstr "版本 %1" @@ -5210,7 +5274,7 @@ msgstr "檢視" msgid "Visualization mode" msgstr "視覺化模式" -#: ../bin/src/ui_mainwindow.h:714 ui/dbusscreensaver.cpp:35 +#: ../bin/src/ui_mainwindow.h:696 ui/dbusscreensaver.cpp:33 msgid "Visualizations" msgstr "視覺化" @@ -5218,11 +5282,15 @@ msgstr "視覺化" msgid "Visualizations Settings" msgstr "視覺化設定" +#: ../bin/src/ui_vksettingspage.h:210 +msgid "Vk.com" +msgstr "" + #: ../bin/src/ui_transcoderoptionsspeex.h:233 msgid "Voice activity detection" msgstr "語音活動偵測" -#: widgets/osd.cpp:185 +#: widgets/osd.cpp:182 #, qt-format msgid "Volume %1%" msgstr "音量 %1%" @@ -5240,11 +5308,11 @@ msgstr "WAV" msgid "WMA" msgstr "WMA" -#: playlist/playlisttabbar.cpp:182 ../bin/src/ui_behavioursettingspage.h:194 +#: playlist/playlisttabbar.cpp:181 ../bin/src/ui_behavioursettingspage.h:194 msgid "Warn me when closing a playlist tab" msgstr "" -#: core/song.cpp:349 +#: core/song.cpp:397 transcoder/transcoder.cpp:253 msgid "Wav" msgstr "Wav" @@ -5252,7 +5320,7 @@ msgstr "Wav" msgid "Website" msgstr "網站" -#: smartplaylists/searchterm.cpp:312 +#: smartplaylists/searchterm.cpp:390 msgid "Weeks" msgstr "星期" @@ -5278,32 +5346,32 @@ msgstr "" msgid "Wide band (WB)" msgstr "寬頻 (WB)" -#: widgets/osd.cpp:244 +#: widgets/osd.cpp:239 #, qt-format msgid "Wii Remote %1: actived" msgstr "Wii 遙控器 %1 :起作用的" -#: widgets/osd.cpp:254 +#: widgets/osd.cpp:251 #, qt-format msgid "Wii Remote %1: connected" msgstr "Wii Remote %1: 連接的" -#: widgets/osd.cpp:269 +#: widgets/osd.cpp:270 #, qt-format msgid "Wii Remote %1: critical battery (%2%) " msgstr "Wii Remote %1: 電池電量嚴重不足 (%2%) " -#: widgets/osd.cpp:249 +#: widgets/osd.cpp:245 #, qt-format msgid "Wii Remote %1: disactived" msgstr "Wii Remote %1: 沒作用的" -#: widgets/osd.cpp:259 +#: widgets/osd.cpp:257 #, qt-format msgid "Wii Remote %1: disconnected" msgstr "Wii Remote %1: 未連接的" -#: widgets/osd.cpp:264 +#: widgets/osd.cpp:263 #, qt-format msgid "Wii Remote %1: low battery (%2%)" msgstr "Wii Remote %1: 電池電量不足 (%2%)" @@ -5324,7 +5392,7 @@ msgstr "Windows Media 40k" msgid "Windows Media 64k" msgstr "Windows Media 64k" -#: core/song.cpp:339 +#: core/song.cpp:377 transcoder/transcoder.cpp:250 msgid "Windows Media audio" msgstr "Windows Media 音訊" @@ -5332,25 +5400,25 @@ msgstr "Windows Media 音訊" msgid "Without cover:" msgstr "" -#: library/libraryview.cpp:530 +#: library/libraryview.cpp:554 msgid "" "Would you like to move the other songs in this album to Various Artists as " "well?" msgstr "" -#: ui/mainwindow.cpp:2143 +#: ui/mainwindow.cpp:2380 msgid "Would you like to run a full rescan right now?" msgstr "您想要立刻執行完整的重新掃描嗎?" -#: library/librarysettingspage.cpp:151 +#: library/librarysettingspage.cpp:154 msgid "Write all songs statistics into songs' files" msgstr "" -#: internet/subsonicsettingspage.cpp:86 +#: internet/subsonicsettingspage.cpp:80 msgid "Wrong username or password." msgstr "" -#: playlist/playlist.cpp:1215 ui/organisedialog.cpp:66 +#: playlist/playlist.cpp:1311 ui/organisedialog.cpp:71 #: ../bin/src/ui_groupbydialog.h:135 ../bin/src/ui_groupbydialog.h:149 #: ../bin/src/ui_groupbydialog.h:163 ../bin/src/ui_edittagdialog.h:687 #: ../bin/src/ui_trackselectiondialog.h:212 ../bin/src/ui_ripcd.h:313 @@ -5362,11 +5430,11 @@ msgstr "年份" msgid "Year - Album" msgstr "年份 - 專輯" -#: smartplaylists/searchterm.cpp:314 +#: smartplaylists/searchterm.cpp:394 msgid "Years" msgstr "年" -#: core/utilities.cpp:129 +#: core/utilities.cpp:128 msgid "Yesterday" msgstr "昨天" @@ -5374,13 +5442,13 @@ msgstr "昨天" msgid "You are about to download the following albums" msgstr "您將要下載以下專輯" -#: playlist/playlistlistcontainer.cpp:316 +#: playlist/playlistlistcontainer.cpp:318 #, qt-format msgid "" "You are about to remove %1 playlists from your favorites, are you sure?" msgstr "" -#: playlist/playlisttabbar.cpp:177 +#: playlist/playlisttabbar.cpp:175 msgid "" "You are about to remove a playlist which is not part of your favorite playlists: the playlist will be deleted (this action cannot be undone). \n" "Are you sure you want to continue?" @@ -5390,12 +5458,12 @@ msgstr "" msgid "You are not signed in." msgstr "您還沒有登錄。" -#: widgets/loginstatewidget.cpp:75 +#: widgets/loginstatewidget.cpp:71 #, qt-format msgid "You are signed in as %1." msgstr "您是登錄為 %1。" -#: widgets/loginstatewidget.cpp:73 +#: widgets/loginstatewidget.cpp:68 msgid "You are signed in." msgstr "您已登錄。" @@ -5403,13 +5471,13 @@ msgstr "您已登錄。" msgid "You can change the way the songs in the library are organised." msgstr "您可以改變音樂庫中歌曲的組織方式。" -#: internet/digitallyimportedsettingspage.cpp:46 +#: internet/digitallyimportedsettingspage.cpp:45 msgid "" "You can listen for free without an account, but Premium members can listen " "to higher quality streams without advertisements." msgstr "您可以收聽免費的而不需要帳號,但高級會員可以收聽沒有廣告且更高品質的串流。" -#: internet/magnatunesettingspage.cpp:53 +#: internet/magnatunesettingspage.cpp:54 msgid "" "You can listen to Magnatune songs for free without an account. Purchasing a" " membership removes the messages at the end of each track." @@ -5419,13 +5487,6 @@ msgstr "您可以免費聽 Magnatune 的歌曲,而不需要一個帳戶。而 msgid "You can listen to background streams at the same time as other music." msgstr "您可以在同一時間聽「背景串流」和其他音樂。" -#: internet/lastfmsettingspage.cpp:148 -msgid "" -"You can scrobble tracks for free, but only paid subscribers can stream Last.fm radio from " -"Clementine." -msgstr "您可以免費 scrobble 曲目,但只有 付費用戶 可以透過 Clementine 串流 Last.fm 電台。" - #: ../bin/src/ui_wiimotesettingspage.h:184 msgid "" "You can use your Wii Remote as a remote control for Clementine. for more information.\n" msgstr "您可以使用您的 Wii 遙控器遙控 Clementine。 請參閱在 Clementine wiki 的頁面 取得更多的資訊。\n" -#: internet/groovesharksettingspage.cpp:103 +#: internet/groovesharksettingspage.cpp:109 msgid "You do not have a Grooveshark Anywhere account." msgstr "" -#: internet/spotifysettingspage.cpp:149 +#: internet/spotifysettingspage.cpp:146 msgid "You do not have a Spotify Premium account." msgstr "您沒有 Spotify 的高級帳戶。" -#: internet/digitallyimportedclient.cpp:89 +#: internet/digitallyimportedclient.cpp:93 msgid "You do not have an active subscription" msgstr "" -#: internet/spotifyservice.cpp:170 +#: ../bin/src/ui_soundcloudsettingspage.h:105 +msgid "" +"You don't need to be logged in to search and to listen to music on " +"SoundCloud. However, you need to login to access your playlists and your " +"stream." +msgstr "" + +#: internet/spotifyservice.cpp:175 msgid "" "You have been logged out of Spotify, please re-enter your password in the " "Settings dialog." msgstr "您已經登出 Spotify,請重新在設置對話框中輸入您的密碼。" -#: internet/spotifysettingspage.cpp:158 +#: internet/spotifysettingspage.cpp:157 msgid "You have been logged out of Spotify, please re-enter your password." msgstr "您已經登出Spotify,請重新輸入您的密碼。" -#: songinfo/lastfmtrackinfoprovider.cpp:87 +#: songinfo/lastfmtrackinfoprovider.cpp:85 msgid "You love this track" msgstr "您愛這首歌曲" -#: ../bin/src/ui_globalshortcutssettingspage.h:170 +#: ../bin/src/ui_globalshortcutssettingspage.h:180 +msgid "" +"You need to launch System Preferences and allow Clementine to \"control your computer\" to use global " +"shortcuts in Clementine." +msgstr "" + +#: ../bin/src/ui_globalshortcutssettingspage.h:179 msgid "" "You need to launch System Preferences and turn on \"Enable access for assistive devices\" to use global " @@ -5470,17 +5545,11 @@ msgstr "" msgid "You will need to restart Clementine if you change the language." msgstr "您將需要重新啟動 Clementine ,如果您變更了本程式使用者介面所用的語言。" -#: internet/lastfmsettingspage.cpp:114 -msgid "" -"You will not be able to play Last.fm radio stations as you are not a Last.fm" -" subscriber." -msgstr "" - -#: ../bin/src/ui_networkremotesettingspage.h:200 +#: ../bin/src/ui_networkremotesettingspage.h:201 msgid "Your IP address:" msgstr "" -#: internet/lastfmsettingspage.cpp:80 +#: internet/lastfmsettingspage.cpp:76 msgid "Your Last.fm credentials were incorrect" msgstr "" @@ -5488,42 +5557,43 @@ msgstr "" msgid "Your Magnatune credentials were incorrect" msgstr "您的 Magnatune 的憑證是不正確的" -#: library/libraryview.cpp:343 +#: library/libraryview.cpp:345 msgid "Your library is empty!" msgstr "您的音樂庫是空的!" -#: globalsearch/savedradiosearchprovider.cpp:28 internet/savedradio.cpp:49 +#: globalsearch/savedradiosearchprovider.cpp:27 internet/savedradio.cpp:47 msgid "Your radio streams" msgstr "您的電台" -#: songinfo/lastfmtrackinfoprovider.cpp:88 +#: songinfo/lastfmtrackinfoprovider.cpp:87 #, qt-format msgid "Your scrobbles: %1" msgstr "" -#: visualisations/visualisationcontainer.cpp:152 +#: visualisations/visualisationcontainer.cpp:159 msgid "Your system is missing OpenGL support, visualizations are unavailable." msgstr "" -#: internet/groovesharksettingspage.cpp:107 -#: internet/spotifysettingspage.cpp:154 internet/ubuntuonesettingspage.cpp:76 +#: internet/groovesharksettingspage.cpp:114 +#: internet/spotifysettingspage.cpp:152 msgid "Your username or password was incorrect." msgstr "" -#: smartplaylists/searchterm.cpp:297 +#: smartplaylists/searchterm.cpp:365 msgid "Z-A" msgstr "" -#: ui/equalizer.cpp:136 +#: ui/equalizer.cpp:152 msgid "Zero" msgstr "Zero" -#: playlist/playlistundocommands.cpp:37 +#: playlist/playlistundocommands.cpp:28 #, c-format, qt-plural-format +msgctxt "" msgid "add %n songs" msgstr "加入 %n 歌" -#: smartplaylists/searchterm.cpp:205 +#: smartplaylists/searchterm.cpp:204 msgid "after" msgstr "之後" @@ -5543,19 +5613,19 @@ msgstr "自動" msgid "before" msgstr "之前" -#: smartplaylists/searchterm.cpp:211 +#: smartplaylists/searchterm.cpp:216 msgid "between" msgstr "之間" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:375 msgid "biggest first" msgstr "最大優先" -#: playlist/playlistview.cpp:204 ui/edittagdialog.cpp:458 +#: playlist/playlistview.cpp:228 ui/edittagdialog.cpp:476 msgid "bpm" msgstr "bpm" -#: smartplaylists/searchterm.cpp:217 +#: smartplaylists/searchterm.cpp:224 msgid "contains" msgstr "包含" @@ -5565,20 +5635,20 @@ msgstr "包含" msgid "disabled" msgstr "禁用" -#: widgets/osd.cpp:114 +#: widgets/osd.cpp:110 #, qt-format msgid "disc %1" msgstr "光碟%1" -#: smartplaylists/searchterm.cpp:218 +#: smartplaylists/searchterm.cpp:226 msgid "does not contain" msgstr "不包含" -#: smartplaylists/searchterm.cpp:220 +#: smartplaylists/searchterm.cpp:230 msgid "ends with" msgstr "以...結尾" -#: smartplaylists/searchterm.cpp:223 +#: smartplaylists/searchterm.cpp:236 msgid "equals" msgstr "相等" @@ -5586,11 +5656,11 @@ msgstr "相等" msgid "gpodder.net" msgstr "gpodder.net" -#: podcasts/gpoddertoptagspage.cpp:34 +#: podcasts/gpoddertoptagspage.cpp:32 msgid "gpodder.net directory" msgstr "gpodder.net 目錄" -#: smartplaylists/searchterm.cpp:221 +#: smartplaylists/searchterm.cpp:232 msgid "greater than" msgstr "大於" @@ -5598,54 +5668,55 @@ msgstr "大於" msgid "iPods and USB devices currently don't work on Windows. Sorry!" msgstr "" -#: smartplaylists/searchterm.cpp:209 +#: smartplaylists/searchterm.cpp:212 msgid "in the last" msgstr "在最後" -#: internet/spotifysettingspage.cpp:60 internet/spotifysettingspage.cpp:61 -#: internet/spotifysettingspage.cpp:62 playlist/playlistview.cpp:206 -#: ui/edittagdialog.cpp:460 +#: internet/spotifysettingspage.cpp:59 internet/spotifysettingspage.cpp:60 +#: internet/spotifysettingspage.cpp:61 playlist/playlistview.cpp:232 +#: ui/edittagdialog.cpp:478 msgid "kbps" msgstr "kbps" -#: smartplaylists/searchterm.cpp:222 +#: smartplaylists/searchterm.cpp:234 msgid "less than" msgstr "少於" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:371 msgid "longest first" msgstr "最長優先" -#: playlist/playlistundocommands.cpp:99 +#: playlist/playlistundocommands.cpp:82 #, c-format, qt-plural-format +msgctxt "" msgid "move %n songs" msgstr "" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:368 msgid "newest first" msgstr "最新優先" -#: smartplaylists/searchterm.cpp:224 +#: smartplaylists/searchterm.cpp:238 msgid "not equals" msgstr "不相等" -#: smartplaylists/searchterm.cpp:210 +#: smartplaylists/searchterm.cpp:214 msgid "not in the last" msgstr "不在最後" -#: smartplaylists/searchterm.cpp:208 +#: smartplaylists/searchterm.cpp:210 msgid "not on" msgstr "不在" -#: smartplaylists/searchterm.cpp:298 +#: smartplaylists/searchterm.cpp:367 msgid "oldest first" msgstr "最舊優先" -#: smartplaylists/searchterm.cpp:207 +#: smartplaylists/searchterm.cpp:208 msgid "on" msgstr "在" -#: core/commandlineoptions.cpp:150 +#: core/commandlineoptions.cpp:142 msgid "options" msgstr "選項" @@ -5657,36 +5728,37 @@ msgstr "" msgid "press enter" msgstr "按下Enter" -#: playlist/playlistundocommands.cpp:65 playlist/playlistundocommands.cpp:88 +#: playlist/playlistundocommands.cpp:53 playlist/playlistundocommands.cpp:75 #, c-format, qt-plural-format +msgctxt "" msgid "remove %n songs" msgstr "移除 %n 歌" -#: smartplaylists/searchterm.cpp:299 +#: smartplaylists/searchterm.cpp:370 msgid "shortest first" msgstr "最短優先" -#: playlist/playlistundocommands.cpp:138 +#: playlist/playlistundocommands.cpp:106 msgid "shuffle songs" msgstr "" -#: smartplaylists/searchterm.cpp:301 +#: smartplaylists/searchterm.cpp:374 msgid "smallest first" msgstr "最小優先" -#: playlist/playlistundocommands.cpp:131 +#: playlist/playlistundocommands.cpp:100 msgid "sort songs" msgstr "" -#: smartplaylists/searchterm.cpp:219 +#: smartplaylists/searchterm.cpp:228 msgid "starts with" msgstr "以...開始" -#: playlist/playlistdelegates.cpp:185 +#: playlist/playlistdelegates.cpp:181 msgid "stop" msgstr "停止" -#: widgets/osd.cpp:116 +#: widgets/osd.cpp:111 #, qt-format msgid "track %1" msgstr "歌曲 %1" diff --git a/src/ui/about.cpp b/src/ui/about.cpp index 53e42bd89..da601f755 100644 --- a/src/ui/about.cpp +++ b/src/ui/about.cpp @@ -24,14 +24,13 @@ const char* About::kUrl = "http://www.clementine-player.org/"; -About::About(QWidget *parent) - : QDialog(parent) -{ +About::About(QWidget* parent) : QDialog(parent) { ui_.setupUi(this); setWindowTitle(tr("About %1").arg(QCoreApplication::applicationName())); ui_.title->setText(QCoreApplication::applicationName()); - ui_.version->setText(tr("Version %1").arg(QCoreApplication::applicationVersion())); + ui_.version->setText( + tr("Version %1").arg(QCoreApplication::applicationVersion())); QFont title_font; title_font.setBold(true); @@ -44,7 +43,8 @@ About::About(QWidget *parent) << Person("Arnaud Bienner", "arnaud.bienner@gmail.com"); thanks_to_ << Person("Mark Kretschmann", "kretschmann@kde.org") << Person("Max Howell", "max.howell@methylblue.com") - << Person(QString::fromUtf8("Bartłomiej Burdukiewicz"), "dev.strikeu@gmail.com") + << Person(QString::fromUtf8("Bartłomiej Burdukiewicz"), + "dev.strikeu@gmail.com") << Person("Jakub Stachowski", "qbast@go2.pl") << Person("Paul Cifarelli", "paul@cifarelli.net") << Person("Felipe Rivera", "liebremx@users.sourceforge.net") @@ -57,32 +57,43 @@ About::About(QWidget *parent) ui_.content->setHtml(MakeHtml()); - ui_.buttonBox->button(QDialogButtonBox::Close)->setShortcut(QKeySequence::Close); + ui_.buttonBox->button(QDialogButtonBox::Close) + ->setShortcut(QKeySequence::Close); } QString About::MakeHtml() const { - QString ret = QString("

%2

" - "

%3:").arg(kUrl, kUrl, tr("Authors")); + QString ret = QString( + "

%2

" + "

%3:").arg(kUrl, kUrl, tr("Authors")); - foreach (const Person& person, authors_) + for (const Person& person : authors_) { ret += "
" + MakeHtml(person); + } ret += QString("

%3:").arg(tr("Thanks to")); - foreach (const Person& person, thanks_to_) + for (const Person& person : thanks_to_) { ret += "
" + MakeHtml(person); - ret += QString("
" + tr("All the translators") + " <" - "https://www.transifex.net/projects/p/clementine>"); + } + ret += QString( + "
" + tr("All the translators") + + " <" + "https://www.transifex.com/projects/p/clementine/>"); ret += QString("
%1

").arg(tr("...and all the Amarok contributors")); ret += QString("

%1").arg(tr("And:")); ret += QString("
Rainy Mood"); - ret += QString("
Scott Smitelli"); - ret += QString("
Allie Brosh

"); + ret += QString( + "
Scott " + "Smitelli"); + ret += QString( + "
Allie " + "Brosh

"); - ret += "

This product uses Music by Spotify but is not endorsed, certified " - "or otherwise approved in any way by Spotify. Spotify is the registered " - "trade mark of the Spotify Group.

"; + ret += + "

This product uses Music by Spotify but is not endorsed, certified " + "or otherwise approved in any way by Spotify. Spotify is the registered " + "trade mark of the Spotify Group.

"; return ret; } diff --git a/src/ui/about.h b/src/ui/about.h index 285f2c509..97aa7bd36 100644 --- a/src/ui/about.h +++ b/src/ui/about.h @@ -25,14 +25,15 @@ class About : public QDialog { Q_OBJECT public: - About(QWidget* parent = 0); + About(QWidget* parent = nullptr); static const char* kUrl; struct Person { - Person(const QString& n, const QString& e = QString()) : name(n), email(e) {} + Person(const QString& n, const QString& e = QString()) + : name(n), email(e) {} - bool operator <(const Person& other) const { return name < other.name; } + bool operator<(const Person& other) const { return name < other.name; } QString name; QString email; @@ -49,4 +50,4 @@ class About : public QDialog { QList thanks_to_; }; -#endif // ABOUT_H +#endif // ABOUT_H diff --git a/src/ui/addstreamdialog.cpp b/src/ui/addstreamdialog.cpp index 6e47ec370..cdf90cbc5 100644 --- a/src/ui/addstreamdialog.cpp +++ b/src/ui/addstreamdialog.cpp @@ -27,11 +27,8 @@ const char* AddStreamDialog::kSettingsGroup = "AddStreamDialog"; -AddStreamDialog::AddStreamDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_AddStreamDialog), - saved_radio_(NULL) -{ +AddStreamDialog::AddStreamDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_AddStreamDialog), saved_radio_(nullptr) { ui_->setupUi(this); connect(ui_->url, SIGNAL(textChanged(QString)), SLOT(TextChanged(QString))); @@ -45,30 +42,23 @@ AddStreamDialog::AddStreamDialog(QWidget *parent) ui_->name->setText(s.value("name").toString()); } -AddStreamDialog::~AddStreamDialog() { - delete ui_; -} +AddStreamDialog::~AddStreamDialog() { delete ui_; } -QUrl AddStreamDialog::url() const { - return QUrl(ui_->url->text()); -} +QUrl AddStreamDialog::url() const { return QUrl(ui_->url->text()); } -QString AddStreamDialog::name() const { - return ui_->name->text(); -} +QString AddStreamDialog::name() const { return ui_->name->text(); } -void AddStreamDialog::set_name(const QString &name) { +void AddStreamDialog::set_name(const QString& name) { ui_->name->setText(name); } -void AddStreamDialog::set_url(const QUrl &url) { +void AddStreamDialog::set_url(const QUrl& url) { ui_->url->setText(url.toString()); } void AddStreamDialog::set_save_visible(bool visible) { ui_->save->setVisible(visible); - if (!visible) - ui_->name_container->setEnabled(true); + if (!visible) ui_->name_container->setEnabled(true); } void AddStreamDialog::accept() { @@ -86,18 +76,17 @@ void AddStreamDialog::accept() { QDialog::accept(); } -void AddStreamDialog::TextChanged(const QString &text) { +void AddStreamDialog::TextChanged(const QString& text) { // Decide whether the URL is valid QUrl url(text); - bool valid = url.isValid() && - !url.scheme().isEmpty() && - !url.toString().isEmpty(); + bool valid = + url.isValid() && !url.scheme().isEmpty() && !url.toString().isEmpty(); ui_->button_box->button(QDialogButtonBox::Ok)->setEnabled(valid); } -void AddStreamDialog::showEvent(QShowEvent *) { +void AddStreamDialog::showEvent(QShowEvent*) { ui_->url->setFocus(); ui_->url->selectAll(); } diff --git a/src/ui/addstreamdialog.h b/src/ui/addstreamdialog.h index 82a21637e..f076d36f0 100644 --- a/src/ui/addstreamdialog.h +++ b/src/ui/addstreamdialog.h @@ -28,13 +28,15 @@ class AddStreamDialog : public QDialog { Q_OBJECT public: - AddStreamDialog(QWidget *parent = 0); + AddStreamDialog(QWidget* parent = nullptr); ~AddStreamDialog(); void set_url(const QUrl& url); void set_name(const QString& name); void set_save_visible(bool visible); - void set_add_on_accept(SavedRadio* saved_radio) { saved_radio_ = saved_radio; } + void set_add_on_accept(SavedRadio* saved_radio) { + saved_radio_ = saved_radio; + } QUrl url() const; QString name() const; @@ -42,7 +44,7 @@ class AddStreamDialog : public QDialog { void accept(); protected: - void showEvent(QShowEvent *); + void showEvent(QShowEvent*); private slots: void TextChanged(const QString& text); @@ -55,4 +57,4 @@ class AddStreamDialog : public QDialog { SavedRadio* saved_radio_; }; -#endif // ADDSTREAMDIALOG_H +#endif // ADDSTREAMDIALOG_H diff --git a/src/ui/albumcoverchoicecontroller.cpp b/src/ui/albumcoverchoicecontroller.cpp index a648268e9..06a40f3c5 100644 --- a/src/ui/albumcoverchoicecontroller.cpp +++ b/src/ui/albumcoverchoicecontroller.cpp @@ -30,6 +30,7 @@ #include "ui/iconloader.h" #include +#include #include #include #include @@ -39,31 +40,37 @@ #include #include -const char* AlbumCoverChoiceController::kLoadImageFileFilter = - QT_TR_NOOP("Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)"); +const char* AlbumCoverChoiceController::kLoadImageFileFilter = QT_TR_NOOP( + "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)"); const char* AlbumCoverChoiceController::kSaveImageFileFilter = - QT_TR_NOOP("Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)"); + QT_TR_NOOP("Images (*.png *.jpg *.jpeg *.bmp *.xpm *.pbm *.ppm *.xbm)"); const char* AlbumCoverChoiceController::kAllFilesFilter = - QT_TR_NOOP("All files (*)"); + QT_TR_NOOP("All files (*)"); -QSet* AlbumCoverChoiceController::sImageExtensions = NULL; +QSet* AlbumCoverChoiceController::sImageExtensions = nullptr; AlbumCoverChoiceController::AlbumCoverChoiceController(QWidget* parent) - : QWidget(parent), - app_(NULL), - cover_searcher_(NULL), - cover_fetcher_(NULL), - save_file_dialog_(NULL), - cover_from_url_dialog_(NULL) -{ - cover_from_file_ = new QAction(IconLoader::Load("document-open"), tr("Load cover from disk..."), this); - cover_to_file_ = new QAction(IconLoader::Load("document-save"), tr("Save cover to disk..."), this); - cover_from_url_ = new QAction(IconLoader::Load("download"), tr("Load cover from URL..."), this); - search_for_cover_ = new QAction(IconLoader::Load("find"), tr("Search for album covers..."), this); - unset_cover_ = new QAction(IconLoader::Load("list-remove"), tr("Unset cover"), this); - show_cover_ = new QAction(IconLoader::Load("zoom-in"), tr("Show fullsize..."), this); + : QWidget(parent), + app_(nullptr), + cover_searcher_(nullptr), + cover_fetcher_(nullptr), + save_file_dialog_(nullptr), + cover_from_url_dialog_(nullptr) { + cover_from_file_ = new QAction(IconLoader::Load("document-open"), + tr("Load cover from disk..."), this); + cover_to_file_ = new QAction(IconLoader::Load("document-save"), + tr("Save cover to disk..."), this); + cover_from_url_ = new QAction(IconLoader::Load("download"), + tr("Load cover from URL..."), this); + search_for_cover_ = new QAction(IconLoader::Load("find"), + tr("Search for album covers..."), this); + unset_cover_ = + new QAction(IconLoader::Load("list-remove"), tr("Unset cover"), this); + show_cover_ = + new QAction(IconLoader::Load("zoom-in"), tr("Show fullsize..."), this); - search_cover_auto_ = new QAction(IconLoader::Load("find"), tr("Search automatically"), this); + search_cover_auto_ = + new QAction(IconLoader::Load("find"), tr("Search automatically"), this); search_cover_auto_->setCheckable(true); search_cover_auto_->setChecked(false); @@ -71,9 +78,7 @@ AlbumCoverChoiceController::AlbumCoverChoiceController(QWidget* parent) separator_->setSeparator(true); } -AlbumCoverChoiceController::~AlbumCoverChoiceController() -{ -} +AlbumCoverChoiceController::~AlbumCoverChoiceController() {} void AlbumCoverChoiceController::SetApplication(Application* app) { app_ = app; @@ -82,29 +87,30 @@ void AlbumCoverChoiceController::SetApplication(Application* app) { cover_searcher_ = new AlbumCoverSearcher(QIcon(":/nocover.png"), app, this); cover_searcher_->Init(cover_fetcher_); - connect(cover_fetcher_, SIGNAL(AlbumCoverFetched(quint64,QImage,CoverSearchStatistics)), - this, SLOT(AlbumCoverFetched(quint64,QImage,CoverSearchStatistics))); + connect(cover_fetcher_, + SIGNAL(AlbumCoverFetched(quint64, QImage, CoverSearchStatistics)), + this, + SLOT(AlbumCoverFetched(quint64, QImage, CoverSearchStatistics))); } QList AlbumCoverChoiceController::GetAllActions() { - return QList() << cover_from_file_ << cover_to_file_ - << separator_ + return QList() << cover_from_file_ << cover_to_file_ << separator_ << cover_from_url_ << search_for_cover_ << unset_cover_ << show_cover_; } QString AlbumCoverChoiceController::LoadCoverFromFile(Song* song) { QString cover = QFileDialog::getOpenFileName( - this, tr("Load cover from disk"), GetInitialPathForFileDialog(*song, QString()), + this, tr("Load cover from disk"), + GetInitialPathForFileDialog(*song, QString()), tr(kLoadImageFileFilter) + ";;" + tr(kAllFilesFilter)); - if (cover.isNull()) - return QString(); + if (cover.isNull()) return QString(); // Can we load the image? QImage image(cover); - if(!image.isNull()) { + if (!image.isNull()) { SaveCover(song, cover); return cover; } else { @@ -112,53 +118,54 @@ QString AlbumCoverChoiceController::LoadCoverFromFile(Song* song) { } } -void AlbumCoverChoiceController::SaveCoverToFile(const Song& song, const QImage& image) { - QString initial_file_name = "/" + (song.album().isEmpty() - ? tr("Unknown") - : song.album()) + ".jpg"; +void AlbumCoverChoiceController::SaveCoverToFile(const Song& song, + const QImage& image) { + QString initial_file_name = + "/" + (song.album().isEmpty() ? tr("Unknown") : song.album()) + ".jpg"; QString save_filename = QFileDialog::getSaveFileName( - this, tr("Save album cover"), GetInitialPathForFileDialog(song, initial_file_name), + this, tr("Save album cover"), + GetInitialPathForFileDialog(song, initial_file_name), tr(kSaveImageFileFilter) + ";;" + tr(kAllFilesFilter)); - if(save_filename.isNull()) - return; + if (save_filename.isNull()) return; QString extension = save_filename.right(4); if (!extension.startsWith('.') || - !QImageWriter::supportedImageFormats().contains(extension.right(3).toUtf8())) { + !QImageWriter::supportedImageFormats().contains( + extension.right(3).toUtf8())) { save_filename.append(".jpg"); } image.save(save_filename); } -QString AlbumCoverChoiceController::GetInitialPathForFileDialog(const Song& song, - const QString& filename) { +QString AlbumCoverChoiceController::GetInitialPathForFileDialog( + const Song& song, const QString& filename) { // art automatic is first to show user which cover the album may be // using now; the song is using it if there's no manual path but we // cannot use manual path here because it can contain cached paths if (!song.art_automatic().isEmpty() && !song.has_embedded_cover()) { return song.art_automatic(); - // if no automatic art, start in the song's folder + // if no automatic art, start in the song's folder } else if (!song.url().isEmpty() && song.url().toLocalFile().contains('/')) { return song.url().toLocalFile().section('/', 0, -2) + filename; - // fallback - start in home + // fallback - start in home } else { return QDir::home().absolutePath() + filename; } } QString AlbumCoverChoiceController::LoadCoverFromURL(Song* song) { - if(!cover_from_url_dialog_) { + if (!cover_from_url_dialog_) { cover_from_url_dialog_ = new CoverFromURLDialog(this); } QImage image = cover_from_url_dialog_->Exec(); - if(!image.isNull()) { + if (!image.isNull()) { QString cover = SaveCoverInCache(song->artist(), song->album(), image); SaveCover(song, cover); @@ -172,7 +179,7 @@ QString AlbumCoverChoiceController::SearchForCover(Song* song) { // Get something sensible to stick in the search box QImage image = cover_searcher_->Exec(song->artist(), song->album()); - if(!image.isNull()) { + if (!image.isNull()) { QString cover = SaveCoverInCache(song->artist(), song->album(), image); SaveCover(song, cover); @@ -195,19 +202,41 @@ void AlbumCoverChoiceController::ShowCover(const Song& song) { // Use Artist - Album as the window title QString title_text(song.albumartist()); - if (title_text.isEmpty()) - title_text = song.artist(); + if (title_text.isEmpty()) title_text = song.artist(); - if (!song.album().isEmpty()) - title_text += " - " + song.album(); - - dialog->setWindowTitle(title_text); + if (!song.album().isEmpty()) title_text += " - " + song.album(); QLabel* label = new QLabel(dialog); label->setPixmap(AlbumCoverLoader::TryLoadPixmap( song.art_automatic(), song.art_manual(), song.url().toLocalFile())); - dialog->resize(label->pixmap()->size()); + // add (WxHpx) to the title before possibly resizing + title_text += " (" + QString::number(label->pixmap()->width()) + "x" + + QString::number(label->pixmap()->height()) + "px)"; + + // if the cover is larger than the screen, resize the window + // 85% seems to be enough to account for title bar and taskbar etc. + QDesktopWidget desktop; + int desktop_height = desktop.geometry().height(); + int desktop_width = desktop.geometry().width(); + + // resize differently if monitor is in portrait mode + if (desktop_width < desktop_height) { + const int new_width = (double)desktop_width * 0.95; + if (new_width < label->pixmap()->width()) { + label->setPixmap( + label->pixmap()->scaledToWidth(new_width, Qt::SmoothTransformation)); + } + } else { + const int new_height = (double)desktop_height * 0.85; + if (new_height < label->pixmap()->height()) { + label->setPixmap(label->pixmap()->scaledToHeight( + new_height, Qt::SmoothTransformation)); + } + } + + dialog->setWindowTitle(title_text); + dialog->setFixedSize(label->pixmap()->size()); dialog->show(); } @@ -216,9 +245,8 @@ void AlbumCoverChoiceController::SearchCoverAutomatically(const Song& song) { cover_fetching_tasks_[id] = song; } -void AlbumCoverChoiceController::AlbumCoverFetched(quint64 id, - const QImage& image, - const CoverSearchStatistics& statistics) { +void AlbumCoverChoiceController::AlbumCoverFetched( + quint64 id, const QImage& image, const CoverSearchStatistics& statistics) { Song song; if (cover_fetching_tasks_.contains(id)) { song = cover_fetching_tasks_.take(id); @@ -232,10 +260,11 @@ void AlbumCoverChoiceController::AlbumCoverFetched(quint64 id, emit AutomaticCoverSearchDone(); } -void AlbumCoverChoiceController::SaveCover(Song* song, const QString &cover) { - if(song->is_valid() && song->id() != -1) { +void AlbumCoverChoiceController::SaveCover(Song* song, const QString& cover) { + if (song->is_valid() && song->id() != -1) { song->set_art_manual(cover); - app_->library_backend()->UpdateManualAlbumArtAsync(song->artist(), song->album(), cover); + app_->library_backend()->UpdateManualAlbumArtAsync(song->artist(), + song->album(), cover); if (song->url() == app_->current_art_loader()->last_song().url()) { app_->current_art_loader()->LoadArt(*song); @@ -243,9 +272,9 @@ void AlbumCoverChoiceController::SaveCover(Song* song, const QString &cover) { } } -QString AlbumCoverChoiceController::SaveCoverInCache( - const QString& artist, const QString& album, const QImage& image) { - +QString AlbumCoverChoiceController::SaveCoverInCache(const QString& artist, + const QString& album, + const QImage& image) { // Hash the artist and album into a filename for the image QString filename(Utilities::Sha1CoverHash(artist, album).toHex() + ".jpg"); QString path(AlbumCoverLoader::ImageCacheDir() + "/" + filename); @@ -263,18 +292,25 @@ QString AlbumCoverChoiceController::SaveCoverInCache( bool AlbumCoverChoiceController::IsKnownImageExtension(const QString& suffix) { if (!sImageExtensions) { sImageExtensions = new QSet(); - (*sImageExtensions) << "png" << "jpg" << "jpeg" << "bmp" << "gif" << "xpm" - << "pbm" << "pgm" << "ppm" << "xbm"; + (*sImageExtensions) << "png" + << "jpg" + << "jpeg" + << "bmp" + << "gif" + << "xpm" + << "pbm" + << "pgm" + << "ppm" + << "xbm"; } return sImageExtensions->contains(suffix); } bool AlbumCoverChoiceController::CanAcceptDrag(const QDragEnterEvent* e) { - foreach (const QUrl& url, e->mimeData()->urls()) { + for (const QUrl& url : e->mimeData()->urls()) { const QString suffix = QFileInfo(url.toLocalFile()).suffix().toLower(); - if (IsKnownImageExtension(suffix)) - return true; + if (IsKnownImageExtension(suffix)) return true; } if (e->mimeData()->hasImage()) { return true; @@ -283,7 +319,7 @@ bool AlbumCoverChoiceController::CanAcceptDrag(const QDragEnterEvent* e) { } QString AlbumCoverChoiceController::SaveCover(Song* song, const QDropEvent* e) { - foreach (const QUrl& url, e->mimeData()->urls()) { + for (const QUrl& url : e->mimeData()->urls()) { const QString filename = url.toLocalFile(); const QString suffix = QFileInfo(filename).suffix().toLower(); @@ -296,7 +332,8 @@ QString AlbumCoverChoiceController::SaveCover(Song* song, const QDropEvent* e) { if (e->mimeData()->hasImage()) { QImage image = qvariant_cast(e->mimeData()->imageData()); if (!image.isNull()) { - QString cover_path = SaveCoverInCache(song->artist(), song->album(), image); + QString cover_path = + SaveCoverInCache(song->artist(), song->album(), image); SaveCover(song, cover_path); return cover_path; } diff --git a/src/ui/albumcoverchoicecontroller.h b/src/ui/albumcoverchoicecontroller.h index b7e574fe7..c71a4f5c7 100644 --- a/src/ui/albumcoverchoicecontroller.h +++ b/src/ui/albumcoverchoicecontroller.h @@ -41,7 +41,7 @@ class AlbumCoverChoiceController : public QWidget { static const char* kSaveImageFileFilter; static const char* kAllFilesFilter; - AlbumCoverChoiceController(QWidget* parent = 0); + AlbumCoverChoiceController(QWidget* parent = nullptr); ~AlbumCoverChoiceController(); void SetApplication(Application* app); @@ -67,11 +67,13 @@ class AlbumCoverChoiceController : public QWidget { // All of the methods below require a currently selected song as an // input parameter. Also - LoadCoverFromFile, LoadCoverFromURL, - // SearchForCover, UnsetCover and SaveCover all update manual path + // SearchForCover, UnsetCover and SaveCover all update manual path // of the given song in library to the new cover. - // Lets the user choose a cover from disk. If no cover will be chosen or the chosen - // cover will not be a proper image, this returns an empty string. Otherwise, the + // Lets the user choose a cover from disk. If no cover will be chosen or the + // chosen + // cover will not be a proper image, this returns an empty string. Otherwise, + // the // path to the chosen cover will be returned. QString LoadCoverFromFile(Song* song); @@ -79,7 +81,8 @@ class AlbumCoverChoiceController : public QWidget { // is supposed to be the cover of the given song's album. void SaveCoverToFile(const Song& song, const QImage& image); - // Downloads the cover from an URL given by user. This returns the downloaded image + // Downloads the cover from an URL given by user. This returns the downloaded + // image // or null image if something went wrong for example when user cancelled the // dialog. QString LoadCoverFromURL(Song* song); @@ -103,20 +106,21 @@ class AlbumCoverChoiceController : public QWidget { // Saves the cover that the user picked through a drag and drop operation. QString SaveCover(Song* song, const QDropEvent* e); - // Saves the given image in cache as a cover for 'artist' - 'album'. + // Saves the given image in cache as a cover for 'artist' - 'album'. // The method returns path of the cached image. - QString SaveCoverInCache(const QString& artist, const QString& album, const QImage& image); + QString SaveCoverInCache(const QString& artist, const QString& album, + const QImage& image); static bool CanAcceptDrag(const QDragEnterEvent* e); signals: void AutomaticCoverSearchDone(); -private slots: + private slots: void AlbumCoverFetched(quint64 id, const QImage& image, const CoverSearchStatistics& statistics); -private: + private: QString GetInitialPathForFileDialog(const Song& song, const QString& filename); @@ -142,4 +146,4 @@ private: QMap cover_fetching_tasks_; }; -#endif // ALBUMCOVERCHOICECONTROLLER_H +#endif // ALBUMCOVERCHOICECONTROLLER_H diff --git a/src/ui/albumcoverexport.cpp b/src/ui/albumcoverexport.cpp index 08f286283..bd73e3219 100644 --- a/src/ui/albumcoverexport.cpp +++ b/src/ui/albumcoverexport.cpp @@ -23,17 +23,14 @@ const char* AlbumCoverExport::kSettingsGroup = "AlbumCoverExport"; AlbumCoverExport::AlbumCoverExport(QWidget* parent) - : QDialog(parent), - ui_(new Ui_AlbumCoverExport) -{ + : QDialog(parent), ui_(new Ui_AlbumCoverExport) { ui_->setupUi(this); - connect(ui_->forceSize, SIGNAL(stateChanged(int)), SLOT(ForceSizeToggled(int))); + connect(ui_->forceSize, SIGNAL(stateChanged(int)), + SLOT(ForceSizeToggled(int))); } -AlbumCoverExport::~AlbumCoverExport() { - delete ui_; -} +AlbumCoverExport::~AlbumCoverExport() { delete ui_; } AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { QSettings s; @@ -41,13 +38,17 @@ AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { // restore last accepted settings ui_->fileName->setText(s.value("fileName", "cover").toString()); - ui_->doNotOverwrite->setChecked(s.value("overwrite", OverwriteMode_None).toInt() == OverwriteMode_None); - ui_->overwriteAll->setChecked(s.value("overwrite", OverwriteMode_All).toInt() == OverwriteMode_All); - ui_->overwriteSmaller->setChecked(s.value("overwrite", OverwriteMode_Smaller).toInt() == OverwriteMode_Smaller); + ui_->doNotOverwrite->setChecked( + s.value("overwrite", OverwriteMode_None).toInt() == OverwriteMode_None); + ui_->overwriteAll->setChecked( + s.value("overwrite", OverwriteMode_All).toInt() == OverwriteMode_All); + ui_->overwriteSmaller->setChecked(s.value("overwrite", OverwriteMode_Smaller) + .toInt() == OverwriteMode_Smaller); ui_->forceSize->setChecked(s.value("forceSize", false).toBool()); ui_->width->setText(s.value("width", "").toString()); ui_->height->setText(s.value("height", "").toString()); - ui_->export_downloaded->setChecked(s.value("export_downloaded", true).toBool()); + ui_->export_downloaded->setChecked( + s.value("export_downloaded", true).toBool()); ui_->export_embedded->setChecked(s.value("export_embedded", false).toBool()); ForceSizeToggled(ui_->forceSize->checkState()); @@ -55,16 +56,16 @@ AlbumCoverExport::DialogResult AlbumCoverExport::Exec() { DialogResult result = DialogResult(); result.cancelled_ = (exec() == QDialog::Rejected); - if(!result.cancelled_) { + if (!result.cancelled_) { QString fileName = ui_->fileName->text(); if (fileName.isEmpty()) { fileName = "cover"; } - OverwriteMode overwrite = ui_->doNotOverwrite->isChecked() - ? OverwriteMode_None - : (ui_->overwriteAll->isChecked() - ? OverwriteMode_All - : OverwriteMode_Smaller); + OverwriteMode overwrite = + ui_->doNotOverwrite->isChecked() + ? OverwriteMode_None + : (ui_->overwriteAll->isChecked() ? OverwriteMode_All + : OverwriteMode_Smaller); bool forceSize = ui_->forceSize->isChecked(); QString width = ui_->width->text(); QString height = ui_->height->text(); diff --git a/src/ui/albumcoverexport.h b/src/ui/albumcoverexport.h index fc099e075..9cac2a3c0 100644 --- a/src/ui/albumcoverexport.h +++ b/src/ui/albumcoverexport.h @@ -27,7 +27,7 @@ class AlbumCoverExport : public QDialog { Q_OBJECT public: - AlbumCoverExport(QWidget* parent = 0); + AlbumCoverExport(QWidget* parent = nullptr); ~AlbumCoverExport(); enum OverwriteMode { @@ -68,4 +68,4 @@ class AlbumCoverExport : public QDialog { static const char* kSettingsGroup; }; -#endif // ALBUMCOVEREXPORT_H +#endif // ALBUMCOVEREXPORT_H diff --git a/src/ui/albumcovermanager.cpp b/src/ui/albumcovermanager.cpp index ab98af032..575c53fd8 100644 --- a/src/ui/albumcovermanager.cpp +++ b/src/ui/albumcovermanager.cpp @@ -57,22 +57,22 @@ AlbumCoverManager::AlbumCoverManager(Application* app, LibraryBackend* library_backend, QWidget* parent, QNetworkAccessManager* network) - : QMainWindow(parent), - ui_(new Ui_CoverManager), - app_(app), - album_cover_choice_controller_(new AlbumCoverChoiceController(this)), - cover_fetcher_(new AlbumCoverFetcher(app_->cover_providers(), this, network)), - cover_searcher_(NULL), - cover_export_(NULL), - cover_exporter_(new AlbumCoverExporter(this)), - artist_icon_(IconLoader::Load("x-clementine-artist")), - all_artists_icon_(IconLoader::Load("x-clementine-album")), - context_menu_(new QMenu(this)), - progress_bar_(new QProgressBar(this)), - abort_progress_(new QPushButton(this)), - jobs_(0), - library_backend_(library_backend) -{ + : QMainWindow(parent), + ui_(new Ui_CoverManager), + app_(app), + album_cover_choice_controller_(new AlbumCoverChoiceController(this)), + cover_fetcher_( + new AlbumCoverFetcher(app_->cover_providers(), this, network)), + cover_searcher_(nullptr), + cover_export_(nullptr), + cover_exporter_(new AlbumCoverExporter(this)), + artist_icon_(IconLoader::Load("x-clementine-artist")), + all_artists_icon_(IconLoader::Load("x-clementine-album")), + context_menu_(new QMenu(this)), + progress_bar_(new QProgressBar(this)), + abort_progress_(new QPushButton(this)), + jobs_(0), + library_backend_(library_backend) { ui_->setupUi(this); ui_->albums->set_cover_manager(this); @@ -81,19 +81,22 @@ AlbumCoverManager::AlbumCoverManager(Application* app, ui_->export_covers->setIcon(IconLoader::Load("document-save")); ui_->view->setIcon(IconLoader::Load("view-choose")); ui_->fetch->setIcon(IconLoader::Load("download")); - ui_->action_add_to_playlist->setIcon(IconLoader::Load("media-playback-start")); + ui_->action_add_to_playlist->setIcon( + IconLoader::Load("media-playback-start")); ui_->action_load->setIcon(IconLoader::Load("media-playback-start")); album_cover_choice_controller_->SetApplication(app_); // Get a square version of nocover.png QImage nocover(":/nocover.png"); - nocover = nocover.scaled(120, 120, Qt::KeepAspectRatio, Qt::SmoothTransformation); + nocover = + nocover.scaled(120, 120, Qt::KeepAspectRatio, Qt::SmoothTransformation); QImage square_nocover(120, 120, QImage::Format_ARGB32); square_nocover.fill(0); QPainter p(&square_nocover); p.setOpacity(0.4); - p.drawImage((120 - nocover.width()) / 2, (120 - nocover.height()) / 2, nocover); + p.drawImage((120 - nocover.width()) / 2, (120 - nocover.height()) / 2, + nocover); p.end(); no_cover_icon_ = QPixmap::fromImage(square_nocover); @@ -123,9 +126,7 @@ AlbumCoverManager::~AlbumCoverManager() { delete ui_; } -LibraryBackend* AlbumCoverManager::backend() const { - return library_backend_; -} +LibraryBackend* AlbumCoverManager::backend() const { return library_backend_; } void AlbumCoverManager::Init() { // View menu @@ -172,19 +173,24 @@ void AlbumCoverManager::Init() { ui_->albums->installEventFilter(this); // Connections - connect(ui_->artists, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), + connect(ui_->artists, + SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), SLOT(ArtistChanged(QListWidgetItem*))); connect(ui_->filter, SIGNAL(textChanged(QString)), SLOT(UpdateFilter())); connect(filter_group, SIGNAL(triggered(QAction*)), SLOT(UpdateFilter())); connect(ui_->view, SIGNAL(clicked()), ui_->view, SLOT(showMenu())); connect(ui_->fetch, SIGNAL(clicked()), SLOT(FetchAlbumCovers())); connect(ui_->export_covers, SIGNAL(clicked()), SLOT(ExportCovers())); - connect(cover_fetcher_, SIGNAL(AlbumCoverFetched(quint64,QImage,CoverSearchStatistics)), - SLOT(AlbumCoverFetched(quint64,QImage,CoverSearchStatistics))); + connect(cover_fetcher_, + SIGNAL(AlbumCoverFetched(quint64, QImage, CoverSearchStatistics)), + SLOT(AlbumCoverFetched(quint64, QImage, CoverSearchStatistics))); connect(ui_->action_fetch, SIGNAL(triggered()), SLOT(FetchSingleCover())); - connect(ui_->albums, SIGNAL(doubleClicked(QModelIndex)), SLOT(AlbumDoubleClicked(QModelIndex))); - connect(ui_->action_add_to_playlist, SIGNAL(triggered()), SLOT(AddSelectedToPlaylist())); - connect(ui_->action_load, SIGNAL(triggered()), SLOT(LoadSelectedToPlaylist())); + connect(ui_->albums, SIGNAL(doubleClicked(QModelIndex)), + SLOT(AlbumDoubleClicked(QModelIndex))); + connect(ui_->action_add_to_playlist, SIGNAL(triggered()), + SLOT(AddSelectedToPlaylist())); + connect(ui_->action_load, SIGNAL(triggered()), + SLOT(LoadSelectedToPlaylist())); // Restore settings QSettings s; @@ -196,22 +202,19 @@ void AlbumCoverManager::Init() { ui_->splitter->setSizes(QList() << 200 << width() - 200); } - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(CoverImageLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(CoverImageLoaded(quint64, QImage))); cover_searcher_->Init(cover_fetcher_); new ForceScrollPerPixel(ui_->albums, this); } -void AlbumCoverManager::showEvent(QShowEvent *) { - Reset(); -} +void AlbumCoverManager::showEvent(QShowEvent*) { Reset(); } void AlbumCoverManager::closeEvent(QCloseEvent* e) { if (!cover_fetching_tasks_.isEmpty()) { - boost::scoped_ptr message_box(new QMessageBox( + std::unique_ptr message_box(new QMessageBox( QMessageBox::Question, tr("Really cancel?"), tr("Closing this window will stop searching for album covers."), QMessageBox::Abort, this)); @@ -236,7 +239,7 @@ void AlbumCoverManager::closeEvent(QCloseEvent* e) { void AlbumCoverManager::CancelRequests() { app_->album_cover_loader()->CancelTasks( - QSet::fromList(cover_loading_tasks_.keys())); + QSet::fromList(cover_loading_tasks_.keys())); cover_loading_tasks_.clear(); cover_exporter_->Cancel(); @@ -262,15 +265,16 @@ void AlbumCoverManager::Reset() { EnableCoversButtons(); ui_->artists->clear(); - new QListWidgetItem(all_artists_icon_, tr("All artists"), ui_->artists, All_Artists); - new QListWidgetItem(artist_icon_, tr("Various artists"), ui_->artists, Various_Artists); + new QListWidgetItem(all_artists_icon_, tr("All artists"), ui_->artists, + All_Artists); + new QListWidgetItem(artist_icon_, tr("Various artists"), ui_->artists, + Various_Artists); QStringList artists(library_backend_->GetAllArtistsWithAlbums()); qStableSort(artists.begin(), artists.end(), CompareNocase); - foreach (const QString& artist, artists) { - if (artist.isEmpty()) - continue; + for (const QString& artist : artists) { + if (artist.isEmpty()) continue; new QListWidgetItem(artist_icon_, artist, ui_->artists, Specific_Artist); } @@ -287,12 +291,10 @@ void AlbumCoverManager::DisableCoversButtons() { } void AlbumCoverManager::ArtistChanged(QListWidgetItem* current) { - if (!current) - return; + if (!current) return; QString artist; - if (current->type() == Specific_Artist) - artist = current->text(); + if (current->type() == Specific_Artist) artist = current->text(); ui_->albums->clear(); context_menu_items_.clear(); @@ -302,33 +304,41 @@ void AlbumCoverManager::ArtistChanged(QListWidgetItem* current) { // selected in the artist list. LibraryBackend::AlbumList albums; switch (current->type()) { - case Various_Artists: albums = library_backend_->GetCompilationAlbums(); break; - case Specific_Artist: albums = library_backend_->GetAlbumsByArtist(current->text()); break; + case Various_Artists: + albums = library_backend_->GetCompilationAlbums(); + break; + case Specific_Artist: + albums = library_backend_->GetAlbumsByArtist(current->text()); + break; case All_Artists: - default: albums = library_backend_->GetAllAlbums(); break; + default: + albums = library_backend_->GetAllAlbums(); + break; } // Sort by album name. The list is already sorted by sqlite but it was done // case sensitively. qStableSort(albums.begin(), albums.end(), CompareAlbumNameNocase); - foreach (const LibraryBackend::Album& info, albums) { + for (const LibraryBackend::Album& info : albums) { // Don't show songs without an album, obviously - if (info.album_name.isEmpty()) - continue; + if (info.album_name.isEmpty()) continue; - QListWidgetItem* item = new QListWidgetItem(no_cover_icon_, info.album_name, ui_->albums); + QListWidgetItem* item = + new QListWidgetItem(no_cover_icon_, info.album_name, ui_->albums); item->setData(Role_ArtistName, info.artist); item->setData(Role_AlbumName, info.album_name); item->setData(Role_FirstUrl, info.first_url); - item->setData(Qt::TextAlignmentRole, QVariant(Qt::AlignTop | Qt::AlignHCenter)); - item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled); + item->setData(Qt::TextAlignmentRole, + QVariant(Qt::AlignTop | Qt::AlignHCenter)); + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | + Qt::ItemIsDragEnabled); item->setToolTip(info.artist + " - " + info.album_name); if (!info.art_automatic.isEmpty() || !info.art_manual.isEmpty()) { quint64 id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, - info.art_automatic, info.art_manual, info.first_url.toLocalFile()); + cover_loader_options_, info.art_automatic, info.art_manual, + info.first_url.toLocalFile()); item->setData(Role_PathAutomatic, info.art_automatic); item->setData(Role_PathManual, info.art_manual); cover_loading_tasks_[id] = item; @@ -338,14 +348,12 @@ void AlbumCoverManager::ArtistChanged(QListWidgetItem* current) { UpdateFilter(); } -void AlbumCoverManager::CoverImageLoaded(quint64 id, const QImage &image) { - if (!cover_loading_tasks_.contains(id)) - return; +void AlbumCoverManager::CoverImageLoaded(quint64 id, const QImage& image) { + if (!cover_loading_tasks_.contains(id)) return; QListWidgetItem* item = cover_loading_tasks_.take(id); - if (image.isNull()) - return; + if (image.isNull()) return; item->setIcon(QPixmap::fromImage(image)); UpdateFilter(); @@ -383,8 +391,9 @@ void AlbumCoverManager::UpdateFilter() { ui_->without_cover->setText(QString::number(without_cover)); } -bool AlbumCoverManager::ShouldHide( - const QListWidgetItem& item, const QString& filter, HideCovers hide) const { +bool AlbumCoverManager::ShouldHide(const QListWidgetItem& item, + const QString& filter, + HideCovers hide) const { bool has_cover = item.icon().cacheKey() != no_cover_icon_.cacheKey(); if (hide == Hide_WithCovers && has_cover) { return true; @@ -397,9 +406,10 @@ bool AlbumCoverManager::ShouldHide( } QStringList query = filter.split(' '); - foreach (const QString& s, query) { - if (!item.text().contains(s, Qt::CaseInsensitive) - && !item.data(Role_ArtistName).toString().contains(s, Qt::CaseInsensitive)) { + for (const QString& s : query) { + if (!item.text().contains(s, Qt::CaseInsensitive) && + !item.data(Role_ArtistName).toString().contains(s, + Qt::CaseInsensitive)) { return true; } } @@ -408,21 +418,19 @@ bool AlbumCoverManager::ShouldHide( } void AlbumCoverManager::FetchAlbumCovers() { - for (int i=0 ; ialbums->count() ; ++i) { + for (int i = 0; i < ui_->albums->count(); ++i) { QListWidgetItem* item = ui_->albums->item(i); - if (item->isHidden()) - continue; - if (item->icon().cacheKey() != no_cover_icon_.cacheKey()) - continue; + if (item->isHidden()) continue; + if (item->icon().cacheKey() != no_cover_icon_.cacheKey()) continue; - quint64 id = cover_fetcher_->FetchAlbumCover( - item->data(Role_ArtistName).toString(), item->data(Role_AlbumName).toString()); + quint64 id = + cover_fetcher_->FetchAlbumCover(item->data(Role_ArtistName).toString(), + item->data(Role_AlbumName).toString()); cover_fetching_tasks_[id] = item; - jobs_ ++; + jobs_++; } - if (!cover_fetching_tasks_.isEmpty()) - ui_->fetch->setEnabled(false); + if (!cover_fetching_tasks_.isEmpty()) ui_->fetch->setEnabled(false); progress_bar_->setMaximum(jobs_); progress_bar_->show(); @@ -431,10 +439,9 @@ void AlbumCoverManager::FetchAlbumCovers() { UpdateStatusText(); } -void AlbumCoverManager::AlbumCoverFetched(quint64 id, const QImage& image, - const CoverSearchStatistics& statistics) { - if (!cover_fetching_tasks_.contains(id)) - return; +void AlbumCoverManager::AlbumCoverFetched( + quint64 id, const QImage& image, const CoverSearchStatistics& statistics) { + if (!cover_fetching_tasks_.contains(id)) return; QListWidgetItem* item = cover_fetching_tasks_.take(id); if (!image.isNull()) { @@ -451,13 +458,13 @@ void AlbumCoverManager::AlbumCoverFetched(quint64 id, const QImage& image, void AlbumCoverManager::UpdateStatusText() { QString message = tr("Got %1 covers out of %2 (%3 failed)") - .arg(fetch_statistics_.chosen_images_) - .arg(jobs_) - .arg(fetch_statistics_.missing_images_); + .arg(fetch_statistics_.chosen_images_) + .arg(jobs_) + .arg(fetch_statistics_.missing_images_); if (fetch_statistics_.bytes_transferred_) { - message += ", " + tr("%1 transferred") - .arg(Utilities::PrettySize(fetch_statistics_.bytes_transferred_)); + message += ", " + tr("%1 transferred").arg(Utilities::PrettySize( + fetch_statistics_.bytes_transferred_)); } statusBar()->showMessage(message); @@ -477,24 +484,28 @@ void AlbumCoverManager::UpdateStatusText() { } } -bool AlbumCoverManager::eventFilter(QObject *obj, QEvent *event) { +bool AlbumCoverManager::eventFilter(QObject* obj, QEvent* event) { if (obj == ui_->albums && event->type() == QEvent::ContextMenu) { context_menu_items_ = ui_->albums->selectedItems(); - if (context_menu_items_.isEmpty()) - return false; + if (context_menu_items_.isEmpty()) return false; bool some_with_covers = false; - foreach (QListWidgetItem* item, context_menu_items_) { + for (QListWidgetItem* item : context_menu_items_) { if (item->icon().cacheKey() != no_cover_icon_.cacheKey()) some_with_covers = true; } - album_cover_choice_controller_->cover_from_file_action()->setEnabled(context_menu_items_.size() == 1); - album_cover_choice_controller_->cover_from_url_action()->setEnabled(context_menu_items_.size() == 1); - album_cover_choice_controller_->show_cover_action()->setEnabled(some_with_covers && context_menu_items_.size() == 1); - album_cover_choice_controller_->unset_cover_action()->setEnabled(some_with_covers); - album_cover_choice_controller_->search_for_cover_action()->setEnabled(app_->cover_providers()->HasAnyProviders()); + album_cover_choice_controller_->cover_from_file_action()->setEnabled( + context_menu_items_.size() == 1); + album_cover_choice_controller_->cover_from_url_action()->setEnabled( + context_menu_items_.size() == 1); + album_cover_choice_controller_->show_cover_action()->setEnabled( + some_with_covers && context_menu_items_.size() == 1); + album_cover_choice_controller_->unset_cover_action()->setEnabled( + some_with_covers); + album_cover_choice_controller_->search_for_cover_action()->setEnabled( + app_->cover_providers()->HasAnyProviders()); QContextMenuEvent* e = static_cast(event); context_menu_->popup(e->globalPos()); @@ -504,15 +515,13 @@ bool AlbumCoverManager::eventFilter(QObject *obj, QEvent *event) { } Song AlbumCoverManager::GetSingleSelectionAsSong() { - return context_menu_items_.size() != 1 - ? Song() - : ItemAsSong(context_menu_items_[0]); + return context_menu_items_.size() != 1 ? Song() + : ItemAsSong(context_menu_items_[0]); } Song AlbumCoverManager::GetFirstSelectedAsSong() { - return context_menu_items_.isEmpty() - ? Song() - : ItemAsSong(context_menu_items_[0]); + return context_menu_items_.isEmpty() ? Song() + : ItemAsSong(context_menu_items_[0]); } Song AlbumCoverManager::ItemAsSong(QListWidgetItem* item) { @@ -541,18 +550,18 @@ Song AlbumCoverManager::ItemAsSong(QListWidgetItem* item) { void AlbumCoverManager::ShowCover() { Song song = GetSingleSelectionAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; album_cover_choice_controller_->ShowCover(song); } void AlbumCoverManager::FetchSingleCover() { - foreach (QListWidgetItem* item, context_menu_items_) { - quint64 id = cover_fetcher_->FetchAlbumCover( - item->data(Role_ArtistName).toString(), item->data(Role_AlbumName).toString()); + for (QListWidgetItem* item : context_menu_items_) { + quint64 id = + cover_fetcher_->FetchAlbumCover(item->data(Role_ArtistName).toString(), + item->data(Role_AlbumName).toString()); cover_fetching_tasks_[id] = item; - jobs_ ++; + jobs_++; } progress_bar_->setMaximum(jobs_); @@ -561,18 +570,17 @@ void AlbumCoverManager::FetchSingleCover() { UpdateStatusText(); } - -void AlbumCoverManager::UpdateCoverInList(QListWidgetItem* item, const QString& cover) { - quint64 id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, QString(), cover); +void AlbumCoverManager::UpdateCoverInList(QListWidgetItem* item, + const QString& cover) { + quint64 id = app_->album_cover_loader()->LoadImageAsync(cover_loader_options_, + QString(), cover); item->setData(Role_PathManual, cover); cover_loading_tasks_[id] = item; } void AlbumCoverManager::LoadCoverFromFile() { Song song = GetSingleSelectionAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QListWidgetItem* item = context_menu_items_[0]; @@ -585,18 +593,18 @@ void AlbumCoverManager::LoadCoverFromFile() { void AlbumCoverManager::SaveCoverToFile() { Song song = GetSingleSelectionAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QImage image; // load the image from disk - if(song.has_manually_unset_cover()) { + if (song.has_manually_unset_cover()) { image = QImage(":/nocover.png"); } else { - if(!song.art_manual().isEmpty() && QFile::exists(song.art_manual())) { + if (!song.art_manual().isEmpty() && QFile::exists(song.art_manual())) { image = QImage(song.art_manual()); - } else if(!song.art_automatic().isEmpty() && QFile::exists(song.art_automatic())) { + } else if (!song.art_automatic().isEmpty() && + QFile::exists(song.art_automatic())) { image = QImage(song.art_automatic()); } else { image = QImage(":/nocover.png"); @@ -608,8 +616,7 @@ void AlbumCoverManager::SaveCoverToFile() { void AlbumCoverManager::LoadCoverFromURL() { Song song = GetSingleSelectionAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QListWidgetItem* item = context_menu_items_[0]; @@ -622,19 +629,17 @@ void AlbumCoverManager::LoadCoverFromURL() { void AlbumCoverManager::SearchForCover() { Song song = GetFirstSelectedAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QListWidgetItem* item = context_menu_items_[0]; QString cover = album_cover_choice_controller_->SearchForCover(&song); - if (cover.isEmpty()) - return; + if (cover.isEmpty()) return; // force the found cover on all of the selected items - foreach (QListWidgetItem* current, context_menu_items_) { + for (QListWidgetItem* current : context_menu_items_) { // don't save the first one twice - if(current != item) { + if (current != item) { Song current_song = ItemAsSong(current); album_cover_choice_controller_->SaveCover(¤t_song, cover); } @@ -645,20 +650,19 @@ void AlbumCoverManager::SearchForCover() { void AlbumCoverManager::UnsetCover() { Song song = GetFirstSelectedAsSong(); - if(!song.is_valid()) - return; + if (!song.is_valid()) return; QListWidgetItem* item = context_menu_items_[0]; QString cover = album_cover_choice_controller_->UnsetCover(&song); // force the 'none' cover on all of the selected items - foreach (QListWidgetItem* current, context_menu_items_) { + for (QListWidgetItem* current : context_menu_items_) { current->setIcon(no_cover_icon_); current->setData(Role_PathManual, cover); // don't save the first one twice - if(current != item) { + if (current != item) { Song current_song = ItemAsSong(current); album_cover_choice_controller_->SaveCover(¤t_song, cover); } @@ -675,11 +679,9 @@ SongList AlbumCoverManager::GetSongsInAlbum(const QModelIndex& index) const { QString artist = index.data(Role_ArtistName).toString(); q.AddCompilationRequirement(artist.isEmpty()); - if (!artist.isEmpty()) - q.AddWhere("artist", artist); + if (!artist.isEmpty()) q.AddWhere("artist", artist); - if (!library_backend_->ExecQuery(&q)) - return ret; + if (!library_backend_->ExecQuery(&q)) return ret; while (q.Next()) { Song song; @@ -689,18 +691,19 @@ SongList AlbumCoverManager::GetSongsInAlbum(const QModelIndex& index) const { return ret; } -SongList AlbumCoverManager::GetSongsInAlbums(const QModelIndexList& indexes) const { +SongList AlbumCoverManager::GetSongsInAlbums(const QModelIndexList& indexes) + const { SongList ret; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { ret << GetSongsInAlbum(index); } return ret; } -SongMimeData* AlbumCoverManager::GetMimeDataForAlbums(const QModelIndexList& indexes) const { +SongMimeData* AlbumCoverManager::GetMimeDataForAlbums( + const QModelIndexList& indexes) const { SongList songs = GetSongsInAlbums(indexes); - if (songs.isEmpty()) - return NULL; + if (songs.isEmpty()) return nullptr; SongMimeData* data = new SongMimeData; data->backend = library_backend_; @@ -708,7 +711,7 @@ SongMimeData* AlbumCoverManager::GetMimeDataForAlbums(const QModelIndexList& ind return data; } -void AlbumCoverManager::AlbumDoubleClicked(const QModelIndex &index) { +void AlbumCoverManager::AlbumDoubleClicked(const QModelIndex& index) { SongMimeData* data = GetMimeDataForAlbums(QModelIndexList() << index); if (data) { data->from_doubleclick_ = true; @@ -717,29 +720,33 @@ void AlbumCoverManager::AlbumDoubleClicked(const QModelIndex &index) { } void AlbumCoverManager::AddSelectedToPlaylist() { - emit AddToPlaylist(GetMimeDataForAlbums(ui_->albums->selectionModel()->selectedIndexes())); + emit AddToPlaylist( + GetMimeDataForAlbums(ui_->albums->selectionModel()->selectedIndexes())); } void AlbumCoverManager::LoadSelectedToPlaylist() { - SongMimeData* data = GetMimeDataForAlbums(ui_->albums->selectionModel()->selectedIndexes()); + SongMimeData* data = + GetMimeDataForAlbums(ui_->albums->selectionModel()->selectedIndexes()); if (data) { data->clear_first_ = true; emit AddToPlaylist(data); } } -void AlbumCoverManager::SaveAndSetCover(QListWidgetItem *item, const QImage &image) { +void AlbumCoverManager::SaveAndSetCover(QListWidgetItem* item, + const QImage& image) { const QString artist = item->data(Role_ArtistName).toString(); const QString album = item->data(Role_AlbumName).toString(); - QString path = album_cover_choice_controller_->SaveCoverInCache(artist, album, image); + QString path = + album_cover_choice_controller_->SaveCoverInCache(artist, album, image); // Save the image in the database library_backend_->UpdateManualAlbumArtAsync(artist, album, path); // Update the icon in our list - quint64 id = app_->album_cover_loader()->LoadImageAsync( - cover_loader_options_, QString(), path); + quint64 id = app_->album_cover_loader()->LoadImageAsync(cover_loader_options_, + QString(), path); item->setData(Role_PathManual, path); cover_loading_tasks_[id] = item; } @@ -747,7 +754,7 @@ void AlbumCoverManager::SaveAndSetCover(QListWidgetItem *item, const QImage &ima void AlbumCoverManager::ExportCovers() { AlbumCoverExport::DialogResult result = cover_export_->Exec(); - if(result.cancelled_) { + if (result.cancelled_) { return; } @@ -755,11 +762,12 @@ void AlbumCoverManager::ExportCovers() { cover_exporter_->SetDialogResult(result); - for (int i=0 ; ialbums->count() ; ++i) { + for (int i = 0; i < ui_->albums->count(); ++i) { QListWidgetItem* item = ui_->albums->item(i); // skip hidden and coverless albums - if (item->isHidden() || item->icon().cacheKey() == no_cover_icon_.cacheKey()) { + if (item->isHidden() || + item->icon().cacheKey() == no_cover_icon_.cacheKey()) { continue; } @@ -784,13 +792,13 @@ void AlbumCoverManager::UpdateExportStatus(int exported, int skipped, int max) { progress_bar_->setValue(exported); QString message = tr("Exported %1 covers out of %2 (%3 skipped)") - .arg(exported) - .arg(max) - .arg(skipped); + .arg(exported) + .arg(max) + .arg(skipped); statusBar()->showMessage(message); // end of the current process - if(exported + skipped >= max) { + if (exported + skipped >= max) { QTimer::singleShot(2000, statusBar(), SLOT(clearMessage())); progress_bar_->hide(); diff --git a/src/ui/albumcovermanager.h b/src/ui/albumcovermanager.h index 30d1287dc..26b77f9c4 100644 --- a/src/ui/albumcovermanager.h +++ b/src/ui/albumcovermanager.h @@ -47,10 +47,8 @@ class QProgressBar; class AlbumCoverManager : public QMainWindow { Q_OBJECT public: - AlbumCoverManager(Application* app, - LibraryBackend* library_backend, - QWidget* parent = 0, - QNetworkAccessManager* network = 0); + AlbumCoverManager(Application* app, LibraryBackend* library_backend, + QWidget* parent = nullptr, QNetworkAccessManager* network = 0); ~AlbumCoverManager(); static const char* kSettingsGroup; @@ -68,15 +66,15 @@ class AlbumCoverManager : public QMainWindow { SongList GetSongsInAlbums(const QModelIndexList& indexes) const; SongMimeData* GetMimeDataForAlbums(const QModelIndexList& indexes) const; - signals: +signals: void AddToPlaylist(QMimeData* data); protected: - void showEvent(QShowEvent *); - void closeEvent(QCloseEvent *); + void showEvent(QShowEvent*); + void closeEvent(QCloseEvent*); // For the album view context menu events - bool eventFilter(QObject *obj, QEvent *event); + bool eventFilter(QObject* obj, QEvent* event); private slots: void ArtistChanged(QListWidgetItem* current); @@ -107,11 +105,7 @@ class AlbumCoverManager : public QMainWindow { void UpdateExportStatus(int exported, int bad, int count); private: - enum ArtistItemType { - All_Artists, - Various_Artists, - Specific_Artist, - }; + enum ArtistItemType { All_Artists, Various_Artists, Specific_Artist, }; enum Role { Role_ArtistName = Qt::UserRole + 1, @@ -121,15 +115,12 @@ class AlbumCoverManager : public QMainWindow { Role_FirstUrl, }; - enum HideCovers { - Hide_None, - Hide_WithCovers, - Hide_WithoutCovers, - }; + enum HideCovers { Hide_None, Hide_WithCovers, Hide_WithoutCovers, }; - QString InitialPathForOpenCoverDialog(const QString& path_automatic, const QString& first_file_name) const; + QString InitialPathForOpenCoverDialog(const QString& path_automatic, + const QString& first_file_name) const; - // Returns the selected element in form of a Song ready to be used + // Returns the selected element in form of a Song ready to be used // by AlbumCoverChoiceController or invalid song if there's nothing // or multiple elements selected. Song GetSingleSelectionAsSong(); @@ -141,7 +132,8 @@ class AlbumCoverManager : public QMainWindow { Song ItemAsSong(QListWidgetItem* item); void UpdateStatusText(); - bool ShouldHide(const QListWidgetItem& item, const QString& filter, HideCovers hide) const; + bool ShouldHide(const QListWidgetItem& item, const QString& filter, + HideCovers hide) const; void SaveAndSetCover(QListWidgetItem* item, const QImage& image); private: @@ -184,4 +176,4 @@ class AlbumCoverManager : public QMainWindow { FRIEND_TEST(AlbumCoverManagerTest, HidesItemsWithFilter); }; -#endif // ALBUMCOVERMANAGER_H +#endif // ALBUMCOVERMANAGER_H diff --git a/src/ui/albumcovermanagerlist.cpp b/src/ui/albumcovermanagerlist.cpp index a73cb9f5a..8d49b3249 100644 --- a/src/ui/albumcovermanagerlist.cpp +++ b/src/ui/albumcovermanagerlist.cpp @@ -15,46 +15,45 @@ along with Clementine. If not, see . */ -#include "albumcovermanager.h" #include "albumcovermanagerlist.h" -#include "library/librarybackend.h" -#include "playlist/songmimedata.h" -#include +#include #include #include -AlbumCoverManagerList::AlbumCoverManagerList(QWidget *parent) - : QListWidget(parent), - manager_(NULL) -{ -} +#include "albumcovermanager.h" +#include "library/librarybackend.h" +#include "playlist/songmimedata.h" -QMimeData* AlbumCoverManagerList::mimeData(const QList items) const { +AlbumCoverManagerList::AlbumCoverManagerList(QWidget* parent) + : QListWidget(parent), manager_(nullptr) {} + +QMimeData* AlbumCoverManagerList::mimeData(const QList items) + const { // Get songs SongList songs; - foreach (QListWidgetItem* item, items) { + for (QListWidgetItem* item : items) { songs << manager_->GetSongsInAlbum(indexFromItem(item)); } - if (songs.isEmpty()) - return NULL; + if (songs.isEmpty()) return nullptr; // Get URLs from the songs QList urls; - foreach (const Song& song, songs) { + for (const Song& song : songs) { urls << song.url(); } // Get the QAbstractItemModel data so the picture works - boost::scoped_ptr orig_data(QListWidget::mimeData(items)); + std::unique_ptr orig_data(QListWidget::mimeData(items)); SongMimeData* mime_data = new SongMimeData; mime_data->backend = manager_->backend(); mime_data->songs = songs; mime_data->setUrls(urls); - mime_data->setData(orig_data->formats()[0], orig_data->data(orig_data->formats()[0])); + mime_data->setData(orig_data->formats()[0], + orig_data->data(orig_data->formats()[0])); return mime_data; } diff --git a/src/ui/albumcovermanagerlist.h b/src/ui/albumcovermanagerlist.h index 174af171b..3862dd9e4 100644 --- a/src/ui/albumcovermanagerlist.h +++ b/src/ui/albumcovermanagerlist.h @@ -24,17 +24,17 @@ class AlbumCoverManager; class AlbumCoverManagerList : public QListWidget { Q_OBJECT -public: - AlbumCoverManagerList(QWidget *parent = 0); + public: + AlbumCoverManagerList(QWidget* parent = nullptr); void set_cover_manager(AlbumCoverManager* manager) { manager_ = manager; } -protected: + protected: QMimeData* mimeData(const QList items) const; - void dropEvent(QDropEvent *event); + void dropEvent(QDropEvent* event); -private: + private: AlbumCoverManager* manager_; }; -#endif // ALBUMCOVERMANAGERLIST_H +#endif // ALBUMCOVERMANAGERLIST_H diff --git a/src/ui/albumcoversearcher.cpp b/src/ui/albumcoversearcher.cpp index 7c42f2cb2..f46fa5383 100644 --- a/src/ui/albumcoversearcher.cpp +++ b/src/ui/albumcoversearcher.cpp @@ -38,11 +38,8 @@ const qreal SizeOverlayDelegate::kFontPointSize = 7.5; const int SizeOverlayDelegate::kBorderAlpha = 200; const int SizeOverlayDelegate::kBackgroundAlpha = 175; - SizeOverlayDelegate::SizeOverlayDelegate(QObject* parent) - : QStyledItemDelegate(parent) -{ -} + : QStyledItemDelegate(parent) {} void SizeOverlayDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, @@ -64,17 +61,16 @@ void SizeOverlayDelegate::paint(QPainter* painter, const int text_width = metrics.width(text); - const QRect icon_rect( - option.rect.left(), option.rect.top(), - option.rect.width(), option.rect.width()); + const QRect icon_rect(option.rect.left(), option.rect.top(), + option.rect.width(), option.rect.width()); const QRect background_rect( - icon_rect.right() - kMargin - text_width - kPaddingX*2, - icon_rect.bottom() - kMargin - metrics.height() - kPaddingY*2, - text_width + kPaddingX*2, metrics.height() + kPaddingY*2); - const QRect text_rect( - background_rect.left() + kPaddingX, background_rect.top() + kPaddingY, - text_width, metrics.height()); + icon_rect.right() - kMargin - text_width - kPaddingX * 2, + icon_rect.bottom() - kMargin - metrics.height() - kPaddingY * 2, + text_width + kPaddingX * 2, metrics.height() + kPaddingY * 2); + const QRect text_rect(background_rect.left() + kPaddingX, + background_rect.top() + kPaddingY, text_width, + metrics.height()); painter->save(); painter->setRenderHint(QPainter::Antialiasing); @@ -88,17 +84,15 @@ void SizeOverlayDelegate::paint(QPainter* painter, painter->restore(); } - AlbumCoverSearcher::AlbumCoverSearcher(const QIcon& no_cover_icon, Application* app, QWidget* parent) - : QDialog(parent), - ui_(new Ui_AlbumCoverSearcher), - app_(app), - model_(new QStandardItemModel(this)), - no_cover_icon_(no_cover_icon), - fetcher_(NULL), - id_(0) -{ + : QDialog(parent), + ui_(new Ui_AlbumCoverSearcher), + app_(app), + model_(new QStandardItemModel(this)), + no_cover_icon_(no_cover_icon), + fetcher_(nullptr), + id_(0) { setWindowModality(Qt::WindowModal); ui_->setupUi(this); ui_->busy->hide(); @@ -111,27 +105,27 @@ AlbumCoverSearcher::AlbumCoverSearcher(const QIcon& no_cover_icon, options_.scale_output_image_ = false; options_.pad_output_image_ = false; - connect(app_->album_cover_loader(), - SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(ImageLoaded(quint64,QImage))); + connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(ImageLoaded(quint64, QImage))); connect(ui_->search, SIGNAL(clicked()), SLOT(Search())); - connect(ui_->covers, SIGNAL(doubleClicked(QModelIndex)), SLOT(CoverDoubleClicked(QModelIndex))); + connect(ui_->covers, SIGNAL(doubleClicked(QModelIndex)), + SLOT(CoverDoubleClicked(QModelIndex))); new ForceScrollPerPixel(ui_->covers, this); - ui_->buttonBox->button(QDialogButtonBox::Cancel)->setShortcut(QKeySequence::Close); + ui_->buttonBox->button(QDialogButtonBox::Cancel) + ->setShortcut(QKeySequence::Close); } -AlbumCoverSearcher::~AlbumCoverSearcher() { - delete ui_; -} +AlbumCoverSearcher::~AlbumCoverSearcher() { delete ui_; } void AlbumCoverSearcher::Init(AlbumCoverFetcher* fetcher) { fetcher_ = fetcher; - connect(fetcher_, SIGNAL(SearchFinished(quint64,CoverSearchResults,CoverSearchStatistics)), - SLOT(SearchFinished(quint64,CoverSearchResults))); + connect(fetcher_, SIGNAL(SearchFinished(quint64, CoverSearchResults, + CoverSearchStatistics)), + SLOT(SearchFinished(quint64, CoverSearchResults))); } QImage AlbumCoverSearcher::Exec(const QString& artist, const QString& album) { @@ -139,20 +133,18 @@ QImage AlbumCoverSearcher::Exec(const QString& artist, const QString& album) { ui_->album->setText(album); ui_->artist->setFocus(); - if(!artist.isEmpty() || !album.isEmpty()) { + if (!artist.isEmpty() || !album.isEmpty()) { Search(); } - if (exec() == QDialog::Rejected) - return QImage(); + if (exec() == QDialog::Rejected) return QImage(); QModelIndex selected = ui_->covers->currentIndex(); if (!selected.isValid() || !selected.data(Role_ImageFetchFinished).toBool()) return QImage(); QIcon icon = selected.data(Qt::DecorationRole).value(); - if (icon.cacheKey() == no_cover_icon_.cacheKey()) - return QImage(); + if (icon.cacheKey() == no_cover_icon_.cacheKey()) return QImage(); return icon.pixmap(icon.availableSizes()[0]).toImage(); } @@ -179,9 +171,9 @@ void AlbumCoverSearcher::Search() { } } -void AlbumCoverSearcher::SearchFinished(quint64 id, const CoverSearchResults& results) { - if (id != id_) - return; +void AlbumCoverSearcher::SearchFinished(quint64 id, + const CoverSearchResults& results) { + if (id != id_) return; ui_->search->setEnabled(true); ui_->artist->setEnabled(true); @@ -190,12 +182,11 @@ void AlbumCoverSearcher::SearchFinished(quint64 id, const CoverSearchResults& re ui_->search->setText(tr("Search")); id_ = 0; - foreach (const CoverSearchResult& result, results) { - if (result.image_url.isEmpty()) - continue; + for (const CoverSearchResult& result : results) { + if (result.image_url.isEmpty()) continue; quint64 id = app_->album_cover_loader()->LoadImageAsync( - options_, result.image_url.toString(), QString()); + options_, result.image_url.toString(), QString()); QStandardItem* item = new QStandardItem; item->setIcon(no_cover_icon_); @@ -203,7 +194,8 @@ void AlbumCoverSearcher::SearchFinished(quint64 id, const CoverSearchResults& re item->setData(result.image_url, Role_ImageURL); item->setData(id, Role_ImageRequestId); item->setData(false, Role_ImageFetchFinished); - item->setData(QVariant(Qt::AlignTop | Qt::AlignHCenter), Qt::TextAlignmentRole); + item->setData(QVariant(Qt::AlignTop | Qt::AlignHCenter), + Qt::TextAlignmentRole); item->setData(result.provider, GroupedIconView::Role_Group); model_->appendRow(item); @@ -211,17 +203,14 @@ void AlbumCoverSearcher::SearchFinished(quint64 id, const CoverSearchResults& re cover_loading_tasks_[id] = item; } - if (cover_loading_tasks_.isEmpty()) - ui_->busy->hide(); + if (cover_loading_tasks_.isEmpty()) ui_->busy->hide(); } void AlbumCoverSearcher::ImageLoaded(quint64 id, const QImage& image) { - if (!cover_loading_tasks_.contains(id)) - return; + if (!cover_loading_tasks_.contains(id)) return; QStandardItem* item = cover_loading_tasks_.take(id); - if (cover_loading_tasks_.isEmpty()) - ui_->busy->hide(); + if (cover_loading_tasks_.isEmpty()) ui_->busy->hide(); if (image.isNull()) { model_->removeRow(item->row()); @@ -231,11 +220,11 @@ void AlbumCoverSearcher::ImageLoaded(quint64 id, const QImage& image) { QIcon icon(QPixmap::fromImage(image)); // Create a pixmap that's padded and exactly the right size for the icon. - QImage scaled_image(image.scaled(ui_->covers->iconSize(), - Qt::KeepAspectRatio, + QImage scaled_image(image.scaled(ui_->covers->iconSize(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); - QImage padded_image(ui_->covers->iconSize(), QImage::Format_ARGB32_Premultiplied); + QImage padded_image(ui_->covers->iconSize(), + QImage::Format_ARGB32_Premultiplied); padded_image.fill(0); QPainter p(&padded_image); @@ -253,8 +242,7 @@ void AlbumCoverSearcher::ImageLoaded(quint64 id, const QImage& image) { } void AlbumCoverSearcher::keyPressEvent(QKeyEvent* e) { - if (e->key() == Qt::Key_Enter || - e->key() == Qt::Key_Return) { + if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) { e->ignore(); return; } @@ -262,7 +250,6 @@ void AlbumCoverSearcher::keyPressEvent(QKeyEvent* e) { QDialog::keyPressEvent(e); } -void AlbumCoverSearcher::CoverDoubleClicked(const QModelIndex &index) { - if (index.isValid()) - accept(); +void AlbumCoverSearcher::CoverDoubleClicked(const QModelIndex& index) { + if (index.isValid()) accept(); } diff --git a/src/ui/albumcoversearcher.h b/src/ui/albumcoversearcher.h index 710e9ce8a..2c58d792f 100644 --- a/src/ui/albumcoversearcher.h +++ b/src/ui/albumcoversearcher.h @@ -18,14 +18,12 @@ #ifndef ALBUMCOVERSEARCHER_H #define ALBUMCOVERSEARCHER_H -#include "covers/albumcoverfetcher.h" -#include "covers/albumcoverloaderoptions.h" - #include #include #include -#include +#include "covers/albumcoverfetcher.h" +#include "covers/albumcoverloaderoptions.h" class AlbumCoverLoader; class Application; @@ -35,9 +33,8 @@ class QModelIndex; class QStandardItem; class QStandardItemModel; - class SizeOverlayDelegate : public QStyledItemDelegate { -public: + public: static const int kMargin; static const int kPaddingX; static const int kPaddingY; @@ -46,26 +43,26 @@ public: static const int kBorderAlpha; static const int kBackgroundAlpha; - SizeOverlayDelegate(QObject* parent = NULL); + SizeOverlayDelegate(QObject* parent = nullptr); void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; }; - // This is a dialog that lets the user search for album covers class AlbumCoverSearcher : public QDialog { Q_OBJECT -public: - AlbumCoverSearcher(const QIcon& no_cover_icon, Application* app, QWidget* parent); + public: + AlbumCoverSearcher(const QIcon& no_cover_icon, Application* app, + QWidget* parent); ~AlbumCoverSearcher(); enum Role { Role_ImageURL = Qt::UserRole + 1, Role_ImageRequestId, Role_ImageFetchFinished, - Role_ImageDimensions, // width * height + Role_ImageDimensions, // width * height Role_ImageSize, }; @@ -73,17 +70,17 @@ public: QImage Exec(const QString& artist, const QString& album); -protected: - void keyPressEvent(QKeyEvent *); + protected: + void keyPressEvent(QKeyEvent*); -private slots: + private slots: void Search(); void SearchFinished(quint64 id, const CoverSearchResults& results); void ImageLoaded(quint64 id, const QImage& image); void CoverDoubleClicked(const QModelIndex& index); -private: + private: Ui_AlbumCoverSearcher* ui_; Application* app_; @@ -97,4 +94,4 @@ private: QMap cover_loading_tasks_; }; -#endif // ALBUMCOVERSEARCHER_H +#endif // ALBUMCOVERSEARCHER_H diff --git a/src/ui/appearancesettingspage.cpp b/src/ui/appearancesettingspage.cpp index 866a843e8..77c79a380 100644 --- a/src/ui/appearancesettingspage.cpp +++ b/src/ui/appearancesettingspage.cpp @@ -35,51 +35,54 @@ #include "ui/albumcoverchoicecontroller.h" #ifdef HAVE_MOODBAR -# include "moodbar/moodbarrenderer.h" +#include "moodbar/moodbarrenderer.h" #endif const int AppearanceSettingsPage::kMoodbarPreviewWidth = 150; const int AppearanceSettingsPage::kMoodbarPreviewHeight = 18; AppearanceSettingsPage::AppearanceSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_AppearanceSettingsPage), - original_use_a_custom_color_set_(false), - playlist_view_background_image_type_(PlaylistView::Default), - initialised_moodbar_previews_(false) -{ + : SettingsPage(dialog), + ui_(new Ui_AppearanceSettingsPage), + original_use_a_custom_color_set_(false), + playlist_view_background_image_type_(PlaylistView::Default), + initialised_moodbar_previews_(false) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("view-media-visualization")); - connect(ui_->blur_slider, SIGNAL(valueChanged(int)), SLOT(BlurLevelChanged(int))); - connect(ui_->opacity_slider, SIGNAL(valueChanged(int)), SLOT(OpacityLevelChanged(int))); + connect(ui_->blur_slider, SIGNAL(valueChanged(int)), + SLOT(BlurLevelChanged(int))); + connect(ui_->opacity_slider, SIGNAL(valueChanged(int)), + SLOT(OpacityLevelChanged(int))); Load(); - connect(ui_->select_foreground_color, SIGNAL(pressed()), SLOT(SelectForegroundColor())); - connect(ui_->select_background_color, SIGNAL(pressed()), SLOT(SelectBackgroundColor())); - connect(ui_->use_a_custom_color_set, SIGNAL(toggled(bool)), SLOT(UseCustomColorSetOptionChanged(bool))); + connect(ui_->select_foreground_color, SIGNAL(pressed()), + SLOT(SelectForegroundColor())); + connect(ui_->select_background_color, SIGNAL(pressed()), + SLOT(SelectBackgroundColor())); + connect(ui_->use_a_custom_color_set, SIGNAL(toggled(bool)), + SLOT(UseCustomColorSetOptionChanged(bool))); - connect(ui_->select_background_image_filename_button, SIGNAL(pressed()), SLOT(SelectBackgroundImage())); + connect(ui_->select_background_image_filename_button, SIGNAL(pressed()), + SLOT(SelectBackgroundImage())); connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), - ui_->background_image_filename, SLOT(setEnabled(bool))); + ui_->background_image_filename, SLOT(setEnabled(bool))); connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), - ui_->select_background_image_filename_button, SLOT(setEnabled(bool))); + ui_->select_background_image_filename_button, SLOT(setEnabled(bool))); connect(ui_->use_custom_background_image, SIGNAL(toggled(bool)), - ui_->blur_slider, SLOT(setEnabled(bool))); + ui_->blur_slider, SLOT(setEnabled(bool))); connect(ui_->use_album_cover_background, SIGNAL(toggled(bool)), - ui_->blur_slider, SLOT(setEnabled(bool))); + ui_->blur_slider, SLOT(setEnabled(bool))); connect(ui_->use_default_background, SIGNAL(toggled(bool)), - SLOT(DisableBlurAndOpacitySliders(bool))); + SLOT(DisableBlurAndOpacitySliders(bool))); connect(ui_->use_no_background, SIGNAL(toggled(bool)), - SLOT(DisableBlurAndOpacitySliders(bool))); + SLOT(DisableBlurAndOpacitySliders(bool))); } -AppearanceSettingsPage::~AppearanceSettingsPage() { - delete ui_; -} +AppearanceSettingsPage::~AppearanceSettingsPage() { delete ui_; } void AppearanceSettingsPage::Load() { QSettings s; @@ -89,14 +92,17 @@ void AppearanceSettingsPage::Load() { // Keep in mind originals colors, in case the user clicks on Cancel, to be // able to restore colors - original_use_a_custom_color_set_ = s.value(Appearance::kUseCustomColorSet, false).toBool(); + original_use_a_custom_color_set_ = + s.value(Appearance::kUseCustomColorSet, false).toBool(); - original_foreground_color_ = s.value(Appearance::kForegroundColor, - p.color(QPalette::WindowText)).value(); - current_foreground_color_ = original_foreground_color_; - original_background_color_ = s.value(Appearance::kBackgroundColor, - p.color(QPalette::Window)).value(); - current_background_color_ = original_background_color_; + original_foreground_color_ = + s.value(Appearance::kForegroundColor, p.color(QPalette::WindowText)) + .value(); + current_foreground_color_ = original_foreground_color_; + original_background_color_ = + s.value(Appearance::kBackgroundColor, p.color(QPalette::Window)) + .value(); + current_background_color_ = original_background_color_; InitColorSelectorsColors(); s.endGroup(); @@ -106,7 +112,7 @@ void AppearanceSettingsPage::Load() { playlist_view_background_image_type_ = static_cast( s.value(PlaylistView::kSettingBackgroundImageType).toInt()); - playlist_view_background_image_filename_ = + playlist_view_background_image_filename_ = s.value(PlaylistView::kSettingBackgroundImageFilename).toString(); ui_->use_system_color_set->setChecked(!original_use_a_custom_color_set_); @@ -128,7 +134,8 @@ void AppearanceSettingsPage::Load() { ui_->use_default_background->setChecked(true); DisableBlurAndOpacitySliders(true); } - ui_->background_image_filename->setText(playlist_view_background_image_filename_); + ui_->background_image_filename->setText( + playlist_view_background_image_filename_); ui_->blur_slider->setValue( s.value("blur_radius", PlaylistView::kDefaultBlurRadius).toInt()); ui_->opacity_slider->setValue( @@ -141,7 +148,8 @@ void AppearanceSettingsPage::Load() { ui_->moodbar_show->setChecked(s.value("show", true).toBool()); ui_->moodbar_style->setCurrentIndex(s.value("style", 0).toInt()); ui_->moodbar_calculate->setChecked(!s.value("calculate", true).toBool()); - ui_->moodbar_save->setChecked(s.value("save_alongside_originals", false).toBool()); + ui_->moodbar_save->setChecked( + s.value("save_alongside_originals", false).toBool()); s.endGroup(); InitMoodbarPreviews(); @@ -162,7 +170,8 @@ void AppearanceSettingsPage::Save() { // Playlist settings s.beginGroup(Playlist::kSettingsGroup); - playlist_view_background_image_filename_ = ui_->background_image_filename->text(); + playlist_view_background_image_filename_ = + ui_->background_image_filename->text(); if (ui_->use_no_background->isChecked()) { playlist_view_background_image_type_ = PlaylistView::None; } else if (ui_->use_album_cover_background->isChecked()) { @@ -172,7 +181,7 @@ void AppearanceSettingsPage::Save() { } else if (ui_->use_custom_background_image->isChecked()) { playlist_view_background_image_type_ = PlaylistView::Custom; s.setValue(PlaylistView::kSettingBackgroundImageFilename, - playlist_view_background_image_filename_); + playlist_view_background_image_filename_); } s.setValue(PlaylistView::kSettingBackgroundImageType, playlist_view_background_image_type_); @@ -200,8 +209,7 @@ void AppearanceSettingsPage::Cancel() { void AppearanceSettingsPage::SelectForegroundColor() { QColor color_selected = QColorDialog::getColor(current_foreground_color_); - if (!color_selected.isValid()) - return; + if (!color_selected.isValid()) return; current_foreground_color_ = color_selected; dialog()->appearance()->ChangeForegroundColor(color_selected); @@ -211,8 +219,7 @@ void AppearanceSettingsPage::SelectForegroundColor() { void AppearanceSettingsPage::SelectBackgroundColor() { QColor color_selected = QColorDialog::getColor(current_background_color_); - if (!color_selected.isValid()) - return; + if (!color_selected.isValid()) return; current_background_color_ = color_selected; dialog()->appearance()->ChangeBackgroundColor(color_selected); @@ -230,28 +237,32 @@ void AppearanceSettingsPage::UseCustomColorSetOptionChanged(bool checked) { } void AppearanceSettingsPage::InitColorSelectorsColors() { - UpdateColorSelectorColor(ui_->select_foreground_color, current_foreground_color_); - UpdateColorSelectorColor(ui_->select_background_color, current_background_color_); + UpdateColorSelectorColor(ui_->select_foreground_color, + current_foreground_color_); + UpdateColorSelectorColor(ui_->select_background_color, + current_background_color_); } -void AppearanceSettingsPage::UpdateColorSelectorColor(QWidget* color_selector, const QColor& color) { - QString css = QString("background-color: rgb(%1, %2, %3); color: rgb(255, 255, 255)") - .arg(color.red()) - .arg(color.green()) - .arg(color.blue()); +void AppearanceSettingsPage::UpdateColorSelectorColor(QWidget* color_selector, + const QColor& color) { + QString css = + QString("background-color: rgb(%1, %2, %3); color: rgb(255, 255, 255)") + .arg(color.red()) + .arg(color.green()) + .arg(color.blue()); color_selector->setStyleSheet(css); } void AppearanceSettingsPage::SelectBackgroundImage() { - QString selected_filename = - QFileDialog::getOpenFileName(this, tr("Select background image"), + QString selected_filename = QFileDialog::getOpenFileName( + this, tr("Select background image"), playlist_view_background_image_filename_, tr(AlbumCoverChoiceController::kLoadImageFileFilter) + ";;" + - tr(AlbumCoverChoiceController::kAllFilesFilter)); - if (selected_filename.isEmpty()) - return; + tr(AlbumCoverChoiceController::kAllFilesFilter)); + if (selected_filename.isEmpty()) return; playlist_view_background_image_filename_ = selected_filename; - ui_->background_image_filename->setText(playlist_view_background_image_filename_); + ui_->background_image_filename->setText( + playlist_view_background_image_filename_); } void AppearanceSettingsPage::BlurLevelChanged(int value) { @@ -264,8 +275,7 @@ void AppearanceSettingsPage::OpacityLevelChanged(int percent) { void AppearanceSettingsPage::InitMoodbarPreviews() { #ifdef HAVE_MOODBAR - if (initialised_moodbar_previews_) - return; + if (initialised_moodbar_previews_) return; initialised_moodbar_previews_ = true; const QSize preview_size(kMoodbarPreviewWidth, kMoodbarPreviewHeight); @@ -280,7 +290,7 @@ void AppearanceSettingsPage::InitMoodbarPreviews() { QByteArray data(file.readAll()); // Render and set each preview - for (int i=0 ; i #include -BackgroundStreamsSettingsPage::BackgroundStreamsSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_BackgroundStreamsSettingsPage) -{ +BackgroundStreamsSettingsPage::BackgroundStreamsSettingsPage( + SettingsDialog* dialog) + : SettingsPage(dialog), ui_(new Ui_BackgroundStreamsSettingsPage) { ui_->setupUi(this); setWindowIcon(QIcon(":/icons/32x32/weather-showers-scattered.png")); - foreach (const QString& name, dialog->background_streams()->streams()) { + for (const QString& name : dialog->background_streams()->streams()) { AddStream(name); } } -BackgroundStreamsSettingsPage::~BackgroundStreamsSettingsPage() { - delete ui_; -} +BackgroundStreamsSettingsPage::~BackgroundStreamsSettingsPage() { delete ui_; } -void BackgroundStreamsSettingsPage::Load() { -} +void BackgroundStreamsSettingsPage::Load() {} void BackgroundStreamsSettingsPage::Save() { dialog()->background_streams()->SaveStreams(); diff --git a/src/ui/backgroundstreamssettingspage.h b/src/ui/backgroundstreamssettingspage.h index a21970170..239d1273f 100644 --- a/src/ui/backgroundstreamssettingspage.h +++ b/src/ui/backgroundstreamssettingspage.h @@ -25,22 +25,22 @@ class Ui_BackgroundStreamsSettingsPage; class BackgroundStreamsSettingsPage : public SettingsPage { Q_OBJECT -public: + public: BackgroundStreamsSettingsPage(SettingsDialog* dialog); ~BackgroundStreamsSettingsPage(); void Load(); void Save(); -private slots: + private slots: void EnableStream(bool enabled); void StreamVolumeChanged(int value); -private: + private: void AddStream(const QString& name); -private: + private: Ui_BackgroundStreamsSettingsPage* ui_; }; -#endif // BACKGROUNDSTREAMSSETTINGSPAGE_H +#endif // BACKGROUNDSTREAMSSETTINGSPAGE_H diff --git a/src/ui/behavioursettingspage.cpp b/src/ui/behavioursettingspage.cpp index adcc89801..cdcadb2ac 100644 --- a/src/ui/behavioursettingspage.cpp +++ b/src/ui/behavioursettingspage.cpp @@ -30,12 +30,11 @@ bool LocaleAwareCompare(const QString& a, const QString& b) { } // namespace BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_BehaviourSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_BehaviourSettingsPage) { ui_->setupUi(this); - connect(ui_->b_show_tray_icon_, SIGNAL(toggled(bool)), SLOT(ShowTrayIconToggled(bool))); + connect(ui_->b_show_tray_icon_, SIGNAL(toggled(bool)), + SLOT(ShowTrayIconToggled(bool))); ui_->doubleclick_addmode->setItemData(0, MainWindow::AddBehaviour_Append); ui_->doubleclick_addmode->setItemData(1, MainWindow::AddBehaviour_Load); @@ -43,7 +42,8 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog) ui_->doubleclick_addmode->setItemData(3, MainWindow::AddBehaviour_Enqueue); ui_->doubleclick_playmode->setItemData(0, MainWindow::PlayBehaviour_Never); - ui_->doubleclick_playmode->setItemData(1, MainWindow::PlayBehaviour_IfStopped); + ui_->doubleclick_playmode->setItemData(1, + MainWindow::PlayBehaviour_IfStopped); ui_->doubleclick_playmode->setItemData(2, MainWindow::PlayBehaviour_Always); ui_->menu_playmode->setItemData(0, MainWindow::PlayBehaviour_Never); @@ -55,10 +55,9 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog) QDir dir(":/translations/"); QStringList codes(dir.entryList(QStringList() << "*.qm")); QRegExp lang_re("^clementine_(.*).qm$"); - foreach (const QString& filename, codes) { + for (const QString& filename : codes) { // The regex captures the "ru" from "clementine_ru.qm" - if (!lang_re.exactMatch(filename)) - continue; + if (!lang_re.exactMatch(filename)) continue; QString code = lang_re.cap(1); QString language_name = QLocale::languageToString(QLocale(code).language()); @@ -86,32 +85,39 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog* dialog) #endif } -BehaviourSettingsPage::~BehaviourSettingsPage() { - delete ui_; -} +BehaviourSettingsPage::~BehaviourSettingsPage() { delete ui_; } void BehaviourSettingsPage::Load() { QSettings s; s.beginGroup(MainWindow::kSettingsGroup); ui_->b_show_tray_icon_->setChecked(s.value("showtray", true).toBool()); - ui_->b_keep_running_->setChecked(s.value("keeprunning", - ui_->b_show_tray_icon_->isChecked()).toBool()); + ui_->b_keep_running_->setChecked( + s.value("keeprunning", ui_->b_show_tray_icon_->isChecked()).toBool()); ui_->doubleclick_addmode->setCurrentIndex(ui_->doubleclick_addmode->findData( s.value("doubleclick_addmode", MainWindow::AddBehaviour_Append).toInt())); - ui_->doubleclick_playmode->setCurrentIndex(ui_->doubleclick_playmode->findData( - s.value("doubleclick_playmode", MainWindow::PlayBehaviour_IfStopped).toInt())); + ui_->doubleclick_playmode->setCurrentIndex( + ui_->doubleclick_playmode->findData( + s.value("doubleclick_playmode", MainWindow::PlayBehaviour_IfStopped) + .toInt())); ui_->menu_playmode->setCurrentIndex(ui_->menu_playmode->findData( s.value("menu_playmode", MainWindow::PlayBehaviour_IfStopped).toInt())); MainWindow::StartupBehaviour behaviour = MainWindow::StartupBehaviour( s.value("startupbehaviour", MainWindow::Startup_Remember).toInt()); switch (behaviour) { - case MainWindow::Startup_AlwaysHide: ui_->b_always_hide_->setChecked(true); break; - case MainWindow::Startup_AlwaysShow: ui_->b_always_show_->setChecked(true); break; - case MainWindow::Startup_Remember: ui_->b_remember_->setChecked(true); break; + case MainWindow::Startup_AlwaysHide: + ui_->b_always_hide_->setChecked(true); + break; + case MainWindow::Startup_AlwaysShow: + ui_->b_always_show_->setChecked(true); + break; + case MainWindow::Startup_Remember: + ui_->b_remember_->setChecked(true); + break; } - ui_->resume_after_start_->setChecked(s.value("resume_playback_after_start", false).toBool()); + ui_->resume_after_start_->setChecked( + s.value("resume_playback_after_start", false).toBool()); s.endGroup(); s.beginGroup("General"); @@ -123,11 +129,13 @@ void BehaviourSettingsPage::Load() { s.endGroup(); s.beginGroup(Playlist::kSettingsGroup); - ui_->b_grey_out_deleted_->setChecked(s.value("greyoutdeleted", false).toBool()); + ui_->b_grey_out_deleted_->setChecked( + s.value("greyoutdeleted", false).toBool()); s.endGroup(); s.beginGroup(PlaylistTabBar::kSettingsGroup); - ui_->b_warn_close_playlist_->setChecked(s.value("warn_close_playlist", true).toBool()); + ui_->b_warn_close_playlist_->setChecked( + s.value("warn_close_playlist", true).toBool()); s.endGroup(); } @@ -135,16 +143,22 @@ void BehaviourSettingsPage::Save() { QSettings s; MainWindow::StartupBehaviour behaviour = MainWindow::Startup_Remember; - if (ui_->b_always_hide_->isChecked()) behaviour = MainWindow::Startup_AlwaysHide; - if (ui_->b_always_show_->isChecked()) behaviour = MainWindow::Startup_AlwaysShow; - if (ui_->b_remember_->isChecked()) behaviour = MainWindow::Startup_Remember; + if (ui_->b_always_hide_->isChecked()) + behaviour = MainWindow::Startup_AlwaysHide; + if (ui_->b_always_show_->isChecked()) + behaviour = MainWindow::Startup_AlwaysShow; + if (ui_->b_remember_->isChecked()) behaviour = MainWindow::Startup_Remember; MainWindow::AddBehaviour doubleclick_addmode = MainWindow::AddBehaviour( - ui_->doubleclick_addmode->itemData(ui_->doubleclick_addmode->currentIndex()).toInt()); + ui_->doubleclick_addmode->itemData( + ui_->doubleclick_addmode->currentIndex()) + .toInt()); MainWindow::PlayBehaviour doubleclick_playmode = MainWindow::PlayBehaviour( - ui_->doubleclick_playmode->itemData(ui_->doubleclick_playmode->currentIndex()).toInt()); + ui_->doubleclick_playmode->itemData( + ui_->doubleclick_playmode->currentIndex()) + .toInt()); MainWindow::PlayBehaviour menu_playmode = MainWindow::PlayBehaviour( - ui_->menu_playmode->itemData(ui_->menu_playmode->currentIndex()).toInt()); + ui_->menu_playmode->itemData(ui_->menu_playmode->currentIndex()).toInt()); s.beginGroup(MainWindow::kSettingsGroup); s.setValue("showtray", ui_->b_show_tray_icon_->isChecked()); @@ -153,12 +167,14 @@ void BehaviourSettingsPage::Save() { s.setValue("doubleclick_addmode", doubleclick_addmode); s.setValue("doubleclick_playmode", doubleclick_playmode); s.setValue("menu_playmode", menu_playmode); - s.setValue("resume_playback_after_start", ui_->resume_after_start_->isChecked()); + s.setValue("resume_playback_after_start", + ui_->resume_after_start_->isChecked()); s.endGroup(); s.beginGroup("General"); - s.setValue("language", language_map_.contains(ui_->language->currentText()) ? - language_map_[ui_->language->currentText()] : QString()); + s.setValue("language", language_map_.contains(ui_->language->currentText()) + ? language_map_[ui_->language->currentText()] + : QString()); s.endGroup(); s.beginGroup(Playlist::kSettingsGroup); diff --git a/src/ui/behavioursettingspage.h b/src/ui/behavioursettingspage.h index fc546f246..9f73c0f77 100644 --- a/src/ui/behavioursettingspage.h +++ b/src/ui/behavioursettingspage.h @@ -27,20 +27,20 @@ class Ui_BehaviourSettingsPage; class BehaviourSettingsPage : public SettingsPage { Q_OBJECT -public: + public: BehaviourSettingsPage(SettingsDialog* dialog); ~BehaviourSettingsPage(); void Load(); void Save(); -private slots: + private slots: void ShowTrayIconToggled(bool on); -private: + private: Ui_BehaviourSettingsPage* ui_; QMap language_map_; }; -#endif // BEHAVIOURSETTINGSPAGE_H +#endif // BEHAVIOURSETTINGSPAGE_H diff --git a/src/ui/console.cpp b/src/ui/console.cpp index fa1f5edb3..681279809 100644 --- a/src/ui/console.cpp +++ b/src/ui/console.cpp @@ -10,8 +10,7 @@ #include "core/database.h" Console::Console(Application* app, QWidget* parent) - : QDialog(parent), - app_(app) { + : QDialog(parent), app_(app) { ui_.setupUi(this); connect(ui_.run, SIGNAL(clicked()), SLOT(RunQuery())); diff --git a/src/ui/console.h b/src/ui/console.h index 2ba5b8532..fcd5c9b6b 100644 --- a/src/ui/console.h +++ b/src/ui/console.h @@ -10,7 +10,7 @@ class Application; class Console : public QDialog { Q_OBJECT public: - Console(Application* app, QWidget* parent = 0); + Console(Application* app, QWidget* parent = nullptr); private slots: void RunQuery(); diff --git a/src/ui/coverfromurldialog.cpp b/src/ui/coverfromurldialog.cpp index a96508121..8813a0efe 100644 --- a/src/ui/coverfromurldialog.cpp +++ b/src/ui/coverfromurldialog.cpp @@ -28,21 +28,19 @@ #include CoverFromURLDialog::CoverFromURLDialog(QWidget* parent) - : QDialog(parent), - ui_(new Ui_CoverFromURLDialog), - network_(new NetworkAccessManager(this)) -{ + : QDialog(parent), + ui_(new Ui_CoverFromURLDialog), + network_(new NetworkAccessManager(this)) { ui_->setupUi(this); ui_->busy->hide(); } -CoverFromURLDialog::~CoverFromURLDialog() { - delete ui_; -} +CoverFromURLDialog::~CoverFromURLDialog() { delete ui_; } QImage CoverFromURLDialog::Exec() { // reset state - ui_->url->setText("");; + ui_->url->setText(""); + ; last_image_ = QImage(); QClipboard* clipboard = QApplication::clipboard(); @@ -55,7 +53,8 @@ QImage CoverFromURLDialog::Exec() { void CoverFromURLDialog::accept() { ui_->busy->show(); - QNetworkRequest network_request = QNetworkRequest(QUrl::fromUserInput(ui_->url->text())); + QNetworkRequest network_request = + QNetworkRequest(QUrl::fromUserInput(ui_->url->text())); QNetworkReply* reply = network_->get(network_request); connect(reply, SIGNAL(finished()), SLOT(LoadCoverFromURLFinished())); @@ -68,17 +67,19 @@ void CoverFromURLDialog::LoadCoverFromURLFinished() { reply->deleteLater(); if (reply->error() != QNetworkReply::NoError) { - QMessageBox::information(this, tr("Fetching cover error"), tr("The site you requested does not exist!")); + QMessageBox::information(this, tr("Fetching cover error"), + tr("The site you requested does not exist!")); return; } QImage image; image.loadFromData(reply->readAll()); - if(!image.isNull()) { + if (!image.isNull()) { last_image_ = image; QDialog::accept(); } else { - QMessageBox::information(this, tr("Fetching cover error"), tr("The site you requested is not an image!")); + QMessageBox::information(this, tr("Fetching cover error"), + tr("The site you requested is not an image!")); } } diff --git a/src/ui/coverfromurldialog.h b/src/ui/coverfromurldialog.h index b725eaba1..4087dc342 100644 --- a/src/ui/coverfromurldialog.h +++ b/src/ui/coverfromurldialog.h @@ -30,7 +30,7 @@ class CoverFromURLDialog : public QDialog { Q_OBJECT public: - CoverFromURLDialog(QWidget* parent = 0); + CoverFromURLDialog(QWidget* parent = nullptr); ~CoverFromURLDialog(); // Opens the dialog. This returns an image found at the URL chosen by user @@ -48,4 +48,4 @@ class CoverFromURLDialog : public QDialog { QImage last_image_; }; -#endif // COVERFROMURLDIALOG_H +#endif // COVERFROMURLDIALOG_H diff --git a/src/ui/dbusscreensaver.cpp b/src/ui/dbusscreensaver.cpp index 021dc1e0d..21fa3a9de 100644 --- a/src/ui/dbusscreensaver.cpp +++ b/src/ui/dbusscreensaver.cpp @@ -23,22 +23,21 @@ DBusScreensaver::DBusScreensaver(const QString& service, const QString& path, const QString& interface) - : service_(service), - path_(path), - interface_(interface) -{ -} + : service_(service), path_(path), interface_(interface) {} void DBusScreensaver::Inhibit() { - QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver"); + QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", + "org.gnome.ScreenSaver"); QDBusReply reply = - gnome_screensaver.call("Inhibit", QCoreApplication::applicationName(), QObject::tr("Visualizations")); + gnome_screensaver.call("Inhibit", QCoreApplication::applicationName(), + QObject::tr("Visualizations")); if (reply.isValid()) { cookie_ = reply.value(); } } void DBusScreensaver::Uninhibit() { - QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", "org.gnome.ScreenSaver"); + QDBusInterface gnome_screensaver("org.gnome.ScreenSaver", "/", + "org.gnome.ScreenSaver"); gnome_screensaver.call("UnInhibit", cookie_); } diff --git a/src/ui/dbusscreensaver.h b/src/ui/dbusscreensaver.h index 4d939cf42..4cae2a16c 100644 --- a/src/ui/dbusscreensaver.h +++ b/src/ui/dbusscreensaver.h @@ -30,7 +30,7 @@ class DBusScreensaver : public Screensaver { void Inhibit(); void Uninhibit(); -private: + private: QString service_; QString path_; QString interface_; diff --git a/src/ui/edittagdialog.cpp b/src/ui/edittagdialog.cpp index 2eabf8770..08138e8e7 100644 --- a/src/ui/edittagdialog.cpp +++ b/src/ui/edittagdialog.cpp @@ -45,32 +45,33 @@ #include -const char* EditTagDialog::kHintText = QT_TR_NOOP("(different across multiple songs)"); +const char* EditTagDialog::kHintText = + QT_TR_NOOP("(different across multiple songs)"); const char* EditTagDialog::kSettingsGroup = "EditTagDialog"; EditTagDialog::EditTagDialog(Application* app, QWidget* parent) - : QDialog(parent), - ui_(new Ui_EditTagDialog), - app_(app), - album_cover_choice_controller_(new AlbumCoverChoiceController(this)), - loading_(false), - ignore_edits_(false), - tag_fetcher_(new TagFetcher(this)), - cover_art_id_(0), - cover_art_is_set_(false), - results_dialog_(new TrackSelectionDialog(this)) -{ + : QDialog(parent), + ui_(new Ui_EditTagDialog), + app_(app), + album_cover_choice_controller_(new AlbumCoverChoiceController(this)), + loading_(false), + ignore_edits_(false), + tag_fetcher_(new TagFetcher(this)), + cover_art_id_(0), + cover_art_is_set_(false), + results_dialog_(new TrackSelectionDialog(this)) { cover_options_.default_output_image_ = AlbumCoverLoader::ScaleAndPad(cover_options_, QImage(":nocover.png")); - connect(app_->album_cover_loader(), SIGNAL(ImageLoaded(quint64,QImage,QImage)), - SLOT(ArtLoaded(quint64,QImage,QImage))); + connect(app_->album_cover_loader(), + SIGNAL(ImageLoaded(quint64, QImage, QImage)), + SLOT(ArtLoaded(quint64, QImage, QImage))); connect(tag_fetcher_, SIGNAL(ResultAvailable(Song, SongList)), results_dialog_, SLOT(FetchTagFinished(Song, SongList)), Qt::QueuedConnection); - connect(tag_fetcher_, SIGNAL(Progress(Song,QString)), - results_dialog_, SLOT(FetchTagProgress(Song,QString))); + connect(tag_fetcher_, SIGNAL(Progress(Song, QString)), results_dialog_, + SLOT(FetchTagProgress(Song, QString))); connect(results_dialog_, SIGNAL(SongChosen(Song, Song)), SLOT(FetchTagSongChosen(Song, Song))); connect(results_dialog_, SIGNAL(finished(int)), tag_fetcher_, SLOT(Cancel())); @@ -83,7 +84,7 @@ EditTagDialog::EditTagDialog(Application* app, QWidget* parent) // An editable field is one that has a label as a buddy. The label is // important because it gets turned bold when the field is changed. - foreach (QLabel* label, findChildren()) { + for (QLabel* label : findChildren()) { QWidget* widget = label->buddy(); if (widget) { // Store information about the field @@ -109,25 +110,25 @@ EditTagDialog::EditTagDialog(Application* app, QWidget* parent) const bool light = palette().color(QPalette::Base).value() > 128; const QColor color = palette().color(QPalette::Dark); QPalette summary_label_palette(palette()); - summary_label_palette.setColor(QPalette::WindowText, - light ? color.darker(150) : color.lighter(125)); + summary_label_palette.setColor( + QPalette::WindowText, light ? color.darker(150) : color.lighter(125)); - foreach (QLabel* label, ui_->summary_tab->findChildren()) { + for (QLabel* label : ui_->summary_tab->findChildren()) { if (label->property("field_label").toBool()) { label->setPalette(summary_label_palette); } } // Pretend the summary text is just a label - ui_->summary->setMaximumHeight(ui_->art->height() - ui_->summary_art_button->height() - 4); + ui_->summary->setMaximumHeight(ui_->art->height() - + ui_->summary_art_button->height() - 4); connect(ui_->song_list->selectionModel(), - SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + SIGNAL(selectionChanged(QItemSelection, QItemSelection)), SLOT(SelectionChanged())); connect(ui_->button_box, SIGNAL(clicked(QAbstractButton*)), - SLOT(ButtonClicked(QAbstractButton*))); - connect(ui_->rating, SIGNAL(RatingChanged(float)), - SLOT(SongRated(float))); + SLOT(ButtonClicked(QAbstractButton*))); + connect(ui_->rating, SIGNAL(RatingChanged(float)), SLOT(SongRated(float))); connect(ui_->playcount_reset, SIGNAL(clicked()), SLOT(ResetPlayCounts())); connect(ui_->fetch_tag, SIGNAL(clicked()), SLOT(FetchTag())); @@ -157,7 +158,8 @@ EditTagDialog::EditTagDialog(Application* app, QWidget* parent) ui_->art->setAcceptDrops(true); // Add the next/previous buttons - previous_button_ = new QPushButton(IconLoader::Load("go-previous"), tr("Previous"), this); + previous_button_ = + new QPushButton(IconLoader::Load("go-previous"), tr("Previous"), this); next_button_ = new QPushButton(IconLoader::Load("go-next"), tr("Next"), this); ui_->button_box->addButton(previous_button_, QDialogButtonBox::ResetRole); ui_->button_box->addButton(next_button_, QDialogButtonBox::ResetRole); @@ -168,36 +170,41 @@ EditTagDialog::EditTagDialog(Application* app, QWidget* parent) // Set some shortcuts for the buttons new QShortcut(QKeySequence::Back, previous_button_, SLOT(click())); new QShortcut(QKeySequence::Forward, next_button_, SLOT(click())); - new QShortcut(QKeySequence::MoveToPreviousPage, previous_button_, SLOT(click())); + new QShortcut(QKeySequence::MoveToPreviousPage, previous_button_, + SLOT(click())); new QShortcut(QKeySequence::MoveToNextPage, next_button_, SLOT(click())); // Show the shortcuts as tooltips previous_button_->setToolTip(QString("%1 (%2 / %3)").arg( previous_button_->text(), QKeySequence(QKeySequence::Back).toString(QKeySequence::NativeText), - QKeySequence(QKeySequence::MoveToPreviousPage).toString(QKeySequence::NativeText))); + QKeySequence(QKeySequence::MoveToPreviousPage) + .toString(QKeySequence::NativeText))); next_button_->setToolTip(QString("%1 (%2 / %3)").arg( next_button_->text(), QKeySequence(QKeySequence::Forward).toString(QKeySequence::NativeText), - QKeySequence(QKeySequence::MoveToNextPage).toString(QKeySequence::NativeText))); + QKeySequence(QKeySequence::MoveToNextPage) + .toString(QKeySequence::NativeText))); - new TagCompleter(app_->library_backend(), Playlist::Column_Artist, ui_->artist); + new TagCompleter(app_->library_backend(), Playlist::Column_Artist, + ui_->artist); new TagCompleter(app_->library_backend(), Playlist::Column_Album, ui_->album); - new TagCompleter(app_->library_backend(), Playlist::Column_AlbumArtist, ui_->albumartist); + new TagCompleter(app_->library_backend(), Playlist::Column_AlbumArtist, + ui_->albumartist); new TagCompleter(app_->library_backend(), Playlist::Column_Genre, ui_->genre); - new TagCompleter(app_->library_backend(), Playlist::Column_Composer, ui_->composer); - new TagCompleter(app_->library_backend(), Playlist::Column_Performer, ui_->performer); - new TagCompleter(app_->library_backend(), Playlist::Column_Grouping, ui_->grouping); + new TagCompleter(app_->library_backend(), Playlist::Column_Composer, + ui_->composer); + new TagCompleter(app_->library_backend(), Playlist::Column_Performer, + ui_->performer); + new TagCompleter(app_->library_backend(), Playlist::Column_Grouping, + ui_->grouping); } -EditTagDialog::~EditTagDialog() { - delete ui_; -} +EditTagDialog::~EditTagDialog() { delete ui_; } bool EditTagDialog::SetLoading(const QString& message) { const bool loading = !message.isEmpty(); - if (loading == loading_) - return false; + if (loading == loading_) return false; loading_ = loading; ui_->button_box->setEnabled(!loading); @@ -209,14 +216,16 @@ bool EditTagDialog::SetLoading(const QString& message) { return true; } -QList EditTagDialog::LoadData(const SongList& songs) const { +QList EditTagDialog::LoadData(const SongList& songs) + const { QList ret; - foreach (const Song& song, songs) { + for (const Song& song : songs) { if (song.IsEditable()) { // Try reloading the tags from file Song copy(song); - TagReaderClient::Instance()->ReadFileBlocking(copy.url().toLocalFile(), ©); + TagReaderClient::Instance()->ReadFileBlocking(copy.url().toLocalFile(), + ©); if (copy.is_valid()) { copy.MergeUserSetData(song); @@ -230,28 +239,28 @@ QList EditTagDialog::LoadData(const SongList& songs) const void EditTagDialog::SetSongs(const SongList& s, const PlaylistItemList& items) { // Show the loading indicator - if (!SetLoading(tr("Loading tracks") + "...")) - return; + if (!SetLoading(tr("Loading tracks") + "...")) return; data_.clear(); playlist_items_ = items; ui_->song_list->clear(); // Reload tags in the background - QFuture > future = QtConcurrent::run(this, &EditTagDialog::LoadData, s); - QFutureWatcher >* watcher = new QFutureWatcher >(this); + QFuture > future = + QtConcurrent::run(this, &EditTagDialog::LoadData, s); + QFutureWatcher >* watcher = + new QFutureWatcher >(this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(SetSongsFinished())); } void EditTagDialog::SetSongsFinished() { - QFutureWatcher >* watcher = dynamic_cast >*>(sender()); - if (!watcher) - return; + QFutureWatcher >* watcher = + dynamic_cast >*>(sender()); + if (!watcher) return; watcher->deleteLater(); - if (!SetLoading(QString())) - return; + if (!SetLoading(QString())) return; data_ = watcher->result(); if (data_.count() == 0) { @@ -268,7 +277,7 @@ void EditTagDialog::SetSongsFinished() { } // Add the filenames to the list - foreach (const Data& data, data_) { + for (const Data& data : data_) { ui_->song_list->addItem(data.current_.basefilename()); } @@ -287,55 +296,57 @@ void EditTagDialog::SetSongListVisibility(bool visible) { } QVariant EditTagDialog::Data::value(const Song& song, const QString& id) { - if (id == "title") return song.title(); - if (id == "artist") return song.artist(); - if (id == "album") return song.album(); + if (id == "title") return song.title(); + if (id == "artist") return song.artist(); + if (id == "album") return song.album(); if (id == "albumartist") return song.albumartist(); - if (id == "composer") return song.composer(); - if (id == "performer") return song.performer(); - if (id == "grouping") return song.grouping(); - if (id == "genre") return song.genre(); - if (id == "comment") return song.comment(); - if (id == "track") return song.track(); - if (id == "disc") return song.disc(); - if (id == "year") return song.year(); + if (id == "composer") return song.composer(); + if (id == "performer") return song.performer(); + if (id == "grouping") return song.grouping(); + if (id == "genre") return song.genre(); + if (id == "comment") return song.comment(); + if (id == "track") return song.track(); + if (id == "disc") return song.disc(); + if (id == "year") return song.year(); qLog(Warning) << "Unknown ID" << id; return QVariant(); } void EditTagDialog::Data::set_value(const QString& id, const QVariant& value) { - if (id == "title") current_.set_title(value.toString()); - if (id == "artist") current_.set_artist(value.toString()); - if (id == "album") current_.set_album(value.toString()); + if (id == "title") current_.set_title(value.toString()); + if (id == "artist") current_.set_artist(value.toString()); + if (id == "album") current_.set_album(value.toString()); if (id == "albumartist") current_.set_albumartist(value.toString()); - if (id == "composer") current_.set_composer(value.toString()); - if (id == "performer") current_.set_performer(value.toString()); - if (id == "grouping") current_.set_grouping(value.toString()); - if (id == "genre") current_.set_genre(value.toString()); - if (id == "comment") current_.set_comment(value.toString()); - if (id == "track") current_.set_track(value.toInt()); - if (id == "disc") current_.set_disc(value.toInt()); - if (id == "year") current_.set_year(value.toInt()); + if (id == "composer") current_.set_composer(value.toString()); + if (id == "performer") current_.set_performer(value.toString()); + if (id == "grouping") current_.set_grouping(value.toString()); + if (id == "genre") current_.set_genre(value.toString()); + if (id == "comment") current_.set_comment(value.toString()); + if (id == "track") current_.set_track(value.toInt()); + if (id == "disc") current_.set_disc(value.toInt()); + if (id == "year") current_.set_year(value.toInt()); } -bool EditTagDialog::DoesValueVary(const QModelIndexList& sel, const QString& id) const { +bool EditTagDialog::DoesValueVary(const QModelIndexList& sel, + const QString& id) const { QVariant value = data_[sel.first().row()].current_value(id); - for (int i=1 ; iclear(); editor->clear_hint(); if (varies) { - editor->set_hint(EditTagDialog::kHintText); + editor->set_hint(tr(EditTagDialog::kHintText)); } else { editor->set_text(data_[sel[0].row()].current_value(field.id_).toString()); } @@ -355,7 +366,8 @@ void EditTagDialog::InitFieldValue(const FieldData& field, const QModelIndexList field.editor_->setFont(new_font); } -void EditTagDialog::UpdateFieldValue(const FieldData& field, const QModelIndexList& sel) { +void EditTagDialog::UpdateFieldValue(const FieldData& field, + const QModelIndexList& sel) { // Get the value from the field QVariant value; if (ExtendedEditor* editor = dynamic_cast(field.editor_)) { @@ -368,7 +380,7 @@ void EditTagDialog::UpdateFieldValue(const FieldData& field, const QModelIndexLi } // Set it in each selected song - foreach (const QModelIndex& i, sel) { + for (const QModelIndex& i : sel) { data_[i.row()].set_value(field.id_, value); } @@ -381,9 +393,10 @@ void EditTagDialog::UpdateFieldValue(const FieldData& field, const QModelIndexLi field.editor_->setFont(new_font); } -void EditTagDialog::ResetFieldValue(const FieldData& field, const QModelIndexList& sel) { +void EditTagDialog::ResetFieldValue(const FieldData& field, + const QModelIndexList& sel) { // Reset each selected song - foreach (const QModelIndex& i, sel) { + for (const QModelIndex& i : sel) { Data& data = data_[i.row()]; data.set_value(field.id_, data.original_value(field.id_)); } @@ -393,20 +406,21 @@ void EditTagDialog::ResetFieldValue(const FieldData& field, const QModelIndexLis } void EditTagDialog::SelectionChanged() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; // Set the editable fields ignore_edits_ = true; - foreach (const FieldData& field, fields_) { + for (const FieldData& field : fields_) { InitFieldValue(field, sel); } ignore_edits_ = false; // If we're editing multiple songs then we have to disable certain tabs const bool multiple = sel.count() > 1; - ui_->tab_widget->setTabEnabled(ui_->tab_widget->indexOf(ui_->summary_tab), !multiple); + ui_->tab_widget->setTabEnabled(ui_->tab_widget->indexOf(ui_->summary_tab), + !multiple); if (!multiple) { const Song& song = data_[sel.first().row()].original_; @@ -415,12 +429,13 @@ void EditTagDialog::SelectionChanged() { } } -static void SetText(QLabel* label, int value, const QString& suffix, const QString& def = QString()) { +static void SetText(QLabel* label, int value, const QString& suffix, + const QString& def = QString()) { label->setText(value <= 0 ? def : (QString::number(value) + " " + suffix)); } static void SetDate(QLabel* label, uint time) { - if (time == std::numeric_limits::max()) { // -1 + if (time == std::numeric_limits::max()) { // -1 label->setText(QObject::tr("Unknown")); } else { label->setText(QDateTime::fromTime_t(time).toString( @@ -429,9 +444,11 @@ static void SetDate(QLabel* label, uint time) { } void EditTagDialog::UpdateSummaryTab(const Song& song) { - cover_art_id_ = app_->album_cover_loader()->LoadImageAsync(cover_options_, song); + cover_art_id_ = + app_->album_cover_loader()->LoadImageAsync(cover_options_, song); - QString summary = "" + Qt::escape(song.PrettyTitleWithArtist()) + "
"; + QString summary = + "" + Qt::escape(song.PrettyTitleWithArtist()) + "
"; bool art_is_set = true; if (song.has_manually_unset_cover()) { @@ -442,7 +459,8 @@ void EditTagDialog::UpdateSummaryTab(const Song& song) { } else if (song.has_embedded_cover()) { summary += Qt::escape(tr("Cover art from embedded image")); } else if (!song.art_automatic().isEmpty()) { - summary += Qt::escape(tr("Cover art loaded automatically from %1").arg(song.art_automatic())); + summary += Qt::escape( + tr("Cover art loaded automatically from %1").arg(song.art_automatic())); } else { summary += Qt::escape(tr("Cover art not set")); art_is_set = false; @@ -475,7 +493,7 @@ void EditTagDialog::UpdateSummaryTab(const Song& song) { ui_->filename->setText(song.url().toString()); album_cover_choice_controller_->search_for_cover_action()->setEnabled( - app_->cover_providers()->HasAnyProviders()); + app_->cover_providers()->HasAnyProviders()); } void EditTagDialog::UpdateStatisticsTab(const Song& song) { @@ -484,12 +502,15 @@ void EditTagDialog::UpdateStatisticsTab(const Song& song) { ui_->score->setText(QString::number(qMax(0, song.score()))); ui_->rating->set_rating(song.rating()); - ui_->lastplayed->setText(song.lastplayed() <= 0 ? tr("Never") : - QDateTime::fromTime_t(song.lastplayed()).toString( - QLocale::system().dateTimeFormat(QLocale::LongFormat))); + ui_->lastplayed->setText( + song.lastplayed() <= 0 + ? tr("Never") + : QDateTime::fromTime_t(song.lastplayed()).toString( + QLocale::system().dateTimeFormat(QLocale::LongFormat))); } -void EditTagDialog::ArtLoaded(quint64 id, const QImage& scaled, const QImage& original) { +void EditTagDialog::ArtLoaded(quint64 id, const QImage& scaled, + const QImage& original) { if (id == cover_art_id_) { ui_->art->setPixmap(QPixmap::fromImage(scaled)); original_ = original; @@ -497,17 +518,16 @@ void EditTagDialog::ArtLoaded(quint64 id, const QImage& scaled, const QImage& or } void EditTagDialog::FieldValueEdited() { - if (ignore_edits_) - return; + if (ignore_edits_) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; QWidget* w = qobject_cast(sender()); // Find the field - foreach (const FieldData& field, fields_) { + for (const FieldData& field : fields_) { if (field.editor_ == w) { UpdateFieldValue(field, sel); return; @@ -516,14 +536,14 @@ void EditTagDialog::FieldValueEdited() { } void EditTagDialog::ResetField() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; QWidget* w = qobject_cast(sender()); // Find the field - foreach (const FieldData& field, fields_) { + for (const FieldData& field : fields_) { if (field.editor_ == w) { ignore_edits_ = true; ResetFieldValue(field, sel); @@ -534,65 +554,61 @@ void EditTagDialog::ResetField() { } Song* EditTagDialog::GetFirstSelected() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return NULL; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return nullptr; return &data_[sel.first().row()].original_; } void EditTagDialog::LoadCoverFromFile() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); QString cover = album_cover_choice_controller_->LoadCoverFromFile(song); - if(!cover.isEmpty()) - UpdateCoverOf(*song, sel, cover); + if (!cover.isEmpty()) UpdateCoverOf(*song, sel, cover); } void EditTagDialog::SaveCoverToFile() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; album_cover_choice_controller_->SaveCoverToFile(*song, original_); } void EditTagDialog::LoadCoverFromURL() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); QString cover = album_cover_choice_controller_->LoadCoverFromURL(song); - if(!cover.isEmpty()) - UpdateCoverOf(*song, sel, cover); + if (!cover.isEmpty()) UpdateCoverOf(*song, sel, cover); } void EditTagDialog::SearchForCover() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); QString cover = album_cover_choice_controller_->SearchForCover(song); - if(!cover.isEmpty()) - UpdateCoverOf(*song, sel, cover); + if (!cover.isEmpty()) UpdateCoverOf(*song, sel, cover); } void EditTagDialog::UnsetCover() { Song* song = GetFirstSelected(); - if(!song) - return; + if (!song) return; - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); QString cover = album_cover_choice_controller_->UnsetCover(song); UpdateCoverOf(*song, sel, cover); @@ -600,29 +616,29 @@ void EditTagDialog::UnsetCover() { void EditTagDialog::ShowCover() { Song* song = GetFirstSelected(); - if(!song) { + if (!song) { return; } album_cover_choice_controller_->ShowCover(*song); } -void EditTagDialog::UpdateCoverOf(const Song& selected, const QModelIndexList& sel, +void EditTagDialog::UpdateCoverOf(const Song& selected, + const QModelIndexList& sel, const QString& cover) { - if (!selected.is_valid() || selected.id() == -1) - return; + if (!selected.is_valid() || selected.id() == -1) return; UpdateSummaryTab(selected); // Now check if we have any other songs cached that share that artist and // album (and would therefore be changed as well) - for (int i=0 ; iartist() && - selected.album() == other_song->album()) { + selected.album() == other_song->album()) { other_song->set_art_manual(cover); } } @@ -642,7 +658,8 @@ void EditTagDialog::PreviousSong() { return; } - int row = (ui_->song_list->currentRow() - 1 + ui_->song_list->count()) % ui_->song_list->count(); + int row = (ui_->song_list->currentRow() - 1 + ui_->song_list->count()) % + ui_->song_list->count(); ui_->song_list->setCurrentRow(row); } @@ -653,25 +670,25 @@ void EditTagDialog::ButtonClicked(QAbstractButton* button) { } void EditTagDialog::SaveData(const QList& data) { - for (int i=0 ; iSaveFileBlocking( - ref.current_.url().toLocalFile(), ref.current_)) { - emit Error(tr("An error occurred writing metadata to '%1'").arg(ref.current_.url().toLocalFile())); + ref.current_.url().toLocalFile(), ref.current_)) { + emit Error(tr("An error occurred writing metadata to '%1'") + .arg(ref.current_.url().toLocalFile())); } } } void EditTagDialog::accept() { // Show the loading indicator - if (!SetLoading(tr("Saving tracks") + "...")) - return; + if (!SetLoading(tr("Saving tracks") + "...")) return; // Save tags in the background - QFuture future = QtConcurrent::run(this, &EditTagDialog::SaveData, data_); + QFuture future = + QtConcurrent::run(this, &EditTagDialog::SaveData, data_); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(AcceptFinished())); @@ -679,12 +696,10 @@ void EditTagDialog::accept() { void EditTagDialog::AcceptFinished() { QFutureWatcher* watcher = dynamic_cast*>(sender()); - if (!watcher) - return; + if (!watcher) return; watcher->deleteLater(); - if (!SetLoading(QString())) - return; + if (!SetLoading(QString())) return; QDialog::accept(); } @@ -706,10 +721,12 @@ bool EditTagDialog::eventFilter(QObject* o, QEvent* e) { case QEvent::Drop: { const QDropEvent* event = static_cast(e); - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); Song* song = GetFirstSelected(); - const QString cover = album_cover_choice_controller_->SaveCover(song, event); + const QString cover = + album_cover_choice_controller_->SaveCover(song, event); if (!cover.isEmpty()) { UpdateCoverOf(*song, sel, cover); } @@ -746,28 +763,27 @@ void EditTagDialog::hideEvent(QHideEvent* e) { } void EditTagDialog::SongRated(float rating) { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; Song* song = &data_[sel.first().row()].original_; - if (!song->is_valid() || song->id() == -1) - return; + if (!song->is_valid() || song->id() == -1) return; song->set_rating(rating); app_->library_backend()->UpdateSongRatingAsync(song->id(), rating); } void EditTagDialog::ResetPlayCounts() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); - if (sel.isEmpty()) - return; + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); + if (sel.isEmpty()) return; Song* song = &data_[sel.first().row()].original_; - if (!song->is_valid() || song->id() == -1) - return; + if (!song->is_valid() || song->id() == -1) return; - if (QMessageBox::question(this, tr("Reset play counts"), - tr("Are you sure you want to reset this song's statistics?"), - QMessageBox::Reset, QMessageBox::Cancel) != QMessageBox::Reset) { + if (QMessageBox::question( + this, tr("Reset play counts"), + tr("Are you sure you want to reset this song's statistics?"), + QMessageBox::Reset, QMessageBox::Cancel) != QMessageBox::Reset) { return; } @@ -780,11 +796,12 @@ void EditTagDialog::ResetPlayCounts() { } void EditTagDialog::FetchTag() { - const QModelIndexList sel = ui_->song_list->selectionModel()->selectedIndexes(); + const QModelIndexList sel = + ui_->song_list->selectionModel()->selectedIndexes(); SongList songs; - foreach (const QModelIndex& index, sel) { + for (const QModelIndex& index : sel) { Song song = data_[index.row()].original_; if (!song.is_valid()) { continue; @@ -793,8 +810,7 @@ void EditTagDialog::FetchTag() { songs << song; } - if (songs.isEmpty()) - return; + if (songs.isEmpty()) return; results_dialog_->Init(songs); tag_fetcher_->StartFetch(songs); @@ -802,14 +818,14 @@ void EditTagDialog::FetchTag() { results_dialog_->show(); } -void EditTagDialog::FetchTagSongChosen(const Song& original_song, const Song& new_metadata) { +void EditTagDialog::FetchTagSongChosen(const Song& original_song, + const Song& new_metadata) { const QString filename = original_song.url().toLocalFile(); // Find the song with this filename - for (int i=0 ; ioriginal_.url().toLocalFile() != filename) - continue; + if (data->original_.url().toLocalFile() != filename) continue; // Is it currently being displayed in the UI? if (ui_->song_list->currentRow() == i) { @@ -830,4 +846,3 @@ void EditTagDialog::FetchTagSongChosen(const Song& original_song, const Song& ne break; } } - diff --git a/src/ui/edittagdialog.h b/src/ui/edittagdialog.h index 885f3bfb8..522887f29 100644 --- a/src/ui/edittagdialog.h +++ b/src/ui/edittagdialog.h @@ -42,14 +42,15 @@ class QPushButton; class EditTagDialog : public QDialog { Q_OBJECT -public: - EditTagDialog(Application* app, QWidget* parent = 0); + public: + EditTagDialog(Application* app, QWidget* parent = nullptr); ~EditTagDialog(); static const char* kHintText; static const char* kSettingsGroup; - void SetSongs(const SongList& songs, const PlaylistItemList& items = PlaylistItemList()); + void SetSongs(const SongList& songs, + const PlaylistItemList& items = PlaylistItemList()); PlaylistItemList playlist_items() const { return playlist_items_; } @@ -58,12 +59,12 @@ public: signals: void Error(const QString& message); -protected: + protected: bool eventFilter(QObject* o, QEvent* e); void showEvent(QShowEvent*); void hideEvent(QHideEvent*); -private slots: + private slots: void SetSongsFinished(); void AcceptFinished(); @@ -88,13 +89,17 @@ private slots: void PreviousSong(); void NextSong(); -private: + private: struct Data { Data(const Song& song = Song()) : original_(song), current_(song) {} static QVariant value(const Song& song, const QString& id); - QVariant original_value(const QString& id) const { return value(original_, id); } - QVariant current_value(const QString& id) const { return value(current_, id); } + QVariant original_value(const QString& id) const { + return value(original_, id); + } + QVariant current_value(const QString& id) const { + return value(current_, id); + } void set_value(const QString& id, const QVariant& value); @@ -103,9 +108,9 @@ private: }; struct FieldData { - FieldData(QLabel* label = NULL, QWidget* editor = NULL, + FieldData(QLabel* label = nullptr, QWidget* editor = nullptr, const QString& id = QString()) - : label_(label), editor_(editor), id_(id) {} + : label_(label), editor_(editor), id_(id) {} QLabel* label_; QWidget* editor_; @@ -133,7 +138,7 @@ private: QList LoadData(const SongList& songs) const; void SaveData(const QList& data); -private: + private: Ui_EditTagDialog* ui_; Application* app_; @@ -164,4 +169,4 @@ private: TrackSelectionDialog* results_dialog_; }; -#endif // EDITTAGDIALOG_H +#endif // EDITTAGDIALOG_H diff --git a/src/ui/edittagdialog.ui b/src/ui/edittagdialog.ui index dc8e05bf2..9acaf9a8f 100644 --- a/src/ui/edittagdialog.ui +++ b/src/ui/edittagdialog.ui @@ -336,7 +336,7 @@ - Last played + Last played true diff --git a/src/ui/equalizer.cpp b/src/ui/equalizer.cpp index 16b8680d3..7628ee809 100644 --- a/src/ui/equalizer.cpp +++ b/src/ui/equalizer.cpp @@ -28,16 +28,13 @@ #include "widgets/equalizerslider.h" // We probably don't need to translate these, right? -const char* Equalizer::kGainText[] = { - "60", "170", "310", "600", "1k", "3k", "6k", "12k", "14k", "16k"}; +const char* Equalizer::kGainText[] = {"60", "170", "310", "600", "1k", + "3k", "6k", "12k", "14k", "16k"}; const char* Equalizer::kSettingsGroup = "Equalizer"; -Equalizer::Equalizer(QWidget *parent) - : QDialog(parent), - ui_(new Ui_Equalizer), - loading_(false) -{ +Equalizer::Equalizer(QWidget* parent) + : QDialog(parent), ui_(new Ui_Equalizer), loading_(false) { ui_->setupUi(this); // Icons @@ -51,27 +48,27 @@ Equalizer::Equalizer(QWidget *parent) line->setFrameShadow(QFrame::Sunken); ui_->slider_container->layout()->addWidget(line); - for (int i=0 ; ienable, SIGNAL(toggled(bool)), SIGNAL(EnabledChanged(bool))); - connect(ui_->enable, SIGNAL(toggled(bool)), ui_->slider_container, SLOT(setEnabled(bool))); + connect(ui_->enable, SIGNAL(toggled(bool)), ui_->slider_container, + SLOT(setEnabled(bool))); connect(ui_->enable, SIGNAL(toggled(bool)), SLOT(Save())); - connect(ui_->preset, SIGNAL(currentIndexChanged(int)), SLOT(PresetChanged(int))); + connect(ui_->preset, SIGNAL(currentIndexChanged(int)), + SLOT(PresetChanged(int))); connect(ui_->preset_save, SIGNAL(clicked()), SLOT(SavePreset())); connect(ui_->preset_del, SIGNAL(clicked()), SLOT(DelPreset())); - connect(ui_->balance_slider, SIGNAL(valueChanged(int)), SLOT(StereoSliderChanged(int))); + connect(ui_->balance_slider, SIGNAL(valueChanged(int)), + SLOT(StereoSliderChanged(int))); QShortcut* close = new QShortcut(QKeySequence::Close, this); connect(close, SIGNAL(activated()), SLOT(close())); } -Equalizer::~Equalizer() { - delete ui_; -} +Equalizer::~Equalizer() { delete ui_; } void Equalizer::ReloadSettings() { QSettings s; @@ -82,22 +79,21 @@ void Equalizer::ReloadSettings() { // Load presets int count = s.beginReadArray("presets"); - for (int i=0 ; i()); } s.endArray(); - if (count == 0) - LoadDefaultPresets(); + if (count == 0) LoadDefaultPresets(); // Selected preset QString selected_preset = s.value("selected_preset", "Custom").toString(); - QString selected_preset_display_name = QString(tr(qPrintable(selected_preset))); + QString selected_preset_display_name = + QString(tr(qPrintable(selected_preset))); int selected_index = ui_->preset->findText(selected_preset_display_name); - if (selected_index != -1) - ui_->preset->setCurrentIndex(selected_index); + if (selected_index != -1) ui_->preset->setCurrentIndex(selected_index); // Enabled? ui_->enable->setChecked(s.value("enabled", false).toBool()); @@ -111,38 +107,59 @@ void Equalizer::ReloadSettings() { } void Equalizer::LoadDefaultPresets() { - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Custom"), Params(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Classical"), Params(0, 0, 0, 0, 0, 0, -40, -40, -40, -50)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Club"), Params(0, 0, 20, 30, 30, 30, 20, 0, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Dance"), Params(50, 35, 10, 0, 0, -30, -40, -40, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Custom"), + Params(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Classical"), + Params(0, 0, 0, 0, 0, 0, -40, -40, -40, -50)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Club"), + Params(0, 0, 20, 30, 30, 30, 20, 0, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Dance"), + Params(50, 35, 10, 0, 0, -30, -40, -40, 0, 0)); // Dubstep equalizer created by Devyn Collier Johnson - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Dubstep"), Params(0, 36, 85, 58, 30, 0, 36, 60, 96, 62, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Bass"), Params(70, 70, 70, 40, 20, -45, -50, -55, -55, -55)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Treble"), Params(-50, -50, -50, -25, 15, 55, 80, 80, 80, 85)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Bass + Treble"), Params(35, 30, 0, -40, -25, 10, 45, 55, 60, 60)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Laptop/Headphones"), Params(25, 50, 25, -20, 0, -30, -40, -40, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Large Hall"), Params(50, 50, 30, 30, 0, -25, -25, -25, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Live"), Params(-25, 0, 20, 25, 30, 30, 20, 15, 15, 10)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Party"), Params(35, 35, 0, 0, 0, 0, 0, 0, 35, 35)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Pop"), Params(-10, 25, 35, 40, 25, -5, -15, -15, -10, -10)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Dubstep"), + Params(0, 36, 85, 58, 30, 0, 36, 60, 96, 62, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Bass"), + Params(70, 70, 70, 40, 20, -45, -50, -55, -55, -55)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Treble"), + Params(-50, -50, -50, -25, 15, 55, 80, 80, 80, 85)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Full Bass + Treble"), + Params(35, 30, 0, -40, -25, 10, 45, 55, 60, 60)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Laptop/Headphones"), + Params(25, 50, 25, -20, 0, -30, -40, -40, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Large Hall"), + Params(50, 50, 30, 30, 0, -25, -25, -25, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Live"), + Params(-25, 0, 20, 25, 30, 30, 20, 15, 15, 10)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Party"), + Params(35, 35, 0, 0, 0, 0, 0, 0, 35, 35)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Pop"), + Params(-10, 25, 35, 40, 25, -5, -15, -15, -10, -10)); // Psychedelic equalizer created by Devyn Collier Johnson - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Psychedelic"), Params(100, 100, 0, 40, 0, 67, 79, 0, 30, -100, 37)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Reggae"), Params(0, 0, -5, -30, 0, -35, -35, 0, 0, 0)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Rock"), Params(40, 25, -30, -40, -20, 20, 45, 55, 55, 55)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Soft"), Params(25, 10, -5, -15, -5, 20, 45, 50, 55, 60)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Ska"), Params(-15, -25, -25, -5, 20, 30, 45, 50, 55, 50)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Soft Rock"), Params(20, 20, 10, -5, -25, -30, -20, -5, 15, 45)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Techno"), Params(40, 30, 0, -30, -25, 0, 40, 50, 50, 45)); - AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Zero"), Params(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Psychedelic"), + Params(100, 100, 0, 40, 0, 67, 79, 0, 30, -100, 37)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Reggae"), + Params(0, 0, -5, -30, 0, -35, -35, 0, 0, 0)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Rock"), + Params(40, 25, -30, -40, -20, 20, 45, 55, 55, 55)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Soft"), + Params(25, 10, -5, -15, -5, 20, 45, 50, 55, 60)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Ska"), + Params(-15, -25, -25, -5, 20, 30, 45, 50, 55, 50)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Soft Rock"), + Params(20, 20, 10, -5, -25, -30, -20, -5, 15, 45)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Techno"), + Params(40, 30, 0, -30, -25, 0, 40, 50, 50, 45)); + AddPreset(QT_TRANSLATE_NOOP("Equalizer", "Zero"), + Params(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)); } void Equalizer::AddPreset(const QString& name, const Params& params) { QString name_displayed = tr(qPrintable(name)); presets_[name] = params; if (ui_->preset->findText(name_displayed) == -1) { - ui_->preset->addItem(name_displayed, // name to display (translated) - QVariant(name) // original name - ); + ui_->preset->addItem(name_displayed, // name to display (translated) + QVariant(name) // original name + ); } } @@ -162,8 +179,7 @@ void Equalizer::PresetChanged(const QString& name) { loading_ = true; preamp_->set_value(p.preamp); - for (int i=0 ; iset_value(p.gain[i]); + for (int i = 0; i < kBands; ++i) gain_[i]->set_value(p.gain[i]); loading_ = false; ParametersChanged(); @@ -179,11 +195,11 @@ void Equalizer::SavePreset() { } QString Equalizer::SaveCurrentPreset() { - QString name = QInputDialog::getText(this, tr("Save preset"), tr("Name"), - QLineEdit::Normal, - tr(qPrintable(last_preset_)));; - if (name.isEmpty()) - return QString(); + QString name = + QInputDialog::getText(this, tr("Save preset"), tr("Name"), + QLineEdit::Normal, tr(qPrintable(last_preset_))); + ; + if (name.isEmpty()) return QString(); AddPreset(name, current_params()); Save(); @@ -193,23 +209,22 @@ QString Equalizer::SaveCurrentPreset() { void Equalizer::DelPreset() { QString name = ui_->preset->itemData(ui_->preset->currentIndex()).toString(); QString name_displayed = ui_->preset->currentText(); - if (!presets_.contains(name) || name.isEmpty()) - return; + if (!presets_.contains(name) || name.isEmpty()) return; int ret = QMessageBox::question( this, tr("Delete preset"), - tr("Are you sure you want to delete the \"%1\" preset?").arg(name_displayed), + tr("Are you sure you want to delete the \"%1\" preset?") + .arg(name_displayed), QMessageBox::Yes, QMessageBox::No); - if (ret == QMessageBox::No) - return; + if (ret == QMessageBox::No) return; presets_.remove(name); ui_->preset->removeItem(ui_->preset->currentIndex()); Save(); } -EqualizerSlider* Equalizer::AddSlider(const QString &label) { +EqualizerSlider* Equalizer::AddSlider(const QString& label) { EqualizerSlider* ret = new EqualizerSlider(label, ui_->slider_container); ui_->slider_container->layout()->addWidget(ret); connect(ret, SIGNAL(ValueChanged(int)), SLOT(ParametersChanged())); @@ -217,17 +232,13 @@ EqualizerSlider* Equalizer::AddSlider(const QString &label) { return ret; } -bool Equalizer::is_enabled() const { - return ui_->enable->isChecked(); -} +bool Equalizer::is_enabled() const { return ui_->enable->isChecked(); } -int Equalizer::preamp_value() const { - return preamp_->value(); -} +int Equalizer::preamp_value() const { return preamp_->value(); } QList Equalizer::gain_values() const { QList ret; - for (int i=0 ; ivalue(); } return ret; @@ -243,13 +254,11 @@ Equalizer::Params Equalizer::current_params() const { } float Equalizer::stereo_balance() const { - return qBound( - -1.0f, ui_->balance_slider->value() / 100.0f, 1.0f); + return qBound(-1.0f, ui_->balance_slider->value() / 100.0f, 1.0f); } void Equalizer::ParametersChanged() { - if (loading_) - return; + if (loading_) return; emit ParametersChanged(preamp_value(), gain_values()); } @@ -260,8 +269,8 @@ void Equalizer::Save() { // Presets s.beginWriteArray("presets", presets_.count()); - int i=0; - foreach (const QString& name, presets_.keys()) { + int i = 0; + for (const QString& name : presets_.keys()) { s.setArrayIndex(i++); s.setValue("name", name); s.setValue("params", QVariant::fromValue(presets_[name])); @@ -270,7 +279,7 @@ void Equalizer::Save() { // Selected preset s.setValue("selected_preset", - ui_->preset->itemData(ui_->preset->currentIndex()).toString()); + ui_->preset->itemData(ui_->preset->currentIndex()).toString()); // Enabled? s.setValue("enabled", ui_->enable->isChecked()); @@ -280,41 +289,42 @@ void Equalizer::Save() { void Equalizer::closeEvent(QCloseEvent* e) { QString name = ui_->preset->currentText(); - if (!presets_.contains(name)) - return; + if (!presets_.contains(name)) return; - if (presets_[name] == current_params()) - return; + if (presets_[name] == current_params()) return; SavePreset(); } - -Equalizer::Params::Params() - : preamp(0) -{ - for (int i=0 ; i>(QDataStream& s, Equalizer::Params& p) { +QDataStream& operator>>(QDataStream& s, Equalizer::Params& p) { s >> p.preamp; - for (int i=0 ; i> p.gain[i]; + for (int i = 0; i < Equalizer::kBands; ++i) s >> p.gain[i]; return s; } diff --git a/src/ui/equalizer.h b/src/ui/equalizer.h index 6e3eb0d9e..1fb7befc2 100644 --- a/src/ui/equalizer.h +++ b/src/ui/equalizer.h @@ -29,7 +29,7 @@ class Equalizer : public QDialog { Q_OBJECT public: - Equalizer(QWidget *parent = 0); + Equalizer(QWidget* parent = nullptr); ~Equalizer(); static const int kBands = 10; @@ -41,8 +41,8 @@ class Equalizer : public QDialog { Params(int g0, int g1, int g2, int g3, int g4, int g5, int g6, int g7, int g8, int g9, int pre = 0); - bool operator ==(const Params& other) const; - bool operator !=(const Params& other) const; + bool operator==(const Params& other) const; + bool operator!=(const Params& other) const; int preamp; int gain[kBands]; @@ -54,13 +54,13 @@ class Equalizer : public QDialog { Params current_params() const; float stereo_balance() const; - signals: +signals: void EnabledChanged(bool enabled); void ParametersChanged(int preamp, const QList& band_gains); void StereoBalanceChanged(float balance); protected: - void closeEvent(QCloseEvent *); + void closeEvent(QCloseEvent*); private slots: void ParametersChanged(); @@ -91,7 +91,7 @@ class Equalizer : public QDialog { }; Q_DECLARE_METATYPE(Equalizer::Params); -QDataStream &operator<<(QDataStream& s, const Equalizer::Params& p); -QDataStream &operator>>(QDataStream& s, Equalizer::Params& p); +QDataStream& operator<<(QDataStream& s, const Equalizer::Params& p); +QDataStream& operator>>(QDataStream& s, Equalizer::Params& p); -#endif // EQUALIZER_H +#endif // EQUALIZER_H diff --git a/src/ui/flowlayout.cpp b/src/ui/flowlayout.cpp index dc4bb0cc9..cccb1a1c4 100644 --- a/src/ui/flowlayout.cpp +++ b/src/ui/flowlayout.cpp @@ -42,172 +42,141 @@ #include "flowlayout.h" //! [1] -FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing) - : QLayout(parent), m_hSpace(hSpacing), m_vSpace(vSpacing) -{ - setContentsMargins(margin, margin, margin, margin); +FlowLayout::FlowLayout(QWidget* parent, int margin, int hSpacing, int vSpacing) + : QLayout(parent), m_hSpace(hSpacing), m_vSpace(vSpacing) { + setContentsMargins(margin, margin, margin, margin); } FlowLayout::FlowLayout(int margin, int hSpacing, int vSpacing) - : m_hSpace(hSpacing), m_vSpace(vSpacing) -{ - setContentsMargins(margin, margin, margin, margin); + : m_hSpace(hSpacing), m_vSpace(vSpacing) { + setContentsMargins(margin, margin, margin, margin); } //! [1] //! [2] -FlowLayout::~FlowLayout() -{ - QLayoutItem *item; - while ((item = takeAt(0))) - delete item; +FlowLayout::~FlowLayout() { + QLayoutItem* item; + while ((item = takeAt(0))) delete item; } //! [2] //! [3] -void FlowLayout::addItem(QLayoutItem *item) -{ - itemList.append(item); -} +void FlowLayout::addItem(QLayoutItem* item) { itemList.append(item); } //! [3] //! [4] -int FlowLayout::horizontalSpacing() const -{ - if (m_hSpace >= 0) { - return m_hSpace; - } else { - return smartSpacing(QStyle::PM_LayoutHorizontalSpacing); - } +int FlowLayout::horizontalSpacing() const { + if (m_hSpace >= 0) { + return m_hSpace; + } else { + return smartSpacing(QStyle::PM_LayoutHorizontalSpacing); + } } -int FlowLayout::verticalSpacing() const -{ - if (m_vSpace >= 0) { - return m_vSpace; - } else { - return smartSpacing(QStyle::PM_LayoutVerticalSpacing); - } +int FlowLayout::verticalSpacing() const { + if (m_vSpace >= 0) { + return m_vSpace; + } else { + return smartSpacing(QStyle::PM_LayoutVerticalSpacing); + } } //! [4] //! [5] -int FlowLayout::count() const -{ - return itemList.size(); +int FlowLayout::count() const { return itemList.size(); } + +QLayoutItem* FlowLayout::itemAt(int index) const { + return itemList.value(index); } -QLayoutItem *FlowLayout::itemAt(int index) const -{ - return itemList.value(index); -} - -QLayoutItem *FlowLayout::takeAt(int index) -{ - if (index >= 0 && index < itemList.size()) - return itemList.takeAt(index); - else - return 0; +QLayoutItem* FlowLayout::takeAt(int index) { + if (index >= 0 && index < itemList.size()) + return itemList.takeAt(index); + else + return 0; } //! [5] //! [6] -Qt::Orientations FlowLayout::expandingDirections() const -{ - return 0; -} +Qt::Orientations FlowLayout::expandingDirections() const { return 0; } //! [6] //! [7] -bool FlowLayout::hasHeightForWidth() const -{ - return true; -} +bool FlowLayout::hasHeightForWidth() const { return true; } -int FlowLayout::heightForWidth(int width) const -{ - int height = doLayout(QRect(0, 0, width, 0), true); - return height; +int FlowLayout::heightForWidth(int width) const { + int height = doLayout(QRect(0, 0, width, 0), true); + return height; } //! [7] //! [8] -void FlowLayout::setGeometry(const QRect &rect) -{ - QLayout::setGeometry(rect); - doLayout(rect, false); +void FlowLayout::setGeometry(const QRect& rect) { + QLayout::setGeometry(rect); + doLayout(rect, false); } -QSize FlowLayout::sizeHint() const -{ - return minimumSize(); -} +QSize FlowLayout::sizeHint() const { return minimumSize(); } -QSize FlowLayout::minimumSize() const -{ - QSize size; - QLayoutItem *item; - foreach (item, itemList) - size = size.expandedTo(item->minimumSize()); +QSize FlowLayout::minimumSize() const { + QSize size; + for (QLayoutItem* item : itemList) + size = size.expandedTo(item->minimumSize()); - size += QSize(2*margin(), 2*margin()); - return size; + size += QSize(2 * margin(), 2 * margin()); + return size; } //! [8] //! [9] -int FlowLayout::doLayout(const QRect &rect, bool testOnly) const -{ - int left, top, right, bottom; - getContentsMargins(&left, &top, &right, &bottom); - QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom); - int x = effectiveRect.x(); - int y = effectiveRect.y(); - int lineHeight = 0; -//! [9] +int FlowLayout::doLayout(const QRect& rect, bool testOnly) const { + int left, top, right, bottom; + getContentsMargins(&left, &top, &right, &bottom); + QRect effectiveRect = rect.adjusted(+left, +top, -right, -bottom); + int x = effectiveRect.x(); + int y = effectiveRect.y(); + int lineHeight = 0; + //! [9] -//! [10] - QLayoutItem *item; - foreach (item, itemList) { - QWidget *wid = item->widget(); - int spaceX = horizontalSpacing(); - if (spaceX == -1) - spaceX = wid->style()->layoutSpacing( - QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Horizontal); - int spaceY = verticalSpacing(); - if (spaceY == -1) - spaceY = wid->style()->layoutSpacing( - QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Vertical); -//! [10] -//! [11] - int nextX = x + item->sizeHint().width() + spaceX; - if (nextX - spaceX > effectiveRect.right() && lineHeight > 0) { - x = effectiveRect.x(); - y = y + lineHeight + spaceY; - nextX = x + item->sizeHint().width() + spaceX; - lineHeight = 0; - } - - if (!testOnly) - item->setGeometry(QRect(QPoint(x, y), item->sizeHint())); - - x = nextX; - lineHeight = qMax(lineHeight, item->sizeHint().height()); + //! [10] + for (QLayoutItem* item : itemList) { + QWidget* wid = item->widget(); + int spaceX = horizontalSpacing(); + if (spaceX == -1) + spaceX = wid->style()->layoutSpacing( + QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Horizontal); + int spaceY = verticalSpacing(); + if (spaceY == -1) + spaceY = wid->style()->layoutSpacing( + QSizePolicy::PushButton, QSizePolicy::PushButton, Qt::Vertical); + //! [10] + //! [11] + int nextX = x + item->sizeHint().width() + spaceX; + if (nextX - spaceX > effectiveRect.right() && lineHeight > 0) { + x = effectiveRect.x(); + y = y + lineHeight + spaceY; + nextX = x + item->sizeHint().width() + spaceX; + lineHeight = 0; } - return y + lineHeight - rect.y() + bottom; + + if (!testOnly) item->setGeometry(QRect(QPoint(x, y), item->sizeHint())); + + x = nextX; + lineHeight = qMax(lineHeight, item->sizeHint().height()); + } + return y + lineHeight - rect.y() + bottom; } //! [11] //! [12] -int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const -{ - QObject *parent = this->parent(); - if (!parent) { - return -1; - } else if (parent->isWidgetType()) { - QWidget *pw = static_cast(parent); - return pw->style()->pixelMetric(pm, 0, pw); - } else { - return static_cast(parent)->spacing(); - } +int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const { + QObject* parent = this->parent(); + if (!parent) { + return -1; + } else if (parent->isWidgetType()) { + QWidget* pw = static_cast(parent); + return pw->style()->pixelMetric(pm, 0, pw); + } else { + return static_cast(parent)->spacing(); + } } //! [12] diff --git a/src/ui/flowlayout.h b/src/ui/flowlayout.h index b7a5848b2..a7ac39925 100644 --- a/src/ui/flowlayout.h +++ b/src/ui/flowlayout.h @@ -46,33 +46,33 @@ #include #include //! [0] -class FlowLayout : public QLayout -{ -public: - FlowLayout(QWidget *parent, int margin = -1, int hSpacing = -1, int vSpacing = -1); - FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1); - ~FlowLayout(); +class FlowLayout : public QLayout { + public: + FlowLayout(QWidget* parent, int margin = -1, int hSpacing = -1, + int vSpacing = -1); + FlowLayout(int margin = -1, int hSpacing = -1, int vSpacing = -1); + ~FlowLayout(); - void addItem(QLayoutItem *item); - int horizontalSpacing() const; - int verticalSpacing() const; - Qt::Orientations expandingDirections() const; - bool hasHeightForWidth() const; - int heightForWidth(int) const; - int count() const; - QLayoutItem *itemAt(int index) const; - QSize minimumSize() const; - void setGeometry(const QRect &rect); - QSize sizeHint() const; - QLayoutItem *takeAt(int index); + void addItem(QLayoutItem* item); + int horizontalSpacing() const; + int verticalSpacing() const; + Qt::Orientations expandingDirections() const; + bool hasHeightForWidth() const; + int heightForWidth(int) const; + int count() const; + QLayoutItem* itemAt(int index) const; + QSize minimumSize() const; + void setGeometry(const QRect& rect); + QSize sizeHint() const; + QLayoutItem* takeAt(int index); -private: - int doLayout(const QRect &rect, bool testOnly) const; - int smartSpacing(QStyle::PixelMetric pm) const; + private: + int doLayout(const QRect& rect, bool testOnly) const; + int smartSpacing(QStyle::PixelMetric pm) const; - QList itemList; - int m_hSpace; - int m_vSpace; + QList itemList; + int m_hSpace; + int m_vSpace; }; //! [0] diff --git a/src/ui/globalshortcutgrabber.cpp b/src/ui/globalshortcutgrabber.cpp index 8cba96390..b7dbe5ecf 100644 --- a/src/ui/globalshortcutgrabber.cpp +++ b/src/ui/globalshortcutgrabber.cpp @@ -21,28 +21,23 @@ #include #include -GlobalShortcutGrabber::GlobalShortcutGrabber(QWidget *parent) - : QDialog(parent), - ui_(new Ui::GlobalShortcutGrabber) -{ +GlobalShortcutGrabber::GlobalShortcutGrabber(QWidget* parent) + : QDialog(parent), ui_(new Ui::GlobalShortcutGrabber) { ui_->setupUi(this); modifier_keys_ << Qt::Key_Shift << Qt::Key_Control << Qt::Key_Meta << Qt::Key_Alt << Qt::Key_AltGr; } -GlobalShortcutGrabber::~GlobalShortcutGrabber() { - delete ui_; -} +GlobalShortcutGrabber::~GlobalShortcutGrabber() { delete ui_; } -QKeySequence GlobalShortcutGrabber::GetKey(const QString &name) { +QKeySequence GlobalShortcutGrabber::GetKey(const QString& name) { ui_->label->setText(tr("Press a key combination to use for %1...").arg(name)); ui_->combo->clear(); ret_ = QKeySequence(); - if (exec() == QDialog::Rejected) - return QKeySequence(); + if (exec() == QDialog::Rejected) return QKeySequence(); return ret_; } @@ -81,8 +76,7 @@ bool GlobalShortcutGrabber::event(QEvent* e) { UpdateText(); - if (!modifier_keys_.contains(ke->key())) - accept(); + if (!modifier_keys_.contains(ke->key())) accept(); return true; } return QDialog::event(e); @@ -91,5 +85,3 @@ bool GlobalShortcutGrabber::event(QEvent* e) { void GlobalShortcutGrabber::UpdateText() { ui_->combo->setText("" + ret_.toString(QKeySequence::NativeText) + ""); } - - diff --git a/src/ui/globalshortcutgrabber.h b/src/ui/globalshortcutgrabber.h index 6f088860c..180685fb5 100644 --- a/src/ui/globalshortcutgrabber.h +++ b/src/ui/globalshortcutgrabber.h @@ -33,15 +33,15 @@ class GlobalShortcutGrabber : public QDialog { Q_OBJECT public: - GlobalShortcutGrabber(QWidget* parent = 0); + GlobalShortcutGrabber(QWidget* parent = nullptr); ~GlobalShortcutGrabber(); QKeySequence GetKey(const QString& name); protected: - bool event(QEvent *); - void showEvent(QShowEvent *); - void hideEvent(QHideEvent *); + bool event(QEvent*); + void showEvent(QShowEvent*); + void hideEvent(QHideEvent*); void grabKeyboard(); void releaseKeyboard(); @@ -59,4 +59,4 @@ class GlobalShortcutGrabber : public QDialog { MacMonitorWrapper* wrapper_; }; -#endif // GLOBALSHORTCUTGRABBER_H +#endif // GLOBALSHORTCUTGRABBER_H diff --git a/src/ui/globalshortcutgrabber.mm b/src/ui/globalshortcutgrabber.mm index 0fe26dd45..873bf9ac7 100644 --- a/src/ui/globalshortcutgrabber.mm +++ b/src/ui/globalshortcutgrabber.mm @@ -24,11 +24,9 @@ #include -#include - #import "core/mac_utilities.h" -class MacMonitorWrapper : boost::noncopyable { +class MacMonitorWrapper { public: explicit MacMonitorWrapper(id monitor) : local_monitor_(monitor) {} @@ -36,6 +34,7 @@ class MacMonitorWrapper : boost::noncopyable { private: id local_monitor_; + Q_DISABLE_COPY(MacMonitorWrapper); }; bool GlobalShortcutGrabber::HandleMacEvent(NSEvent* event) { diff --git a/src/ui/globalshortcutssettingspage.cpp b/src/ui/globalshortcutssettingspage.cpp index 45e63ed57..8217594a0 100644 --- a/src/ui/globalshortcutssettingspage.cpp +++ b/src/ui/globalshortcutssettingspage.cpp @@ -33,11 +33,10 @@ #include GlobalShortcutsSettingsPage::GlobalShortcutsSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_GlobalShortcutsSettingsPage), - initialised_(false), - grabber_(new GlobalShortcutGrabber) -{ + : SettingsPage(dialog), + ui_(new Ui_GlobalShortcutsSettingsPage), + initialised_(false), + grabber_(new GlobalShortcutGrabber) { ui_->setupUi(this); ui_->shortcut_options->setEnabled(false); ui_->list->header()->setResizeMode(QHeaderView::ResizeToContents); @@ -45,17 +44,18 @@ GlobalShortcutsSettingsPage::GlobalShortcutsSettingsPage(SettingsDialog* dialog) settings_.beginGroup(GlobalShortcuts::kSettingsGroup); - connect(ui_->list, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(ItemClicked(QTreeWidgetItem*))); + connect(ui_->list, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), + SLOT(ItemClicked(QTreeWidgetItem*))); connect(ui_->radio_none, SIGNAL(clicked()), SLOT(NoneClicked())); connect(ui_->radio_default, SIGNAL(clicked()), SLOT(DefaultClicked())); connect(ui_->radio_custom, SIGNAL(clicked()), SLOT(ChangeClicked())); connect(ui_->change, SIGNAL(clicked()), SLOT(ChangeClicked())); - connect(ui_->gnome_open, SIGNAL(clicked()), SLOT(OpenGnomeKeybindingProperties())); + connect(ui_->gnome_open, SIGNAL(clicked()), + SLOT(OpenGnomeKeybindingProperties())); } -GlobalShortcutsSettingsPage::~GlobalShortcutsSettingsPage() { - delete ui_; -} +GlobalShortcutsSettingsPage::~GlobalShortcutsSettingsPage() { delete ui_; } bool GlobalShortcutsSettingsPage::IsEnabled() const { #ifdef Q_OS_MAC @@ -74,19 +74,21 @@ void GlobalShortcutsSettingsPage::Load() { if (!initialised_) { initialised_ = true; - connect(ui_->mac_open, SIGNAL(clicked()), manager, SLOT(ShowMacAccessibilityDialog())); + connect(ui_->mac_open, SIGNAL(clicked()), manager, + SLOT(ShowMacAccessibilityDialog())); if (!manager->IsGsdAvailable()) { ui_->gnome_container->hide(); } - foreach (const GlobalShortcuts::Shortcut& s, manager->shortcuts().values()) { + for (const GlobalShortcuts::Shortcut& s : manager->shortcuts().values()) { Shortcut shortcut; shortcut.s = s; shortcut.key = s.action->shortcut(); - shortcut.item = new QTreeWidgetItem(ui_->list, - QStringList() << s.action->text() - << s.action->shortcut().toString(QKeySequence::NativeText)); + shortcut.item = new QTreeWidgetItem( + ui_->list, QStringList() << s.action->text() + << s.action->shortcut().toString( + QKeySequence::NativeText)); shortcut.item->setData(0, Qt::UserRole, s.id); shortcuts_[s.id] = shortcut; } @@ -95,7 +97,7 @@ void GlobalShortcutsSettingsPage::Load() { ItemClicked(ui_->list->topLevelItem(0)); } - foreach (const Shortcut& s, shortcuts_.values()) { + for (const Shortcut& s : shortcuts_.values()) { SetShortcut(s.s.id, s.s.action->shortcut()); } @@ -105,9 +107,15 @@ void GlobalShortcutsSettingsPage::Load() { } ui_->mac_container->setVisible(!manager->IsMacAccessibilityEnabled()); +#ifdef Q_OS_DARWIN + qint32 mac_version = Utilities::GetMacVersion(); + ui_->mac_label->setVisible(mac_version < 9); + ui_->mac_label_mavericks->setVisible(mac_version >= 9); +#endif // Q_OS_DARWIN } -void GlobalShortcutsSettingsPage::SetShortcut(const QString& id, const QKeySequence& key) { +void GlobalShortcutsSettingsPage::SetShortcut(const QString& id, + const QKeySequence& key) { Shortcut& shortcut = shortcuts_[id]; shortcut.key = key; @@ -115,7 +123,7 @@ void GlobalShortcutsSettingsPage::SetShortcut(const QString& id, const QKeySeque } void GlobalShortcutsSettingsPage::Save() { - foreach (const Shortcut& s, shortcuts_.values()) { + for (const Shortcut& s : shortcuts_.values()) { s.s.action->setShortcut(s.key); s.s.shortcut->setKey(s.key); settings_.setValue(s.s.id, s.key.toString()); @@ -132,7 +140,8 @@ void GlobalShortcutsSettingsPage::ItemClicked(QTreeWidgetItem* item) { // Enable options ui_->shortcut_options->setEnabled(true); - ui_->shortcut_options->setTitle(tr("Shortcut for %1").arg(shortcut.s.action->text())); + ui_->shortcut_options->setTitle( + tr("Shortcut for %1").arg(shortcut.s.action->text())); if (shortcut.key == shortcut.s.default_key) ui_->radio_default->setChecked(true); @@ -156,13 +165,11 @@ void GlobalShortcutsSettingsPage::ChangeClicked() { QKeySequence key = grabber_->GetKey(shortcuts_[current_id_].s.action->text()); manager->Register(); - if (key.isEmpty()) - return; + if (key.isEmpty()) return; // Check if this key sequence is used by any other actions - foreach (const QString& id, shortcuts_.keys()) { - if (shortcuts_[id].key == key) - SetShortcut(id, QKeySequence()); + for (const QString& id : shortcuts_.keys()) { + if (shortcuts_[id].key == key) SetShortcut(id, QKeySequence()); } ui_->radio_custom->setChecked(true); @@ -171,11 +178,11 @@ void GlobalShortcutsSettingsPage::ChangeClicked() { void GlobalShortcutsSettingsPage::OpenGnomeKeybindingProperties() { if (!QProcess::startDetached("gnome-keybinding-properties")) { - if (!QProcess::startDetached("gnome-control-center", - QStringList() << "keyboard")) { + if (!QProcess::startDetached("gnome-control-center", QStringList() + << "keyboard")) { QMessageBox::warning(this, "Error", - tr("The \"%1\" command could not be started.") - .arg("gnome-keybinding-properties")); + tr("The \"%1\" command could not be started.") + .arg("gnome-keybinding-properties")); } } } diff --git a/src/ui/globalshortcutssettingspage.h b/src/ui/globalshortcutssettingspage.h index dd830ee74..1a23c5d30 100644 --- a/src/ui/globalshortcutssettingspage.h +++ b/src/ui/globalshortcutssettingspage.h @@ -18,11 +18,11 @@ #ifndef GLOBALSHORTCUTSSETTINGSPAGE_H #define GLOBALSHORTCUTSSETTINGSPAGE_H +#include + #include #include -#include - #include "core/globalshortcuts.h" #include "ui/settingspage.h" @@ -32,9 +32,9 @@ class Ui_GlobalShortcutsSettingsPage; class GlobalShortcutGrabber; class GlobalShortcutsSettingsPage : public SettingsPage { - Q_OBJECT + Q_OBJECT -public: + public: GlobalShortcutsSettingsPage(SettingsDialog* dialog); ~GlobalShortcutsSettingsPage(); @@ -43,7 +43,7 @@ public: void Load(); void Save(); -private slots: + private slots: void ItemClicked(QTreeWidgetItem*); void NoneClicked(); void DefaultClicked(); @@ -51,7 +51,7 @@ private slots: void OpenGnomeKeybindingProperties(); -private: + private: struct Shortcut { GlobalShortcuts::Shortcut s; QKeySequence key; @@ -60,11 +60,11 @@ private: void SetShortcut(const QString& id, const QKeySequence& key); -private: + private: Ui_GlobalShortcutsSettingsPage* ui_; bool initialised_; - boost::scoped_ptr grabber_; + std::unique_ptr grabber_; QSettings settings_; QMap shortcuts_; @@ -72,4 +72,4 @@ private: QString current_id_; }; -#endif // GLOBALSHORTCUTSSETTINGSPAGE_H +#endif // GLOBALSHORTCUTSSETTINGSPAGE_H diff --git a/src/ui/globalshortcutssettingspage.ui b/src/ui/globalshortcutssettingspage.ui index 8c2b975c6..4bd0a03d4 100644 --- a/src/ui/globalshortcutssettingspage.ui +++ b/src/ui/globalshortcutssettingspage.ui @@ -72,6 +72,22 @@ + + + + + 0 + 0 + + + + You need to launch System Preferences and allow Clementine to "<span style="font-style:italic">control your computer</span>" to use global shortcuts in Clementine. + + + true + + + @@ -98,7 +114,7 @@ - Name + Name diff --git a/src/ui/iconloader.cpp b/src/ui/iconloader.cpp index a114af07a..7f0422a88 100644 --- a/src/ui/iconloader.cpp +++ b/src/ui/iconloader.cpp @@ -28,29 +28,25 @@ void IconLoader::Init() { sizes_ << 22 << 32 << 48; } -QIcon IconLoader::Load(const QString &name) { +QIcon IconLoader::Load(const QString& name) { QIcon ret; - if (name.isEmpty()) - return ret; + if (name.isEmpty()) return ret; #if QT_VERSION >= 0x040600 // Try to load it from the theme initially ret = QIcon::fromTheme(name); - if (!ret.isNull()) - return ret; + if (!ret.isNull()) return ret; #endif // Otherwise use our fallback theme const QString path(":/icons/%1x%2/%3.png"); - foreach (int size, sizes_) { + for (int size : sizes_) { QString filename(path.arg(size).arg(size).arg(name)); - if (QFile::exists(filename)) - ret.addFile(filename, QSize(size, size)); + if (QFile::exists(filename)) ret.addFile(filename, QSize(size, size)); } - if (ret.isNull()) - qLog(Warning) << "Couldn't load icon" << name; + if (ret.isNull()) qLog(Warning) << "Couldn't load icon" << name; return ret; } diff --git a/src/ui/iconloader.h b/src/ui/iconloader.h index f81f7a483..01b499a59 100644 --- a/src/ui/iconloader.h +++ b/src/ui/iconloader.h @@ -21,14 +21,14 @@ #include class IconLoader { -public: + public: static void Init(); static QIcon Load(const QString& name); -private: + private: IconLoader() {} static QList sizes_; }; -#endif // ICONLOADER_H +#endif // ICONLOADER_H diff --git a/src/ui/macscreensaver.cpp b/src/ui/macscreensaver.cpp index 41337df77..67b8fd7f6 100644 --- a/src/ui/macscreensaver.cpp +++ b/src/ui/macscreensaver.cpp @@ -24,22 +24,16 @@ // kIOPMAssertionTypePreventUserIdleDisplaySleep from Lion. #define kLionDisplayAssertion CFSTR("PreventUserIdleDisplaySleep") -MacScreensaver::MacScreensaver() - : assertion_id_(0) { -} +MacScreensaver::MacScreensaver() : assertion_id_(0) {} void MacScreensaver::Inhibit() { CFStringRef assertion_type = (Utilities::GetMacVersion() >= 7) - ? kLionDisplayAssertion - : kIOPMAssertionTypeNoDisplaySleep; + ? kLionDisplayAssertion + : kIOPMAssertionTypeNoDisplaySleep; IOPMAssertionCreateWithName( - assertion_type, - kIOPMAssertionLevelOn, - CFSTR("Showing full-screen Clementine visualisations"), - &assertion_id_); + assertion_type, kIOPMAssertionLevelOn, + CFSTR("Showing full-screen Clementine visualisations"), &assertion_id_); } -void MacScreensaver::Uninhibit() { - IOPMAssertionRelease(assertion_id_); -} +void MacScreensaver::Uninhibit() { IOPMAssertionRelease(assertion_id_); } diff --git a/src/ui/macsystemtrayicon.h b/src/ui/macsystemtrayicon.h index 154473bd7..a3c61502d 100644 --- a/src/ui/macsystemtrayicon.h +++ b/src/ui/macsystemtrayicon.h @@ -18,42 +18,41 @@ #ifndef MACSYSTEMTRAYICON_H #define MACSYSTEMTRAYICON_H -#include "systemtrayicon.h" +#include -#include -#include +#include "systemtrayicon.h" class MacSystemTrayIconPrivate; -class MacSystemTrayIcon : public SystemTrayIcon, boost::noncopyable { +class MacSystemTrayIcon : public SystemTrayIcon { Q_OBJECT -public: - MacSystemTrayIcon(QObject* parent = 0); + public: + MacSystemTrayIcon(QObject* parent = nullptr); ~MacSystemTrayIcon(); void SetupMenu(QAction* previous, QAction* play, QAction* stop, QAction* stop_after, QAction* next, QAction* mute, - QAction* love, QAction* ban, QAction* quit); + QAction* love, QAction* quit); void SetNowPlaying(const Song& song, const QString& image_path); void ClearNowPlaying(); -private: + private: void SetupMenuItem(QAction* action); -private slots: + private slots: void ActionChanged(); -protected: + protected: // SystemTrayIcon void UpdateIcon(); -private: + private: QPixmap orange_icon_; QPixmap grey_icon_; - - boost::scoped_ptr p_; + std::unique_ptr p_; + Q_DISABLE_COPY(MacSystemTrayIcon); }; -#endif // MACSYSTEMTRAYICON_H +#endif // MACSYSTEMTRAYICON_H diff --git a/src/ui/macsystemtrayicon.mm b/src/ui/macsystemtrayicon.mm index cc4695e1a..c2f309ab2 100644 --- a/src/ui/macsystemtrayicon.mm +++ b/src/ui/macsystemtrayicon.mm @@ -56,7 +56,7 @@ } @end -class MacSystemTrayIconPrivate : boost::noncopyable { +class MacSystemTrayIconPrivate { public: MacSystemTrayIconPrivate() { dock_menu_ = [[NSMenu alloc] initWithTitle:@"DockMenu"]; @@ -65,16 +65,16 @@ class MacSystemTrayIconPrivate : boost::noncopyable { NSString* t = [[NSString alloc] initWithUTF8String:title.toUtf8().constData()]; now_playing_ = - [[NSMenuItem alloc] initWithTitle:t action:NULL keyEquivalent:@""]; + [[NSMenuItem alloc] initWithTitle:t action:nullptr keyEquivalent:@""]; now_playing_artist_ = [[NSMenuItem alloc] initWithTitle:@"Nothing to see here" - action:NULL + action:nullptr keyEquivalent:@""]; now_playing_title_ = [[NSMenuItem alloc] initWithTitle:@"Nothing to see here" - action:NULL + action:nullptr keyEquivalent:@""]; [dock_menu_ insertItem:now_playing_title_ atIndex:0]; @@ -159,6 +159,8 @@ class MacSystemTrayIconPrivate : boost::noncopyable { NSMenuItem* now_playing_; NSMenuItem* now_playing_artist_; NSMenuItem* now_playing_title_; + + Q_DISABLE_COPY(MacSystemTrayIconPrivate); }; MacSystemTrayIcon::MacSystemTrayIcon(QObject* parent) @@ -175,7 +177,7 @@ MacSystemTrayIcon::~MacSystemTrayIcon() {} void MacSystemTrayIcon::SetupMenu(QAction* previous, QAction* play, QAction* stop, QAction* stop_after, QAction* next, QAction* mute, QAction* love, - QAction* ban, QAction* quit) { + QAction* quit) { p_.reset(new MacSystemTrayIconPrivate()); SetupMenuItem(previous); SetupMenuItem(play); @@ -186,7 +188,6 @@ void MacSystemTrayIcon::SetupMenu(QAction* previous, QAction* play, SetupMenuItem(mute); p_->AddSeparator(); SetupMenuItem(love); - SetupMenuItem(ban); Q_UNUSED(quit); // Mac already has a Quit item. } diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 327471255..963e53961 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -17,6 +17,32 @@ #include "mainwindow.h" #include "ui_mainwindow.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef Q_OS_WIN32 +#include +#endif + +#include + #include "core/appearance.h" #include "core/application.h" #include "core/backgroundstreams.h" @@ -102,108 +128,70 @@ #include "widgets/trackslider.h" #ifdef Q_OS_DARWIN -# include "ui/macsystemtrayicon.h" +#include "ui/macsystemtrayicon.h" #endif #ifdef HAVE_LIBLASTFM -# include "internet/lastfmservice.h" +#include "internet/lastfmservice.h" #endif #ifdef HAVE_WIIMOTEDEV -# include "wiimotedev/shortcuts.h" +#include "wiimotedev/shortcuts.h" #endif #ifdef ENABLE_VISUALISATIONS -# include "visualisations/visualisationcontainer.h" +#include "visualisations/visualisationcontainer.h" #endif #ifdef HAVE_MOODBAR -# include "moodbar/moodbarcontroller.h" -# include "moodbar/moodbarproxystyle.h" +#include "moodbar/moodbarcontroller.h" +#include "moodbar/moodbarproxystyle.h" #endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef Q_OS_WIN32 -# include +#ifdef HAVE_VK +#include "internet/vkservice.h" #endif - -#include - -#include - -using boost::shared_ptr; -using boost::scoped_ptr; - #ifdef Q_OS_DARWIN // Non exported mac-specific function. void qt_mac_set_dock_menu(QMenu*); #endif const char* MainWindow::kSettingsGroup = "MainWindow"; -const char* MainWindow::kAllFilesFilterSpec = - QT_TR_NOOP("All Files (*)"); +const char* MainWindow::kAllFilesFilterSpec = QT_TR_NOOP("All Files (*)"); -MainWindow::MainWindow(Application* app, - SystemTrayIcon* tray_icon, - OSD* osd, +MainWindow::MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd, QWidget* parent) - : QMainWindow(parent), - ui_(new Ui_MainWindow), - thumbbar_(new Windows7ThumbBar(this)), - app_(app), - tray_icon_(tray_icon), - osd_(osd), - global_shortcuts_(new GlobalShortcuts(this)), - remote_(NULL), - global_search_view_(new GlobalSearchView(app_, this)), - library_view_(new LibraryViewContainer(this)), - file_view_(new FileView(this)), - playlist_list_(new PlaylistListContainer(this)), - internet_view_(new InternetViewContainer(this)), - device_view_container_(new DeviceViewContainer(this)), - device_view_(device_view_container_->view()), - song_info_view_(new SongInfoView(this)), - artist_info_view_(new ArtistInfoView(this)), - settings_dialog_(NULL), - cover_manager_(NULL), - equalizer_(new Equalizer), - error_dialog_(NULL), - organise_dialog_(new OrganiseDialog(app_->task_manager())), - queue_manager_(NULL), -#ifdef ENABLE_VISUALISATIONS - visualisation_(NULL), -#endif -#ifdef HAVE_WIIMOTEDEV - wiimotedev_shortcuts_(NULL), -#endif - playlist_menu_(new QMenu(this)), - playlist_add_to_another_(NULL), - playlistitem_actions_separator_(NULL), - library_sort_model_(new QSortFilterProxyModel(this)), - track_position_timer_(new QTimer(this)), - was_maximized_(false), - saved_playback_position_(0), - saved_playback_state_(Engine::Empty), - doubleclick_addmode_(AddBehaviour_Append), - doubleclick_playmode_(PlayBehaviour_IfStopped), - menu_playmode_(PlayBehaviour_IfStopped) -{ + : QMainWindow(parent), + ui_(new Ui_MainWindow), + thumbbar_(new Windows7ThumbBar(this)), + app_(app), + tray_icon_(tray_icon), + osd_(osd), + global_shortcuts_(new GlobalShortcuts(this)), + remote_(nullptr), + global_search_view_(new GlobalSearchView(app_, this)), + library_view_(new LibraryViewContainer(this)), + file_view_(new FileView(this)), + playlist_list_(new PlaylistListContainer(this)), + internet_view_(new InternetViewContainer(this)), + device_view_container_(new DeviceViewContainer(this)), + device_view_(device_view_container_->view()), + song_info_view_(new SongInfoView(this)), + artist_info_view_(new ArtistInfoView(this)), + equalizer_(new Equalizer), + organise_dialog_(new OrganiseDialog(app_->task_manager())), + playlist_menu_(new QMenu(this)), + playlist_add_to_another_(nullptr), + playlistitem_actions_separator_(nullptr), + library_sort_model_(new QSortFilterProxyModel(this)), + track_position_timer_(new QTimer(this)), + was_maximized_(false), + saved_playback_position_(0), + saved_playback_state_(Engine::Empty), + doubleclick_addmode_(AddBehaviour_Append), + doubleclick_playmode_(PlayBehaviour_IfStopped), + menu_playmode_(PlayBehaviour_IfStopped) { qLog(Debug) << "Starting"; connect(app, SIGNAL(ErrorAdded(QString)), SLOT(ShowErrorDialog(QString))); @@ -234,18 +222,27 @@ MainWindow::MainWindow(Application* app, app_->global_search()->ReloadSettings(); global_search_view_->ReloadSettings(); - connect(global_search_view_, SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); + connect(global_search_view_, SIGNAL(AddToPlaylist(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); // Add tabs to the fancy tab widget - ui_->tabs->AddTab(global_search_view_, IconLoader::Load("search"), tr("Search")); - ui_->tabs->AddTab(library_view_, IconLoader::Load("folder-sound"), tr("Library")); + ui_->tabs->AddTab(global_search_view_, IconLoader::Load("search"), + tr("Search", "Global search settings dialog title.")); + ui_->tabs->AddTab(library_view_, IconLoader::Load("folder-sound"), + tr("Library")); ui_->tabs->AddTab(file_view_, IconLoader::Load("document-open"), tr("Files")); - ui_->tabs->AddTab(playlist_list_, IconLoader::Load("view-media-playlist"), tr("Playlists")); - ui_->tabs->AddTab(internet_view_, IconLoader::Load("applications-internet"), tr("Internet")); - ui_->tabs->AddTab(device_view_container_, IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Devices")); + ui_->tabs->AddTab(playlist_list_, IconLoader::Load("view-media-playlist"), + tr("Playlists")); + ui_->tabs->AddTab(internet_view_, IconLoader::Load("applications-internet"), + tr("Internet")); + ui_->tabs->AddTab(device_view_container_, + IconLoader::Load("multimedia-player-ipod-mini-blue"), + tr("Devices")); ui_->tabs->AddSpacer(); - ui_->tabs->AddTab(song_info_view_, IconLoader::Load("view-media-lyrics"), tr("Song info")); - ui_->tabs->AddTab(artist_info_view_, IconLoader::Load("x-clementine-artist"), tr("Artist info")); + ui_->tabs->AddTab(song_info_view_, IconLoader::Load("view-media-lyrics"), + tr("Song info")); + ui_->tabs->AddTab(artist_info_view_, IconLoader::Load("x-clementine-artist"), + tr("Artist info")); // Add the now playing widget to the fancy tab widget ui_->tabs->AddBottomWidget(ui_->now_playing); @@ -253,7 +250,8 @@ MainWindow::MainWindow(Application* app, ui_->tabs->SetBackgroundPixmap(QPixmap(":/sidebar_background.png")); track_position_timer_->setInterval(1000); - connect(track_position_timer_, SIGNAL(timeout()), SLOT(UpdateTrackPosition())); + connect(track_position_timer_, SIGNAL(timeout()), + SLOT(UpdateTrackPosition())); // Start initialising the player qLog(Debug) << "Initialising player"; @@ -269,7 +267,8 @@ MainWindow::MainWindow(Application* app, library_sort_model_->setSortLocaleAware(true); library_sort_model_->sort(0); - connect(ui_->playlist, SIGNAL(ViewSelectionModelChanged()), SLOT(PlaylistViewSelectionModelChanged())); + connect(ui_->playlist, SIGNAL(ViewSelectionModelChanged()), + SLOT(PlaylistViewSelectionModelChanged())); ui_->playlist->SetManager(app_->playlist_manager()); ui_->playlist->view()->SetApplication(app_); @@ -279,12 +278,14 @@ MainWindow::MainWindow(Application* app, device_view_->SetApplication(app_); playlist_list_->SetApplication(app_); - organise_dialog_->SetDestinationModel(app_->library()->model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library()->model()->directory_model()); // Icons qLog(Debug) << "Creating UI"; ui_->action_about->setIcon(IconLoader::Load("help-about")); - ui_->action_about_qt->setIcon(QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png")); + ui_->action_about_qt->setIcon( + QIcon(":/trolltech/qmessagebox/images/qtlogo-64.png")); ui_->action_add_file->setIcon(IconLoader::Load("document-open")); ui_->action_add_folder->setIcon(IconLoader::Load("document-open-folder")); ui_->action_add_stream->setIcon(IconLoader::Load("document-open-remote")); @@ -305,7 +306,8 @@ MainWindow::MainWindow(Application* app, ui_->action_shuffle->setIcon(IconLoader::Load("x-clementine-shuffle")); ui_->action_shuffle_mode->setIcon(IconLoader::Load("media-playlist-shuffle")); ui_->action_stop->setIcon(IconLoader::Load("media-playback-stop")); - ui_->action_stop_after_this_track->setIcon(IconLoader::Load("media-playback-stop")); + ui_->action_stop_after_this_track->setIcon( + IconLoader::Load("media-playback-stop")); ui_->action_new_playlist->setIcon(IconLoader::Load("document-new")); ui_->action_load_playlist->setIcon(IconLoader::Load("document-open")); ui_->action_save_playlist->setIcon(IconLoader::Load("document-save")); @@ -313,71 +315,104 @@ MainWindow::MainWindow(Application* app, ui_->action_rain->setIcon(IconLoader::Load("weather-showers-scattered")); // File view connections - connect(file_view_, SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); - connect(file_view_, SIGNAL(PathChanged(QString)), SLOT(FilePathChanged(QString))); - connect(file_view_, SIGNAL(CopyToLibrary(QList)), SLOT(CopyFilesToLibrary(QList))); - connect(file_view_, SIGNAL(MoveToLibrary(QList)), SLOT(MoveFilesToLibrary(QList))); - connect(file_view_, SIGNAL(EditTags(QList)), SLOT(EditFileTags(QList))); - connect(file_view_, SIGNAL(CopyToDevice(QList)), SLOT(CopyFilesToDevice(QList))); + connect(file_view_, SIGNAL(AddToPlaylist(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); + connect(file_view_, SIGNAL(PathChanged(QString)), + SLOT(FilePathChanged(QString))); + connect(file_view_, SIGNAL(CopyToLibrary(QList)), + SLOT(CopyFilesToLibrary(QList))); + connect(file_view_, SIGNAL(MoveToLibrary(QList)), + SLOT(MoveFilesToLibrary(QList))); + connect(file_view_, SIGNAL(EditTags(QList)), + SLOT(EditFileTags(QList))); + connect(file_view_, SIGNAL(CopyToDevice(QList)), + SLOT(CopyFilesToDevice(QList))); file_view_->SetTaskManager(app_->task_manager()); // Action connections - connect(ui_->action_next_track, SIGNAL(triggered()), app_->player(), SLOT(Next())); - connect(ui_->action_previous_track, SIGNAL(triggered()), app_->player(), SLOT(Previous())); - connect(ui_->action_play_pause, SIGNAL(triggered()), app_->player(), SLOT(PlayPause())); + connect(ui_->action_next_track, SIGNAL(triggered()), app_->player(), + SLOT(Next())); + connect(ui_->action_previous_track, SIGNAL(triggered()), app_->player(), + SLOT(Previous())); + connect(ui_->action_play_pause, SIGNAL(triggered()), app_->player(), + SLOT(PlayPause())); connect(ui_->action_stop, SIGNAL(triggered()), app_->player(), SLOT(Stop())); connect(ui_->action_quit, SIGNAL(triggered()), SLOT(Exit())); - connect(ui_->action_stop_after_this_track, SIGNAL(triggered()), SLOT(StopAfterCurrent())); + connect(ui_->action_stop_after_this_track, SIGNAL(triggered()), + SLOT(StopAfterCurrent())); connect(ui_->action_mute, SIGNAL(triggered()), app_->player(), SLOT(Mute())); #ifdef HAVE_LIBLASTFM - connect(ui_->action_ban, SIGNAL(triggered()), InternetModel::Service(), SLOT(Ban())); connect(ui_->action_love, SIGNAL(triggered()), SLOT(Love())); - connect(ui_->action_toggle_scrobbling, SIGNAL(triggered()), InternetModel::Service(), SLOT(ToggleScrobbling())); + connect(ui_->action_toggle_scrobbling, SIGNAL(triggered()), app_->scrobbler(), + SLOT(ToggleScrobbling())); #endif - connect(ui_->action_clear_playlist, SIGNAL(triggered()), app_->playlist_manager(), SLOT(ClearCurrent())); - connect(ui_->action_remove_duplicates, SIGNAL(triggered()), app_->playlist_manager(), SLOT(RemoveDuplicatesCurrent())); - connect(ui_->action_remove_from_playlist, SIGNAL(triggered()), SLOT(PlaylistRemoveCurrent())); + +#ifdef HAVE_VK + connect(ui_->action_love, SIGNAL(triggered()), + InternetModel::Service(), SLOT(AddToMyMusicCurrent())); +#endif + + connect(ui_->action_clear_playlist, SIGNAL(triggered()), + app_->playlist_manager(), SLOT(ClearCurrent())); + connect(ui_->action_remove_duplicates, SIGNAL(triggered()), + app_->playlist_manager(), SLOT(RemoveDuplicatesCurrent())); + connect(ui_->action_remove_from_playlist, SIGNAL(triggered()), + SLOT(PlaylistRemoveCurrent())); connect(ui_->action_edit_track, SIGNAL(triggered()), SLOT(EditTracks())); - connect(ui_->action_renumber_tracks, SIGNAL(triggered()), SLOT(RenumberTracks())); - connect(ui_->action_selection_set_value, SIGNAL(triggered()), SLOT(SelectionSetValue())); + connect(ui_->action_renumber_tracks, SIGNAL(triggered()), + SLOT(RenumberTracks())); + connect(ui_->action_selection_set_value, SIGNAL(triggered()), + SLOT(SelectionSetValue())); connect(ui_->action_edit_value, SIGNAL(triggered()), SLOT(EditValue())); - connect(ui_->action_auto_complete_tags, SIGNAL(triggered()), SLOT(AutoCompleteTags())); - connect(ui_->action_configure, SIGNAL(triggered()), SLOT(OpenSettingsDialog())); + connect(ui_->action_auto_complete_tags, SIGNAL(triggered()), + SLOT(AutoCompleteTags())); + connect(ui_->action_configure, SIGNAL(triggered()), + SLOT(OpenSettingsDialog())); connect(ui_->action_about, SIGNAL(triggered()), SLOT(ShowAboutDialog())); connect(ui_->action_about_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); - connect(ui_->action_shuffle, SIGNAL(triggered()), app_->playlist_manager(), SLOT(ShuffleCurrent())); + connect(ui_->action_shuffle, SIGNAL(triggered()), app_->playlist_manager(), + SLOT(ShuffleCurrent())); connect(ui_->action_open_media, SIGNAL(triggered()), SLOT(AddFile())); connect(ui_->action_open_cd, SIGNAL(triggered()), SLOT(AddCDTracks())); - #ifdef HAVE_AUDIOCD - connect(ui_->action_rip_audio_cd, SIGNAL(triggered()), SLOT(OpenRipCD())); - #else - ui_->action_rip_audio_cd->setVisible(false); - #endif +#ifdef HAVE_AUDIOCD + connect(ui_->action_rip_audio_cd, SIGNAL(triggered()), SLOT(OpenRipCD())); +#else + ui_->action_rip_audio_cd->setVisible(false); +#endif connect(ui_->action_add_file, SIGNAL(triggered()), SLOT(AddFile())); connect(ui_->action_add_folder, SIGNAL(triggered()), SLOT(AddFolder())); connect(ui_->action_add_stream, SIGNAL(triggered()), SLOT(AddStream())); connect(ui_->action_add_podcast, SIGNAL(triggered()), SLOT(AddPodcast())); - connect(ui_->action_cover_manager, SIGNAL(triggered()), SLOT(ShowCoverManager())); - connect(ui_->action_equalizer, SIGNAL(triggered()), equalizer_.get(), SLOT(show())); - connect(ui_->action_transcode, SIGNAL(triggered()), SLOT(ShowTranscodeDialog())); - connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), SLOT(JumpToCurrentlyPlayingTrack())); - connect(ui_->action_update_library, SIGNAL(triggered()), app_->library(), SLOT(IncrementalScan())); - connect(ui_->action_full_library_scan, SIGNAL(triggered()), app_->library(), SLOT(FullScan())); - connect(ui_->action_queue_manager, SIGNAL(triggered()), SLOT(ShowQueueManager())); - connect(ui_->action_add_files_to_transcoder, SIGNAL(triggered()), SLOT(AddFilesToTranscoder())); + connect(ui_->action_cover_manager, SIGNAL(triggered()), + SLOT(ShowCoverManager())); + connect(ui_->action_equalizer, SIGNAL(triggered()), equalizer_.get(), + SLOT(show())); + connect(ui_->action_transcode, SIGNAL(triggered()), + SLOT(ShowTranscodeDialog())); + connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), + SLOT(JumpToCurrentlyPlayingTrack())); + connect(ui_->action_update_library, SIGNAL(triggered()), app_->library(), + SLOT(IncrementalScan())); + connect(ui_->action_full_library_scan, SIGNAL(triggered()), app_->library(), + SLOT(FullScan())); + connect(ui_->action_queue_manager, SIGNAL(triggered()), + SLOT(ShowQueueManager())); + connect(ui_->action_add_files_to_transcoder, SIGNAL(triggered()), + SLOT(AddFilesToTranscoder())); background_streams_->AddAction("Rain", ui_->action_rain); background_streams_->AddAction("Hypnotoad", ui_->action_hypnotoad); background_streams_->AddAction("Make it so!", ui_->action_enterprise); // Playlist view actions - ui_->action_next_playlist->setShortcuts(QList() - << QKeySequence::fromString("Ctrl+Tab") - << QKeySequence::fromString("Ctrl+PgDown")); - ui_->action_previous_playlist->setShortcuts(QList() - << QKeySequence::fromString("Ctrl+Shift+Tab") - << QKeySequence::fromString("Ctrl+PgUp")); - // Actions for switching tabs will be global to the entire window, so adding them here + ui_->action_next_playlist->setShortcuts( + QList() << QKeySequence::fromString("Ctrl+Tab") + << QKeySequence::fromString("Ctrl+PgDown")); + ui_->action_previous_playlist->setShortcuts( + QList() << QKeySequence::fromString("Ctrl+Shift+Tab") + << QKeySequence::fromString("Ctrl+PgUp")); + // Actions for switching tabs will be global to the entire window, so adding + // them here addAction(ui_->action_next_playlist); addAction(ui_->action_previous_playlist); @@ -387,18 +422,17 @@ MainWindow::MainWindow(Application* app, ui_->pause_play_button->setDefaultAction(ui_->action_play_pause); ui_->stop_button->setDefaultAction(ui_->action_stop); ui_->love_button->setDefaultAction(ui_->action_love); - ui_->ban_button->setDefaultAction(ui_->action_ban); ui_->scrobbling_button->setDefaultAction(ui_->action_toggle_scrobbling); ui_->clear_playlist_button->setDefaultAction(ui_->action_clear_playlist); - ui_->playlist->SetActions(ui_->action_new_playlist, - ui_->action_load_playlist, - ui_->action_save_playlist, - ui_->action_next_playlist, /* These two actions aren't associated */ - ui_->action_previous_playlist /* to a button but to the main window */ ); - + ui_->playlist->SetActions( + ui_->action_new_playlist, ui_->action_load_playlist, + ui_->action_save_playlist, + ui_->action_next_playlist, /* These two actions aren't associated */ + ui_->action_previous_playlist /* to a button but to the main window */); #ifdef ENABLE_VISUALISATIONS - connect(ui_->action_visualisations, SIGNAL(triggered()), SLOT(ShowVisualisations())); + connect(ui_->action_visualisations, SIGNAL(triggered()), + SLOT(ShowVisualisations())); #else ui_->action_visualisations->setEnabled(false); #endif @@ -414,74 +448,111 @@ MainWindow::MainWindow(Application* app, ui_->stop_button->setMenu(stop_menu); // Player connections - connect(ui_->volume, SIGNAL(valueChanged(int)), app_->player(), SLOT(SetVolume(int))); + connect(ui_->volume, SIGNAL(valueChanged(int)), app_->player(), + SLOT(SetVolume(int))); - connect(app_->player(), SIGNAL(Error(QString)), SLOT(ShowErrorDialog(QString))); - connect(app_->player(), SIGNAL(SongChangeRequestProcessed(QUrl,bool)), app_->playlist_manager(), SLOT(SongChangeRequestProcessed(QUrl,bool))); + connect(app_->player(), SIGNAL(Error(QString)), + SLOT(ShowErrorDialog(QString))); + connect(app_->player(), SIGNAL(SongChangeRequestProcessed(QUrl, bool)), + app_->playlist_manager(), + SLOT(SongChangeRequestProcessed(QUrl, bool))); connect(app_->player(), SIGNAL(Paused()), SLOT(MediaPaused())); connect(app_->player(), SIGNAL(Playing()), SLOT(MediaPlaying())); connect(app_->player(), SIGNAL(Stopped()), SLOT(MediaStopped())); connect(app_->player(), SIGNAL(Seeked(qlonglong)), SLOT(Seeked(qlonglong))); - connect(app_->player(), SIGNAL(TrackSkipped(PlaylistItemPtr)), SLOT(TrackSkipped(PlaylistItemPtr))); + connect(app_->player(), SIGNAL(TrackSkipped(PlaylistItemPtr)), + SLOT(TrackSkipped(PlaylistItemPtr))); connect(app_->player(), SIGNAL(VolumeChanged(int)), SLOT(VolumeChanged(int))); - connect(app_->player(), SIGNAL(Paused()), ui_->playlist, SLOT(ActivePaused())); - connect(app_->player(), SIGNAL(Playing()), ui_->playlist, SLOT(ActivePlaying())); - connect(app_->player(), SIGNAL(Stopped()), ui_->playlist, SLOT(ActiveStopped())); + connect(app_->player(), SIGNAL(Paused()), ui_->playlist, + SLOT(ActivePaused())); + connect(app_->player(), SIGNAL(Playing()), ui_->playlist, + SLOT(ActivePlaying())); + connect(app_->player(), SIGNAL(Stopped()), ui_->playlist, + SLOT(ActiveStopped())); connect(app_->player(), SIGNAL(Paused()), osd_, SLOT(Paused())); connect(app_->player(), SIGNAL(Stopped()), osd_, SLOT(Stopped())); - connect(app_->player(), SIGNAL(PlaylistFinished()), osd_, SLOT(PlaylistFinished())); - connect(app_->player(), SIGNAL(VolumeChanged(int)), osd_, SLOT(VolumeChanged(int))); - connect(app_->player(), SIGNAL(VolumeChanged(int)), ui_->volume, SLOT(setValue(int))); - connect(app_->player(), SIGNAL(ForceShowOSD(Song, bool)), SLOT(ForceShowOSD(Song, bool))); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), SLOT(SongChanged(Song))); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), app_->player(), SLOT(CurrentMetadataChanged(Song))); - connect(app_->playlist_manager(), SIGNAL(EditingFinished(QModelIndex)), SLOT(PlaylistEditFinished(QModelIndex))); - connect(app_->playlist_manager(), SIGNAL(Error(QString)), SLOT(ShowErrorDialog(QString))); - connect(app_->playlist_manager(), SIGNAL(SummaryTextChanged(QString)), ui_->playlist_summary, SLOT(setText(QString))); - connect(app_->playlist_manager(), SIGNAL(PlayRequested(QModelIndex)), SLOT(PlayIndex(QModelIndex))); + connect(app_->player(), SIGNAL(PlaylistFinished()), osd_, + SLOT(PlaylistFinished())); + connect(app_->player(), SIGNAL(VolumeChanged(int)), osd_, + SLOT(VolumeChanged(int))); + connect(app_->player(), SIGNAL(VolumeChanged(int)), ui_->volume, + SLOT(setValue(int))); + connect(app_->player(), SIGNAL(ForceShowOSD(Song, bool)), + SLOT(ForceShowOSD(Song, bool))); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + SLOT(SongChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + app_->player(), SLOT(CurrentMetadataChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(EditingFinished(QModelIndex)), + SLOT(PlaylistEditFinished(QModelIndex))); + connect(app_->playlist_manager(), SIGNAL(Error(QString)), + SLOT(ShowErrorDialog(QString))); + connect(app_->playlist_manager(), SIGNAL(SummaryTextChanged(QString)), + ui_->playlist_summary, SLOT(setText(QString))); + connect(app_->playlist_manager(), SIGNAL(PlayRequested(QModelIndex)), + SLOT(PlayIndex(QModelIndex))); - connect(ui_->playlist->view(), SIGNAL(doubleClicked(QModelIndex)), SLOT(PlayIndex(QModelIndex))); - connect(ui_->playlist->view(), SIGNAL(PlayItem(QModelIndex)), SLOT(PlayIndex(QModelIndex))); - connect(ui_->playlist->view(), SIGNAL(PlayPause()), app_->player(), SLOT(PlayPause())); - connect(ui_->playlist->view(), SIGNAL(RightClicked(QPoint,QModelIndex)), SLOT(PlaylistRightClick(QPoint,QModelIndex))); - connect(ui_->playlist->view(), SIGNAL(SeekTrack(int)), ui_->track_slider, SLOT(Seek(int))); - connect(ui_->playlist->view(), SIGNAL(BackgroundPropertyChanged()), SLOT(RefreshStyleSheet())); + connect(ui_->playlist->view(), SIGNAL(doubleClicked(QModelIndex)), + SLOT(PlayIndex(QModelIndex))); + connect(ui_->playlist->view(), SIGNAL(PlayItem(QModelIndex)), + SLOT(PlayIndex(QModelIndex))); + connect(ui_->playlist->view(), SIGNAL(PlayPause()), app_->player(), + SLOT(PlayPause())); + connect(ui_->playlist->view(), SIGNAL(RightClicked(QPoint, QModelIndex)), + SLOT(PlaylistRightClick(QPoint, QModelIndex))); + connect(ui_->playlist->view(), SIGNAL(SeekTrack(int)), ui_->track_slider, + SLOT(Seek(int))); + connect(ui_->playlist->view(), SIGNAL(BackgroundPropertyChanged()), + SLOT(RefreshStyleSheet())); - connect(ui_->track_slider, SIGNAL(ValueChanged(int)), app_->player(), SLOT(SeekTo(int))); + connect(ui_->track_slider, SIGNAL(ValueChanged(int)), app_->player(), + SLOT(SeekTo(int))); // Library connections - connect(library_view_->view(), SIGNAL(AddToPlaylistSignal(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); - connect(library_view_->view(), SIGNAL(ShowConfigDialog()), SLOT(ShowLibraryConfig())); - connect(app_->library_model(), SIGNAL(TotalSongCountUpdated(int)), library_view_->view(), SLOT(TotalSongCountUpdated(int))); - connect(app_->library_model(), SIGNAL(modelAboutToBeReset()), library_view_->view(), SLOT(SaveFocus())); - connect(app_->library_model(), SIGNAL(modelReset()), library_view_->view(), SLOT(RestoreFocus())); + connect(library_view_->view(), SIGNAL(AddToPlaylistSignal(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); + connect(library_view_->view(), SIGNAL(ShowConfigDialog()), + SLOT(ShowLibraryConfig())); + connect(app_->library_model(), SIGNAL(TotalSongCountUpdated(int)), + library_view_->view(), SLOT(TotalSongCountUpdated(int))); + connect(app_->library_model(), SIGNAL(modelAboutToBeReset()), + library_view_->view(), SLOT(SaveFocus())); + connect(app_->library_model(), SIGNAL(modelReset()), library_view_->view(), + SLOT(RestoreFocus())); - connect(app_->task_manager(), SIGNAL(PauseLibraryWatchers()), app_->library(), SLOT(PauseWatcher())); - connect(app_->task_manager(), SIGNAL(ResumeLibraryWatchers()), app_->library(), SLOT(ResumeWatcher())); + connect(app_->task_manager(), SIGNAL(PauseLibraryWatchers()), app_->library(), + SLOT(PauseWatcher())); + connect(app_->task_manager(), SIGNAL(ResumeLibraryWatchers()), + app_->library(), SLOT(ResumeWatcher())); // Devices connections - connect(device_view_, SIGNAL(AddToPlaylistSignal(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); + connect(device_view_, SIGNAL(AddToPlaylistSignal(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); // Library filter widget QActionGroup* library_view_group = new QActionGroup(this); library_show_all_ = library_view_group->addAction(tr("Show all songs")); - library_show_duplicates_ = library_view_group->addAction(tr("Show only duplicates")); - library_show_untagged_ = library_view_group->addAction(tr("Show only untagged")); + library_show_duplicates_ = + library_view_group->addAction(tr("Show only duplicates")); + library_show_untagged_ = + library_view_group->addAction(tr("Show only untagged")); library_show_all_->setCheckable(true); library_show_duplicates_->setCheckable(true); library_show_untagged_->setCheckable(true); library_show_all_->setChecked(true); - connect(library_view_group, SIGNAL(triggered(QAction*)), SLOT(ChangeLibraryQueryMode(QAction*))); + connect(library_view_group, SIGNAL(triggered(QAction*)), + SLOT(ChangeLibraryQueryMode(QAction*))); QAction* library_config_action = new QAction( IconLoader::Load("configure"), tr("Configure library..."), this); - connect(library_config_action, SIGNAL(triggered()), SLOT(ShowLibraryConfig())); + connect(library_config_action, SIGNAL(triggered()), + SLOT(ShowLibraryConfig())); library_view_->filter()->SetSettingsGroup(kSettingsGroup); library_view_->filter()->SetLibraryModel(app_->library()->model()); @@ -495,12 +566,18 @@ MainWindow::MainWindow(Application* app, library_view_->filter()->AddMenuAction(library_config_action); // Playlist menu - playlist_play_pause_ = playlist_menu_->addAction(tr("Play"), this, SLOT(PlaylistPlay())); + playlist_play_pause_ = + playlist_menu_->addAction(tr("Play"), this, SLOT(PlaylistPlay())); playlist_menu_->addAction(ui_->action_stop); - playlist_stop_after_ = playlist_menu_->addAction(IconLoader::Load("media-playback-stop"), tr("Stop after this track"), this, SLOT(PlaylistStopAfter())); + playlist_stop_after_ = playlist_menu_->addAction( + IconLoader::Load("media-playback-stop"), tr("Stop after this track"), + this, SLOT(PlaylistStopAfter())); playlist_queue_ = playlist_menu_->addAction("", this, SLOT(PlaylistQueue())); playlist_queue_->setShortcut(QKeySequence("Ctrl+D")); ui_->playlist->addAction(playlist_queue_); + playlist_skip_ = playlist_menu_->addAction("", this, SLOT(PlaylistSkip())); + ui_->playlist->addAction(playlist_skip_); + playlist_menu_->addSeparator(); playlist_menu_->addAction(ui_->action_remove_from_playlist); playlist_undoredo_ = playlist_menu_->addSeparator(); @@ -511,13 +588,27 @@ MainWindow::MainWindow(Application* app, playlist_menu_->addAction(ui_->action_auto_complete_tags); playlist_menu_->addAction(ui_->action_add_files_to_transcoder); playlist_menu_->addSeparator(); - playlist_copy_to_library_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to library..."), this, SLOT(PlaylistCopyToLibrary())); - playlist_move_to_library_ = playlist_menu_->addAction(IconLoader::Load("go-jump"), tr("Move to library..."), this, SLOT(PlaylistMoveToLibrary())); - playlist_organise_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), tr("Organise files..."), this, SLOT(PlaylistMoveToLibrary())); - playlist_copy_to_device_ = playlist_menu_->addAction(IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), this, SLOT(PlaylistCopyToDevice())); - playlist_delete_ = playlist_menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from disk..."), this, SLOT(PlaylistDelete())); - playlist_open_in_browser_ = playlist_menu_->addAction(IconLoader::Load("document-open-folder"), tr("Show in file browser..."), this, SLOT(PlaylistOpenInBrowser())); - playlist_show_in_library_ = playlist_menu_->addAction(IconLoader::Load("edit-find"), tr("Show in library..."), this, SLOT(ShowInLibrary())); + playlist_copy_to_library_ = playlist_menu_->addAction( + IconLoader::Load("edit-copy"), tr("Copy to library..."), this, + SLOT(PlaylistCopyToLibrary())); + playlist_move_to_library_ = playlist_menu_->addAction( + IconLoader::Load("go-jump"), tr("Move to library..."), this, + SLOT(PlaylistMoveToLibrary())); + playlist_organise_ = playlist_menu_->addAction(IconLoader::Load("edit-copy"), + tr("Organise files..."), this, + SLOT(PlaylistMoveToLibrary())); + playlist_copy_to_device_ = playlist_menu_->addAction( + IconLoader::Load("multimedia-player-ipod-mini-blue"), + tr("Copy to device..."), this, SLOT(PlaylistCopyToDevice())); + playlist_delete_ = playlist_menu_->addAction(IconLoader::Load("edit-delete"), + tr("Delete from disk..."), this, + SLOT(PlaylistDelete())); + playlist_open_in_browser_ = playlist_menu_->addAction( + IconLoader::Load("document-open-folder"), tr("Show in file browser..."), + this, SLOT(PlaylistOpenInBrowser())); + playlist_show_in_library_ = playlist_menu_->addAction( + IconLoader::Load("edit-find"), tr("Show in library..."), this, + SLOT(ShowInLibrary())); playlist_menu_->addSeparator(); playlistitem_actions_separator_ = playlist_menu_->addSeparator(); playlist_menu_->addAction(ui_->action_clear_playlist); @@ -532,12 +623,14 @@ MainWindow::MainWindow(Application* app, // their shortcut keys don't work addActions(playlist_menu_->actions()); - connect(ui_->playlist, SIGNAL(UndoRedoActionsChanged(QAction*,QAction*)), - SLOT(PlaylistUndoRedoChanged(QAction*,QAction*))); + connect(ui_->playlist, SIGNAL(UndoRedoActionsChanged(QAction*, QAction*)), + SLOT(PlaylistUndoRedoChanged(QAction*, QAction*))); - playlist_copy_to_device_->setDisabled(app_->device_manager()->connected_devices_model()->rowCount() == 0); - connect(app_->device_manager()->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)), - playlist_copy_to_device_, SLOT(setDisabled(bool))); + playlist_copy_to_device_->setDisabled( + app_->device_manager()->connected_devices_model()->rowCount() == 0); + connect(app_->device_manager()->connected_devices_model(), + SIGNAL(IsEmptyChanged(bool)), playlist_copy_to_device_, + SLOT(setDisabled(bool))); // Global search shortcut QAction* global_search_action = new QAction(this); @@ -549,57 +642,64 @@ MainWindow::MainWindow(Application* app, SLOT(FocusGlobalSearchField())); // Internet connections - connect(app_->internet_model(), SIGNAL(StreamError(QString)), SLOT(ShowErrorDialog(QString))); - connect(app_->internet_model(), SIGNAL(StreamMetadataFound(QUrl,Song)), app_->playlist_manager(), SLOT(SetActiveStreamMetadata(QUrl,Song))); - connect(app_->internet_model(), SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); - connect(app_->internet_model(), SIGNAL(ScrollToIndex(QModelIndex)), SLOT(ScrollToInternetIndex(QModelIndex))); + connect(app_->internet_model(), SIGNAL(StreamError(QString)), + SLOT(ShowErrorDialog(QString))); + connect(app_->internet_model(), SIGNAL(StreamMetadataFound(QUrl, Song)), + app_->playlist_manager(), SLOT(SetActiveStreamMetadata(QUrl, Song))); + connect(app_->internet_model(), SIGNAL(AddToPlaylist(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); + connect(app_->internet_model(), SIGNAL(ScrollToIndex(QModelIndex)), + SLOT(ScrollToInternetIndex(QModelIndex))); #ifdef HAVE_LIBLASTFM - LastFMService* lastfm_service = InternetModel::Service(); - connect(lastfm_service, SIGNAL(ButtonVisibilityChanged(bool)), SLOT(LastFMButtonVisibilityChanged(bool))); - connect(lastfm_service, SIGNAL(ScrobbleButtonVisibilityChanged(bool)), SLOT(ScrobbleButtonVisibilityChanged(bool))); - connect(lastfm_service, SIGNAL(ScrobblingEnabledChanged(bool)), SLOT(ScrobblingEnabledChanged(bool))); - connect(lastfm_service, SIGNAL(ScrobbledRadioStream()), SLOT(ScrobbledRadioStream())); + connect(app_->scrobbler(), SIGNAL(ButtonVisibilityChanged(bool)), + SLOT(LastFMButtonVisibilityChanged(bool))); + connect(app_->scrobbler(), SIGNAL(ScrobbleButtonVisibilityChanged(bool)), + SLOT(ScrobbleButtonVisibilityChanged(bool))); + connect(app_->scrobbler(), SIGNAL(ScrobblingEnabledChanged(bool)), + SLOT(ScrobblingEnabledChanged(bool))); + connect(app_->scrobbler(), SIGNAL(ScrobbledRadioStream()), + SLOT(ScrobbledRadioStream())); #endif - connect(app_->internet_model()->Service(), SIGNAL(DownloadFinished(QStringList)), osd_, SLOT(MagnatuneDownloadFinished(QStringList))); - connect(internet_view_->tree(), SIGNAL(AddToPlaylistSignal(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); + connect(app_->internet_model()->Service(), + SIGNAL(DownloadFinished(QStringList)), osd_, + SLOT(MagnatuneDownloadFinished(QStringList))); + connect(internet_view_->tree(), SIGNAL(AddToPlaylistSignal(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); // Connections to the saved streams service - connect(InternetModel::Service(), SIGNAL(ShowAddStreamDialog()), SLOT(AddStream())); + connect(InternetModel::Service(), SIGNAL(ShowAddStreamDialog()), + SLOT(AddStream())); #ifdef Q_OS_DARWIN mac::SetApplicationHandler(this); #endif // Tray icon - tray_icon_->SetupMenu(ui_->action_previous_track, - ui_->action_play_pause, - ui_->action_stop, - ui_->action_stop_after_this_track, - ui_->action_next_track, - ui_->action_mute, - ui_->action_love, - ui_->action_ban, - ui_->action_quit); + tray_icon_->SetupMenu(ui_->action_previous_track, ui_->action_play_pause, + ui_->action_stop, ui_->action_stop_after_this_track, + ui_->action_next_track, ui_->action_mute, + ui_->action_love, ui_->action_quit); connect(tray_icon_, SIGNAL(PlayPause()), app_->player(), SLOT(PlayPause())); - connect(tray_icon_, SIGNAL(SeekForward()), app_->player(), SLOT(SeekForward())); - connect(tray_icon_, SIGNAL(SeekBackward()), app_->player(), SLOT(SeekBackward())); + connect(tray_icon_, SIGNAL(SeekForward()), app_->player(), + SLOT(SeekForward())); + connect(tray_icon_, SIGNAL(SeekBackward()), app_->player(), + SLOT(SeekBackward())); connect(tray_icon_, SIGNAL(NextTrack()), app_->player(), SLOT(Next())); - connect(tray_icon_, SIGNAL(PreviousTrack()), app_->player(), SLOT(Previous())); + connect(tray_icon_, SIGNAL(PreviousTrack()), app_->player(), + SLOT(Previous())); connect(tray_icon_, SIGNAL(ShowHide()), SLOT(ToggleShowHide())); connect(tray_icon_, SIGNAL(ChangeVolume(int)), SLOT(VolumeWheelEvent(int))); // Windows 7 thumbbar buttons thumbbar_->SetActions(QList() - << ui_->action_previous_track - << ui_->action_play_pause - << ui_->action_stop - << ui_->action_next_track - << NULL // spacer - << ui_->action_love - << ui_->action_ban); + << ui_->action_previous_track << ui_->action_play_pause + << ui_->action_stop << ui_->action_next_track + << nullptr // spacer + << ui_->action_love); #if (defined(Q_OS_DARWIN) && defined(HAVE_SPARKLE)) || defined(Q_OS_WIN32) // Add check for updates item to application menu. - QAction* check_updates = ui_->menu_tools->addAction(tr("Check for updates...")); + QAction* check_updates = + ui_->menu_tools->addAction(tr("Check for updates...")); check_updates->setMenuRole(QAction::ApplicationSpecificRole); connect(check_updates, SIGNAL(triggered(bool)), SLOT(CheckForUpdates())); #endif @@ -616,27 +716,40 @@ MainWindow::MainWindow(Application* app, // Global shortcuts connect(global_shortcuts_, SIGNAL(Play()), app_->player(), SLOT(Play())); connect(global_shortcuts_, SIGNAL(Pause()), app_->player(), SLOT(Pause())); - connect(global_shortcuts_, SIGNAL(PlayPause()), ui_->action_play_pause, SLOT(trigger())); + connect(global_shortcuts_, SIGNAL(PlayPause()), ui_->action_play_pause, + SLOT(trigger())); connect(global_shortcuts_, SIGNAL(Stop()), ui_->action_stop, SLOT(trigger())); - connect(global_shortcuts_, SIGNAL(StopAfter()), ui_->action_stop_after_this_track, SLOT(trigger())); - connect(global_shortcuts_, SIGNAL(Next()), ui_->action_next_track, SLOT(trigger())); - connect(global_shortcuts_, SIGNAL(Previous()), ui_->action_previous_track, SLOT(trigger())); - connect(global_shortcuts_, SIGNAL(IncVolume()), app_->player(), SLOT(VolumeUp())); - connect(global_shortcuts_, SIGNAL(DecVolume()), app_->player(), SLOT(VolumeDown())); + connect(global_shortcuts_, SIGNAL(StopAfter()), + ui_->action_stop_after_this_track, SLOT(trigger())); + connect(global_shortcuts_, SIGNAL(Next()), ui_->action_next_track, + SLOT(trigger())); + connect(global_shortcuts_, SIGNAL(Previous()), ui_->action_previous_track, + SLOT(trigger())); + connect(global_shortcuts_, SIGNAL(IncVolume()), app_->player(), + SLOT(VolumeUp())); + connect(global_shortcuts_, SIGNAL(DecVolume()), app_->player(), + SLOT(VolumeDown())); connect(global_shortcuts_, SIGNAL(Mute()), app_->player(), SLOT(Mute())); - connect(global_shortcuts_, SIGNAL(SeekForward()), app_->player(), SLOT(SeekForward())); - connect(global_shortcuts_, SIGNAL(SeekBackward()), app_->player(), SLOT(SeekBackward())); + connect(global_shortcuts_, SIGNAL(SeekForward()), app_->player(), + SLOT(SeekForward())); + connect(global_shortcuts_, SIGNAL(SeekBackward()), app_->player(), + SLOT(SeekBackward())); connect(global_shortcuts_, SIGNAL(ShowHide()), SLOT(ToggleShowHide())); - connect(global_shortcuts_, SIGNAL(ShowOSD()), app_->player(), SLOT(ShowOSD())); - connect(global_shortcuts_, SIGNAL(TogglePrettyOSD()), app_->player(), SLOT(TogglePrettyOSD())); + connect(global_shortcuts_, SIGNAL(ShowOSD()), app_->player(), + SLOT(ShowOSD())); + connect(global_shortcuts_, SIGNAL(TogglePrettyOSD()), app_->player(), + SLOT(TogglePrettyOSD())); #ifdef HAVE_LIBLASTFM - connect(global_shortcuts_, SIGNAL(ToggleScrobbling()), app_->internet_model()->InternetModel::Service(), SLOT(ToggleScrobbling())); + connect(global_shortcuts_, SIGNAL(ToggleScrobbling()), app_->scrobbler(), + SLOT(ToggleScrobbling())); #endif - connect(global_shortcuts_, SIGNAL(RateCurrentSong(int)), app_->playlist_manager(), SLOT(RateCurrentSong(int))); + connect(global_shortcuts_, SIGNAL(RateCurrentSong(int)), + app_->playlist_manager(), SLOT(RateCurrentSong(int))); // Fancy tabs - connect(ui_->tabs, SIGNAL(ModeChanged(FancyTabWidget::Mode)), SLOT(SaveGeometry())); + connect(ui_->tabs, SIGNAL(ModeChanged(FancyTabWidget::Mode)), + SLOT(SaveGeometry())); connect(ui_->tabs, SIGNAL(CurrentChanged(int)), SLOT(SaveGeometry())); // Lyrics @@ -650,26 +763,30 @@ MainWindow::MainWindow(Application* app, // Equalizer qLog(Debug) << "Creating equalizer"; - connect(equalizer_.get(), SIGNAL(ParametersChanged(int,QList)), - app_->player()->engine(), SLOT(SetEqualizerParameters(int,QList))); + connect(equalizer_.get(), SIGNAL(ParametersChanged(int, QList)), + app_->player()->engine(), + SLOT(SetEqualizerParameters(int, QList))); connect(equalizer_.get(), SIGNAL(EnabledChanged(bool)), app_->player()->engine(), SLOT(SetEqualizerEnabled(bool))); connect(equalizer_.get(), SIGNAL(StereoBalanceChanged(float)), app_->player()->engine(), SLOT(SetStereoBalance(float))); app_->player()->engine()->SetEqualizerEnabled(equalizer_->is_enabled()); - app_->player()->engine()->SetEqualizerParameters( - equalizer_->preamp_value(), equalizer_->gain_values()); + app_->player()->engine()->SetEqualizerParameters(equalizer_->preamp_value(), + equalizer_->gain_values()); app_->player()->engine()->SetStereoBalance(equalizer_->stereo_balance()); // Statusbar widgets - ui_->playlist_summary->setMinimumWidth(QFontMetrics(font()).width("WW selected of WW tracks - [ WW:WW ]")); + ui_->playlist_summary->setMinimumWidth( + QFontMetrics(font()).width("WW selected of WW tracks - [ WW:WW ]")); ui_->status_bar_stack->setCurrentWidget(ui_->playlist_summary_page); - connect(ui_->multi_loading_indicator, SIGNAL(TaskCountChange(int)), SLOT(TaskCountChanged(int))); + connect(ui_->multi_loading_indicator, SIGNAL(TaskCountChange(int)), + SLOT(TaskCountChanged(int))); ui_->track_slider->SetApplication(app); #ifdef HAVE_MOODBAR // Moodbar connections - connect(app_->moodbar_controller(), SIGNAL(CurrentMoodbarDataChanged(QByteArray)), + connect(app_->moodbar_controller(), + SIGNAL(CurrentMoodbarDataChanged(QByteArray)), ui_->track_slider->moodbar_style(), SLOT(SetMoodbarData(QByteArray))); #endif @@ -680,42 +797,56 @@ MainWindow::MainWindow(Application* app, connect(app_->player(), SIGNAL(Stopped()), ui_->now_playing, SLOT(Stopped())); connect(ui_->now_playing, SIGNAL(ShowAboveStatusBarChanged(bool)), SLOT(NowPlayingWidgetPositionChanged(bool))); - connect(ui_->action_hypnotoad, SIGNAL(toggled(bool)), ui_->now_playing, SLOT(AllHail(bool))); - connect(ui_->action_kittens, SIGNAL(toggled(bool)), ui_->now_playing, SLOT(EnableKittens(bool))); - connect(ui_->action_kittens, SIGNAL(toggled(bool)), app_->network_remote(), SLOT(EnableKittens(bool))); + connect(ui_->action_hypnotoad, SIGNAL(toggled(bool)), ui_->now_playing, + SLOT(AllHail(bool))); + connect(ui_->action_kittens, SIGNAL(toggled(bool)), ui_->now_playing, + SLOT(EnableKittens(bool))); + connect(ui_->action_kittens, SIGNAL(toggled(bool)), app_->network_remote(), + SLOT(EnableKittens(bool))); // Hide the console - //connect(ui_->action_console, SIGNAL(triggered()), SLOT(ShowConsole())); + // connect(ui_->action_console, SIGNAL(triggered()), SLOT(ShowConsole())); NowPlayingWidgetPositionChanged(ui_->now_playing->show_above_status_bar()); // Load theme // This is tricky: we need to save the default/system palette now, before - // loading user preferred theme (which will overide it), to be able to restore it later + // loading user preferred theme (which will overide it), to be able to restore + // it later const_cast(Appearance::kDefaultPalette) = QApplication::palette(); app_->appearance()->LoadUserTheme(); StyleSheetLoader* css_loader = new StyleSheetLoader(this); css_loader->SetStyleSheet(this, ":mainwindow.css"); // Load playlists - app_->playlist_manager()->Init(app_->library_backend(), app_->playlist_backend(), + app_->playlist_manager()->Init(app_->library_backend(), + app_->playlist_backend(), ui_->playlist_sequence, ui_->playlist); // This connection must be done after the playlists have been initialized. - connect(this, SIGNAL(StopAfterToggled(bool)), - osd_, SLOT(StopAfterToggle(bool))); + connect(this, SIGNAL(StopAfterToggled(bool)), osd_, + SLOT(StopAfterToggle(bool))); - // We need to connect these global shortcuts here after the playlist have been initialized - connect(global_shortcuts_, SIGNAL(CycleShuffleMode()), app_->playlist_manager()->sequence(), SLOT(CycleShuffleMode())); - connect(global_shortcuts_, SIGNAL(CycleRepeatMode()), app_->playlist_manager()->sequence(), SLOT(CycleRepeatMode())); - connect(app_->playlist_manager()->sequence(), SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), osd_, SLOT(RepeatModeChanged(PlaylistSequence::RepeatMode))); - connect(app_->playlist_manager()->sequence(), SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), osd_, SLOT(ShuffleModeChanged(PlaylistSequence::ShuffleMode))); + // We need to connect these global shortcuts here after the playlist have been + // initialized + connect(global_shortcuts_, SIGNAL(CycleShuffleMode()), + app_->playlist_manager()->sequence(), SLOT(CycleShuffleMode())); + connect(global_shortcuts_, SIGNAL(CycleRepeatMode()), + app_->playlist_manager()->sequence(), SLOT(CycleRepeatMode())); + connect(app_->playlist_manager()->sequence(), + SIGNAL(RepeatModeChanged(PlaylistSequence::RepeatMode)), osd_, + SLOT(RepeatModeChanged(PlaylistSequence::RepeatMode))); + connect(app_->playlist_manager()->sequence(), + SIGNAL(ShuffleModeChanged(PlaylistSequence::ShuffleMode)), osd_, + SLOT(ShuffleModeChanged(PlaylistSequence::ShuffleMode))); #ifdef HAVE_LIBLASTFM - connect(InternetModel::Service(), SIGNAL(ScrobbleSubmitted()), SLOT(ScrobbleSubmitted())); - connect(InternetModel::Service(), SIGNAL(ScrobbleError(int)), SLOT(ScrobbleError(int))); + connect(app_->scrobbler(), SIGNAL(ScrobbleSubmitted()), + SLOT(ScrobbleSubmitted())); + connect(app_->scrobbler(), SIGNAL(ScrobbleError(int)), + SLOT(ScrobbleError(int))); - LastFMButtonVisibilityChanged(app_->internet_model()->InternetModel::Service()->AreButtonsVisible()); - ScrobbleButtonVisibilityChanged(app_->internet_model()->InternetModel::Service()->IsScrobbleButtonVisible()); - ScrobblingEnabledChanged(app_->internet_model()->InternetModel::Service()->IsScrobblingEnabled()); + LastFMButtonVisibilityChanged(app_->scrobbler()->AreButtonsVisible()); + ScrobbleButtonVisibilityChanged(app_->scrobbler()->IsScrobbleButtonVisible()); + ScrobblingEnabledChanged(app_->scrobbler()->IsScrobblingEnabled()); #else LastFMButtonVisibilityChanged(false); ScrobbleButtonVisibilityChanged(false); @@ -726,14 +857,17 @@ MainWindow::MainWindow(Application* app, settings_.beginGroup(kSettingsGroup); restoreGeometry(settings_.value("geometry").toByteArray()); - if (!ui_->splitter->restoreState(settings_.value("splitter_state").toByteArray())) { + if (!ui_->splitter->restoreState( + settings_.value("splitter_state").toByteArray())) { ui_->splitter->setSizes(QList() << 300 << width() - 300); } - ui_->tabs->SetCurrentIndex(settings_.value("current_tab", 1 /* Library tab */ ).toInt()); + ui_->tabs->SetCurrentIndex( + settings_.value("current_tab", 1 /* Library tab */).toInt()); FancyTabWidget::Mode default_mode = FancyTabWidget::Mode_LargeSidebar; - ui_->tabs->SetMode(FancyTabWidget::Mode(settings_.value( - "tab_mode", default_mode).toInt())); - file_view_->SetPath(settings_.value("file_path", QDir::homePath()).toString()); + ui_->tabs->SetMode( + FancyTabWidget::Mode(settings_.value("tab_mode", default_mode).toInt())); + file_view_->SetPath( + settings_.value("file_path", QDir::homePath()).toString()); ReloadSettings(); @@ -744,17 +878,24 @@ MainWindow::MainWindow(Application* app, ui_->playlist->view()->ReloadSettings(); #ifndef Q_OS_DARWIN - StartupBehaviour behaviour = - StartupBehaviour(settings_.value("startupbehaviour", Startup_Remember).toInt()); + StartupBehaviour behaviour = StartupBehaviour( + settings_.value("startupbehaviour", Startup_Remember).toInt()); bool hidden = settings_.value("hidden", false).toBool(); switch (behaviour) { - case Startup_AlwaysHide: hide(); break; - case Startup_AlwaysShow: show(); break; - case Startup_Remember: setVisible(!hidden); break; + case Startup_AlwaysHide: + hide(); + break; + case Startup_AlwaysShow: + show(); + break; + case Startup_Remember: + setVisible(!hidden); + break; } - // Force the window to show in case somehow the config has tray and window set to hide + // Force the window to show in case somehow the config has tray and window set + // to hide if (hidden && !tray_icon_->IsVisible()) { settings_.setValue("hidden", false); show(); @@ -769,10 +910,11 @@ MainWindow::MainWindow(Application* app, connect(close_window_shortcut, SIGNAL(activated()), SLOT(SetHiddenInTray())); #ifdef HAVE_WIIMOTEDEV -// http://code.google.com/p/clementine-player/issues/detail?id=670 -// Switched position, mayby something is not ready ? + // http://code.google.com/p/clementine-player/issues/detail?id=670 + // Switched position, mayby something is not ready ? - wiimotedev_shortcuts_.reset(new WiimotedevShortcuts(osd_, this, app_->player())); + wiimotedev_shortcuts_.reset( + new WiimotedevShortcuts(osd_, this, app_->player())); #endif CheckFullRescanRevisions(); @@ -792,20 +934,18 @@ void MainWindow::ReloadSettings() { bool show_tray = settings_.value("showtray", true).toBool(); tray_icon_->SetVisible(show_tray); - if (!show_tray && !isVisible()) - show(); + if (!show_tray && !isVisible()) show(); #endif QSettings s; s.beginGroup(kSettingsGroup); - doubleclick_addmode_ = AddBehaviour( - s.value("doubleclick_addmode", AddBehaviour_Append).toInt()); + doubleclick_addmode_ = + AddBehaviour(s.value("doubleclick_addmode", AddBehaviour_Append).toInt()); doubleclick_playmode_ = PlayBehaviour( s.value("doubleclick_playmode", PlayBehaviour_IfStopped).toInt()); - menu_playmode_ = PlayBehaviour( - s.value("menu_playmode", PlayBehaviour_IfStopped).toInt()); - + menu_playmode_ = + PlayBehaviour(s.value("menu_playmode", PlayBehaviour_IfStopped).toInt()); } void MainWindow::ReloadAllSettings() { @@ -827,9 +967,7 @@ void MainWindow::ReloadAllSettings() { #endif } -void MainWindow::RefreshStyleSheet() { - setStyleSheet(styleSheet()); -} +void MainWindow::RefreshStyleSheet() { setStyleSheet(styleSheet()); } void MainWindow::MediaStopped() { setWindowTitle(QCoreApplication::applicationName()); @@ -840,10 +978,8 @@ void MainWindow::MediaStopped() { ui_->action_play_pause->setEnabled(true); - ui_->action_ban->setEnabled(false); ui_->action_love->setEnabled(false); tray_icon_->LastFMButtonLoveStateChanged(false); - tray_icon_->LastFMButtonBanStateChanged(false); track_position_timer_->stop(); ui_->track_slider->SetStopped(); @@ -870,24 +1006,19 @@ void MainWindow::MediaPlaying() { ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-pause")); ui_->action_play_pause->setText(tr("Pause")); - bool enable_play_pause = !(app_->player()->GetCurrentItem()->options() & PlaylistItem::PauseDisabled); + bool enable_play_pause = !(app_->player()->GetCurrentItem()->options() & + PlaylistItem::PauseDisabled); ui_->action_play_pause->setEnabled(enable_play_pause); - bool can_seek = !(app_->player()->GetCurrentItem()->options() & PlaylistItem::SeekDisabled); + bool can_seek = !(app_->player()->GetCurrentItem()->options() & + PlaylistItem::SeekDisabled); ui_->track_slider->SetCanSeek(can_seek); #ifdef HAVE_LIBLASTFM - bool is_lastfm = (app_->player()->GetCurrentItem()->options() & PlaylistItem::LastFMControls); - LastFMService* lastfm = InternetModel::Service(); - bool enable_ban = lastfm->IsScrobblingEnabled() && is_lastfm; - bool enable_love = lastfm->IsScrobblingEnabled(); - - ui_->action_ban->setEnabled(enable_ban); + bool enable_love = app_->scrobbler()->IsScrobblingEnabled(); ui_->action_love->setEnabled(enable_love); - tray_icon_->LastFMButtonBanStateChanged(enable_ban); tray_icon_->LastFMButtonLoveStateChanged(enable_love); - - tray_icon_->SetPlaying(enable_play_pause, enable_ban, enable_love); + tray_icon_->SetPlaying(enable_play_pause, enable_love); #else tray_icon_->SetPlaying(enable_play_pause); #endif @@ -907,7 +1038,7 @@ void MainWindow::SongChanged(const Song& song) { #ifdef HAVE_LIBLASTFM if (ui_->action_toggle_scrobbling->isVisible()) - SetToggleScrobblingIcon(InternetModel::Service()->IsScrobblingEnabled()); + SetToggleScrobblingIcon(app_->scrobbler()->IsScrobblingEnabled()); #endif } @@ -915,8 +1046,10 @@ void MainWindow::TrackSkipped(PlaylistItemPtr item) { // If it was a library item then we have to increment its skipped count in // the database. if (item && item->IsLocalLibraryItem() && item->Metadata().id() != -1 && - app_->playlist_manager()->active()->get_lastfm_status() != Playlist::LastFM_Scrobbled && - app_->playlist_manager()->active()->get_lastfm_status() != Playlist::LastFM_Queued) { + app_->playlist_manager()->active()->get_lastfm_status() != + Playlist::LastFM_Scrobbled && + app_->playlist_manager()->active()->get_lastfm_status() != + Playlist::LastFM_Queued) { Song song = item->Metadata(); const qint64 position = app_->player()->engine()->position_nanosec(); const qint64 length = app_->player()->engine()->length_nanosec(); @@ -925,8 +1058,9 @@ void MainWindow::TrackSkipped(PlaylistItemPtr item) { const qint64 seconds_left = (length - position) / kNsecPerSec; const qint64 seconds_total = length / kNsecPerSec; - if (((0.05 * seconds_total > 60 && percentage < 0.98) || percentage < 0.95) && - seconds_left > 5) { // Never count the skip if under 5 seconds left + if (((0.05 * seconds_total > 60 && percentage < 0.98) || + percentage < 0.95) && + seconds_left > 5) { // Never count the skip if under 5 seconds left app_->library_backend()->IncrementSkipCountAsync(song.id(), percentage); } } @@ -937,25 +1071,23 @@ void MainWindow::ScrobblingEnabledChanged(bool value) { if (ui_->action_toggle_scrobbling->isVisible()) SetToggleScrobblingIcon(value); - if (!app_->player()->GetState() == Engine::Idle) { + if (app_->player()->GetState() != Engine::Idle) { return; - } - else { - //invalidate current song, we will scrobble the next one - if (app_->playlist_manager()->active()->get_lastfm_status() == Playlist::LastFM_New) - app_->playlist_manager()->active()->set_lastfm_status(Playlist::LastFM_Seeked); + } else { + // invalidate current song, we will scrobble the next one + if (app_->playlist_manager()->active()->get_lastfm_status() == + Playlist::LastFM_New) { + app_->playlist_manager()->active()->set_lastfm_status( + Playlist::LastFM_Seeked); + } } - bool is_lastfm = (app_->player()->GetCurrentItem()->options() & PlaylistItem::LastFMControls); - ui_->action_ban->setEnabled(value && is_lastfm); - tray_icon_->LastFMButtonBanStateChanged(value && is_lastfm); ui_->action_love->setEnabled(value); tray_icon_->LastFMButtonLoveStateChanged(value); } #endif void MainWindow::LastFMButtonVisibilityChanged(bool value) { - ui_->action_ban->setVisible(value); ui_->action_love->setVisible(value); ui_->last_fm_controls->setVisible(value); tray_icon_->LastFMButtonVisibilityChanged(value); @@ -965,22 +1097,21 @@ void MainWindow::ScrobbleButtonVisibilityChanged(bool value) { ui_->action_toggle_scrobbling->setVisible(value); ui_->scrobbling_button->setVisible(value); - //when you reshow the buttons + // when you reshow the buttons if (value) { - //check if the song was scrobbled - if (app_->playlist_manager()->active()->get_lastfm_status() == Playlist::LastFM_Scrobbled) { + // check if the song was scrobbled + if (app_->playlist_manager()->active()->get_lastfm_status() == + Playlist::LastFM_Scrobbled) { ui_->action_toggle_scrobbling->setIcon(QIcon(":/last.fm/as.png")); } else { #ifdef HAVE_LIBLASTFM - SetToggleScrobblingIcon(app_->internet_model()->InternetModel::Service()->IsScrobblingEnabled()); + SetToggleScrobblingIcon(app_->scrobbler()->IsScrobblingEnabled()); #endif } } } -void MainWindow::resizeEvent(QResizeEvent*) { - SaveGeometry(); -} +void MainWindow::resizeEvent(QResizeEvent*) { SaveGeometry(); } void MainWindow::SaveGeometry() { settings_.setValue("geometry", saveGeometry()); @@ -994,8 +1125,10 @@ void MainWindow::SavePlaybackStatus() { settings.beginGroup(MainWindow::kSettingsGroup); settings.setValue("playback_state", app_->player()->GetState()); if (app_->player()->GetState() == Engine::Playing || - app_->player()->GetState() == Engine::Paused) { - settings.setValue("playback_position", app_->player()->engine()->position_nanosec() / kNsecPerSec); + app_->player()->GetState() == Engine::Paused) { + settings.setValue( + "playback_position", + app_->player()->engine()->position_nanosec() / kNsecPerSec); } else { settings.setValue("playback_position", 0); } @@ -1004,13 +1137,13 @@ void MainWindow::SavePlaybackStatus() { void MainWindow::LoadPlaybackStatus() { QSettings settings; settings.beginGroup(MainWindow::kSettingsGroup); - bool resume_playback = settings.value("resume_playback_after_start", false).toBool(); - saved_playback_state_ = static_cast - (settings.value("playback_state", Engine::Empty).toInt()); + bool resume_playback = + settings.value("resume_playback_after_start", false).toBool(); + saved_playback_state_ = static_cast( + settings.value("playback_state", Engine::Empty).toInt()); saved_playback_position_ = settings.value("playback_position", 0).toDouble(); - if (!resume_playback || - saved_playback_state_ == Engine::Empty || - saved_playback_state_ == Engine::Idle) { + if (!resume_playback || saved_playback_state_ == Engine::Empty || + saved_playback_state_ == Engine::Idle) { return; } @@ -1029,14 +1162,14 @@ void MainWindow::ResumePlayback() { } void MainWindow::PlayIndex(const QModelIndex& index) { - if (!index.isValid()) - return; + if (!index.isValid()) return; int row = index.row(); if (index.model() == app_->playlist_manager()->current()->proxy()) { // The index was in the proxy model (might've been filtered), so we need // to get the actual row in the source model. - row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); } app_->playlist_manager()->SetActiveToCurrent(); @@ -1059,8 +1192,7 @@ void MainWindow::ToggleShowHide() { hide(); setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); SetHiddenInTray(false); - } else if (!isVisible()) - { + } else if (!isVisible()) { show(); activateWindow(); } else { @@ -1071,8 +1203,10 @@ void MainWindow::ToggleShowHide() { } void MainWindow::StopAfterCurrent() { - app_->playlist_manager()->active()->StopAfter(app_->playlist_manager()->active()->current_row()); - emit StopAfterToggled(app_->playlist_manager()->active()->stop_after_current()); + app_->playlist_manager()->active()->StopAfter( + app_->playlist_manager()->active()->current_row()); + emit StopAfterToggled( + app_->playlist_manager()->active()->stop_after_current()); } void MainWindow::closeEvent(QCloseEvent* event) { @@ -1111,12 +1245,13 @@ void MainWindow::FilePathChanged(const QString& path) { void MainWindow::Seeked(qlonglong microseconds) { const int position = microseconds / kUsecPerSec; - const int length = app_->player()->GetCurrentItem()->Metadata().length_nanosec() / kNsecPerSec; + const int length = + app_->player()->GetCurrentItem()->Metadata().length_nanosec() / + kNsecPerSec; tray_icon_->SetProgress(double(position) / length * 100); - //if we seeked, scrobbling is canceled, update the icon - if (ui_->action_toggle_scrobbling->isVisible()) - SetToggleScrobblingIcon(true); + // if we seeked, scrobbling is canceled, update the icon + if (ui_->action_toggle_scrobbling->isVisible()) SetToggleScrobblingIcon(true); } void MainWindow::UpdateTrackPosition() { @@ -1136,26 +1271,26 @@ void MainWindow::UpdateTrackPosition() { return; } #ifdef HAVE_LIBLASTFM - LastFMService* lastfm_service = InternetModel::Service(); const bool last_fm_enabled = ui_->action_toggle_scrobbling->isVisible() && - lastfm_service->IsScrobblingEnabled() && - lastfm_service->IsAuthenticated(); + app_->scrobbler()->IsScrobblingEnabled() && + app_->scrobbler()->IsAuthenticated(); #endif // Time to scrobble? if (position >= scrobble_point) { if (playlist->get_lastfm_status() == Playlist::LastFM_New) { - #ifdef HAVE_LIBLASTFM - if (lastfm_service->IsScrobblingEnabled() && lastfm_service->IsAuthenticated()) { - qLog(Info) << "Scrobbling at" << scrobble_point; - lastfm_service->Scrobble(); - } - #endif +#ifdef HAVE_LIBLASTFM + if (app_->scrobbler()->IsScrobblingEnabled() && + app_->scrobbler()->IsAuthenticated()) { + qLog(Info) << "Scrobbling at" << scrobble_point; + app_->scrobbler()->Scrobble(); + } +#endif } // Update the play count for the song if it's from the library - if (!playlist->have_incremented_playcount() && - item->IsLocalLibraryItem() && item->Metadata().id() != -1 && + if (!playlist->have_incremented_playcount() && item->IsLocalLibraryItem() && + item->Metadata().id() != -1 && playlist->get_lastfm_status() != Playlist::LastFM_Seeked) { app_->library_backend()->IncrementPlayCountAsync(item->Metadata().id()); playlist->set_have_incremented_playcount(); @@ -1168,15 +1303,16 @@ void MainWindow::UpdateTrackPosition() { // Update the tray icon every 10 seconds if (position % 10 == 0) { qLog(Debug) << "position" << position << "scrobble point" << scrobble_point - << "status" << playlist->get_lastfm_status(); + << "status" << playlist->get_lastfm_status(); tray_icon_->SetProgress(double(position) / length * 100); - //if we're waiting for the scrobble point, update the icon +// if we're waiting for the scrobble point, update the icon #ifdef HAVE_LIBLASTFM if (position < scrobble_point && playlist->get_lastfm_status() == Playlist::LastFM_New && last_fm_enabled) { - ui_->action_toggle_scrobbling->setIcon(CreateOverlayedIcon(position, scrobble_point)); + ui_->action_toggle_scrobbling->setIcon( + CreateOverlayedIcon(position, scrobble_point)); } #endif } @@ -1189,54 +1325,55 @@ void MainWindow::ScrobbledRadioStream() { } void MainWindow::Love() { - InternetModel::Service()->Love(); + app_->scrobbler()->Love(); ui_->action_love->setEnabled(false); tray_icon_->LastFMButtonLoveStateChanged(false); } #endif -void MainWindow::ApplyAddBehaviour(MainWindow::AddBehaviour b, MimeData* data) const { +void MainWindow::ApplyAddBehaviour(MainWindow::AddBehaviour b, + MimeData* data) const { switch (b) { - case AddBehaviour_Append: - data->clear_first_ = false; - data->enqueue_now_ = false; - break; + case AddBehaviour_Append: + data->clear_first_ = false; + data->enqueue_now_ = false; + break; - case AddBehaviour_Enqueue: - data->clear_first_ = false; - data->enqueue_now_ = true; - break; + case AddBehaviour_Enqueue: + data->clear_first_ = false; + data->enqueue_now_ = true; + break; - case AddBehaviour_Load: - data->clear_first_ = true; - data->enqueue_now_ = false; - break; + case AddBehaviour_Load: + data->clear_first_ = true; + data->enqueue_now_ = false; + break; - case AddBehaviour_OpenInNew: - data->open_in_new_playlist_ = true; - break; + case AddBehaviour_OpenInNew: + data->open_in_new_playlist_ = true; + break; } } -void MainWindow::ApplyPlayBehaviour(MainWindow::PlayBehaviour b, MimeData* data) const { +void MainWindow::ApplyPlayBehaviour(MainWindow::PlayBehaviour b, + MimeData* data) const { switch (b) { - case PlayBehaviour_Always: - data->play_now_ = true; - break; + case PlayBehaviour_Always: + data->play_now_ = true; + break; - case PlayBehaviour_Never: - data->play_now_ = false; - break; + case PlayBehaviour_Never: + data->play_now_ = false; + break; - case PlayBehaviour_IfStopped: - data->play_now_ = !(app_->player()->GetState() == Engine::Playing); - break; + case PlayBehaviour_IfStopped: + data->play_now_ = !(app_->player()->GetState() == Engine::Playing); + break; } } void MainWindow::AddToPlaylist(QMimeData* data) { - if (!data) - return; + if (!data) return; if (MimeData* mime_data = qobject_cast(data)) { // Should we replace the flags with the user's preference? @@ -1250,12 +1387,13 @@ void MainWindow::AddToPlaylist(QMimeData* data) { } // Should we create a new playlist for the songs? - if(mime_data->open_in_new_playlist_) { + if (mime_data->open_in_new_playlist_) { app_->playlist_manager()->New(mime_data->get_name_for_new_playlist()); } } - app_->playlist_manager()->current()->dropMimeData(data, Qt::CopyAction, -1, 0, QModelIndex()); + app_->playlist_manager()->current()->dropMimeData(data, Qt::CopyAction, -1, 0, + QModelIndex()); delete data; } @@ -1263,44 +1401,50 @@ void MainWindow::AddToPlaylist(QAction* action) { int destination = action->data().toInt(); PlaylistItemList items; - //get the selected playlist items - foreach (const QModelIndex& index, ui_->playlist->view()->selectionModel()->selection().indexes()) { - if (index.column() != 0) - continue; - int row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + // get the selected playlist items + for (const QModelIndex& index : + ui_->playlist->view()->selectionModel()->selection().indexes()) { + if (index.column() != 0) continue; + int row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); items << app_->playlist_manager()->current()->item_at(row); } SongList songs; - foreach(PlaylistItemPtr item, items) { + for (PlaylistItemPtr item : items) { songs << item->Metadata(); } - //we're creating a new playlist + // we're creating a new playlist if (destination == -1) { - //save the current playlist to reactivate it + // save the current playlist to reactivate it int current_id = app_->playlist_manager()->current_id(); - //get the name from selection - app_->playlist_manager()->New(app_->playlist_manager()->GetNameForNewPlaylist(songs)); + // get the name from selection + app_->playlist_manager()->New( + app_->playlist_manager()->GetNameForNewPlaylist(songs)); if (app_->playlist_manager()->current()->id() != current_id) { - //I'm sure the new playlist was created and is selected, so I can just insert items + // I'm sure the new playlist was created and is selected, so I can just + // insert items app_->playlist_manager()->current()->InsertItems(items); - //set back the current playlist + // set back the current playlist app_->playlist_manager()->SetCurrentPlaylist(current_id); } - } - else { - //we're inserting in a existing playlist + } else { + // we're inserting in a existing playlist app_->playlist_manager()->playlist(destination)->InsertItems(items); } } -void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& index) { - QModelIndex source_index = app_->playlist_manager()->current()->proxy()->mapToSource(index); +void MainWindow::PlaylistRightClick(const QPoint& global_pos, + const QModelIndex& index) { + QModelIndex source_index = + app_->playlist_manager()->current()->proxy()->mapToSource(index); playlist_menu_index_ = source_index; // Is this song currently playing? - if (app_->playlist_manager()->current()->current_row() == source_index.row() && app_->player()->GetState() == Engine::Playing) { + if (app_->playlist_manager()->current()->current_row() == + source_index.row() && + app_->player()->GetState() == Engine::Playing) { playlist_play_pause_->setText(tr("Pause")); playlist_play_pause_->setIcon(IconLoader::Load("media-playback-pause")); } else { @@ -1311,8 +1455,13 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& // Are we allowed to pause? if (index.isValid()) { playlist_play_pause_->setEnabled( - app_->playlist_manager()->current()->current_row() != source_index.row() || - ! (app_->playlist_manager()->current()->item_at(source_index.row())->options() & PlaylistItem::PauseDisabled)); + app_->playlist_manager()->current()->current_row() != + source_index.row() || + !(app_->playlist_manager() + ->current() + ->item_at(source_index.row()) + ->options() & + PlaylistItem::PauseDisabled)); } else { playlist_play_pause_->setEnabled(false); } @@ -1320,31 +1469,40 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& playlist_stop_after_->setEnabled(index.isValid()); // Are any of the selected songs editable or queued? - QModelIndexList selection = ui_->playlist->view()->selectionModel()->selection().indexes(); + QModelIndexList selection = + ui_->playlist->view()->selectionModel()->selection().indexes(); bool cue_selected = false; int editable = 0; int streams = 0; int in_queue = 0; int not_in_queue = 0; - foreach (const QModelIndex& index, selection) { - if (index.column() != 0) - continue; + int in_skipped = 0; + int not_in_skipped = 0; + for (const QModelIndex& index : selection) { + if (index.column() != 0) continue; - PlaylistItemPtr item = app_->playlist_manager()->current()->item_at(index.row()); - if(item->Metadata().has_cue()) { + PlaylistItemPtr item = + app_->playlist_manager()->current()->item_at(index.row()); + if (item->Metadata().has_cue()) { cue_selected = true; } else if (item->Metadata().IsEditable()) { editable++; } - if(item->Metadata().is_stream()) { + if (item->Metadata().is_stream()) { streams++; } if (index.data(Playlist::Role_QueuePosition).toInt() == -1) - not_in_queue ++; + not_in_queue++; else - in_queue ++; + in_queue++; + + if (item->GetShouldSkip()) { + in_skipped++; + } else { + not_in_skipped++; + } } int all = not_in_queue + in_queue; @@ -1357,8 +1515,7 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& ui_->action_auto_complete_tags->setVisible(editable); // the rest of the read / write actions work only when there are no CUEs // involved - if(cue_selected) - editable = 0; + if (cue_selected) editable = 0; // no 'show in browser' action if only streams are selected playlist_open_in_browser_->setVisible(streams != all); @@ -1387,6 +1544,15 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& else playlist_queue_->setText(tr("Toggle queue status")); + if (in_skipped == 1 && not_in_skipped == 0) + playlist_skip_->setText(tr("Unskip track")); + else if (in_skipped > 1 && not_in_skipped == 0) + playlist_skip_->setText(tr("Unskip selected tracks")); + else if (in_skipped == 0 && not_in_skipped == 1) + playlist_skip_->setText(tr("Skip track")); + else if (in_skipped == 0 && not_in_skipped > 1) + playlist_skip_->setText(tr("Skip selected tracks")); + if (not_in_queue == 0) playlist_queue_->setIcon(IconLoader::Load("go-previous")); else @@ -1397,25 +1563,26 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& ui_->action_edit_value->setVisible(false); } else { Playlist::Column column = (Playlist::Column)index.column(); - bool column_is_editable = Playlist::column_is_editable(column) - && editable; + bool column_is_editable = Playlist::column_is_editable(column) && editable; ui_->action_selection_set_value->setVisible( ui_->action_selection_set_value->isVisible() && column_is_editable); - ui_->action_edit_value->setVisible( - ui_->action_edit_value->isVisible() && column_is_editable); + ui_->action_edit_value->setVisible(ui_->action_edit_value->isVisible() && + column_is_editable); QString column_name = Playlist::column_name(column); - QString column_value = app_->playlist_manager()->current()->data(source_index).toString(); + QString column_value = + app_->playlist_manager()->current()->data(source_index).toString(); if (column_value.length() > 25) column_value = column_value.left(25) + "..."; - ui_->action_selection_set_value->setText(tr("Set %1 to \"%2\"...") - .arg(column_name.toLower()).arg(column_value)); + ui_->action_selection_set_value->setText( + tr("Set %1 to \"%2\"...").arg(column_name.toLower()).arg(column_value)); ui_->action_edit_value->setText(tr("Edit tag \"%1\"...").arg(column_name)); // Is it a library item? - PlaylistItemPtr item = app_->playlist_manager()->current()->item_at(source_index.row()); + PlaylistItemPtr item = + app_->playlist_manager()->current()->item_at(source_index.row()); if (item->IsLocalLibraryItem() && item->Metadata().id() != -1) { playlist_organise_->setVisible(editable); playlist_show_in_library_->setVisible(editable); @@ -1428,29 +1595,32 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& playlist_copy_to_device_->setVisible(editable); // Remove old item actions, if any. - foreach(QAction* action, playlistitem_actions_) { + for (QAction* action : playlistitem_actions_) { playlist_menu_->removeAction(action); } // Get the new item actions, and add them playlistitem_actions_ = item->actions(); - playlistitem_actions_separator_->setVisible(!playlistitem_actions_.isEmpty()); - playlist_menu_->insertActions(playlistitem_actions_separator_, playlistitem_actions_); + playlistitem_actions_separator_->setVisible( + !playlistitem_actions_.isEmpty()); + playlist_menu_->insertActions(playlistitem_actions_separator_, + playlistitem_actions_); } - //if it isn't the first time we right click, we need to remove the menu previously created - if (playlist_add_to_another_ != NULL) { + // if it isn't the first time we right click, we need to remove the menu + // previously created + if (playlist_add_to_another_ != nullptr) { playlist_menu_->removeAction(playlist_add_to_another_); delete playlist_add_to_another_; } - //create the playlist submenu + // create the playlist submenu QMenu* add_to_another_menu = new QMenu(tr("Add to another playlist"), this); add_to_another_menu->setIcon(IconLoader::Load("list-add")); - PlaylistBackend::Playlist playlist; - foreach (playlist, app_->playlist_backend()->GetAllOpenPlaylists()) { - //don't add the current playlist + for (const PlaylistBackend::Playlist& playlist : + app_->playlist_backend()->GetAllOpenPlaylists()) { + // don't add the current playlist if (playlist.id != app_->playlist_manager()->current()->id()) { QAction* existing_playlist = new QAction(this); existing_playlist->setText(playlist.name); @@ -1460,21 +1630,23 @@ void MainWindow::PlaylistRightClick(const QPoint& global_pos, const QModelIndex& } add_to_another_menu->addSeparator(); - //add to a new playlist + // add to a new playlist QAction* new_playlist = new QAction(this); new_playlist->setText(tr("New playlist")); - new_playlist->setData(-1); //fake id + new_playlist->setData(-1); // fake id add_to_another_menu->addAction(new_playlist); - playlist_add_to_another_ = playlist_menu_->insertMenu(ui_->action_remove_from_playlist, - add_to_another_menu); + playlist_add_to_another_ = playlist_menu_->insertMenu( + ui_->action_remove_from_playlist, add_to_another_menu); - connect(add_to_another_menu, SIGNAL(triggered(QAction*)), SLOT(AddToPlaylist(QAction*))); + connect(add_to_another_menu, SIGNAL(triggered(QAction*)), + SLOT(AddToPlaylist(QAction*))); playlist_menu_->popup(global_pos); } void MainWindow::PlaylistPlay() { - if (app_->playlist_manager()->current()->current_row() == playlist_menu_index_.row()) { + if (app_->playlist_manager()->current()->current_row() == + playlist_menu_index_.row()) { app_->player()->PlayPause(); } else { PlayIndex(playlist_menu_index_); @@ -1489,11 +1661,11 @@ void MainWindow::EditTracks() { SongList songs; PlaylistItemList items; - foreach (const QModelIndex& index, - ui_->playlist->view()->selectionModel()->selection().indexes()) { - if (index.column() != 0) - continue; - int row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + for (const QModelIndex& index : + ui_->playlist->view()->selectionModel()->selection().indexes()) { + if (index.column() != 0) continue; + int row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); PlaylistItemPtr item(app_->playlist_manager()->current()->item_at(row)); Song song = item->Metadata(); @@ -1509,7 +1681,7 @@ void MainWindow::EditTracks() { } void MainWindow::EditTagDialogAccepted() { - foreach (PlaylistItemPtr item, edit_tag_dialog_->playlist_items()) { + for (PlaylistItemPtr item : edit_tag_dialog_->playlist_items()) { item->Reload(); } @@ -1529,17 +1701,19 @@ void MainWindow::RenumberTracks() { // if first selected song has a track number set, start from that offset if (!indexes.isEmpty()) { - const Song first_song = app_->playlist_manager()->current()->item_at(indexes[0].row())->Metadata(); + const Song first_song = app_->playlist_manager() + ->current() + ->item_at(indexes[0].row()) + ->Metadata(); - if (first_song.track() > 0) - track = first_song.track(); + if (first_song.track() > 0) track = first_song.track(); } - foreach (const QModelIndex& index, indexes) { - if (index.column() != 0) - continue; + for (const QModelIndex& index : indexes) { + if (index.column() != 0) continue; - const QModelIndex source_index = app_->playlist_manager()->current()->proxy()->mapToSource(index); + const QModelIndex source_index = + app_->playlist_manager()->current()->proxy()->mapToSource(index); int row = source_index.row(); Song song = app_->playlist_manager()->current()->item_at(row)->Metadata(); @@ -1549,8 +1723,8 @@ void MainWindow::RenumberTracks() { TagReaderReply* reply = TagReaderClient::Instance()->SaveFile(song.url().toLocalFile(), song); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(SongSaveComplete(TagReaderReply*,QPersistentModelIndex)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(SongSaveComplete(TagReaderReply*, QPersistentModelIndex)), reply, QPersistentModelIndex(source_index)); } track++; @@ -1560,22 +1734,24 @@ void MainWindow::RenumberTracks() { void MainWindow::SongSaveComplete(TagReaderReply* reply, const QPersistentModelIndex& index) { if (reply->is_successful() && index.isValid()) { - app_->playlist_manager()->current()->ReloadItems(QList() << index.row()); + app_->playlist_manager()->current()->ReloadItems(QList() + << index.row()); } reply->deleteLater(); } void MainWindow::SelectionSetValue() { Playlist::Column column = (Playlist::Column)playlist_menu_index_.column(); - QVariant column_value = app_->playlist_manager()->current()->data(playlist_menu_index_); + QVariant column_value = + app_->playlist_manager()->current()->data(playlist_menu_index_); QModelIndexList indexes = ui_->playlist->view()->selectionModel()->selection().indexes(); - foreach (const QModelIndex& index, indexes) { - if (index.column() != 0) - continue; + for (const QModelIndex& index : indexes) { + if (index.column() != 0) continue; - const QModelIndex source_index = app_->playlist_manager()->current()->proxy()->mapToSource(index); + const QModelIndex source_index = + app_->playlist_manager()->current()->proxy()->mapToSource(index); int row = source_index.row(); Song song = app_->playlist_manager()->current()->item_at(row)->Metadata(); @@ -1583,8 +1759,8 @@ void MainWindow::SelectionSetValue() { TagReaderReply* reply = TagReaderClient::Instance()->SaveFile(song.url().toLocalFile(), song); - NewClosure(reply, SIGNAL(Finished(bool)), - this, SLOT(SongSaveComplete(TagReaderReply*,QPersistentModelIndex)), + NewClosure(reply, SIGNAL(Finished(bool)), this, + SLOT(SongSaveComplete(TagReaderReply*, QPersistentModelIndex)), reply, QPersistentModelIndex(source_index)); } } @@ -1592,18 +1768,15 @@ void MainWindow::SelectionSetValue() { void MainWindow::EditValue() { QModelIndex current = ui_->playlist->view()->currentIndex(); - if (!current.isValid()) - return; + if (!current.isValid()) return; // Edit the last column that was right-clicked on. If nothing's ever been // right clicked then look for the first editable column. int column = playlist_menu_index_.column(); if (column == -1) { - for (int i=0 ; iplaylist->view()->model()->columnCount() ; ++i) { - if (ui_->playlist->view()->isColumnHidden(i)) - continue; - if (!Playlist::column_is_editable(Playlist::Column(i))) - continue; + for (int i = 0; i < ui_->playlist->view()->model()->columnCount(); ++i) { + if (ui_->playlist->view()->isColumnHidden(i)) continue; + if (!Playlist::column_is_editable(Playlist::Column(i))) continue; column = i; break; } @@ -1614,27 +1787,25 @@ void MainWindow::EditValue() { void MainWindow::AddFile() { // Last used directory - QString directory = settings_.value("add_media_path", QDir::currentPath()).toString(); + QString directory = + settings_.value("add_media_path", QDir::currentPath()).toString(); PlaylistParser parser(app_->library_backend()); // Show dialog QStringList file_names = QFileDialog::getOpenFileNames( this, tr("Add file"), directory, - QString("%1 (%2);;%3;;%4").arg( - tr("Music"), - FileView::kFileFilter, - parser.filters(), - tr(kAllFilesFilterSpec))); - if (file_names.isEmpty()) - return; + QString("%1 (%2);;%3;;%4").arg(tr("Music"), FileView::kFileFilter, + parser.filters(), + tr(kAllFilesFilterSpec))); + if (file_names.isEmpty()) return; // Save last used directory settings_.setValue("add_media_path", file_names[0]); // Convert to URLs QList urls; - foreach (const QString& path, file_names) { + for (const QString& path : file_names) { urls << QUrl::fromLocalFile(QFileInfo(path).canonicalFilePath()); } @@ -1645,26 +1816,29 @@ void MainWindow::AddFile() { void MainWindow::AddFolder() { // Last used directory - QString directory = settings_.value("add_folder_path", QDir::currentPath()).toString(); + QString directory = + settings_.value("add_folder_path", QDir::currentPath()).toString(); // Show dialog - directory = QFileDialog::getExistingDirectory(this, tr("Add folder"), directory); - if (directory.isEmpty()) - return; + directory = + QFileDialog::getExistingDirectory(this, tr("Add folder"), directory); + if (directory.isEmpty()) return; // Save last used directory settings_.setValue("add_folder_path", directory); // Add media MimeData* data = new MimeData; - data->setUrls(QList() << QUrl::fromLocalFile(QFileInfo(directory).canonicalFilePath())); + data->setUrls(QList() << QUrl::fromLocalFile( + QFileInfo(directory).canonicalFilePath())); AddToPlaylist(data); } void MainWindow::AddStream() { if (!add_stream_dialog_) { add_stream_dialog_.reset(new AddStreamDialog); - connect(add_stream_dialog_.get(), SIGNAL(accepted()), SLOT(AddStreamAccepted())); + connect(add_stream_dialog_.get(), SIGNAL(accepted()), + SLOT(AddStreamAccepted())); add_stream_dialog_->set_add_on_accept(InternetModel::Service()); } @@ -1678,22 +1852,21 @@ void MainWindow::AddStreamAccepted() { AddToPlaylist(data); } - void MainWindow::OpenRipCD() { - #ifdef HAVE_AUDIOCD - if (!rip_cd_) { - rip_cd_.reset(new RipCD); - } - if(rip_cd_->CDIOIsValid()) { - rip_cd_->show(); - } else { - QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), tr("Failed reading CD drive")); - cdio_fail.exec(); - } - #endif +#ifdef HAVE_AUDIOCD + if (!rip_cd_) { + rip_cd_.reset(new RipCD); + } + if (rip_cd_->CheckCDIOIsValid()) { + rip_cd_->show(); + } else { + QMessageBox cdio_fail(QMessageBox::Critical, tr("Error"), + tr("Failed reading CD drive")); + cdio_fail.exec(); + } +#endif } - void MainWindow::AddCDTracks() { MimeData* data = new MimeData; // We are putting empty data, but we specify cdda mimetype to indicate that @@ -1705,19 +1878,28 @@ void MainWindow::AddCDTracks() { void MainWindow::ShowInLibrary() { // Show the first valid selected track artist/album in LibraryView - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); SongList songs; - foreach (const QModelIndex& proxy_index, proxy_indexes) { - QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - if (app_->playlist_manager()->current()->item_at(index.row())->IsLocalLibraryItem()) { - songs << app_->playlist_manager()->current()->item_at(index.row())->Metadata(); + for (const QModelIndex& proxy_index : proxy_indexes) { + QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + if (app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->IsLocalLibraryItem()) { + songs << app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->Metadata(); break; } } QString search; if (!songs.isEmpty()) { - search = "artist:" + songs.first().artist() + " album:" + songs.first().album(); + search = + "artist:" + songs.first().artist() + " album:" + songs.first().album(); } library_view_->filter()->ShowInLibrary(search); } @@ -1727,11 +1909,11 @@ void MainWindow::PlaylistRemoveCurrent() { } void MainWindow::PlaylistEditFinished(const QModelIndex& index) { - if (index == playlist_menu_index_) - SelectionSetValue(); + if (index == playlist_menu_index_) SelectionSetValue(); } -void MainWindow::CommandlineOptionsReceived(const QByteArray& serialized_options) { +void MainWindow::CommandlineOptionsReceived( + const QByteArray& serialized_options) { if (serialized_options == "wake up!") { // Old versions of Clementine sent this - just ignore it return; @@ -1743,15 +1925,16 @@ void MainWindow::CommandlineOptionsReceived(const QByteArray& serialized_options if (options.is_empty()) { show(); activateWindow(); - } - else + } else CommandlineOptionsReceived(options); } -void MainWindow::CommandlineOptionsReceived(const CommandlineOptions &options) { +void MainWindow::CommandlineOptionsReceived(const CommandlineOptions& options) { switch (options.player_action()) { case CommandlineOptions::Player_Play: - app_->player()->Play(); + if (options.urls().empty()) { + app_->player()->Play(); + } break; case CommandlineOptions::Player_PlayPause: app_->player()->PlayPause(); @@ -1776,38 +1959,52 @@ void MainWindow::CommandlineOptionsReceived(const CommandlineOptions &options) { break; } - switch (options.url_list_action()) { - case CommandlineOptions::UrlList_Load: - app_->playlist_manager()->ClearCurrent(); + if (!options.urls().empty()) { + MimeData* data = new MimeData; + data->setUrls(options.urls()); + // Behaviour depends on command line options, so set it here + data->override_user_settings_ = true; - // fallthrough - case CommandlineOptions::UrlList_Append: { - MimeData* data = new MimeData; - data->setUrls(options.urls()); - AddToPlaylist(data); - break; + if (options.player_action() == CommandlineOptions::Player_Play) + data->play_now_ = true; + else + ApplyPlayBehaviour(doubleclick_playmode_, data); + + switch (options.url_list_action()) { + case CommandlineOptions::UrlList_Load: + data->clear_first_ = true; + break; + case CommandlineOptions::UrlList_Append: + // Nothing to do + break; + case CommandlineOptions::UrlList_None: + ApplyAddBehaviour(doubleclick_addmode_, data); + break; } + + AddToPlaylist(data); } if (options.set_volume() != -1) app_->player()->SetVolume(options.set_volume()); if (options.volume_modifier() != 0) - app_->player()->SetVolume(app_->player()->GetVolume() + options.volume_modifier()); + app_->player()->SetVolume(app_->player()->GetVolume() + + options.volume_modifier()); if (options.seek_to() != -1) app_->player()->SeekTo(options.seek_to()); else if (options.seek_by() != 0) - app_->player()->SeekTo(app_->player()->engine()->position_nanosec() / kNsecPerSec + options.seek_by()); + app_->player()->SeekTo(app_->player()->engine()->position_nanosec() / + kNsecPerSec + + options.seek_by()); if (options.play_track_at() != -1) app_->player()->PlayAt(options.play_track_at(), Engine::Manual, true); - if (options.show_osd()) - app_->player()->ShowOSD(); + if (options.show_osd()) app_->player()->ShowOSD(); - if (options.toggle_pretty_osd()) - app_->player()->TogglePrettyOSD(); + if (options.toggle_pretty_osd()) app_->player()->TogglePrettyOSD(); } void MainWindow::ForceShowOSD(const Song& song, const bool toggle) { @@ -1817,13 +2014,10 @@ void MainWindow::ForceShowOSD(const Song& song, const bool toggle) { osd_->ReshowCurrentSong(); } -void MainWindow::Activate() { - show(); -} +void MainWindow::Activate() { show(); } bool MainWindow::LoadUrl(const QString& url) { - if (!QFile::exists(url)) - return false; + if (!QFile::exists(url)) return false; MimeData* data = new MimeData; data->setUrls(QList() << QUrl::fromLocalFile(url)); @@ -1838,7 +2032,7 @@ void MainWindow::CheckForUpdates() { #endif } -void MainWindow::PlaylistUndoRedoChanged(QAction *undo, QAction *redo) { +void MainWindow::PlaylistUndoRedoChanged(QAction* undo, QAction* redo) { playlist_menu_->insertAction(playlist_undoredo_, undo); playlist_menu_->insertAction(playlist_undoredo_, redo); } @@ -1850,11 +2044,11 @@ void MainWindow::AddFilesToTranscoder() { QStringList filenames; - foreach (const QModelIndex& index, - ui_->playlist->view()->selectionModel()->selection().indexes()) { - if (index.column() != 0) - continue; - int row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + for (const QModelIndex& index : + ui_->playlist->view()->selectionModel()->selection().indexes()) { + if (index.column() != 0) continue; + int row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); PlaylistItemPtr item(app_->playlist_manager()->current()->item_at(row)); Song song = item->Metadata(); filenames << song.url().toLocalFile(); @@ -1890,26 +2084,30 @@ void MainWindow::NowPlayingWidgetPositionChanged(bool above_status_bar) { } void MainWindow::CopyFilesToLibrary(const QList& urls) { - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); organise_dialog_->SetUrls(urls); organise_dialog_->SetCopy(true); organise_dialog_->show(); } void MainWindow::MoveFilesToLibrary(const QList& urls) { - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); organise_dialog_->SetUrls(urls); organise_dialog_->SetCopy(false); organise_dialog_->show(); } void MainWindow::CopyFilesToDevice(const QList& urls) { - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); if (organise_dialog_->SetUrls(urls)) organise_dialog_->show(); else { - QMessageBox::warning(this, tr("Error"), + QMessageBox::warning( + this, tr("Error"), tr("None of the selected songs were suitable for copying to a device")); } } @@ -1918,7 +2116,7 @@ void MainWindow::EditFileTags(const QList& urls) { EnsureEditTagDialogCreated(); SongList songs; - foreach (const QUrl& url, urls) { + for (const QUrl& url : urls) { Song song; song.set_url(url); song.set_valid(true); @@ -1930,25 +2128,27 @@ void MainWindow::EditFileTags(const QList& urls) { edit_tag_dialog_->show(); } -void MainWindow::PlaylistCopyToLibrary() { - PlaylistOrganiseSelected(true); -} +void MainWindow::PlaylistCopyToLibrary() { PlaylistOrganiseSelected(true); } -void MainWindow::PlaylistMoveToLibrary() { - PlaylistOrganiseSelected(false); -} +void MainWindow::PlaylistMoveToLibrary() { PlaylistOrganiseSelected(false); } void MainWindow::PlaylistOrganiseSelected(bool copy) { - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); SongList songs; - foreach (const QModelIndex& proxy_index, proxy_indexes) { - QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + for (const QModelIndex& proxy_index : proxy_indexes) { + QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - songs << app_->playlist_manager()->current()->item_at(index.row())->Metadata(); + songs << app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->Metadata(); } - organise_dialog_->SetDestinationModel(app_->library_model()->directory_model()); + organise_dialog_->SetDestinationModel( + app_->library_model()->directory_model()); organise_dialog_->SetSongs(songs); organise_dialog_->SetCopy(copy); organise_dialog_->show(); @@ -1958,42 +2158,53 @@ void MainWindow::PlaylistDelete() { // Note: copied from LibraryView::Delete if (QMessageBox::warning(this, tr("Delete files"), - tr("These files will be permanently deleted from disk, are you sure you want to continue?"), - QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) + tr("These files will be permanently deleted from " + "disk, are you sure you want to continue?"), + QMessageBox::Yes, + QMessageBox::Cancel) != QMessageBox::Yes) return; - boost::shared_ptr storage(new FilesystemMusicStorage("/")); + std::shared_ptr storage(new FilesystemMusicStorage("/")); // Get selected songs SongList selected_songs; - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); - foreach (const QModelIndex& proxy_index, proxy_indexes) { - QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - selected_songs << app_->playlist_manager()->current()->item_at(index.row())->Metadata(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); + for (const QModelIndex& proxy_index : proxy_indexes) { + QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + selected_songs << app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->Metadata(); } ui_->playlist->view()->RemoveSelected(); DeleteFiles* delete_files = new DeleteFiles(app_->task_manager(), storage); - connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); + connect(delete_files, SIGNAL(Finished(SongList)), + SLOT(DeleteFinished(SongList))); delete_files->Start(selected_songs); } void MainWindow::PlaylistOpenInBrowser() { QList urls; - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); - foreach (const QModelIndex& proxy_index, proxy_indexes) { - const QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - urls << QUrl(index.sibling(index.row(), Playlist::Column_Filename).data().toString()); + for (const QModelIndex& proxy_index : proxy_indexes) { + const QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + urls << QUrl(index.sibling(index.row(), Playlist::Column_Filename) + .data() + .toString()); } Utilities::OpenInFileBrowser(urls); } void MainWindow::DeleteFinished(const SongList& songs_with_errors) { - if (songs_with_errors.isEmpty()) - return; + if (songs_with_errors.isEmpty()) return; OrganiseErrorDialog* dialog = new OrganiseErrorDialog(this); dialog->Show(OrganiseErrorDialog::Type_Delete, songs_with_errors); @@ -2002,36 +2213,55 @@ void MainWindow::DeleteFinished(const SongList& songs_with_errors) { void MainWindow::PlaylistQueue() { QModelIndexList indexes; - foreach (const QModelIndex& proxy_index, - ui_->playlist->view()->selectionModel()->selectedRows()) { - indexes << app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + for (const QModelIndex& proxy_index : + ui_->playlist->view()->selectionModel()->selectedRows()) { + indexes << app_->playlist_manager()->current()->proxy()->mapToSource( + proxy_index); } app_->playlist_manager()->current()->queue()->ToggleTracks(indexes); } -void MainWindow::PlaylistCopyToDevice() { - QModelIndexList proxy_indexes = ui_->playlist->view()->selectionModel()->selectedRows(); - SongList songs; - - foreach (const QModelIndex& proxy_index, proxy_indexes) { - QModelIndex index = app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); - - songs << app_->playlist_manager()->current()->item_at(index.row())->Metadata(); +void MainWindow::PlaylistSkip() { + QModelIndexList indexes; + for (const QModelIndex& proxy_index : + ui_->playlist->view()->selectionModel()->selectedRows()) { + indexes << app_->playlist_manager()->current()->proxy()->mapToSource( + proxy_index); } - organise_dialog_->SetDestinationModel(app_->device_manager()->connected_devices_model(), true); + app_->playlist_manager()->current()->SkipTracks(indexes); +} + +void MainWindow::PlaylistCopyToDevice() { + QModelIndexList proxy_indexes = + ui_->playlist->view()->selectionModel()->selectedRows(); + SongList songs; + + for (const QModelIndex& proxy_index : proxy_indexes) { + QModelIndex index = + app_->playlist_manager()->current()->proxy()->mapToSource(proxy_index); + + songs << app_->playlist_manager() + ->current() + ->item_at(index.row()) + ->Metadata(); + } + + organise_dialog_->SetDestinationModel( + app_->device_manager()->connected_devices_model(), true); organise_dialog_->SetCopy(true); if (organise_dialog_->SetSongs(songs)) organise_dialog_->show(); else { - QMessageBox::warning(this, tr("Error"), + QMessageBox::warning( + this, tr("Error"), tr("None of the selected songs were suitable for copying to a device")); } } void MainWindow::ChangeLibraryQueryMode(QAction* action) { - if(action == library_show_duplicates_) { + if (action == library_show_duplicates_) { library_view_->filter()->SetQueryMode(QueryOptions::QueryMode_Duplicates); } else if (action == library_show_untagged_) { library_view_->filter()->SetQueryMode(QueryOptions::QueryMode_Untagged); @@ -2046,30 +2276,34 @@ void MainWindow::ShowCoverManager() { cover_manager_->Init(); // Cover manager connections - connect(cover_manager_.get(), SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*))); + connect(cover_manager_.get(), SIGNAL(AddToPlaylist(QMimeData*)), + SLOT(AddToPlaylist(QMimeData*))); } cover_manager_->show(); } void MainWindow::EnsureSettingsDialogCreated() { - if (settings_dialog_) - return; + if (settings_dialog_) return; settings_dialog_.reset(new SettingsDialog(app_, background_streams_)); settings_dialog_->SetGlobalShortcutManager(global_shortcuts_); settings_dialog_->SetSongInfoView(song_info_view_); // Settings - connect(settings_dialog_.get(), SIGNAL(accepted()), SLOT(ReloadAllSettings())); + connect(settings_dialog_.get(), SIGNAL(accepted()), + SLOT(ReloadAllSettings())); #ifdef HAVE_WIIMOTEDEV - connect(settings_dialog_.get(), SIGNAL(SetWiimotedevInterfaceActived(bool)), wiimotedev_shortcuts_.get(), SLOT(SetWiimotedevInterfaceActived(bool))); + connect(settings_dialog_.get(), SIGNAL(SetWiimotedevInterfaceActived(bool)), + wiimotedev_shortcuts_.get(), + SLOT(SetWiimotedevInterfaceActived(bool))); #endif // Allows custom notification preview - connect(settings_dialog_.get(), SIGNAL(NotificationPreview(OSD::Behaviour,QString,QString)), - SLOT(HandleNotificationPreview(OSD::Behaviour,QString,QString))); + connect(settings_dialog_.get(), + SIGNAL(NotificationPreview(OSD::Behaviour, QString, QString)), + SLOT(HandleNotificationPreview(OSD::Behaviour, QString, QString))); } void MainWindow::OpenSettingsDialog() { @@ -2083,12 +2317,13 @@ void MainWindow::OpenSettingsDialogAtPage(SettingsDialog::Page page) { } void MainWindow::EnsureEditTagDialogCreated() { - if (edit_tag_dialog_) - return; + if (edit_tag_dialog_) return; edit_tag_dialog_.reset(new EditTagDialog(app_)); - connect(edit_tag_dialog_.get(), SIGNAL(accepted()), SLOT(EditTagDialogAccepted())); - connect(edit_tag_dialog_.get(), SIGNAL(Error(QString)), SLOT(ShowErrorDialog(QString))); + connect(edit_tag_dialog_.get(), SIGNAL(accepted()), + SLOT(EditTagDialogAccepted())); + connect(edit_tag_dialog_.get(), SIGNAL(Error(QString)), + SLOT(ShowErrorDialog(QString))); } void MainWindow::ShowAboutDialog() { @@ -2119,31 +2354,34 @@ void MainWindow::CheckFullRescanRevisions() { // if we're restoring DB from scratch or nothing has // changed, do nothing - if(from == 0 || from == to) { + if (from == 0 || from == to) { return; } // collect all reasons QSet reasons; - for(int i = from; i <= to; i++) { + for (int i = from; i <= to; i++) { QString reason = app_->library()->full_rescan_reason(i); - if(!reason.isEmpty()) { + if (!reason.isEmpty()) { reasons.insert(reason); } } // if we have any... - if(!reasons.isEmpty()) { - QString message = tr("The version of Clementine you've just updated to requires a full library rescan " - "because of the new features listed below:") + "
    "; - foreach(const QString& reason, reasons) { + if (!reasons.isEmpty()) { + QString message = tr("The version of Clementine you've just updated to " + "requires a full library rescan " + "because of the new features listed below:") + + "
      "; + for (const QString& reason : reasons) { message += ("
    • " + reason + "
    • "); } message += "
    " + tr("Would you like to run a full rescan right now?"); - if(QMessageBox::question(this, tr("Library rescan notice"), - message, QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) { + if (QMessageBox::question(this, tr("Library rescan notice"), message, + QMessageBox::Yes, + QMessageBox::No) == QMessageBox::Yes) { app_->library()->FullScan(); } } @@ -2162,32 +2400,37 @@ void MainWindow::ShowVisualisations() { if (!visualisation_) { visualisation_.reset(new VisualisationContainer); - visualisation_->SetActions(ui_->action_previous_track, ui_->action_play_pause, - ui_->action_stop, ui_->action_next_track); - connect(app_->player(), SIGNAL(Stopped()), visualisation_.get(), SLOT(Stopped())); - connect(app_->player(), SIGNAL(ForceShowOSD(Song, bool)), visualisation_.get(), SLOT(SongMetadataChanged(Song))); - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), visualisation_.get(), SLOT(SongMetadataChanged(Song))); + visualisation_->SetActions(ui_->action_previous_track, + ui_->action_play_pause, ui_->action_stop, + ui_->action_next_track); + connect(app_->player(), SIGNAL(Stopped()), visualisation_.get(), + SLOT(Stopped())); + connect(app_->player(), SIGNAL(ForceShowOSD(Song, bool)), + visualisation_.get(), SLOT(SongMetadataChanged(Song))); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), + visualisation_.get(), SLOT(SongMetadataChanged(Song))); - visualisation_->SetEngine(qobject_cast(app_->player()->engine())); + visualisation_->SetEngine( + qobject_cast(app_->player()->engine())); } visualisation_->show(); -#endif // ENABLE_VISUALISATIONS +#endif // ENABLE_VISUALISATIONS } void MainWindow::ConnectInfoView(SongInfoBase* view) { - connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), view, SLOT(SongChanged(Song))); - connect(app_->player(), SIGNAL(PlaylistFinished()), view, SLOT(SongFinished())); + connect(app_->playlist_manager(), SIGNAL(CurrentSongChanged(Song)), view, + SLOT(SongChanged(Song))); + connect(app_->player(), SIGNAL(PlaylistFinished()), view, + SLOT(SongFinished())); connect(app_->player(), SIGNAL(Stopped()), view, SLOT(SongFinished())); connect(view, SIGNAL(ShowSettingsDialog()), SLOT(ShowSongInfoConfig())); - connect(view, SIGNAL(DoGlobalSearch(QString)), - SLOT(DoGlobalSearch(QString))); + connect(view, SIGNAL(DoGlobalSearch(QString)), SLOT(DoGlobalSearch(QString))); } void MainWindow::AddSongInfoGenerator(smart_playlists::GeneratorPtr gen) { - if (!gen) - return; + if (!gen) return; gen->set_library(app_->library_backend()); AddToPlaylist(new smart_playlists::GeneratorMimeData(gen)); @@ -2199,7 +2442,7 @@ void MainWindow::ShowSongInfoConfig() { void MainWindow::PlaylistViewSelectionModelChanged() { connect(ui_->playlist->view()->selectionModel(), - SIGNAL(currentChanged(QModelIndex,QModelIndex)), + SIGNAL(currentChanged(QModelIndex, QModelIndex)), SLOT(PlaylistCurrentChanged(QModelIndex))); } @@ -2223,18 +2466,20 @@ bool MainWindow::winEvent(MSG* msg, long*) { thumbbar_->HandleWinEvent(msg); return false; } -#endif // Q_OS_WIN32 +#endif // Q_OS_WIN32 void MainWindow::Exit() { SavePlaybackStatus(); - if(app_->player()->engine()->is_fadeout_enabled()) { + if (app_->player()->engine()->is_fadeout_enabled()) { // To shut down the application when fadeout will be finished - connect(app_->player()->engine(), SIGNAL(FadeoutFinishedSignal()), qApp, SLOT(quit())); - if(app_->player()->GetState() == Engine::Playing) { + connect(app_->player()->engine(), SIGNAL(FadeoutFinishedSignal()), qApp, + SLOT(quit())); + if (app_->player()->GetState() == Engine::Playing) { app_->player()->Stop(); hide(); tray_icon_->SetVisible(false); - return; // Don't quit the application now: wait for the fadeout finished signal + return; // Don't quit the application now: wait for the fadeout finished + // signal } } qApp->quit(); @@ -2248,10 +2493,11 @@ void MainWindow::AutoCompleteTags() { track_selection_dialog_->set_save_on_close(true); connect(tag_fetcher_.get(), SIGNAL(ResultAvailable(Song, SongList)), - track_selection_dialog_.get(), SLOT(FetchTagFinished(Song, SongList)), - Qt::QueuedConnection); - connect(tag_fetcher_.get(), SIGNAL(Progress(Song,QString)), - track_selection_dialog_.get(), SLOT(FetchTagProgress(Song,QString))); + track_selection_dialog_.get(), + SLOT(FetchTagFinished(Song, SongList)), Qt::QueuedConnection); + connect(tag_fetcher_.get(), SIGNAL(Progress(Song, QString)), + track_selection_dialog_.get(), + SLOT(FetchTagProgress(Song, QString))); connect(track_selection_dialog_.get(), SIGNAL(accepted()), SLOT(AutoCompleteTagsAccepted())); connect(track_selection_dialog_.get(), SIGNAL(finished(int)), @@ -2261,11 +2507,11 @@ void MainWindow::AutoCompleteTags() { // Get the selected songs and start fetching tags for them SongList songs; autocomplete_tag_items_.clear(); - foreach (const QModelIndex& index, - ui_->playlist->view()->selectionModel()->selection().indexes()) { - if (index.column() != 0) - continue; - int row = app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); + for (const QModelIndex& index : + ui_->playlist->view()->selectionModel()->selection().indexes()) { + if (index.column() != 0) continue; + int row = + app_->playlist_manager()->current()->proxy()->mapToSource(index).row(); PlaylistItemPtr item(app_->playlist_manager()->current()->item_at(row)); Song song = item->Metadata(); @@ -2282,7 +2528,7 @@ void MainWindow::AutoCompleteTags() { } void MainWindow::AutoCompleteTagsAccepted() { - foreach (PlaylistItemPtr item, autocomplete_tag_items_) { + for (PlaylistItemPtr item : autocomplete_tag_items_) { item->Reload(); } @@ -2295,14 +2541,14 @@ QPixmap MainWindow::CreateOverlayedIcon(int position, int scrobble_point) { QPixmap light_icon = QIcon(":/last.fm/as.png").pixmap(16); QRect rect(normal_icon.rect()); - //calculates the progress - double perc = 1.0 - ((double) position / (double) scrobble_point); + // calculates the progress + double perc = 1.0 - ((double)position / (double)scrobble_point); QPolygon mask; mask << rect.topRight(); mask << rect.topLeft(); - mask << QPoint(rect.left(), rect.height()*perc); - mask << QPoint(rect.right(), (rect.height())*perc); + mask << QPoint(rect.left(), rect.height() * perc); + mask << QPoint(rect.right(), (rect.height()) * perc); QPixmap ret(light_icon); QPainter p(&ret); @@ -2327,12 +2573,12 @@ void MainWindow::SetToggleScrobblingIcon(bool value) { #ifdef HAVE_LIBLASTFM void MainWindow::ScrobbleSubmitted() { - const LastFMService* lastfm_service = InternetModel::Service(); const bool last_fm_enabled = ui_->action_toggle_scrobbling->isVisible() && - lastfm_service->IsScrobblingEnabled() && - lastfm_service->IsAuthenticated(); + app_->scrobbler()->IsScrobblingEnabled() && + app_->scrobbler()->IsAuthenticated(); - app_->playlist_manager()->active()->set_lastfm_status(Playlist::LastFM_Scrobbled); + app_->playlist_manager()->active()->set_lastfm_status( + Playlist::LastFM_Scrobbled); // update the button icon if (last_fm_enabled) @@ -2343,19 +2589,23 @@ void MainWindow::ScrobbleError(int value) { switch (value) { case -1: // custom error value got from initial validity check - app_->playlist_manager()->active()->set_lastfm_status(Playlist::LastFM_Invalid); + app_->playlist_manager()->active()->set_lastfm_status( + Playlist::LastFM_Invalid); break; case 30: // Hack: when offline, liblastfm doesn't inform us, so set the status - // as queued; in this way we won't try to scrobble again, it will be done automatically - app_->playlist_manager()->active()->set_lastfm_status(Playlist::LastFM_Queued); + // as queued; in this way we won't try to scrobble again, it will be done + // automatically + app_->playlist_manager()->active()->set_lastfm_status( + Playlist::LastFM_Queued); break; default: if (value > 3) { // we're for sure in an error state - app_->playlist_manager()->active()->set_lastfm_status(Playlist::LastFM_Error); + app_->playlist_manager()->active()->set_lastfm_status( + Playlist::LastFM_Error); qLog(Warning) << "Last.fm scrobbling error: " << value; } break; @@ -2363,10 +2613,13 @@ void MainWindow::ScrobbleError(int value) { } #endif -void MainWindow::HandleNotificationPreview(OSD::Behaviour type, QString line1, QString line2) { +void MainWindow::HandleNotificationPreview(OSD::Behaviour type, QString line1, + QString line2) { if (!app_->playlist_manager()->current()->GetAllSongs().isEmpty()) { // Show a preview notification for the first song in the current playlist - osd_->ShowPreview(type, line1, line2, app_->playlist_manager()->current()->GetAllSongs().first()); + osd_->ShowPreview( + type, line1, line2, + app_->playlist_manager()->current()->GetAllSongs().first()); } else { qLog(Debug) << "The current playlist is empty, showing a fake song"; // Create a fake song @@ -2408,13 +2661,13 @@ void MainWindow::ShowConsole() { } void MainWindow::keyPressEvent(QKeyEvent* event) { - if(event->key() == Qt::Key_Space) { + if (event->key() == Qt::Key_Space) { app_->player()->PlayPause(); event->accept(); - } else if(event->key() == Qt::Key_Left) { + } else if (event->key() == Qt::Key_Left) { ui_->track_slider->Seek(-1); event->accept(); - } else if(event->key() == Qt::Key_Right) { + } else if (event->key() == Qt::Key_Right) { ui_->track_slider->Seek(1); event->accept(); } else { diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 8f11c8bdc..427c21f66 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -18,7 +18,7 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include +#include #include #include @@ -82,17 +82,14 @@ class WiimotedevShortcuts; class Windows7ThumbBar; class Ui_MainWindow; - class QSortFilterProxyModel; class MainWindow : public QMainWindow, public PlatformInterface { Q_OBJECT public: - MainWindow(Application* app, - SystemTrayIcon* tray_icon, - OSD* osd, - QWidget *parent = 0); + MainWindow(Application* app, SystemTrayIcon* tray_icon, OSD* osd, + QWidget* parent = nullptr); ~MainWindow(); static const char* kSettingsGroup; @@ -136,13 +133,13 @@ class MainWindow : public QMainWindow, public PlatformInterface { void Activate(); bool LoadUrl(const QString& url); - signals: +signals: // Signals that stop playing after track was toggled. void StopAfterToggled(bool stop); private slots: void FilePathChanged(const QString& path); - + void MediaStopped(); void MediaPaused(); void MediaPlaying(); @@ -155,6 +152,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { void PlaylistPlay(); void PlaylistStopAfter(); void PlaylistQueue(); + void PlaylistSkip(); void PlaylistRemoveCurrent(); void PlaylistEditFinished(const QModelIndex& index); void EditTracks(); @@ -197,7 +195,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { void Seeked(qlonglong microseconds); void UpdateTrackPosition(); - //Handle visibility of LastFM icons + // Handle visibility of LastFM icons void LastFMButtonVisibilityChanged(bool value); void ScrobbleButtonVisibilityChanged(bool value); void SetToggleScrobblingIcon(bool value); @@ -261,7 +259,8 @@ class MainWindow : public QMainWindow, public PlatformInterface { void Exit(); - void HandleNotificationPreview(OSD::Behaviour type, QString line1, QString line2); + void HandleNotificationPreview(OSD::Behaviour type, QString line1, + QString line2); void ScrollToInternetIndex(const QModelIndex& index); void FocusGlobalSearchField(); @@ -277,7 +276,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { void CheckFullRescanRevisions(); - //creates the icon by painting the full one depending on the current position + // creates the icon by painting the full one depending on the current position QPixmap CreateOverlayedIcon(int position, int scrobble_point); private: @@ -287,8 +286,8 @@ class MainWindow : public QMainWindow, public PlatformInterface { Application* app_; SystemTrayIcon* tray_icon_; OSD* osd_; - boost::scoped_ptr edit_tag_dialog_; - boost::scoped_ptr about_dialog_; + std::unique_ptr edit_tag_dialog_; + std::unique_ptr about_dialog_; GlobalShortcuts* global_shortcuts_; Remote* remote_; @@ -296,9 +295,9 @@ class MainWindow : public QMainWindow, public PlatformInterface { GlobalSearchView* global_search_view_; LibraryViewContainer* library_view_; FileView* file_view_; - #ifdef HAVE_AUDIOCD - boost::scoped_ptr rip_cd_; - #endif +#ifdef HAVE_AUDIOCD + std::unique_ptr rip_cd_; +#endif PlaylistListContainer* playlist_list_; InternetViewContainer* internet_view_; DeviceViewContainer* device_view_container_; @@ -306,25 +305,25 @@ class MainWindow : public QMainWindow, public PlatformInterface { SongInfoView* song_info_view_; ArtistInfoView* artist_info_view_; - boost::scoped_ptr settings_dialog_; - boost::scoped_ptr add_stream_dialog_; - boost::scoped_ptr cover_manager_; - boost::scoped_ptr equalizer_; - boost::scoped_ptr transcode_dialog_; - boost::scoped_ptr error_dialog_; - boost::scoped_ptr organise_dialog_; - boost::scoped_ptr queue_manager_; + std::unique_ptr settings_dialog_; + std::unique_ptr add_stream_dialog_; + std::unique_ptr cover_manager_; + std::unique_ptr equalizer_; + std::unique_ptr transcode_dialog_; + std::unique_ptr error_dialog_; + std::unique_ptr organise_dialog_; + std::unique_ptr queue_manager_; - boost::scoped_ptr tag_fetcher_; - boost::scoped_ptr track_selection_dialog_; + std::unique_ptr tag_fetcher_; + std::unique_ptr track_selection_dialog_; PlaylistItemList autocomplete_tag_items_; #ifdef ENABLE_VISUALISATIONS - boost::scoped_ptr visualisation_; + std::unique_ptr visualisation_; #endif #ifdef HAVE_WIIMOTEDEV - boost::scoped_ptr wiimotedev_shortcuts_; + std::unique_ptr wiimotedev_shortcuts_; #endif QAction* library_show_all_; @@ -343,6 +342,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { QAction* playlist_delete_; QAction* playlist_open_in_browser_; QAction* playlist_queue_; + QAction* playlist_skip_; QAction* playlist_add_to_another_; QList playlistitem_actions_; QAction* playlistitem_actions_separator_; @@ -363,4 +363,4 @@ class MainWindow : public QMainWindow, public PlatformInterface { BackgroundStreams* background_streams_; }; -#endif // MAINWINDOW_H +#endif // MAINWINDOW_H diff --git a/src/ui/mainwindow.ui b/src/ui/mainwindow.ui index 34856cb02..e926e841f 100644 --- a/src/ui/mainwindow.ui +++ b/src/ui/mainwindow.ui @@ -200,19 +200,6 @@ - - - - - 22 - 22 - - - - true - - - @@ -435,7 +422,6 @@ - @@ -567,21 +553,6 @@ Ctrl+L - - - false - - - - :/last.fm/ban.png:/last.fm/ban.png - - - Ban - - - Ctrl+B - - Clear playlist diff --git a/src/ui/networkproxysettingspage.cpp b/src/ui/networkproxysettingspage.cpp index 623abfd49..19efb05ae 100644 --- a/src/ui/networkproxysettingspage.cpp +++ b/src/ui/networkproxysettingspage.cpp @@ -22,18 +22,13 @@ #include - NetworkProxySettingsPage::NetworkProxySettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_NetworkProxySettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_NetworkProxySettingsPage) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("applications-internet")); } -NetworkProxySettingsPage::~NetworkProxySettingsPage() { - delete ui_; -} +NetworkProxySettingsPage::~NetworkProxySettingsPage() { delete ui_; } void NetworkProxySettingsPage::Load() { QSettings s; @@ -42,22 +37,25 @@ void NetworkProxySettingsPage::Load() { NetworkProxyFactory::Mode mode = NetworkProxyFactory::Mode( s.value("mode", NetworkProxyFactory::Mode_System).toInt()); switch (mode) { - case NetworkProxyFactory::Mode_Manual: - ui_->proxy_manual->setChecked(true); - break; + case NetworkProxyFactory::Mode_Manual: + ui_->proxy_manual->setChecked(true); + break; - case NetworkProxyFactory::Mode_Direct: - ui_->proxy_direct->setChecked(true); - break; + case NetworkProxyFactory::Mode_Direct: + ui_->proxy_direct->setChecked(true); + break; - case NetworkProxyFactory::Mode_System: - default: - ui_->proxy_system->setChecked(true); - break; + case NetworkProxyFactory::Mode_System: + default: + ui_->proxy_system->setChecked(true); + break; } - ui_->proxy_type->setCurrentIndex(s.value("type", QNetworkProxy::HttpProxy) - .toInt() == QNetworkProxy::HttpProxy ? 0 : 1); + ui_->proxy_type->setCurrentIndex( + s.value("type", QNetworkProxy::HttpProxy).toInt() == + QNetworkProxy::HttpProxy + ? 0 + : 1); ui_->proxy_hostname->setText(s.value("hostname").toString()); ui_->proxy_port->setValue(s.value("port").toInt()); ui_->proxy_auth->setChecked(s.value("use_authentication", false).toBool()); @@ -70,14 +68,18 @@ void NetworkProxySettingsPage::Save() { QSettings s; NetworkProxyFactory::Mode mode = NetworkProxyFactory::Mode_System; - if (ui_->proxy_direct->isChecked()) mode = NetworkProxyFactory::Mode_Direct; - else if (ui_->proxy_system->isChecked()) mode = NetworkProxyFactory::Mode_System; - else if (ui_->proxy_manual->isChecked()) mode = NetworkProxyFactory::Mode_Manual; + if (ui_->proxy_direct->isChecked()) + mode = NetworkProxyFactory::Mode_Direct; + else if (ui_->proxy_system->isChecked()) + mode = NetworkProxyFactory::Mode_System; + else if (ui_->proxy_manual->isChecked()) + mode = NetworkProxyFactory::Mode_Manual; s.beginGroup(NetworkProxyFactory::kSettingsGroup); s.setValue("mode", mode); - s.setValue("type", ui_->proxy_type->currentIndex() == 0 ? - QNetworkProxy::HttpProxy : QNetworkProxy::Socks5Proxy); + s.setValue("type", ui_->proxy_type->currentIndex() == 0 + ? QNetworkProxy::HttpProxy + : QNetworkProxy::Socks5Proxy); s.setValue("hostname", ui_->proxy_hostname->text()); s.setValue("port", ui_->proxy_port->value()); s.setValue("use_authentication", ui_->proxy_auth->isChecked()); diff --git a/src/ui/networkproxysettingspage.h b/src/ui/networkproxysettingspage.h index 317653913..9cde92ae9 100644 --- a/src/ui/networkproxysettingspage.h +++ b/src/ui/networkproxysettingspage.h @@ -25,15 +25,15 @@ class Ui_NetworkProxySettingsPage; class NetworkProxySettingsPage : public SettingsPage { Q_OBJECT -public: + public: NetworkProxySettingsPage(SettingsDialog* dialog); ~NetworkProxySettingsPage(); void Load(); void Save(); -private: + private: Ui_NetworkProxySettingsPage* ui_; }; -#endif // NETWORKPROXYSETTINGSPAGE_H +#endif // NETWORKPROXYSETTINGSPAGE_H diff --git a/src/ui/networkremotesettingspage.cpp b/src/ui/networkremotesettingspage.cpp index 09221becf..01c59b8db 100644 --- a/src/ui/networkremotesettingspage.cpp +++ b/src/ui/networkremotesettingspage.cpp @@ -30,18 +30,14 @@ const char* NetworkRemoteSettingsPage::kPlayStoreUrl = "https://play.google.com/store/apps/details?id=de.qspool.clementineremote"; NetworkRemoteSettingsPage::NetworkRemoteSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_NetworkRemoteSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_NetworkRemoteSettingsPage) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("ipodtouchicon")); ui_->play_store->installEventFilter(this); } -NetworkRemoteSettingsPage::~NetworkRemoteSettingsPage() { - delete ui_; -} +NetworkRemoteSettingsPage::~NetworkRemoteSettingsPage() { delete ui_; } bool NetworkRemoteSettingsPage::eventFilter(QObject* object, QEvent* event) { if (object == ui_->play_store && @@ -75,7 +71,7 @@ void NetworkRemoteSettingsPage::Load() { // Get local ip addresses QString ip_addresses; QList addresses = QNetworkInterface::allAddresses(); - foreach (const QHostAddress& address, addresses) { + for (const QHostAddress& address : addresses) { // TODO: Add ipv6 support to tinysvcmdns. if (address.protocol() == QAbstractSocket::IPv4Protocol && !address.isInSubnet(QHostAddress::parseSubnet("127.0.0.1/8"))) { diff --git a/src/ui/networkremotesettingspage.h b/src/ui/networkremotesettingspage.h index 265440773..3a8a06d8d 100644 --- a/src/ui/networkremotesettingspage.h +++ b/src/ui/networkremotesettingspage.h @@ -25,20 +25,20 @@ class Ui_NetworkRemoteSettingsPage; class NetworkRemoteSettingsPage : public SettingsPage { Q_OBJECT -public: + public: NetworkRemoteSettingsPage(SettingsDialog* dialog); ~NetworkRemoteSettingsPage(); void Load(); void Save(); -protected: + protected: bool eventFilter(QObject* object, QEvent* event); -private: + private: static const char* kPlayStoreUrl; Ui_NetworkRemoteSettingsPage* ui_; }; -#endif // NETWORKREMOTESETTINGSPAGE_H +#endif // NETWORKREMOTESETTINGSPAGE_H diff --git a/src/ui/networkremotesettingspage.ui b/src/ui/networkremotesettingspage.ui index 23120536b..bcf0487f6 100644 --- a/src/ui/networkremotesettingspage.ui +++ b/src/ui/networkremotesettingspage.ui @@ -121,7 +121,7 @@ - 127.0.0.1 + 127.0.0.1 diff --git a/src/ui/notificationssettingspage.cpp b/src/ui/notificationssettingspage.cpp index ef05f15ac..11b1e4c55 100644 --- a/src/ui/notificationssettingspage.cpp +++ b/src/ui/notificationssettingspage.cpp @@ -27,18 +27,19 @@ #include NotificationsSettingsPage::NotificationsSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_NotificationsSettingsPage), - pretty_popup_(new OSDPretty(OSDPretty::Mode_Draggable)) -{ + : SettingsPage(dialog), + ui_(new Ui_NotificationsSettingsPage), + pretty_popup_(new OSDPretty(OSDPretty::Mode_Draggable)) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("help-hint")); pretty_popup_->SetMessage(tr("OSD Preview"), tr("Drag to reposition"), QImage(":nocover.png")); - ui_->notifications_bg_preset->setItemData(0, QColor(OSDPretty::kPresetBlue), Qt::DecorationRole); - ui_->notifications_bg_preset->setItemData(1, QColor(OSDPretty::kPresetOrange), Qt::DecorationRole); + ui_->notifications_bg_preset->setItemData(0, QColor(OSDPretty::kPresetBlue), + Qt::DecorationRole); + ui_->notifications_bg_preset->setItemData(1, QColor(OSDPretty::kPresetOrange), + Qt::DecorationRole); // Create and populate the helper menus QMenu* menu = new QMenu(this); @@ -68,27 +69,40 @@ NotificationsSettingsPage::NotificationsSettingsPage(SettingsDialog* dialog) // We need this because by default menus don't show tooltips connect(menu, SIGNAL(hovered(QAction*)), SLOT(ShowMenuTooltip(QAction*))); - connect(ui_->notifications_none, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged())); - connect(ui_->notifications_native, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged())); - connect(ui_->notifications_tray, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged())); - connect(ui_->notifications_pretty, SIGNAL(toggled(bool)), SLOT(NotificationTypeChanged())); - connect(ui_->notifications_opacity, SIGNAL(valueChanged(int)), SLOT(PrettyOpacityChanged(int))); - connect(ui_->notifications_bg_preset, SIGNAL(activated(int)), SLOT(PrettyColorPresetChanged(int))); - connect(ui_->notifications_fg_choose, SIGNAL(clicked()), SLOT(ChooseFgColor())); - connect(ui_->notifications_font_choose, SIGNAL(clicked()), SLOT(ChooseFont())); - connect(ui_->notifications_exp_chooser1, SIGNAL(triggered(QAction*)), SLOT(InsertVariableFirstLine(QAction*))); - connect(ui_->notifications_exp_chooser2, SIGNAL(triggered(QAction*)), SLOT(InsertVariableSecondLine(QAction*))); - connect(ui_->notifications_disable_duration, SIGNAL(toggled(bool)), ui_->notifications_duration, SLOT(setDisabled(bool))); + connect(ui_->notifications_none, SIGNAL(toggled(bool)), + SLOT(NotificationTypeChanged())); + connect(ui_->notifications_native, SIGNAL(toggled(bool)), + SLOT(NotificationTypeChanged())); + connect(ui_->notifications_tray, SIGNAL(toggled(bool)), + SLOT(NotificationTypeChanged())); + connect(ui_->notifications_pretty, SIGNAL(toggled(bool)), + SLOT(NotificationTypeChanged())); + connect(ui_->notifications_opacity, SIGNAL(valueChanged(int)), + SLOT(PrettyOpacityChanged(int))); + connect(ui_->notifications_bg_preset, SIGNAL(activated(int)), + SLOT(PrettyColorPresetChanged(int))); + connect(ui_->notifications_fg_choose, SIGNAL(clicked()), + SLOT(ChooseFgColor())); + connect(ui_->notifications_font_choose, SIGNAL(clicked()), + SLOT(ChooseFont())); + connect(ui_->notifications_exp_chooser1, SIGNAL(triggered(QAction*)), + SLOT(InsertVariableFirstLine(QAction*))); + connect(ui_->notifications_exp_chooser2, SIGNAL(triggered(QAction*)), + SLOT(InsertVariableSecondLine(QAction*))); + connect(ui_->notifications_disable_duration, SIGNAL(toggled(bool)), + ui_->notifications_duration, SLOT(setDisabled(bool))); if (!OSD::SupportsNativeNotifications()) ui_->notifications_native->setEnabled(false); - if (!OSD::SupportsTrayPopups()) - ui_->notifications_tray->setEnabled(false); + if (!OSD::SupportsTrayPopups()) ui_->notifications_tray->setEnabled(false); - connect(ui_->notifications_pretty, SIGNAL(toggled(bool)), SLOT(UpdatePopupVisible())); + connect(ui_->notifications_pretty, SIGNAL(toggled(bool)), + SLOT(UpdatePopupVisible())); - connect(ui_->notifications_custom_text_enabled, SIGNAL(toggled(bool)), SLOT(NotificationCustomTextChanged(bool))); - connect(ui_->notifications_preview, SIGNAL(clicked()), SLOT(PrepareNotificationPreview())); + connect(ui_->notifications_custom_text_enabled, SIGNAL(toggled(bool)), + SLOT(NotificationCustomTextChanged(bool))); + connect(ui_->notifications_preview, SIGNAL(clicked()), + SLOT(PrepareNotificationPreview())); // Icons ui_->notifications_exp_chooser1->setIcon(IconLoader::Load("list-add")); @@ -100,26 +114,23 @@ NotificationsSettingsPage::~NotificationsSettingsPage() { delete ui_; } -void NotificationsSettingsPage::showEvent(QShowEvent*) { - UpdatePopupVisible(); -} +void NotificationsSettingsPage::showEvent(QShowEvent*) { UpdatePopupVisible(); } -void NotificationsSettingsPage::hideEvent(QHideEvent*) { - UpdatePopupVisible(); -} +void NotificationsSettingsPage::hideEvent(QHideEvent*) { UpdatePopupVisible(); } void NotificationsSettingsPage::Load() { QSettings s; s.beginGroup(OSD::kSettingsGroup); - OSD::Behaviour osd_behaviour = OSD::Behaviour(s.value("Behaviour", OSD::Native).toInt()); + OSD::Behaviour osd_behaviour = + OSD::Behaviour(s.value("Behaviour", OSD::Native).toInt()); switch (osd_behaviour) { case OSD::Native: if (OSD::SupportsNativeNotifications()) { ui_->notifications_native->setChecked(true); break; } - // Fallthrough + // Fallthrough case OSD::Pretty: ui_->notifications_pretty->setChecked(true); @@ -130,29 +141,35 @@ void NotificationsSettingsPage::Load() { ui_->notifications_tray->setChecked(true); break; } - // Fallthrough + // Fallthrough case OSD::Disabled: default: ui_->notifications_none->setChecked(true); break; } - ui_->notifications_duration->setValue(s.value("Timeout", 5000).toInt() / 1000); - ui_->notifications_volume->setChecked(s.value("ShowOnVolumeChange", false).toBool()); - ui_->notifications_play_mode->setChecked(s.value("ShowOnPlayModeChange", true).toBool()); + ui_->notifications_duration->setValue(s.value("Timeout", 5000).toInt() / + 1000); + ui_->notifications_volume->setChecked( + s.value("ShowOnVolumeChange", false).toBool()); + ui_->notifications_play_mode->setChecked( + s.value("ShowOnPlayModeChange", true).toBool()); ui_->notifications_art->setChecked(s.value("ShowArt", true).toBool()); - ui_->notifications_custom_text_enabled->setChecked(s.value("CustomTextEnabled", false).toBool()); + ui_->notifications_custom_text_enabled->setChecked( + s.value("CustomTextEnabled", false).toBool()); ui_->notifications_custom_text1->setText(s.value("CustomText1").toString()); ui_->notifications_custom_text2->setText(s.value("CustomText2").toString()); s.endGroup(); #ifdef Q_OS_DARWIN - ui_->notifications_options->setEnabled(ui_->notifications_pretty->isChecked()); + ui_->notifications_options->setEnabled( + ui_->notifications_pretty->isChecked()); #endif // Pretty OSD pretty_popup_->ReloadSettings(); - ui_->notifications_opacity->setValue(pretty_popup_->background_opacity() * 100); + ui_->notifications_opacity->setValue(pretty_popup_->background_opacity() * + 100); QRgb color = pretty_popup_->background_color(); if (color == OSDPretty::kPresetBlue) @@ -161,8 +178,10 @@ void NotificationsSettingsPage::Load() { ui_->notifications_bg_preset->setCurrentIndex(1); else ui_->notifications_bg_preset->setCurrentIndex(2); - ui_->notifications_bg_preset->setItemData(2, QColor(color), Qt::DecorationRole); - ui_->notifications_disable_duration->setChecked(pretty_popup_->disable_duration()); + ui_->notifications_bg_preset->setItemData(2, QColor(color), + Qt::DecorationRole); + ui_->notifications_disable_duration->setChecked( + pretty_popup_->disable_duration()); UpdatePopupVisible(); } @@ -170,10 +189,14 @@ void NotificationsSettingsPage::Save() { QSettings s; OSD::Behaviour osd_behaviour = OSD::Disabled; - if (ui_->notifications_none->isChecked()) osd_behaviour = OSD::Disabled; - else if (ui_->notifications_native->isChecked()) osd_behaviour = OSD::Native; - else if (ui_->notifications_tray->isChecked()) osd_behaviour = OSD::TrayPopup; - else if (ui_->notifications_pretty->isChecked()) osd_behaviour = OSD::Pretty; + if (ui_->notifications_none->isChecked()) + osd_behaviour = OSD::Disabled; + else if (ui_->notifications_native->isChecked()) + osd_behaviour = OSD::Native; + else if (ui_->notifications_tray->isChecked()) + osd_behaviour = OSD::TrayPopup; + else if (ui_->notifications_pretty->isChecked()) + osd_behaviour = OSD::Pretty; s.beginGroup(OSD::kSettingsGroup); s.setValue("Behaviour", int(osd_behaviour)); @@ -181,7 +204,8 @@ void NotificationsSettingsPage::Save() { s.setValue("ShowOnVolumeChange", ui_->notifications_volume->isChecked()); s.setValue("ShowOnPlayModeChange", ui_->notifications_play_mode->isChecked()); s.setValue("ShowArt", ui_->notifications_art->isChecked()); - s.setValue("CustomTextEnabled", ui_->notifications_custom_text_enabled->isChecked()); + s.setValue("CustomTextEnabled", + ui_->notifications_custom_text_enabled->isChecked()); s.setValue("CustomText1", ui_->notifications_custom_text1->text()); s.setValue("CustomText2", ui_->notifications_custom_text2->text()); s.endGroup(); @@ -193,7 +217,8 @@ void NotificationsSettingsPage::Save() { s.setValue("popup_display", pretty_popup_->popup_display()); s.setValue("popup_pos", pretty_popup_->popup_pos()); s.setValue("font", pretty_popup_->font().toString()); - s.setValue("disable_duration", ui_->notifications_disable_duration->isChecked()); + s.setValue("disable_duration", + ui_->notifications_disable_duration->isChecked()); s.endGroup(); } @@ -202,44 +227,42 @@ void NotificationsSettingsPage::PrettyOpacityChanged(int value) { } void NotificationsSettingsPage::UpdatePopupVisible() { - pretty_popup_->setVisible( - isVisible() && - ui_->notifications_pretty->isChecked()); + pretty_popup_->setVisible(isVisible() && + ui_->notifications_pretty->isChecked()); } void NotificationsSettingsPage::PrettyColorPresetChanged(int index) { - if (dialog()->is_loading_settings()) - return; + if (dialog()->is_loading_settings()) return; switch (index) { - case 0: - pretty_popup_->set_background_color(OSDPretty::kPresetBlue); - break; + case 0: + pretty_popup_->set_background_color(OSDPretty::kPresetBlue); + break; - case 1: - pretty_popup_->set_background_color(OSDPretty::kPresetOrange); - break; + case 1: + pretty_popup_->set_background_color(OSDPretty::kPresetOrange); + break; - case 2: - default: - ChooseBgColor(); - break; + case 2: + default: + ChooseBgColor(); + break; } } void NotificationsSettingsPage::ChooseBgColor() { - QColor color = QColorDialog::getColor(pretty_popup_->background_color(), this); - if (!color.isValid()) - return; + QColor color = + QColorDialog::getColor(pretty_popup_->background_color(), this); + if (!color.isValid()) return; pretty_popup_->set_background_color(color.rgb()); ui_->notifications_bg_preset->setItemData(2, color, Qt::DecorationRole); } void NotificationsSettingsPage::ChooseFgColor() { - QColor color = QColorDialog::getColor(pretty_popup_->foreground_color(), this); - if (!color.isValid()) - return; + QColor color = + QColorDialog::getColor(pretty_popup_->foreground_color(), this); + if (!color.isValid()) return; pretty_popup_->set_foreground_color(color.rgb()); } @@ -247,8 +270,7 @@ void NotificationsSettingsPage::ChooseFgColor() { void NotificationsSettingsPage::ChooseFont() { bool ok; QFont font = QFontDialog::getFont(&ok, pretty_popup_->font(), this); - if (ok) - pretty_popup_->set_font(font); + if (ok) pretty_popup_->set_font(font); } void NotificationsSettingsPage::NotificationCustomTextChanged(bool enabled) { @@ -271,8 +293,11 @@ void NotificationsSettingsPage::PrepareNotificationPreview() { notificationType = OSD::TrayPopup; } - // If user changes timeout or other options, that won't be reflected in the preview - emit NotificationPreview(notificationType, ui_->notifications_custom_text1->text(), ui_->notifications_custom_text2->text()); + // If user changes timeout or other options, that won't be reflected in the + // preview + emit NotificationPreview(notificationType, + ui_->notifications_custom_text1->text(), + ui_->notifications_custom_text2->text()); } void NotificationsSettingsPage::InsertVariableFirstLine(QAction* action) { @@ -300,6 +325,7 @@ void NotificationsSettingsPage::NotificationTypeChanged() { #ifdef Q_OS_DARWIN ui_->notifications_options->setEnabled(pretty); #endif - ui_->notifications_duration->setEnabled(!pretty || (pretty && !ui_->notifications_disable_duration->isChecked())); + ui_->notifications_duration->setEnabled( + !pretty || (pretty && !ui_->notifications_disable_duration->isChecked())); ui_->notifications_disable_duration->setEnabled(pretty); } diff --git a/src/ui/notificationssettingspage.h b/src/ui/notificationssettingspage.h index 9f32b48cd..a088cf8e1 100644 --- a/src/ui/notificationssettingspage.h +++ b/src/ui/notificationssettingspage.h @@ -25,18 +25,18 @@ class Ui_NotificationsSettingsPage; class NotificationsSettingsPage : public SettingsPage { Q_OBJECT -public: + public: NotificationsSettingsPage(SettingsDialog* dialog); ~NotificationsSettingsPage(); void Load(); void Save(); -protected: + protected: void hideEvent(QHideEvent*); void showEvent(QShowEvent*); -private slots: + private slots: void NotificationTypeChanged(); void NotificationCustomTextChanged(bool enabled); void PrepareNotificationPreview(); @@ -52,9 +52,9 @@ private slots: void UpdatePopupVisible(); -private: + private: Ui_NotificationsSettingsPage* ui_; OSDPretty* pretty_popup_; }; -#endif // NOTIFICATIONSSETTINGSPAGE_H +#endif // NOTIFICATIONSSETTINGSPAGE_H diff --git a/src/ui/organisedialog.cpp b/src/ui/organisedialog.cpp index 45bea8f6e..fd9f0a36f 100644 --- a/src/ui/organisedialog.cpp +++ b/src/ui/organisedialog.cpp @@ -15,38 +15,43 @@ along with Clementine. If not, see . */ -#include "iconloader.h" #include "organisedialog.h" -#include "organiseerrordialog.h" #include "ui_organisedialog.h" -#include "core/musicstorage.h" -#include "core/organise.h" -#include "core/tagreaderclient.h" -#include "core/utilities.h" + +#include #include #include +#include #include #include #include #include #include #include +#include #include +#include "iconloader.h" +#include "organiseerrordialog.h" +#include "core/musicstorage.h" +#include "core/organise.h" +#include "core/tagreaderclient.h" +#include "core/utilities.h" + const char* OrganiseDialog::kDefaultFormat = "%artist/%album{ (Disc %disc)}/{%track - }%title.%extension"; const char* OrganiseDialog::kSettingsGroup = "OrganiseDialog"; -OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget *parent) - : QDialog(parent), - ui_(new Ui_OrganiseDialog), - task_manager_(task_manager), - total_size_(0), - resized_by_user_(false) -{ +OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget* parent) + : QDialog(parent), + ui_(new Ui_OrganiseDialog), + task_manager_(task_manager), + total_size_(0), + resized_by_user_(false) { ui_->setupUi(this); - connect(ui_->buttonBox->button(QDialogButtonBox::Reset), SIGNAL(clicked()), SLOT(Reset())); + connect(ui_->button_box->button(QDialogButtonBox::Reset), SIGNAL(clicked()), + SLOT(Reset())); ui_->aftercopying->setItemIcon(1, IconLoader::Load("edit-delete")); @@ -74,7 +79,8 @@ OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget *parent) // Naming scheme input field new OrganiseFormat::SyntaxHighlighter(ui_->naming); - connect(ui_->destination, SIGNAL(currentIndexChanged(int)), SLOT(UpdatePreviews())); + connect(ui_->destination, SIGNAL(currentIndexChanged(int)), + SLOT(UpdatePreviews())); connect(ui_->naming, SIGNAL(textChanged()), SLOT(UpdatePreviews())); connect(ui_->replace_ascii, SIGNAL(toggled(bool)), SLOT(UpdatePreviews())); connect(ui_->replace_the, SIGNAL(toggled(bool)), SLOT(UpdatePreviews())); @@ -96,17 +102,16 @@ OrganiseDialog::OrganiseDialog(TaskManager* task_manager, QWidget *parent) ui_->insert->setMenu(tag_menu); } -OrganiseDialog::~OrganiseDialog() { - delete ui_; -} +OrganiseDialog::~OrganiseDialog() { delete ui_; } -void OrganiseDialog::SetDestinationModel(QAbstractItemModel *model, bool devices) { +void OrganiseDialog::SetDestinationModel(QAbstractItemModel* model, + bool devices) { ui_->destination->setModel(model); ui_->eject_after->setVisible(devices); } -int OrganiseDialog::SetSongs(const SongList& songs) { +bool OrganiseDialog::SetSongs(const SongList& songs) { total_size_ = 0; songs_.clear(); @@ -115,58 +120,96 @@ int OrganiseDialog::SetSongs(const SongList& songs) { continue; } - if (song.filesize() > 0) - total_size_ += song.filesize(); + if (song.filesize() > 0) total_size_ += song.filesize(); songs_ << song; } ui_->free_space->set_additional_bytes(total_size_); UpdatePreviews(); + SetLoadingSongs(false); + + if (songs_future_.isRunning()) { + songs_future_.cancel(); + } + songs_future_ = QFuture(); return songs_.count(); } -int OrganiseDialog::SetUrls(const QList &urls, quint64 total_size) { - SongList songs; - Song song; +bool OrganiseDialog::SetUrls(const QList& urls) { + QStringList filenames; // Only add file:// URLs for (const QUrl& url : urls) { - if (url.scheme() != "file") - continue; - TagReaderClient::Instance()->ReadFileBlocking(url.toLocalFile(), &song); - if (song.is_valid()) - songs << song; + if (url.scheme() == "file") { + filenames << url.toLocalFile(); + } } - return SetSongs(songs); + return SetFilenames(filenames); } -int OrganiseDialog::SetFilenames(const QStringList& filenames, quint64 total_size) { +bool OrganiseDialog::SetFilenames(const QStringList& filenames) { + songs_future_ = + QtConcurrent::run(this, &OrganiseDialog::LoadSongsBlocking, filenames); + QFutureWatcher* watcher = new QFutureWatcher(this); + watcher->setFuture(songs_future_); + NewClosure(watcher, SIGNAL(finished()), [=]() { + SetSongs(songs_future_.result()); + watcher->deleteLater(); + }); + + SetLoadingSongs(true); + return true; +} + +void OrganiseDialog::SetLoadingSongs(bool loading) { + if (loading) { + ui_->preview_stack->setCurrentWidget(ui_->loading_page); + ui_->button_box->button(QDialogButtonBox::Ok)->setEnabled(false); + } else { + ui_->preview_stack->setCurrentWidget(ui_->preview_page); + // The Ok button is enabled by UpdatePreviews + } +} + +SongList OrganiseDialog::LoadSongsBlocking(const QStringList& filenames) { SongList songs; Song song; - // Load some of the songs to show in the preview - for (const QString& filename : filenames) { + QStringList filenames_copy = filenames; + while (!filenames_copy.isEmpty()) { + const QString filename = filenames_copy.takeFirst(); + + // If it's a directory, add all the files inside. + if (QFileInfo(filename).isDir()) { + const QDir dir(filename); + for (const QString& entry : + dir.entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot | + QDir::Readable)) { + filenames_copy << dir.filePath(entry); + } + continue; + } + TagReaderClient::Instance()->ReadFileBlocking(filename, &song); - if (song.is_valid()) - songs << song; + if (song.is_valid()) songs << song; } - return SetSongs(songs); + + return songs; } void OrganiseDialog::SetCopy(bool copy) { ui_->aftercopying->setCurrentIndex(copy ? 0 : 1); } -void OrganiseDialog::InsertTag(const QString &tag) { +void OrganiseDialog::InsertTag(const QString& tag) { ui_->naming->insertPlainText("%" + tag); } Organise::NewSongInfoList OrganiseDialog::ComputeNewSongsFilenames( const SongList& songs, const OrganiseFormat& format) { - // Check if we will have multiple files with the same name. // If so, they will erase each other if the overwrite flag is set. // Better to rename them: e.g. foo.bar -> foo(2).bar @@ -177,9 +220,9 @@ Organise::NewSongInfoList OrganiseDialog::ComputeNewSongsFilenames( QString new_filename = format.GetFilenameForSong(song); if (filenames.contains(new_filename)) { QString song_number = QString::number(++filenames[new_filename]); - new_filename = - Utilities::PathWithoutFilenameExtension(new_filename) + - "(" + song_number + ")." + QFileInfo(new_filename).suffix(); + new_filename = Utilities::PathWithoutFilenameExtension(new_filename) + + "(" + song_number + ")." + + QFileInfo(new_filename).suffix(); } filenames.insert(new_filename, 1); new_songs_info << Organise::NewSongInfo(song, new_filename); @@ -188,14 +231,18 @@ Organise::NewSongInfoList OrganiseDialog::ComputeNewSongsFilenames( } void OrganiseDialog::UpdatePreviews() { - const QModelIndex destination = ui_->destination->model()->index( - ui_->destination->currentIndex(), 0); - boost::shared_ptr storage; + if (songs_future_.isRunning()) { + return; + } + + const QModelIndex destination = + ui_->destination->model()->index(ui_->destination->currentIndex(), 0); + std::shared_ptr storage; bool has_local_destination = false; if (destination.isValid()) { storage = destination.data(MusicStorage::Role_Storage) - .value >(); + .value>(); if (storage) { has_local_destination = !storage->LocalPath().isEmpty(); } @@ -223,12 +270,10 @@ void OrganiseDialog::UpdatePreviews() { // Are we gonna enable the ok button? bool ok = format_valid && !songs_.isEmpty(); - if (capacity != 0 && total_size_ > free) - ok = false; + if (capacity != 0 && total_size_ > free) ok = false; - ui_->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ok); - if (!format_valid) - return; + ui_->button_box->button(QDialogButtonBox::Ok)->setEnabled(ok); + if (!format_valid) return; new_songs_info_ = ComputeNewSongsFilenames(songs_, format_); @@ -238,8 +283,7 @@ void OrganiseDialog::UpdatePreviews() { ui_->naming_group->setVisible(has_local_destination); if (has_local_destination) { for (const Organise::NewSongInfo& song_info : new_songs_info_) { - QString filename = storage->LocalPath() + "/" + - song_info.new_filename_; + QString filename = storage->LocalPath() + "/" + song_info.new_filename_; ui_->preview->addItem(QDir::toNativeSeparators(filename)); } } @@ -249,9 +293,7 @@ void OrganiseDialog::UpdatePreviews() { } } -QSize OrganiseDialog::sizeHint() const { - return QSize(650, 0); -} +QSize OrganiseDialog::sizeHint() const { return QSize(650, 0); } void OrganiseDialog::Reset() { ui_->naming->setPlainText(kDefaultFormat); @@ -292,29 +334,28 @@ void OrganiseDialog::accept() { s.setValue("destination", ui_->destination->currentText()); s.setValue("eject_after", ui_->eject_after->isChecked()); - const QModelIndex destination = ui_->destination->model()->index( - ui_->destination->currentIndex(), 0); - boost::shared_ptr storage = + const QModelIndex destination = + ui_->destination->model()->index(ui_->destination->currentIndex(), 0); + std::shared_ptr storage = destination.data(MusicStorage::Role_StorageForceConnect) - .value >(); + .value>(); - if (!storage) - return; + if (!storage) return; // It deletes itself when it's finished. const bool copy = ui_->aftercopying->currentIndex() == 0; Organise* organise = new Organise( task_manager_, storage, format_, copy, ui_->overwrite->isChecked(), new_songs_info_, ui_->eject_after->isChecked()); - connect(organise, SIGNAL(Finished(QStringList)), SLOT(OrganiseFinished(QStringList))); + connect(organise, SIGNAL(Finished(QStringList)), + SLOT(OrganiseFinished(QStringList))); organise->Start(); QDialog::accept(); } void OrganiseDialog::OrganiseFinished(const QStringList& files_with_errors) { - if (files_with_errors.isEmpty()) - return; + if (files_with_errors.isEmpty()) return; error_dialog_.reset(new OrganiseErrorDialog); error_dialog_->Show(OrganiseErrorDialog::Type_Copy, files_with_errors); diff --git a/src/ui/organisedialog.h b/src/ui/organisedialog.h index a9a2ce0b8..2f7378d3a 100644 --- a/src/ui/organisedialog.h +++ b/src/ui/organisedialog.h @@ -19,6 +19,7 @@ #define ORGANISEDIALOG_H #include + #include #include #include @@ -39,8 +40,8 @@ class QAbstractItemModel; class OrganiseDialog : public QDialog { Q_OBJECT -public: - OrganiseDialog(TaskManager* task_manager, QWidget* parent = 0); + public: + OrganiseDialog(TaskManager* task_manager, QWidget* parent = nullptr); ~OrganiseDialog(); static const char* kDefaultFormat; @@ -50,19 +51,23 @@ public: void SetDestinationModel(QAbstractItemModel* model, bool devices = false); - int SetSongs(const SongList& songs); - int SetUrls(const QList& urls, quint64 total_size = 0); - int SetFilenames(const QStringList& filenames, quint64 total_size = 0); + // These functions return true if any songs were actually added to the dialog. + // SetSongs returns immediately, SetUrls and SetFilenames load the songs in + // the background. + bool SetSongs(const SongList& songs); + bool SetUrls(const QList& urls); + bool SetFilenames(const QStringList& filenames); + void SetCopy(bool copy); -public slots: + public slots: void accept(); -protected: + protected: void showEvent(QShowEvent*); void resizeEvent(QResizeEvent*); -private slots: + private slots: void Reset(); void InsertTag(const QString& tag); @@ -70,16 +75,19 @@ private slots: void OrganiseFinished(const QStringList& files_with_errors); -private: + private: + SongList LoadSongsBlocking(const QStringList& filenames); + void SetLoadingSongs(bool loading); + static Organise::NewSongInfoList ComputeNewSongsFilenames( - const SongList& songs, - const OrganiseFormat& format); + const SongList& songs, const OrganiseFormat& format); Ui_OrganiseDialog* ui_; TaskManager* task_manager_; OrganiseFormat format_; + QFuture songs_future_; SongList songs_; Organise::NewSongInfoList new_songs_info_; quint64 total_size_; @@ -91,4 +99,4 @@ private: FRIEND_TEST(OrganiseDialogTest, ComputeNewSongsFilenamesTest); }; -#endif // ORGANISEDIALOG_H +#endif // ORGANISEDIALOG_H diff --git a/src/ui/organisedialog.ui b/src/ui/organisedialog.ui index b78f2e6b7..9fc3f25dc 100644 --- a/src/ui/organisedialog.ui +++ b/src/ui/organisedialog.ui @@ -136,13 +136,73 @@ - + + + 0 + + + + + 0 + + + 0 + + + + + + + + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 264 + 20 + + + + + + + + Loading... + + + + + + + Qt::Horizontal + + + + 264 + 20 + + + + + + + - + Qt::Horizontal @@ -165,6 +225,12 @@ QTextEdit
    widgets/linetextedit.h
    + + BusyIndicator + QWidget +
    widgets/busyindicator.h
    + 1 +
    destination @@ -176,15 +242,14 @@ replace_spaces replace_ascii overwrite - preview - buttonBox + button_box - buttonBox + button_box accepted() OrganiseDialog accept() @@ -200,7 +265,7 @@ - buttonBox + button_box rejected() OrganiseDialog reject() diff --git a/src/ui/organiseerrordialog.cpp b/src/ui/organiseerrordialog.cpp index 4d914d43c..e40167135 100644 --- a/src/ui/organiseerrordialog.cpp +++ b/src/ui/organiseerrordialog.cpp @@ -20,46 +20,47 @@ #include -OrganiseErrorDialog::OrganiseErrorDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_OrganiseErrorDialog) -{ +OrganiseErrorDialog::OrganiseErrorDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_OrganiseErrorDialog) { ui_->setupUi(this); - const int icon_size = style()->pixelMetric(QStyle::PM_MessageBoxIconSize, 0, this); + const int icon_size = + style()->pixelMetric(QStyle::PM_MessageBoxIconSize, 0, this); QIcon icon = style()->standardIcon(QStyle::SP_MessageBoxCritical, 0, this); ui_->icon->setPixmap(icon.pixmap(icon_size)); } -OrganiseErrorDialog::~OrganiseErrorDialog() { - delete ui_; -} +OrganiseErrorDialog::~OrganiseErrorDialog() { delete ui_; } -void OrganiseErrorDialog::Show( - OperationType type, const SongList& songs_with_errors) { +void OrganiseErrorDialog::Show(OperationType type, + const SongList& songs_with_errors) { QStringList files; - foreach (const Song& song, songs_with_errors) { + for (const Song& song : songs_with_errors) { files << song.url().toLocalFile(); } Show(type, files); } -void OrganiseErrorDialog::Show( - OperationType type, const QStringList& files_with_errors) { +void OrganiseErrorDialog::Show(OperationType type, + const QStringList& files_with_errors) { QStringList sorted_files = files_with_errors; qStableSort(sorted_files); switch (type) { - case Type_Copy: - setWindowTitle(tr("Error copying songs")); - ui_->label->setText(tr("There were problems copying some songs. The following files could not be copied:")); - break; + case Type_Copy: + setWindowTitle(tr("Error copying songs")); + ui_->label->setText( + tr("There were problems copying some songs. The following files " + "could not be copied:")); + break; - case Type_Delete: - setWindowTitle(tr("Error deleting songs")); - ui_->label->setText(tr("There were problems deleting some songs. The following files could not be deleted:")); - break; + case Type_Delete: + setWindowTitle(tr("Error deleting songs")); + ui_->label->setText( + tr("There were problems deleting some songs. The following files " + "could not be deleted:")); + break; } ui_->list->addItems(sorted_files); diff --git a/src/ui/organiseerrordialog.h b/src/ui/organiseerrordialog.h index 8cc16aec6..e250d683c 100644 --- a/src/ui/organiseerrordialog.h +++ b/src/ui/organiseerrordialog.h @@ -27,20 +27,17 @@ class Ui_OrganiseErrorDialog; class OrganiseErrorDialog : public QDialog { Q_OBJECT -public: - OrganiseErrorDialog(QWidget* parent = 0); + public: + OrganiseErrorDialog(QWidget* parent = nullptr); ~OrganiseErrorDialog(); - enum OperationType { - Type_Copy, - Type_Delete, - }; + enum OperationType { Type_Copy, Type_Delete, }; void Show(OperationType type, const SongList& songs_with_errors); void Show(OperationType type, const QStringList& files_with_errors); -private: + private: Ui_OrganiseErrorDialog* ui_; }; -#endif // ORGANISEERRORDIALOG_H +#endif // ORGANISEERRORDIALOG_H diff --git a/src/ui/playbacksettingspage.cpp b/src/ui/playbacksettingspage.cpp index abe5b6846..c4f1671de 100644 --- a/src/ui/playbacksettingspage.cpp +++ b/src/ui/playbacksettingspage.cpp @@ -22,44 +22,46 @@ #include "engines/gstengine.h" #include "playlist/playlist.h" - PlaybackSettingsPage::PlaybackSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_PlaybackSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_PlaybackSettingsPage) { ui_->setupUi(this); setWindowIcon(IconLoader::Load("media-playback-start")); - connect(ui_->fading_cross, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged())); + connect(ui_->fading_cross, SIGNAL(toggled(bool)), + SLOT(FadingOptionsChanged())); connect(ui_->fading_out, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged())); - connect(ui_->fading_auto, SIGNAL(toggled(bool)), SLOT(FadingOptionsChanged())); - connect(ui_->gst_plugin, SIGNAL(currentIndexChanged(int)), SLOT(GstPluginChanged(int))); + connect(ui_->fading_auto, SIGNAL(toggled(bool)), + SLOT(FadingOptionsChanged())); - connect(ui_->replaygain_preamp, SIGNAL(valueChanged(int)), SLOT(RgPreampChanged(int))); + connect(ui_->buffer_min_fill, SIGNAL(valueChanged(int)), + SLOT(BufferMinFillChanged(int))); + ui_->buffer_min_fill_value_label->setMinimumWidth( + QFontMetrics(ui_->buffer_min_fill_value_label->font()).width("WW%")); + + connect(ui_->replaygain_preamp, SIGNAL(valueChanged(int)), + SLOT(RgPreampChanged(int))); ui_->replaygain_preamp_label->setMinimumWidth( QFontMetrics(ui_->replaygain_preamp_label->font()).width("-WW.W dB")); RgPreampChanged(ui_->replaygain_preamp->value()); } -PlaybackSettingsPage::~PlaybackSettingsPage() { - delete ui_; -} +PlaybackSettingsPage::~PlaybackSettingsPage() { delete ui_; } void PlaybackSettingsPage::Load() { const GstEngine* engine = dialog()->gst_engine(); - if (ui_->gst_plugin->count() <= 1 && engine) { - GstEngine::PluginDetailsList list = engine->GetOutputsList(); - - ui_->gst_plugin->setItemData(0, GstEngine::kAutoSink); - foreach (const GstEngine::PluginDetails& details, list) { - if (details.name == "autoaudiosink") - continue; - - ui_->gst_plugin->addItem(details.long_name, details.name); + ui_->gst_output->clear(); + for (const GstEngine::OutputDetails& output : engine->GetOutputsList()) { + // Strip components off the icon name until we find one. + QStringList components = output.icon_name.split("-"); + QIcon icon; + while (icon.isNull() && !components.isEmpty()) { + icon = IconLoader::Load(components.join("-")); + components.removeLast(); } - ui_->gst_group->setEnabled(true); - ui_->replaygain_group->setEnabled(true); + + ui_->gst_output->addItem( + icon, output.description, QVariant::fromValue(output)); } QSettings s; @@ -73,27 +75,39 @@ void PlaybackSettingsPage::Load() { ui_->fading_cross->setChecked(s.value("CrossfadeEnabled", true).toBool()); ui_->fading_auto->setChecked(s.value("AutoCrossfadeEnabled", false).toBool()); ui_->fading_duration->setValue(s.value("FadeoutDuration", 2000).toInt()); - ui_->fading_samealbum->setChecked(s.value("NoCrossfadeSameAlbum", true).toBool()); - ui_->fadeout_pause->setChecked(s.value("FadeoutPauseEnabled", false).toBool()); - ui_->fading_pause_duration->setValue(s.value("FadeoutPauseDuration", 250).toInt()); + ui_->fading_samealbum->setChecked( + s.value("NoCrossfadeSameAlbum", true).toBool()); + ui_->fadeout_pause->setChecked( + s.value("FadeoutPauseEnabled", false).toBool()); + ui_->fading_pause_duration->setValue( + s.value("FadeoutPauseDuration", 250).toInt()); s.endGroup(); s.beginGroup(GstEngine::kSettingsGroup); QString sink = s.value("sink", GstEngine::kAutoSink).toString(); - ui_->gst_plugin->setCurrentIndex(0); - for (int i=0 ; igst_plugin->count() ; ++i) { - if (ui_->gst_plugin->itemData(i).toString() == sink) { - ui_->gst_plugin->setCurrentIndex(i); + QString device = s.value("device").toString(); + + ui_->gst_output->setCurrentIndex(0); + for (int i = 0; i < ui_->gst_output->count(); ++i) { + GstEngine::OutputDetails details = + ui_->gst_output->itemData(i).value(); + + if (details.gstreamer_plugin_name == sink && + details.device_property_value == device) { + ui_->gst_output->setCurrentIndex(i); break; } } - ui_->gst_device->setText(s.value("device").toString()); + ui_->replaygain->setChecked(s.value("rgenabled", false).toBool()); ui_->replaygain_mode->setCurrentIndex(s.value("rgmode", 0).toInt()); - ui_->replaygain_preamp->setValue(s.value("rgpreamp", 0.0).toDouble() * 10 + 150); - ui_->replaygain_compression->setChecked(s.value("rgcompression", true).toBool()); + ui_->replaygain_preamp->setValue(s.value("rgpreamp", 0.0).toDouble() * 10 + + 150); + ui_->replaygain_compression->setChecked( + s.value("rgcompression", true).toBool()); ui_->buffer_duration->setValue(s.value("bufferduration", 4000).toInt()); ui_->mono_playback->setChecked(s.value("monoplayback", false).toBool()); + ui_->buffer_min_fill->setValue(s.value("bufferminfill", 33).toInt()); s.endGroup(); } @@ -114,27 +128,23 @@ void PlaybackSettingsPage::Save() { s.setValue("FadeoutPauseDuration", ui_->fading_pause_duration->value()); s.endGroup(); + GstEngine::OutputDetails details = + ui_->gst_output->itemData(ui_->gst_output->currentIndex()) + .value(); + s.beginGroup(GstEngine::kSettingsGroup); - s.setValue("sink", ui_->gst_plugin->itemData(ui_->gst_plugin->currentIndex()).toString()); - s.setValue("device", ui_->gst_device->text()); + s.setValue("sink", details.gstreamer_plugin_name); + s.setValue("device", details.device_property_value); s.setValue("rgenabled", ui_->replaygain->isChecked()); s.setValue("rgmode", ui_->replaygain_mode->currentIndex()); s.setValue("rgpreamp", float(ui_->replaygain_preamp->value()) / 10 - 15); s.setValue("rgcompression", ui_->replaygain_compression->isChecked()); s.setValue("bufferduration", ui_->buffer_duration->value()); s.setValue("monoplayback", ui_->mono_playback->isChecked()); + s.setValue("bufferminfill", ui_->buffer_min_fill->value()); s.endGroup(); } -void PlaybackSettingsPage::GstPluginChanged(int index) { - QString name = ui_->gst_plugin->itemData(index).toString(); - - bool enabled = GstEngine::DoesThisSinkSupportChangingTheOutputDeviceToAUserEditableString(name); - - ui_->gst_device->setEnabled(enabled); - ui_->gst_device_label->setEnabled(enabled); -} - void PlaybackSettingsPage::RgPreampChanged(int value) { float db = float(value) / 10 - 15; QString db_str; @@ -142,8 +152,12 @@ void PlaybackSettingsPage::RgPreampChanged(int value) { ui_->replaygain_preamp_label->setText(db_str); } -void PlaybackSettingsPage::FadingOptionsChanged() { - ui_->fading_options->setEnabled( - ui_->fading_out->isChecked() || ui_->fading_cross->isChecked() || - ui_->fading_auto->isChecked()); +void PlaybackSettingsPage::BufferMinFillChanged(int value) { + ui_->buffer_min_fill_value_label->setText(QString::number(value) + "%"); +} + +void PlaybackSettingsPage::FadingOptionsChanged() { + ui_->fading_options->setEnabled(ui_->fading_out->isChecked() || + ui_->fading_cross->isChecked() || + ui_->fading_auto->isChecked()); } diff --git a/src/ui/playbacksettingspage.h b/src/ui/playbacksettingspage.h index 2d06538c6..61487149e 100644 --- a/src/ui/playbacksettingspage.h +++ b/src/ui/playbacksettingspage.h @@ -25,20 +25,20 @@ class Ui_PlaybackSettingsPage; class PlaybackSettingsPage : public SettingsPage { Q_OBJECT -public: + public: PlaybackSettingsPage(SettingsDialog* dialog); ~PlaybackSettingsPage(); void Load(); void Save(); -private slots: - void GstPluginChanged(int index); + private slots: void FadingOptionsChanged(); void RgPreampChanged(int value); + void BufferMinFillChanged(int value); -private: + private: Ui_PlaybackSettingsPage* ui_; }; -#endif // PLAYBACKSETTINGSPAGE_H +#endif // PLAYBACKSETTINGSPAGE_H diff --git a/src/ui/playbacksettingspage.ui b/src/ui/playbacksettingspage.ui index fd23f2290..d1d312b5f 100644 --- a/src/ui/playbacksettingspage.ui +++ b/src/ui/playbacksettingspage.ui @@ -170,9 +170,6 @@
    - - false - Replay Gain @@ -259,11 +256,8 @@ - - false - - GStreamer audio engine + Audio output @@ -271,48 +265,22 @@ - - Output plugin - - - - - - - - Choose automatically - - - - - - - - false - Output device - - - - false - - - Leave blank for the default. Examples: "/dev/dsp", "front", etc. - - + + - + Buffer duration - + ms @@ -325,7 +293,14 @@ - + + + + Minimum buffer fill + + + + Changing mono playback preference will be effective for the next playing songs @@ -335,6 +310,36 @@ + + + + + + + + + + + + + 1 + + + 50 + + + 33 + + + Qt::Horizontal + + + 1 + + + + + @@ -354,11 +359,6 @@ - - LineEdit - QLineEdit -
    widgets/lineedit.h
    -
    StickySlider QSlider diff --git a/src/ui/qt_blurimage.h b/src/ui/qt_blurimage.h index 3f1f15b8f..ec0336f77 100644 --- a/src/ui/qt_blurimage.h +++ b/src/ui/qt_blurimage.h @@ -22,4 +22,4 @@ void qt_blurImage(QPainter* p, QImage& blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0); -#endif // QT_BLURIMAGE_H +#endif // QT_BLURIMAGE_H diff --git a/src/ui/qtsystemtrayicon.cpp b/src/ui/qtsystemtrayicon.cpp index 75e40b715..39677bc21 100644 --- a/src/ui/qtsystemtrayicon.cpp +++ b/src/ui/qtsystemtrayicon.cpp @@ -29,17 +29,15 @@ #include QtSystemTrayIcon::QtSystemTrayIcon(QObject* parent) - : SystemTrayIcon(parent), - tray_(new QSystemTrayIcon(this)), - menu_(new QMenu), - action_play_pause_(NULL), - action_stop_(NULL), - action_stop_after_this_track_(NULL), - action_mute_(NULL), - action_love_(NULL), - action_ban_(NULL) -{ - QIcon theme_icon = IconLoader::Load("clementine-panel"); + : SystemTrayIcon(parent), + tray_(new QSystemTrayIcon(this)), + menu_(new QMenu), + action_play_pause_(nullptr), + action_stop_(nullptr), + action_stop_after_this_track_(nullptr), + action_mute_(nullptr), + action_love_(nullptr) { + QIcon theme_icon = IconLoader::Load("clementine-panel"); QIcon theme_icon_grey = IconLoader::Load("clementine-panel-grey"); if (theme_icon.isNull() || theme_icon_grey.isNull()) { @@ -65,16 +63,12 @@ QtSystemTrayIcon::QtSystemTrayIcon(QObject* parent) SLOT(Clicked(QSystemTrayIcon::ActivationReason))); } -QtSystemTrayIcon::~QtSystemTrayIcon() { - delete menu_; -} +QtSystemTrayIcon::~QtSystemTrayIcon() { delete menu_; } bool QtSystemTrayIcon::eventFilter(QObject* object, QEvent* event) { - if (QObject::eventFilter(object, event)) - return true; + if (QObject::eventFilter(object, event)) return true; - if (object != tray_) - return false; + if (object != tray_) return false; if (event->type() == QEvent::Wheel) { QWheelEvent* e = static_cast(event); @@ -99,31 +93,35 @@ bool QtSystemTrayIcon::eventFilter(QObject* object, QEvent* event) { return false; } -void QtSystemTrayIcon::SetupMenu( - QAction* previous, QAction* play, QAction* stop, QAction* stop_after, - QAction* next, QAction* mute, QAction* love, QAction* ban, QAction* quit) { +void QtSystemTrayIcon::SetupMenu(QAction* previous, QAction* play, + QAction* stop, QAction* stop_after, + QAction* next, QAction* mute, QAction* love, + QAction* quit) { // Creating new actions and connecting them to old ones. This allows us to // use old actions without displaying shortcuts that can not be used when // Clementine's window is hidden - menu_->addAction(previous->icon(), previous->text(), previous, SLOT(trigger())); - action_play_pause_ = menu_->addAction(play->icon(), play->text(), play, SLOT(trigger())); - action_stop_ = menu_->addAction(stop->icon(), stop->text(), stop, SLOT(trigger())); - action_stop_after_this_track_ = menu_->addAction(stop_after->icon(), stop_after->text(), stop_after, SLOT(trigger())); + menu_->addAction(previous->icon(), previous->text(), previous, + SLOT(trigger())); + action_play_pause_ = + menu_->addAction(play->icon(), play->text(), play, SLOT(trigger())); + action_stop_ = + menu_->addAction(stop->icon(), stop->text(), stop, SLOT(trigger())); + action_stop_after_this_track_ = menu_->addAction( + stop_after->icon(), stop_after->text(), stop_after, SLOT(trigger())); menu_->addAction(next->icon(), next->text(), next, SLOT(trigger())); menu_->addSeparator(); - action_mute_ = menu_->addAction(mute->icon(), mute->text(), mute, SLOT(trigger())); + action_mute_ = + menu_->addAction(mute->icon(), mute->text(), mute, SLOT(trigger())); action_mute_->setCheckable(true); action_mute_->setChecked(mute->isChecked()); menu_->addSeparator(); #ifdef HAVE_LIBLASTFM - action_love_ = menu_->addAction(love->icon(), love->text(), love, SLOT(trigger())); + action_love_ = + menu_->addAction(love->icon(), love->text(), love, SLOT(trigger())); action_love_->setVisible(love->isVisible()); action_love_->setEnabled(love->isEnabled()); - action_ban_ = menu_->addAction(ban->icon(), ban->text(), ban, SLOT(trigger())); - action_ban_->setVisible(ban->isVisible()); - action_ban_->setEnabled(ban->isEnabled()); #endif menu_->addSeparator(); @@ -148,8 +146,8 @@ void QtSystemTrayIcon::Clicked(QSystemTrayIcon::ActivationReason reason) { } } -void QtSystemTrayIcon::ShowPopup(const QString &summary, - const QString &message, int timeout) { +void QtSystemTrayIcon::ShowPopup(const QString& summary, const QString& message, + int timeout) { tray_->showMessage(summary, message, QSystemTrayIcon::NoIcon, timeout); } @@ -168,8 +166,7 @@ void QtSystemTrayIcon::SetPaused() { action_play_pause_->setEnabled(true); } -void QtSystemTrayIcon::SetPlaying(bool enable_play_pause, bool enable_ban, - bool enable_love) { +void QtSystemTrayIcon::SetPlaying(bool enable_play_pause, bool enable_love) { SystemTrayIcon::SetPlaying(); action_stop_->setEnabled(true); @@ -178,7 +175,6 @@ void QtSystemTrayIcon::SetPlaying(bool enable_play_pause, bool enable_ban, action_play_pause_->setText(tr("Pause")); action_play_pause_->setEnabled(enable_play_pause); #ifdef HAVE_LIBLASTFM - action_ban_->setEnabled(enable_ban); action_love_->setEnabled(enable_love); #endif } @@ -194,14 +190,12 @@ void QtSystemTrayIcon::SetStopped() { action_play_pause_->setEnabled(true); #ifdef HAVE_LIBLASTFM - action_ban_->setEnabled(false); action_love_->setEnabled(false); #endif } void QtSystemTrayIcon::LastFMButtonVisibilityChanged(bool value) { #ifdef HAVE_LIBLASTFM - action_ban_->setVisible(value); action_love_->setVisible(value); #endif } @@ -212,56 +206,48 @@ void QtSystemTrayIcon::LastFMButtonLoveStateChanged(bool value) { #endif } -void QtSystemTrayIcon::LastFMButtonBanStateChanged(bool value) { -#ifdef HAVE_LIBLASTFM - action_ban_->setEnabled(value); -#endif -} - void QtSystemTrayIcon::MuteButtonStateChanged(bool value) { - if (action_mute_) - action_mute_->setChecked(value); + if (action_mute_) action_mute_->setChecked(value); } -bool QtSystemTrayIcon::IsVisible() const { - return tray_->isVisible(); -} +bool QtSystemTrayIcon::IsVisible() const { return tray_->isVisible(); } -void QtSystemTrayIcon::SetVisible(bool visible) { - tray_->setVisible(visible); -} +void QtSystemTrayIcon::SetVisible(bool visible) { tray_->setVisible(visible); } -void QtSystemTrayIcon::SetNowPlaying(const Song& song, const QString& image_path) { +void QtSystemTrayIcon::SetNowPlaying(const Song& song, + const QString& image_path) { #ifdef Q_WS_WIN // Windows doesn't support HTML in tooltips, so just show something basic tray_->setToolTip(song.PrettyTitleWithArtist()); return; #endif - int columns = image_path == NULL ? 1 : 2; + int columns = image_path == nullptr ? 1 : 2; QString clone = pattern_; - clone.replace("%columns" , QString::number(columns)); - clone.replace("%appName" , QCoreApplication::applicationName()); + clone.replace("%columns", QString::number(columns)); + clone.replace("%appName", QCoreApplication::applicationName()); - clone.replace("%titleKey" , tr("Title") % ":"); - clone.replace("%titleValue" , Qt::escape(song.PrettyTitle())); - clone.replace("%artistKey" , tr("Artist") % ":"); + clone.replace("%titleKey", tr("Title") % ":"); + clone.replace("%titleValue", Qt::escape(song.PrettyTitle())); + clone.replace("%artistKey", tr("Artist") % ":"); clone.replace("%artistValue", Qt::escape(song.artist())); - clone.replace("%albumKey" , tr("Album") % ":"); - clone.replace("%albumValue" , Qt::escape(song.album())); + clone.replace("%albumKey", tr("Album") % ":"); + clone.replace("%albumValue", Qt::escape(song.album())); - clone.replace("%lengthKey" , tr("Length") % ":"); + clone.replace("%lengthKey", tr("Length") % ":"); clone.replace("%lengthValue", Qt::escape(song.PrettyLength())); - if(columns == 2) { - QString final_path = image_path.startsWith("file://") - ? image_path.mid(7) - : image_path; - clone.replace("%image", " " - " " - " "); + if (columns == 2) { + QString final_path = + image_path.startsWith("file://") ? image_path.mid(7) : image_path; + clone.replace("%image", + " " + " " + " "); } else { clone.replace("%image", ""); } diff --git a/src/ui/qtsystemtrayicon.h b/src/ui/qtsystemtrayicon.h index 3a4b64e4e..ff1d8a0e1 100644 --- a/src/ui/qtsystemtrayicon.h +++ b/src/ui/qtsystemtrayicon.h @@ -25,40 +25,38 @@ class QtSystemTrayIcon : public SystemTrayIcon { Q_OBJECT -public: - QtSystemTrayIcon(QObject* parent = 0); + public: + QtSystemTrayIcon(QObject* parent = nullptr); ~QtSystemTrayIcon(); void SetupMenu(QAction* previous, QAction* play, QAction* stop, QAction* stop_after, QAction* next, QAction* mute, - QAction* love, QAction* ban, QAction* quit); + QAction* love, QAction* quit); bool IsVisible() const; void SetVisible(bool visible); - void ShowPopup(const QString &summary, const QString &message, int timeout); + void ShowPopup(const QString& summary, const QString& message, int timeout); void SetNowPlaying(const Song& song, const QString& image_path); void ClearNowPlaying(); - -protected: + + protected: // SystemTrayIcon void UpdateIcon(); void SetPaused(); - void SetPlaying(bool enable_play_pause = false, bool enable_ban = false, - bool enable_love = false); + void SetPlaying(bool enable_play_pause = false, bool enable_love = false); void SetStopped(); void LastFMButtonVisibilityChanged(bool value); void LastFMButtonLoveStateChanged(bool value); - void LastFMButtonBanStateChanged(bool value); void MuteButtonStateChanged(bool value); // QObject - bool eventFilter(QObject *, QEvent *); + bool eventFilter(QObject*, QEvent*); -private slots: + private slots: void Clicked(QSystemTrayIcon::ActivationReason); -private: + private: QSystemTrayIcon* tray_; QMenu* menu_; QAction* action_play_pause_; @@ -66,7 +64,6 @@ private: QAction* action_stop_after_this_track_; QAction* action_mute_; QAction* action_love_; - QAction* action_ban_; QString pattern_; @@ -74,4 +71,4 @@ private: QPixmap grey_icon_; }; -#endif // QTSYSTEMTRAYICON_H +#endif // QTSYSTEMTRAYICON_H diff --git a/src/ui/ripcd.cpp b/src/ui/ripcd.cpp index 82e1d887a..0747e73b9 100644 --- a/src/ui/ripcd.cpp +++ b/src/ui/ripcd.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -44,38 +45,36 @@ // winspool.h defines this :( #ifdef AddJob -# undef AddJob +#undef AddJob #endif namespace { - bool ComparePresetsByName(const TranscoderPreset& left, - const TranscoderPreset& right) { - return left.name_ < right.name_; - } +bool ComparePresetsByName(const TranscoderPreset& left, + const TranscoderPreset& right) { + return left.name_ < right.name_; +} - const char kWavHeaderRiffMarker[] = "RIFF"; - const char kWavFileTypeFormatChunk[] = "WAVEfmt "; - const char kWavDataString[] = "data"; - - const int kCheckboxColumn = 0; - const int kTrackNumberColumn = 1; - const int kTrackTitleColumn = 2; +const char kWavHeaderRiffMarker[] = "RIFF"; +const char kWavFileTypeFormatChunk[] = "WAVEfmt "; +const char kWavDataString[] = "data"; +const int kCheckboxColumn = 0; +const int kTrackNumberColumn = 1; +const int kTrackTitleColumn = 2; } const char* RipCD::kSettingsGroup = "Transcoder"; const int RipCD::kProgressInterval = 500; const int RipCD::kMaxDestinationItems = 10; -RipCD::RipCD(QWidget* parent) : - QDialog(parent), - transcoder_(new Transcoder(this)), - queued_(0), - finished_success_(0), - finished_failed_(0), - ui_(new Ui_RipCD) -{ - - // Init +RipCD::RipCD(QWidget* parent) + : QDialog(parent), + transcoder_(new Transcoder(this)), + queued_(0), + finished_success_(0), + finished_failed_(0), + ui_(new Ui_RipCD) { + cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); + // Init ui_->setupUi(this); // Set column widths in the QTableWidget. @@ -83,12 +82,12 @@ RipCD::RipCD(QWidget* parent) : kCheckboxColumn, QHeaderView::ResizeToContents); ui_->tableWidget->horizontalHeader()->setResizeMode( kTrackNumberColumn, QHeaderView::ResizeToContents); - ui_->tableWidget->horizontalHeader()->setResizeMode( - kTrackTitleColumn, QHeaderView::Stretch); + ui_->tableWidget->horizontalHeader()->setResizeMode(kTrackTitleColumn, + QHeaderView::Stretch); // Add a rip button - rip_button_ = ui_->button_box->addButton( - tr("Start ripping"), QDialogButtonBox::ActionRole); + rip_button_ = ui_->button_box->addButton(tr("Start ripping"), + QDialogButtonBox::ActionRole); cancel_button_ = ui_->button_box->button(QDialogButtonBox::Cancel); close_button_ = ui_->button_box->button(QDialogButtonBox::Close); @@ -104,10 +103,11 @@ RipCD::RipCD(QWidget* parent) : connect(cancel_button_, SIGNAL(clicked()), SLOT(Cancel())); connect(close_button_, SIGNAL(clicked()), SLOT(hide())); - connect(transcoder_, SIGNAL(JobComplete(QString, bool)), SLOT(JobComplete(QString, bool))); + connect(transcoder_, SIGNAL(JobComplete(QString, bool)), + SLOT(JobComplete(QString, bool))); connect(transcoder_, SIGNAL(AllJobsComplete()), SLOT(AllJobsComplete())); connect(transcoder_, SIGNAL(JobOutputName(QString)), - SLOT(AppendOutput(QString))); + SLOT(AppendOutput(QString))); connect(this, SIGNAL(RippingComplete()), SLOT(ThreadedTranscoding())); connect(this, SIGNAL(SignalUpdateProgress()), SLOT(UpdateProgress())); @@ -117,32 +117,10 @@ RipCD::RipCD(QWidget* parent) : setWindowTitle(tr("Rip CD")); AddDestinationDirectory(QDir::homePath()); - cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); - if(!cdio_) { - qLog(Error) << "Failed to read CD drive"; - return; - } else { - i_tracks_ = cdio_get_num_tracks(cdio_); - ui_->tableWidget->setRowCount(i_tracks_); - for (int i = 1; i <= i_tracks_; i++) { - QCheckBox *checkbox_i = new QCheckBox(ui_->tableWidget); - checkbox_i->setCheckState(Qt::Checked); - checkboxes_.append(checkbox_i); - ui_->tableWidget->setCellWidget(i - 1, kCheckboxColumn, checkbox_i); - ui_->tableWidget->setCellWidget(i - 1, kTrackNumberColumn, - new QLabel(QString::number(i))); - QString track_title = QString("Track %1").arg(i); - QLineEdit *line_edit_track_title_i = new QLineEdit(track_title, - ui_->tableWidget); - track_names_.append(line_edit_track_title_i); - ui_->tableWidget->setCellWidget(i - 1, kTrackTitleColumn, - line_edit_track_title_i); - } - } // Get presets - QList presets = Transcoder::GetAllPresets(); + QList presets = Transcoder::GetAllPresets(); qSort(presets.begin(), presets.end(), ComparePresetsByName); - for(const TranscoderPreset& preset : presets) { + for (const TranscoderPreset& preset : presets) { ui_->format->addItem( QString("%1 (.%2)").arg(preset.name_, preset.extension_), QVariant::fromValue(preset)); @@ -155,8 +133,8 @@ RipCD::RipCD(QWidget* parent) : QString last_output_format = s.value("last_output_format", "ogg").toString(); for (int i = 0; i < ui_->format->count(); ++i) { - if (last_output_format - == ui_->format->itemData(i).value().extension_) { + if (last_output_format == + ui_->format->itemData(i).value().extension_) { ui_->format->setCurrentIndex(i); break; } @@ -167,10 +145,9 @@ RipCD::RipCD(QWidget* parent) : } RipCD::~RipCD() { - delete ui_; + cdio_destroy(cdio_); } - /* * WAV Header documentation * as taken from: @@ -190,28 +167,32 @@ RipCD::~RipCD() { * | are 44100 (CD), 48000 (DAT). * | Sample Rate = Number of Samples per second, or Hertz. * 29-32 | 176400 | (Sample Rate * BitsPerSample * Channels) / 8. - * 33-34 | 4 | (BitsPerSample * Channels) / 8.1 - 8 bit mono2 - 8 bit stereo/16 bit mono4 - 16 bit stereo + * 33-34 | 4 | (BitsPerSample * Channels) / 8.1 - 8 bit mono2 - 8 bit stereo/16 + * bit mono4 - 16 bit stereo * 35-36 | 16 | Bits per sample * 37-40 | "data" | "data" chunk header. * | Marks the beginning of the data section. * 41-44 | File size (data) | Size of the data section. */ -void RipCD::WriteWAVHeader(QFile *stream, int32_t i_bytecount) { +void RipCD::WriteWAVHeader(QFile* stream, int32_t i_bytecount) { QDataStream data_stream(stream); data_stream.setByteOrder(QDataStream::LittleEndian); // sizeof() - 1 to avoid including "\0" in the file too - data_stream.writeRawData(kWavHeaderRiffMarker,sizeof(kWavHeaderRiffMarker)-1); /* 0-3 */ - data_stream << qint32(i_bytecount + 44 - 8); /* 4-7 */ - data_stream.writeRawData(kWavFileTypeFormatChunk,sizeof(kWavFileTypeFormatChunk)-1); /* 8-15 */ - data_stream << (qint32)16; /* 16-19 */ - data_stream << (qint16)1; /* 20-21 */ - data_stream << (qint16)2; /* 22-23 */ - data_stream << (qint32)44100; /* 24-27 */ - data_stream << (qint32)(44100 * 2 * 2); /* 28-31 */ - data_stream << (qint16)4; /* 32-33 */ - data_stream << (qint16)16; /* 34-35 */ - data_stream.writeRawData(kWavDataString,sizeof(kWavDataString)-1); /* 36-39 */ - data_stream << (qint32)i_bytecount; /* 40-43 */ + data_stream.writeRawData(kWavHeaderRiffMarker, + sizeof(kWavHeaderRiffMarker) - 1); /* 0-3 */ + data_stream << qint32(i_bytecount + 44 - 8); /* 4-7 */ + data_stream.writeRawData(kWavFileTypeFormatChunk, + sizeof(kWavFileTypeFormatChunk) - 1); /* 8-15 */ + data_stream << (qint32)16; /* 16-19 */ + data_stream << (qint16)1; /* 20-21 */ + data_stream << (qint16)2; /* 22-23 */ + data_stream << (qint32)44100; /* 24-27 */ + data_stream << (qint32)(44100 * 2 * 2); /* 28-31 */ + data_stream << (qint16)4; /* 32-33 */ + data_stream << (qint16)16; /* 34-35 */ + data_stream.writeRawData(kWavDataString, + sizeof(kWavDataString) - 1); /* 36-39 */ + data_stream << (qint32)i_bytecount; /* 40-43 */ } int RipCD::NumTracksToRip() { @@ -225,41 +206,40 @@ int RipCD::NumTracksToRip() { } void RipCD::ThreadClickedRipButton() { - temporary_directory_ = Utilities::MakeTempDir() + "/"; - finished_success_ = 0; finished_failed_ = 0; ui_->progress_bar->setMaximum(NumTracksToRip() * 2 * 100); // Set up progress bar emit(SignalUpdateProgress()); - - + tracks_to_rip_.clear(); for (int i = 1; i <= i_tracks_; i++) { if (!checkboxes_.value(i - 1)->isChecked()) { continue; } tracks_to_rip_.append(i); - - QString filename = temporary_directory_ - + ParseFileFormatString(ui_->format_filename->text(), i) + ".wav"; - QFile *destination_file = new QFile(filename); + QString filename = temporary_directory_ + + ParseFileFormatString(ui_->format_filename->text(), i) + + ".wav"; + QFile* destination_file = new QFile(filename); destination_file->open(QIODevice::WriteOnly); lsn_t i_first_lsn = cdio_get_track_lsn(cdio_, i); lsn_t i_last_lsn = cdio_get_track_last_lsn(cdio_, i); WriteWAVHeader(destination_file, - (i_last_lsn - i_first_lsn + 1) * CDIO_CD_FRAMESIZE_RAW); + (i_last_lsn - i_first_lsn + 1) * CDIO_CD_FRAMESIZE_RAW); - QByteArray buffered_input_bytes(CDIO_CD_FRAMESIZE_RAW,'\0'); + QByteArray buffered_input_bytes(CDIO_CD_FRAMESIZE_RAW, '\0'); for (lsn_t i_cursor = i_first_lsn; i_cursor <= i_last_lsn; i_cursor++) { if (cancel_requested_) { qLog(Debug) << "CD ripping canceled."; return; } - if(cdio_read_audio_sector(cdio_, buffered_input_bytes.data(), i_cursor) == DRIVER_OP_SUCCESS) { - destination_file->write(buffered_input_bytes.data(), buffered_input_bytes.size()); + if (cdio_read_audio_sector(cdio_, buffered_input_bytes.data(), + i_cursor) == DRIVER_OP_SUCCESS) { + destination_file->write(buffered_input_bytes.data(), + buffered_input_bytes.size()); } else { qLog(Error) << "CD read error"; break; @@ -267,12 +247,11 @@ void RipCD::ThreadClickedRipButton() { } finished_success_++; emit(SignalUpdateProgress()); - TranscoderPreset preset = - ui_->format->itemData(ui_->format->currentIndex()) - .value(); + TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) + .value(); QString outfilename = GetOutputFileName(filename, preset); - transcoder_->AddJob(filename.toUtf8().constData(), preset, outfilename); + transcoder_->AddJob(filename, preset, outfilename); } emit(RippingComplete()); } @@ -283,7 +262,7 @@ QString RipCD::TrimPath(const QString& path) const { } QString RipCD::GetOutputFileName(const QString& input, - const TranscoderPreset &preset) const { + const TranscoderPreset& preset) const { QString path = ui_->destination->itemData(ui_->destination->currentIndex()).toString(); if (path.isEmpty()) { @@ -297,7 +276,7 @@ QString RipCD::GetOutputFileName(const QString& input, } QString RipCD::ParseFileFormatString(const QString& file_format, - int track_no) const { + int track_no) const { QString to_return = file_format; to_return.replace(QString("%artist%"), ui_->artistLineEdit->text()); to_return.replace(QString("%album%"), ui_->albumLineEdit->text()); @@ -305,7 +284,7 @@ QString RipCD::ParseFileFormatString(const QString& file_format, to_return.replace(QString("%year%"), ui_->yearLineEdit->text()); to_return.replace(QString("%tracknum%"), QString::number(track_no)); to_return.replace(QString("%track%"), - track_names_.value(track_no - 1)->text()); + track_names_.value(track_no - 1)->text()); return to_return; } @@ -321,9 +300,8 @@ void RipCD::UpdateProgress() { void RipCD::ThreadedTranscoding() { transcoder_->Start(); - TranscoderPreset preset = - ui_->format->itemData(ui_->format->currentIndex()) - .value(); + TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) + .value(); // Save the last output format QSettings s; s.beginGroup(kSettingsGroup); @@ -331,6 +309,17 @@ void RipCD::ThreadedTranscoding() { } void RipCD::ClickedRipButton() { + if (cdio_ && cdio_get_media_changed(cdio_)) { + QMessageBox cdio_fail(QMessageBox::Critical, tr("Error Ripping CD"), + tr("Media has changed. Reloading")); + cdio_fail.exec(); + if (CheckCDIOIsValid()) { + BuildTrackListTable(); + } else { + ui_->tableWidget->clearContents(); + } + return; + } SetWorking(true); cancel_requested_ = false; QtConcurrent::run(this, &RipCD::ThreadClickedRipButton); @@ -350,9 +339,10 @@ void RipCD::AllJobsComplete() { for (int i = 0; i < generated_files_.length(); i++) { TagLib::FileRef f(generated_files_.value(i).toUtf8().constData()); - f.tag()->setTitle( - track_names_.value(tracks_to_rip_.value(i) - 1) - ->text().toUtf8().constData()); + f.tag()->setTitle(track_names_.value(tracks_to_rip_.value(i) - 1) + ->text() + .toUtf8() + .constData()); f.tag()->setAlbum(ui_->albumLineEdit->text().toUtf8().constData()); f.tag()->setArtist(ui_->artistLineEdit->text().toUtf8().constData()); f.tag()->setGenre(ui_->genreLineEdit->text().toUtf8().constData()); @@ -374,10 +364,8 @@ void RipCD::AppendOutput(const QString& filename) { } void RipCD::Options() { - TranscoderPreset preset = - ui_->format->itemData( - ui_->format->currentIndex()) - .value(); + TranscoderPreset preset = ui_->format->itemData(ui_->format->currentIndex()) + .value(); TranscoderOptionsDialog dialog(preset.type_, this); if (dialog.is_valid()) { @@ -388,11 +376,11 @@ void RipCD::Options() { // Adds a folder to the destination box. void RipCD::AddDestination() { int index = ui_->destination->currentIndex(); - QString initial_dir = ( - !ui_->destination->itemData(index).isNull() ? - ui_->destination->itemData(index).toString() : QDir::homePath()); - QString dir = QFileDialog::getExistingDirectory(this, tr("Add folder"), - initial_dir); + QString initial_dir = (!ui_->destination->itemData(index).isNull() + ? ui_->destination->itemData(index).toString() + : QDir::homePath()); + QString dir = + QFileDialog::getExistingDirectory(this, tr("Add folder"), initial_dir); if (!dir.isEmpty()) { // Keep only a finite number of items in the box. @@ -419,13 +407,21 @@ void RipCD::AddDestinationDirectory(QString dir) { void RipCD::Cancel() { cancel_requested_ = true; + ui_->progress_bar->setValue(0); transcoder_->Cancel(); RemoveTemporaryDirectory(); SetWorking(false); } -bool RipCD::CDIOIsValid() const { - return (cdio_); +bool RipCD::CheckCDIOIsValid() { + if (cdio_) { + cdio_destroy(cdio_); + } + cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); + // Refresh the status of the cd media. This will prevent unnecessary + // rebuilds of the track list table. + cdio_get_media_changed(cdio_); + return cdio_; } void RipCD::SetWorking(bool working) { @@ -438,23 +434,23 @@ void RipCD::SetWorking(bool working) { } void RipCD::SelectAll() { - foreach (QCheckBox* checkbox, checkboxes_) { + for (QCheckBox* checkbox : checkboxes_) { checkbox->setCheckState(Qt::Checked); } } void RipCD::SelectNone() { - foreach (QCheckBox* checkbox, checkboxes_) { + for (QCheckBox* checkbox : checkboxes_) { checkbox->setCheckState(Qt::Unchecked); } } void RipCD::InvertSelection() { - foreach (QCheckBox* checkbox, checkboxes_) { + for (QCheckBox* checkbox : checkboxes_) { if (checkbox->isChecked()) { - checkbox->setCheckState(Qt::Unchecked); + checkbox->setCheckState(Qt::Unchecked); } else { - checkbox->setCheckState(Qt::Checked); + checkbox->setCheckState(Qt::Checked); } } } @@ -464,3 +460,26 @@ void RipCD::RemoveTemporaryDirectory() { Utilities::RemoveRecursive(temporary_directory_); temporary_directory_.clear(); } + +void RipCD::BuildTrackListTable() { + checkboxes_.clear(); + track_names_.clear(); + i_tracks_ = cdio_get_num_tracks(cdio_); + ui_->tableWidget->setRowCount(i_tracks_); + for (int i = 1; i <= i_tracks_; i++) { + QCheckBox* checkbox_i = new QCheckBox(ui_->tableWidget); + checkbox_i->setCheckState(Qt::Checked); + checkboxes_.append(checkbox_i); + ui_->tableWidget->setCellWidget(i - 1, kCheckboxColumn, checkbox_i); + ui_->tableWidget->setCellWidget(i - 1, kTrackNumberColumn, + new QLabel(QString::number(i))); + QString track_title = QString("Track %1").arg(i); + QLineEdit* line_edit_track_title_i = + new QLineEdit(track_title, ui_->tableWidget); + track_names_.append(line_edit_track_title_i); + ui_->tableWidget->setCellWidget(i - 1, kTrackTitleColumn, + line_edit_track_title_i); + } +} + +void RipCD::showEvent(QShowEvent* event) { BuildTrackListTable(); } diff --git a/src/ui/ripcd.h b/src/ui/ripcd.h index 0de1d7111..05ff6ba47 100644 --- a/src/ui/ripcd.h +++ b/src/ui/ripcd.h @@ -24,19 +24,23 @@ #include #include #include "ui_ripcd.h" - +#include class Ui_RipCD; class Transcoder; struct TranscoderPreset; -class RipCD: public QDialog { +class RipCD : public QDialog { Q_OBJECT public: - explicit RipCD(QWidget* parent = 0); + explicit RipCD(QWidget* parent = nullptr); ~RipCD(); - bool CDIOIsValid() const; + bool CheckCDIOIsValid(); + void BuildTrackListTable(); + + protected: + void showEvent(QShowEvent* event); private: static const char* kSettingsGroup; @@ -47,8 +51,8 @@ class RipCD: public QDialog { int finished_success_; int finished_failed_; track_t i_tracks_; - Ui_RipCD* ui_; - CdIo_t *cdio_; + std::unique_ptr ui_; + CdIo_t* cdio_; QList checkboxes_; QList generated_files_; QList tracks_to_rip_; @@ -60,18 +64,18 @@ class RipCD: public QDialog { QString temporary_directory_; bool cancel_requested_; - void WriteWAVHeader(QFile *stream, int32_t i_bytecount); + void WriteWAVHeader(QFile* stream, int32_t i_bytecount); int NumTracksToRip(); void ThreadClickedRipButton(); QString TrimPath(const QString& path) const; QString GetOutputFileName(const QString& input, - const TranscoderPreset& preset) const; + const TranscoderPreset& preset) const; QString ParseFileFormatString(const QString& file_format, int track_no) const; void SetWorking(bool working); void AddDestinationDirectory(QString dir); void RemoveTemporaryDirectory(); - signals: +signals: void RippingComplete(); void SignalUpdateProgress(); private slots: diff --git a/src/ui/screensaver.cpp b/src/ui/screensaver.cpp index 58aeaa728..f919845cd 100644 --- a/src/ui/screensaver.cpp +++ b/src/ui/screensaver.cpp @@ -21,37 +21,40 @@ #include #ifdef HAVE_DBUS - #include "dbusscreensaver.h" - #include - #include +#include "dbusscreensaver.h" +#include +#include #endif #ifdef Q_OS_DARWIN - #include "macscreensaver.h" +#include "macscreensaver.h" #endif #include -const char* Screensaver::kGnomeService = "org.gnome.ScreenSaver"; -const char* Screensaver::kGnomePath = "/"; +const char* Screensaver::kGnomeService = "org.gnome.ScreenSaver"; +const char* Screensaver::kGnomePath = "/"; const char* Screensaver::kGnomeInterface = "org.gnome.ScreenSaver"; -const char* Screensaver::kKdeService = "org.kde.ScreenSaver"; -const char* Screensaver::kKdePath = "/ScreenSaver/"; -const char* Screensaver::kKdeInterface = "org.freedesktop.ScreenSaver"; +const char* Screensaver::kKdeService = "org.kde.ScreenSaver"; +const char* Screensaver::kKdePath = "/ScreenSaver/"; +const char* Screensaver::kKdeInterface = "org.freedesktop.ScreenSaver"; Screensaver* Screensaver::screensaver_ = 0; Screensaver* Screensaver::GetScreensaver() { if (!screensaver_) { - #if defined(HAVE_DBUS) - if (QDBusConnection::sessionBus().interface()->isServiceRegistered(kGnomeService)) { - screensaver_ = new DBusScreensaver(kGnomeService, kGnomePath, kGnomeInterface); - } else if (QDBusConnection::sessionBus().interface()->isServiceRegistered(kKdeService)) { - screensaver_ = new DBusScreensaver(kKdeService, kKdePath, kKdeInterface); - } - #elif defined(Q_OS_DARWIN) - screensaver_ = new MacScreensaver(); - #endif +#if defined(HAVE_DBUS) + if (QDBusConnection::sessionBus().interface()->isServiceRegistered( + kGnomeService)) { + screensaver_ = + new DBusScreensaver(kGnomeService, kGnomePath, kGnomeInterface); + } else if (QDBusConnection::sessionBus().interface()->isServiceRegistered( + kKdeService)) { + screensaver_ = new DBusScreensaver(kKdeService, kKdePath, kKdeInterface); + } +#elif defined(Q_OS_DARWIN) + screensaver_ = new MacScreensaver(); +#endif } return screensaver_; } diff --git a/src/ui/settingsdialog.cpp b/src/ui/settingsdialog.cpp index dc0d84f1a..8a6c1e70e 100644 --- a/src/ui/settingsdialog.cpp +++ b/src/ui/settingsdialog.cpp @@ -38,9 +38,9 @@ #include "internet/digitallyimportedsettingspage.h" #include "internet/groovesharksettingspage.h" #include "internet/magnatunesettingspage.h" +#include "internet/soundcloudsettingspage.h" #include "internet/spotifysettingspage.h" #include "internet/subsonicsettingspage.h" -#include "internet/ubuntuonesettingspage.h" #include "library/librarysettingspage.h" #include "playlist/playlistview.h" #include "podcasts/podcastsettingspage.h" @@ -52,28 +52,31 @@ #include "ui_settingsdialog.h" #ifdef HAVE_LIBLASTFM -# include "internet/lastfmsettingspage.h" +#include "internet/lastfmsettingspage.h" #endif #ifdef HAVE_WIIMOTEDEV -# include "wiimotedev/wiimotesettingspage.h" +#include "wiimotedev/wiimotesettingspage.h" #endif - #ifdef HAVE_GOOGLE_DRIVE -# include "internet/googledrivesettingspage.h" -#endif - -#ifdef HAVE_UBUNTU_ONE -# include "internet/ubuntuonesettingspage.h" +#include "internet/googledrivesettingspage.h" #endif #ifdef HAVE_DROPBOX -# include "internet/dropboxsettingspage.h" +#include "internet/dropboxsettingspage.h" #endif #ifdef HAVE_BOX -# include "internet/boxsettingspage.h" +#include "internet/boxsettingspage.h" +#endif + +#ifdef HAVE_VK +#include "internet/vksettingspage.h" +#endif + +#ifdef HAVE_SKYDRIVE +#include "internet/skydrivesettingspage.h" #endif #include @@ -82,15 +85,13 @@ #include #include - SettingsItemDelegate::SettingsItemDelegate(QObject* parent) - : QStyledItemDelegate(parent) -{ -} + : QStyledItemDelegate(parent) {} QSize SettingsItemDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { - const bool is_separator = index.data(SettingsDialog::Role_IsSeparator).toBool(); + const bool is_separator = + index.data(SettingsDialog::Role_IsSeparator).toBool(); QSize ret = QStyledItemDelegate::sizeHint(option, index); if (is_separator) { @@ -100,9 +101,11 @@ QSize SettingsItemDelegate::sizeHint(const QStyleOptionViewItem& option, return ret; } -void SettingsItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, +void SettingsItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, const QModelIndex& index) const { - const bool is_separator = index.data(SettingsDialog::Role_IsSeparator).toBool(); + const bool is_separator = + index.data(SettingsDialog::Role_IsSeparator).toBool(); if (is_separator) { GroupedIconView::DrawHeader(painter, option.rect, option.font, @@ -112,19 +115,18 @@ void SettingsItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& } } - -SettingsDialog::SettingsDialog(Application* app, BackgroundStreams* streams, QWidget* parent) - : QDialog(parent), - app_(app), - model_(app_->library_model()->directory_model()), - gst_engine_(qobject_cast(app_->player()->engine())), - song_info_view_(NULL), - streams_(streams), - global_search_(app_->global_search()), - appearance_(app_->appearance()), - ui_(new Ui_SettingsDialog), - loading_settings_(false) -{ +SettingsDialog::SettingsDialog(Application* app, BackgroundStreams* streams, + QWidget* parent) + : QDialog(parent), + app_(app), + model_(app_->library_model()->directory_model()), + gst_engine_(qobject_cast(app_->player()->engine())), + song_info_view_(nullptr), + streams_(streams), + global_search_(app_->global_search()), + appearance_(app_->appearance()), + ui_(new Ui_SettingsDialog), + loading_settings_(false) { ui_->setupUi(this); ui_->list->setItemDelegate(new SettingsItemDelegate(this)); @@ -162,10 +164,6 @@ SettingsDialog::SettingsDialog(Application* app, BackgroundStreams* streams, QWi AddPage(Page_GoogleDrive, new GoogleDriveSettingsPage(this), providers); #endif -#ifdef HAVE_UBUNTU_ONE - AddPage(Page_UbuntuOne, new UbuntuOneSettingsPage(this), providers); -#endif - #ifdef HAVE_DROPBOX AddPage(Page_Dropbox, new DropboxSettingsPage(this), providers); #endif @@ -174,27 +172,42 @@ SettingsDialog::SettingsDialog(Application* app, BackgroundStreams* streams, QWi AddPage(Page_Box, new BoxSettingsPage(this), providers); #endif +#ifdef HAVE_SKYDRIVE + AddPage(Page_Skydrive, new SkydriveSettingsPage(this), providers); +#endif + + AddPage(Page_SoundCloud, new SoundCloudSettingsPage(this), providers); AddPage(Page_Spotify, new SpotifySettingsPage(this), providers); + +#ifdef HAVE_VK + AddPage(Page_Vk, new VkSettingsPage(this), providers); +#endif + AddPage(Page_Magnatune, new MagnatuneSettingsPage(this), providers); - AddPage(Page_DigitallyImported, new DigitallyImportedSettingsPage(this), providers); - AddPage(Page_BackgroundStreams, new BackgroundStreamsSettingsPage(this), providers); + AddPage(Page_DigitallyImported, new DigitallyImportedSettingsPage(this), + providers); + AddPage(Page_BackgroundStreams, new BackgroundStreamsSettingsPage(this), + providers); AddPage(Page_Subsonic, new SubsonicSettingsPage(this), providers); AddPage(Page_Podcasts, new PodcastSettingsPage(this), providers); + providers->sortChildren(0, Qt::AscendingOrder); + // List box - connect(ui_->list, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), + connect(ui_->list, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(CurrentItemChanged(QTreeWidgetItem*))); ui_->list->setCurrentItem(pages_[Page_Playback].item_); // Make sure the list is big enough to show all the items - ui_->list->setMinimumWidth(static_cast(ui_->list)->sizeHintForColumn(0)); + ui_->list->setMinimumWidth( + static_cast(ui_->list)->sizeHintForColumn(0)); - ui_->buttonBox->button(QDialogButtonBox::Cancel)->setShortcut(QKeySequence::Close); + ui_->buttonBox->button(QDialogButtonBox::Cancel) + ->setShortcut(QKeySequence::Close); } -SettingsDialog::~SettingsDialog() { - delete ui_; -} +SettingsDialog::~SettingsDialog() { delete ui_; } QTreeWidgetItem* SettingsDialog::AddCategory(const QString& name) { QTreeWidgetItem* item = new QTreeWidgetItem; @@ -208,15 +221,15 @@ QTreeWidgetItem* SettingsDialog::AddCategory(const QString& name) { return item; } -void SettingsDialog::AddPage(Page id, SettingsPage* page, QTreeWidgetItem* parent) { - if (!parent) - parent = ui_->list->invisibleRootItem(); +void SettingsDialog::AddPage(Page id, SettingsPage* page, + QTreeWidgetItem* parent) { + if (!parent) parent = ui_->list->invisibleRootItem(); // Connect page's signals to the settings dialog's signals - connect(page, SIGNAL(NotificationPreview(OSD::Behaviour,QString,QString)), - SIGNAL(NotificationPreview(OSD::Behaviour,QString,QString))); + connect(page, SIGNAL(NotificationPreview(OSD::Behaviour, QString, QString)), + SIGNAL(NotificationPreview(OSD::Behaviour, QString, QString))); connect(page, SIGNAL(SetWiimotedevInterfaceActived(bool)), - SIGNAL(SetWiimotedevInterfaceActived(bool))); + SIGNAL(SetWiimotedevInterfaceActived(bool))); // Create the list item QTreeWidgetItem* item = new QTreeWidgetItem; @@ -250,7 +263,7 @@ void SettingsDialog::AddPage(Page id, SettingsPage* page, QTreeWidgetItem* paren } void SettingsDialog::Save() { - foreach (const PageData& data, pages_.values()) { + for (const PageData& data : pages_.values()) { data.page_->Save(); } } @@ -262,7 +275,7 @@ void SettingsDialog::accept() { void SettingsDialog::reject() { // Notify each page that user clicks on Cancel - foreach (const PageData& data, pages_.values()) { + for (const PageData& data : pages_.values()) { data.page_->Cancel(); } @@ -279,13 +292,14 @@ void SettingsDialog::DialogButtonClicked(QAbstractButton* button) { void SettingsDialog::showEvent(QShowEvent* e) { // Load settings loading_settings_ = true; - foreach (const PageData& data, pages_.values()) { + for (const PageData& data : pages_.values()) { data.page_->Load(); } loading_settings_ = false; // Resize the dialog if it's too big - const QSize available = QApplication::desktop()->availableGeometry(this).size(); + const QSize available = + QApplication::desktop()->availableGeometry(this).size(); if (available.height() < height()) { resize(width(), sizeHint().height()); } @@ -303,7 +317,7 @@ void SettingsDialog::OpenAtPage(Page page) { } void SettingsDialog::CurrentItemChanged(QTreeWidgetItem* item) { - if (! (item->flags() & Qt::ItemIsSelectable)) { + if (!(item->flags() & Qt::ItemIsSelectable)) { return; } @@ -311,7 +325,7 @@ void SettingsDialog::CurrentItemChanged(QTreeWidgetItem* item) { ui_->title->setText("" + item->text(0) + ""); // Display the right page - foreach (const PageData& data, pages_.values()) { + for (const PageData& data : pages_.values()) { if (data.item_ == item) { ui_->stacked_widget->setCurrentWidget(data.scroll_area_); break; diff --git a/src/ui/settingsdialog.h b/src/ui/settingsdialog.h index e9e709a99..2880a5423 100644 --- a/src/ui/settingsdialog.h +++ b/src/ui/settingsdialog.h @@ -39,22 +39,22 @@ class Ui_SettingsDialog; class GstEngine; - class SettingsItemDelegate : public QStyledItemDelegate { -public: + public: SettingsItemDelegate(QObject* parent); - QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const; + QSize sizeHint(const QStyleOptionViewItem& option, + const QModelIndex& index) const; void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; }; - class SettingsDialog : public QDialog { Q_OBJECT -public: - SettingsDialog(Application* app, BackgroundStreams* streams, QWidget* parent = 0); + public: + SettingsDialog(Application* app, BackgroundStreams* streams, + QWidget* parent = nullptr); ~SettingsDialog(); enum Page { @@ -69,6 +69,7 @@ public: Page_Library, Page_Lastfm, Page_Grooveshark, + Page_SoundCloud, Page_Spotify, Page_Magnatune, Page_DigitallyImported, @@ -80,17 +81,17 @@ public: Page_Subsonic, Page_Podcasts, Page_GoogleDrive, - Page_UbuntuOne, Page_Dropbox, Page_Skydrive, Page_Box, + Page_Vk }; - enum Role { - Role_IsSeparator = Qt::UserRole - }; + enum Role { Role_IsSeparator = Qt::UserRole }; - void SetGlobalShortcutManager(GlobalShortcuts* manager) { manager_ = manager; } + void SetGlobalShortcutManager(GlobalShortcuts* manager) { + manager_ = manager; + } void SetSongInfoView(SongInfoView* view) { song_info_view_ = view; } bool is_loading_settings() const { return loading_settings_; } @@ -117,11 +118,11 @@ signals: void NotificationPreview(OSD::Behaviour, QString, QString); void SetWiimotedevInterfaceActived(bool); -private slots: + private slots: void CurrentItemChanged(QTreeWidgetItem* item); void DialogButtonClicked(QAbstractButton* button); -private: + private: struct PageData { QTreeWidgetItem* item_; QScrollArea* scroll_area_; @@ -129,11 +130,11 @@ private: }; QTreeWidgetItem* AddCategory(const QString& name); - void AddPage(Page id, SettingsPage* page, QTreeWidgetItem* parent = NULL); + void AddPage(Page id, SettingsPage* page, QTreeWidgetItem* parent = nullptr); void Save(); -private: + private: Application* app_; LibraryDirectoryModel* model_; GlobalShortcuts* manager_; @@ -149,4 +150,4 @@ private: QMap pages_; }; -#endif // SETTINGSDIALOG_H +#endif // SETTINGSDIALOG_H diff --git a/src/ui/settingspage.cpp b/src/ui/settingspage.cpp index 696d4598a..b66912e81 100644 --- a/src/ui/settingspage.cpp +++ b/src/ui/settingspage.cpp @@ -19,7 +19,4 @@ #include "settingspage.h" SettingsPage::SettingsPage(SettingsDialog* dialog) - : QWidget(dialog), - dialog_(dialog) -{ -} + : QWidget(dialog), dialog_(dialog) {} diff --git a/src/ui/settingspage.h b/src/ui/settingspage.h index c9499ff02..99e33014d 100644 --- a/src/ui/settingspage.h +++ b/src/ui/settingspage.h @@ -27,7 +27,7 @@ class SettingsDialog; class SettingsPage : public QWidget { Q_OBJECT -public: + public: SettingsPage(SettingsDialog* dialog); // Return false to grey out the page's item in the list. @@ -46,8 +46,8 @@ signals: void NotificationPreview(OSD::Behaviour, QString, QString); void SetWiimotedevInterfaceActived(bool); -private: + private: SettingsDialog* dialog_; }; -#endif // SETTINGSPAGE_H +#endif // SETTINGSPAGE_H diff --git a/src/ui/standarditemiconloader.cpp b/src/ui/standarditemiconloader.cpp index 62efe300e..2a671f34d 100644 --- a/src/ui/standarditemiconloader.cpp +++ b/src/ui/standarditemiconloader.cpp @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -24,56 +24,53 @@ StandardItemIconLoader::StandardItemIconLoader(AlbumCoverLoader* cover_loader, QObject* parent) - : QObject(parent), - cover_loader_(cover_loader), - model_(NULL) -{ + : QObject(parent), cover_loader_(cover_loader), model_(nullptr) { cover_options_.desired_height_ = 16; - connect(cover_loader_, SIGNAL(ImageLoaded(quint64,QImage)), - SLOT(ImageLoaded(quint64,QImage))); + connect(cover_loader_, SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(ImageLoaded(quint64, QImage))); } void StandardItemIconLoader::SetModel(QAbstractItemModel* model) { if (model_) { - disconnect(model_, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - this, SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); + disconnect(model_, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), + this, SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); } model_ = model; - connect(model_, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), - SLOT(RowsAboutToBeRemoved(QModelIndex,int,int))); - connect(model_, SIGNAL(modelAboutToBeReset()), - SLOT(ModelReset())); + connect(model_, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), + SLOT(RowsAboutToBeRemoved(QModelIndex, int, int))); + connect(model_, SIGNAL(modelAboutToBeReset()), SLOT(ModelReset())); } void StandardItemIconLoader::LoadIcon(const QString& art_automatic, const QString& art_manual, QStandardItem* for_item) { - const quint64 id = cover_loader_->LoadImageAsync(cover_options_, art_automatic, art_manual); + const quint64 id = + cover_loader_->LoadImageAsync(cover_options_, art_automatic, art_manual); pending_covers_[id] = for_item; } -void StandardItemIconLoader::LoadIcon(const Song& song, QStandardItem* for_item) { +void StandardItemIconLoader::LoadIcon(const Song& song, + QStandardItem* for_item) { const quint64 id = cover_loader_->LoadImageAsync(cover_options_, song); pending_covers_[id] = for_item; } -void StandardItemIconLoader::RowsAboutToBeRemoved(const QModelIndex& parent, int begin, int end) { - for (QMap::iterator it = pending_covers_.begin() ; - it != pending_covers_.end() ; ) { +void StandardItemIconLoader::RowsAboutToBeRemoved(const QModelIndex& parent, + int begin, int end) { + for (QMap::iterator it = pending_covers_.begin(); + it != pending_covers_.end();) { const QStandardItem* item = it.value(); const QStandardItem* item_parent = item->parent(); - if (item_parent && - item_parent->index() == parent && - item->index().row() >= begin && - item->index().row() <= end) { + if (item_parent && item_parent->index() == parent && + item->index().row() >= begin && item->index().row() <= end) { cover_loader_->CancelTask(it.key()); it = pending_covers_.erase(it); } else { - ++ it; + ++it; } } } @@ -85,8 +82,7 @@ void StandardItemIconLoader::ModelReset() { void StandardItemIconLoader::ImageLoaded(quint64 id, const QImage& image) { QStandardItem* item = pending_covers_.take(id); - if (!item) - return; + if (!item) return; if (!image.isNull()) { item->setIcon(QIcon(QPixmap::fromImage(image))); diff --git a/src/ui/standarditemiconloader.h b/src/ui/standarditemiconloader.h index 536c27a88..4e0439367 100644 --- a/src/ui/standarditemiconloader.h +++ b/src/ui/standarditemiconloader.h @@ -1,16 +1,16 @@ /* This file is part of Clementine. Copyright 2012, David Sansome - + 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 . */ @@ -35,8 +35,8 @@ class QStandardItem; class StandardItemIconLoader : public QObject { Q_OBJECT -public: - StandardItemIconLoader(AlbumCoverLoader* cover_loader, QObject* parent = 0); + public: + StandardItemIconLoader(AlbumCoverLoader* cover_loader, QObject* parent = nullptr); AlbumCoverLoaderOptions* options() { return &cover_options_; } @@ -45,13 +45,13 @@ public: void LoadIcon(const QString& art_automatic, const QString& art_manual, QStandardItem* for_item); void LoadIcon(const Song& song, QStandardItem* for_item); - -private slots: + + private slots: void ImageLoaded(quint64 id, const QImage& image); void RowsAboutToBeRemoved(const QModelIndex& parent, int begin, int end); void ModelReset(); -private: + private: AlbumCoverLoader* cover_loader_; AlbumCoverLoaderOptions cover_options_; @@ -60,4 +60,4 @@ private: QMap pending_covers_; }; -#endif // STANDARDITEMICONLOADER_H +#endif // STANDARDITEMICONLOADER_H diff --git a/src/ui/systemtrayicon.cpp b/src/ui/systemtrayicon.cpp index 060436645..d3fabf650 100644 --- a/src/ui/systemtrayicon.cpp +++ b/src/ui/systemtrayicon.cpp @@ -29,14 +29,13 @@ #include SystemTrayIcon::SystemTrayIcon(QObject* parent) - : QObject(parent), - percentage_(0), - playing_icon_(":/tiny-start.png"), - paused_icon_(":/tiny-pause.png") -{ -} + : QObject(parent), + percentage_(0), + playing_icon_(":/tiny-start.png"), + paused_icon_(":/tiny-pause.png") {} -QPixmap SystemTrayIcon::CreateIcon(const QPixmap& icon, const QPixmap& grey_icon) { +QPixmap SystemTrayIcon::CreateIcon(const QPixmap& icon, + const QPixmap& grey_icon) { QRect rect(icon.rect()); // The angle of the line that's used to cover the icon. @@ -46,12 +45,9 @@ QPixmap SystemTrayIcon::CreateIcon(const QPixmap& icon, const QPixmap& grey_icon QPolygon mask; mask << rect.topRight(); - mask << rect.topRight() + QPoint( - length * sin(angle), - - length * cos(angle)); + mask << rect.topRight() + QPoint(length * sin(angle), -length * cos(angle)); - if (song_progress() > 50) - mask << rect.bottomLeft(); + if (song_progress() > 50) mask << rect.bottomLeft(); mask << rect.topLeft(); mask << rect.topRight(); @@ -67,9 +63,11 @@ QPixmap SystemTrayIcon::CreateIcon(const QPixmap& icon, const QPixmap& grey_icon // Draw the playing or paused icon in the top-right if (!current_state_icon().isNull()) { int height = rect.height() / 2; - QPixmap scaled(current_state_icon().scaledToHeight(height, Qt::SmoothTransformation)); + QPixmap scaled( + current_state_icon().scaledToHeight(height, Qt::SmoothTransformation)); - QRect state_rect(rect.width() - scaled.width(), 0, scaled.width(), scaled.height()); + QRect state_rect(rect.width() - scaled.width(), 0, scaled.width(), + scaled.height()); p.drawPixmap(state_rect, scaled); } @@ -88,8 +86,7 @@ void SystemTrayIcon::SetPaused() { UpdateIcon(); } -void SystemTrayIcon::SetPlaying(bool enable_play_pause, bool enable_ban, - bool enable_love) { +void SystemTrayIcon::SetPlaying(bool enable_play_pause, bool enable_love) { current_state_icon_ = playing_icon_; UpdateIcon(); } diff --git a/src/ui/systemtrayicon.h b/src/ui/systemtrayicon.h index defe5d533..d8bf0e1ba 100644 --- a/src/ui/systemtrayicon.h +++ b/src/ui/systemtrayicon.h @@ -28,12 +28,12 @@ class SystemTrayIcon : public QObject { Q_OBJECT public: - SystemTrayIcon(QObject* parent = 0); + SystemTrayIcon(QObject* parent = nullptr); // Called once to create the icon's context menu virtual void SetupMenu(QAction* previous, QAction* play, QAction* stop, QAction* stop_after, QAction* next, QAction* mute, - QAction* love, QAction* ban, QAction* quit) = 0; + QAction* love, QAction* quit) = 0; virtual bool IsVisible() const { return true; } virtual void SetVisible(bool visible) {} @@ -42,26 +42,25 @@ class SystemTrayIcon : public QObject { virtual void ShowPopup(const QString& summary, const QString& message, int timeout) {} /** - * If this get's invoked with image_path equal to NULL, the tooltip should + * If this get's invoked with image_path equal to nullptr, the tooltip should * still be shown - just without the cover art. */ virtual void SetNowPlaying(const Song& song, const QString& image_path) {} virtual void ClearNowPlaying() {} - static SystemTrayIcon* CreateSystemTrayIcon(QObject* parent = 0); + static SystemTrayIcon* CreateSystemTrayIcon(QObject* parent = nullptr); public slots: void SetProgress(int percentage); virtual void SetPaused(); virtual void SetPlaying(bool enable_play_pause = false, - bool enable_ban = false, bool enable_love = false); + bool enable_love = false); virtual void SetStopped(); virtual void LastFMButtonVisibilityChanged(bool value) {} virtual void LastFMButtonLoveStateChanged(bool value) {} - virtual void LastFMButtonBanStateChanged(bool value) {} virtual void MuteButtonStateChanged(bool value) {} - signals: +signals: void ChangeVolume(int delta); void SeekForward(); void SeekBackward(); @@ -84,4 +83,4 @@ class SystemTrayIcon : public QObject { QPixmap current_state_icon_; }; -#endif // SYSTEMTRAYICON_H +#endif // SYSTEMTRAYICON_H diff --git a/src/ui/trackselectiondialog.cpp b/src/ui/trackselectiondialog.cpp index 0fcde0502..162489b58 100644 --- a/src/ui/trackselectiondialog.cpp +++ b/src/ui/trackselectiondialog.cpp @@ -29,23 +29,22 @@ #include #include -TrackSelectionDialog::TrackSelectionDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_TrackSelectionDialog), - save_on_close_(false) -{ +TrackSelectionDialog::TrackSelectionDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_TrackSelectionDialog), save_on_close_(false) { // Setup dialog window ui_->setupUi(this); connect(ui_->song_list, SIGNAL(currentRowChanged(int)), SLOT(UpdateStack())); - connect(ui_->results, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), + connect(ui_->results, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(ResultSelected())); ui_->splitter->setSizes(QList() << 200 << width() - 200); SetLoading(QString()); // Add the next/previous buttons - previous_button_ = new QPushButton(IconLoader::Load("go-previous"), tr("Previous"), this); + previous_button_ = + new QPushButton(IconLoader::Load("go-previous"), tr("Previous"), this); next_button_ = new QPushButton(IconLoader::Load("go-next"), tr("Next"), this); ui_->button_box->addButton(previous_button_, QDialogButtonBox::ResetRole); ui_->button_box->addButton(next_button_, QDialogButtonBox::ResetRole); @@ -56,27 +55,26 @@ TrackSelectionDialog::TrackSelectionDialog(QWidget *parent) // Set some shortcuts for the buttons new QShortcut(QKeySequence::Back, previous_button_, SLOT(click())); new QShortcut(QKeySequence::Forward, next_button_, SLOT(click())); - new QShortcut(QKeySequence::MoveToPreviousPage, previous_button_, SLOT(click())); + new QShortcut(QKeySequence::MoveToPreviousPage, previous_button_, + SLOT(click())); new QShortcut(QKeySequence::MoveToNextPage, next_button_, SLOT(click())); // Resize columns - ui_->results->setColumnWidth(0, 50); // Track column - ui_->results->setColumnWidth(1, 50); // Year column - ui_->results->setColumnWidth(2, 160); // Title column - ui_->results->setColumnWidth(3, 160); // Artist column - ui_->results->setColumnWidth(4, 160); // Album column + ui_->results->setColumnWidth(0, 50); // Track column + ui_->results->setColumnWidth(1, 50); // Year column + ui_->results->setColumnWidth(2, 160); // Title column + ui_->results->setColumnWidth(3, 160); // Artist column + ui_->results->setColumnWidth(4, 160); // Album column } -TrackSelectionDialog::~TrackSelectionDialog() { - delete ui_; -} +TrackSelectionDialog::~TrackSelectionDialog() { delete ui_; } void TrackSelectionDialog::Init(const SongList& songs) { ui_->song_list->clear(); ui_->stack->setCurrentWidget(ui_->loading_page); data_.clear(); - foreach (const Song& song, songs) { + for (const Song& song : songs) { Data data; data.original_song_ = song; data_ << data; @@ -98,15 +96,14 @@ void TrackSelectionDialog::FetchTagProgress(const Song& original_song, const QString& progress) { // Find the item with this filename int row = -1; - for (int i=0 ; isong_list->item(row)->setForeground(palette().text()); @@ -145,8 +141,7 @@ void TrackSelectionDialog::FetchTagFinished(const Song& original_song, void TrackSelectionDialog::UpdateStack() { const int row = ui_->song_list->currentRow(); - if (row < 0 || row >= data_.count()) - return; + if (row < 0 || row >= data_.count()) return; const Data& data = data_[row]; @@ -171,12 +166,12 @@ void TrackSelectionDialog::UpdateStack() { AddDivider(tr("Suggested tags"), ui_->results); int song_index = 0; - foreach (const Song& song, data.results_) { + for (const Song& song : data.results_) { AddSong(song, song_index++, ui_->results); } // Find the item that was selected last time - for (int i=0 ; iresults->model()->rowCount() ; ++i) { + for (int i = 0; i < ui_->results->model()->rowCount(); ++i) { const QModelIndex index = ui_->results->model()->index(i, 0); const QVariant id = index.data(Qt::UserRole); if (!id.isNull() && id.toInt() == data.selected_result_) { @@ -186,7 +181,8 @@ void TrackSelectionDialog::UpdateStack() { } } -void TrackSelectionDialog::AddDivider(const QString& text, QTreeWidget* parent) const { +void TrackSelectionDialog::AddDivider(const QString& text, + QTreeWidget* parent) const { QTreeWidgetItem* item = new QTreeWidgetItem(parent); item->setFirstColumnSpanned(true); item->setText(0, text); @@ -198,7 +194,8 @@ void TrackSelectionDialog::AddDivider(const QString& text, QTreeWidget* parent) item->setFont(0, bold_font); } -void TrackSelectionDialog::AddSong(const Song& song, int result_index, QTreeWidget* parent) const { +void TrackSelectionDialog::AddSong(const Song& song, int result_index, + QTreeWidget* parent) const { QStringList values; values << ((song.track() > 0) ? QString::number(song.track()) : QString()) << ((song.year() > 0) ? QString::number(song.year()) : QString()) @@ -210,14 +207,13 @@ void TrackSelectionDialog::AddSong(const Song& song, int result_index, QTreeWidg } void TrackSelectionDialog::ResultSelected() { - if (!ui_->results->currentItem()) - return; + if (!ui_->results->currentItem()) return; const int song_row = ui_->song_list->currentRow(); - if (song_row == -1) - return; + if (song_row == -1) return; - const int result_index = ui_->results->currentItem()->data(0, Qt::UserRole).toInt(); + const int result_index = + ui_->results->currentItem()->data(0, Qt::UserRole).toInt(); data_[song_row].selected_result_ = result_index; } @@ -231,7 +227,7 @@ void TrackSelectionDialog::SetLoading(const QString& message) { } void TrackSelectionDialog::SaveData(const QList& data) { - for (int i=0 ; i& data) { copy.set_track(new_metadata.track()); copy.set_year(new_metadata.year()); - if (!TagReaderClient::Instance()->SaveFileBlocking(copy.url().toLocalFile(), copy)) { - qLog(Warning) << "Failed to write new auto-tags to" << copy.url().toLocalFile(); + if (!TagReaderClient::Instance()->SaveFileBlocking(copy.url().toLocalFile(), + copy)) { + qLog(Warning) << "Failed to write new auto-tags to" + << copy.url().toLocalFile(); } } } @@ -256,7 +254,8 @@ void TrackSelectionDialog::accept() { SetLoading(tr("Saving tracks") + "..."); // Save tags in the background - QFuture future = QtConcurrent::run(&TrackSelectionDialog::SaveData, data_); + QFuture future = + QtConcurrent::run(&TrackSelectionDialog::SaveData, data_); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); connect(watcher, SIGNAL(finished()), SLOT(AcceptFinished())); @@ -266,7 +265,7 @@ void TrackSelectionDialog::accept() { QDialog::accept(); - foreach (const Data& data, data_) { + for (const Data& data : data_) { if (data.pending_ || data.results_.isEmpty() || data.selected_result_ == -1) continue; @@ -278,8 +277,7 @@ void TrackSelectionDialog::accept() { void TrackSelectionDialog::AcceptFinished() { QFutureWatcher* watcher = dynamic_cast*>(sender()); - if (!watcher) - return; + if (!watcher) return; watcher->deleteLater(); SetLoading(QString()); @@ -292,7 +290,7 @@ void TrackSelectionDialog::NextSong() { } void TrackSelectionDialog::PreviousSong() { - int row = (ui_->song_list->currentRow() - 1 + ui_->song_list->count()) % ui_->song_list->count(); + int row = (ui_->song_list->currentRow() - 1 + ui_->song_list->count()) % + ui_->song_list->count(); ui_->song_list->setCurrentRow(row); } - diff --git a/src/ui/trackselectiondialog.h b/src/ui/trackselectiondialog.h index 03ae1f8b1..9ce76ea45 100644 --- a/src/ui/trackselectiondialog.h +++ b/src/ui/trackselectiondialog.h @@ -30,17 +30,18 @@ class QTreeWidget; class TrackSelectionDialog : public QDialog { Q_OBJECT -public: - TrackSelectionDialog(QWidget *parent = 0); + public: + TrackSelectionDialog(QWidget* parent = nullptr); ~TrackSelectionDialog(); void set_save_on_close(bool save_on_close) { save_on_close_ = save_on_close; } void Init(const SongList& songs); -public slots: + public slots: void FetchTagProgress(const Song& original_song, const QString& progress); - void FetchTagFinished(const Song& original_song, const SongList& songs_guessed); + void FetchTagFinished(const Song& original_song, + const SongList& songs_guessed); // QDialog void accept(); @@ -48,7 +49,7 @@ public slots: signals: void SongChosen(const Song& original_song, const Song& new_metadata); -private slots: + private slots: void UpdateStack(); void NextSong(); @@ -57,7 +58,7 @@ private slots: void ResultSelected(); void AcceptFinished(); -private: + private: Ui_TrackSelectionDialog* ui_; struct Data { @@ -76,7 +77,7 @@ private: void SetLoading(const QString& message); static void SaveData(const QList& data); -private: + private: QList data_; QPushButton* previous_button_; @@ -85,6 +86,4 @@ private: bool save_on_close_; }; -#endif // TRACKSELECTIONDIALOG_H - - +#endif // TRACKSELECTIONDIALOG_H diff --git a/src/ui/windows7thumbbar.cpp b/src/ui/windows7thumbbar.cpp index 9233af53e..4eb754e40 100644 --- a/src/ui/windows7thumbbar.cpp +++ b/src/ui/windows7thumbbar.cpp @@ -22,24 +22,20 @@ #include #ifdef Q_OS_WIN32 -# define _WIN32_WINNT 0x0600 -# include -# include -# include -#endif // Q_OS_WIN32 - +#define _WIN32_WINNT 0x0600 +#include +#include +#include +#endif // Q_OS_WIN32 const int Windows7ThumbBar::kIconSize = 16; const int Windows7ThumbBar::kMaxButtonCount = 7; - Windows7ThumbBar::Windows7ThumbBar(QWidget* widget) - : QObject(widget), - widget_(widget), - button_created_message_id_(0), - taskbar_list_(NULL) -{ -} + : QObject(widget), + widget_(widget), + button_created_message_id_(0), + taskbar_list_(nullptr) {} void Windows7ThumbBar::SetActions(const QList& actions) { #ifdef Q_OS_WIN32 @@ -47,19 +43,20 @@ void Windows7ThumbBar::SetActions(const QList& actions) { Q_ASSERT(actions.count() <= kMaxButtonCount); actions_ = actions; - foreach (QAction* action, actions) { + for (QAction* action : actions) { if (action) { connect(action, SIGNAL(changed()), SLOT(ActionChanged())); } } qLog(Debug) << "Done"; -#endif // Q_OS_WIN32 +#endif // Q_OS_WIN32 } #ifdef Q_OS_WIN32 static void SetupButton(const QAction* action, THUMBBUTTON* button) { if (action) { - button->hIcon = action->icon().pixmap(Windows7ThumbBar::kIconSize).toWinHICON(); + button->hIcon = + action->icon().pixmap(Windows7ThumbBar::kIconSize).toWinHICON(); button->dwFlags = action->isEnabled() ? THBF_ENABLED : THBF_DISABLED; // This is unsafe - doesn't obey 260-char restriction action->text().toWCharArray(button->szTip); @@ -76,14 +73,15 @@ static void SetupButton(const QAction* action, THUMBBUTTON* button) { button->dwMask = THUMBBUTTONMASK(THB_FLAGS); } } -#endif // Q_OS_WIN32 +#endif // Q_OS_WIN32 void Windows7ThumbBar::HandleWinEvent(MSG* msg) { #ifdef Q_OS_WIN32 if (button_created_message_id_ == 0) { // Compute the value for the TaskbarButtonCreated message button_created_message_id_ = RegisterWindowMessage("TaskbarButtonCreated"); - qLog(Debug) << "TaskbarButtonCreated message ID registered" << button_created_message_id_; + qLog(Debug) << "TaskbarButtonCreated message ID registered" + << button_created_message_id_; } if (msg->message == button_created_message_id_) { @@ -93,32 +91,38 @@ void Windows7ThumbBar::HandleWinEvent(MSG* msg) { if (taskbar_list_) { qLog(Debug) << "Releasing old taskbar list"; reinterpret_cast(taskbar_list_)->Release(); - taskbar_list_ = NULL; + taskbar_list_ = nullptr; } // Copied from win7 SDK shobjidl.h - static const GUID CLSID_ITaskbarList ={ 0x56FDF344,0xFD6D,0x11d0,{0x95,0x8A,0x00,0x60,0x97,0xC9,0xA0,0x90}}; + static const GUID CLSID_ITaskbarList = { + 0x56FDF344, + 0xFD6D, + 0x11d0, + {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}}; // Create the taskbar list - hr = CoCreateInstance(CLSID_ITaskbarList, NULL, CLSCTX_ALL, - IID_ITaskbarList3, (void**) &taskbar_list_); + hr = CoCreateInstance(CLSID_ITaskbarList, nullptr, CLSCTX_ALL, + IID_ITaskbarList3, (void**)&taskbar_list_); if (hr != S_OK) { - qLog(Warning) << "Error creating the ITaskbarList3 interface" << hex << DWORD (hr); + qLog(Warning) << "Error creating the ITaskbarList3 interface" << hex + << DWORD(hr); return; } - ITaskbarList3* taskbar_list = reinterpret_cast(taskbar_list_); + ITaskbarList3* taskbar_list = + reinterpret_cast(taskbar_list_); hr = taskbar_list->HrInit(); if (hr != S_OK) { - qLog(Warning) << "Error initialising taskbar list" << hex << DWORD (hr); + qLog(Warning) << "Error initialising taskbar list" << hex << DWORD(hr); taskbar_list->Release(); - taskbar_list_ = NULL; + taskbar_list_ = nullptr; return; } // Add the buttons qLog(Debug) << "Initialising" << actions_.count() << "buttons"; THUMBBUTTON buttons[kMaxButtonCount]; - for (int i=0 ; iiId = i; @@ -126,12 +130,11 @@ void Windows7ThumbBar::HandleWinEvent(MSG* msg) { } qLog(Debug) << "Adding buttons"; - hr = taskbar_list->ThumbBarAddButtons(widget_->winId(), actions_.count(), buttons); - if (hr != S_OK) - qLog(Debug) << "Failed to add buttons" << hex << DWORD (hr); + hr = taskbar_list->ThumbBarAddButtons(widget_->winId(), actions_.count(), + buttons); + if (hr != S_OK) qLog(Debug) << "Failed to add buttons" << hex << DWORD(hr); for (int i = 0; i < actions_.count(); i++) { - if (buttons[i].hIcon > 0) - DestroyIcon (buttons[i].hIcon); + if (buttons[i].hIcon > 0) DestroyIcon(buttons[i].hIcon); } } else if (msg->message == WM_COMMAND) { const int button_id = LOWORD(msg->wParam); @@ -143,26 +146,25 @@ void Windows7ThumbBar::HandleWinEvent(MSG* msg) { } } } -#endif // Q_OS_WIN32 +#endif // Q_OS_WIN32 } void Windows7ThumbBar::ActionChanged() { #ifdef Q_OS_WIN32 - if (!taskbar_list_) - return; + if (!taskbar_list_) return; ITaskbarList3* taskbar_list = reinterpret_cast(taskbar_list_); THUMBBUTTON buttons[kMaxButtonCount]; - for (int i=0 ; iiId = i; SetupButton(action, button); - if (buttons->hIcon > 0) - DestroyIcon(buttons->hIcon); + if (buttons->hIcon > 0) DestroyIcon(buttons->hIcon); } - taskbar_list->ThumbBarUpdateButtons(widget_->winId(), actions_.count(), buttons); -#endif // Q_OS_WIN32 + taskbar_list->ThumbBarUpdateButtons(widget_->winId(), actions_.count(), + buttons); +#endif // Q_OS_WIN32 } diff --git a/src/ui/windows7thumbbar.h b/src/ui/windows7thumbbar.h index 70b7f03bc..48973dd98 100644 --- a/src/ui/windows7thumbbar.h +++ b/src/ui/windows7thumbbar.h @@ -22,13 +22,13 @@ #include #ifndef Q_OS_WIN32 - typedef void MSG; -#endif // Q_OS_WIN32 +typedef void MSG; +#endif // Q_OS_WIN32 class Windows7ThumbBar : public QObject { Q_OBJECT -public: + public: // Creates a list of buttons in the taskbar icon for this window. Does // nothing and is safe to use on other operating systems too. Windows7ThumbBar(QWidget* widget = 0); @@ -37,16 +37,16 @@ public: static const int kMaxButtonCount; // You must call this in the parent widget's constructor before returning - // to the event loop. If an action is NULL it becomes a spacer. + // to the event loop. If an action is nullptr it becomes a spacer. void SetActions(const QList& actions); // Call this from the parent's winEvent() function. void HandleWinEvent(MSG* msg); -private slots: + private slots: void ActionChanged(); -private: + private: QWidget* widget_; QList actions_; @@ -56,4 +56,4 @@ private: void* taskbar_list_; }; -#endif // WINDOWS7THUMBBAR_H +#endif // WINDOWS7THUMBBAR_H diff --git a/src/visualisations/projectmpresetmodel.cpp b/src/visualisations/projectmpresetmodel.cpp index 77c684394..a9cadfadd 100644 --- a/src/visualisations/projectmpresetmodel.cpp +++ b/src/visualisations/projectmpresetmodel.cpp @@ -20,75 +20,74 @@ #include "projectmvisualisation.h" #ifdef USE_SYSTEM_PROJECTM -# include +#include #else -# include "projectM.hpp" +#include "projectM.hpp" #endif #include #include -ProjectMPresetModel::ProjectMPresetModel(ProjectMVisualisation* vis, QObject *parent) - : QAbstractItemModel(parent), - vis_(vis) -{ +ProjectMPresetModel::ProjectMPresetModel(ProjectMVisualisation* vis, + QObject* parent) + : QAbstractItemModel(parent), vis_(vis) { // Find presets QDir preset_dir(vis_->preset_url()); - QStringList presets(preset_dir.entryList( - QStringList() << "*.milk" << "*.prjm", - QDir::Files | QDir::NoDotAndDotDot | QDir::Readable, - QDir::Name | QDir::IgnoreCase)); + QStringList presets( + preset_dir.entryList(QStringList() << "*.milk" + << "*.prjm", + QDir::Files | QDir::NoDotAndDotDot | QDir::Readable, + QDir::Name | QDir::IgnoreCase)); - foreach (const QString& filename, presets) { - all_presets_ << Preset(preset_dir.absoluteFilePath(filename), filename, false); + for (const QString& filename : presets) { + all_presets_ << Preset(preset_dir.absoluteFilePath(filename), filename, + false); } } int ProjectMPresetModel::rowCount(const QModelIndex&) const { - if (!vis_) - return 0; + if (!vis_) return 0; return all_presets_.count(); } -int ProjectMPresetModel::columnCount(const QModelIndex&) const { - return 1; -} +int ProjectMPresetModel::columnCount(const QModelIndex&) const { return 1; } -QModelIndex ProjectMPresetModel::index(int row, int column, const QModelIndex&) const { +QModelIndex ProjectMPresetModel::index(int row, int column, + const QModelIndex&) const { return createIndex(row, column); } -QModelIndex ProjectMPresetModel::parent(const QModelIndex &child) const { +QModelIndex ProjectMPresetModel::parent(const QModelIndex& child) const { return QModelIndex(); } -QVariant ProjectMPresetModel::data(const QModelIndex &index, int role) const { +QVariant ProjectMPresetModel::data(const QModelIndex& index, int role) const { switch (role) { - case Qt::DisplayRole: - return all_presets_[index.row()].name_; - case Qt::CheckStateRole: { - bool selected = all_presets_[index.row()].selected_; - return selected ? Qt::Checked : Qt::Unchecked; - } - case Role_Url: - return all_presets_[index.row()].path_; - default: - return QVariant(); + case Qt::DisplayRole: + return all_presets_[index.row()].name_; + case Qt::CheckStateRole: { + bool selected = all_presets_[index.row()].selected_; + return selected ? Qt::Checked : Qt::Unchecked; + } + case Role_Url: + return all_presets_[index.row()].path_; + default: + return QVariant(); } } -Qt::ItemFlags ProjectMPresetModel::flags(const QModelIndex &index) const { - if (!index.isValid()) - return QAbstractItemModel::flags(index); +Qt::ItemFlags ProjectMPresetModel::flags(const QModelIndex& index) const { + if (!index.isValid()) return QAbstractItemModel::flags(index); return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled; } -bool ProjectMPresetModel::setData(const QModelIndex &index, - const QVariant &value, int role) { +bool ProjectMPresetModel::setData(const QModelIndex& index, + const QVariant& value, int role) { if (role == Qt::CheckStateRole) { all_presets_[index.row()].selected_ = value.toBool(); - vis_->SetSelected(QStringList() << all_presets_[index.row()].path_, value.toBool()); + vis_->SetSelected(QStringList() << all_presets_[index.row()].path_, + value.toBool()); return true; } return false; @@ -100,30 +99,29 @@ void ProjectMPresetModel::SetImmediatePreset(const QModelIndex& index) { void ProjectMPresetModel::SelectAll() { QStringList paths; - for (int i=0 ; iSetSelected(paths, true); - emit dataChanged(index(0, 0), index(rowCount()-1, 0)); + emit dataChanged(index(0, 0), index(rowCount() - 1, 0)); } void ProjectMPresetModel::SelectNone() { vis_->ClearSelected(); - for (int i=0 ; i all_presets_; }; -#endif // PROJECTMPRESETMODEL_H +#endif // PROJECTMPRESETMODEL_H diff --git a/src/visualisations/projectmvisualisation.cpp b/src/visualisations/projectmvisualisation.cpp index d16baf36d..4f45c5d38 100644 --- a/src/visualisations/projectmvisualisation.cpp +++ b/src/visualisations/projectmvisualisation.cpp @@ -34,46 +34,45 @@ #include #ifdef USE_SYSTEM_PROJECTM -# include +#include #else -# include "projectM.hpp" +#include "projectM.hpp" #endif #ifdef Q_OS_MAC -# include "core/mac_startup.h" -# include +#include "core/mac_startup.h" +#include #else -# include +#include #endif -ProjectMVisualisation::ProjectMVisualisation(QObject *parent) - : QGraphicsScene(parent), - projectm_(NULL), - preset_model_(NULL), - mode_(Random), - duration_(15), - texture_size_(512) -{ - connect(this, SIGNAL(sceneRectChanged(QRectF)), SLOT(SceneRectChanged(QRectF))); +ProjectMVisualisation::ProjectMVisualisation(QObject* parent) + : QGraphicsScene(parent), + preset_model_(nullptr), + mode_(Random), + duration_(15), + texture_size_(512) { + connect(this, SIGNAL(sceneRectChanged(QRectF)), + SLOT(SceneRectChanged(QRectF))); - for (int i=0 ; iendNativePainting(); } -void ProjectMVisualisation::SceneRectChanged(const QRectF &rect) { - if (projectm_) - projectm_->projectM_resetGL(rect.width(), rect.height()); +void ProjectMVisualisation::SceneRectChanged(const QRectF& rect) { + if (projectm_) projectm_->projectM_resetGL(rect.width(), rect.height()); } void ProjectMVisualisation::SetTextureSize(int size) { texture_size_ = size; - if (projectm_) - projectm_->changeTextureSize(texture_size_); + if (projectm_) projectm_->changeTextureSize(texture_size_); } void ProjectMVisualisation::SetDuration(int seconds) { duration_ = seconds; - if (projectm_) - projectm_->changePresetDuration(duration_); + if (projectm_) projectm_->changePresetDuration(duration_); Save(); } @@ -172,16 +169,17 @@ void ProjectMVisualisation::ConsumeBuffer(GstBuffer* buffer, int) { const int samples_per_channel = GST_BUFFER_SIZE(buffer) / sizeof(short) / 2; const short* data = reinterpret_cast(GST_BUFFER_DATA(buffer)); - if (projectm_) - projectm_->pcm()->addPCM16Data(data, samples_per_channel); + if (projectm_) projectm_->pcm()->addPCM16Data(data, samples_per_channel); gst_buffer_unref(buffer); } -void ProjectMVisualisation::SetSelected(const QStringList& paths, bool selected) { - foreach (const QString& path, paths) { +void ProjectMVisualisation::SetSelected(const QStringList& paths, + bool selected) { + for (const QString& path : paths) { int index = IndexOfPreset(path); if (selected && index == -1) { - projectm_->addPresetURL(path.toStdString(), std::string(), default_rating_list_); + projectm_->addPresetURL(path.toStdString(), std::string(), + default_rating_list_); } else if (!selected && index != -1) { projectm_->removePreset(index); } @@ -195,10 +193,9 @@ void ProjectMVisualisation::ClearSelected() { Save(); } -int ProjectMVisualisation::IndexOfPreset(const QString &path) const { - for (uint i=0 ; igetPlaylistSize() ; ++i) { - if (QString::fromStdString(projectm_->getPresetURL(i)) == path) - return i; +int ProjectMVisualisation::IndexOfPreset(const QString& path) const { + for (uint i = 0; i < projectm_->getPlaylistSize(); ++i) { + if (QString::fromStdString(projectm_->getPresetURL(i)) == path) return i; } return -1; } @@ -213,17 +210,19 @@ void ProjectMVisualisation::Load() { projectm_->clearPlaylist(); switch (mode_) { case Random: - for (int i=0 ; iall_presets_.count() ; ++i) { - projectm_->addPresetURL(preset_model_->all_presets_[i].path_.toStdString(), - std::string(), default_rating_list_); + for (int i = 0; i < preset_model_->all_presets_.count(); ++i) { + projectm_->addPresetURL( + preset_model_->all_presets_[i].path_.toStdString(), std::string(), + default_rating_list_); preset_model_->all_presets_[i].selected_ = true; } break; case FromList: { QStringList paths(s.value("preset_paths").toStringList()); - foreach (const QString& path, paths) { - projectm_->addPresetURL(path.toStdString(), std::string(), default_rating_list_); + for (const QString& path : paths) { + projectm_->addPresetURL(path.toStdString(), std::string(), + default_rating_list_); preset_model_->MarkSelected(path, true); } } @@ -233,9 +232,9 @@ void ProjectMVisualisation::Load() { void ProjectMVisualisation::Save() { QStringList paths; - foreach (const ProjectMPresetModel::Preset& preset, preset_model_->all_presets_) { - if (preset.selected_) - paths << preset.path_; + for (const ProjectMPresetModel::Preset& preset : + preset_model_->all_presets_) { + if (preset.selected_) paths << preset.path_; } QSettings s; @@ -257,7 +256,8 @@ QString ProjectMVisualisation::preset_url() const { void ProjectMVisualisation::SetImmediatePreset(const QString& path) { int index = IndexOfPreset(path); if (index == -1) { - index = projectm_->addPresetURL(path.toStdString(), std::string(), default_rating_list_); + index = projectm_->addPresetURL(path.toStdString(), std::string(), + default_rating_list_); } projectm_->selectPreset(index, true); @@ -266,7 +266,5 @@ void ProjectMVisualisation::SetImmediatePreset(const QString& path) { void ProjectMVisualisation::Lock(bool lock) { projectm_->setPresetLock(lock); - if (!lock) - Load(); + if (!lock) Load(); } - diff --git a/src/visualisations/projectmvisualisation.h b/src/visualisations/projectmvisualisation.h index 2d9352cf3..918f0c77f 100644 --- a/src/visualisations/projectmvisualisation.h +++ b/src/visualisations/projectmvisualisation.h @@ -18,12 +18,12 @@ #ifndef PROJECTMVISUALISATION_H #define PROJECTMVISUALISATION_H +#include + #include #include #include -#include - #include "engines/bufferconsumer.h" class projectM; @@ -34,14 +34,11 @@ class QTemporaryFile; class ProjectMVisualisation : public QGraphicsScene, public BufferConsumer { Q_OBJECT -public: - ProjectMVisualisation(QObject *parent = 0); + public: + ProjectMVisualisation(QObject* parent = nullptr); ~ProjectMVisualisation(); - enum Mode { - Random = 0, - FromList = 1, - }; + enum Mode { Random = 0, FromList = 1, }; QString preset_url() const; ProjectMPresetModel* preset_model() const { return preset_model_; } @@ -50,9 +47,9 @@ public: int duration() const { return duration_; } // BufferConsumer - void ConsumeBuffer(GstBuffer *buffer, int); + void ConsumeBuffer(GstBuffer* buffer, int); -public slots: + public slots: void SetTextureSize(int size); void SetDuration(int seconds); @@ -63,31 +60,31 @@ public slots: void Lock(bool lock); -protected: + protected: // QGraphicsScene - void drawBackground(QPainter *painter, const QRectF &rect); + void drawBackground(QPainter* painter, const QRectF& rect); -private slots: + private slots: void SceneRectChanged(const QRectF& rect); -private: + private: void InitProjectM(); void Load(); void Save(); int IndexOfPreset(const QString& path) const; -private: - boost::scoped_ptr projectm_; + private: + std::unique_ptr projectm_; ProjectMPresetModel* preset_model_; Mode mode_; int duration_; - boost::scoped_ptr temporary_font_; + std::unique_ptr temporary_font_; std::vector default_rating_list_; int texture_size_; }; -#endif // PROJECTMVISUALISATION_H +#endif // PROJECTMVISUALISATION_H diff --git a/src/visualisations/visualisationcontainer.cpp b/src/visualisations/visualisationcontainer.cpp index c4d1ced44..fbfbf8dfb 100644 --- a/src/visualisations/visualisationcontainer.cpp +++ b/src/visualisations/visualisationcontainer.cpp @@ -47,18 +47,17 @@ const int VisualisationContainer::kDefaultHeight = 512; const int VisualisationContainer::kDefaultFps = kHighFramerate; const int VisualisationContainer::kDefaultTextureSize = 512; -VisualisationContainer::VisualisationContainer(QWidget *parent) - : QGraphicsView(parent), - initialised_(false), - engine_(NULL), - vis_(new ProjectMVisualisation(this)), - overlay_(new VisualisationOverlay), - selector_(new VisualisationSelector(this)), - overlay_proxy_(NULL), - menu_(new QMenu(this)), - fps_(kDefaultFps), - size_(kDefaultTextureSize) -{ +VisualisationContainer::VisualisationContainer(QWidget* parent) + : QGraphicsView(parent), + initialised_(false), + engine_(nullptr), + vis_(new ProjectMVisualisation(this)), + overlay_(new VisualisationOverlay), + selector_(new VisualisationSelector(this)), + overlay_proxy_(nullptr), + menu_(new QMenu(this)), + fps_(kDefaultFps), + size_(kDefaultTextureSize) { QSettings s; s.beginGroup(kSettingsGroup); if (!restoreGeometry(s.value("geometry").toByteArray())) { @@ -87,7 +86,8 @@ void VisualisationContainer::Init() { // Add the overlay overlay_proxy_ = scene()->addWidget(overlay_); - connect(overlay_, SIGNAL(OpacityChanged(qreal)), SLOT(ChangeOverlayOpacity(qreal))); + connect(overlay_, SIGNAL(OpacityChanged(qreal)), + SLOT(ChangeOverlayOpacity(qreal))); connect(overlay_, SIGNAL(ShowPopupMenu(QPoint)), SLOT(ShowPopupMenu(QPoint))); ChangeOverlayOpacity(0.0); @@ -104,32 +104,40 @@ void VisualisationContainer::Init() { QMenu* fps_menu = menu_->addMenu(tr("Framerate")); QSignalMapper* fps_mapper = new QSignalMapper(this); QActionGroup* fps_group = new QActionGroup(this); - AddMenuItem(tr("Low (%1 fps)").arg(kLowFramerate), kLowFramerate, fps_, fps_group, fps_mapper); - AddMenuItem(tr("Medium (%1 fps)").arg(kMediumFramerate), kMediumFramerate, fps_, fps_group, fps_mapper); - AddMenuItem(tr("High (%1 fps)").arg(kHighFramerate), kHighFramerate, fps_, fps_group, fps_mapper); - AddMenuItem(tr("Super high (%1 fps)").arg(kSuperHighFramerate), kSuperHighFramerate, fps_, fps_group, fps_mapper); + AddMenuItem(tr("Low (%1 fps)").arg(kLowFramerate), kLowFramerate, fps_, + fps_group, fps_mapper); + AddMenuItem(tr("Medium (%1 fps)").arg(kMediumFramerate), kMediumFramerate, + fps_, fps_group, fps_mapper); + AddMenuItem(tr("High (%1 fps)").arg(kHighFramerate), kHighFramerate, fps_, + fps_group, fps_mapper); + AddMenuItem(tr("Super high (%1 fps)").arg(kSuperHighFramerate), + kSuperHighFramerate, fps_, fps_group, fps_mapper); fps_menu->addActions(fps_group->actions()); connect(fps_mapper, SIGNAL(mapped(int)), SLOT(SetFps(int))); - QMenu* quality_menu = menu_->addMenu(tr("Quality")); + QMenu* quality_menu = menu_->addMenu(tr("Quality", "Visualisation quality")); QSignalMapper* quality_mapper = new QSignalMapper(this); QActionGroup* quality_group = new QActionGroup(this); AddMenuItem(tr("Low (256x256)"), 256, size_, quality_group, quality_mapper); - AddMenuItem(tr("Medium (512x512)"), 512, size_, quality_group, quality_mapper); - AddMenuItem(tr("High (1024x1024)"), 1024, size_, quality_group, quality_mapper); - AddMenuItem(tr("Super high (2048x2048)"), 2048, size_, quality_group, quality_mapper); + AddMenuItem(tr("Medium (512x512)"), 512, size_, quality_group, + quality_mapper); + AddMenuItem(tr("High (1024x1024)"), 1024, size_, quality_group, + quality_mapper); + AddMenuItem(tr("Super high (2048x2048)"), 2048, size_, quality_group, + quality_mapper); quality_menu->addActions(quality_group->actions()); connect(quality_mapper, SIGNAL(mapped(int)), SLOT(SetQuality(int))); menu_->addAction(tr("Select visualizations..."), selector_, SLOT(show())); menu_->addSeparator(); - menu_->addAction(IconLoader::Load("application-exit"), tr("Close visualization"), - this, SLOT(hide())); + menu_->addAction(IconLoader::Load("application-exit"), + tr("Close visualization"), this, SLOT(hide())); } -void VisualisationContainer::AddMenuItem(const QString &name, int value, int def, - QActionGroup* group, QSignalMapper *mapper) { +void VisualisationContainer::AddMenuItem(const QString& name, int value, + int def, QActionGroup* group, + QSignalMapper* mapper) { QAction* action = group->addAction(name); action->setCheckable(true); action->setChecked(value == def); @@ -140,8 +148,7 @@ void VisualisationContainer::AddMenuItem(const QString &name, int value, int def void VisualisationContainer::SetEngine(GstEngine* engine) { engine_ = engine; - if (isVisible()) - engine_->AddBufferConsumer(vis_); + if (isVisible()) engine_->AddBufferConsumer(vis_); } void VisualisationContainer::showEvent(QShowEvent* e) { @@ -149,8 +156,9 @@ void VisualisationContainer::showEvent(QShowEvent* e) { if (!QGLFormat::hasOpenGL()) { hide(); QMessageBox::warning(this, tr("Clementine Visualization"), - tr("Your system is missing OpenGL support, visualizations are unavailable."), - QMessageBox::Close); + tr("Your system is missing OpenGL support, " + "visualizations are unavailable."), + QMessageBox::Close); return; } Init(); @@ -160,16 +168,14 @@ void VisualisationContainer::showEvent(QShowEvent* e) { QGraphicsView::showEvent(e); update_timer_.start(1000 / fps_, this); - if (engine_) - engine_->AddBufferConsumer(vis_); + if (engine_) engine_->AddBufferConsumer(vis_); } void VisualisationContainer::hideEvent(QHideEvent* e) { QGraphicsView::hideEvent(e); update_timer_.stop(); - if (engine_) - engine_->RemoveBufferConsumer(vis_); + if (engine_) engine_->RemoveBufferConsumer(vis_); } void VisualisationContainer::resizeEvent(QResizeEvent* e) { @@ -184,27 +190,25 @@ void VisualisationContainer::SizeChanged() { s.setValue("geometry", saveGeometry()); // Resize the scene - if (scene()) - scene()->setSceneRect(QRect(QPoint(0, 0), size())); + if (scene()) scene()->setSceneRect(QRect(QPoint(0, 0), size())); // Resize the overlay - if (overlay_) - overlay_->resize(size()); + if (overlay_) overlay_->resize(size()); } void VisualisationContainer::timerEvent(QTimerEvent* e) { QGraphicsView::timerEvent(e); - if (e->timerId() == update_timer_.timerId()) - scene()->update(); + if (e->timerId() == update_timer_.timerId()) scene()->update(); } -void VisualisationContainer::SetActions(QAction *previous, QAction *play_pause, - QAction *stop, QAction *next) { +void VisualisationContainer::SetActions(QAction* previous, QAction* play_pause, + QAction* stop, QAction* next) { overlay_->SetActions(previous, play_pause, stop, next); } -void VisualisationContainer::SongMetadataChanged(const Song &metadata) { - overlay_->SetSongTitle(QString("%1 - %2").arg(metadata.artist(), metadata.title())); +void VisualisationContainer::SongMetadataChanged(const Song& metadata) { + overlay_->SetSongTitle( + QString("%1 - %2").arg(metadata.artist(), metadata.title())); } void VisualisationContainer::Stopped() { @@ -241,14 +245,13 @@ void VisualisationContainer::mouseDoubleClickEvent(QMouseEvent* e) { ToggleFullscreen(); } -void VisualisationContainer::contextMenuEvent(QContextMenuEvent *event) { +void VisualisationContainer::contextMenuEvent(QContextMenuEvent* event) { QGraphicsView::contextMenuEvent(event); ShowPopupMenu(event->pos()); } -void VisualisationContainer::keyReleaseEvent(QKeyEvent *event) { - if (event->matches(QKeySequence::Close) || - event->key() == Qt::Key_Escape) { +void VisualisationContainer::keyReleaseEvent(QKeyEvent* event) { + if (event->matches(QKeySequence::Close) || event->key() == Qt::Key_Escape) { if (isFullScreen()) ToggleFullscreen(); else @@ -279,7 +282,7 @@ void VisualisationContainer::SetFps(int fps) { update_timer_.start(1000 / fps_, this); } -void VisualisationContainer::ShowPopupMenu(const QPoint &pos) { +void VisualisationContainer::ShowPopupMenu(const QPoint& pos) { menu_->popup(mapToGlobal(pos)); } diff --git a/src/visualisations/visualisationcontainer.h b/src/visualisations/visualisationcontainer.h index 345e23c55..926b3913e 100644 --- a/src/visualisations/visualisationcontainer.h +++ b/src/visualisations/visualisationcontainer.h @@ -35,8 +35,8 @@ class QActionGroup; class VisualisationContainer : public QGraphicsView { Q_OBJECT -public: - VisualisationContainer(QWidget* parent = 0); + public: + VisualisationContainer(QWidget* parent = nullptr); static const int kLowFramerate; static const int kMediumFramerate; @@ -50,14 +50,14 @@ public: static const int kDefaultTextureSize; void SetEngine(GstEngine* engine); - void SetActions(QAction* previous, QAction* play_pause, - QAction* stop, QAction* next); + void SetActions(QAction* previous, QAction* play_pause, QAction* stop, + QAction* next); -public slots: + public slots: void SongMetadataChanged(const Song& metadata); void Stopped(); -protected: + protected: // QWidget void showEvent(QShowEvent* e); void hideEvent(QHideEvent* e); @@ -67,24 +67,24 @@ protected: void enterEvent(QEvent* e); void leaveEvent(QEvent* e); void mouseDoubleClickEvent(QMouseEvent* e); - void contextMenuEvent(QContextMenuEvent *event); - void keyReleaseEvent(QKeyEvent *event); + void contextMenuEvent(QContextMenuEvent* event); + void keyReleaseEvent(QKeyEvent* event); -private: + private: void Init(); void SizeChanged(); - void AddMenuItem(const QString& name, int value, int def, - QActionGroup* group, QSignalMapper* mapper); + void AddMenuItem(const QString& name, int value, int def, QActionGroup* group, + QSignalMapper* mapper); -private slots: + private slots: void ChangeOverlayOpacity(qreal value); void ShowPopupMenu(const QPoint& pos); void ToggleFullscreen(); void SetFps(int fps); void SetQuality(int size); -private: + private: bool initialised_; GstEngine* engine_; @@ -102,4 +102,4 @@ private: int size_; }; -#endif // VISUALISATIONCONTAINER_H +#endif // VISUALISATIONCONTAINER_H diff --git a/src/visualisations/visualisationoverlay.cpp b/src/visualisations/visualisationoverlay.cpp index 89c9bda32..6df8d31c8 100644 --- a/src/visualisations/visualisationoverlay.cpp +++ b/src/visualisations/visualisationoverlay.cpp @@ -28,12 +28,11 @@ const int VisualisationOverlay::kFadeDuration = 500; const int VisualisationOverlay::kFadeTimeout = 5000; -VisualisationOverlay::VisualisationOverlay(QWidget *parent) - : QWidget(parent), - ui_(new Ui_VisualisationOverlay), - fade_timeline_(new QTimeLine(kFadeDuration, this)), - visible_(false) -{ +VisualisationOverlay::VisualisationOverlay(QWidget* parent) + : QWidget(parent), + ui_(new Ui_VisualisationOverlay), + fade_timeline_(new QTimeLine(kFadeDuration, this)), + visible_(false) { ui_->setupUi(this); setAttribute(Qt::WA_TranslucentBackground); @@ -42,14 +41,14 @@ VisualisationOverlay::VisualisationOverlay(QWidget *parent) ui_->settings->setIcon(IconLoader::Load("configure")); connect(ui_->settings, SIGNAL(clicked()), SLOT(ShowSettingsMenu())); - connect(fade_timeline_, SIGNAL(valueChanged(qreal)), SIGNAL(OpacityChanged(qreal))); + connect(fade_timeline_, SIGNAL(valueChanged(qreal)), + SIGNAL(OpacityChanged(qreal))); } -VisualisationOverlay::~VisualisationOverlay() { - delete ui_; -} +VisualisationOverlay::~VisualisationOverlay() { delete ui_; } -QGraphicsProxyWidget* VisualisationOverlay::title(QGraphicsProxyWidget* proxy) const { +QGraphicsProxyWidget* VisualisationOverlay::title(QGraphicsProxyWidget* proxy) + const { return proxy->createProxyForChildWidget(ui_->song_title); } @@ -62,7 +61,8 @@ void VisualisationOverlay::SetActions(QAction* previous, QAction* play_pause, } void VisualisationOverlay::ShowSettingsMenu() { - emit ShowPopupMenu(ui_->settings->mapToGlobal(ui_->settings->rect().bottomLeft())); + emit ShowPopupMenu( + ui_->settings->mapToGlobal(ui_->settings->rect().bottomLeft())); } void VisualisationOverlay::timerEvent(QTimerEvent* e) { @@ -76,12 +76,10 @@ void VisualisationOverlay::timerEvent(QTimerEvent* e) { void VisualisationOverlay::SetVisible(bool visible) { // If we're showing the overlay, then fade out again in a little while fade_out_timeout_.stop(); - if (visible) - fade_out_timeout_.start(kFadeTimeout, this); + if (visible) fade_out_timeout_.start(kFadeTimeout, this); // Don't change to the state we're in already - if (visible == visible_) - return; + if (visible == visible_) return; visible_ = visible; // If there's already another fader running then start from the same time @@ -91,12 +89,13 @@ void VisualisationOverlay::SetVisible(bool visible) { start_time = fade_timeline_->currentTime(); fade_timeline_->stop(); - fade_timeline_->setDirection(visible ? QTimeLine::Forward : QTimeLine::Backward); + fade_timeline_->setDirection(visible ? QTimeLine::Forward + : QTimeLine::Backward); fade_timeline_->setCurrentTime(start_time); fade_timeline_->resume(); } -void VisualisationOverlay::SetSongTitle(const QString &title) { +void VisualisationOverlay::SetSongTitle(const QString& title) { ui_->song_title->setText(title); SetVisible(true); } diff --git a/src/visualisations/visualisationoverlay.h b/src/visualisations/visualisationoverlay.h index cc60d8d67..c6d05af9d 100644 --- a/src/visualisations/visualisationoverlay.h +++ b/src/visualisations/visualisationoverlay.h @@ -28,8 +28,8 @@ class QTimeLine; class VisualisationOverlay : public QWidget { Q_OBJECT -public: - VisualisationOverlay(QWidget* parent = 0); + public: + VisualisationOverlay(QWidget* parent = nullptr); ~VisualisationOverlay(); static const int kFadeDuration; @@ -37,25 +37,25 @@ public: QGraphicsProxyWidget* title(QGraphicsProxyWidget* proxy) const; - void SetActions(QAction* previous, QAction* play_pause, - QAction* stop, QAction* next); + void SetActions(QAction* previous, QAction* play_pause, QAction* stop, + QAction* next); void SetSongTitle(const QString& title); -public slots: + public slots: void SetVisible(bool visible); signals: void OpacityChanged(qreal value); void ShowPopupMenu(const QPoint& pos); -protected: + protected: // QWidget - void timerEvent(QTimerEvent *); + void timerEvent(QTimerEvent*); -private slots: + private slots: void ShowSettingsMenu(); -private: + private: Ui_VisualisationOverlay* ui_; QTimeLine* fade_timeline_; @@ -63,4 +63,4 @@ private: bool visible_; }; -#endif // VISUALISATIONOVERLAY_H +#endif // VISUALISATIONOVERLAY_H diff --git a/src/visualisations/visualisationselector.cpp b/src/visualisations/visualisationselector.cpp index c8ddc87d8..beaeb9323 100644 --- a/src/visualisations/visualisationselector.cpp +++ b/src/visualisations/visualisationselector.cpp @@ -24,22 +24,19 @@ #include #ifdef USE_SYSTEM_PROJECTM -# include +#include #else -# include "projectM.hpp" +#include "projectM.hpp" #endif -VisualisationSelector::VisualisationSelector(QWidget *parent) - : QDialog(parent), - ui_(new Ui_VisualisationSelector), - vis_(NULL) -{ +VisualisationSelector::VisualisationSelector(QWidget* parent) + : QDialog(parent), ui_(new Ui_VisualisationSelector), vis_(nullptr) { ui_->setupUi(this); select_all_ = ui_->buttonBox->addButton(tr("Select All"), QDialogButtonBox::ActionRole); - select_none_ = - ui_->buttonBox->addButton(tr("Select None"), QDialogButtonBox::ActionRole); + select_none_ = ui_->buttonBox->addButton(tr("Select None"), + QDialogButtonBox::ActionRole); connect(select_all_, SIGNAL(clicked()), SLOT(SelectAll())); connect(select_none_, SIGNAL(clicked()), SLOT(SelectNone())); select_all_->setEnabled(false); @@ -48,17 +45,17 @@ VisualisationSelector::VisualisationSelector(QWidget *parent) connect(ui_->mode, SIGNAL(currentIndexChanged(int)), SLOT(ModeChanged(int))); } -VisualisationSelector::~VisualisationSelector() { - delete ui_; -} +VisualisationSelector::~VisualisationSelector() { delete ui_; } -void VisualisationSelector::showEvent(QShowEvent *) { +void VisualisationSelector::showEvent(QShowEvent*) { if (!ui_->list->model()) { ui_->delay->setValue(vis_->duration()); ui_->list->setModel(vis_->preset_model()); - connect(ui_->list->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), + connect(ui_->list->selectionModel(), + SIGNAL(currentChanged(QModelIndex, QModelIndex)), vis_->preset_model(), SLOT(SetImmediatePreset(QModelIndex))); - connect(ui_->delay, SIGNAL(valueChanged(int)), vis_, SLOT(SetDuration(int))); + connect(ui_->delay, SIGNAL(valueChanged(int)), vis_, + SLOT(SetDuration(int))); ui_->mode->setCurrentIndex(vis_->mode()); } @@ -66,9 +63,7 @@ void VisualisationSelector::showEvent(QShowEvent *) { vis_->Lock(true); } -void VisualisationSelector::hideEvent(QHideEvent *) { - vis_->Lock(false); -} +void VisualisationSelector::hideEvent(QHideEvent*) { vis_->Lock(false); } void VisualisationSelector::ModeChanged(int mode) { bool enabled = mode == 1; @@ -79,10 +74,6 @@ void VisualisationSelector::ModeChanged(int mode) { vis_->SetMode(ProjectMVisualisation::Mode(mode)); } -void VisualisationSelector::SelectAll() { - vis_->preset_model()->SelectAll(); -} +void VisualisationSelector::SelectAll() { vis_->preset_model()->SelectAll(); } -void VisualisationSelector::SelectNone() { - vis_->preset_model()->SelectNone(); -} +void VisualisationSelector::SelectNone() { vis_->preset_model()->SelectNone(); } diff --git a/src/visualisations/visualisationselector.h b/src/visualisations/visualisationselector.h index c7262f737..9a93afa63 100644 --- a/src/visualisations/visualisationselector.h +++ b/src/visualisations/visualisationselector.h @@ -25,22 +25,22 @@ class Ui_VisualisationSelector; class VisualisationSelector : public QDialog { Q_OBJECT -public: - VisualisationSelector(QWidget* parent = 0); + public: + VisualisationSelector(QWidget* parent = nullptr); ~VisualisationSelector(); void SetVisualisation(ProjectMVisualisation* vis) { vis_ = vis; } -protected: - void showEvent(QShowEvent *); - void hideEvent(QHideEvent *); + protected: + void showEvent(QShowEvent*); + void hideEvent(QHideEvent*); -private slots: + private slots: void ModeChanged(int mode); void SelectAll(); void SelectNone(); -private: + private: Ui_VisualisationSelector* ui_; QPushButton* select_all_; QPushButton* select_none_; @@ -48,4 +48,4 @@ private: ProjectMVisualisation* vis_; }; -#endif // VISUALISATIONSELECTOR_H +#endif // VISUALISATIONSELECTOR_H diff --git a/src/widgets/autoexpandingtreeview.cpp b/src/widgets/autoexpandingtreeview.cpp index 7b2359248..d5cf2152e 100644 --- a/src/widgets/autoexpandingtreeview.cpp +++ b/src/widgets/autoexpandingtreeview.cpp @@ -23,18 +23,18 @@ const int AutoExpandingTreeView::kRowsToShow = 50; -AutoExpandingTreeView::AutoExpandingTreeView(QWidget *parent) - : QTreeView(parent), - auto_open_(true), - expand_on_reset_(true), - add_on_double_click_(true), - ignore_next_click_(false) -{ +AutoExpandingTreeView::AutoExpandingTreeView(QWidget* parent) + : QTreeView(parent), + auto_open_(true), + expand_on_reset_(true), + add_on_double_click_(true), + ignore_next_click_(false) { setExpandsOnDoubleClick(false); connect(this, SIGNAL(expanded(QModelIndex)), SLOT(ItemExpanded(QModelIndex))); connect(this, SIGNAL(clicked(QModelIndex)), SLOT(ItemClicked(QModelIndex))); - connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(ItemDoubleClicked(QModelIndex))); + connect(this, SIGNAL(doubleClicked(QModelIndex)), + SLOT(ItemDoubleClicked(QModelIndex))); } void AutoExpandingTreeView::reset() { @@ -46,28 +46,25 @@ void AutoExpandingTreeView::reset() { } } -void AutoExpandingTreeView::RecursivelyExpand(const QModelIndex &index) { +void AutoExpandingTreeView::RecursivelyExpand(const QModelIndex& index) { int rows = model()->rowCount(index); RecursivelyExpand(index, &rows); } -bool AutoExpandingTreeView::RecursivelyExpand(const QModelIndex& index, int* count) { - if (!CanRecursivelyExpand(index)) - return true; +bool AutoExpandingTreeView::RecursivelyExpand(const QModelIndex& index, + int* count) { + if (!CanRecursivelyExpand(index)) return true; - if (model()->canFetchMore(index)) - model()->fetchMore(index); + if (model()->canFetchMore(index)) model()->fetchMore(index); int children = model()->rowCount(index); - if (*count + children > kRowsToShow) - return false; + if (*count + children > kRowsToShow) return false; expand(index); *count += children; - for (int i=0 ; iindex(i, 0, index), count)) - return false; + for (int i = 0; i < children; ++i) { + if (!RecursivelyExpand(model()->index(i, 0, index), count)) return false; } return true; @@ -106,7 +103,7 @@ void AutoExpandingTreeView::mousePressEvent(QMouseEvent* event) { QTreeView::mousePressEvent(event); - //enqueue to playlist with middleClick + // enqueue to playlist with middleClick if (event->button() == Qt::MidButton) { QMimeData* data = model()->mimeData(selectedIndexes()); if (MimeData* mime_data = qobject_cast(data)) { @@ -120,8 +117,7 @@ void AutoExpandingTreeView::keyPressEvent(QKeyEvent* e) { switch (e->key()) { case Qt::Key_Enter: case Qt::Key_Return: - if (currentIndex().isValid()) - emit doubleClicked(currentIndex()); + if (currentIndex().isValid()) emit doubleClicked(currentIndex()); e->accept(); break; diff --git a/src/widgets/autoexpandingtreeview.h b/src/widgets/autoexpandingtreeview.h index 1007dd439..3c5de36d2 100644 --- a/src/widgets/autoexpandingtreeview.h +++ b/src/widgets/autoexpandingtreeview.h @@ -23,8 +23,8 @@ class AutoExpandingTreeView : public QTreeView { Q_OBJECT -public: - AutoExpandingTreeView(QWidget* parent = 0); + public: + AutoExpandingTreeView(QWidget* parent = nullptr); static const int kRowsToShow; @@ -32,8 +32,8 @@ public: void SetExpandOnReset(bool v) { expand_on_reset_ = v; } void SetAddOnDoubleClick(bool v) { add_on_double_click_ = v; } -public slots: - void RecursivelyExpand(const QModelIndex &index); + public slots: + void RecursivelyExpand(const QModelIndex& index); void UpAndFocus(); void DownAndFocus(); @@ -41,7 +41,7 @@ signals: void AddToPlaylistSignal(QMimeData* data); void FocusOnFilterSignal(QKeyEvent* event); -protected: + protected: // QAbstractItemView void reset(); @@ -49,17 +49,19 @@ protected: void mousePressEvent(QMouseEvent* event); void keyPressEvent(QKeyEvent* event); - virtual bool CanRecursivelyExpand(const QModelIndex& index) const { return true; } + virtual bool CanRecursivelyExpand(const QModelIndex& index) const { + return true; + } -private slots: + private slots: void ItemExpanded(const QModelIndex& index); void ItemClicked(const QModelIndex& index); void ItemDoubleClicked(const QModelIndex& index); -private: + private: bool RecursivelyExpand(const QModelIndex& index, int* count); -private: + private: bool auto_open_; bool expand_on_reset_; bool add_on_double_click_; @@ -67,4 +69,4 @@ private: bool ignore_next_click_; }; -#endif // AUTOEXPANDINGTREEVIEW_H +#endif // AUTOEXPANDINGTREEVIEW_H diff --git a/src/widgets/busyindicator.cpp b/src/widgets/busyindicator.cpp index 8b4c35c01..cc627a130 100644 --- a/src/widgets/busyindicator.cpp +++ b/src/widgets/busyindicator.cpp @@ -21,18 +21,16 @@ #include BusyIndicator::BusyIndicator(const QString& text, QWidget* parent) - : QWidget(parent) { + : QWidget(parent) { Init(text); } -BusyIndicator::BusyIndicator(QWidget* parent) - : QWidget(parent) { +BusyIndicator::BusyIndicator(QWidget* parent) : QWidget(parent) { Init(QString::null); } void BusyIndicator::Init(const QString& text) { - movie_ = new QMovie(":spinner.gif"), - label_ = new QLabel; + movie_ = new QMovie(":spinner.gif"), label_ = new QLabel; QLabel* icon = new QLabel; icon->setMovie(movie_); @@ -50,24 +48,15 @@ void BusyIndicator::Init(const QString& text) { set_text(text); } -BusyIndicator::~BusyIndicator() { - delete movie_; -} +BusyIndicator::~BusyIndicator() { delete movie_; } -void BusyIndicator::showEvent(QShowEvent*) { - movie_->start(); -} +void BusyIndicator::showEvent(QShowEvent*) { movie_->start(); } -void BusyIndicator::hideEvent(QHideEvent*) { - movie_->stop(); -} +void BusyIndicator::hideEvent(QHideEvent*) { movie_->stop(); } void BusyIndicator::set_text(const QString& text) { label_->setText(text); label_->setVisible(!text.isEmpty()); } -QString BusyIndicator::text() const { - return label_->text(); -} - +QString BusyIndicator::text() const { return label_->text(); } diff --git a/src/widgets/busyindicator.h b/src/widgets/busyindicator.h index 783a2a187..f9a8c7a0e 100644 --- a/src/widgets/busyindicator.h +++ b/src/widgets/busyindicator.h @@ -27,8 +27,8 @@ class BusyIndicator : public QWidget { Q_PROPERTY(QString text READ text WRITE set_text) public: - explicit BusyIndicator(const QString& text, QWidget* parent = 0); - explicit BusyIndicator(QWidget* parent = 0); + explicit BusyIndicator(const QString& text, QWidget* parent = nullptr); + explicit BusyIndicator(QWidget* parent = nullptr); ~BusyIndicator(); QString text() const; @@ -46,4 +46,4 @@ class BusyIndicator : public QWidget { QLabel* label_; }; -#endif // BUSYINDICATOR_H +#endif // BUSYINDICATOR_H diff --git a/src/widgets/clickablelabel.cpp b/src/widgets/clickablelabel.cpp index be9517733..e8d65753c 100644 --- a/src/widgets/clickablelabel.cpp +++ b/src/widgets/clickablelabel.cpp @@ -17,10 +17,7 @@ #include "clickablelabel.h" -ClickableLabel::ClickableLabel(QWidget* parent) - : QLabel(parent) -{ -} +ClickableLabel::ClickableLabel(QWidget* parent) : QLabel(parent) {} void ClickableLabel::mousePressEvent(QMouseEvent* event) { emit Clicked(); diff --git a/src/widgets/clickablelabel.h b/src/widgets/clickablelabel.h index 6de1d62cb..230225d61 100644 --- a/src/widgets/clickablelabel.h +++ b/src/widgets/clickablelabel.h @@ -23,14 +23,14 @@ class ClickableLabel : public QLabel { Q_OBJECT -public: - ClickableLabel(QWidget* parent = 0); + public: + ClickableLabel(QWidget* parent = nullptr); signals: void Clicked(); -protected: + protected: void mousePressEvent(QMouseEvent* event); }; -#endif // CLICKABLELABEL_H +#endif // CLICKABLELABEL_H diff --git a/src/widgets/didyoumean.cpp b/src/widgets/didyoumean.cpp index d3f0f2b5a..f54738db9 100644 --- a/src/widgets/didyoumean.cpp +++ b/src/widgets/didyoumean.cpp @@ -27,12 +27,12 @@ const int DidYouMean::kPadding = 3; DidYouMean::DidYouMean(QWidget* buddy, QWidget* parent) - : QWidget(parent, Qt::ToolTip), - buddy_(buddy), - close_(new QToolButton(this)), - normal_font_(font()), - correction_font_(font()), - press_enter_font_(font()) { + : QWidget(parent, Qt::ToolTip), + buddy_(buddy), + close_(new QToolButton(this)), + normal_font_(font()), + correction_font_(font()), + press_enter_font_(font()) { // Close icon close_->setToolTip(tr("Close")); close_->setIcon(QIcon(":/trolltech/styles/macstyle/images/closedock-16.png")); @@ -82,7 +82,7 @@ bool DidYouMean::eventFilter(QObject* object, QEvent* event) { case Qt::Key_Return: case Qt::Key_Enter: emit Accepted(correction_); - // fallthrough + // fallthrough case Qt::Key_Escape: hide(); return true; @@ -105,9 +105,7 @@ bool DidYouMean::eventFilter(QObject* object, QEvent* event) { return QObject::eventFilter(object, event); } -void DidYouMean::showEvent(QShowEvent*) { - UpdateGeometry(); -} +void DidYouMean::showEvent(QShowEvent*) { UpdateGeometry(); } void DidYouMean::UpdateGeometry() { const int text_height = fontMetrics().height(); @@ -118,10 +116,8 @@ void DidYouMean::UpdateGeometry() { // size(close button), so the "Did you mean" widget is always fully displayed resize(QSize(did_you_mean_size_ + - QFontMetrics(correction_font_).width(correction_ + " ") + - press_enter_size_ + - kPadding * 6 + - close_->width(), + QFontMetrics(correction_font_).width(correction_ + " ") + + press_enter_size_ + kPadding * 6 + close_->width(), height)); close_->move(kPadding, kPadding); @@ -133,17 +129,15 @@ void DidYouMean::paintEvent(QPaintEvent*) { // Draw the background QColor bg(palette().color(QPalette::Inactive, QPalette::ToolTipBase)); - p.fillRect(0, 0, width()-1, height()-1, bg); + p.fillRect(0, 0, width() - 1, height() - 1, bg); // Border p.setPen(Qt::black); - p.drawRect(0, 0, width()-1, height()-1); + p.drawRect(0, 0, width() - 1, height() - 1); // Text rectangle - QRect text_rect(kPadding + close_->width() + kPadding, - kPadding, - rect().width() - kPadding, - rect().height() - kPadding); + QRect text_rect(kPadding + close_->width() + kPadding, kPadding, + rect().width() - kPadding, rect().height() - kPadding); // Text p.setFont(normal_font_); @@ -152,7 +146,8 @@ void DidYouMean::paintEvent(QPaintEvent*) { p.setFont(correction_font_); p.drawText(text_rect, Qt::AlignLeft | Qt::AlignVCenter, correction_); - text_rect.setLeft(text_rect.left() + p.fontMetrics().width(correction_ + " ")); + text_rect.setLeft(text_rect.left() + + p.fontMetrics().width(correction_ + " ")); p.setPen(palette().color(QPalette::Disabled, QPalette::Text)); p.setFont(press_enter_font_); diff --git a/src/widgets/didyoumean.h b/src/widgets/didyoumean.h index 30fd98cae..b73ec420c 100644 --- a/src/widgets/didyoumean.h +++ b/src/widgets/didyoumean.h @@ -25,28 +25,28 @@ class QToolButton; class DidYouMean : public QWidget { Q_OBJECT -public: + public: DidYouMean(QWidget* buddy, QWidget* parent); static const int kPadding; -public slots: + public slots: void SetCorrection(const QString& correction); void Show(const QString& correction); signals: void Accepted(const QString& correction); -protected: + protected: void paintEvent(QPaintEvent*); void showEvent(QShowEvent*); void mouseReleaseEvent(QMouseEvent* e); bool eventFilter(QObject* object, QEvent* event); -private: + private: void UpdateGeometry(); -private: + private: QWidget* buddy_; QString correction_; @@ -65,4 +65,4 @@ private: int press_enter_size_; }; -#endif // DIDYOUMEAN_H +#endif // DIDYOUMEAN_H diff --git a/src/widgets/elidedlabel.cpp b/src/widgets/elidedlabel.cpp index c2b9f6f04..6f4d071df 100644 --- a/src/widgets/elidedlabel.cpp +++ b/src/widgets/elidedlabel.cpp @@ -17,19 +17,14 @@ #include "elidedlabel.h" -ElidedLabel::ElidedLabel(QWidget* parent) - : QLabel(parent) -{ -} +ElidedLabel::ElidedLabel(QWidget* parent) : QLabel(parent) {} void ElidedLabel::SetText(const QString& text) { text_ = text; UpdateText(); } -void ElidedLabel::resizeEvent(QResizeEvent*) { - UpdateText(); -} +void ElidedLabel::resizeEvent(QResizeEvent*) { UpdateText(); } void ElidedLabel::UpdateText() { setText(fontMetrics().elidedText(text_, Qt::ElideRight, width() - 5)); diff --git a/src/widgets/elidedlabel.h b/src/widgets/elidedlabel.h index d0e99939c..54927f657 100644 --- a/src/widgets/elidedlabel.h +++ b/src/widgets/elidedlabel.h @@ -23,20 +23,20 @@ class ElidedLabel : public QLabel { Q_OBJECT -public: - ElidedLabel(QWidget* parent = 0); + public: + ElidedLabel(QWidget* parent = nullptr); -public slots: + public slots: void SetText(const QString& text); -protected: + protected: void resizeEvent(QResizeEvent* e); -private: + private: void UpdateText(); -private: + private: QString text_; }; -#endif // ELIDEDLABEL_H +#endif // ELIDEDLABEL_H diff --git a/src/widgets/equalizerslider.cpp b/src/widgets/equalizerslider.cpp index da6046e40..8a7bcc817 100644 --- a/src/widgets/equalizerslider.cpp +++ b/src/widgets/equalizerslider.cpp @@ -18,24 +18,16 @@ #include "equalizerslider.h" #include "ui_equalizerslider.h" -EqualizerSlider::EqualizerSlider(const QString& label, QWidget *parent) - : QWidget(parent), - ui_(new Ui_EqualizerSlider) -{ +EqualizerSlider::EqualizerSlider(const QString& label, QWidget* parent) + : QWidget(parent), ui_(new Ui_EqualizerSlider) { ui_->setupUi(this); ui_->label->setText(label); connect(ui_->slider, SIGNAL(valueChanged(int)), SIGNAL(ValueChanged(int))); } -EqualizerSlider::~EqualizerSlider() { - delete ui_; -} +EqualizerSlider::~EqualizerSlider() { delete ui_; } -int EqualizerSlider::value() const { - return ui_->slider->value(); -} +int EqualizerSlider::value() const { return ui_->slider->value(); } -void EqualizerSlider::set_value(int value) { - ui_->slider->setValue(value); -} +void EqualizerSlider::set_value(int value) { ui_->slider->setValue(value); } diff --git a/src/widgets/equalizerslider.h b/src/widgets/equalizerslider.h index b4d4b12fb..0c81236c6 100644 --- a/src/widgets/equalizerslider.h +++ b/src/widgets/equalizerslider.h @@ -27,17 +27,17 @@ class EqualizerSlider : public QWidget { Q_OBJECT public: - EqualizerSlider(const QString& label, QWidget *parent = 0); + EqualizerSlider(const QString& label, QWidget* parent = nullptr); ~EqualizerSlider(); int value() const; void set_value(int value); - signals: +signals: void ValueChanged(int value); private: Ui_EqualizerSlider* ui_; }; -#endif // EQUALISERSLIDER_H +#endif // EQUALISERSLIDER_H diff --git a/src/widgets/errordialog.cpp b/src/widgets/errordialog.cpp index 60a863718..eb6e0bef8 100644 --- a/src/widgets/errordialog.cpp +++ b/src/widgets/errordialog.cpp @@ -18,27 +18,24 @@ #include "errordialog.h" #include "ui_errordialog.h" -ErrorDialog::ErrorDialog(QWidget *parent) - : QDialog(parent), - ui_(new Ui_ErrorDialog) -{ +ErrorDialog::ErrorDialog(QWidget* parent) + : QDialog(parent), ui_(new Ui_ErrorDialog) { ui_->setupUi(this); QIcon warning_icon(style()->standardIcon(QStyle::SP_MessageBoxWarning)); QPixmap warning_pixmap(warning_icon.pixmap(48)); QPalette messages_palette(ui_->messages->palette()); - messages_palette.setColor(QPalette::Base, messages_palette.color(QPalette::Background)); + messages_palette.setColor(QPalette::Base, + messages_palette.color(QPalette::Background)); ui_->messages->setPalette(messages_palette); ui_->icon->setPixmap(warning_pixmap); } -ErrorDialog::~ErrorDialog() { - delete ui_; -} +ErrorDialog::~ErrorDialog() { delete ui_; } -void ErrorDialog::ShowMessage(const QString &message) { +void ErrorDialog::ShowMessage(const QString& message) { current_messages_ << message; UpdateContent(); @@ -47,16 +44,15 @@ void ErrorDialog::ShowMessage(const QString &message) { activateWindow(); } -void ErrorDialog::hideEvent(QHideEvent *) { +void ErrorDialog::hideEvent(QHideEvent*) { current_messages_.clear(); UpdateContent(); } void ErrorDialog::UpdateContent() { QString html; - foreach (const QString& message, current_messages_) { - if (!html.isEmpty()) - html += "
    "; + for (const QString& message : current_messages_) { + if (!html.isEmpty()) html += "
    "; html += Qt::escape(message); } ui_->messages->setHtml(html); diff --git a/src/widgets/errordialog.h b/src/widgets/errordialog.h index 4ea5bbf65..e8b7b5e70 100644 --- a/src/widgets/errordialog.h +++ b/src/widgets/errordialog.h @@ -25,17 +25,17 @@ class Ui_ErrorDialog; class ErrorDialog : public QDialog { Q_OBJECT -public: - ErrorDialog(QWidget* parent = 0); + public: + ErrorDialog(QWidget* parent = nullptr); ~ErrorDialog(); -public slots: + public slots: void ShowMessage(const QString& message); -protected: - void hideEvent(QHideEvent *); + protected: + void hideEvent(QHideEvent*); -private: + private: void UpdateContent(); Ui_ErrorDialog* ui_; @@ -43,4 +43,4 @@ private: QStringList current_messages_; }; -#endif // ERRORDIALOG_H +#endif // ERRORDIALOG_H diff --git a/src/widgets/fancytabwidget.cpp b/src/widgets/fancytabwidget.cpp index 56038e9be..c61d3fe83 100644 --- a/src/widgets/fancytabwidget.cpp +++ b/src/widgets/fancytabwidget.cpp @@ -55,11 +55,12 @@ using namespace Internal; const int FancyTabBar::m_rounding = 22; const int FancyTabBar::m_textPadding = 4; -void FancyTabProxyStyle::drawControl( - ControlElement element, const QStyleOption* option, - QPainter* p, const QWidget* widget) const { +void FancyTabProxyStyle::drawControl(ControlElement element, + const QStyleOption* option, QPainter* p, + const QWidget* widget) const { - const QStyleOptionTabV3* v_opt = qstyleoption_cast(option); + const QStyleOptionTabV3* v_opt = + qstyleoption_cast(option); if (element != CE_TabBarTab || !v_opt) { QProxyStyle::drawControl(element, option, p, widget); @@ -72,7 +73,7 @@ void FancyTabProxyStyle::drawControl( const QString text = v_opt->text; if (selected) { - //background + // background p->save(); QLinearGradient grad(rect.topLeft(), rect.topRight()); grad.setColorAt(0, QColor(255, 255, 255, 140)); @@ -80,21 +81,24 @@ void FancyTabProxyStyle::drawControl( p->fillRect(rect.adjusted(0, 0, 0, -1), grad); p->restore(); - //shadows + // shadows p->setPen(QColor(0, 0, 0, 110)); - p->drawLine(rect.topLeft() + QPoint(1,-1), rect.topRight() - QPoint(0,1)); + p->drawLine(rect.topLeft() + QPoint(1, -1), rect.topRight() - QPoint(0, 1)); p->drawLine(rect.bottomLeft(), rect.bottomRight()); p->setPen(QColor(0, 0, 0, 40)); p->drawLine(rect.topLeft(), rect.bottomLeft()); - //highlights + // highlights p->setPen(QColor(255, 255, 255, 50)); - p->drawLine(rect.topLeft() + QPoint(0, -2), rect.topRight() - QPoint(0,2)); - p->drawLine(rect.bottomLeft() + QPoint(0, 1), rect.bottomRight() + QPoint(0,1)); + p->drawLine(rect.topLeft() + QPoint(0, -2), rect.topRight() - QPoint(0, 2)); + p->drawLine(rect.bottomLeft() + QPoint(0, 1), + rect.bottomRight() + QPoint(0, 1)); p->setPen(QColor(255, 255, 255, 40)); p->drawLine(rect.topLeft() + QPoint(0, 0), rect.topRight()); - p->drawLine(rect.topRight() + QPoint(0, 1), rect.bottomRight() - QPoint(0, 1)); - p->drawLine(rect.bottomLeft() + QPoint(0,-1), rect.bottomRight()-QPoint(0,1)); + p->drawLine(rect.topRight() + QPoint(0, 1), + rect.bottomRight() - QPoint(0, 1)); + p->drawLine(rect.bottomLeft() + QPoint(0, -1), + rect.bottomRight() - QPoint(0, 1)); } QTransform m; @@ -122,7 +126,8 @@ void FancyTabProxyStyle::drawControl( p->setPen(selected ? QColor(255, 255, 255, 160) : QColor(0, 0, 0, 110)); int textFlags = Qt::AlignHCenter | Qt::AlignVCenter; p->drawText(text_rect, textFlags, text); - p->setPen(selected ? QColor(60, 60, 60) : Utils::StyleHelper::panelTextColor()); + p->setPen(selected ? QColor(60, 60, 60) + : Utils::StyleHelper::panelTextColor()); #ifndef Q_WS_MAC if (widget) { const QString fader_key = "tab_" + text + "_fader"; @@ -130,15 +135,20 @@ void FancyTabProxyStyle::drawControl( const QString tab_hover = widget->property("tab_hover").toString(); int fader = widget->property(fader_key.toUtf8().constData()).toInt(); - QPropertyAnimation* animation = widget->property(animation_key.toUtf8().constData()).value(); + QPropertyAnimation* animation = + widget->property(animation_key.toUtf8().constData()) + .value(); if (!animation) { QWidget* mut_widget = const_cast(widget); fader = 0; mut_widget->setProperty(fader_key.toUtf8().constData(), fader); - animation = new QPropertyAnimation(mut_widget, fader_key.toUtf8(), mut_widget); - connect(animation, SIGNAL(valueChanged(QVariant)), mut_widget, SLOT(update())); - mut_widget->setProperty(animation_key.toUtf8().constData(), QVariant::fromValue(animation)); + animation = + new QPropertyAnimation(mut_widget, fader_key.toUtf8(), mut_widget); + connect(animation, SIGNAL(valueChanged(QVariant)), mut_widget, + SLOT(update())); + mut_widget->setProperty(animation_key.toUtf8().constData(), + QVariant::fromValue(animation)); } if (text == tab_hover) { @@ -159,20 +169,26 @@ void FancyTabProxyStyle::drawControl( if (!selected) { p->save(); - QLinearGradient grad(draw_rect.topLeft(), vertical_tabs ? draw_rect.bottomLeft() : draw_rect.topRight()); + QLinearGradient grad(draw_rect.topLeft(), vertical_tabs + ? draw_rect.bottomLeft() + : draw_rect.topRight()); grad.setColorAt(0, Qt::transparent); grad.setColorAt(0.5, QColor(255, 255, 255, fader)); grad.setColorAt(1, Qt::transparent); p->fillRect(draw_rect, grad); p->setPen(QPen(grad, 1.0)); - p->drawLine(draw_rect.topLeft(), vertical_tabs ? draw_rect.bottomLeft() : draw_rect.topRight()); - p->drawLine(draw_rect.bottomRight(), vertical_tabs ? draw_rect.topRight() : draw_rect.bottomLeft()); + p->drawLine(draw_rect.topLeft(), vertical_tabs ? draw_rect.bottomLeft() + : draw_rect.topRight()); + p->drawLine(draw_rect.bottomRight(), vertical_tabs + ? draw_rect.topRight() + : draw_rect.bottomLeft()); p->restore(); } } #endif - Utils::StyleHelper::drawIconWithShadow(v_opt->icon, icon_rect, p, QIcon::Normal); + Utils::StyleHelper::drawIconWithShadow(v_opt->icon, icon_rect, p, + QIcon::Normal); p->drawText(text_rect.translated(0, -1), textFlags, text); @@ -187,9 +203,7 @@ void FancyTabProxyStyle::polish(QWidget* widget) { QProxyStyle::polish(widget); } -void FancyTabProxyStyle::polish(QApplication* app) { - QProxyStyle::polish(app); -} +void FancyTabProxyStyle::polish(QApplication* app) { QProxyStyle::polish(app); } void FancyTabProxyStyle::polish(QPalette& palette) { QProxyStyle::polish(palette); @@ -200,71 +214,64 @@ bool FancyTabProxyStyle::eventFilter(QObject* o, QEvent* e) { if (bar && (e->type() == QEvent::MouseMove || e->type() == QEvent::Leave)) { QMouseEvent* event = static_cast(e); const QString old_hovered_tab = bar->property("tab_hover").toString(); - const QString hovered_tab = e->type() == QEvent::Leave ? QString() : bar->tabText(bar->tabAt(event->pos())); + const QString hovered_tab = e->type() == QEvent::Leave + ? QString() + : bar->tabText(bar->tabAt(event->pos())); bar->setProperty("tab_hover", hovered_tab); - if (old_hovered_tab != hovered_tab) - bar->update(); + if (old_hovered_tab != hovered_tab) bar->update(); } return false; } FancyTab::FancyTab(QWidget* tabbar) - : QWidget(tabbar), tabbar(tabbar), m_fader(0) -{ + : QWidget(tabbar), tabbar(tabbar), m_fader(0) { animator.setPropertyName("fader"); animator.setTargetObject(this); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); } -void FancyTab::fadeIn() -{ - animator.stop(); - animator.setDuration(80); - animator.setEndValue(40); - animator.start(); +void FancyTab::fadeIn() { + animator.stop(); + animator.setDuration(80); + animator.setEndValue(40); + animator.start(); } -void FancyTab::fadeOut() -{ - animator.stop(); - animator.setDuration(160); - animator.setEndValue(0); - animator.start(); +void FancyTab::fadeOut() { + animator.stop(); + animator.setDuration(160); + animator.setEndValue(0); + animator.start(); } -void FancyTab::setFader(float value) -{ - m_fader = value; - tabbar->update(); +void FancyTab::setFader(float value) { + m_fader = value; + tabbar->update(); } -FancyTabBar::FancyTabBar(QWidget *parent) - : QWidget(parent) -{ - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); - setStyle(new QWindowsStyle); - setMinimumWidth(qMax(2 * m_rounding, 40)); - setAttribute(Qt::WA_Hover, true); - setFocusPolicy(Qt::NoFocus); - setMouseTracking(true); // Needed for hover events - m_triggerTimer.setSingleShot(true); +FancyTabBar::FancyTabBar(QWidget* parent) : QWidget(parent) { + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + setStyle(new QWindowsStyle); + setMinimumWidth(qMax(2 * m_rounding, 40)); + setAttribute(Qt::WA_Hover, true); + setFocusPolicy(Qt::NoFocus); + setMouseTracking(true); // Needed for hover events + m_triggerTimer.setSingleShot(true); - QVBoxLayout* layout = new QVBoxLayout; - layout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding)); - layout->setSpacing(0); - layout->setContentsMargins(0, 0, 0, 0); - setLayout(layout); + QVBoxLayout* layout = new QVBoxLayout; + layout->addSpacerItem( + new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding)); + layout->setSpacing(0); + layout->setContentsMargins(0, 0, 0, 0); + setLayout(layout); - // We use a zerotimer to keep the sidebar responsive - connect(&m_triggerTimer, SIGNAL(timeout()), this, SLOT(emitCurrentIndex())); + // We use a zerotimer to keep the sidebar responsive + connect(&m_triggerTimer, SIGNAL(timeout()), this, SLOT(emitCurrentIndex())); } -FancyTabBar::~FancyTabBar() -{ - delete style(); -} +FancyTabBar::~FancyTabBar() { delete style(); } QSize FancyTab::sizeHint() const { QFont boldFont(font()); @@ -278,8 +285,7 @@ QSize FancyTab::sizeHint() const { return ret; } -QSize FancyTabBar::tabSizeHint(bool minimum) const -{ +QSize FancyTabBar::tabSizeHint(bool minimum) const { QFont boldFont(font()); boldFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize()); boldFont.setBold(true); @@ -290,24 +296,20 @@ QSize FancyTabBar::tabSizeHint(bool minimum) const return QSize(width, iconHeight + spacing + fm.height()); } -void FancyTabBar::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event) - QPainter p(this); +void FancyTabBar::paintEvent(QPaintEvent* event) { + Q_UNUSED(event) + QPainter p(this); - for (int i = 0; i < count(); ++i) - if (i != currentIndex()) - paintTab(&p, i); + for (int i = 0; i < count(); ++i) + if (i != currentIndex()) paintTab(&p, i); - // paint active tab last, since it overlaps the neighbors - if (currentIndex() != -1) - paintTab(&p, currentIndex()); + // paint active tab last, since it overlaps the neighbors + if (currentIndex() != -1) paintTab(&p, currentIndex()); } -bool FancyTab::event(QEvent* event) -{ +bool FancyTab::event(QEvent* event) { if (event->type() == QEvent::ToolTip) { - QFontMetrics metrics (font()); + QFontMetrics metrics(font()); int text_width = metrics.width(text); if (text_width > sizeHint().width()) { @@ -322,31 +324,22 @@ bool FancyTab::event(QEvent* event) return QWidget::event(event); } -void FancyTab::enterEvent(QEvent*) -{ - fadeIn(); +void FancyTab::enterEvent(QEvent*) { fadeIn(); } + +void FancyTab::leaveEvent(QEvent*) { fadeOut(); } + +QSize FancyTabBar::sizeHint() const { + QSize sh = tabSizeHint(); + return QSize(sh.width(), sh.height() * m_tabs.count()); } -void FancyTab::leaveEvent(QEvent*) -{ - fadeOut(); +QSize FancyTabBar::minimumSizeHint() const { + QSize sh = tabSizeHint(true); + return QSize(sh.width(), sh.height() * m_tabs.count()); } -QSize FancyTabBar::sizeHint() const -{ - QSize sh = tabSizeHint(); - return QSize(sh.width(), sh.height() * m_tabs.count()); -} - -QSize FancyTabBar::minimumSizeHint() const -{ - QSize sh = tabSizeHint(true); - return QSize(sh.width(), sh.height() * m_tabs.count()); -} - -QRect FancyTabBar::tabRect(int index) const -{ - return m_tabs[index]->geometry(); +QRect FancyTabBar::tabRect(int index) const { + return m_tabs[index]->geometry(); } QString FancyTabBar::tabToolTip(int index) const { @@ -360,140 +353,142 @@ void FancyTabBar::setTabToolTip(int index, const QString& toolTip) { // This keeps the sidebar responsive since // we get a repaint before loading the // mode itself -void FancyTabBar::emitCurrentIndex() -{ - emit currentChanged(m_currentIndex); -} +void FancyTabBar::emitCurrentIndex() { emit currentChanged(m_currentIndex); } -void FancyTabBar::mousePressEvent(QMouseEvent *e) -{ - e->accept(); - for (int index = 0; index < m_tabs.count(); ++index) { - if (tabRect(index).contains(e->pos())) { - m_currentIndex = index; - update(); - m_triggerTimer.start(0); - break; - } +void FancyTabBar::mousePressEvent(QMouseEvent* e) { + e->accept(); + for (int index = 0; index < m_tabs.count(); ++index) { + if (tabRect(index).contains(e->pos())) { + m_currentIndex = index; + update(); + m_triggerTimer.start(0); + break; } + } } void FancyTabBar::addTab(const QIcon& icon, const QString& label) { - FancyTab *tab = new FancyTab(this); + FancyTab* tab = new FancyTab(this); tab->icon = icon; tab->text = label; tab->setToolTip(label); m_tabs.append(tab); - qobject_cast(layout())->insertWidget(layout()->count()-1, tab); + qobject_cast(layout()) + ->insertWidget(layout()->count() - 1, tab); } void FancyTabBar::addSpacer(int size) { - qobject_cast(layout())->insertSpacerItem(layout()->count()-1, + qobject_cast(layout())->insertSpacerItem( + layout()->count() - 1, new QSpacerItem(0, size, QSizePolicy::Fixed, QSizePolicy::Maximum)); } -void FancyTabBar::paintTab(QPainter *painter, int tabIndex) const -{ - if (!validIndex(tabIndex)) { - qWarning("invalid index"); - return; - } +void FancyTabBar::paintTab(QPainter* painter, int tabIndex) const { + if (!validIndex(tabIndex)) { + qWarning("invalid index"); + return; + } + painter->save(); + + QRect rect = tabRect(tabIndex); + bool selected = (tabIndex == m_currentIndex); + + if (selected) { + // background painter->save(); + QLinearGradient grad(rect.topLeft(), rect.topRight()); + grad.setColorAt(0, QColor(255, 255, 255, 140)); + grad.setColorAt(1, QColor(255, 255, 255, 210)); + painter->fillRect(rect.adjusted(0, 0, 0, -1), grad); + painter->restore(); - QRect rect = tabRect(tabIndex); - bool selected = (tabIndex == m_currentIndex); + // shadows + painter->setPen(QColor(0, 0, 0, 110)); + painter->drawLine(rect.topLeft() + QPoint(1, -1), + rect.topRight() - QPoint(0, 1)); + painter->drawLine(rect.bottomLeft(), rect.bottomRight()); + painter->setPen(QColor(0, 0, 0, 40)); + painter->drawLine(rect.topLeft(), rect.bottomLeft()); - if (selected) { - //background - painter->save(); - QLinearGradient grad(rect.topLeft(), rect.topRight()); - grad.setColorAt(0, QColor(255, 255, 255, 140)); - grad.setColorAt(1, QColor(255, 255, 255, 210)); - painter->fillRect(rect.adjusted(0, 0, 0, -1), grad); - painter->restore(); + // highlights + painter->setPen(QColor(255, 255, 255, 50)); + painter->drawLine(rect.topLeft() + QPoint(0, -2), + rect.topRight() - QPoint(0, 2)); + painter->drawLine(rect.bottomLeft() + QPoint(0, 1), + rect.bottomRight() + QPoint(0, 1)); + painter->setPen(QColor(255, 255, 255, 40)); + painter->drawLine(rect.topLeft() + QPoint(0, 0), rect.topRight()); + painter->drawLine(rect.topRight() + QPoint(0, 1), + rect.bottomRight() - QPoint(0, 1)); + painter->drawLine(rect.bottomLeft() + QPoint(0, -1), + rect.bottomRight() - QPoint(0, 1)); + } - //shadows - painter->setPen(QColor(0, 0, 0, 110)); - painter->drawLine(rect.topLeft() + QPoint(1,-1), rect.topRight() - QPoint(0,1)); - painter->drawLine(rect.bottomLeft(), rect.bottomRight()); - painter->setPen(QColor(0, 0, 0, 40)); - painter->drawLine(rect.topLeft(), rect.bottomLeft()); - - //highlights - painter->setPen(QColor(255, 255, 255, 50)); - painter->drawLine(rect.topLeft() + QPoint(0, -2), rect.topRight() - QPoint(0,2)); - painter->drawLine(rect.bottomLeft() + QPoint(0, 1), rect.bottomRight() + QPoint(0,1)); - painter->setPen(QColor(255, 255, 255, 40)); - painter->drawLine(rect.topLeft() + QPoint(0, 0), rect.topRight()); - painter->drawLine(rect.topRight() + QPoint(0, 1), rect.bottomRight() - QPoint(0, 1)); - painter->drawLine(rect.bottomLeft() + QPoint(0,-1), rect.bottomRight()-QPoint(0,1)); - } - - QString tabText(painter->fontMetrics().elidedText(this->tabText(tabIndex), Qt::ElideRight, width())); - QRect tabTextRect(tabRect(tabIndex)); - QRect tabIconRect(tabTextRect); - tabIconRect.adjust(+4, +4, -4, -4); - tabTextRect.translate(0, -2); - QFont boldFont(painter->font()); - boldFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize()); - boldFont.setBold(true); - painter->setFont(boldFont); - painter->setPen(selected ? QColor(255, 255, 255, 160) : QColor(0, 0, 0, 110)); - int textFlags = Qt::AlignCenter | Qt::AlignBottom; - painter->drawText(tabTextRect, textFlags, tabText); - painter->setPen(selected ? QColor(60, 60, 60) : Utils::StyleHelper::panelTextColor()); + QString tabText(painter->fontMetrics().elidedText(this->tabText(tabIndex), + Qt::ElideRight, width())); + QRect tabTextRect(tabRect(tabIndex)); + QRect tabIconRect(tabTextRect); + tabIconRect.adjust(+4, +4, -4, -4); + tabTextRect.translate(0, -2); + QFont boldFont(painter->font()); + boldFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize()); + boldFont.setBold(true); + painter->setFont(boldFont); + painter->setPen(selected ? QColor(255, 255, 255, 160) : QColor(0, 0, 0, 110)); + int textFlags = Qt::AlignCenter | Qt::AlignBottom; + painter->drawText(tabTextRect, textFlags, tabText); + painter->setPen(selected ? QColor(60, 60, 60) + : Utils::StyleHelper::panelTextColor()); #ifndef Q_WS_MAC - if (!selected) { - painter->save(); - int fader = int(m_tabs[tabIndex]->fader()); - QLinearGradient grad(rect.topLeft(), rect.topRight()); - grad.setColorAt(0, Qt::transparent); - grad.setColorAt(0.5, QColor(255, 255, 255, fader)); - grad.setColorAt(1, Qt::transparent); - painter->fillRect(rect, grad); - painter->setPen(QPen(grad, 1.0)); - painter->drawLine(rect.topLeft(), rect.topRight()); - painter->drawLine(rect.bottomLeft(), rect.bottomRight()); - painter->restore(); - } + if (!selected) { + painter->save(); + int fader = int(m_tabs[tabIndex]->fader()); + QLinearGradient grad(rect.topLeft(), rect.topRight()); + grad.setColorAt(0, Qt::transparent); + grad.setColorAt(0.5, QColor(255, 255, 255, fader)); + grad.setColorAt(1, Qt::transparent); + painter->fillRect(rect, grad); + painter->setPen(QPen(grad, 1.0)); + painter->drawLine(rect.topLeft(), rect.topRight()); + painter->drawLine(rect.bottomLeft(), rect.bottomRight()); + painter->restore(); + } #endif - const int textHeight = painter->fontMetrics().height(); - tabIconRect.adjust(0, 4, 0, -textHeight); - Utils::StyleHelper::drawIconWithShadow(tabIcon(tabIndex), tabIconRect, painter, QIcon::Normal); + const int textHeight = painter->fontMetrics().height(); + tabIconRect.adjust(0, 4, 0, -textHeight); + Utils::StyleHelper::drawIconWithShadow(tabIcon(tabIndex), tabIconRect, + painter, QIcon::Normal); - painter->translate(0, -1); - painter->drawText(tabTextRect, textFlags, tabText); - painter->restore(); + painter->translate(0, -1); + painter->drawText(tabTextRect, textFlags, tabText); + painter->restore(); } void FancyTabBar::setCurrentIndex(int index) { - m_currentIndex = index; - update(); - emit currentChanged(m_currentIndex); + m_currentIndex = index; + update(); + emit currentChanged(m_currentIndex); } - ////// // FancyColorButton ////// -class FancyColorButton : public QWidget -{ -public: - FancyColorButton(QWidget *parent) - : m_parent(parent) - { - setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); - } +class FancyColorButton : public QWidget { + public: + FancyColorButton(QWidget* parent) : m_parent(parent) { + setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + } - void mousePressEvent(QMouseEvent *ev) - { - if (ev->modifiers() & Qt::ShiftModifier) - Utils::StyleHelper::setBaseColor(QColorDialog::getColor(Utils::StyleHelper::requestedBaseColor(), m_parent)); - } -private: - QWidget *m_parent; + void mousePressEvent(QMouseEvent* ev) { + if (ev->modifiers() & Qt::ShiftModifier) + Utils::StyleHelper::setBaseColor(QColorDialog::getColor( + Utils::StyleHelper::requestedBaseColor(), m_parent)); + } + + private: + QWidget* m_parent; }; ////// @@ -501,20 +496,20 @@ private: ////// FancyTabWidget::FancyTabWidget(QWidget* parent) - : QWidget(parent), - mode_(Mode_None), - tab_bar_(NULL), - stack_(new QStackedLayout), - side_widget_(new QWidget), - side_layout_(new QVBoxLayout), - top_layout_(new QVBoxLayout), - use_background_(false), - menu_(NULL), - proxy_style_(new FancyTabProxyStyle) -{ + : QWidget(parent), + mode_(Mode_None), + tab_bar_(nullptr), + stack_(new QStackedLayout), + side_widget_(new QWidget), + side_layout_(new QVBoxLayout), + top_layout_(new QVBoxLayout), + use_background_(false), + menu_(nullptr), + proxy_style_(new FancyTabProxyStyle) { side_layout_->setSpacing(0); side_layout_->setMargin(0); - side_layout_->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding)); + side_layout_->addSpacerItem( + new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding)); side_widget_->setLayout(side_layout_); side_widget_->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); @@ -531,14 +526,13 @@ FancyTabWidget::FancyTabWidget(QWidget* parent) setLayout(main_layout); } -void FancyTabWidget::AddTab(QWidget* tab, const QIcon& icon, const QString& label) { +void FancyTabWidget::AddTab(QWidget* tab, const QIcon& icon, + const QString& label) { stack_->addWidget(tab); items_ << Item(icon, label); } -void FancyTabWidget::AddSpacer(int size) { - items_ << Item(size); -} +void FancyTabWidget::AddSpacer(int size) { items_ << Item(size); } void FancyTabWidget::SetBackgroundPixmap(const QPixmap& pixmap) { background_pixmap_ = pixmap; @@ -546,8 +540,7 @@ void FancyTabWidget::SetBackgroundPixmap(const QPixmap& pixmap) { } void FancyTabWidget::paintEvent(QPaintEvent*) { - if (!use_background_) - return; + if (!use_background_) return; QPainter painter(this); @@ -562,7 +555,8 @@ void FancyTabWidget::paintEvent(QPaintEvent*) { while (pixmap_rect.top() < rect.bottom()) { QRect source_rect(pixmap_rect.intersected(rect)); source_rect.moveTo(0, 0); - painter.drawPixmap(pixmap_rect.topLeft(), background_pixmap_, source_rect); + painter.drawPixmap(pixmap_rect.topLeft(), background_pixmap_, + source_rect); pixmap_rect.moveTop(pixmap_rect.bottom() - 10); } } @@ -575,9 +569,7 @@ void FancyTabWidget::paintEvent(QPaintEvent*) { painter.drawLine(rect.bottomLeft(), rect.bottomRight()); } -int FancyTabWidget::current_index() const { - return stack_->currentIndex(); -} +int FancyTabWidget::current_index() const { return stack_->currentIndex(); } void FancyTabWidget::SetCurrentIndex(int index) { if (FancyTabBar* bar = qobject_cast(tab_bar_)) { @@ -605,7 +597,7 @@ void FancyTabWidget::AddBottomWidget(QWidget* widget) { void FancyTabWidget::SetMode(Mode mode) { // Remove previous tab bar delete tab_bar_; - tab_bar_ = NULL; + tab_bar_ = nullptr; use_background_ = false; @@ -614,14 +606,14 @@ void FancyTabWidget::SetMode(Mode mode) { case Mode_None: default: qLog(Warning) << "Unknown fancy tab mode" << mode; - // fallthrough + // fallthrough case Mode_LargeSidebar: { FancyTabBar* bar = new FancyTabBar(this); side_layout_->insertWidget(0, bar); tab_bar_ = bar; - foreach (const Item& item, items_) { + for (const Item& item : items_) { if (item.type_ == Item::Type_Spacer) bar->addSpacer(item.spacer_size_); else @@ -687,8 +679,7 @@ void FancyTabWidget::AddMenuItem(QSignalMapper* mapper, QActionGroup* group, mapper->setMapping(action, mode); connect(action, SIGNAL(triggered()), mapper, SLOT(map())); - if (mode == mode_) - action->setChecked(true); + if (mode == mode_) action->setChecked(true); } void FancyTabWidget::MakeTabBar(QTabBar::Shape shape, bool text, bool icons, @@ -712,9 +703,8 @@ void FancyTabWidget::MakeTabBar(QTabBar::Shape shape, bool text, bool icons, else side_layout_->insertWidget(0, bar); - foreach (const Item& item, items_) { - if (item.type_ != Item::Type_Tab) - continue; + for (const Item& item : items_) { + if (item.type_ != Item::Type_Tab) continue; QString label = item.tab_label_; if (shape == QTabBar::RoundedWest) { diff --git a/src/widgets/fancytabwidget.h b/src/widgets/fancytabwidget.h index cbdbb2167..a0a3dd80a 100644 --- a/src/widgets/fancytabwidget.h +++ b/src/widgets/fancytabwidget.h @@ -30,6 +30,8 @@ #ifndef FANCYTABWIDGET_H #define FANCYTABWIDGET_H +#include + #include #include #include @@ -37,8 +39,6 @@ #include #include -#include - class QActionGroup; class QMenu; class QPainter; @@ -53,104 +53,103 @@ namespace Internal { class FancyTabProxyStyle : public QProxyStyle { Q_OBJECT -public: + public: void drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const; void polish(QWidget* widget); void polish(QApplication* app); void polish(QPalette& palette); -protected: + protected: bool eventFilter(QObject* o, QEvent* e); }; class FancyTab : public QWidget { - Q_OBJECT + Q_OBJECT - Q_PROPERTY(float fader READ fader WRITE setFader) -public: - FancyTab(QWidget *tabbar); - float fader() { return m_fader; } - void setFader(float value); + Q_PROPERTY(float fader READ fader WRITE setFader) + public: + FancyTab(QWidget* tabbar); + float fader() { return m_fader; } + void setFader(float value); - QSize sizeHint() const; + QSize sizeHint() const; - void fadeIn(); - void fadeOut(); + void fadeIn(); + void fadeOut(); - QIcon icon; - QString text; + QIcon icon; + QString text; -protected: - bool event(QEvent *); - void enterEvent(QEvent *); - void leaveEvent(QEvent *); + protected: + bool event(QEvent*); + void enterEvent(QEvent*); + void leaveEvent(QEvent*); -private: - QPropertyAnimation animator; - QWidget *tabbar; - float m_fader; + private: + QPropertyAnimation animator; + QWidget* tabbar; + float m_fader; }; -class FancyTabBar : public QWidget -{ - Q_OBJECT +class FancyTabBar : public QWidget { + Q_OBJECT -public: - FancyTabBar(QWidget *parent = 0); - ~FancyTabBar(); + public: + FancyTabBar(QWidget* parent = nullptr); + ~FancyTabBar(); - void paintEvent(QPaintEvent *event); - void paintTab(QPainter *painter, int tabIndex) const; - void mousePressEvent(QMouseEvent *); - bool validIndex(int index) const { return index >= 0 && index < m_tabs.count(); } + void paintEvent(QPaintEvent* event); + void paintTab(QPainter* painter, int tabIndex) const; + void mousePressEvent(QMouseEvent*); + bool validIndex(int index) const { + return index >= 0 && index < m_tabs.count(); + } - QSize sizeHint() const; - QSize minimumSizeHint() const; + QSize sizeHint() const; + QSize minimumSizeHint() const; - void addTab(const QIcon &icon, const QString &label); - void addSpacer(int size = 40); - void removeTab(int index) { - FancyTab *tab = m_tabs.takeAt(index); - delete tab; - } - void setCurrentIndex(int index); - int currentIndex() const { return m_currentIndex; } + void addTab(const QIcon& icon, const QString& label); + void addSpacer(int size = 40); + void removeTab(int index) { + FancyTab* tab = m_tabs.takeAt(index); + delete tab; + } + void setCurrentIndex(int index); + int currentIndex() const { return m_currentIndex; } - void setTabToolTip(int index, const QString& toolTip); - QString tabToolTip(int index) const; + void setTabToolTip(int index, const QString& toolTip); + QString tabToolTip(int index) const; - QIcon tabIcon(int index) const {return m_tabs.at(index)->icon; } - QString tabText(int index) const { return m_tabs.at(index)->text; } - int count() const {return m_tabs.count(); } - QRect tabRect(int index) const; + QIcon tabIcon(int index) const { return m_tabs.at(index)->icon; } + QString tabText(int index) const { return m_tabs.at(index)->text; } + int count() const { return m_tabs.count(); } + QRect tabRect(int index) const; signals: - void currentChanged(int); + void currentChanged(int); -public slots: - void emitCurrentIndex(); - -private: - static const int m_rounding; - static const int m_textPadding; - int m_currentIndex; - QList m_tabs; - QTimer m_triggerTimer; - QSize tabSizeHint(bool minimum = false) const; + public slots: + void emitCurrentIndex(); + private: + static const int m_rounding; + static const int m_textPadding; + int m_currentIndex; + QList m_tabs; + QTimer m_triggerTimer; + QSize tabSizeHint(bool minimum = false) const; }; class FancyTabWidget : public QWidget { Q_OBJECT -public: - FancyTabWidget(QWidget* parent = 0); + public: + FancyTabWidget(QWidget* parent = nullptr); // Values are persisted - only add to the end enum Mode { Mode_None = 0, - Mode_LargeSidebar = 1, Mode_SmallSidebar = 2, Mode_Tabs = 3, @@ -160,13 +159,13 @@ public: struct Item { Item(const QIcon& icon, const QString& label) - : type_(Type_Tab), tab_label_(label), tab_icon_(icon), spacer_size_(0) {} + : type_(Type_Tab), + tab_label_(label), + tab_icon_(icon), + spacer_size_(0) {} Item(int size) : type_(Type_Spacer), spacer_size_(size) {} - enum Type { - Type_Tab, - Type_Spacer, - }; + enum Type { Type_Tab, Type_Spacer, }; Type type_; QString tab_label_; @@ -174,7 +173,7 @@ public: int spacer_size_; }; - void AddTab(QWidget *tab, const QIcon &icon, const QString &label); + void AddTab(QWidget* tab, const QIcon& icon, const QString& label); void AddSpacer(int size = 40); void SetBackgroundPixmap(const QPixmap& pixmap); @@ -183,7 +182,7 @@ public: int current_index() const; Mode mode() const { return mode_; } -public slots: + public slots: void SetCurrentIndex(int index); void SetCurrentWidget(QWidget* widget); void SetMode(Mode mode); @@ -193,14 +192,14 @@ signals: void CurrentChanged(int index); void ModeChanged(FancyTabWidget::Mode mode); -protected: - void paintEvent(QPaintEvent *event); + protected: + void paintEvent(QPaintEvent* event); void contextMenuEvent(QContextMenuEvent* e); -private slots: + private slots: void ShowWidget(int index); -private: + private: void MakeTabBar(QTabBar::Shape shape, bool text, bool icons, bool fancy); void AddMenuItem(QSignalMapper* mapper, QActionGroup* group, const QString& text, Mode mode); @@ -219,11 +218,11 @@ private: QMenu* menu_; - boost::scoped_ptr proxy_style_; + std::unique_ptr proxy_style_; }; -} // namespace Internal -} // namespace Core +} // namespace Internal +} // namespace Core Q_DECLARE_METATYPE(QPropertyAnimation*); @@ -231,4 +230,4 @@ using Core::Internal::FancyTab; using Core::Internal::FancyTabBar; using Core::Internal::FancyTabWidget; -#endif // FANCYTABWIDGET_H +#endif // FANCYTABWIDGET_H diff --git a/src/widgets/favoritewidget.cpp b/src/widgets/favoritewidget.cpp index c3dc66557..72a751daf 100644 --- a/src/widgets/favoritewidget.cpp +++ b/src/widgets/favoritewidget.cpp @@ -28,14 +28,12 @@ const int FavoriteWidget::kStarSize = 15; FavoriteWidget::FavoriteWidget(int tab_index, bool favorite, QWidget* parent) - : QWidget(parent), - tab_index_(tab_index), - favorite_(favorite), - on_(":/star-on.png"), - off_(":/star-off.png"), - rect_(0, 0, kStarSize, kStarSize) -{ -} + : QWidget(parent), + tab_index_(tab_index), + favorite_(favorite), + on_(":/star-on.png"), + off_(":/star-off.png"), + rect_(0, 0, kStarSize, kStarSize) {} void FavoriteWidget::SetFavorite(bool favorite) { if (favorite_ != favorite) { @@ -46,8 +44,9 @@ void FavoriteWidget::SetFavorite(bool favorite) { } QSize FavoriteWidget::sizeHint() const { - const int frame_width = 1 + style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - return QSize(kStarSize + frame_width*2, kStarSize + frame_width*2); + const int frame_width = + 1 + style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + return QSize(kStarSize + frame_width * 2, kStarSize + frame_width * 2); } void FavoriteWidget::paintEvent(QPaintEvent* e) { diff --git a/src/widgets/favoritewidget.h b/src/widgets/favoritewidget.h index c200cc565..417109eaf 100644 --- a/src/widgets/favoritewidget.h +++ b/src/widgets/favoritewidget.h @@ -24,7 +24,7 @@ class FavoriteWidget : public QWidget { Q_OBJECT public: - FavoriteWidget(int tab_id, bool favorite = false, QWidget *parent = 0); + FavoriteWidget(int tab_id, bool favorite = false, QWidget* parent = nullptr); // Change the value if different from the current one and then update display // and emit FavoriteStateChanged signal @@ -32,7 +32,7 @@ class FavoriteWidget : public QWidget { QSize sizeHint() const; - signals: +signals: void FavoriteStateChanged(int, bool); protected: diff --git a/src/widgets/fileview.cpp b/src/widgets/fileview.cpp index 6a62a2e56..5ec1fa6d8 100644 --- a/src/widgets/fileview.cpp +++ b/src/widgets/fileview.cpp @@ -21,7 +21,7 @@ #include "core/filesystemmusicstorage.h" #include "core/mimedata.h" #include "ui/iconloader.h" -#include "ui/mainwindow.h" // for filter information +#include "ui/mainwindow.h" // for filter information #include "ui/organiseerrordialog.h" #include @@ -29,19 +29,19 @@ #include #include -const char* FileView::kFileFilter = "*.mp3 *.ogg *.flac *.mpc *.m4a *.aac *.wma " - "*.mp4 *.spx *.wav *.m3u *.m3u8 *.pls *.xspf " - "*.asx *.asxini *.cue *.ape *.wv *.mka *.opus " - "*.oga *.mka *.mp2"; +const char* FileView::kFileFilter = + "*.mp3 *.ogg *.flac *.mpc *.m4a *.aac *.wma " + "*.mp4 *.spx *.wav *.m3u *.m3u8 *.pls *.xspf " + "*.asx *.asxini *.cue *.ape *.wv *.mka *.opus " + "*.oga *.mka *.mp2"; FileView::FileView(QWidget* parent) : QWidget(parent), ui_(new Ui_FileView), - model_(NULL), + model_(nullptr), undo_stack_(new QUndoStack(this)), - task_manager_(NULL), - storage_(new FilesystemMusicStorage("/")) -{ + task_manager_(nullptr), + storage_(new FilesystemMusicStorage("/")) { ui_->setupUi(this); // Icons @@ -54,27 +54,35 @@ FileView::FileView(QWidget* parent) connect(ui_->forward, SIGNAL(clicked()), undo_stack_, SLOT(redo())); connect(ui_->home, SIGNAL(clicked()), SLOT(FileHome())); connect(ui_->up, SIGNAL(clicked()), SLOT(FileUp())); - connect(ui_->path, SIGNAL(textChanged(QString)), SLOT(ChangeFilePath(QString))); + connect(ui_->path, SIGNAL(textChanged(QString)), + SLOT(ChangeFilePath(QString))); - connect(undo_stack_, SIGNAL(canUndoChanged(bool)), ui_->back, SLOT(setEnabled(bool))); - connect(undo_stack_, SIGNAL(canRedoChanged(bool)), ui_->forward, SLOT(setEnabled(bool))); + connect(undo_stack_, SIGNAL(canUndoChanged(bool)), ui_->back, + SLOT(setEnabled(bool))); + connect(undo_stack_, SIGNAL(canRedoChanged(bool)), ui_->forward, + SLOT(setEnabled(bool))); - connect(ui_->list, SIGNAL(activated(QModelIndex)), SLOT(ItemActivated(QModelIndex))); - connect(ui_->list, SIGNAL(doubleClicked(QModelIndex)), SLOT(ItemDoubleClick(QModelIndex))); - connect(ui_->list, SIGNAL(AddToPlaylist(QMimeData*)), SIGNAL(AddToPlaylist(QMimeData*))); - connect(ui_->list, SIGNAL(CopyToLibrary(QList)), SIGNAL(CopyToLibrary(QList))); - connect(ui_->list, SIGNAL(MoveToLibrary(QList)), SIGNAL(MoveToLibrary(QList))); - connect(ui_->list, SIGNAL(CopyToDevice(QList)), SIGNAL(CopyToDevice(QList))); + connect(ui_->list, SIGNAL(activated(QModelIndex)), + SLOT(ItemActivated(QModelIndex))); + connect(ui_->list, SIGNAL(doubleClicked(QModelIndex)), + SLOT(ItemDoubleClick(QModelIndex))); + connect(ui_->list, SIGNAL(AddToPlaylist(QMimeData*)), + SIGNAL(AddToPlaylist(QMimeData*))); + connect(ui_->list, SIGNAL(CopyToLibrary(QList)), + SIGNAL(CopyToLibrary(QList))); + connect(ui_->list, SIGNAL(MoveToLibrary(QList)), + SIGNAL(MoveToLibrary(QList))); + connect(ui_->list, SIGNAL(CopyToDevice(QList)), + SIGNAL(CopyToDevice(QList))); connect(ui_->list, SIGNAL(Delete(QStringList)), SLOT(Delete(QStringList))); - connect(ui_->list, SIGNAL(EditTags(QList)), SIGNAL(EditTags(QList))); + connect(ui_->list, SIGNAL(EditTags(QList)), + SIGNAL(EditTags(QList))); QString filter(FileView::kFileFilter); filter_list_ << filter.split(" "); } -FileView::~FileView() { - delete ui_; -} +FileView::~FileView() { delete ui_; } void FileView::SetPath(const QString& path) { if (!model_) @@ -95,7 +103,7 @@ void FileView::FileUp() { // view scroll position. if (undo_stack_->canUndo()) { const UndoCommand* last_dir = static_cast( - undo_stack_->command(undo_stack_->index()-1)); + undo_stack_->command(undo_stack_->index() - 1)); if (last_dir->undo_path() == dir.path()) { undo_stack_->undo(); return; @@ -105,20 +113,16 @@ void FileView::FileUp() { ChangeFilePath(dir.path()); } -void FileView::FileHome() { - ChangeFilePath(QDir::homePath()); -} +void FileView::FileHome() { ChangeFilePath(QDir::homePath()); } void FileView::ChangeFilePath(const QString& new_path_native) { QString new_path = QDir::fromNativeSeparators(new_path_native); QFileInfo info(new_path); - if (!info.exists() || !info.isDir()) - return; + if (!info.exists() || !info.isDir()) return; QString old_path(model_->rootPath()); - if (old_path == new_path) - return; + if (old_path == new_path) return; undo_stack_->push(new UndoCommand(this, new_path)); } @@ -134,13 +138,11 @@ void FileView::ChangeFilePathWithoutUndo(const QString& new_path) { } void FileView::ItemActivated(const QModelIndex& index) { - if (model_->isDir(index)) - ChangeFilePath(model_->filePath(index)); + if (model_->isDir(index)) ChangeFilePath(model_->filePath(index)); } void FileView::ItemDoubleClick(const QModelIndex& index) { - if (model_->isDir(index)) - return; + if (model_->isDir(index)) return; QString file_path = model_->filePath(index); @@ -152,10 +154,8 @@ void FileView::ItemDoubleClick(const QModelIndex& index) { emit AddToPlaylist(data); } - FileView::UndoCommand::UndoCommand(FileView* view, const QString& new_path) - : view_(view) -{ + : view_(view) { old_state_.path = view->model_->rootPath(); old_state_.scroll_pos = view_->ui_->list->verticalScrollBar()->value(); old_state_.index = view_->ui_->list->currentIndex(); @@ -181,22 +181,23 @@ void FileView::UndoCommand::undo() { } void FileView::Delete(const QStringList& filenames) { - if (filenames.isEmpty()) - return; + if (filenames.isEmpty()) return; if (QMessageBox::warning(this, tr("Delete files"), - tr("These files will be permanently deleted from disk, are you sure you want to continue?"), - QMessageBox::Yes, QMessageBox::Cancel) != QMessageBox::Yes) + tr("These files will be permanently deleted from " + "disk, are you sure you want to continue?"), + QMessageBox::Yes, + QMessageBox::Cancel) != QMessageBox::Yes) return; DeleteFiles* delete_files = new DeleteFiles(task_manager_, storage_); - connect(delete_files, SIGNAL(Finished(SongList)), SLOT(DeleteFinished(SongList))); + connect(delete_files, SIGNAL(Finished(SongList)), + SLOT(DeleteFinished(SongList))); delete_files->Start(filenames); } void FileView::DeleteFinished(const SongList& songs_with_errors) { - if (songs_with_errors.isEmpty()) - return; + if (songs_with_errors.isEmpty()) return; OrganiseErrorDialog* dialog = new OrganiseErrorDialog(this); dialog->Show(OrganiseErrorDialog::Type_Delete, songs_with_errors); @@ -206,11 +207,10 @@ void FileView::DeleteFinished(const SongList& songs_with_errors) { void FileView::showEvent(QShowEvent* e) { QWidget::showEvent(e); - if (model_) - return; + if (model_) return; model_ = new QFileSystemModel(this); - + model_->setNameFilters(filter_list_); // if an item fails the filter, hide it model_->setNameFilterDisables(false); @@ -218,8 +218,7 @@ void FileView::showEvent(QShowEvent* e) { ui_->list->setModel(model_); ChangeFilePathWithoutUndo(QDir::homePath()); - if (!lazy_set_path_.isEmpty()) - ChangeFilePathWithoutUndo(lazy_set_path_); + if (!lazy_set_path_.isEmpty()) ChangeFilePathWithoutUndo(lazy_set_path_); } void FileView::keyPressEvent(QKeyEvent* e) { diff --git a/src/widgets/fileview.h b/src/widgets/fileview.h index 07e5d239f..608938366 100644 --- a/src/widgets/fileview.h +++ b/src/widgets/fileview.h @@ -18,13 +18,13 @@ #ifndef FILEVIEW_H #define FILEVIEW_H +#include + #include #include #include #include -#include - #include "core/song.h" class FilesystemMusicStorage; @@ -39,7 +39,7 @@ class FileView : public QWidget { Q_OBJECT public: - FileView(QWidget* parent = 0); + FileView(QWidget* parent = nullptr); ~FileView(); static const char* kFileFilter; @@ -50,7 +50,7 @@ class FileView : public QWidget { void showEvent(QShowEvent*); void keyPressEvent(QKeyEvent* e); - signals: +signals: void PathChanged(const QString& path); void AddToPlaylist(QMimeData* data); @@ -102,11 +102,11 @@ class FileView : public QWidget { QUndoStack* undo_stack_; TaskManager* task_manager_; - boost::shared_ptr storage_; + std::shared_ptr storage_; QString lazy_set_path_; QStringList filter_list_; }; -#endif // FILEVIEW_H +#endif // FILEVIEW_H diff --git a/src/widgets/fileviewlist.cpp b/src/widgets/fileviewlist.cpp index 3084c9124..27ff164a2 100644 --- a/src/widgets/fileviewlist.cpp +++ b/src/widgets/fileviewlist.cpp @@ -26,20 +26,19 @@ #include FileViewList::FileViewList(QWidget* parent) - : QListView(parent), - menu_(new QMenu(this)) -{ - menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), - this, SLOT(AddToPlaylistSlot())); - menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), - this, SLOT(LoadSlot())); + : QListView(parent), menu_(new QMenu(this)) { + menu_->addAction(IconLoader::Load("media-playback-start"), + tr("Append to current playlist"), this, + SLOT(AddToPlaylistSlot())); + menu_->addAction(IconLoader::Load("media-playback-start"), + tr("Replace current playlist"), this, SLOT(LoadSlot())); menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylistSlot())); menu_->addSeparator(); menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to library..."), this, SLOT(CopyToLibrarySlot())); - menu_->addAction(IconLoader::Load("go-jump"), tr("Move to library..."), - this, SLOT(MoveToLibrarySlot())); + menu_->addAction(IconLoader::Load("go-jump"), tr("Move to library..."), this, + SLOT(MoveToLibrarySlot())); menu_->addAction(IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Copy to device..."), this, SLOT(CopyToDeviceSlot())); menu_->addAction(IconLoader::Load("edit-delete"), tr("Delete from disk..."), @@ -47,9 +46,9 @@ FileViewList::FileViewList(QWidget* parent) menu_->addSeparator(); menu_->addAction(IconLoader::Load("edit-rename"), - tr("Edit track information..."), this, SLOT(EditTagsSlot())); + tr("Edit track information..."), this, SLOT(EditTagsSlot())); menu_->addAction(IconLoader::Load("document-open-folder"), - tr("Show in file browser..."), this, SLOT(ShowInBrowser())); + tr("Show in file browser..."), this, SLOT(ShowInBrowser())); setAttribute(Qt::WA_MacShowFocusRect, false); } @@ -63,10 +62,11 @@ void FileViewList::contextMenuEvent(QContextMenuEvent* e) { QList FileViewList::UrlListFromSelection() const { QList urls; - foreach (const QModelIndex& index, menu_selection_.indexes()) { + for (const QModelIndex& index : menu_selection_.indexes()) { if (index.column() == 0) - urls << QUrl::fromLocalFile( - static_cast(model())->fileInfo(index).canonicalFilePath()); + urls << QUrl::fromLocalFile(static_cast(model()) + ->fileInfo(index) + .canonicalFilePath()); } return urls; } @@ -77,11 +77,12 @@ MimeData* FileViewList::MimeDataFromSelection() const { QList filenames = FilenamesFromSelection(); // if just one folder selected - use it's path as the new playlist's name - if(filenames.size() == 1 && QFileInfo(filenames.first()).isDir()) { + if (filenames.size() == 1 && QFileInfo(filenames.first()).isDir()) { data->name_for_new_playlist_ = filenames.first(); - // otherwise, use the current root path + // otherwise, use the current root path } else { - data->name_for_new_playlist_ = static_cast(model())->rootPath(); + data->name_for_new_playlist_ = + static_cast(model())->rootPath(); } return data; @@ -89,7 +90,7 @@ MimeData* FileViewList::MimeDataFromSelection() const { QStringList FileViewList::FilenamesFromSelection() const { QStringList filenames; - foreach (const QModelIndex& index, menu_selection_.indexes()) { + for (const QModelIndex& index : menu_selection_.indexes()) { if (index.column() == 0) filenames << static_cast(model())->filePath(index); } @@ -124,20 +125,16 @@ void FileViewList::CopyToDeviceSlot() { emit CopyToDevice(UrlListFromSelection()); } -void FileViewList::DeleteSlot() { - emit Delete(FilenamesFromSelection()); -} +void FileViewList::DeleteSlot() { emit Delete(FilenamesFromSelection()); } -void FileViewList::EditTagsSlot() { - emit EditTags(UrlListFromSelection()); -} +void FileViewList::EditTagsSlot() { emit EditTags(UrlListFromSelection()); } void FileViewList::mousePressEvent(QMouseEvent* e) { QListView::mousePressEvent(e); - //enqueue to playlist with middleClick + // enqueue to playlist with middleClick if (e->button() == Qt::MidButton) { - //we need to update the menu selection + // we need to update the menu selection menu_selection_ = selectionModel()->selection(); MimeData* data = new MimeData; diff --git a/src/widgets/fileviewlist.h b/src/widgets/fileviewlist.h index 6935e9483..98284c7eb 100644 --- a/src/widgets/fileviewlist.h +++ b/src/widgets/fileviewlist.h @@ -27,11 +27,11 @@ class FileViewList : public QListView { Q_OBJECT public: - FileViewList(QWidget* parent = 0); + FileViewList(QWidget* parent = nullptr); void mousePressEvent(QMouseEvent* e); - signals: +signals: void AddToPlaylist(QMimeData* data); void CopyToLibrary(const QList& urls); void MoveToLibrary(const QList& urls); @@ -62,4 +62,4 @@ class FileViewList : public QListView { QItemSelection menu_selection_; }; -#endif // FILEVIEWLIST_H +#endif // FILEVIEWLIST_H diff --git a/src/widgets/forcescrollperpixel.cpp b/src/widgets/forcescrollperpixel.cpp index f54fab067..065c1e47b 100644 --- a/src/widgets/forcescrollperpixel.cpp +++ b/src/widgets/forcescrollperpixel.cpp @@ -21,17 +21,14 @@ #include #include - -ForceScrollPerPixel::ForceScrollPerPixel(QAbstractItemView* item_view, QObject* parent) - : QObject(parent), - item_view_(item_view) -{ +ForceScrollPerPixel::ForceScrollPerPixel(QAbstractItemView* item_view, + QObject* parent) + : QObject(parent), item_view_(item_view) { item_view_->installEventFilter(this); } bool ForceScrollPerPixel::eventFilter(QObject* object, QEvent* event) { - if (object == item_view_ && - event->type() != QEvent::Destroy && + if (object == item_view_ && event->type() != QEvent::Destroy && event->type() != QEvent::WinIdChange && event->type() != QEvent::AccessibilityPrepare) { item_view_->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); diff --git a/src/widgets/forcescrollperpixel.h b/src/widgets/forcescrollperpixel.h index 0b498d12c..1449104f2 100644 --- a/src/widgets/forcescrollperpixel.h +++ b/src/widgets/forcescrollperpixel.h @@ -25,14 +25,14 @@ class QAbstractItemView; // Some KDE styles override the ScrollMode property of QAbstractItemViews. // This helper class forces the mode back to ScrollPerPixel. class ForceScrollPerPixel : public QObject { -public: - ForceScrollPerPixel(QAbstractItemView* item_view, QObject* parent = 0); + public: + ForceScrollPerPixel(QAbstractItemView* item_view, QObject* parent = nullptr); -protected: + protected: bool eventFilter(QObject* object, QEvent* event); -private: + private: QAbstractItemView* item_view_; }; -#endif // FORCESCROLLPERPIXEL_H +#endif // FORCESCROLLPERPIXEL_H diff --git a/src/widgets/freespacebar.cpp b/src/widgets/freespacebar.cpp index 02fc44acd..3067f722b 100644 --- a/src/widgets/freespacebar.cpp +++ b/src/widgets/freespacebar.cpp @@ -36,16 +36,14 @@ const QRgb FreeSpaceBar::kColorBar1 = qRgb(250, 148, 76); const QRgb FreeSpaceBar::kColorBar2 = qRgb(214, 102, 24); const QRgb FreeSpaceBar::kColorBorder = qRgb(174, 168, 162); - -FreeSpaceBar::FreeSpaceBar(QWidget *parent) - : QWidget(parent), - free_(100), - additional_(0), - total_(100), - free_text_(tr("Available")), - additional_text_(tr("New songs")), - used_text_(tr("Used")) -{ +FreeSpaceBar::FreeSpaceBar(QWidget* parent) + : QWidget(parent), + free_(100), + additional_(0), + total_(100), + free_text_(tr("Available")), + additional_text_(tr("New songs")), + used_text_(tr("Used")) { setMinimumHeight(sizeHint().height()); } @@ -66,7 +64,8 @@ void FreeSpaceBar::paintEvent(QPaintEvent*) { // Draw the reflection // Create the reflected pixmap - QImage reflection(reflection_rect.size(), QImage::Format_ARGB32_Premultiplied); + QImage reflection(reflection_rect.size(), + QImage::Format_ARGB32_Premultiplied); reflection.fill(palette().color(QPalette::Background).rgba()); QPainter p(&reflection); @@ -80,7 +79,8 @@ void FreeSpaceBar::paintEvent(QPaintEvent*) { DrawBar(&p, QRect(QPoint(0, 0), reflection.size())); // Make it fade out towards the bottom - QLinearGradient fade_gradient(reflection.rect().topLeft(), reflection.rect().bottomLeft()); + QLinearGradient fade_gradient(reflection.rect().topLeft(), + reflection.rect().bottomLeft()); fade_gradient.setColorAt(0.0, QColor(0, 0, 0, 0)); fade_gradient.setColorAt(1.0, QColor(0, 0, 0, 128)); @@ -125,10 +125,11 @@ void FreeSpaceBar::DrawBar(QPainter* p, const QRect& r) { if (additional_) { QRect additional_rect(bar_rect); additional_rect.setLeft(bar_rect.right()); - additional_rect.setWidth(float(r.width()) * ( - float(qMin(free_, additional_)) / total_) + 1); + additional_rect.setWidth( + float(r.width()) * (float(qMin(free_, additional_)) / total_) + 1); - QLinearGradient additional_gradient(additional_rect.topLeft(), additional_rect.bottomLeft()); + QLinearGradient additional_gradient(additional_rect.topLeft(), + additional_rect.bottomLeft()); additional_gradient.setColorAt(0, kColorAdd1); additional_gradient.setColorAt(1, kColorAdd2); @@ -148,7 +149,7 @@ void FreeSpaceBar::DrawBar(QPainter* p, const QRect& r) { p->setOpacity(0.35); p->setRenderHint(QPainter::Antialiasing, false); p->setPen(QPen(palette().color(QPalette::Light), 1.0)); - for (int x = r.left() + kMarkerSpacing ; x < r.right() ; x += kMarkerSpacing) { + for (int x = r.left() + kMarkerSpacing; x < r.right(); x += kMarkerSpacing) { p->drawLine(x, r.top() + 2, x, r.bottom() - 2); } @@ -170,26 +171,31 @@ void FreeSpaceBar::DrawText(QPainter* p, const QRect& r) { labels << Label(TextForSize(free_text_, free_ - additional_), kColorBg2); int text_width = 0; - foreach (const Label& label, labels) - text_width += kLabelBoxSize + kLabelBoxPadding + kLabelSpacing + small_metrics.width(label.text); + for (const Label& label : labels) { + text_width += kLabelBoxSize + kLabelBoxPadding + kLabelSpacing + + small_metrics.width(label.text); + } // Draw the text int x = (r.width() - text_width) / 2; p->setRenderHint(QPainter::Antialiasing, false); - foreach (const Label& label, labels) { + for (const Label& label : labels) { const bool light = palette().color(QPalette::Base).value() > 128; - QRect box(x, r.top() + (r.height() - kLabelBoxSize)/2, kLabelBoxSize, kLabelBoxSize); + QRect box(x, r.top() + (r.height() - kLabelBoxSize) / 2, kLabelBoxSize, + kLabelBoxSize); p->setPen(label.color.darker()); p->setBrush(label.color); p->drawRect(box); - QRect text(x + kLabelBoxSize + kLabelBoxPadding, r.top(), small_metrics.width(label.text), r.height()); + QRect text(x + kLabelBoxSize + kLabelBoxPadding, r.top(), + small_metrics.width(label.text), r.height()); p->setPen(light ? label.color.darker() : label.color); p->drawText(text, Qt::AlignCenter, label.text); - x += kLabelBoxSize + kLabelBoxPadding + kLabelSpacing + small_metrics.width(label.text); + x += kLabelBoxSize + kLabelBoxPadding + kLabelSpacing + + small_metrics.width(label.text); } } @@ -202,7 +208,6 @@ QString FreeSpaceBar::TextForSize(const QString& prefix, qint64 size) const { else ret = "0 MB"; - if (!prefix.isEmpty()) - ret.prepend(prefix + " "); + if (!prefix.isEmpty()) ret.prepend(prefix + " "); return ret; } diff --git a/src/widgets/freespacebar.h b/src/widgets/freespacebar.h index d1369b5b2..b328c6875 100644 --- a/src/widgets/freespacebar.h +++ b/src/widgets/freespacebar.h @@ -23,8 +23,8 @@ class FreeSpaceBar : public QWidget { Q_OBJECT -public: - FreeSpaceBar(QWidget* parent = 0); + public: + FreeSpaceBar(QWidget* parent = nullptr); static const int kBarHeight; static const int kBarBorderRadius; @@ -41,20 +41,38 @@ public: static const QRgb kColorBar2; static const QRgb kColorBorder; - void set_free_bytes(qint64 bytes) { free_ = bytes; update(); } - void set_additional_bytes(qint64 bytes) { additional_ = bytes; update(); } - void set_total_bytes(qint64 bytes) { total_ = bytes; update(); } + void set_free_bytes(qint64 bytes) { + free_ = bytes; + update(); + } + void set_additional_bytes(qint64 bytes) { + additional_ = bytes; + update(); + } + void set_total_bytes(qint64 bytes) { + total_ = bytes; + update(); + } - void set_free_text(const QString& text) { free_text_ = text; update(); } - void set_additional_text(const QString& text) { additional_text_ = text; update(); } - void set_used_text(const QString& text) { used_text_ = text; update(); } + void set_free_text(const QString& text) { + free_text_ = text; + update(); + } + void set_additional_text(const QString& text) { + additional_text_ = text; + update(); + } + void set_used_text(const QString& text) { + used_text_ = text; + update(); + } QSize sizeHint() const; -protected: + protected: void paintEvent(QPaintEvent*); -private: + private: struct Label { Label(const QString& t, const QColor& c) : text(t), color(c) {} @@ -67,7 +85,7 @@ private: void DrawBar(QPainter* p, const QRect& r); void DrawText(QPainter* p, const QRect& r); -private: + private: qint64 free_; qint64 additional_; qint64 total_; @@ -77,4 +95,4 @@ private: QString used_text_; }; -#endif // FREESPACEBAR_H +#endif // FREESPACEBAR_H diff --git a/src/widgets/fullscreenhypnotoad.cpp b/src/widgets/fullscreenhypnotoad.cpp index 371e2a561..7a7138b55 100644 --- a/src/widgets/fullscreenhypnotoad.cpp +++ b/src/widgets/fullscreenhypnotoad.cpp @@ -20,8 +20,7 @@ #include FullscreenHypnotoad::FullscreenHypnotoad() - : movie_(new QMovie(":/hypnotoad.gif")) -{ + : movie_(new QMovie(":/hypnotoad.gif")) { setMovie(movie_); setScaledContents(true); @@ -31,18 +30,10 @@ FullscreenHypnotoad::FullscreenHypnotoad() setPalette(p); } -void FullscreenHypnotoad::mouseReleaseEvent(QMouseEvent* e) { - hide(); -} +void FullscreenHypnotoad::mouseReleaseEvent(QMouseEvent* e) { hide(); } -void FullscreenHypnotoad::keyReleaseEvent(QKeyEvent* e) { - hide(); -} +void FullscreenHypnotoad::keyReleaseEvent(QKeyEvent* e) { hide(); } -void FullscreenHypnotoad::showEvent(QShowEvent*) { - movie_->start(); -} +void FullscreenHypnotoad::showEvent(QShowEvent*) { movie_->start(); } -void FullscreenHypnotoad::hideEvent(QHideEvent*) { - movie_->stop(); -} +void FullscreenHypnotoad::hideEvent(QHideEvent*) { movie_->stop(); } diff --git a/src/widgets/fullscreenhypnotoad.h b/src/widgets/fullscreenhypnotoad.h index 54f9c7756..a95bb1568 100644 --- a/src/widgets/fullscreenhypnotoad.h +++ b/src/widgets/fullscreenhypnotoad.h @@ -21,17 +21,17 @@ #include class FullscreenHypnotoad : public QLabel { -public: + public: FullscreenHypnotoad(); -protected: + protected: void keyReleaseEvent(QKeyEvent* e); void mouseReleaseEvent(QMouseEvent* e); void showEvent(QShowEvent* e); void hideEvent(QHideEvent* e); -private: + private: QMovie* movie_; }; -#endif // FULLSCREENHYPNOTOAD_H +#endif // FULLSCREENHYPNOTOAD_H diff --git a/src/widgets/groupediconview.cpp b/src/widgets/groupediconview.cpp index ab686a0b8..ba0fef26b 100644 --- a/src/widgets/groupediconview.cpp +++ b/src/widgets/groupediconview.cpp @@ -27,17 +27,15 @@ const int GroupedIconView::kBarThickness = 2; const int GroupedIconView::kBarMarginTop = 3; - GroupedIconView::GroupedIconView(QWidget* parent) - : QListView(parent), - proxy_model_(new MultiSortFilterProxy(this)), - default_header_height_(fontMetrics().height() + - kBarMarginTop + kBarThickness), - header_spacing_(10), - header_indent_(5), - item_indent_(10), - header_text_("%1") -{ + : QListView(parent), + proxy_model_(new MultiSortFilterProxy(this)), + default_header_height_(fontMetrics().height() + kBarMarginTop + + kBarThickness), + header_spacing_(10), + header_indent_(5), + item_indent_(10), + header_text_("%1") { setFlow(LeftToRight); setViewMode(IconMode); setResizeMode(Adjust); @@ -62,9 +60,7 @@ void GroupedIconView::setModel(QAbstractItemModel* model) { LayoutItems(); } -int GroupedIconView::header_height() const { - return default_header_height_; -} +int GroupedIconView::header_height() const { return default_header_height_; } void GroupedIconView::DrawHeader(QPainter* painter, const QRect& rect, const QFont& font, const QPalette& palette, @@ -78,8 +74,9 @@ void GroupedIconView::DrawHeader(QPainter* painter, const QRect& rect, QRect text_rect(rect); text_rect.setHeight(metrics.height()); - text_rect.moveTop(rect.top() + (rect.height() - text_rect.height() - - kBarThickness - kBarMarginTop) / 2); + text_rect.moveTop( + rect.top() + + (rect.height() - text_rect.height() - kBarThickness - kBarMarginTop) / 2); text_rect.setLeft(text_rect.left() + 3); // Draw text @@ -104,19 +101,20 @@ void GroupedIconView::resizeEvent(QResizeEvent* e) { LayoutItems(); } -void GroupedIconView::rowsInserted(const QModelIndex& parent, int start, int end) { +void GroupedIconView::rowsInserted(const QModelIndex& parent, int start, + int end) { QListView::rowsInserted(parent, start, end); LayoutItems(); } -void GroupedIconView::dataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight) { +void GroupedIconView::dataChanged(const QModelIndex& topLeft, + const QModelIndex& bottomRight) { QListView::dataChanged(topLeft, bottomRight); LayoutItems(); } void GroupedIconView::LayoutItems() { - if (!model()) - return; + if (!model()) return; const int count = model()->rowCount(); @@ -128,7 +126,7 @@ void GroupedIconView::LayoutItems() { visual_rects_.reserve(count); headers_.clear(); - for (int i=0 ; iindex(i, 0)); const QString group = index.data(Role_Group).toString(); const QSize size(rectForIndex(index).size()); @@ -152,7 +150,8 @@ void GroupedIconView::LayoutItems() { // Move the next item immediately below the header. next_position.setX(0); - next_position.setY(header.y + header_height() + header_indent_ + header_spacing_); + next_position.setY(header.y + header_height() + header_indent_ + + header_spacing_); max_row_height = 0; } @@ -165,7 +164,8 @@ void GroupedIconView::LayoutItems() { } // Should this item wrap? - if (next_position.x() != 0 && this_position.x() + size.width() >= viewport()->width()) { + if (next_position.x() != 0 && + this_position.x() + size.width() >= viewport()->width()) { next_position.setX(0); next_position.setY(next_position.y() + max_row_height); this_position = next_position; @@ -182,21 +182,22 @@ void GroupedIconView::LayoutItems() { max_row_height = qMax(max_row_height, size.height()); } - verticalScrollBar()->setRange(0, next_position.y() + max_row_height - viewport()->height()); + verticalScrollBar()->setRange( + 0, next_position.y() + max_row_height - viewport()->height()); update(); } QRect GroupedIconView::visualRect(const QModelIndex& index) const { - if (index.row() < 0 || index.row() >= visual_rects_.count()) - return QRect(); - return visual_rects_[index.row()].translated(-horizontalOffset(), -verticalOffset()); + if (index.row() < 0 || index.row() >= visual_rects_.count()) return QRect(); + return visual_rects_[index.row()].translated(-horizontalOffset(), + -verticalOffset()); } QModelIndex GroupedIconView::indexAt(const QPoint& p) const { const QPoint viewport_p = p + QPoint(horizontalOffset(), verticalOffset()); const int count = visual_rects_.count(); - for (int i=0 ; iindex(i, 0); } @@ -209,31 +210,33 @@ void GroupedIconView::paintEvent(QPaintEvent* e) { // visualRect() of items, and to draw headers. QStyleOptionViewItemV4 option(viewOptions()); - if (isWrapping()) - option.features = QStyleOptionViewItemV2::WrapText; + if (isWrapping()) option.features = QStyleOptionViewItemV2::WrapText; option.locale = locale(); option.locale.setNumberOptions(QLocale::OmitGroupSeparator); option.widget = this; QPainter painter(viewport()); - const QRect viewport_rect(e->rect().translated(horizontalOffset(), verticalOffset())); + const QRect viewport_rect( + e->rect().translated(horizontalOffset(), verticalOffset())); QVector toBeRendered = IntersectingItems(viewport_rect); const QModelIndex current = currentIndex(); - const QAbstractItemModel *itemModel = model(); - const QItemSelectionModel *selections = selectionModel(); - const bool focus = (hasFocus() || viewport()->hasFocus()) && current.isValid(); + const QAbstractItemModel* itemModel = model(); + const QItemSelectionModel* selections = selectionModel(); + const bool focus = + (hasFocus() || viewport()->hasFocus()) && current.isValid(); const QStyle::State state = option.state; const QAbstractItemView::State viewState = this->state(); const bool enabled = (state & QStyle::State_Enabled) != 0; int maxSize = (flow() == TopToBottom) - ? viewport()->size().width() - 2 * spacing() - : viewport()->size().height() - 2 * spacing(); + ? viewport()->size().width() - 2 * spacing() + : viewport()->size().height() - 2 * spacing(); QVector::const_iterator end = toBeRendered.constEnd(); - for (QVector::const_iterator it = toBeRendered.constBegin(); it != end; ++it) { + for (QVector::const_iterator it = toBeRendered.constBegin(); + it != end; ++it) { if (!it->isValid()) { continue; } @@ -260,18 +263,17 @@ void GroupedIconView::paintEvent(QPaintEvent* e) { } if (focus && current == *it) { option.state |= QStyle::State_HasFocus; - if (viewState == EditingState) - option.state |= QStyle::State_Editing; + if (viewState == EditingState) option.state |= QStyle::State_Editing; } itemDelegate()->paint(&painter, option, *it); } // Draw headers - foreach (const Header& header, headers_) { - const QRect header_rect = QRect( - header_indent_, header.y, - viewport()->width() - header_indent_ * 2, header_height()); + for (const Header& header : headers_) { + const QRect header_rect = + QRect(header_indent_, header.y, + viewport()->width() - header_indent_ * 2, header_height()); // Is this header contained in the area we're drawing? if (!header_rect.intersects(viewport_rect)) { @@ -281,28 +283,30 @@ void GroupedIconView::paintEvent(QPaintEvent* e) { // Draw the header DrawHeader(&painter, header_rect.translated(-horizontalOffset(), -verticalOffset()), - font(), - palette(), + font(), palette(), model()->index(header.first_row, 0).data(Role_Group).toString()); } } -void GroupedIconView::setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command) { - QVector indexes(IntersectingItems(rect.translated(horizontalOffset(), verticalOffset()))); +void GroupedIconView::setSelection( + const QRect& rect, QItemSelectionModel::SelectionFlags command) { + QVector indexes( + IntersectingItems(rect.translated(horizontalOffset(), verticalOffset()))); QItemSelection selection; - foreach (const QModelIndex& index, indexes) { + for (const QModelIndex& index : indexes) { selection << QItemSelectionRange(index); } selectionModel()->select(selection, command); } -QVector GroupedIconView::IntersectingItems(const QRect& rect) const { +QVector GroupedIconView::IntersectingItems(const QRect& rect) + const { QVector ret; const int count = visual_rects_.count(); - for (int i=0 ; iindex(i, 0)); } @@ -311,15 +315,17 @@ QVector GroupedIconView::IntersectingItems(const QRect& rect) const return ret; } -QRegion GroupedIconView::visualRegionForSelection(const QItemSelection& selection) const { +QRegion GroupedIconView::visualRegionForSelection( + const QItemSelection& selection) const { QRegion ret; - foreach (const QModelIndex& index, selection.indexes()) { + for (const QModelIndex& index : selection.indexes()) { ret += visual_rects_[index.row()]; } return ret; } -QModelIndex GroupedIconView::moveCursor(CursorAction action, Qt::KeyboardModifiers) { +QModelIndex GroupedIconView::moveCursor(CursorAction action, + Qt::KeyboardModifiers) { if (model()->rowCount() == 0) { return QModelIndex(); } @@ -330,16 +336,28 @@ QModelIndex GroupedIconView::moveCursor(CursorAction action, Qt::KeyboardModifie } switch (action) { - case MoveUp: ret = IndexAboveOrBelow(ret, -1); break; + case MoveUp: + ret = IndexAboveOrBelow(ret, -1); + break; case MovePrevious: - case MoveLeft: ret --; break; - case MoveDown: ret = IndexAboveOrBelow(ret, +1); break; + case MoveLeft: + ret--; + break; + case MoveDown: + ret = IndexAboveOrBelow(ret, +1); + break; case MoveNext: - case MoveRight: ret ++; break; + case MoveRight: + ret++; + break; case MovePageUp: - case MoveHome: ret = 0; break; + case MoveHome: + ret = 0; + break; case MovePageDown: - case MoveEnd: ret = model()->rowCount() - 1; break; + case MoveEnd: + ret = model()->rowCount() - 1; + break; } return model()->index(qBound(0, ret, model()->rowCount()), 0); @@ -353,8 +371,7 @@ int GroupedIconView::IndexAboveOrBelow(int index, int d) const { const QPoint center(rect.center()); if ((center.y() <= orig_rect.top() || center.y() >= orig_rect.bottom()) && - center.x() >= orig_rect.left() && - center.x() <= orig_rect.right()) { + center.x() >= orig_rect.left() && center.x() <= orig_rect.right()) { return index; } diff --git a/src/widgets/groupediconview.h b/src/widgets/groupediconview.h index 4af40430f..42e08bf1f 100644 --- a/src/widgets/groupediconview.h +++ b/src/widgets/groupediconview.h @@ -22,35 +22,34 @@ class MultiSortFilterProxy; - class GroupedIconView : public QListView { Q_OBJECT // Vertical space separating a header from the items above and below it. Q_PROPERTY(int header_spacing READ header_spacing WRITE set_header_spacing) - // Horizontal space separating a header from the left and right edges of the widget. + // Horizontal space separating a header from the left and right edges of the + // widget. Q_PROPERTY(int header_indent READ header_indent WRITE set_header_indent) - // Horizontal space separating an item from the left and right edges of the widget. + // Horizontal space separating an item from the left and right edges of the + // widget. Q_PROPERTY(int item_indent READ item_indent WRITE set_item_indent) // The text of each group's header. Must contain "%1". Q_PROPERTY(QString header_text READ header_text WRITE set_header_text); -public: - GroupedIconView(QWidget* parent = 0); + public: + GroupedIconView(QWidget* parent = nullptr); - enum Role { - Role_Group = 1158300, - }; + enum Role { Role_Group = 1158300, }; void AddSortSpec(int role, Qt::SortOrder order = Qt::AscendingOrder); int header_spacing() const { return header_spacing_; } int header_indent() const { return header_indent_; } int item_indent() const { return item_indent_; } - const QString& header_text() const { return header_text_;} + const QString& header_text() const { return header_text_; } void set_header_spacing(int value) { header_spacing_ = value; } void set_header_indent(int value) { header_indent_ = value; } @@ -65,7 +64,7 @@ public: const QFont& font, const QPalette& palette, const QString& text); -protected: + protected: virtual int header_height() const; // QWidget @@ -76,14 +75,15 @@ protected: void dataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight); QModelIndex indexAt(const QPoint& p) const; void rowsInserted(const QModelIndex& parent, int start, int end); - void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command); + void setSelection(const QRect& rect, + QItemSelectionModel::SelectionFlags command); QRect visualRect(const QModelIndex& index) const; QRegion visualRegionForSelection(const QItemSelection& selection) const; -private slots: + private slots: void LayoutItems(); -private: + private: static const int kBarThickness; static const int kBarMarginTop; @@ -110,4 +110,4 @@ private: QString header_text_; }; -#endif // GROUPEDICONVIEW_H +#endif // GROUPEDICONVIEW_H diff --git a/src/widgets/lineedit.cpp b/src/widgets/lineedit.cpp index 5d524a675..dfbeef65c 100644 --- a/src/widgets/lineedit.cpp +++ b/src/widgets/lineedit.cpp @@ -26,15 +26,14 @@ ExtendedEditor::ExtendedEditor(QWidget* widget, int extra_right_padding, bool draw_hint) - : LineEditInterface(widget), - has_clear_button_(true), - clear_button_(new QToolButton(widget)), - reset_button_(new QToolButton(widget)), - extra_right_padding_(extra_right_padding), - draw_hint_(draw_hint), - font_point_size_(widget->font().pointSizeF() - 1), - is_rtl_(false) -{ + : LineEditInterface(widget), + has_clear_button_(true), + clear_button_(new QToolButton(widget)), + reset_button_(new QToolButton(widget)), + extra_right_padding_(extra_right_padding), + draw_hint_(draw_hint), + font_point_size_(widget->font().pointSizeF() - 1), + is_rtl_(false) { clear_button_->setIcon(IconLoader::Load("edit-clear-locationbar-ltr")); clear_button_->setIconSize(QSize(16, 16)); clear_button_->setCursor(Qt::ArrowCursor); @@ -45,7 +44,8 @@ ExtendedEditor::ExtendedEditor(QWidget* widget, int extra_right_padding, QStyleOption opt; opt.initFrom(widget); - reset_button_->setIcon(widget->style()->standardIcon(QStyle::SP_DialogResetButton, &opt, widget)); + reset_button_->setIcon(widget->style()->standardIcon( + QStyle::SP_DialogResetButton, &opt, widget)); reset_button_->setIconSize(QSize(16, 16)); reset_button_->setCursor(Qt::ArrowCursor); reset_button_->setStyleSheet("QToolButton { border: none; padding: 0px; }"); @@ -80,19 +80,25 @@ void ExtendedEditor::set_reset_button(bool visible) { } void ExtendedEditor::UpdateButtonGeometry() { - const int frame_width = widget_->style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - const int left = frame_width + 1 + ( - has_clear_button() ? clear_button_->sizeHint().width() : 0); - const int right = frame_width + 1 + ( - has_reset_button() ? reset_button_->sizeHint().width() : 0); + const int frame_width = + widget_->style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + const int left = frame_width + 1 + + (has_clear_button() ? clear_button_->sizeHint().width() : 0); + const int right = + frame_width + 1 + + (has_reset_button() ? reset_button_->sizeHint().width() : 0); widget_->setStyleSheet( QString("QLineEdit { padding-left: %1px; padding-right: %2px; }") - .arg(left).arg(right)); + .arg(left) + .arg(right)); QSize msz = widget_->minimumSizeHint(); - widget_->setMinimumSize(msz.width() + (clear_button_->sizeHint().width() + frame_width + 1) * 2 + extra_right_padding_, - qMax(msz.height(), clear_button_->sizeHint().height() + frame_width * 2 + 2)); + widget_->setMinimumSize( + msz.width() + (clear_button_->sizeHint().width() + frame_width + 1) * 2 + + extra_right_padding_, + qMax(msz.height(), + clear_button_->sizeHint().height() + frame_width * 2 + 2)); } void ExtendedEditor::Paint(QPaintDevice* device) { @@ -103,7 +109,6 @@ void ExtendedEditor::Paint(QPaintDevice* device) { QPainter p(device); QFont font; - font.setItalic(true); font.setBold(false); font.setPointSizeF(font_point_size_); @@ -113,7 +118,7 @@ void ExtendedEditor::Paint(QPaintDevice* device) { p.setPen(widget_->palette().color(QPalette::Disabled, QPalette::Text)); p.setFont(font); - QRect r(5, kBorder, device->width() - 10, device->height() - kBorder*2); + QRect r(5, kBorder, device->width() - 10, device->height() - kBorder * 2); p.drawText(r, Qt::AlignLeft | Qt::AlignVCenter, m.elidedText(hint_, Qt::ElideRight, r.width())); } @@ -124,23 +129,22 @@ void ExtendedEditor::Paint(QPaintDevice* device) { void ExtendedEditor::Resize() { const QSize sz = clear_button_->sizeHint(); - const int frame_width = widget_->style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + const int frame_width = + widget_->style()->pixelMetric(QStyle::PM_DefaultFrameWidth); const int y = (widget_->rect().height() - sz.height()) / 2; clear_button_->move(frame_width, y); if (!is_rtl_) { - reset_button_->move(widget_->width() - frame_width - sz.width() - extra_right_padding_, y); + reset_button_->move( + widget_->width() - frame_width - sz.width() - extra_right_padding_, y); } else { - reset_button_->move((has_clear_button() ? sz.width() + 4 : 0) + frame_width, y); + reset_button_->move((has_clear_button() ? sz.width() + 4 : 0) + frame_width, + y); } } - -LineEdit::LineEdit(QWidget* parent) - : QLineEdit(parent), - ExtendedEditor(this) -{ +LineEdit::LineEdit(QWidget* parent) : QLineEdit(parent), ExtendedEditor(this) { connect(reset_button_, SIGNAL(clicked()), SIGNAL(Reset())); connect(this, SIGNAL(textChanged(QString)), SLOT(text_changed(QString))); } @@ -150,7 +154,8 @@ void LineEdit::text_changed(const QString& text) { // Consider empty string as LTR set_rtl(false); } else { - // For some reason Qt will detect any text with LTR at the end as LTR, so instead + // For some reason Qt will detect any text with LTR at the end as LTR, so + // instead // compare only the first character set_rtl(QString(text.at(0)).isRightToLeft()); } @@ -167,13 +172,11 @@ void LineEdit::resizeEvent(QResizeEvent* e) { Resize(); } - TextEdit::TextEdit(QWidget* parent) - : QPlainTextEdit(parent), - ExtendedEditor(this) -{ + : QPlainTextEdit(parent), ExtendedEditor(this) { connect(reset_button_, SIGNAL(clicked()), SIGNAL(Reset())); - connect(this, SIGNAL(textChanged()), viewport(), SLOT(update())); // To clear the hint + connect(this, SIGNAL(textChanged()), viewport(), + SLOT(update())); // To clear the hint } void TextEdit::paintEvent(QPaintEvent* e) { @@ -186,11 +189,8 @@ void TextEdit::resizeEvent(QResizeEvent* e) { Resize(); } - SpinBox::SpinBox(QWidget* parent) - : QSpinBox(parent), - ExtendedEditor(this, 14, false) -{ + : QSpinBox(parent), ExtendedEditor(this, 14, false) { connect(reset_button_, SIGNAL(clicked()), SIGNAL(Reset())); } @@ -205,7 +205,6 @@ void SpinBox::resizeEvent(QResizeEvent* e) { } QString SpinBox::textFromValue(int val) const { - if (val <= 0 && !hint_.isEmpty()) - return "-"; + if (val <= 0 && !hint_.isEmpty()) return "-"; return QSpinBox::textFromValue(val); } diff --git a/src/widgets/lineedit.h b/src/widgets/lineedit.h index e730ae29d..f9765d628 100644 --- a/src/widgets/lineedit.h +++ b/src/widgets/lineedit.h @@ -27,7 +27,7 @@ class QToolButton; class LineEditInterface { -public: + public: LineEditInterface(QWidget* widget) : widget_(widget) {} QWidget* widget() const { return widget_; } @@ -45,13 +45,14 @@ public: virtual void set_enabled(bool enabled) = 0; -protected: + protected: QWidget* widget_; }; class ExtendedEditor : public LineEditInterface { -public: - ExtendedEditor(QWidget* widget, int extra_right_padding = 0, bool draw_hint = true); + public: + ExtendedEditor(QWidget* widget, int extra_right_padding = 0, + bool draw_hint = true); virtual ~ExtendedEditor() {} virtual bool is_empty() const { return text().isEmpty(); } @@ -69,14 +70,14 @@ public: qreal font_point_size() const { return font_point_size_; } void set_font_point_size(qreal size) { font_point_size_ = size; } -protected: + protected: void Paint(QPaintDevice* device); void Resize(); -private: + private: void UpdateButtonGeometry(); -protected: + protected: QString hint_; bool has_clear_button_; @@ -89,16 +90,18 @@ protected: bool is_rtl_; }; -class LineEdit : public QLineEdit, - public ExtendedEditor { +class LineEdit : public QLineEdit, public ExtendedEditor { Q_OBJECT Q_PROPERTY(QString hint READ hint WRITE set_hint); - Q_PROPERTY(qreal font_point_size READ font_point_size WRITE set_font_point_size); - Q_PROPERTY(bool has_clear_button READ has_clear_button WRITE set_clear_button); - Q_PROPERTY(bool has_reset_button READ has_reset_button WRITE set_reset_button); + Q_PROPERTY(qreal font_point_size READ font_point_size WRITE + set_font_point_size); + Q_PROPERTY(bool has_clear_button READ has_clear_button WRITE + set_clear_button); + Q_PROPERTY(bool has_reset_button READ has_reset_button WRITE + set_reset_button); -public: - LineEdit(QWidget* parent = 0); + public: + LineEdit(QWidget* parent = nullptr); // ExtendedEditor void set_focus() { QLineEdit::setFocus(); } @@ -106,30 +109,31 @@ public: void set_text(const QString& text) { QLineEdit::setText(text); } void set_enabled(bool enabled) { QLineEdit::setEnabled(enabled); } -protected: + protected: void paintEvent(QPaintEvent*); void resizeEvent(QResizeEvent*); -private: + private: bool is_rtl() const { return is_rtl_; } void set_rtl(bool rtl) { is_rtl_ = rtl; } -private slots: + private slots: void text_changed(const QString& text); signals: void Reset(); }; -class TextEdit : public QPlainTextEdit, - public ExtendedEditor { +class TextEdit : public QPlainTextEdit, public ExtendedEditor { Q_OBJECT Q_PROPERTY(QString hint READ hint WRITE set_hint); - Q_PROPERTY(bool has_clear_button READ has_clear_button WRITE set_clear_button); - Q_PROPERTY(bool has_reset_button READ has_reset_button WRITE set_reset_button); + Q_PROPERTY(bool has_clear_button READ has_clear_button WRITE + set_clear_button); + Q_PROPERTY(bool has_reset_button READ has_reset_button WRITE + set_reset_button); -public: - TextEdit(QWidget* parent = 0); + public: + TextEdit(QWidget* parent = nullptr); // ExtendedEditor void set_focus() { QPlainTextEdit::setFocus(); } @@ -137,7 +141,7 @@ public: void set_text(const QString& text) { QPlainTextEdit::setPlainText(text); } void set_enabled(bool enabled) { QPlainTextEdit::setEnabled(enabled); } -protected: + protected: void paintEvent(QPaintEvent*); void resizeEvent(QResizeEvent*); @@ -145,15 +149,16 @@ signals: void Reset(); }; -class SpinBox : public QSpinBox, - public ExtendedEditor { +class SpinBox : public QSpinBox, public ExtendedEditor { Q_OBJECT Q_PROPERTY(QString hint READ hint WRITE set_hint); - Q_PROPERTY(bool has_clear_button READ has_clear_button WRITE set_clear_button); - Q_PROPERTY(bool has_reset_button READ has_reset_button WRITE set_reset_button); + Q_PROPERTY(bool has_clear_button READ has_clear_button WRITE + set_clear_button); + Q_PROPERTY(bool has_reset_button READ has_reset_button WRITE + set_reset_button); -public: - SpinBox(QWidget* parent = 0); + public: + SpinBox(QWidget* parent = nullptr); // QSpinBox QString textFromValue(int val) const; @@ -165,7 +170,7 @@ public: void set_text(const QString& text) { QSpinBox::setValue(text.toInt()); } void set_enabled(bool enabled) { QSpinBox::setEnabled(enabled); } -protected: + protected: void paintEvent(QPaintEvent*); void resizeEvent(QResizeEvent*); @@ -173,4 +178,4 @@ signals: void Reset(); }; -#endif // LINEEDIT_H +#endif // LINEEDIT_H diff --git a/src/widgets/linetextedit.cpp b/src/widgets/linetextedit.cpp index 119161e57..c974ae17e 100644 --- a/src/widgets/linetextedit.cpp +++ b/src/widgets/linetextedit.cpp @@ -19,9 +19,7 @@ #include -LineTextEdit::LineTextEdit(QWidget *parent) - : QTextEdit(parent) -{ +LineTextEdit::LineTextEdit(QWidget* parent) : QTextEdit(parent) { setWordWrapMode(QTextOption::NoWrap); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); @@ -39,13 +37,10 @@ QSize LineTextEdit::sizeHint() const { return QSize(w, h); } -QSize LineTextEdit::minimumSizeHint() const { - return sizeHint(); -} +QSize LineTextEdit::minimumSizeHint() const { return sizeHint(); } void LineTextEdit::keyPressEvent(QKeyEvent* e) { - if (e->key() == Qt::Key_Enter || - e->key() == Qt::Key_Return) { + if (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return) { e->ignore(); } else { QTextEdit::keyPressEvent(e); diff --git a/src/widgets/linetextedit.h b/src/widgets/linetextedit.h index 004912375..00ba03e14 100644 --- a/src/widgets/linetextedit.h +++ b/src/widgets/linetextedit.h @@ -23,14 +23,14 @@ class LineTextEdit : public QTextEdit { Q_OBJECT -public: - LineTextEdit(QWidget* parent = 0); + public: + LineTextEdit(QWidget* parent = nullptr); QSize sizeHint() const; QSize minimumSizeHint() const; -protected: + protected: void keyPressEvent(QKeyEvent* e); }; -#endif // LINETEXTEDIT_H +#endif // LINETEXTEDIT_H diff --git a/src/widgets/loginstatewidget.cpp b/src/widgets/loginstatewidget.cpp index d302549af..5019fda76 100644 --- a/src/widgets/loginstatewidget.cpp +++ b/src/widgets/loginstatewidget.cpp @@ -25,10 +25,7 @@ #include LoginStateWidget::LoginStateWidget(QWidget* parent) - : QWidget(parent), - ui_(new Ui_LoginStateWidget), - state_(LoggedOut) -{ + : QWidget(parent), ui_(new Ui_LoginStateWidget), state_(LoggedOut) { ui_->setupUi(this); ui_->signed_in->hide(); ui_->expires->hide(); @@ -44,9 +41,7 @@ LoginStateWidget::LoginStateWidget(QWidget* parent) connect(ui_->sign_out, SIGNAL(clicked()), SLOT(Logout())); } -LoginStateWidget::~LoginStateWidget() { - delete ui_; -} +LoginStateWidget::~LoginStateWidget() { delete ui_; } void LoginStateWidget::Logout() { SetLoggedIn(LoggedOut); @@ -72,9 +67,10 @@ void LoginStateWidget::SetLoggedIn(State state, const QString& account_name) { if (account_name.isEmpty()) ui_->signed_in_label->setText("" + tr("You are signed in.") + ""); else - ui_->signed_in_label->setText(tr("You are signed in as %1.").arg("" + account_name + "")); + ui_->signed_in_label->setText( + tr("You are signed in as %1.").arg("" + account_name + "")); - foreach (QWidget* widget, credential_groups_) { + for (QWidget* widget : credential_groups_) { widget->setVisible(state != LoggedIn); widget->setEnabled(state != LoginInProgress); } @@ -139,7 +135,7 @@ void LoginStateWidget::SetExpires(const QDate& expires) { if (expires.isValid()) { const QString expires_text = expires.toString(Qt::SystemLocaleLongDate); - ui_->expires_label->setText(tr("Expires on %1").arg("" + expires_text + "")); + ui_->expires_label->setText( + tr("Expires on %1").arg("" + expires_text + "")); } } - diff --git a/src/widgets/loginstatewidget.h b/src/widgets/loginstatewidget.h index 71dc0912f..64d3e3018 100644 --- a/src/widgets/loginstatewidget.h +++ b/src/widgets/loginstatewidget.h @@ -26,15 +26,11 @@ class Ui_LoginStateWidget; class LoginStateWidget : public QWidget { Q_OBJECT -public: - LoginStateWidget(QWidget* parent = 0); + public: + LoginStateWidget(QWidget* parent = nullptr); ~LoginStateWidget(); - enum State { - LoggedIn, - LoginInProgress, - LoggedOut - }; + enum State { LoggedIn, LoginInProgress, LoggedOut }; // Installs an event handler on the field so that pressing enter will emit // LoginClicked() instead of doing the default action (closing the dialog). @@ -47,7 +43,7 @@ public: // QObject bool eventFilter(QObject* object, QEvent* event); -public slots: + public slots: // Changes the "You are logged in/out" label, shows/hides any QGroupBoxes // added with AddCredentialGroup. void SetLoggedIn(State state, const QString& account_name = QString::null); @@ -64,11 +60,11 @@ signals: void LogoutClicked(); void LoginClicked(); -private slots: + private slots: void Logout(); void FocusLastCredentialField(); -private: + private: Ui_LoginStateWidget* ui_; State state_; @@ -77,4 +73,4 @@ private: QList credential_groups_; }; -#endif // LOGINSTATEWIDGET_H +#endif // LOGINSTATEWIDGET_H diff --git a/src/widgets/multiloadingindicator.cpp b/src/widgets/multiloadingindicator.cpp index cf91b92b2..1f40df53e 100644 --- a/src/widgets/multiloadingindicator.cpp +++ b/src/widgets/multiloadingindicator.cpp @@ -26,17 +26,17 @@ const int MultiLoadingIndicator::kVerticalPadding = 4; const int MultiLoadingIndicator::kHorizontalPadding = 6; const int MultiLoadingIndicator::kSpacing = 6; -MultiLoadingIndicator::MultiLoadingIndicator(QWidget *parent) - : QWidget(parent), - spinner_(new BusyIndicator(this)) -{ +MultiLoadingIndicator::MultiLoadingIndicator(QWidget* parent) + : QWidget(parent), spinner_(new BusyIndicator(this)) { spinner_->move(kHorizontalPadding, kVerticalPadding); setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); } QSize MultiLoadingIndicator::sizeHint() const { - const int width = kHorizontalPadding*2 + spinner_->sizeHint().width() + kSpacing + fontMetrics().width(text_); - const int height = kVerticalPadding*2 + qMax(spinner_->sizeHint().height(), fontMetrics().height()); + const int width = kHorizontalPadding * 2 + spinner_->sizeHint().width() + + kSpacing + fontMetrics().width(text_); + const int height = kVerticalPadding * 2 + qMax(spinner_->sizeHint().height(), + fontMetrics().height()); return QSize(width, height); } @@ -50,7 +50,7 @@ void MultiLoadingIndicator::UpdateText() { QList tasks = task_manager_->GetTasks(); QStringList strings; - foreach (const TaskManager::Task& task, tasks) { + for (const TaskManager::Task& task : tasks) { QString task_text(task.name); task_text[0] = task_text[0].toLower(); @@ -77,10 +77,11 @@ void MultiLoadingIndicator::paintEvent(QPaintEvent*) { QPainter p(this); const QRect text_rect( - kHorizontalPadding + spinner_->sizeHint().width() + kSpacing, - kVerticalPadding, - width() - kHorizontalPadding*2 - spinner_->sizeHint().width() - kSpacing, - height() - kVerticalPadding*2); - p.drawText(text_rect, Qt::TextSingleLine | Qt::AlignLeft, - fontMetrics().elidedText(text_, Qt::ElideRight, text_rect.width())); + kHorizontalPadding + spinner_->sizeHint().width() + kSpacing, + kVerticalPadding, width() - kHorizontalPadding * 2 - + spinner_->sizeHint().width() - kSpacing, + height() - kVerticalPadding * 2); + p.drawText( + text_rect, Qt::TextSingleLine | Qt::AlignLeft, + fontMetrics().elidedText(text_, Qt::ElideRight, text_rect.width())); } diff --git a/src/widgets/multiloadingindicator.h b/src/widgets/multiloadingindicator.h index 9dc918bf4..0fa29ef56 100644 --- a/src/widgets/multiloadingindicator.h +++ b/src/widgets/multiloadingindicator.h @@ -26,8 +26,8 @@ class TaskManager; class MultiLoadingIndicator : public QWidget { Q_OBJECT -public: - MultiLoadingIndicator(QWidget* parent = 0); + public: + MultiLoadingIndicator(QWidget* parent = nullptr); static const int kVerticalPadding; static const int kHorizontalPadding; @@ -40,17 +40,17 @@ public: signals: void TaskCountChange(int tasks); -protected: + protected: void paintEvent(QPaintEvent*); -private slots: + private slots: void UpdateText(); -private: + private: TaskManager* task_manager_; BusyIndicator* spinner_; QString text_; }; -#endif // MULTILOADINGINDICATOR_H +#endif // MULTILOADINGINDICATOR_H diff --git a/src/widgets/nowplayingwidget.cpp b/src/widgets/nowplayingwidget.cpp index 13d62e861..2bafca87a 100644 --- a/src/widgets/nowplayingwidget.cpp +++ b/src/widgets/nowplayingwidget.cpp @@ -57,31 +57,30 @@ const int NowPlayingWidget::kBottomOffset = 0; // Border for large mode const int NowPlayingWidget::kTopBorder = 4; - NowPlayingWidget::NowPlayingWidget(QWidget* parent) - : QWidget(parent), - app_(NULL), - album_cover_choice_controller_(new AlbumCoverChoiceController(this)), - mode_(SmallSongDetails), - menu_(new QMenu(this)), - above_statusbar_action_(NULL), - visible_(false), - small_ideal_height_(0), - show_hide_animation_(new QTimeLine(500, this)), - fade_animation_(new QTimeLine(1000, this)), - details_(new QTextDocument(this)), - previous_track_opacity_(0.0), - bask_in_his_glory_action_(NULL), - downloading_covers_(false), - aww_(false), - kittens_(NULL), - pending_kitten_(0) -{ + : QWidget(parent), + app_(nullptr), + album_cover_choice_controller_(new AlbumCoverChoiceController(this)), + mode_(SmallSongDetails), + menu_(new QMenu(this)), + above_statusbar_action_(nullptr), + visible_(false), + small_ideal_height_(0), + show_hide_animation_(new QTimeLine(500, this)), + fade_animation_(new QTimeLine(1000, this)), + details_(new QTextDocument(this)), + previous_track_opacity_(0.0), + bask_in_his_glory_action_(nullptr), + downloading_covers_(false), + aww_(false), + kittens_(nullptr), + pending_kitten_(0) { // Load settings QSettings s; s.beginGroup(kSettingsGroup); mode_ = Mode(s.value("mode", SmallSongDetails).toInt()); - album_cover_choice_controller_->search_cover_auto_action()->setChecked(s.value("search_for_cover_auto", false).toBool()); + album_cover_choice_controller_->search_cover_auto_action()->setChecked( + s.value("search_for_cover_auto", false).toBool()); // Accept drops for setting album art setAcceptDrops(true); @@ -90,8 +89,10 @@ NowPlayingWidget::NowPlayingWidget(QWidget* parent) QActionGroup* mode_group = new QActionGroup(this); QSignalMapper* mode_mapper = new QSignalMapper(this); connect(mode_mapper, SIGNAL(mapped(int)), SLOT(SetMode(int))); - CreateModeAction(SmallSongDetails, tr("Small album cover"), mode_group, mode_mapper); - CreateModeAction(LargeSongDetails, tr("Large album cover"), mode_group, mode_mapper); + CreateModeAction(SmallSongDetails, tr("Small album cover"), mode_group, + mode_mapper); + CreateModeAction(LargeSongDetails, tr("Large album cover"), mode_group, + mode_mapper); menu_->addActions(mode_group->actions()); menu_->addSeparator(); @@ -121,19 +122,24 @@ NowPlayingWidget::NowPlayingWidget(QWidget* parent) above_statusbar_action_ = menu_->addAction(tr("Show above status bar")); above_statusbar_action_->setCheckable(true); - connect(above_statusbar_action_, SIGNAL(toggled(bool)), SLOT(ShowAboveStatusBar(bool))); - above_statusbar_action_->setChecked(s.value("above_status_bar", false).toBool()); + connect(above_statusbar_action_, SIGNAL(toggled(bool)), + SLOT(ShowAboveStatusBar(bool))); + above_statusbar_action_->setChecked( + s.value("above_status_bar", false).toBool()); - bask_in_his_glory_action_ = menu_->addAction(tr("ALL GLORY TO THE HYPNOTOAD")); + bask_in_his_glory_action_ = + menu_->addAction(tr("ALL GLORY TO THE HYPNOTOAD")); bask_in_his_glory_action_->setVisible(false); connect(bask_in_his_glory_action_, SIGNAL(triggered()), SLOT(Bask())); // Animations - connect(show_hide_animation_, SIGNAL(frameChanged(int)), SLOT(SetHeight(int))); + connect(show_hide_animation_, SIGNAL(frameChanged(int)), + SLOT(SetHeight(int))); setMaximumHeight(0); - connect(fade_animation_, SIGNAL(valueChanged(qreal)), SLOT(FadePreviousTrack(qreal))); - fade_animation_->setDirection(QTimeLine::Backward); // 1.0 -> 0.0 + connect(fade_animation_, SIGNAL(valueChanged(qreal)), + SLOT(FadePreviousTrack(qreal))); + fade_animation_->setDirection(QTimeLine::Backward); // 1.0 -> 0.0 UpdateHeight(); @@ -141,25 +147,25 @@ NowPlayingWidget::NowPlayingWidget(QWidget* parent) this, SLOT(AutomaticCoverSearchDone())); } -NowPlayingWidget::~NowPlayingWidget() { -} +NowPlayingWidget::~NowPlayingWidget() {} void NowPlayingWidget::SetApplication(Application* app) { app_ = app; album_cover_choice_controller_->SetApplication(app_); - connect(app_->current_art_loader(), SIGNAL(ArtLoaded(Song,QString,QImage)), - SLOT(AlbumArtLoaded(Song,QString,QImage))); + connect(app_->current_art_loader(), SIGNAL(ArtLoaded(Song, QString, QImage)), + SLOT(AlbumArtLoaded(Song, QString, QImage))); } -void NowPlayingWidget::CreateModeAction(Mode mode, const QString &text, QActionGroup *group, QSignalMapper* mapper) { +void NowPlayingWidget::CreateModeAction(Mode mode, const QString& text, + QActionGroup* group, + QSignalMapper* mapper) { QAction* action = new QAction(text, group); action->setCheckable(true); mapper->setMapping(action, mode); connect(action, SIGNAL(triggered()), mapper, SLOT(map())); - if (mode == mode_) - action->setChecked(true); + if (mode == mode_) action->setChecked(true); } void NowPlayingWidget::set_ideal_height(int height) { @@ -173,15 +179,16 @@ QSize NowPlayingWidget::sizeHint() const { void NowPlayingWidget::UpdateHeight() { switch (mode_) { - case SmallSongDetails: - cover_loader_options_.desired_height_ = small_ideal_height_; - total_height_ = small_ideal_height_; - break; + case SmallSongDetails: + cover_loader_options_.desired_height_ = small_ideal_height_; + total_height_ = small_ideal_height_; + break; - case LargeSongDetails: - cover_loader_options_.desired_height_ = qMin(kMaxCoverSize, width()); - total_height_ = kTopBorder + cover_loader_options_.desired_height_ + kBottomOffset; - break; + case LargeSongDetails: + cover_loader_options_.desired_height_ = qMin(kMaxCoverSize, width()); + total_height_ = + kTopBorder + cover_loader_options_.desired_height_ + kBottomOffset; + break; } // Update the animation settings and resize the widget now if we're visible @@ -198,9 +205,7 @@ void NowPlayingWidget::UpdateHeight() { updateGeometry(); } -void NowPlayingWidget::Stopped() { - SetVisible(false); -} +void NowPlayingWidget::Stopped() { SetVisible(false); } void NowPlayingWidget::UpdateDetailsText() { QString html; @@ -214,7 +219,8 @@ void NowPlayingWidget::UpdateDetailsText() { case LargeSongDetails: details_->setTextWidth(cover_loader_options_.desired_height_); - details_->setDefaultStyleSheet("p {" + details_->setDefaultStyleSheet( + "p {" " font-size: small;" " color: white;" "}"); @@ -233,7 +239,7 @@ void NowPlayingWidget::UpdateDetailsText() { void NowPlayingWidget::ScaleCover() { cover_ = QPixmap::fromImage( - AlbumCoverLoader::ScaleAndPad(cover_loader_options_, original_)); + AlbumCoverLoader::ScaleAndPad(cover_loader_options_, original_)); update(); } @@ -249,7 +255,8 @@ void NowPlayingWidget::AlbumArtLoaded(const Song& metadata, const QString& uri, downloading_covers_ = false; if (aww_) { - pending_kitten_ = kittens_->LoadKitten(app_->current_art_loader()->options()); + pending_kitten_ = + kittens_->LoadKitten(app_->current_art_loader()->options()); return; } @@ -282,20 +289,18 @@ void NowPlayingWidget::SetImage(const QImage& image) { } } -void NowPlayingWidget::SetHeight(int height) { - setMaximumHeight(height); -} +void NowPlayingWidget::SetHeight(int height) { setMaximumHeight(height); } void NowPlayingWidget::SetVisible(bool visible) { - if (visible == visible_) - return; + if (visible == visible_) return; visible_ = visible; - show_hide_animation_->setDirection(visible ? QTimeLine::Forward : QTimeLine::Backward); + show_hide_animation_->setDirection(visible ? QTimeLine::Forward + : QTimeLine::Backward); show_hide_animation_->start(); } -void NowPlayingWidget::paintEvent(QPaintEvent *e) { +void NowPlayingWidget::paintEvent(QPaintEvent* e) { QPainter p(this); DrawContents(&p); @@ -307,60 +312,66 @@ void NowPlayingWidget::paintEvent(QPaintEvent *e) { } } -void NowPlayingWidget::DrawContents(QPainter *p) { +void NowPlayingWidget::DrawContents(QPainter* p) { switch (mode_) { - case SmallSongDetails: - if (hypnotoad_) { - p->drawPixmap(0, 0, small_ideal_height_, small_ideal_height_, hypnotoad_->currentPixmap()); - } else { + case SmallSongDetails: + if (hypnotoad_) { + p->drawPixmap(0, 0, small_ideal_height_, small_ideal_height_, + hypnotoad_->currentPixmap()); + } else { + // Draw the cover + p->drawPixmap(0, 0, small_ideal_height_, small_ideal_height_, cover_); + if (downloading_covers_) { + p->drawPixmap(small_ideal_height_ - 18, 6, 16, 16, + spinner_animation_->currentPixmap()); + } + } + + // Draw the details + p->translate(small_ideal_height_ + kPadding, 0); + details_->drawContents(p); + p->translate(-small_ideal_height_ - kPadding, 0); + break; + + case LargeSongDetails: + const int total_size = qMin(kMaxCoverSize, width()); + const int x_offset = + (width() - cover_loader_options_.desired_height_) / 2; + + // Draw the black background + p->fillRect(QRect(0, kTopBorder, width(), height() - kTopBorder), + Qt::black); + // Draw the cover - p->drawPixmap(0, 0, small_ideal_height_, small_ideal_height_, cover_); - if (downloading_covers_) { - p->drawPixmap(small_ideal_height_ - 18, 6, 16, 16, spinner_animation_->currentPixmap()); + if (hypnotoad_) { + p->drawPixmap(x_offset, kTopBorder, total_size, total_size, + hypnotoad_->currentPixmap()); + } else { + p->drawPixmap(x_offset, kTopBorder, total_size, total_size, cover_); + if (downloading_covers_) { + p->drawPixmap(x_offset + 45, 35, 16, 16, + spinner_animation_->currentPixmap()); + } } - } - // Draw the details - p->translate(small_ideal_height_ + kPadding, 0); - details_->drawContents(p); - p->translate(-small_ideal_height_ - kPadding, 0); - break; + // Work out how high the text is going to be + const int text_height = details_->size().height(); + const int gradient_mid = height() - qMax(text_height, kBottomOffset); - case LargeSongDetails: - const int total_size = qMin(kMaxCoverSize, width()); - const int x_offset = (width() - cover_loader_options_.desired_height_) / 2; + // Draw the black fade + QLinearGradient gradient(0, gradient_mid - kGradientHead, 0, + gradient_mid + kGradientTail); + gradient.setColorAt(0, QColor(0, 0, 0, 0)); + gradient.setColorAt(1, QColor(0, 0, 0, 255)); - // Draw the black background - p->fillRect(QRect(0, kTopBorder, width(), height() - kTopBorder), Qt::black); + p->fillRect(0, gradient_mid - kGradientHead, width(), + height() - (gradient_mid - kGradientHead), gradient); - // Draw the cover - if (hypnotoad_) { - p->drawPixmap(x_offset, kTopBorder, total_size, total_size, hypnotoad_->currentPixmap()); - } else { - p->drawPixmap(x_offset, kTopBorder, total_size, total_size, cover_); - if (downloading_covers_) { - p->drawPixmap(total_size - 31, 40, 16, 16, spinner_animation_->currentPixmap()); - } - } - - // Work out how high the text is going to be - const int text_height = details_->size().height(); - const int gradient_mid = height() - qMax(text_height, kBottomOffset); - - // Draw the black fade - QLinearGradient gradient(0, gradient_mid - kGradientHead, - 0, gradient_mid + kGradientTail); - gradient.setColorAt(0, QColor(0, 0, 0, 0)); - gradient.setColorAt(1, QColor(0, 0, 0, 255)); - - p->fillRect(0, gradient_mid - kGradientHead, - width(), height() - (gradient_mid - kGradientHead), gradient); - - // Draw the text on top - p->translate(x_offset, height() - text_height); - details_->drawContents(p); - p->translate(-x_offset, -height() + text_height); - break; + // Draw the text on top + p->translate(x_offset, height() - text_height); + details_->drawContents(p); + p->translate(-x_offset, -height() + text_height); + break; } } @@ -396,17 +407,20 @@ void NowPlayingWidget::contextMenuEvent(QContextMenuEvent* e) { album_cover_choice_controller_->cover_from_file_action()->setEnabled(!aww_); album_cover_choice_controller_->cover_from_url_action()->setEnabled(!aww_); album_cover_choice_controller_->search_for_cover_action()->setEnabled( - !aww_ && app_->cover_providers()->HasAnyProviders()); + !aww_ && app_->cover_providers()->HasAnyProviders()); album_cover_choice_controller_->unset_cover_action()->setEnabled(!aww_); album_cover_choice_controller_->show_cover_action()->setEnabled(!aww_); // some special cases if (!aww_) { - const bool art_is_not_set = metadata_.has_manually_unset_cover() - || (metadata_.art_automatic().isEmpty() && metadata_.art_manual().isEmpty()); + const bool art_is_not_set = metadata_.has_manually_unset_cover() || + (metadata_.art_automatic().isEmpty() && + metadata_.art_manual().isEmpty()); - album_cover_choice_controller_->unset_cover_action()->setEnabled(!art_is_not_set); - album_cover_choice_controller_->show_cover_action()->setEnabled(!art_is_not_set); + album_cover_choice_controller_->unset_cover_action()->setEnabled( + !art_is_not_set); + album_cover_choice_controller_->show_cover_action()->setEnabled( + !art_is_not_set); } bask_in_his_glory_action_->setVisible(static_cast(hypnotoad_)); @@ -443,8 +457,10 @@ void NowPlayingWidget::EnableKittens(bool aww) { if (!kittens_ && aww) { kittens_ = new KittenLoader(this); app_->MoveToNewThread(kittens_); - connect(kittens_, SIGNAL(ImageLoaded(quint64,QImage)), SLOT(KittenLoaded(quint64,QImage))); - connect(kittens_, SIGNAL(ImageLoaded(quint64,QImage)), app_->network_remote(), SLOT(SendKitten(quint64,QImage))); + connect(kittens_, SIGNAL(ImageLoaded(quint64, QImage)), + SLOT(KittenLoaded(quint64, QImage))); + connect(kittens_, SIGNAL(ImageLoaded(quint64, QImage)), + app_->network_remote(), SLOT(SendKitten(quint64, QImage))); } aww_ = aww; @@ -477,7 +493,9 @@ void NowPlayingWidget::ShowCover() { void NowPlayingWidget::SearchCoverAutomatically() { QSettings s; s.beginGroup(kSettingsGroup); - s.setValue("search_for_cover_auto", album_cover_choice_controller_->search_cover_auto_action()->isChecked()); + s.setValue( + "search_for_cover_auto", + album_cover_choice_controller_->search_cover_auto_action()->isChecked()); // Search for cover automatically? GetCoverAutomatically(); @@ -504,10 +522,11 @@ void NowPlayingWidget::dropEvent(QDropEvent* e) { bool NowPlayingWidget::GetCoverAutomatically() { // Search for cover automatically? - bool search = album_cover_choice_controller_->search_cover_auto_action()->isChecked() && + bool search = + album_cover_choice_controller_->search_cover_auto_action()->isChecked() && !metadata_.has_manually_unset_cover() && - metadata_.art_automatic().isEmpty() && - metadata_.art_manual().isEmpty(); + metadata_.art_automatic().isEmpty() && metadata_.art_manual().isEmpty() && + !metadata_.artist().isEmpty() && !metadata_.album().isEmpty(); if (search) { qLog(Debug) << "GetCoverAutomatically"; @@ -516,7 +535,8 @@ bool NowPlayingWidget::GetCoverAutomatically() { // Show a spinner animation spinner_animation_.reset(new QMovie(":/spinner.gif", QByteArray(), this)); - connect(spinner_animation_.get(), SIGNAL(updated(const QRect&)), SLOT(update())); + connect(spinner_animation_.get(), SIGNAL(updated(const QRect&)), + SLOT(update())); spinner_animation_->start(); update(); } diff --git a/src/widgets/nowplayingwidget.h b/src/widgets/nowplayingwidget.h index b7dd4da1d..328dbc88e 100644 --- a/src/widgets/nowplayingwidget.h +++ b/src/widgets/nowplayingwidget.h @@ -18,12 +18,12 @@ #ifndef NOWPLAYINGWIDGET_H #define NOWPLAYINGWIDGET_H -#include "core/song.h" -#include "covers/albumcoverloaderoptions.h" +#include #include -#include +#include "core/song.h" +#include "covers/albumcoverloaderoptions.h" class AlbumCoverChoiceController; class Application; @@ -41,8 +41,8 @@ class QTimeLine; class NowPlayingWidget : public QWidget { Q_OBJECT -public: - NowPlayingWidget(QWidget* parent = 0); + public: + NowPlayingWidget(QWidget* parent = nullptr); ~NowPlayingWidget(); static const char* kSettingsGroup; @@ -54,10 +54,7 @@ public: static const int kTopBorder; // Values are saved in QSettings - enum Mode { - SmallSongDetails = 0, - LargeSongDetails = 1, - }; + enum Mode { SmallSongDetails = 0, LargeSongDetails = 1, }; void SetApplication(Application* app); @@ -69,23 +66,24 @@ public: signals: void ShowAboveStatusBarChanged(bool above); -public slots: + public slots: void Stopped(); void AllHail(bool hypnotoad); void EnableKittens(bool aww); -protected: + protected: void paintEvent(QPaintEvent* e); void resizeEvent(QResizeEvent*); void contextMenuEvent(QContextMenuEvent* e); void dragEnterEvent(QDragEnterEvent* e); void dropEvent(QDropEvent* e); -private slots: + private slots: void SetMode(int mode); void ShowAboveStatusBar(bool above); - void AlbumArtLoaded(const Song& metadata, const QString& uri, const QImage& image); + void AlbumArtLoaded(const Song& metadata, const QString& uri, + const QImage& image); void KittenLoaded(quint64 id, const QImage& image); void SetVisible(bool visible); @@ -105,7 +103,7 @@ private slots: void AutomaticCoverSearchDone(); -private: + private: void CreateModeAction(Mode mode, const QString& text, QActionGroup* group, QSignalMapper* mapper); void UpdateDetailsText(); @@ -115,7 +113,7 @@ private: void ScaleCover(); bool GetCoverAutomatically(); -private: + private: Application* app_; AlbumCoverChoiceController* album_cover_choice_controller_; @@ -145,10 +143,10 @@ private: static const char* kHypnotoadPath; QAction* bask_in_his_glory_action_; - boost::scoped_ptr hypnotoad_; - boost::scoped_ptr big_hypnotoad_; + std::unique_ptr hypnotoad_; + std::unique_ptr big_hypnotoad_; - boost::scoped_ptr spinner_animation_; + std::unique_ptr spinner_animation_; bool downloading_covers_; bool aww_; @@ -156,4 +154,4 @@ private: quint64 pending_kitten_; }; -#endif // NOWPLAYINGWIDGET_H +#endif // NOWPLAYINGWIDGET_H diff --git a/src/widgets/osd.cpp b/src/widgets/osd.cpp index c2dfe8b81..b64f8e0b4 100644 --- a/src/widgets/osd.cpp +++ b/src/widgets/osd.cpp @@ -24,7 +24,7 @@ #include "ui/systemtrayicon.h" #ifdef HAVE_DBUS -# include "dbus/notification.h" +#include "dbus/notification.h" #endif #include @@ -34,32 +34,30 @@ const char* OSD::kSettingsGroup = "OSD"; OSD::OSD(SystemTrayIcon* tray_icon, Application* app, QObject* parent) - : QObject(parent), - tray_icon_(tray_icon), - app_(app), - timeout_msec_(5000), - behaviour_(Native), - show_on_volume_change_(false), - show_art_(true), - show_on_play_mode_change_(true), - use_custom_text_(false), - custom_text1_(QString()), - custom_text2_(QString()), - preview_mode_(false), - force_show_next_(false), - ignore_next_stopped_(false), - pretty_popup_(new OSDPretty(OSDPretty::Mode_Popup)) -{ - connect(app_->current_art_loader(), SIGNAL(ThumbnailLoaded(Song,QString,QImage)), - SLOT(AlbumArtLoaded(Song,QString,QImage))); + : QObject(parent), + tray_icon_(tray_icon), + app_(app), + timeout_msec_(5000), + behaviour_(Native), + show_on_volume_change_(false), + show_art_(true), + show_on_play_mode_change_(true), + use_custom_text_(false), + custom_text1_(QString()), + custom_text2_(QString()), + preview_mode_(false), + force_show_next_(false), + ignore_next_stopped_(false), + pretty_popup_(new OSDPretty(OSDPretty::Mode_Popup)) { + connect(app_->current_art_loader(), + SIGNAL(ThumbnailLoaded(Song, QString, QImage)), + SLOT(AlbumArtLoaded(Song, QString, QImage))); ReloadSettings(); Init(); } -OSD::~OSD() { - delete pretty_popup_; -} +OSD::~OSD() { delete pretty_popup_; } void OSD::ReloadSettings() { QSettings s; @@ -75,8 +73,7 @@ void OSD::ReloadSettings() { if (!SupportsNativeNotifications() && behaviour_ == Native) behaviour_ = Pretty; - if (!SupportsTrayPopups() && behaviour_ == TrayPopup) - behaviour_ = Disabled; + if (!SupportsTrayPopups() && behaviour_ == TrayPopup) behaviour_ = Disabled; ReloadPrettyOSDSettings(); } @@ -92,7 +89,8 @@ void OSD::ReshowCurrentSong() { AlbumArtLoaded(last_song_, last_image_uri_, last_image_); } -void OSD::AlbumArtLoaded(const Song& song, const QString& uri, const QImage& image) { +void OSD::AlbumArtLoaded(const Song& song, const QString& uri, + const QImage& image) { // Don't change tray icon details if it's a preview if (!preview_mode_) { tray_icon_->SetNowPlaying(song, uri); @@ -108,12 +106,9 @@ void OSD::AlbumArtLoaded(const Song& song, const QString& uri, const QImage& ima summary = song.PrettyTitle(); if (!song.artist().isEmpty()) summary = QString("%1 - %2").arg(song.artist(), summary); - if (!song.album().isEmpty()) - message_parts << song.album(); - if (song.disc() > 0) - message_parts << tr("disc %1").arg(song.disc()); - if (song.track() > 0) - message_parts << tr("track %1").arg(song.track()); + if (!song.album().isEmpty()) message_parts << song.album(); + if (song.disc() > 0) message_parts << tr("disc %1").arg(song.disc()); + if (song.track() > 0) message_parts << tr("track %1").arg(song.track()); } else { QRegExp variable_replacer("[%][a-z]+[%]"); summary = custom_text1_; @@ -140,9 +135,11 @@ void OSD::AlbumArtLoaded(const Song& song, const QString& uri, const QImage& ima } if (show_art_) { - ShowMessage(summary, message_parts.join(", "), "notification-audio-play", image); + ShowMessage(summary, message_parts.join(", "), "notification-audio-play", + image); } else { - ShowMessage(summary, message_parts.join(", "), "notification-audio-play", QImage()); + ShowMessage(summary, message_parts.join(", "), "notification-audio-play", + QImage()); } // Reload the saved settings if they were changed for preview @@ -167,8 +164,9 @@ void OSD::Stopped() { } void OSD::StopAfterToggle(bool stop) { - ShowMessage(QCoreApplication::applicationName(), - tr("Stop playing after track: %1").arg(stop ? tr("On") : tr("Off"))); + ShowMessage( + QCoreApplication::applicationName(), + tr("Stop playing after track: %1").arg(stop ? tr("On") : tr("Off"))); } void OSD::PlaylistFinished() { @@ -179,8 +177,7 @@ void OSD::PlaylistFinished() { } void OSD::VolumeChanged(int value) { - if (!show_on_volume_change_) - return; + if (!show_on_volume_change_) return; ShowMessage(QCoreApplication::applicationName(), tr("Volume %1%").arg(value)); } @@ -196,39 +193,36 @@ void OSD::MagnatuneDownloadFinished(const QStringList& albums) { QImage(":/providers/magnatune.png")); } -void OSD::ShowMessage(const QString& summary, - const QString& message, - const QString& icon, - const QImage& image) { +void OSD::ShowMessage(const QString& summary, const QString& message, + const QString& icon, const QImage& image) { if (pretty_popup_->toggle_mode()) { pretty_popup_->ShowMessage(summary, message, image); } else { switch (behaviour_) { - case Native: - if (image.isNull()) { - ShowMessageNative(summary, message, icon, QImage()); - } else { - ShowMessageNative(summary, message, QString(), image); - } - break; + case Native: + if (image.isNull()) { + ShowMessageNative(summary, message, icon, QImage()); + } else { + ShowMessageNative(summary, message, QString(), image); + } + break; #ifndef Q_OS_DARWIN - case TrayPopup: - tray_icon_->ShowPopup(summary, message, timeout_msec_); - break; + case TrayPopup: + tray_icon_->ShowPopup(summary, message, timeout_msec_); + break; #endif - case Disabled: - if (!force_show_next_) - break; - force_show_next_ = false; + case Disabled: + if (!force_show_next_) break; + force_show_next_ = false; // fallthrough - case Pretty: - pretty_popup_->ShowMessage(summary, message, image); - break; + case Pretty: + pretty_popup_->ShowMessage(summary, message, image); + break; - default: - break; + default: + break; } } } @@ -240,33 +234,41 @@ void OSD::CallFinished(QDBusPendingCallWatcher*) {} #ifdef HAVE_WIIMOTEDEV void OSD::WiiremoteActived(int id) { - ShowMessage(QString(tr("%1: Wiimotedev module")).arg(QCoreApplication::applicationName()), + ShowMessage(QString(tr("%1: Wiimotedev module")) + .arg(QCoreApplication::applicationName()), tr("Wii Remote %1: actived").arg(QString::number(id))); } void OSD::WiiremoteDeactived(int id) { - ShowMessage(QString(tr("%1: Wiimotedev module")).arg(QCoreApplication::applicationName()), + ShowMessage(QString(tr("%1: Wiimotedev module")) + .arg(QCoreApplication::applicationName()), tr("Wii Remote %1: disactived").arg(QString::number(id))); } void OSD::WiiremoteConnected(int id) { - ShowMessage(QString(tr("%1: Wiimotedev module")).arg(QCoreApplication::applicationName()), + ShowMessage(QString(tr("%1: Wiimotedev module")) + .arg(QCoreApplication::applicationName()), tr("Wii Remote %1: connected").arg(QString::number(id))); } void OSD::WiiremoteDisconnected(int id) { - ShowMessage(QString(tr("%1: Wiimotedev module")).arg(QCoreApplication::applicationName()), + ShowMessage(QString(tr("%1: Wiimotedev module")) + .arg(QCoreApplication::applicationName()), tr("Wii Remote %1: disconnected").arg(QString::number(id))); } void OSD::WiiremoteLowBattery(int id, int live) { - ShowMessage(QString(tr("%1: Wiimotedev module")).arg(QCoreApplication::applicationName()), - tr("Wii Remote %1: low battery (%2%)").arg(QString::number(id), QString::number(live))); + ShowMessage(QString(tr("%1: Wiimotedev module")) + .arg(QCoreApplication::applicationName()), + tr("Wii Remote %1: low battery (%2%)") + .arg(QString::number(id), QString::number(live))); } void OSD::WiiremoteCriticalBattery(int id, int live) { - ShowMessage(QString(tr("%1: Wiimotedev module")).arg(QCoreApplication::applicationName()), - tr("Wii Remote %1: critical battery (%2%) ").arg(QString::number(id), QString::number(live))); + ShowMessage(QString(tr("%1: Wiimotedev module")) + .arg(QCoreApplication::applicationName()), + tr("Wii Remote %1: critical battery (%2%) ") + .arg(QString::number(id), QString::number(live))); } #endif @@ -275,10 +277,18 @@ void OSD::ShuffleModeChanged(PlaylistSequence::ShuffleMode mode) { if (show_on_play_mode_change_) { QString current_mode = QString(); switch (mode) { - case PlaylistSequence::Shuffle_Off: current_mode = tr("Don't shuffle"); break; - case PlaylistSequence::Shuffle_All: current_mode = tr("Shuffle all"); break; - case PlaylistSequence::Shuffle_InsideAlbum: current_mode = tr("Shuffle tracks in this album"); break; - case PlaylistSequence::Shuffle_Albums: current_mode = tr("Shuffle albums"); break; + case PlaylistSequence::Shuffle_Off: + current_mode = tr("Don't shuffle"); + break; + case PlaylistSequence::Shuffle_All: + current_mode = tr("Shuffle all"); + break; + case PlaylistSequence::Shuffle_InsideAlbum: + current_mode = tr("Shuffle tracks in this album"); + break; + case PlaylistSequence::Shuffle_Albums: + current_mode = tr("Shuffle albums"); + break; } ShowMessage(QCoreApplication::applicationName(), current_mode); } @@ -288,10 +298,18 @@ void OSD::RepeatModeChanged(PlaylistSequence::RepeatMode mode) { if (show_on_play_mode_change_) { QString current_mode = QString(); switch (mode) { - case PlaylistSequence::Repeat_Off: current_mode = tr("Don't repeat"); break; - case PlaylistSequence::Repeat_Track: current_mode = tr("Repeat track"); break; - case PlaylistSequence::Repeat_Album: current_mode = tr("Repeat album"); break; - case PlaylistSequence::Repeat_Playlist: current_mode = tr("Repeat playlist"); break; + case PlaylistSequence::Repeat_Off: + current_mode = tr("Don't repeat"); + break; + case PlaylistSequence::Repeat_Track: + current_mode = tr("Repeat track"); + break; + case PlaylistSequence::Repeat_Album: + current_mode = tr("Repeat album"); + break; + case PlaylistSequence::Repeat_Playlist: + current_mode = tr("Repeat playlist"); + break; } ShowMessage(QCoreApplication::applicationName(), current_mode); } @@ -345,7 +363,8 @@ QString OSD::ReplaceVariable(const QString& variable, const Song& song) { #endif #ifdef Q_OS_WIN32 // Other OS don't support native notifications - qLog(Debug) << "New line not supported by this notification type under Windows"; + qLog(Debug) + << "New line not supported by this notification type under Windows"; return ""; #endif case TrayPopup: @@ -358,18 +377,19 @@ QString OSD::ReplaceVariable(const QString& variable, const Song& song) { } } - //if the variable is not recognized, just return it + // if the variable is not recognized, just return it return variable; } -void OSD::ShowPreview(const Behaviour type, const QString& line1, const QString& line2, const Song& song) { +void OSD::ShowPreview(const Behaviour type, const QString& line1, + const QString& line2, const Song& song) { behaviour_ = type; custom_text1_ = line1; custom_text2_ = line2; - if (!use_custom_text_) - use_custom_text_ = true; + if (!use_custom_text_) use_custom_text_ = true; - // We want to reload the settings, but we can't do this here because the cover art loading is asynch + // We want to reload the settings, but we can't do this here because the cover + // art loading is asynch preview_mode_ = true; AlbumArtLoaded(song, QString(), QImage()); } diff --git a/src/widgets/osd.h b/src/widgets/osd.h index d7783e88a..f4f36962d 100644 --- a/src/widgets/osd.h +++ b/src/widgets/osd.h @@ -18,6 +18,8 @@ #ifndef OSD_H #define OSD_H +#include + #include #include #include @@ -35,28 +37,22 @@ class SystemTrayIcon; class QDBusPendingCallWatcher; #ifdef HAVE_DBUS -# include -# include +#include - QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image); - const QDBusArgument& operator>> (const QDBusArgument& arg, QImage& image); +QDBusArgument& operator<<(QDBusArgument& arg, const QImage& image); +const QDBusArgument& operator>>(const QDBusArgument& arg, QImage& image); #endif class OSD : public QObject { Q_OBJECT public: - OSD(SystemTrayIcon* tray_icon, Application* app, QObject* parent = 0); + OSD(SystemTrayIcon* tray_icon, Application* app, QObject* parent = nullptr); ~OSD(); static const char* kSettingsGroup; - enum Behaviour { - Disabled = 0, - Native, - TrayPopup, - Pretty, - }; + enum Behaviour { Disabled = 0, Native, TrayPopup, Pretty, }; // Implemented in the OS-specific files static bool SupportsNativeNotifications(); @@ -89,25 +85,25 @@ class OSD : public QObject { void WiiremoteCriticalBattery(int id, int live); #endif - void ShowPreview(const Behaviour type, const QString& line1, const QString& line2, const Song& song); + void ShowPreview(const Behaviour type, const QString& line1, + const QString& line2, const Song& song); private: - void ShowMessage(const QString& summary, - const QString& message = QString(), + void ShowMessage(const QString& summary, const QString& message = QString(), const QString& icon = QString(), const QImage& image = QImage()); // These are implemented in the OS-specific files void Init(); - void ShowMessageNative(const QString& summary, - const QString& message, + void ShowMessageNative(const QString& summary, const QString& message, const QString& icon = QString(), const QImage& image = QImage()); QString ReplaceVariable(const QString& variable, const Song& song); private slots: void CallFinished(QDBusPendingCallWatcher* watcher); - void AlbumArtLoaded(const Song& song, const QString& uri, const QImage& image); + void AlbumArtLoaded(const Song& song, const QString& uri, + const QImage& image); private: SystemTrayIcon* tray_icon_; @@ -131,16 +127,11 @@ class OSD : public QObject { QString last_image_uri_; QImage last_image_; -#ifdef Q_OS_DARWIN - class GrowlNotificationWrapper; - GrowlNotificationWrapper* wrapper_; -#endif // Q_OS_DARWIN - #ifdef HAVE_DBUS - boost::scoped_ptr interface_; + std::unique_ptr interface_; uint notification_id_; QDateTime last_notification_time_; #endif }; -#endif // OSD_H +#endif // OSD_H diff --git a/src/widgets/osd_mac.mm b/src/widgets/osd_mac.mm index 0147aca5d..d24b902c8 100644 --- a/src/widgets/osd_mac.mm +++ b/src/widgets/osd_mac.mm @@ -22,117 +22,8 @@ #include #include -#import - -#include "core/scoped_nsautorelease_pool.h" #include "core/scoped_nsobject.h" -@interface GrowlInterface : NSObject { -} -- (void)SendGrowlAlert:(NSString*)message - title:(NSString*)title - image:(NSData*)image; -- (void)ClickCallback; // Called when user clicks on notification. -@end - -@implementation GrowlInterface - -- (id)init { - if ((self = [super init])) { - [GrowlApplicationBridge setGrowlDelegate:self]; - } - return self; -} - -- (void)dealloc { - [super dealloc]; -} - -- (NSDictionary*)registrationDictionaryForGrowl { - NSArray* array = [NSArray - arrayWithObjects:@"next_track", nil]; // Valid notification names. - NSDictionary* dict = [NSDictionary - dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:1], @"TicketVersion", - array, @"AllNotifications", array, - @"DefaultNotifications", - @"com.davidsansome.clementine", - @"ApplicationId", nil]; - return dict; -} - -- (void)growlNotificationWasClicked:(id)clickContext { - if (clickContext) { - [self ClickCallback]; - } - return; -} - -- (void)SendGrowlAlert:(NSString*)message - title:(NSString*)title - image:(NSData*)image { - [GrowlApplicationBridge - notifyWithTitle:title - description:message - notificationName:@"next_track" - iconData:image - priority:0 - isSticky:NO - clickContext:@"click_callback"]; // String sent to our callback. -} - -- (void)ClickCallback { - qDebug() << "Growl notification clicked!"; - return; -} - -@end - -class OSD::GrowlNotificationWrapper { - public: - GrowlNotificationWrapper() { - growl_interface_ = [[GrowlInterface alloc] init]; - } - - ~GrowlNotificationWrapper() { [growl_interface_ release]; } - - void ShowMessage(const QString& summary, const QString& message, - const QImage& image) { - - NSString* mac_message = - [[NSString alloc] initWithUTF8String:message.toUtf8().constData()]; - NSString* mac_summary = - [[NSString alloc] initWithUTF8String:summary.toUtf8().constData()]; - - NSData* image_data = nil; - // Growl expects raw TIFF data. - // This is nasty but it keeps the API nice. - if (!image.isNull()) { - QByteArray tiff_data; - QBuffer tiff(&tiff_data); - image.save(&tiff, "TIFF"); - image_data = - [NSData dataWithBytes:tiff_data.constData() length:tiff_data.size()]; - } - - [growl_interface_ SendGrowlAlert:mac_message - title:mac_summary - image:image_data]; - - [mac_message release]; - [mac_summary release]; - } - - private: - GrowlInterface* growl_interface_; - ScopedNSAutoreleasePool pool_; -}; - -void OSD::Init() { wrapper_ = new GrowlNotificationWrapper; } - -bool OSD::SupportsNativeNotifications() { return true; } - -bool OSD::SupportsTrayPopups() { return false; } - namespace { bool NotificationCenterSupported() { @@ -152,17 +43,23 @@ void SendNotificationCenterMessage(NSString* title, NSString* subtitle) { } } +void OSD::Init() {} + +bool OSD::SupportsNativeNotifications() { + return NotificationCenterSupported(); +} + +bool OSD::SupportsTrayPopups() { return false; } + + void OSD::ShowMessageNative(const QString& summary, const QString& message, const QString& icon, const QImage& image) { Q_UNUSED(icon); - if (NotificationCenterSupported()) { scoped_nsobject mac_message( [[NSString alloc] initWithUTF8String:message.toUtf8().constData()]); scoped_nsobject mac_summary( [[NSString alloc] initWithUTF8String:summary.toUtf8().constData()]); SendNotificationCenterMessage(mac_summary.get(), mac_message.get()); - } else { - wrapper_->ShowMessage(summary, message, image); } } diff --git a/src/widgets/osd_win.cpp b/src/widgets/osd_win.cpp index ff7e86ab2..7b2ffe277 100644 --- a/src/widgets/osd_win.cpp +++ b/src/widgets/osd_win.cpp @@ -20,18 +20,13 @@ #include -void OSD::Init() { -} +void OSD::Init() {} -bool OSD::SupportsNativeNotifications() { - return false; -} +bool OSD::SupportsNativeNotifications() { return false; } -bool OSD::SupportsTrayPopups() { - return true; -} +bool OSD::SupportsTrayPopups() { return true; } -void OSD::ShowMessageNative(const QString&, const QString&, - const QString&, const QImage&) { +void OSD::ShowMessageNative(const QString&, const QString&, const QString&, + const QImage&) { qLog(Warning) << "not implemented"; } diff --git a/src/widgets/osd_x11.cpp b/src/widgets/osd_x11.cpp index afe8e0db1..a79bc841c 100644 --- a/src/widgets/osd_x11.cpp +++ b/src/widgets/osd_x11.cpp @@ -15,20 +15,21 @@ along with Clementine. If not, see . */ -#include "config.h" #include "osd.h" -#include "core/logging.h" + +#include #include +#include "config.h" +#include "core/logging.h" + #ifdef HAVE_DBUS #include "dbus/notification.h" #include #include -using boost::scoped_ptr; - -QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image) { +QDBusArgument& operator<<(QDBusArgument& arg, const QImage& image) { if (image.isNull()) { // Sometimes this gets called with a null QImage for no obvious reason. arg.beginStructure(); @@ -46,8 +47,8 @@ QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image) { // ABGR -> GBAR QImage i(scaled.size(), scaled.format()); for (int y = 0; y < i.height(); ++y) { - QRgb* p = (QRgb*) scaled.scanLine(y); - QRgb* q = (QRgb*) i.scanLine(y); + QRgb* p = (QRgb*)scaled.scanLine(y); + QRgb* q = (QRgb*)i.scanLine(y); QRgb* end = p + scaled.width(); while (p < end) { *q = qRgba(qGreen(*p), qBlue(*p), qAlpha(*p), qRed(*p)); @@ -70,12 +71,12 @@ QDBusArgument& operator<< (QDBusArgument& arg, const QImage& image) { return arg; } -const QDBusArgument& operator>> (const QDBusArgument& arg, QImage& image) { +const QDBusArgument& operator>>(const QDBusArgument& arg, QImage& image) { // This is needed to link but shouldn't be called. Q_ASSERT(0); return arg; } -#endif // HAVE_DBUS +#endif // HAVE_DBUS void OSD::Init() { #ifdef HAVE_DBUS @@ -83,12 +84,11 @@ void OSD::Init() { interface_.reset(new OrgFreedesktopNotificationsInterface( OrgFreedesktopNotificationsInterface::staticInterfaceName(), - "/org/freedesktop/Notifications", - QDBusConnection::sessionBus())); + "/org/freedesktop/Notifications", QDBusConnection::sessionBus())); if (!interface_->isValid()) { qLog(Warning) << "Error connecting to notifications service."; } -#endif // HAVE_DBUS +#endif // HAVE_DBUS } bool OSD::SupportsNativeNotifications() { @@ -99,15 +99,12 @@ bool OSD::SupportsNativeNotifications() { #endif } -bool OSD::SupportsTrayPopups() { - return true; -} +bool OSD::SupportsTrayPopups() { return true; } void OSD::ShowMessageNative(const QString& summary, const QString& message, const QString& icon, const QImage& image) { #ifdef HAVE_DBUS - if (!interface_) - return; + if (!interface_) return; QVariantMap hints; if (!image.isNull()) { @@ -115,34 +112,28 @@ void OSD::ShowMessageNative(const QString& summary, const QString& message, } int id = 0; - if (last_notification_time_.secsTo(QDateTime::currentDateTime()) * 1000 - < timeout_msec_) { + if (last_notification_time_.secsTo(QDateTime::currentDateTime()) * 1000 < + timeout_msec_) { // Reuse the existing popup if it's still open. The reason we don't always // reuse the popup is because the notification daemon on KDE4 won't re-show // the bubble if it's already gone to the tray. See issue #118 id = notification_id_; } - QDBusPendingReply reply = interface_->Notify( - QCoreApplication::applicationName(), - id, - icon, - summary, - message, - QStringList(), - hints, - timeout_msec_); + QDBusPendingReply reply = + interface_->Notify(QCoreApplication::applicationName(), id, icon, summary, + message, QStringList(), hints, timeout_msec_); QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(reply, this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), - SLOT(CallFinished(QDBusPendingCallWatcher*))); -#else // HAVE_DBUS + SLOT(CallFinished(QDBusPendingCallWatcher*))); +#else // HAVE_DBUS qLog(Warning) << "not implemented"; -#endif // HAVE_DBUS +#endif // HAVE_DBUS } #ifdef HAVE_DBUS void OSD::CallFinished(QDBusPendingCallWatcher* watcher) { - scoped_ptr w(watcher); + std::unique_ptr w(watcher); QDBusPendingReply reply = *watcher; if (reply.isError()) { diff --git a/src/widgets/osdpretty.cpp b/src/widgets/osdpretty.cpp index bd771c3f7..9437bf2b9 100644 --- a/src/widgets/osdpretty.cpp +++ b/src/widgets/osdpretty.cpp @@ -18,7 +18,6 @@ #include "osdpretty.h" #include "ui_osdpretty.h" - #include #include #include @@ -33,12 +32,12 @@ #include #ifdef Q_WS_X11 -# include +#include #endif #ifdef Q_OS_WIN32 -# include "qtwin.h" -# include +#include "qtwin.h" +#include #endif const char* OSDPretty::kSettingsGroup = "OSDPretty"; @@ -52,21 +51,19 @@ const int OSDPretty::kSnapProximity = 20; const QRgb OSDPretty::kPresetBlue = qRgb(102, 150, 227); const QRgb OSDPretty::kPresetOrange = qRgb(254, 156, 67); - -OSDPretty::OSDPretty(Mode mode, QWidget *parent) - : QWidget(parent), - ui_(new Ui_OSDPretty), - mode_(mode), - background_color_(kPresetBlue), - background_opacity_(0.85), - popup_display_(0), - font_(QFont()), - disable_duration_(false), - timeout_(new QTimer(this)), - fading_enabled_(false), - fader_(new QTimeLine(300, this)), - toggle_mode_(false) -{ +OSDPretty::OSDPretty(Mode mode, QWidget* parent) + : QWidget(parent), + ui_(new Ui_OSDPretty), + mode_(mode), + background_color_(kPresetBlue), + background_opacity_(0.85), + popup_display_(0), + font_(QFont()), + disable_duration_(false), + timeout_(new QTimer(this)), + fading_enabled_(false), + fader_(new QTimeLine(300, this)), + toggle_mode_(false) { Qt::WindowFlags flags = Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint; @@ -86,13 +83,13 @@ OSDPretty::OSDPretty(Mode mode, QWidget *parent) // Mode settings switch (mode_) { - case Mode_Popup: - setCursor(QCursor(Qt::ArrowCursor)); - break; + case Mode_Popup: + setCursor(QCursor(Qt::ArrowCursor)); + break; - case Mode_Draggable: - setCursor(QCursor(Qt::OpenHandCursor)); - break; + case Mode_Draggable: + setCursor(QCursor(Qt::OpenHandCursor)); + break; } // Timeout @@ -113,7 +110,7 @@ OSDPretty::OSDPretty(Mode mode, QWidget *parent) // Load the show edges and corners QImage shadow_edge(":osd_shadow_edge.png"); QImage shadow_corner(":osd_shadow_corner.png"); - for (int i=0 ; i<4 ; ++i) { + for (int i = 0; i < 4; ++i) { QTransform rotation = QTransform().rotate(90 * i); shadow_edge_[i] = QPixmap::fromImage(shadow_edge.transformed(rotation)); shadow_corner_[i] = QPixmap::fromImage(shadow_corner.transformed(rotation)); @@ -128,17 +125,16 @@ OSDPretty::OSDPretty(Mode mode, QWidget *parent) // Get current screen resolution QRect screenResolution = QApplication::desktop()->screenGeometry(); // Leave 200 px for icon - ui_->summary->setMaximumWidth(screenResolution.width()-200); - ui_->message->setMaximumWidth(screenResolution.width()-200); + ui_->summary->setMaximumWidth(screenResolution.width() - 200); + ui_->message->setMaximumWidth(screenResolution.width() - 200); // Set maximum size for the OSD, a little margin here too - setMaximumSize(screenResolution.width()-100,screenResolution.height()-100); + setMaximumSize(screenResolution.width() - 100, + screenResolution.height() - 100); // Don't load settings here, they will be reloaded anyway on creation } -OSDPretty::~OSDPretty() { - delete ui_; -} +OSDPretty::~OSDPretty() { delete ui_; } bool OSDPretty::IsTransparencyAvailable() { #ifdef Q_WS_X11 @@ -165,16 +161,15 @@ void OSDPretty::Load() { void OSDPretty::ReloadSettings() { Load(); - if (isVisible()) - update(); + if (isVisible()) update(); } QRect OSDPretty::BoxBorder() const { - return rect().adjusted(kDropShadowSize, kDropShadowSize, - -kDropShadowSize, -kDropShadowSize); + return rect().adjusted(kDropShadowSize, kDropShadowSize, -kDropShadowSize, + -kDropShadowSize); } -void OSDPretty::paintEvent(QPaintEvent *) { +void OSDPretty::paintEvent(QPaintEvent*) { QPainter p(this); p.setRenderHint(QPainter::Antialiasing); p.setRenderHint(QPainter::HighQualityAntialiasing); @@ -185,22 +180,21 @@ void OSDPretty::paintEvent(QPaintEvent *) { const int kShadowCornerSize = kDropShadowSize + kBorderRadius; p.drawPixmap(0, 0, shadow_corner_[0]); p.drawPixmap(width() - kShadowCornerSize, 0, shadow_corner_[1]); - p.drawPixmap(width() - kShadowCornerSize, height() - kShadowCornerSize, shadow_corner_[2]); + p.drawPixmap(width() - kShadowCornerSize, height() - kShadowCornerSize, + shadow_corner_[2]); p.drawPixmap(0, height() - kShadowCornerSize, shadow_corner_[3]); // Shadow edges - p.drawTiledPixmap(kShadowCornerSize, 0, - width() - kShadowCornerSize*2, kDropShadowSize, - shadow_edge_[0]); + p.drawTiledPixmap(kShadowCornerSize, 0, width() - kShadowCornerSize * 2, + kDropShadowSize, shadow_edge_[0]); p.drawTiledPixmap(width() - kDropShadowSize, kShadowCornerSize, - kDropShadowSize, height() - kShadowCornerSize*2, + kDropShadowSize, height() - kShadowCornerSize * 2, shadow_edge_[1]); p.drawTiledPixmap(kShadowCornerSize, height() - kDropShadowSize, - width() - kShadowCornerSize*2, kDropShadowSize, + width() - kShadowCornerSize * 2, kDropShadowSize, shadow_edge_[2]); - p.drawTiledPixmap(0, kShadowCornerSize, - kDropShadowSize, height() - kShadowCornerSize*2, - shadow_edge_[3]); + p.drawTiledPixmap(0, kShadowCornerSize, kDropShadowSize, + height() - kShadowCornerSize * 2, shadow_edge_[3]); // Box background p.setBrush(background_color_); @@ -235,8 +229,8 @@ void OSDPretty::SetMessage(const QString& summary, const QString& message, if (!image.isNull()) { QImage scaled_image = - image.scaled(kMaxIconSize, kMaxIconSize, - Qt::KeepAspectRatio, Qt::SmoothTransformation); + image.scaled(kMaxIconSize, kMaxIconSize, Qt::KeepAspectRatio, + Qt::SmoothTransformation); ui_->icon->setPixmap(QPixmap::fromImage(scaled_image)); ui_->icon->show(); } else { @@ -246,8 +240,7 @@ void OSDPretty::SetMessage(const QString& summary, const QString& message, ui_->summary->setText(summary); ui_->message->setText(message); - if (isVisible()) - Reposition(); + if (isVisible()) Reposition(); } // Set the desired message and then show the OSD @@ -260,16 +253,13 @@ void OSDPretty::ShowMessage(const QString& summary, const QString& message, if (toggle_mode()) { set_toggle_mode(false); // If timeout is disabled, timer hadn't been started - if (!disable_duration()) - timeout_->stop(); + if (!disable_duration()) timeout_->stop(); hide(); } else { - if (!disable_duration()) - timeout_->start(); // Restart the timer + if (!disable_duration()) timeout_->start(); // Restart the timer } } else { - if (toggle_mode()) - set_toggle_mode(false); + if (toggle_mode()) set_toggle_mode(false); // The OSD is not visible, show it show(); } @@ -284,18 +274,17 @@ void OSDPretty::showEvent(QShowEvent* e) { if (fading_enabled_) { fader_->setDirection(QTimeLine::Forward); - fader_->start(); // Timeout will be started in FaderFinished - } - else if (mode_ == Mode_Popup) { - if (!disable_duration()) - timeout_->start(); + fader_->start(); // Timeout will be started in FaderFinished + } else if (mode_ == Mode_Popup) { + if (!disable_duration()) timeout_->start(); // Ensures it is above when showing the preview raise(); } } void OSDPretty::setVisible(bool visible) { - if (!visible && fading_enabled_ && fader_->direction() == QTimeLine::Forward) { + if (!visible && fading_enabled_ && + fader_->direction() == QTimeLine::Forward) { fader_->setDirection(QTimeLine::Backward); fader_->start(); } else { @@ -310,9 +299,7 @@ void OSDPretty::FaderFinished() { timeout_->start(); } -void OSDPretty::FaderValueChanged(qreal value) { - setWindowOpacity(value); -} +void OSDPretty::FaderValueChanged(qreal value) { setWindowOpacity(value); } void OSDPretty::Reposition() { QDesktopWidget* desktop = QApplication::desktop(); @@ -339,7 +326,8 @@ void OSDPretty::Reposition() { QPainter p(&mask); p.setBrush(Qt::color1); - p.drawRoundedRect(BoxBorder().adjusted(-1, -1, 0, 0), kBorderRadius, kBorderRadius); + p.drawRoundedRect(BoxBorder().adjusted(-1, -1, 0, 0), kBorderRadius, + kBorderRadius); p.end(); // If there's no compositing window manager running then we have to set an @@ -356,14 +344,11 @@ void OSDPretty::Reposition() { #endif } -void OSDPretty::enterEvent(QEvent *) { - if (mode_ == Mode_Popup) - setWindowOpacity(0.25); +void OSDPretty::enterEvent(QEvent*) { + if (mode_ == Mode_Popup) setWindowOpacity(0.25); } -void OSDPretty::leaveEvent(QEvent *) { - setWindowOpacity(1.0); -} +void OSDPretty::leaveEvent(QEvent*) { setWindowOpacity(1.0); } void OSDPretty::mousePressEvent(QMouseEvent* e) { if (mode_ == Mode_Popup) @@ -383,12 +368,15 @@ void OSDPretty::mouseMoveEvent(QMouseEvent* e) { QDesktopWidget* desktop = QApplication::desktop(); QRect geometry(desktop->availableGeometry(e->globalPos())); - new_pos.setX(qBound(geometry.left(), new_pos.x(), geometry.right() - width())); - new_pos.setY(qBound(geometry.top(), new_pos.y(), geometry.bottom() - height())); + new_pos.setX( + qBound(geometry.left(), new_pos.x(), geometry.right() - width())); + new_pos.setY( + qBound(geometry.top(), new_pos.y(), geometry.bottom() - height())); // Snap to center int snap_x = geometry.center().x() - width() / 2; - if (new_pos.x() > snap_x - kSnapProximity && new_pos.x() < snap_x + kSnapProximity) { + if (new_pos.x() > snap_x - kSnapProximity && + new_pos.x() < snap_x + kSnapProximity) { new_pos.setX(snap_x); } @@ -403,10 +391,10 @@ QPoint OSDPretty::current_pos() const { QDesktopWidget* desktop = QApplication::desktop(); QRect geometry(desktop->availableGeometry(current_display())); - int x = pos().x() >= geometry.right() - width() - ? -1 : pos().x() - geometry.left(); - int y = pos().y() >= geometry.bottom() - height() - ? -1 : pos().y() - geometry.top(); + int x = pos().x() >= geometry.right() - width() ? -1 + : pos().x() - geometry.left(); + int y = pos().y() >= geometry.bottom() - height() ? -1 : pos().y() - + geometry.top(); return QPoint(x, y); } @@ -418,14 +406,12 @@ int OSDPretty::current_display() const { void OSDPretty::set_background_color(QRgb color) { background_color_ = color; - if (isVisible()) - update(); + if (isVisible()) update(); } void OSDPretty::set_background_opacity(qreal opacity) { background_opacity_ = opacity; - if (isVisible()) - update(); + if (isVisible()) update(); } void OSDPretty::set_foreground_color(QRgb color) { @@ -438,11 +424,9 @@ void OSDPretty::set_foreground_color(QRgb color) { ui_->message->setPalette(p); } -void OSDPretty::set_popup_duration(int msec) { - timeout_->setInterval(msec); -} +void OSDPretty::set_popup_duration(int msec) { timeout_->setInterval(msec); } -void OSDPretty::mouseReleaseEvent(QMouseEvent *) { +void OSDPretty::mouseReleaseEvent(QMouseEvent*) { if (mode_ == Mode_Draggable) { popup_display_ = current_display(); popup_pos_ = current_pos(); diff --git a/src/widgets/osdpretty.h b/src/widgets/osdpretty.h index 0dc49d3da..50bf1eeda 100644 --- a/src/widgets/osdpretty.h +++ b/src/widgets/osdpretty.h @@ -28,12 +28,9 @@ class OSDPretty : public QWidget { Q_OBJECT public: - enum Mode { - Mode_Popup, - Mode_Draggable, - }; + enum Mode { Mode_Popup, Mode_Draggable, }; - OSDPretty(Mode mode, QWidget *parent = 0); + OSDPretty(Mode mode, QWidget* parent = nullptr); ~OSDPretty(); static const char* kSettingsGroup; @@ -49,11 +46,9 @@ class OSDPretty : public QWidget { static bool IsTransparencyAvailable(); - void SetMessage(const QString& summary, - const QString& message, + void SetMessage(const QString& summary, const QString& message, const QImage& image); - void ShowMessage(const QString& summary, - const QString& message, + void ShowMessage(const QString& summary, const QString& message, const QImage& image); // Controls the fader. This is enabled by default on Windows. @@ -92,13 +87,13 @@ class OSDPretty : public QWidget { void ReloadSettings(); protected: - void paintEvent(QPaintEvent *); - void enterEvent(QEvent *); - void leaveEvent(QEvent *); - void mousePressEvent(QMouseEvent *); - void showEvent(QShowEvent *); - void mouseMoveEvent(QMouseEvent *); - void mouseReleaseEvent(QMouseEvent *); + void paintEvent(QPaintEvent*); + void enterEvent(QEvent*); + void leaveEvent(QEvent*); + void mousePressEvent(QMouseEvent*); + void showEvent(QShowEvent*); + void mouseMoveEvent(QMouseEvent*); + void mouseReleaseEvent(QMouseEvent*); private: void Reposition(); @@ -119,7 +114,7 @@ class OSDPretty : public QWidget { QColor foreground_color_; QColor background_color_; float background_opacity_; - int popup_display_; // -1 for default + int popup_display_; // -1 for default QPoint popup_pos_; QFont font_; // The OSD is kept always on top until you click (no timer) @@ -145,4 +140,4 @@ class OSDPretty : public QWidget { bool toggle_mode_; }; -#endif // OSDPRETTY_H +#endif // OSDPRETTY_H diff --git a/src/widgets/prettyimage.cpp b/src/widgets/prettyimage.cpp index 56c938076..50db99ff5 100644 --- a/src/widgets/prettyimage.cpp +++ b/src/widgets/prettyimage.cpp @@ -36,8 +36,8 @@ const int PrettyImage::kTotalHeight = 200; const int PrettyImage::kReflectionHeight = 40; -const int PrettyImage::kImageHeight = PrettyImage::kTotalHeight - - PrettyImage::kReflectionHeight; +const int PrettyImage::kImageHeight = + PrettyImage::kTotalHeight - PrettyImage::kReflectionHeight; const int PrettyImage::kMaxImageWidth = 300; @@ -45,20 +45,18 @@ const char* PrettyImage::kSettingsGroup = "PrettyImageView"; PrettyImage::PrettyImage(const QUrl& url, QNetworkAccessManager* network, QWidget* parent) - : QWidget(parent), - network_(network), - state_(State_WaitingForLazyLoad), - url_(url), - menu_(NULL) -{ + : QWidget(parent), + network_(network), + state_(State_WaitingForLazyLoad), + url_(url), + menu_(nullptr) { setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); LazyLoad(); } void PrettyImage::LazyLoad() { - if (state_ != State_WaitingForLazyLoad) - return; + if (state_ != State_WaitingForLazyLoad) return; // Start fetching the image QNetworkReply* reply = network_->get(QNetworkRequest(url_)); @@ -67,8 +65,7 @@ void PrettyImage::LazyLoad() { } QSize PrettyImage::image_size() const { - if (state_ != State_Finished) - return QSize(kImageHeight * 1.6, kImageHeight); + if (state_ != State_Finished) return QSize(kImageHeight * 1.6, kImageHeight); QSize ret = image_.size(); ret.scale(kMaxImageWidth, kImageHeight, Qt::KeepAspectRatio); @@ -90,8 +87,9 @@ void PrettyImage::ImageFetched() { state_ = State_CreatingThumbnail; image_ = image; - QFuture future = QtConcurrent::run(image_, &QImage::scaled, - image_size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); + QFuture future = + QtConcurrent::run(image_, &QImage::scaled, image_size(), + Qt::KeepAspectRatio, Qt::SmoothTransformation); QFutureWatcher* watcher = new QFutureWatcher(this); watcher->setFuture(future); @@ -100,9 +98,9 @@ void PrettyImage::ImageFetched() { } void PrettyImage::ImageScaled() { - QFutureWatcher* watcher = reinterpret_cast*>(sender()); - if (!watcher) - return; + QFutureWatcher* watcher = + reinterpret_cast*>(sender()); + if (!watcher) return; watcher->deleteLater(); thumbnail_ = QPixmap::fromImage(watcher->result()); @@ -113,7 +111,7 @@ void PrettyImage::ImageScaled() { emit Loaded(); } -void PrettyImage::paintEvent(QPaintEvent* ) { +void PrettyImage::paintEvent(QPaintEvent*) { // Draw at the bottom of our area QRect image_rect(QPoint(0, 0), image_size()); image_rect.moveBottom(kImageHeight); @@ -129,7 +127,8 @@ void PrettyImage::paintEvent(QPaintEvent* ) { reflection_rect.moveTop(image_rect.bottom()); // Create the reflected pixmap - QImage reflection(reflection_rect.size(), QImage::Format_ARGB32_Premultiplied); + QImage reflection(reflection_rect.size(), + QImage::Format_ARGB32_Premultiplied); reflection.fill(palette().color(QPalette::Base).rgba()); QPainter reflection_painter(&reflection); @@ -150,7 +149,8 @@ void PrettyImage::paintEvent(QPaintEvent* ) { fade_gradient.setColorAt(0.0, QColor(0, 0, 0, 0)); fade_gradient.setColorAt(1.0, QColor(0, 0, 0, 128)); - reflection_painter.setCompositionMode(QPainter::CompositionMode_DestinationIn); + reflection_painter.setCompositionMode( + QPainter::CompositionMode_DestinationIn); reflection_painter.fillRect(fade_rect, fade_gradient); reflection_painter.end(); @@ -161,29 +161,28 @@ void PrettyImage::paintEvent(QPaintEvent* ) { void PrettyImage::DrawThumbnail(QPainter* p, const QRect& rect) { switch (state_) { - case State_WaitingForLazyLoad: - case State_Fetching: - case State_CreatingThumbnail: - p->setPen(palette().color(QPalette::Disabled, QPalette::Text)); - p->drawText(rect, Qt::AlignHCenter | Qt::AlignBottom, tr("Loading...")); - break; + case State_WaitingForLazyLoad: + case State_Fetching: + case State_CreatingThumbnail: + p->setPen(palette().color(QPalette::Disabled, QPalette::Text)); + p->drawText(rect, Qt::AlignHCenter | Qt::AlignBottom, tr("Loading...")); + break; - case State_Finished: - p->drawPixmap(rect, thumbnail_); - break; + case State_Finished: + p->drawPixmap(rect, thumbnail_); + break; } } void PrettyImage::contextMenuEvent(QContextMenuEvent* e) { - if (e->pos().y() >= kImageHeight) - return; + if (e->pos().y() >= kImageHeight) return; if (!menu_) { menu_ = new QMenu(this); - menu_->addAction(IconLoader::Load("zoom-in"), tr("Show fullsize..."), - this, SLOT(ShowFullsize())); - menu_->addAction(IconLoader::Load("document-save"), tr("Save image") + "...", - this, SLOT(SaveAs())); + menu_->addAction(IconLoader::Load("zoom-in"), tr("Show fullsize..."), this, + SLOT(ShowFullsize())); + menu_->addAction(IconLoader::Load("document-save"), + tr("Save image") + "...", this, SLOT(SaveAs())); } menu_->popup(e->globalPos()); @@ -214,8 +213,7 @@ void PrettyImage::ShowFullsize() { void PrettyImage::SaveAs() { QString filename = QFileInfo(url_.path()).fileName(); - if (filename.isEmpty()) - filename = "artwork.jpg"; + if (filename.isEmpty()) filename = "artwork.jpg"; QSettings s; s.beginGroup(kSettingsGroup); @@ -230,8 +228,7 @@ void PrettyImage::SaveAs() { } filename = QFileDialog::getSaveFileName(this, tr("Save image"), path); - if (filename.isEmpty()) - return; + if (filename.isEmpty()) return; image_.save(filename); diff --git a/src/widgets/prettyimage.h b/src/widgets/prettyimage.h index 77118f301..1467e5850 100644 --- a/src/widgets/prettyimage.h +++ b/src/widgets/prettyimage.h @@ -28,9 +28,9 @@ class QNetworkReply; class PrettyImage : public QWidget { Q_OBJECT -public: + public: PrettyImage(const QUrl& url, QNetworkAccessManager* network, - QWidget* parent = 0); + QWidget* parent = nullptr); static const int kTotalHeight; static const int kReflectionHeight; @@ -46,20 +46,20 @@ public: signals: void Loaded(); -public slots: + public slots: void LazyLoad(); void SaveAs(); void ShowFullsize(); -protected: + protected: void contextMenuEvent(QContextMenuEvent*); void paintEvent(QPaintEvent*); -private slots: + private slots: void ImageFetched(); void ImageScaled(); -private: + private: enum State { State_WaitingForLazyLoad, State_Fetching, @@ -69,7 +69,7 @@ private: void DrawThumbnail(QPainter* p, const QRect& rect); -private: + private: QNetworkAccessManager* network_; State state_; QUrl url_; @@ -81,4 +81,4 @@ private: QString last_save_dir_; }; -#endif // PRETTYIMAGE_H +#endif // PRETTYIMAGE_H diff --git a/src/widgets/prettyimageview.cpp b/src/widgets/prettyimageview.cpp index 52d5c36b8..8f9fe3e57 100644 --- a/src/widgets/prettyimageview.cpp +++ b/src/widgets/prettyimageview.cpp @@ -25,15 +25,16 @@ #include #include -PrettyImageView::PrettyImageView(QNetworkAccessManager* network, QWidget* parent) - : QScrollArea(parent), - network_(network), - container_(new QWidget(this)), - layout_(new QHBoxLayout(container_)), - current_index_(-1), - scroll_animation_(new QPropertyAnimation(horizontalScrollBar(), "value", this)), - recursion_filter_(false) -{ +PrettyImageView::PrettyImageView(QNetworkAccessManager* network, + QWidget* parent) + : QScrollArea(parent), + network_(network), + container_(new QWidget(this)), + layout_(new QHBoxLayout(container_)), + current_index_(-1), + scroll_animation_( + new QPropertyAnimation(horizontalScrollBar(), "value", this)), + recursion_filter_(false) { setWidget(container_); setWidgetResizable(true); setMinimumHeight(PrettyImage::kTotalHeight + 10); @@ -43,8 +44,10 @@ PrettyImageView::PrettyImageView(QNetworkAccessManager* network, QWidget* parent scroll_animation_->setDuration(250); scroll_animation_->setEasingCurve(QEasingCurve::InOutCubic); - connect(horizontalScrollBar(), SIGNAL(sliderReleased()), SLOT(ScrollBarReleased())); - connect(horizontalScrollBar(), SIGNAL(actionTriggered(int)), SLOT(ScrollBarAction(int))); + connect(horizontalScrollBar(), SIGNAL(sliderReleased()), + SLOT(ScrollBarReleased())); + connect(horizontalScrollBar(), SIGNAL(actionTriggered(int)), + SLOT(ScrollBarAction(int))); layout_->setSizeConstraint(QLayout::SetMinAndMaxSize); layout_->setContentsMargins(6, 6, 6, 6); @@ -72,20 +75,17 @@ void PrettyImageView::AddImage(const QUrl& url) { connect(image, SIGNAL(Loaded()), SLOT(ScrollToCurrent())); layout_->insertWidget(layout_->count() - 1, image); - if (current_index_ == -1) - ScrollTo(0); + if (current_index_ == -1) ScrollTo(0); } void PrettyImageView::mouseReleaseEvent(QMouseEvent* e) { // Find the image that was clicked on QWidget* widget = container_->childAt(container_->mapFrom(this, e->pos())); - if (!widget) - return; + if (!widget) return; // Get the index of that image const int index = layout_->indexOf(widget) - 1; - if (index == -1) - return; + if (index == -1) return; if (index == current_index_) { // Show the image fullsize @@ -104,14 +104,12 @@ void PrettyImageView::ScrollTo(int index, bool smooth) { const int layout_index = current_index_ + 1; const QWidget* target_widget = layout_->itemAt(layout_index)->widget(); - if (!target_widget) - return; + if (!target_widget) return; const int current_x = horizontalScrollBar()->value(); const int target_x = target_widget->geometry().center().x() - width() / 2; - if (current_x == target_x) - return; + if (current_x == target_x) return; if (smooth) { scroll_animation_->setStartValue(current_x); @@ -123,15 +121,13 @@ void PrettyImageView::ScrollTo(int index, bool smooth) { } } -void PrettyImageView::ScrollToCurrent() { - ScrollTo(current_index_); -} +void PrettyImageView::ScrollToCurrent() { ScrollTo(current_index_); } void PrettyImageView::ScrollBarReleased() { // Find the nearest widget to where the scroll bar was released const int current_x = horizontalScrollBar()->value() + width() / 2; int layout_index = 1; - for (; layout_indexcount() - 1 ; ++layout_index) { + for (; layout_index < layout_->count() - 1; ++layout_index) { const QWidget* widget = layout_->itemAt(layout_index)->widget(); if (widget && widget->geometry().right() > current_x) { break; @@ -143,15 +139,15 @@ void PrettyImageView::ScrollBarReleased() { void PrettyImageView::ScrollBarAction(int action) { switch (action) { - case QAbstractSlider::SliderSingleStepAdd: - case QAbstractSlider::SliderPageStepAdd: - ScrollTo(current_index_ + 1); - break; + case QAbstractSlider::SliderSingleStepAdd: + case QAbstractSlider::SliderPageStepAdd: + ScrollTo(current_index_ + 1); + break; - case QAbstractSlider::SliderSingleStepSub: - case QAbstractSlider::SliderPageStepSub: - ScrollTo(current_index_ - 1); - break; + case QAbstractSlider::SliderSingleStepSub: + case QAbstractSlider::SliderPageStepSub: + ScrollTo(current_index_ - 1); + break; } } diff --git a/src/widgets/prettyimageview.h b/src/widgets/prettyimageview.h index 4a4f29329..6b3b8d29e 100644 --- a/src/widgets/prettyimageview.h +++ b/src/widgets/prettyimageview.h @@ -32,26 +32,26 @@ class QTimeLine; class PrettyImageView : public QScrollArea { Q_OBJECT -public: - PrettyImageView(QNetworkAccessManager* network, QWidget* parent = 0); + public: + PrettyImageView(QNetworkAccessManager* network, QWidget* parent = nullptr); static const char* kSettingsGroup; -public slots: + public slots: void AddImage(const QUrl& url); -protected: + protected: void mouseReleaseEvent(QMouseEvent*); void resizeEvent(QResizeEvent* e); void wheelEvent(QWheelEvent* e); -private slots: + private slots: void ScrollBarReleased(); void ScrollBarAction(int action); void ScrollTo(int index, bool smooth = true); void ScrollToCurrent(); -private: + private: bool eventFilter(QObject*, QEvent*); QNetworkAccessManager* network_; @@ -65,4 +65,4 @@ private: bool recursion_filter_; }; -#endif // PRETTYIMAGEVIEW_H +#endif // PRETTYIMAGEVIEW_H diff --git a/src/widgets/progressitemdelegate.cpp b/src/widgets/progressitemdelegate.cpp index 6e334539d..52d12d860 100644 --- a/src/widgets/progressitemdelegate.cpp +++ b/src/widgets/progressitemdelegate.cpp @@ -19,12 +19,12 @@ #include -ProgressItemDelegate::ProgressItemDelegate(QObject *parent) - : QStyledItemDelegate(parent) -{ -} +ProgressItemDelegate::ProgressItemDelegate(QObject* parent) + : QStyledItemDelegate(parent) {} -void ProgressItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { +void ProgressItemDelegate::paint(QPainter* painter, + const QStyleOptionViewItem& option, + const QModelIndex& index) const { bool ok = false; int progress = index.data().toInt(&ok); diff --git a/src/widgets/progressitemdelegate.h b/src/widgets/progressitemdelegate.h index 91dd4fd8f..479585ec7 100644 --- a/src/widgets/progressitemdelegate.h +++ b/src/widgets/progressitemdelegate.h @@ -22,10 +22,11 @@ class ProgressItemDelegate : public QStyledItemDelegate { Q_OBJECT -public: - ProgressItemDelegate(QObject* parent = 0); + public: + ProgressItemDelegate(QObject* parent = nullptr); - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; + void paint(QPainter* painter, const QStyleOptionViewItem& option, + const QModelIndex& index) const; }; -#endif // PROGRESSITEMDELEGATE_H +#endif // PROGRESSITEMDELEGATE_H diff --git a/src/widgets/ratingwidget.cpp b/src/widgets/ratingwidget.cpp index dc30a4276..43973eb97 100644 --- a/src/widgets/ratingwidget.cpp +++ b/src/widgets/ratingwidget.cpp @@ -31,7 +31,7 @@ RatingPainter::RatingPainter() { QPixmap off(":/star-off.png"); // Generate the 10 states, better to do it now than on the fly - for (int i=0 ; idrawPixmap(QRect(pos, size), stars_[star], QRect(QPoint(0,0), size)); + const int star = qBound(0, int(rating * 2.0 + 0.5), kStarCount * 2); + painter->drawPixmap(QRect(pos, size), stars_[star], + QRect(QPoint(0, 0), size)); } - RatingWidget::RatingWidget(QWidget* parent) - : QWidget(parent), - rating_(0.0), - hover_rating_(-1.0) -{ + : QWidget(parent), rating_(0.0), hover_rating_(-1.0) { setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); setMouseTracking(true); } QSize RatingWidget::sizeHint() const { - const int frame_width = 1 + style()->pixelMetric(QStyle::PM_DefaultFrameWidth); - return QSize(RatingPainter::kStarSize * (RatingPainter::kStarCount+2) + frame_width*2, - RatingPainter::kStarSize + frame_width*2); + const int frame_width = + 1 + style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + return QSize(RatingPainter::kStarSize * (RatingPainter::kStarCount + 2) + + frame_width * 2, + RatingPainter::kStarSize + frame_width * 2); } void RatingWidget::set_rating(float rating) { @@ -119,7 +120,8 @@ void RatingWidget::paintEvent(QPaintEvent* e) { opt.initFrom(this); opt.state |= QStyle::State_Sunken; opt.frameShape = QFrame::StyledPanel; - opt.lineWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth, &opt, this); + opt.lineWidth = + style()->pixelMetric(QStyle::PM_DefaultFrameWidth, &opt, this); opt.midLineWidth = 0; p.drawPrimitive(QStyle::PE_PanelLineEdit, opt); diff --git a/src/widgets/ratingwidget.h b/src/widgets/ratingwidget.h index fad3615a1..cf2f51cb3 100644 --- a/src/widgets/ratingwidget.h +++ b/src/widgets/ratingwidget.h @@ -22,7 +22,7 @@ #include class RatingPainter { -public: + public: RatingPainter(); static const int kStarCount = 5; @@ -32,16 +32,16 @@ public: void Paint(QPainter* painter, const QRect& rect, float rating) const; -private: - QPixmap stars_[kStarCount*2+1]; + private: + QPixmap stars_[kStarCount * 2 + 1]; }; class RatingWidget : public QWidget { Q_OBJECT Q_PROPERTY(float rating READ rating WRITE set_rating); -public: - RatingWidget(QWidget* parent = 0); + public: + RatingWidget(QWidget* parent = nullptr); QSize sizeHint() const; @@ -51,16 +51,16 @@ public: signals: void RatingChanged(float rating); -protected: + protected: void paintEvent(QPaintEvent*); void mousePressEvent(QMouseEvent* e); void mouseMoveEvent(QMouseEvent* e); void leaveEvent(QEvent*); -private: + private: RatingPainter painter_; float rating_; float hover_rating_; }; -#endif // RATINGWIDGET_H +#endif // RATINGWIDGET_H diff --git a/src/widgets/renametablineedit.cpp b/src/widgets/renametablineedit.cpp index 9598e30e2..ecb607455 100644 --- a/src/widgets/renametablineedit.cpp +++ b/src/widgets/renametablineedit.cpp @@ -19,23 +19,19 @@ #include -RenameTabLineEdit::RenameTabLineEdit(QWidget *parent) : - QLineEdit(parent) -{ -} +RenameTabLineEdit::RenameTabLineEdit(QWidget* parent) : QLineEdit(parent) {} -void RenameTabLineEdit::keyPressEvent (QKeyEvent *e) { +void RenameTabLineEdit::keyPressEvent(QKeyEvent* e) { if (e->key() == Qt::Key_Escape) { e->accept(); emit EditingCanceled(); - } - else { + } else { QLineEdit::keyPressEvent(e); } } -void RenameTabLineEdit::focusOutEvent(QFocusEvent *e) { - //if the user hasn't explicitly accepted, discard the value +void RenameTabLineEdit::focusOutEvent(QFocusEvent* e) { + // if the user hasn't explicitly accepted, discard the value emit EditingCanceled(); - //we don't call the default event since it will trigger editingFished() + // we don't call the default event since it will trigger editingFished() } diff --git a/src/widgets/renametablineedit.h b/src/widgets/renametablineedit.h index 370ae8cad..51c39fea2 100644 --- a/src/widgets/renametablineedit.h +++ b/src/widgets/renametablineedit.h @@ -23,17 +23,17 @@ class RenameTabLineEdit : public QLineEdit { Q_OBJECT -public: - RenameTabLineEdit(QWidget* parent = 0); + public: + RenameTabLineEdit(QWidget* parent = nullptr); signals: void EditingCanceled(); -public slots: + public slots: -protected: + protected: void focusOutEvent(QFocusEvent* e); void keyPressEvent(QKeyEvent* e); }; -#endif // RENAMETABLINEEDIT_H +#endif // RENAMETABLINEEDIT_H diff --git a/src/widgets/sliderwidget.cpp b/src/widgets/sliderwidget.cpp index 1ca80ad90..b9d6b432a 100644 --- a/src/widgets/sliderwidget.cpp +++ b/src/widgets/sliderwidget.cpp @@ -32,107 +32,100 @@ #include #include - -Amarok::Slider::Slider( Qt::Orientation orientation, QWidget *parent, uint max ) - : QSlider( orientation, parent ) - , m_sliding( false ) - , m_outside( false ) - , m_prevValue( 0 ) -{ - setRange( 0, max ); +Amarok::Slider::Slider(Qt::Orientation orientation, QWidget* parent, uint max) + : QSlider(orientation, parent), + m_sliding(false), + m_outside(false), + m_prevValue(0) { + setRange(0, max); } -void -Amarok::Slider::wheelEvent( QWheelEvent *e ) -{ - if( orientation() == Qt::Vertical ) { - // Will be handled by the parent widget - e->ignore(); - return; +void Amarok::Slider::wheelEvent(QWheelEvent* e) { + if (orientation() == Qt::Vertical) { + // Will be handled by the parent widget + e->ignore(); + return; + } + + // Position Slider (horizontal) + int step = e->delta() * 1500 / 18; + int nval = QSlider::value() + step; + nval = qMax(nval, minimum()); + nval = qMin(nval, maximum()); + + QSlider::setValue(nval); + + emit sliderReleased(value()); +} + +void Amarok::Slider::mouseMoveEvent(QMouseEvent* e) { + if (m_sliding) { + // feels better, but using set value of 20 is bad of course + QRect rect(-20, -20, width() + 40, height() + 40); + + if (orientation() == Qt::Horizontal && !rect.contains(e->pos())) { + if (!m_outside) QSlider::setValue(m_prevValue); + m_outside = true; + } else { + m_outside = false; + slideEvent(e); + emit sliderMoved(value()); } - - // Position Slider (horizontal) - int step = e->delta() * 1500 / 18; - int nval = QSlider::value() + step; - nval = qMax(nval, minimum()); - nval = qMin(nval, maximum()); - - QSlider::setValue( nval ); - - emit sliderReleased( value() ); + } else + QSlider::mouseMoveEvent(e); } -void -Amarok::Slider::mouseMoveEvent( QMouseEvent *e ) -{ - if ( m_sliding ) - { - //feels better, but using set value of 20 is bad of course - QRect rect( -20, -20, width()+40, height()+40 ); - - if ( orientation() == Qt::Horizontal && !rect.contains( e->pos() ) ) { - if ( !m_outside ) - QSlider::setValue( m_prevValue ); - m_outside = true; - } else { - m_outside = false; - slideEvent( e ); - emit sliderMoved( value() ); - } - } - else QSlider::mouseMoveEvent( e ); -} - -void -Amarok::Slider::slideEvent( QMouseEvent *e ) -{ +void Amarok::Slider::slideEvent(QMouseEvent* e) { QStyleOptionSlider option; initStyleOption(&option); - QRect sliderRect(style()->subControlRect(QStyle::CC_Slider, &option, QStyle::SC_SliderHandle, this)); + QRect sliderRect(style()->subControlRect(QStyle::CC_Slider, &option, + QStyle::SC_SliderHandle, this)); - QSlider::setValue( orientation() == Qt::Horizontal - ? ((QApplication::layoutDirection() == Qt::RightToLeft) ? - QStyle::sliderValueFromPosition(minimum(), maximum(), width() - (e->pos().x() - sliderRect.width()/2), width() + sliderRect.width(), true ) - : QStyle::sliderValueFromPosition(minimum(), maximum(), e->pos().x() - sliderRect.width()/2, width() - sliderRect.width() ) ) - : QStyle::sliderValueFromPosition(minimum(), maximum(), e->pos().y() - sliderRect.height()/2, height() - sliderRect.height() ) ); + QSlider::setValue( + orientation() == Qt::Horizontal + ? ((QApplication::layoutDirection() == Qt::RightToLeft) + ? QStyle::sliderValueFromPosition( + minimum(), maximum(), + width() - (e->pos().x() - sliderRect.width() / 2), + width() + sliderRect.width(), true) + : QStyle::sliderValueFromPosition( + minimum(), maximum(), + e->pos().x() - sliderRect.width() / 2, + width() - sliderRect.width())) + : QStyle::sliderValueFromPosition( + minimum(), maximum(), e->pos().y() - sliderRect.height() / 2, + height() - sliderRect.height())); } -void -Amarok::Slider::mousePressEvent( QMouseEvent *e ) -{ +void Amarok::Slider::mousePressEvent(QMouseEvent* e) { QStyleOptionSlider option; initStyleOption(&option); - QRect sliderRect(style()->subControlRect(QStyle::CC_Slider, &option, QStyle::SC_SliderHandle, this)); + QRect sliderRect(style()->subControlRect(QStyle::CC_Slider, &option, + QStyle::SC_SliderHandle, this)); - m_sliding = true; - m_prevValue = QSlider::value(); + m_sliding = true; + m_prevValue = QSlider::value(); - if ( !sliderRect.contains( e->pos() ) ) - mouseMoveEvent( e ); + if (!sliderRect.contains(e->pos())) mouseMoveEvent(e); } -void -Amarok::Slider::mouseReleaseEvent( QMouseEvent* ) -{ - if( !m_outside && QSlider::value() != m_prevValue ) - emit sliderReleased( value() ); +void Amarok::Slider::mouseReleaseEvent(QMouseEvent*) { + if (!m_outside && QSlider::value() != m_prevValue) + emit sliderReleased(value()); - m_sliding = false; - m_outside = false; + m_sliding = false; + m_outside = false; } -void -Amarok::Slider::setValue( int newValue ) -{ - //don't adjust the slider while the user is dragging it! +void Amarok::Slider::setValue(int newValue) { + // don't adjust the slider while the user is dragging it! - if ( !m_sliding || m_outside ) - QSlider::setValue( adjustValue( newValue ) ); - else - m_prevValue = newValue; + if (!m_sliding || m_outside) + QSlider::setValue(adjustValue(newValue)); + else + m_prevValue = newValue; } - ////////////////////////////////////////////////////////////////////////////////////////// /// CLASS PrettySlider ////////////////////////////////////////////////////////////////////////////////////////// @@ -140,43 +133,38 @@ Amarok::Slider::setValue( int newValue ) #define THICKNESS 7 #define MARGIN 3 -Amarok::PrettySlider::PrettySlider( Qt::Orientation orientation, SliderMode mode, - QWidget *parent, uint max ) - : Amarok::Slider( orientation, parent, max ) - , m_mode( mode ) -{ - if( m_mode == Pretty) - { - setFocusPolicy( Qt::NoFocus ); - } +Amarok::PrettySlider::PrettySlider(Qt::Orientation orientation, SliderMode mode, + QWidget* parent, uint max) + : Amarok::Slider(orientation, parent, max), m_mode(mode) { + if (m_mode == Pretty) { + setFocusPolicy(Qt::NoFocus); + } } -void -Amarok::PrettySlider::mousePressEvent( QMouseEvent *e ) -{ - Amarok::Slider::mousePressEvent( e ); +void Amarok::PrettySlider::mousePressEvent(QMouseEvent* e) { + Amarok::Slider::mousePressEvent(e); - slideEvent( e ); + slideEvent(e); } -void -Amarok::PrettySlider::slideEvent( QMouseEvent *e ) -{ - if( m_mode == Pretty ) - QSlider::setValue( orientation() == Qt::Horizontal - ? QStyle::sliderValueFromPosition(minimum(), maximum(), e->pos().x(), width()-2 ) - : QStyle::sliderValueFromPosition(minimum(), maximum(), e->pos().y(), height()-2 ) ); - else - Amarok::Slider::slideEvent( e ); +void Amarok::PrettySlider::slideEvent(QMouseEvent* e) { + if (m_mode == Pretty) + QSlider::setValue( + orientation() == Qt::Horizontal + ? QStyle::sliderValueFromPosition(minimum(), maximum(), + e->pos().x(), width() - 2) + : QStyle::sliderValueFromPosition(minimum(), maximum(), + e->pos().y(), height() - 2)); + else + Amarok::Slider::slideEvent(e); } namespace Amarok { - namespace ColorScheme { - extern QColor Background; - extern QColor Foreground; - } +namespace ColorScheme { +extern QColor Background; +extern QColor Foreground; +} } - #if 0 /** these functions aren't required in our fixed size world, @@ -203,167 +191,146 @@ Amarok::PrettySlider::sizeHint() const /// CLASS VolumeSlider ////////////////////////////////////////////////////////////////////////////////////////// -Amarok::VolumeSlider::VolumeSlider( QWidget *parent, uint max ) - : Amarok::Slider( Qt::Horizontal, parent, max ) - , m_animCount( 0 ) - , m_animTimer( new QTimer( this ) ) - , m_pixmapInset( QPixmap( ":volumeslider-inset.png" )) -{ - setFocusPolicy( Qt::NoFocus ); +Amarok::VolumeSlider::VolumeSlider(QWidget* parent, uint max) + : Amarok::Slider(Qt::Horizontal, parent, max), + m_animCount(0), + m_animTimer(new QTimer(this)), + m_pixmapInset(QPixmap(":volumeslider-inset.png")) { + setFocusPolicy(Qt::NoFocus); - // BEGIN Calculate handle animation pixmaps for mouse-over effect - QImage pixmapHandle ( ":volumeslider-handle.png" ); - QImage pixmapHandleGlow( ":volumeslider-handle_glow.png" ); + // BEGIN Calculate handle animation pixmaps for mouse-over effect + QImage pixmapHandle(":volumeslider-handle.png"); + QImage pixmapHandleGlow(":volumeslider-handle_glow.png"); - float opacity = 0.0; - const float step = 1.0 / ANIM_MAX; - QImage dst; - for ( int i = 0; i < ANIM_MAX; ++i ) { - dst = pixmapHandle.copy(); + float opacity = 0.0; + const float step = 1.0 / ANIM_MAX; + QImage dst; + for (int i = 0; i < ANIM_MAX; ++i) { + dst = pixmapHandle.copy(); - QPainter p(&dst); - p.setOpacity(opacity); - p.drawImage(0, 0, pixmapHandleGlow); - p.end(); - - m_handlePixmaps.append( QPixmap::fromImage( dst ) ); - opacity += step; - } - // END - - generateGradient(); - - setMinimumWidth( m_pixmapInset.width() ); - setMinimumHeight( m_pixmapInset.height() ); - - connect( m_animTimer, SIGNAL( timeout() ), this, SLOT( slotAnimTimer() ) ); -} - -void -Amarok::VolumeSlider::generateGradient() -{ - const QImage mask( ":volumeslider-gradient.png" ); - - QImage gradient_image(mask.size(), QImage::Format_ARGB32_Premultiplied); - QPainter p(&gradient_image); - - QLinearGradient gradient(gradient_image.rect().topLeft(), - gradient_image.rect().topRight()); - gradient.setColorAt(0, palette().color(QPalette::Background)); - gradient.setColorAt(1, palette().color(QPalette::Highlight)); - p.fillRect(gradient_image.rect(), QBrush(gradient)); - - p.setCompositionMode(QPainter::CompositionMode_DestinationIn); - p.drawImage(0, 0, mask); + QPainter p(&dst); + p.setOpacity(opacity); + p.drawImage(0, 0, pixmapHandleGlow); p.end(); - m_pixmapGradient = QPixmap::fromImage(gradient_image); + m_handlePixmaps.append(QPixmap::fromImage(dst)); + opacity += step; + } + // END + + generateGradient(); + + setMinimumWidth(m_pixmapInset.width()); + setMinimumHeight(m_pixmapInset.height()); + + connect(m_animTimer, SIGNAL(timeout()), this, SLOT(slotAnimTimer())); } -void -Amarok::VolumeSlider::slotAnimTimer() //SLOT +void Amarok::VolumeSlider::generateGradient() { + const QImage mask(":volumeslider-gradient.png"); + + QImage gradient_image(mask.size(), QImage::Format_ARGB32_Premultiplied); + QPainter p(&gradient_image); + + QLinearGradient gradient(gradient_image.rect().topLeft(), + gradient_image.rect().topRight()); + gradient.setColorAt(0, palette().color(QPalette::Background)); + gradient.setColorAt(1, palette().color(QPalette::Highlight)); + p.fillRect(gradient_image.rect(), QBrush(gradient)); + + p.setCompositionMode(QPainter::CompositionMode_DestinationIn); + p.drawImage(0, 0, mask); + p.end(); + + m_pixmapGradient = QPixmap::fromImage(gradient_image); +} + +void Amarok::VolumeSlider::slotAnimTimer() // SLOT { - if ( m_animEnter ) { - m_animCount++; - update(); - if ( m_animCount == ANIM_MAX - 1 ) - m_animTimer->stop(); - } else { - m_animCount--; - update(); - if ( m_animCount == 0 ) - m_animTimer->stop(); - } + if (m_animEnter) { + m_animCount++; + update(); + if (m_animCount == ANIM_MAX - 1) m_animTimer->stop(); + } else { + m_animCount--; + update(); + if (m_animCount == 0) m_animTimer->stop(); + } } -void -Amarok::VolumeSlider::mousePressEvent( QMouseEvent *e ) -{ - if( e->button() != Qt::RightButton ) { - Amarok::Slider::mousePressEvent( e ); - slideEvent( e ); - } -} - -void -Amarok::VolumeSlider::contextMenuEvent( QContextMenuEvent *e ) -{ - QMap values; - QMenu menu; - menu.setTitle("Volume"); - values[menu.addAction("100%" )] = 100; - values[menu.addAction("80%" )] = 80; - values[menu.addAction("60%" )] = 60; - values[menu.addAction("40%" )] = 40; - values[menu.addAction("20%" )] = 20; - values[menu.addAction("0%" )] = 0; - - QAction* ret = menu.exec( mapToGlobal( e->pos() ) ); - if( ret ) - { - QSlider::setValue( values[ret] ); - emit sliderReleased( values[ret] ); - } +void Amarok::VolumeSlider::mousePressEvent(QMouseEvent* e) { + if (e->button() != Qt::RightButton) { + Amarok::Slider::mousePressEvent(e); + slideEvent(e); + } } -void -Amarok::VolumeSlider::slideEvent( QMouseEvent *e ) -{ - QSlider::setValue( QStyle::sliderValueFromPosition(minimum(), maximum(), e->pos().x(), width()-2 ) ); +void Amarok::VolumeSlider::contextMenuEvent(QContextMenuEvent* e) { + QMap values; + QMenu menu; + menu.setTitle("Volume"); + values[menu.addAction("100%")] = 100; + values[menu.addAction("80%")] = 80; + values[menu.addAction("60%")] = 60; + values[menu.addAction("40%")] = 40; + values[menu.addAction("20%")] = 20; + values[menu.addAction("0%")] = 0; + + QAction* ret = menu.exec(mapToGlobal(e->pos())); + if (ret) { + QSlider::setValue(values[ret]); + emit sliderReleased(values[ret]); + } } -void -Amarok::VolumeSlider::wheelEvent( QWheelEvent *e ) -{ - const uint step = e->delta() / 30; - QSlider::setValue( QSlider::value() + step ); - - emit sliderReleased( value() ); +void Amarok::VolumeSlider::slideEvent(QMouseEvent* e) { + QSlider::setValue(QStyle::sliderValueFromPosition(minimum(), maximum(), + e->pos().x(), width() - 2)); } -void -Amarok::VolumeSlider::paintEvent( QPaintEvent * ) -{ - QPainter p(this); +void Amarok::VolumeSlider::wheelEvent(QWheelEvent* e) { + const uint step = e->delta() / 30; + QSlider::setValue(QSlider::value() + step); - const int padding = 7; - const int offset = int( double( ( width() - 2 * padding ) * value() ) / maximum() ); - - p.drawPixmap(0, 0, m_pixmapGradient, 0, 0, offset + padding, 0); - p.drawPixmap(0, 0, m_pixmapInset); - p.drawPixmap(offset - m_handlePixmaps[0].width() / 2 + padding, 0, m_handlePixmaps[m_animCount]); - - // Draw percentage number - p.setPen( palette().color( QPalette::Disabled, QPalette::Text ).dark() ); - QFont font; - font.setPixelSize( 9 ); - p.setFont( font ); - const QRect rect( 0, 0, 34, 15 ); - p.drawText( rect, Qt::AlignRight | Qt::AlignVCenter, QString::number( value() ) + '%' ); + emit sliderReleased(value()); } -void -Amarok::VolumeSlider::enterEvent( QEvent* ) -{ - m_animEnter = true; - m_animCount = 0; +void Amarok::VolumeSlider::paintEvent(QPaintEvent*) { + QPainter p(this); - m_animTimer->start( ANIM_INTERVAL ); + const int padding = 7; + const int offset = int(double((width() - 2 * padding) * value()) / maximum()); + + p.drawPixmap(0, 0, m_pixmapGradient, 0, 0, offset + padding, 0); + p.drawPixmap(0, 0, m_pixmapInset); + p.drawPixmap(offset - m_handlePixmaps[0].width() / 2 + padding, 0, + m_handlePixmaps[m_animCount]); + + // Draw percentage number + p.setPen(palette().color(QPalette::Disabled, QPalette::Text).dark()); + QFont font; + font.setPixelSize(9); + p.setFont(font); + const QRect rect(0, 0, 34, 15); + p.drawText(rect, Qt::AlignRight | Qt::AlignVCenter, + QString::number(value()) + '%'); } -void -Amarok::VolumeSlider::leaveEvent( QEvent* ) -{ - // This can happen if you enter and leave the widget quickly - if ( m_animCount == 0 ) - m_animCount = 1; +void Amarok::VolumeSlider::enterEvent(QEvent*) { + m_animEnter = true; + m_animCount = 0; - m_animEnter = false; - m_animTimer->start( ANIM_INTERVAL ); + m_animTimer->start(ANIM_INTERVAL); } -void -Amarok::VolumeSlider::paletteChange( const QPalette& ) -{ - generateGradient(); +void Amarok::VolumeSlider::leaveEvent(QEvent*) { + // This can happen if you enter and leave the widget quickly + if (m_animCount == 0) m_animCount = 1; + + m_animEnter = false; + m_animTimer->start(ANIM_INTERVAL); +} + +void Amarok::VolumeSlider::paletteChange(const QPalette&) { + generateGradient(); } diff --git a/src/widgets/sliderwidget.h b/src/widgets/sliderwidget.h index 681026f58..68abd8119 100644 --- a/src/widgets/sliderwidget.h +++ b/src/widgets/sliderwidget.h @@ -20,7 +20,6 @@ #ifndef AMAROKSLIDER_H #define AMAROKSLIDER_H - #include #include #include @@ -28,118 +27,110 @@ class QPalette; class QTimer; -namespace Amarok -{ - class Slider : public QSlider - { - Q_OBJECT +namespace Amarok { +class Slider : public QSlider { + Q_OBJECT - public: - Slider( Qt::Orientation, QWidget*, uint max = 0 ); + public: + Slider(Qt::Orientation, QWidget*, uint max = 0); - virtual void setValue( int ); + virtual void setValue(int); - //WARNING non-virtual - and thus only really intended for internal use - //this is a major flaw in the class presently, however it suits our - //current needs fine - int value() const { return adjustValue( QSlider::value() ); } + // WARNING non-virtual - and thus only really intended for internal use + // this is a major flaw in the class presently, however it suits our + // current needs fine + int value() const { return adjustValue(QSlider::value()); } - signals: - //we emit this when the user has specifically changed the slider - //so connect to it if valueChanged() is too generic - //Qt also emits valueChanged( int ) - void sliderReleased( int ); +signals: + // we emit this when the user has specifically changed the slider + // so connect to it if valueChanged() is too generic + // Qt also emits valueChanged( int ) + void sliderReleased(int); - protected: - virtual void wheelEvent( QWheelEvent* ); - virtual void mouseMoveEvent( QMouseEvent* ); - virtual void mouseReleaseEvent( QMouseEvent* ); - virtual void mousePressEvent( QMouseEvent* ); - virtual void slideEvent( QMouseEvent* ); + protected: + virtual void wheelEvent(QWheelEvent*); + virtual void mouseMoveEvent(QMouseEvent*); + virtual void mouseReleaseEvent(QMouseEvent*); + virtual void mousePressEvent(QMouseEvent*); + virtual void slideEvent(QMouseEvent*); - bool m_sliding; + bool m_sliding; - /// we flip the value for vertical sliders - int adjustValue( int v ) const - { - int mp = (minimum() + maximum()) / 2; - return orientation() == Qt::Vertical ? mp - (v - mp) : v; - } + /// we flip the value for vertical sliders + int adjustValue(int v) const { + int mp = (minimum() + maximum()) / 2; + return orientation() == Qt::Vertical ? mp - (v - mp) : v; + } - private: - bool m_outside; - int m_prevValue; + private: + bool m_outside; + int m_prevValue; - Slider( const Slider& ); //undefined - Slider &operator=( const Slider& ); //undefined - }; + Slider(const Slider&); // undefined + Slider& operator=(const Slider&); // undefined +}; +class PrettySlider : public Slider { + Q_OBJECT - class PrettySlider : public Slider - { - Q_OBJECT + public: + typedef enum { + Normal, // Same behavior as Slider *unless* there's a moodbar + Pretty + } SliderMode; - public: - typedef enum - { - Normal, // Same behavior as Slider *unless* there's a moodbar - Pretty - } SliderMode; + PrettySlider(Qt::Orientation orientation, SliderMode mode, QWidget* parent, + uint max = 0); - PrettySlider( Qt::Orientation orientation, SliderMode mode, - QWidget *parent, uint max = 0 ); + protected: + virtual void slideEvent(QMouseEvent*); + virtual void mousePressEvent(QMouseEvent*); - protected: - virtual void slideEvent( QMouseEvent* ); - virtual void mousePressEvent( QMouseEvent* ); + private: + PrettySlider(const PrettySlider&); // undefined + PrettySlider& operator=(const PrettySlider&); // undefined - private: - PrettySlider( const PrettySlider& ); //undefined - PrettySlider &operator=( const PrettySlider& ); //undefined + SliderMode m_mode; +}; - SliderMode m_mode; - }; +class VolumeSlider : public Slider { + Q_OBJECT - class VolumeSlider: public Slider - { - Q_OBJECT + public: + VolumeSlider(QWidget* parent, uint max = 0); - public: - VolumeSlider( QWidget *parent, uint max = 0 ); + protected: + virtual void paintEvent(QPaintEvent*); + virtual void enterEvent(QEvent*); + virtual void leaveEvent(QEvent*); + virtual void paletteChange(const QPalette&); + virtual void slideEvent(QMouseEvent*); + virtual void mousePressEvent(QMouseEvent*); + virtual void contextMenuEvent(QContextMenuEvent*); + virtual void wheelEvent(QWheelEvent* e); - protected: - virtual void paintEvent( QPaintEvent* ); - virtual void enterEvent( QEvent* ); - virtual void leaveEvent( QEvent* ); - virtual void paletteChange( const QPalette& ); - virtual void slideEvent( QMouseEvent* ); - virtual void mousePressEvent( QMouseEvent* ); - virtual void contextMenuEvent( QContextMenuEvent* ); - virtual void wheelEvent( QWheelEvent *e ); + private slots: + virtual void slotAnimTimer(); - private slots: - virtual void slotAnimTimer(); + private: + void generateGradient(); - private: - void generateGradient(); + VolumeSlider(const VolumeSlider&); // undefined + VolumeSlider& operator=(const VolumeSlider&); // undefined - VolumeSlider( const VolumeSlider& ); //undefined - VolumeSlider &operator=( const VolumeSlider& ); //undefined + //////////////////////////////////////////////////////////////// + static const int ANIM_INTERVAL = 18; + static const int ANIM_MAX = 18; - //////////////////////////////////////////////////////////////// - static const int ANIM_INTERVAL = 18; - static const int ANIM_MAX = 18; + bool m_animEnter; + int m_animCount; + QTimer* m_animTimer; - bool m_animEnter; - int m_animCount; - QTimer* m_animTimer; - - QPixmap m_pixmapInset; - QPixmap m_pixmapGradient; - - QList m_handlePixmaps; - }; + QPixmap m_pixmapInset; + QPixmap m_pixmapGradient; + QList m_handlePixmaps; +}; } #endif diff --git a/src/widgets/stickyslider.cpp b/src/widgets/stickyslider.cpp index f05805e7b..5c7064f14 100644 --- a/src/widgets/stickyslider.cpp +++ b/src/widgets/stickyslider.cpp @@ -17,18 +17,13 @@ #include "stickyslider.h" -StickySlider::StickySlider(QWidget *parent) - : QSlider(parent), - sticky_center_(-1), - sticky_threshold_(10) -{ -} +StickySlider::StickySlider(QWidget* parent) + : QSlider(parent), sticky_center_(-1), sticky_threshold_(10) {} -void StickySlider::mouseMoveEvent(QMouseEvent *e) { +void StickySlider::mouseMoveEvent(QMouseEvent* e) { QSlider::mouseMoveEvent(e); - if (sticky_center_ == -1) - return; + if (sticky_center_ == -1) return; const int v = sliderPosition(); if (v <= sticky_center_ + sticky_threshold_ && diff --git a/src/widgets/stickyslider.h b/src/widgets/stickyslider.h index ba1b5426c..f04f0be4b 100644 --- a/src/widgets/stickyslider.h +++ b/src/widgets/stickyslider.h @@ -23,10 +23,11 @@ class StickySlider : public QSlider { Q_OBJECT Q_PROPERTY(int sticky_center READ sticky_center WRITE set_sticky_center); - Q_PROPERTY(int sticky_threshold READ sticky_threshold WRITE set_sticky_threshold); + Q_PROPERTY(int sticky_threshold READ sticky_threshold WRITE + set_sticky_threshold); public: - StickySlider(QWidget* parent = 0); + StickySlider(QWidget* parent = nullptr); int sticky_center() const { return sticky_center_; } int sticky_threshold() const { return sticky_threshold_; } @@ -41,4 +42,4 @@ class StickySlider : public QSlider { int sticky_threshold_; }; -#endif // STICKYSLIDER_H +#endif // STICKYSLIDER_H diff --git a/src/widgets/stretchheaderview.cpp b/src/widgets/stretchheaderview.cpp index b5a344852..77d988873 100644 --- a/src/widgets/stretchheaderview.cpp +++ b/src/widgets/stretchheaderview.cpp @@ -27,12 +27,13 @@ const int StretchHeaderView::kMinimumColumnWidth = 20; const int StretchHeaderView::kMagicNumber = 0x502c950f; -StretchHeaderView::StretchHeaderView(Qt::Orientation orientation, QWidget* parent) - : QHeaderView(orientation, parent), - stretch_enabled_(false), - in_mouse_move_event_(false) -{ - connect(this, SIGNAL(sectionResized(int,int,int)), SLOT(SectionResized(int,int,int))); +StretchHeaderView::StretchHeaderView(Qt::Orientation orientation, + QWidget* parent) + : QHeaderView(orientation, parent), + stretch_enabled_(false), + in_mouse_move_event_(false) { + connect(this, SIGNAL(sectionResized(int, int, int)), + SLOT(SectionResized(int, int, int))); setMinimumSectionSize(kMinimumColumnWidth); } @@ -46,8 +47,7 @@ void StretchHeaderView::setModel(QAbstractItemModel* model) { } void StretchHeaderView::NormaliseWidths(const QList& sections) { - if (!stretch_enabled_) - return; + if (!stretch_enabled_) return; const ColumnWidthType total_sum = std::accumulate(column_widths_.begin(), column_widths_.end(), 0.0); @@ -55,37 +55,33 @@ void StretchHeaderView::NormaliseWidths(const QList& sections) { if (!sections.isEmpty()) { selected_sum = 0.0; - for (int i=0 ; i& sections) { - if (!stretch_enabled_) - return; + if (!stretch_enabled_) return; ColumnWidthType total_w = 0.0; - for (int i=0 ; i 0.5) - pixels ++; + if (pixels != 0 && total_w - int(total_w) > 0.5) pixels++; total_w += w; - if (!sections.isEmpty() && !sections.contains(i)) - continue; + if (!sections.isEmpty() && !sections.contains(i)) continue; if (pixels == 0 && !isSectionHidden(i)) hideSection(i); @@ -93,15 +89,14 @@ void StretchHeaderView::UpdateWidths(const QList& sections) { showSection(i); } - if (pixels != 0) - resizeSection(i, pixels); + if (pixels != 0) resizeSection(i, pixels); } } void StretchHeaderView::HideSection(int logical) { // Would this hide the last section? bool all_hidden = true; - for (int i=0 ; i 0) { all_hidden = false; break; @@ -129,19 +124,17 @@ void StretchHeaderView::ShowSection(int logical) { // How many sections are visible already? int visible_count = 0; - for (int i=0 ; i logical_sections_to_resize; - for (int i=0 ; i visual) logical_sections_to_resize << i; } @@ -199,7 +191,7 @@ void StretchHeaderView::SetStretchEnabled(bool enabled) { if (enabled) { // Initialise the list of widths from the current state of the widget column_widths_.resize(count()); - for (int i=0 ; i other_columns; - for (int i=0 ; i pixel_widths; QList visual_indices; - for (int i=0 ; i& sections = QList()); @@ -78,14 +78,14 @@ private: // in column_widths_. void UpdateWidths(const QList& sections = QList()); -private slots: + private slots: void SectionResized(int logical, int old_size, int new_size); -private: + private: bool stretch_enabled_; QVector column_widths_; bool in_mouse_move_event_; }; -#endif // STRETCHHEADERVIEW_H +#endif // STRETCHHEADERVIEW_H diff --git a/src/widgets/stylehelper.cpp b/src/widgets/stylehelper.cpp index 84035f4cd..23ab4c697 100644 --- a/src/widgets/stylehelper.cpp +++ b/src/widgets/stylehelper.cpp @@ -39,203 +39,197 @@ #include // Clamps float color values within (0, 255) -static int clamp(float x) -{ - const int val = x > 255 ? 255 : static_cast(x); - return val < 0 ? 0 : val; +static int clamp(float x) { + const int val = x > 255 ? 255 : static_cast(x); + return val < 0 ? 0 : val; } namespace Utils { -qreal StyleHelper::sidebarFontSize() -{ +qreal StyleHelper::sidebarFontSize() { #if defined(Q_WS_MAC) - return 10; + return 10; #else - return 7.5; + return 7.5; #endif } -QColor StyleHelper::panelTextColor(bool lightColored) -{ - if (!lightColored) - return Qt::white; - else - return Qt::black; +QColor StyleHelper::panelTextColor(bool lightColored) { + if (!lightColored) + return Qt::white; + else + return Qt::black; } // Invalid by default, setBaseColor needs to be called at least once QColor StyleHelper::m_baseColor; QColor StyleHelper::m_requestedBaseColor; -QColor StyleHelper::baseColor(bool lightColored) -{ - if (!lightColored) - return m_baseColor; - else - return m_baseColor.lighter(230); +QColor StyleHelper::baseColor(bool lightColored) { + if (!lightColored) + return m_baseColor; + else + return m_baseColor.lighter(230); } -QColor StyleHelper::highlightColor(bool lightColored) -{ - QColor result = baseColor(lightColored); - if (!lightColored) - result.setHsv(result.hue(), - clamp(result.saturation()), +QColor StyleHelper::highlightColor(bool lightColored) { + QColor result = baseColor(lightColored); + if (!lightColored) + result.setHsv(result.hue(), clamp(result.saturation()), clamp(result.value() * 1.16)); - else - result.setHsv(result.hue(), - clamp(result.saturation()), + else + result.setHsv(result.hue(), clamp(result.saturation()), clamp(result.value() * 1.06)); - return result; + return result; } -QColor StyleHelper::shadowColor(bool lightColored) -{ - QColor result = baseColor(lightColored); - result.setHsv(result.hue(), - clamp(result.saturation() * 1.1), - clamp(result.value() * 0.70)); - return result; +QColor StyleHelper::shadowColor(bool lightColored) { + QColor result = baseColor(lightColored); + result.setHsv(result.hue(), clamp(result.saturation() * 1.1), + clamp(result.value() * 0.70)); + return result; } -QColor StyleHelper::borderColor(bool lightColored) -{ - QColor result = baseColor(lightColored); - result.setHsv(result.hue(), - result.saturation(), - result.value() / 2); - return result; +QColor StyleHelper::borderColor(bool lightColored) { + QColor result = baseColor(lightColored); + result.setHsv(result.hue(), result.saturation(), result.value() / 2); + return result; } // We try to ensure that the actual color used are within // reasonalbe bounds while generating the actual baseColor // from the users request. -void StyleHelper::setBaseColor(const QColor &newcolor) -{ - m_requestedBaseColor = newcolor; +void StyleHelper::setBaseColor(const QColor& newcolor) { + m_requestedBaseColor = newcolor; - QColor color; - color.setHsv(newcolor.hue(), - newcolor.saturation() * 0.7, - 64 + newcolor.value() / 3); + QColor color; + color.setHsv(newcolor.hue(), newcolor.saturation() * 0.7, + 64 + newcolor.value() / 3); - if (color.isValid() && color != m_baseColor) { - m_baseColor = color; - foreach (QWidget *w, QApplication::topLevelWidgets()) - w->update(); + if (color.isValid() && color != m_baseColor) { + m_baseColor = color; + for (QWidget* w : QApplication::topLevelWidgets()) { + w->update(); } + } } -static void verticalGradientHelper(QPainter *p, const QRect &spanRect, const QRect &rect, bool lightColored) -{ - QColor highlight = StyleHelper::highlightColor(lightColored); - QColor shadow = StyleHelper::shadowColor(lightColored); - QLinearGradient grad(spanRect.topRight(), spanRect.topLeft()); - grad.setColorAt(0, highlight.lighter(117)); - grad.setColorAt(1, shadow.darker(109)); - p->fillRect(rect, grad); +static void verticalGradientHelper(QPainter* p, const QRect& spanRect, + const QRect& rect, bool lightColored) { + QColor highlight = StyleHelper::highlightColor(lightColored); + QColor shadow = StyleHelper::shadowColor(lightColored); + QLinearGradient grad(spanRect.topRight(), spanRect.topLeft()); + grad.setColorAt(0, highlight.lighter(117)); + grad.setColorAt(1, shadow.darker(109)); + p->fillRect(rect, grad); - QColor light(255, 255, 255, 80); - p->setPen(light); - p->drawLine(rect.topRight() - QPoint(1, 0), rect.bottomRight() - QPoint(1, 0)); - QColor dark(0, 0, 0, 90); - p->setPen(dark); - p->drawLine(rect.topLeft(), rect.bottomLeft()); + QColor light(255, 255, 255, 80); + p->setPen(light); + p->drawLine(rect.topRight() - QPoint(1, 0), + rect.bottomRight() - QPoint(1, 0)); + QColor dark(0, 0, 0, 90); + p->setPen(dark); + p->drawLine(rect.topLeft(), rect.bottomLeft()); } -void StyleHelper::verticalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored) -{ - if (StyleHelper::usePixmapCache()) { - QString key; - QColor keyColor = baseColor(lightColored); - key.sprintf("mh_vertical %d %d %d %d %d", - spanRect.width(), spanRect.height(), clipRect.width(), - clipRect.height(), keyColor.rgb());; +void StyleHelper::verticalGradient(QPainter* painter, const QRect& spanRect, + const QRect& clipRect, bool lightColored) { + if (StyleHelper::usePixmapCache()) { + QString key; + QColor keyColor = baseColor(lightColored); + key.sprintf("mh_vertical %d %d %d %d %d", spanRect.width(), + spanRect.height(), clipRect.width(), clipRect.height(), + keyColor.rgb()); + ; - QPixmap pixmap; - if (!QPixmapCache::find(key, pixmap)) { - pixmap = QPixmap(clipRect.size()); - QPainter p(&pixmap); - QRect rect(0, 0, clipRect.width(), clipRect.height()); - verticalGradientHelper(&p, spanRect, rect, lightColored); - p.end(); - QPixmapCache::insert(key, pixmap); - } - - painter->drawPixmap(clipRect.topLeft(), pixmap); - } else { - verticalGradientHelper(painter, spanRect, clipRect, lightColored); + QPixmap pixmap; + if (!QPixmapCache::find(key, pixmap)) { + pixmap = QPixmap(clipRect.size()); + QPainter p(&pixmap); + QRect rect(0, 0, clipRect.width(), clipRect.height()); + verticalGradientHelper(&p, spanRect, rect, lightColored); + p.end(); + QPixmapCache::insert(key, pixmap); } + + painter->drawPixmap(clipRect.topLeft(), pixmap); + } else { + verticalGradientHelper(painter, spanRect, clipRect, lightColored); + } } // Draws a cached pixmap with shadow -void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect, - QPainter *p, QIcon::Mode iconMode, int radius, const QColor &color, const QPoint &offset) -{ - QPixmap cache; - QString pixmapName = QString("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg(rect.height()); +void StyleHelper::drawIconWithShadow(const QIcon& icon, const QRect& rect, + QPainter* p, QIcon::Mode iconMode, + int radius, const QColor& color, + const QPoint& offset) { + QPixmap cache; + QString pixmapName = + QString("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg( + rect.height()); - if (!QPixmapCache::find(pixmapName, cache)) { - QPixmap px = icon.pixmap(rect.size()); - cache = QPixmap(px.size() + QSize(radius * 2, radius * 2)); - cache.fill(Qt::transparent); + if (!QPixmapCache::find(pixmapName, cache)) { + QPixmap px = icon.pixmap(rect.size()); + cache = QPixmap(px.size() + QSize(radius * 2, radius * 2)); + cache.fill(Qt::transparent); - QPainter cachePainter(&cache); - if (iconMode == QIcon::Disabled) { - QImage im = px.toImage().convertToFormat(QImage::Format_ARGB32); - for (int y=0; ydrawPixmap(targetRect.topLeft() - offset, cache); + // Draw shadow + QImage tmp(px.size() + QSize(radius * 2, radius * 2 + 1), + QImage::Format_ARGB32_Premultiplied); + tmp.fill(Qt::transparent); + + QPainter tmpPainter(&tmp); + tmpPainter.setCompositionMode(QPainter::CompositionMode_Source); + tmpPainter.drawPixmap(QPoint(radius, radius), px); + tmpPainter.end(); + + // blur the alpha channel + QImage blurred(tmp.size(), QImage::Format_ARGB32_Premultiplied); + blurred.fill(Qt::transparent); + QPainter blurPainter(&blurred); + qt_blurImage(&blurPainter, tmp, radius, false, true); + blurPainter.end(); + + tmp = blurred; + + // blacken the image... + tmpPainter.begin(&tmp); + tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); + tmpPainter.fillRect(tmp.rect(), color); + tmpPainter.end(); + + tmpPainter.begin(&tmp); + tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); + tmpPainter.fillRect(tmp.rect(), color); + tmpPainter.end(); + + // draw the blurred drop shadow... + cachePainter.drawImage( + QRect(0, 0, cache.rect().width(), cache.rect().height()), tmp); + + // Draw the actual pixmap... + cachePainter.drawPixmap(QPoint(radius, radius) + offset, px); + QPixmapCache::insert(pixmapName, cache); + } + + QRect targetRect = cache.rect(); + targetRect.moveCenter(rect.center()); + p->drawPixmap(targetRect.topLeft() - offset, cache); } -} // namespace Utils +} // namespace Utils diff --git a/src/widgets/stylehelper.h b/src/widgets/stylehelper.h index 81e878104..f73f4b442 100644 --- a/src/widgets/stylehelper.h +++ b/src/widgets/stylehelper.h @@ -44,42 +44,45 @@ QT_END_NAMESPACE // Helper class holding all custom color values namespace Utils { -class StyleHelper -{ -public: - static const unsigned int DEFAULT_BASE_COLOR = 0x666666; +class StyleHelper { + public: + static const unsigned int DEFAULT_BASE_COLOR = 0x666666; - // Height of the project explorer navigation bar - static qreal sidebarFontSize(); + // Height of the project explorer navigation bar + static qreal sidebarFontSize(); - // This is our color table, all colors derive from baseColor - static QColor requestedBaseColor() { return m_requestedBaseColor; } - static QColor baseColor(bool lightColored = false); - static QColor panelTextColor(bool lightColored = false); - static QColor highlightColor(bool lightColored = false); - static QColor shadowColor(bool lightColored = false); - static QColor borderColor(bool lightColored = false); + // This is our color table, all colors derive from baseColor + static QColor requestedBaseColor() { return m_requestedBaseColor; } + static QColor baseColor(bool lightColored = false); + static QColor panelTextColor(bool lightColored = false); + static QColor highlightColor(bool lightColored = false); + static QColor shadowColor(bool lightColored = false); + static QColor borderColor(bool lightColored = false); - static QColor sidebarHighlight() { return QColor(255, 255, 255, 40); } - static QColor sidebarShadow() { return QColor(0, 0, 0, 40); } + static QColor sidebarHighlight() { return QColor(255, 255, 255, 40); } + static QColor sidebarShadow() { return QColor(0, 0, 0, 40); } - // Sets the base color and makes sure all top level widgets are updated - static void setBaseColor(const QColor &color); + // Sets the base color and makes sure all top level widgets are updated + static void setBaseColor(const QColor& color); - // Gradients used for panels - static void verticalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored = false); - static bool usePixmapCache() { return true; } + // Gradients used for panels + static void verticalGradient(QPainter* painter, const QRect& spanRect, + const QRect& clipRect, + bool lightColored = false); + static bool usePixmapCache() { return true; } - static void drawIconWithShadow(const QIcon &icon, const QRect &rect, QPainter *p, QIcon::Mode iconMode, - int radius = 3, const QColor &color = QColor(0, 0, 0, 130), - const QPoint &offset = QPoint(1, -2)); + static void drawIconWithShadow(const QIcon& icon, const QRect& rect, + QPainter* p, QIcon::Mode iconMode, + int radius = 3, + const QColor& color = QColor(0, 0, 0, 130), + const QPoint& offset = QPoint(1, -2)); -private: - static QColor m_baseColor; - static QColor m_requestedBaseColor; + private: + static QColor m_baseColor; + static QColor m_requestedBaseColor; }; -} // namespace Utils +} // namespace Utils using Utils::StyleHelper; -#endif // STYLEHELPER_H +#endif // STYLEHELPER_H diff --git a/src/widgets/trackslider.cpp b/src/widgets/trackslider.cpp index feb6e6db3..3a092b444 100644 --- a/src/widgets/trackslider.cpp +++ b/src/widgets/trackslider.cpp @@ -23,19 +23,18 @@ #include #ifdef HAVE_MOODBAR -# include "moodbar/moodbarproxystyle.h" +#include "moodbar/moodbarproxystyle.h" #endif const char* TrackSlider::kSettingsGroup = "MainWindow"; TrackSlider::TrackSlider(QWidget* parent) - : QWidget(parent), - ui_(new Ui_TrackSlider), - moodbar_style_(NULL), - setting_value_(false), - show_remaining_time_(true), - slider_maximum_value_(0) -{ + : QWidget(parent), + ui_(new Ui_TrackSlider), + moodbar_style_(nullptr), + setting_value_(false), + show_remaining_time_(true), + slider_maximum_value_(0) { ui_->setupUi(this); UpdateLabelWidth(); @@ -50,9 +49,7 @@ TrackSlider::TrackSlider(QWidget* parent) connect(ui_->remaining, SIGNAL(Clicked()), SLOT(ToggleTimeDisplay())); } -TrackSlider::~TrackSlider() { - delete ui_; -} +TrackSlider::~TrackSlider() { delete ui_; } void TrackSlider::SetApplication(Application* app) { #ifdef HAVE_MOODBAR @@ -82,13 +79,15 @@ QSize TrackSlider::sizeHint() const { width += ui_->elapsed->sizeHint().width(); width += ui_->remaining->sizeHint().width(); - int height = qMax(ui_->slider->sizeHint().height(), ui_->elapsed->sizeHint().height()); + int height = + qMax(ui_->slider->sizeHint().height(), ui_->elapsed->sizeHint().height()); return QSize(width, height); } void TrackSlider::SetValue(int elapsed, int total) { - setting_value_ = true; // This is so we don't emit from QAbstractSlider::valueChanged + setting_value_ = + true; // This is so we don't emit from QAbstractSlider::valueChanged ui_->slider->setMaximum(total); ui_->slider->setValue(elapsed); setting_value_ = false; @@ -98,12 +97,12 @@ void TrackSlider::SetValue(int elapsed, int total) { void TrackSlider::UpdateTimes(int elapsed) { ui_->elapsed->setText(Utilities::PrettyTime(elapsed)); - //update normally if showing remaining time + // update normally if showing remaining time if (show_remaining_time_) { - ui_->remaining->setText("-" + Utilities::PrettyTime(ui_->slider->maximum() - elapsed)); - } - else { - //check if slider maximum value is changed before updating + ui_->remaining->setText( + "-" + Utilities::PrettyTime(ui_->slider->maximum() - elapsed)); + } else { + // check if slider maximum value is changed before updating if (slider_maximum_value_ != ui_->slider->maximum()) { slider_maximum_value_ = ui_->slider->maximum(); ui_->remaining->setText(Utilities::PrettyTime(ui_->slider->maximum())); @@ -129,12 +128,11 @@ void TrackSlider::SetCanSeek(bool can_seek) { void TrackSlider::Seek(int gap) { if (ui_->slider->isEnabled()) - ui_->slider->setValue(ui_->slider->value()+gap); + ui_->slider->setValue(ui_->slider->value() + gap); } void TrackSlider::ValueMaybeChanged(int value) { - if (setting_value_) - return; + if (setting_value_) return; UpdateTimes(value); emit ValueChanged(value); @@ -155,12 +153,12 @@ bool TrackSlider::event(QEvent* e) { void TrackSlider::ToggleTimeDisplay() { show_remaining_time_ = !show_remaining_time_; if (!show_remaining_time_) { - //we set the value to -1 because the label must be updated + // we set the value to -1 because the label must be updated slider_maximum_value_ = -1; } UpdateTimes(ui_->slider->value()); - //save this setting + // save this setting QSettings s; s.beginGroup(kSettingsGroup); s.setValue("show_remaining_time", show_remaining_time_); diff --git a/src/widgets/trackslider.h b/src/widgets/trackslider.h index 68173ee6f..e1cecd720 100644 --- a/src/widgets/trackslider.h +++ b/src/widgets/trackslider.h @@ -30,7 +30,7 @@ class TrackSlider : public QWidget { Q_OBJECT public: - TrackSlider(QWidget* parent = 0); + TrackSlider(QWidget* parent = nullptr); ~TrackSlider(); void SetApplication(Application* app); @@ -39,7 +39,7 @@ class TrackSlider : public QWidget { QSize sizeHint() const; // QObject - bool event(QEvent *); + bool event(QEvent*); MoodbarProxyStyle* moodbar_style() const { return moodbar_style_; } @@ -51,7 +51,7 @@ class TrackSlider : public QWidget { void SetCanSeek(bool can_seek); void Seek(int gap); - signals: +signals: void ValueChanged(int value); private slots: @@ -70,7 +70,7 @@ class TrackSlider : public QWidget { bool setting_value_; bool show_remaining_time_; - int slider_maximum_value_; //we cache it to avoid unnecessary updates + int slider_maximum_value_; // we cache it to avoid unnecessary updates }; -#endif // TRACKSLIDER_H +#endif // TRACKSLIDER_H diff --git a/src/widgets/tracksliderpopup.cpp b/src/widgets/tracksliderpopup.cpp index 711b94c99..d6e9fbc06 100644 --- a/src/widgets/tracksliderpopup.cpp +++ b/src/widgets/tracksliderpopup.cpp @@ -32,12 +32,10 @@ const int TrackSliderPopup::kPointWidth = 4; const int TrackSliderPopup::kBorderRadius = 4; const qreal TrackSliderPopup::kBlurRadius = 20.0; - TrackSliderPopup::TrackSliderPopup(QWidget* parent) - : QWidget(parent), - font_metrics_(fontMetrics()), - small_font_metrics_(fontMetrics()) -{ + : QWidget(parent), + font_metrics_(fontMetrics()), + small_font_metrics_(fontMetrics()) { setAttribute(Qt::WA_TransparentForMouseEvents); setMouseTracking(true); @@ -69,8 +67,8 @@ void TrackSliderPopup::paintEvent(QPaintEvent*) { } void TrackSliderPopup::UpdatePixmap() { - const int text_width = qMax(font_metrics_.width(text_), - small_font_metrics_.width(small_text_)); + const int text_width = + qMax(font_metrics_.width(text_), small_font_metrics_.width(small_text_)); const QRect text_rect1(kBlurRadius + kTextMargin, kBlurRadius + kTextMargin, text_width + 2, font_metrics_.height()); const QRect text_rect2(kBlurRadius + kTextMargin, text_rect1.bottom(), @@ -84,14 +82,15 @@ void TrackSliderPopup::UpdatePixmap() { bubble_bottom - kBlurRadius); if (background_cache_.size() != total_rect.size()) { - const QColor highlight(palette().color(QPalette::Active, QPalette::Highlight)); + const QColor highlight( + palette().color(QPalette::Active, QPalette::Highlight)); const QColor bg_color_1(highlight.lighter(110)); const QColor bg_color_2(highlight.darker(120)); QPolygon pointy; - pointy << QPoint(total_rect.width()/2 - kPointWidth, bubble_bottom) - << QPoint(total_rect.width()/2, total_rect.bottom() - kBlurRadius) - << QPoint(total_rect.width()/2 + kPointWidth, bubble_bottom); + pointy << QPoint(total_rect.width() / 2 - kPointWidth, bubble_bottom) + << QPoint(total_rect.width() / 2, total_rect.bottom() - kBlurRadius) + << QPoint(total_rect.width() / 2 + kPointWidth, bubble_bottom); QPolygon inner_pointy; inner_pointy << QPoint(pointy[0].x() + 1, pointy[0].y() - 1) @@ -138,8 +137,8 @@ void TrackSliderPopup::UpdatePixmap() { // Inner bubble p.setBrush(bg_color_1); - p.drawRoundedRect(bubble_rect.adjusted(1, 1, -1, -1), - kBorderRadius, kBorderRadius); + p.drawRoundedRect(bubble_rect.adjusted(1, 1, -1, -1), kBorderRadius, + kBorderRadius); // Inner pointy p.drawPolygon(inner_pointy); diff --git a/src/widgets/tracksliderpopup.h b/src/widgets/tracksliderpopup.h index a4cfc9095..97d7d5f7b 100644 --- a/src/widgets/tracksliderpopup.h +++ b/src/widgets/tracksliderpopup.h @@ -23,18 +23,18 @@ class TrackSliderPopup : public QWidget { Q_OBJECT -public: + public: TrackSliderPopup(QWidget* parent); -public slots: + public slots: void SetText(const QString& text); void SetSmallText(const QString& small_text); void SetPopupPosition(const QPoint& pos); -protected: + protected: void paintEvent(QPaintEvent*); -private: + private: static const int kTextMargin; static const int kPointLength; static const int kPointWidth; @@ -45,7 +45,7 @@ private: void UpdatePosition(); void SendMouseEventToParent(QMouseEvent* e); -private: + private: QString text_; QString small_text_; QPoint pos_; @@ -58,4 +58,4 @@ private: QPixmap background_cache_; }; -#endif // TRACKSLIDERPOPUP_H +#endif // TRACKSLIDERPOPUP_H diff --git a/src/widgets/tracksliderslider.cpp b/src/widgets/tracksliderslider.cpp index 7c6779624..540c208ad 100644 --- a/src/widgets/tracksliderslider.cpp +++ b/src/widgets/tracksliderslider.cpp @@ -25,10 +25,9 @@ #include TrackSliderSlider::TrackSliderSlider(QWidget* parent) - : QSlider(parent), - popup_(new TrackSliderPopup(window())), - mouse_hover_seconds_(0) -{ + : QSlider(parent), + popup_(new TrackSliderPopup(window())), + mouse_hover_seconds_(0) { setMouseTracking(true); connect(this, SIGNAL(valueChanged(int)), SLOT(UpdateDeltaTime())); @@ -50,11 +49,11 @@ void TrackSliderSlider::mousePressEvent(QMouseEvent* e) { new_button = Qt::RightButton; } - QMouseEvent new_event(e->type(), e->pos(), new_button, new_button, e->modifiers()); + QMouseEvent new_event(e->type(), e->pos(), new_button, new_button, + e->modifiers()); QSlider::mousePressEvent(&new_event); - if (new_event.isAccepted()) - e->accept(); + if (new_event.isAccepted()) e->accept(); } void TrackSliderSlider::mouseReleaseEvent(QMouseEvent* e) { @@ -67,21 +66,23 @@ void TrackSliderSlider::mouseMoveEvent(QMouseEvent* e) { // Borrowed from QSliderPrivate::pixelPosToRangeValue QStyleOptionSlider opt; initStyleOption(&opt); - QRect gr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, this); - QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this); + QRect gr = style()->subControlRect(QStyle::CC_Slider, &opt, + QStyle::SC_SliderGroove, this); + QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, + QStyle::SC_SliderHandle, this); int slider_length = sr.width(); int slider_min = gr.x(); int slider_max = gr.right() - slider_length + 1; mouse_hover_seconds_ = QStyle::sliderValueFromPosition( - minimum(), maximum(), e->x() - slider_length/2 - slider_min + 1, + minimum(), maximum(), e->x() - slider_length / 2 - slider_min + 1, slider_max - slider_min); popup_->SetText(Utilities::PrettyTime(mouse_hover_seconds_)); UpdateDeltaTime(); - popup_->SetPopupPosition(mapTo(window(), QPoint( - e->x(), rect().center().y()))); + popup_->SetPopupPosition( + mapTo(window(), QPoint(e->x(), rect().center().y()))); } void TrackSliderSlider::enterEvent(QEvent* e) { diff --git a/src/widgets/tracksliderslider.h b/src/widgets/tracksliderslider.h index decaf1816..ca23180e8 100644 --- a/src/widgets/tracksliderslider.h +++ b/src/widgets/tracksliderslider.h @@ -26,23 +26,23 @@ class TrackSliderPopup; class TrackSliderSlider : public QSlider { Q_OBJECT -public: - TrackSliderSlider(QWidget* parent = 0); + public: + TrackSliderSlider(QWidget* parent = nullptr); -protected: + protected: void mousePressEvent(QMouseEvent* e); void mouseReleaseEvent(QMouseEvent* e); void mouseMoveEvent(QMouseEvent* e); void enterEvent(QEvent*); void leaveEvent(QEvent*); -private slots: + private slots: void UpdateDeltaTime(); -private: + private: TrackSliderPopup* popup_; int mouse_hover_seconds_; }; -#endif // TRACKSLIDERSLIDER_H +#endif // TRACKSLIDERSLIDER_H diff --git a/src/widgets/widgetfadehelper.cpp b/src/widgets/widgetfadehelper.cpp index b7bb02881..adb1fcb67 100644 --- a/src/widgets/widgetfadehelper.cpp +++ b/src/widgets/widgetfadehelper.cpp @@ -27,11 +27,10 @@ const int WidgetFadeHelper::kLoadingPadding = 9; const int WidgetFadeHelper::kLoadingBorderRadius = 10; WidgetFadeHelper::WidgetFadeHelper(QWidget* parent, int msec) - : QWidget(parent), - parent_(parent), - blur_timeline_(new QTimeLine(msec, this)), - fade_timeline_(new QTimeLine(msec, this)) -{ + : QWidget(parent), + parent_(parent), + blur_timeline_(new QTimeLine(msec, this)), + fade_timeline_(new QTimeLine(msec, this)) { parent->installEventFilter(this); connect(blur_timeline_, SIGNAL(valueChanged(qreal)), SLOT(update())); @@ -43,12 +42,10 @@ WidgetFadeHelper::WidgetFadeHelper(QWidget* parent, int msec) bool WidgetFadeHelper::eventFilter(QObject* obj, QEvent* event) { // We're only interested in our parent's resize events - if (obj != parent_ || event->type() != QEvent::Resize) - return false; + if (obj != parent_ || event->type() != QEvent::Resize) return false; // Don't care if we're hidden - if (!isVisible()) - return false; + if (!isVisible()) return false; QResizeEvent* re = static_cast(event); if (re->oldSize() == re->size()) { @@ -98,8 +95,8 @@ void WidgetFadeHelper::CaptureParent() { const QString loading_text = tr("Loading..."); const QSize loading_size( - kLoadingPadding*2 + loading_font_metrics.width(loading_text), - kLoadingPadding*2 + loading_font_metrics.height()); + kLoadingPadding * 2 + loading_font_metrics.width(loading_text), + kLoadingPadding * 2 + loading_font_metrics.height()); const QRect loading_rect((blurred.width() - loading_size.width()) / 2, 100, loading_size.width(), loading_size.height()); @@ -109,11 +106,13 @@ void WidgetFadeHelper::CaptureParent() { blur_painter.translate(0.5, 0.5); blur_painter.setPen(QColor(200, 200, 200, 255)); blur_painter.setBrush(QColor(200, 200, 200, 192)); - blur_painter.drawRoundedRect(loading_rect, kLoadingBorderRadius, kLoadingBorderRadius); + blur_painter.drawRoundedRect(loading_rect, kLoadingBorderRadius, + kLoadingBorderRadius); blur_painter.setPen(palette().brush(QPalette::Text).color()); blur_painter.setFont(loading_font); - blur_painter.drawText(loading_rect.translated(-1, -1), Qt::AlignCenter, loading_text); + blur_painter.drawText(loading_rect.translated(-1, -1), Qt::AlignCenter, + loading_text); blur_painter.translate(-0.5, -0.5); blur_painter.end(); @@ -144,7 +143,7 @@ void WidgetFadeHelper::StartFade() { setAttribute(Qt::WA_TransparentForMouseEvents, true); } -void WidgetFadeHelper::paintEvent(QPaintEvent* ) { +void WidgetFadeHelper::paintEvent(QPaintEvent*) { QPainter p(this); if (fade_timeline_->state() != QTimeLine::Running) { diff --git a/src/widgets/widgetfadehelper.h b/src/widgets/widgetfadehelper.h index a83af8365..6d73158b0 100644 --- a/src/widgets/widgetfadehelper.h +++ b/src/widgets/widgetfadehelper.h @@ -25,24 +25,24 @@ class QTimeLine; class WidgetFadeHelper : public QWidget { Q_OBJECT -public: + public: WidgetFadeHelper(QWidget* parent, int msec = 500); -public slots: + public slots: void StartBlur(); void StartFade(); -protected: + protected: void paintEvent(QPaintEvent*); bool eventFilter(QObject* obj, QEvent* event); -private slots: + private slots: void FadeFinished(); -private: + private: void CaptureParent(); -private: + private: static const int kLoadingPadding; static const int kLoadingBorderRadius; @@ -54,4 +54,4 @@ private: QPixmap blurred_pixmap_; }; -#endif // WIDGETFADEHELPER_H +#endif // WIDGETFADEHELPER_H diff --git a/src/wiimotedev/consts.h b/src/wiimotedev/consts.h index 0890961d4..1fd275461 100644 --- a/src/wiimotedev/consts.h +++ b/src/wiimotedev/consts.h @@ -60,89 +60,92 @@ const uint8 STATUS_WIIMOTE_CLASSIC_CONNECTED = 0x04; /* Structs --------------------------------------------- */ struct irpoint { - int16 size; - uint16 x; - uint16 y; }; - -struct accdata { - uint8 x; - uint8 y; - uint8 z; - double pitch; - double roll; }; - -struct stickdata { - uint8 x; - uint8 y; }; - -enum GENERAL_BUTTONS { -// 1.0 API - GENERAL_WIIMOTE_BTN_1 = 0, - GENERAL_WIIMOTE_BTN_2, - GENERAL_WIIMOTE_BTN_A, - GENERAL_WIIMOTE_BTN_B, - GENERAL_WIIMOTE_BTN_MINUS, - GENERAL_WIIMOTE_BTN_PLUS, - GENERAL_WIIMOTE_BTN_HOME, - GENERAL_WIIMOTE_BTN_RIGHT, - GENERAL_WIIMOTE_BTN_LEFT, - GENERAL_WIIMOTE_BTN_DOWN, - GENERAL_WIIMOTE_BTN_UP, - GENERAL_WIIMOTE_BTN_SHIFT_BACKWARD, - GENERAL_WIIMOTE_BTN_SHIFT_FORWARD, - GENERAL_WIIMOTE_BTN_SHIFT_RIGHT, - GENERAL_WIIMOTE_BTN_SHIFT_LEFT, - GENERAL_WIIMOTE_BTN_SHIFT_DOWN, - GENERAL_WIIMOTE_BTN_SHIFT_UP, - GENERAL_WIIMOTE_BTN_TILT_FRONT, - GENERAL_WIIMOTE_BTN_TILT_BACK, - GENERAL_WIIMOTE_BTN_TILT_RIGHT, - GENERAL_WIIMOTE_BTN_TILT_LEFT, - GENERAL_NUNCHUK_BTN_C, - GENERAL_NUNCHUK_BTN_Z, - GENERAL_NUNCHUK_BTN_STICK_RIGHT, - GENERAL_NUNCHUK_BTN_STICK_LEFT, - GENERAL_NUNCHUK_BTN_STICK_DOWN, - GENERAL_NUNCHUK_BTN_STICK_UP, - GENERAL_NUNCHUK_BTN_SHIFT_BACKWARD, - GENERAL_NUNCHUK_BTN_SHIFT_FORWARD, - GENERAL_NUNCHUK_BTN_SHIFT_RIGHT, - GENERAL_NUNCHUK_BTN_SHIFT_LEFT, - GENERAL_NUNCHUK_BTN_SHIFT_DOWN, - GENERAL_NUNCHUK_BTN_SHIFT_UP, - GENERAL_NUNCHUK_BTN_TILT_FRONT, - GENERAL_NUNCHUK_BTN_TILT_BACK, - GENERAL_NUNCHUK_BTN_TILT_RIGHT, - GENERAL_NUNCHUK_BTN_TILT_LEFT, - GENERAL_CLASSIC_BTN_X, - GENERAL_CLASSIC_BTN_Y, - GENERAL_CLASSIC_BTN_A, - GENERAL_CLASSIC_BTN_B, - GENERAL_CLASSIC_BTN_L, - GENERAL_CLASSIC_BTN_R, - GENERAL_CLASSIC_BTN_ZL, - GENERAL_CLASSIC_BTN_ZR, - GENERAL_CLASSIC_BTN_MINUS, - GENERAL_CLASSIC_BTN_PLUS, - GENERAL_CLASSIC_BTN_HOME, - GENERAL_CLASSIC_BTN_RIGHT, - GENERAL_CLASSIC_BTN_LEFT, - GENERAL_CLASSIC_BTN_DOWN, - GENERAL_CLASSIC_BTN_UP, - GENERAL_CLASSIC_BTN_LSTICK_RIGHT, - GENERAL_CLASSIC_BTN_LSTICK_LEFT, - GENERAL_CLASSIC_BTN_LSTICK_DOWN, - GENERAL_CLASSIC_BTN_LSTICK_UP, - GENERAL_CLASSIC_BTN_RSTICK_RIGHT, - GENERAL_CLASSIC_BTN_RSTICK_LEFT, - GENERAL_CLASSIC_BTN_RSTICK_DOWN, - GENERAL_CLASSIC_BTN_RSTICK_UP, -// 1.2 API - GENERAL_WIIMOTE_BTN_SHIFT_SHAKE, - GENERAL_NUNCHUK_BTN_SHIFT_SHAKE + int16 size; + uint16 x; + uint16 y; }; -#define calcbit(x) (static_cast( true) << x) +struct accdata { + uint8 x; + uint8 y; + uint8 z; + double pitch; + double roll; +}; + +struct stickdata { + uint8 x; + uint8 y; +}; + +enum GENERAL_BUTTONS { + // 1.0 API + GENERAL_WIIMOTE_BTN_1 = 0, + GENERAL_WIIMOTE_BTN_2, + GENERAL_WIIMOTE_BTN_A, + GENERAL_WIIMOTE_BTN_B, + GENERAL_WIIMOTE_BTN_MINUS, + GENERAL_WIIMOTE_BTN_PLUS, + GENERAL_WIIMOTE_BTN_HOME, + GENERAL_WIIMOTE_BTN_RIGHT, + GENERAL_WIIMOTE_BTN_LEFT, + GENERAL_WIIMOTE_BTN_DOWN, + GENERAL_WIIMOTE_BTN_UP, + GENERAL_WIIMOTE_BTN_SHIFT_BACKWARD, + GENERAL_WIIMOTE_BTN_SHIFT_FORWARD, + GENERAL_WIIMOTE_BTN_SHIFT_RIGHT, + GENERAL_WIIMOTE_BTN_SHIFT_LEFT, + GENERAL_WIIMOTE_BTN_SHIFT_DOWN, + GENERAL_WIIMOTE_BTN_SHIFT_UP, + GENERAL_WIIMOTE_BTN_TILT_FRONT, + GENERAL_WIIMOTE_BTN_TILT_BACK, + GENERAL_WIIMOTE_BTN_TILT_RIGHT, + GENERAL_WIIMOTE_BTN_TILT_LEFT, + GENERAL_NUNCHUK_BTN_C, + GENERAL_NUNCHUK_BTN_Z, + GENERAL_NUNCHUK_BTN_STICK_RIGHT, + GENERAL_NUNCHUK_BTN_STICK_LEFT, + GENERAL_NUNCHUK_BTN_STICK_DOWN, + GENERAL_NUNCHUK_BTN_STICK_UP, + GENERAL_NUNCHUK_BTN_SHIFT_BACKWARD, + GENERAL_NUNCHUK_BTN_SHIFT_FORWARD, + GENERAL_NUNCHUK_BTN_SHIFT_RIGHT, + GENERAL_NUNCHUK_BTN_SHIFT_LEFT, + GENERAL_NUNCHUK_BTN_SHIFT_DOWN, + GENERAL_NUNCHUK_BTN_SHIFT_UP, + GENERAL_NUNCHUK_BTN_TILT_FRONT, + GENERAL_NUNCHUK_BTN_TILT_BACK, + GENERAL_NUNCHUK_BTN_TILT_RIGHT, + GENERAL_NUNCHUK_BTN_TILT_LEFT, + GENERAL_CLASSIC_BTN_X, + GENERAL_CLASSIC_BTN_Y, + GENERAL_CLASSIC_BTN_A, + GENERAL_CLASSIC_BTN_B, + GENERAL_CLASSIC_BTN_L, + GENERAL_CLASSIC_BTN_R, + GENERAL_CLASSIC_BTN_ZL, + GENERAL_CLASSIC_BTN_ZR, + GENERAL_CLASSIC_BTN_MINUS, + GENERAL_CLASSIC_BTN_PLUS, + GENERAL_CLASSIC_BTN_HOME, + GENERAL_CLASSIC_BTN_RIGHT, + GENERAL_CLASSIC_BTN_LEFT, + GENERAL_CLASSIC_BTN_DOWN, + GENERAL_CLASSIC_BTN_UP, + GENERAL_CLASSIC_BTN_LSTICK_RIGHT, + GENERAL_CLASSIC_BTN_LSTICK_LEFT, + GENERAL_CLASSIC_BTN_LSTICK_DOWN, + GENERAL_CLASSIC_BTN_LSTICK_UP, + GENERAL_CLASSIC_BTN_RSTICK_RIGHT, + GENERAL_CLASSIC_BTN_RSTICK_LEFT, + GENERAL_CLASSIC_BTN_RSTICK_DOWN, + GENERAL_CLASSIC_BTN_RSTICK_UP, + // 1.2 API + GENERAL_WIIMOTE_BTN_SHIFT_SHAKE, + GENERAL_NUNCHUK_BTN_SHIFT_SHAKE +}; + +#define calcbit(x) (static_cast(true) << x) const uint64 WIIMOTE_BTN_1 = calcbit(GENERAL_WIIMOTE_BTN_1); const uint64 WIIMOTE_BTN_2 = calcbit(GENERAL_WIIMOTE_BTN_2); @@ -158,8 +161,10 @@ const uint64 WIIMOTE_BTN_LEFT = calcbit(GENERAL_WIIMOTE_BTN_LEFT); const uint64 WIIMOTE_BTN_DOWN = calcbit(GENERAL_WIIMOTE_BTN_DOWN); const uint64 WIIMOTE_BTN_UP = calcbit(GENERAL_WIIMOTE_BTN_UP); -const uint64 WIIMOTE_BTN_SHIFT_BACKWARD = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_BACKWARD); -const uint64 WIIMOTE_BTN_SHIFT_FORWARD = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_FORWARD); +const uint64 WIIMOTE_BTN_SHIFT_BACKWARD = + calcbit(GENERAL_WIIMOTE_BTN_SHIFT_BACKWARD); +const uint64 WIIMOTE_BTN_SHIFT_FORWARD = + calcbit(GENERAL_WIIMOTE_BTN_SHIFT_FORWARD); const uint64 WIIMOTE_BTN_SHIFT_RIGHT = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_RIGHT); const uint64 WIIMOTE_BTN_SHIFT_LEFT = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_LEFT); const uint64 WIIMOTE_BTN_SHIFT_DOWN = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_DOWN); @@ -178,8 +183,10 @@ const uint64 NUNCHUK_BTN_STICK_LEFT = calcbit(GENERAL_NUNCHUK_BTN_STICK_LEFT); const uint64 NUNCHUK_BTN_STICK_DOWN = calcbit(GENERAL_NUNCHUK_BTN_STICK_DOWN); const uint64 NUNCHUK_BTN_STICK_UP = calcbit(GENERAL_NUNCHUK_BTN_STICK_UP); -const uint64 NUNCHUK_BTN_SHIFT_BACKWARD = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_BACKWARD); -const uint64 NUNCHUK_BTN_SHIFT_FORWARD = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_FORWARD); +const uint64 NUNCHUK_BTN_SHIFT_BACKWARD = + calcbit(GENERAL_NUNCHUK_BTN_SHIFT_BACKWARD); +const uint64 NUNCHUK_BTN_SHIFT_FORWARD = + calcbit(GENERAL_NUNCHUK_BTN_SHIFT_FORWARD); const uint64 NUNCHUK_BTN_SHIFT_RIGHT = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_RIGHT); const uint64 NUNCHUK_BTN_SHIFT_LEFT = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_LEFT); const uint64 NUNCHUK_BTN_SHIFT_DOWN = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_DOWN); @@ -206,12 +213,14 @@ const uint64 CLASSIC_BTN_LEFT = calcbit(GENERAL_CLASSIC_BTN_LEFT); const uint64 CLASSIC_BTN_DOWN = calcbit(GENERAL_CLASSIC_BTN_DOWN); const uint64 CLASSIC_BTN_UP = calcbit(GENERAL_CLASSIC_BTN_UP); -const uint64 CLASSIC_BTN_LSTICK_RIGHT = calcbit(GENERAL_CLASSIC_BTN_LSTICK_RIGHT); +const uint64 CLASSIC_BTN_LSTICK_RIGHT = + calcbit(GENERAL_CLASSIC_BTN_LSTICK_RIGHT); const uint64 CLASSIC_BTN_LSTICK_LEFT = calcbit(GENERAL_CLASSIC_BTN_LSTICK_LEFT); const uint64 CLASSIC_BTN_LSTICK_DOWN = calcbit(GENERAL_CLASSIC_BTN_LSTICK_DOWN); const uint64 CLASSIC_BTN_LSTICK_UP = calcbit(GENERAL_CLASSIC_BTN_LSTICK_UP); -const uint64 CLASSIC_BTN_RSTICK_RIGHT = calcbit(GENERAL_CLASSIC_BTN_RSTICK_RIGHT); +const uint64 CLASSIC_BTN_RSTICK_RIGHT = + calcbit(GENERAL_CLASSIC_BTN_RSTICK_RIGHT); const uint64 CLASSIC_BTN_RSTICK_LEFT = calcbit(GENERAL_CLASSIC_BTN_RSTICK_LEFT); const uint64 CLASSIC_BTN_RSTICK_DOWN = calcbit(GENERAL_CLASSIC_BTN_RSTICK_DOWN); @@ -220,87 +229,48 @@ const uint64 CLASSIC_BTN_RSTICK_UP = calcbit(GENERAL_CLASSIC_BTN_RSTICK_UP); const uint64 WIIMOTE_BTN_SHIFT_SHAKE = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_SHAKE); const uint64 NUNCHUK_BTN_SHIFT_SHAKE = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_SHAKE); -const uint64 WIIMOTE_BUTTON_MASK -= WIIMOTE_BTN_1 | - WIIMOTE_BTN_2 | - WIIMOTE_BTN_A | - WIIMOTE_BTN_B | - WIIMOTE_BTN_MINUS | - WIIMOTE_BTN_PLUS | - WIIMOTE_BTN_HOME | - WIIMOTE_BTN_RIGHT | - WIIMOTE_BTN_LEFT | - WIIMOTE_BTN_DOWN | - WIIMOTE_BTN_UP; +const uint64 WIIMOTE_BUTTON_MASK = + WIIMOTE_BTN_1 | WIIMOTE_BTN_2 | WIIMOTE_BTN_A | WIIMOTE_BTN_B | + WIIMOTE_BTN_MINUS | WIIMOTE_BTN_PLUS | WIIMOTE_BTN_HOME | + WIIMOTE_BTN_RIGHT | WIIMOTE_BTN_LEFT | WIIMOTE_BTN_DOWN | WIIMOTE_BTN_UP; -const uint64 WIIMOTE_SHIFT_MASK -= WIIMOTE_BTN_SHIFT_BACKWARD | - WIIMOTE_BTN_SHIFT_FORWARD | - WIIMOTE_BTN_SHIFT_RIGHT | - WIIMOTE_BTN_SHIFT_LEFT | - WIIMOTE_BTN_SHIFT_DOWN | - WIIMOTE_BTN_SHIFT_UP | - WIIMOTE_BTN_SHIFT_SHAKE; +const uint64 WIIMOTE_SHIFT_MASK = + WIIMOTE_BTN_SHIFT_BACKWARD | WIIMOTE_BTN_SHIFT_FORWARD | + WIIMOTE_BTN_SHIFT_RIGHT | WIIMOTE_BTN_SHIFT_LEFT | WIIMOTE_BTN_SHIFT_DOWN | + WIIMOTE_BTN_SHIFT_UP | WIIMOTE_BTN_SHIFT_SHAKE; -const uint64 WIIMOTE_TILT_MASK -= WIIMOTE_BTN_TILT_FRONT | - WIIMOTE_BTN_TILT_BACK | - WIIMOTE_BTN_TILT_RIGHT | - WIIMOTE_BTN_TILT_LEFT; +const uint64 WIIMOTE_TILT_MASK = WIIMOTE_BTN_TILT_FRONT | + WIIMOTE_BTN_TILT_BACK | + WIIMOTE_BTN_TILT_RIGHT | WIIMOTE_BTN_TILT_LEFT; -const uint64 NUNCHUK_BUTTON_MASK -= NUNCHUK_BTN_C | - NUNCHUK_BTN_Z; +const uint64 NUNCHUK_BUTTON_MASK = NUNCHUK_BTN_C | NUNCHUK_BTN_Z; -const uint64 NUNCHUK_STICK_MASK -= NUNCHUK_BTN_STICK_RIGHT | - NUNCHUK_BTN_STICK_LEFT | - NUNCHUK_BTN_STICK_DOWN | - NUNCHUK_BTN_STICK_UP; +const uint64 NUNCHUK_STICK_MASK = NUNCHUK_BTN_STICK_RIGHT | + NUNCHUK_BTN_STICK_LEFT | + NUNCHUK_BTN_STICK_DOWN | NUNCHUK_BTN_STICK_UP; -const uint64 NUNCHUK_SHIFT_MASK -= NUNCHUK_BTN_SHIFT_BACKWARD | - NUNCHUK_BTN_SHIFT_FORWARD | - NUNCHUK_BTN_SHIFT_RIGHT | - NUNCHUK_BTN_SHIFT_LEFT | - NUNCHUK_BTN_SHIFT_DOWN | - NUNCHUK_BTN_SHIFT_UP | - NUNCHUK_BTN_SHIFT_SHAKE; +const uint64 NUNCHUK_SHIFT_MASK = + NUNCHUK_BTN_SHIFT_BACKWARD | NUNCHUK_BTN_SHIFT_FORWARD | + NUNCHUK_BTN_SHIFT_RIGHT | NUNCHUK_BTN_SHIFT_LEFT | NUNCHUK_BTN_SHIFT_DOWN | + NUNCHUK_BTN_SHIFT_UP | NUNCHUK_BTN_SHIFT_SHAKE; -const uint64 NUNCHUK_TILT_MASK -= NUNCHUK_BTN_TILT_FRONT | - NUNCHUK_BTN_TILT_BACK | - NUNCHUK_BTN_TILT_RIGHT | - NUNCHUK_BTN_TILT_LEFT; +const uint64 NUNCHUK_TILT_MASK = NUNCHUK_BTN_TILT_FRONT | + NUNCHUK_BTN_TILT_BACK | + NUNCHUK_BTN_TILT_RIGHT | NUNCHUK_BTN_TILT_LEFT; -const uint64 CLASSIC_BUTTON_MASK -= CLASSIC_BTN_X | - CLASSIC_BTN_Y | - CLASSIC_BTN_A | - CLASSIC_BTN_B | - CLASSIC_BTN_L | - CLASSIC_BTN_R | - CLASSIC_BTN_ZL | - CLASSIC_BTN_ZR | - CLASSIC_BTN_MINUS | - CLASSIC_BTN_PLUS | - CLASSIC_BTN_HOME | - CLASSIC_BTN_RIGHT | - CLASSIC_BTN_LEFT | - CLASSIC_BTN_DOWN | - CLASSIC_BTN_UP; +const uint64 CLASSIC_BUTTON_MASK = + CLASSIC_BTN_X | CLASSIC_BTN_Y | CLASSIC_BTN_A | CLASSIC_BTN_B | + CLASSIC_BTN_L | CLASSIC_BTN_R | CLASSIC_BTN_ZL | CLASSIC_BTN_ZR | + CLASSIC_BTN_MINUS | CLASSIC_BTN_PLUS | CLASSIC_BTN_HOME | + CLASSIC_BTN_RIGHT | CLASSIC_BTN_LEFT | CLASSIC_BTN_DOWN | CLASSIC_BTN_UP; -const uint64 CLASSIC_LSTICK_MASK -= CLASSIC_BTN_LSTICK_RIGHT | - CLASSIC_BTN_LSTICK_LEFT | - CLASSIC_BTN_LSTICK_DOWN | - CLASSIC_BTN_LSTICK_UP; +const uint64 CLASSIC_LSTICK_MASK = + CLASSIC_BTN_LSTICK_RIGHT | CLASSIC_BTN_LSTICK_LEFT | + CLASSIC_BTN_LSTICK_DOWN | CLASSIC_BTN_LSTICK_UP; -const uint64 CLASSIC_RSTICK_MASK -= CLASSIC_BTN_RSTICK_RIGHT | - CLASSIC_BTN_RSTICK_LEFT | - CLASSIC_BTN_RSTICK_DOWN | - CLASSIC_BTN_RSTICK_UP; +const uint64 CLASSIC_RSTICK_MASK = + CLASSIC_BTN_RSTICK_RIGHT | CLASSIC_BTN_RSTICK_LEFT | + CLASSIC_BTN_RSTICK_DOWN | CLASSIC_BTN_RSTICK_UP; const uint64 WIIMOTE_BUTTON_NOTMASK = ~WIIMOTE_BUTTON_MASK; const uint64 WIIMOTE_SHIFT_NOTMASK = ~WIIMOTE_SHIFT_MASK; @@ -313,4 +283,4 @@ const uint64 CLASSIC_BUTTON_NOTMASK = ~CLASSIC_BUTTON_MASK; const uint64 CLASSIC_LSTICK_NOTMASK = ~CLASSIC_LSTICK_MASK; const uint64 CLASSIC_RSTICK_NOTMASK = ~CLASSIC_RSTICK_MASK; -#endif // WIIMOTEDEV_CONSTS_H +#endif // WIIMOTEDEV_CONSTS_H diff --git a/src/wiimotedev/shortcuts.cpp b/src/wiimotedev/shortcuts.cpp index c01e4f4f8..d002d048c 100644 --- a/src/wiimotedev/shortcuts.cpp +++ b/src/wiimotedev/shortcuts.cpp @@ -23,35 +23,39 @@ const char* WiimotedevShortcuts::kActionsGroup = "WiimotedevActions"; const char* WiimotedevShortcuts::kSettingsGroup = "WiimotedevSettings"; -WiimotedevShortcuts::WiimotedevShortcuts(OSD* osd, QWidget* window, QObject* parent) - :QObject(parent), - osd_(osd), - main_window_(window), - player_(qobject_cast(parent)), - low_battery_notification_(true), - critical_battery_notification_(true), - actived_(false), - wiimotedev_active_(true), - wiimotedev_buttons_(0), - wiimotedev_device_(1), - wiimotedev_enable_(true), - wiimotedev_focus_(false), - wiimotedev_iface_(NULL), - wiimotedev_notification_(true) -{ - connect(this, SIGNAL(WiiremoteActived(int)), osd_, SLOT(WiiremoteActived(int))); - connect(this, SIGNAL(WiiremoteDeactived(int)), osd_, SLOT(WiiremoteDeactived(int))); - connect(this, SIGNAL(WiiremoteConnected(int)), osd_, SLOT(WiiremoteConnected(int))); - connect(this, SIGNAL(WiiremoteDisconnected(int)), osd_, SLOT(WiiremoteDisconnected(int))); - connect(this, SIGNAL(WiiremoteLowBattery(int,int)), osd_, SLOT(WiiremoteLowBattery(int,int))); - connect(this, SIGNAL(WiiremoteCriticalBattery(int,int)), osd_, SLOT(WiiremoteCriticalBattery(int,int))); +WiimotedevShortcuts::WiimotedevShortcuts(OSD* osd, QWidget* window, + QObject* parent) + : QObject(parent), + osd_(osd), + main_window_(window), + player_(qobject_cast(parent)), + low_battery_notification_(true), + critical_battery_notification_(true), + actived_(false), + wiimotedev_active_(true), + wiimotedev_buttons_(0), + wiimotedev_device_(1), + wiimotedev_enable_(true), + wiimotedev_focus_(false), + wiimotedev_notification_(true) { + connect(this, SIGNAL(WiiremoteActived(int)), osd_, + SLOT(WiiremoteActived(int))); + connect(this, SIGNAL(WiiremoteDeactived(int)), osd_, + SLOT(WiiremoteDeactived(int))); + connect(this, SIGNAL(WiiremoteConnected(int)), osd_, + SLOT(WiiremoteConnected(int))); + connect(this, SIGNAL(WiiremoteDisconnected(int)), osd_, + SLOT(WiiremoteDisconnected(int))); + connect(this, SIGNAL(WiiremoteLowBattery(int, int)), osd_, + SLOT(WiiremoteLowBattery(int, int))); + connect(this, SIGNAL(WiiremoteCriticalBattery(int, int)), osd_, + SLOT(WiiremoteCriticalBattery(int, int))); ReloadSettings(); } void WiimotedevShortcuts::SetWiimotedevInterfaceActived(bool actived) { - if (!QDBusConnection::systemBus().isConnected()) - return; + if (!QDBusConnection::systemBus().isConnected()) return; // http://code.google.com/p/clementine-player/issues/detail?id=670 // Probably dbus bug, or something else @@ -61,21 +65,22 @@ void WiimotedevShortcuts::SetWiimotedevInterfaceActived(bool actived) { WIIMOTEDEV_DBUS_SERVICE_NAME, WIIMOTEDEV_DBUS_EVENTS_OBJECT, QDBusConnection::systemBus(), this)); - connect(wiimotedev_iface_.get(), SIGNAL(dbusWiimoteGeneralButtons(uint,qulonglong)), - this, SLOT(DbusWiimoteGeneralButtons(uint,qulonglong))); + connect(wiimotedev_iface_.get(), + SIGNAL(dbusWiimoteGeneralButtons(uint, qulonglong)), this, + SLOT(DbusWiimoteGeneralButtons(uint, qulonglong))); connect(wiimotedev_iface_.get(), SIGNAL(dbusWiimoteConnected(uint)), this, SLOT(DbusWiimoteConnected(uint))); - connect(wiimotedev_iface_.get(), SIGNAL(dbusWiimoteDisconnected(uint)), this, - SLOT(DbusWiimoteDisconnected(uint))); - connect(wiimotedev_iface_.get(), SIGNAL(dbusWiimoteBatteryLife(uint,uchar)), this, - SLOT(DbusWiimoteBatteryLife(uint,uchar))); + connect(wiimotedev_iface_.get(), SIGNAL(dbusWiimoteDisconnected(uint)), + this, SLOT(DbusWiimoteDisconnected(uint))); + connect(wiimotedev_iface_.get(), + SIGNAL(dbusWiimoteBatteryLife(uint, uchar)), this, + SLOT(DbusWiimoteBatteryLife(uint, uchar))); if (!wiimotedev_iface_.get()->isValid()) qWarning("Error connecting to the Wiimotedev-daemon DBUS service"); } - if (!actived && wiimotedev_iface_) - wiimotedev_iface_.reset(); + if (!actived && wiimotedev_iface_) wiimotedev_iface_.reset(); } void WiimotedevShortcuts::ReloadSettings() { @@ -87,11 +92,10 @@ void WiimotedevShortcuts::ReloadSettings() { quint64 fvalue, svalue; bool fvalid, svalid; - foreach (const QString& str, settings_.allKeys()) { + for (const QString& str : settings_.allKeys()) { fvalue = str.toULongLong(&fvalid, 10); svalue = settings_.value(str, 0).toULongLong(&svalid); - if (fvalid && svalid) - actions_[fvalue] = svalue; + if (fvalid && svalid) actions_[fvalue] = svalue; } settings_.endGroup(); @@ -110,14 +114,11 @@ void WiimotedevShortcuts::ReloadSettings() { void WiimotedevShortcuts::DbusWiimoteGeneralButtons(uint id, qulonglong value) { if (id != wiimotedev_device_ || !wiimotedev_enable_ || !player_) return; - if (wiimotedev_focus_ && !main_window_->isActiveWindow()) - return; + if (wiimotedev_focus_ && !main_window_->isActiveWindow()) return; - quint64 buttons = value & ~( - WIIMOTE_TILT_MASK | - NUNCHUK_TILT_MASK | - WIIMOTE_BTN_SHIFT_SHAKE | - NUNCHUK_BTN_SHIFT_SHAKE); + quint64 buttons = + value & ~(WIIMOTE_TILT_MASK | NUNCHUK_TILT_MASK | + WIIMOTE_BTN_SHIFT_SHAKE | NUNCHUK_BTN_SHIFT_SHAKE); if (wiimotedev_buttons_ == buttons) return; @@ -128,7 +129,8 @@ void WiimotedevShortcuts::DbusWiimoteGeneralButtons(uint id, qulonglong value) { actived_ = !actived_; if (wiimotedev_notification_) { if (actived_) - emit WiiremoteActived(id); else + emit WiiremoteActived(id); + else emit WiiremoteDeactived(id); } } @@ -136,19 +138,45 @@ void WiimotedevShortcuts::DbusWiimoteGeneralButtons(uint id, qulonglong value) { if (actived_ || !wiimotedev_active_) { switch (actions_.value(buttons, ActionNone)) { - case PlayerNextTrack: player_->Next(); break; - case PlayerPreviousTrack: player_->Previous(); break; - case PlayerPlay: player_->Play(); break; - case PlayerStop: player_->Stop(); break; - case PlayerIncVolume: player_->VolumeUp(); break; - case PlayerDecVolume: player_->VolumeDown(); break; - case PlayerMute: player_->Mute(); break; - case PlayerPause: player_->Pause(); break; - case PlayerTogglePause: player_->PlayPause(); break; - case PlayerSeekBackward: player_->SeekBackward(); break; - case PlayerSeekForward: player_->SeekForward(); break; - case PlayerStopAfter: player_->Stop(); break; - case PlayerShowOSD: player_->ShowOSD(); break; + case PlayerNextTrack: + player_->Next(); + break; + case PlayerPreviousTrack: + player_->Previous(); + break; + case PlayerPlay: + player_->Play(); + break; + case PlayerStop: + player_->Stop(); + break; + case PlayerIncVolume: + player_->VolumeUp(); + break; + case PlayerDecVolume: + player_->VolumeDown(); + break; + case PlayerMute: + player_->Mute(); + break; + case PlayerPause: + player_->Pause(); + break; + case PlayerTogglePause: + player_->PlayPause(); + break; + case PlayerSeekBackward: + player_->SeekBackward(); + break; + case PlayerSeekForward: + player_->SeekForward(); + break; + case PlayerStopAfter: + player_->Stop(); + break; + case PlayerShowOSD: + player_->ShowOSD(); + break; } } } @@ -180,5 +208,3 @@ void WiimotedevShortcuts::DbusWiimoteBatteryLife(uint id, uchar life) { } } } - - diff --git a/src/wiimotedev/shortcuts.h b/src/wiimotedev/shortcuts.h index 046a5829b..7f19faa24 100644 --- a/src/wiimotedev/shortcuts.h +++ b/src/wiimotedev/shortcuts.h @@ -18,8 +18,9 @@ #ifndef WIIMOTEDEV_SHORTCUTS_H #define WIIMOTEDEV_SHORTCUTS_H +#include + #include -#include #include "dbus/wiimotedev.h" #include "core/player.h" @@ -27,13 +28,13 @@ class QSettings; -class WiimotedevShortcuts :public QObject { +class WiimotedevShortcuts : public QObject { Q_OBJECT -public: + public: static const char* kActionsGroup; static const char* kSettingsGroup; - WiimotedevShortcuts(OSD* osd, QWidget* window, QObject* parent = 0); + WiimotedevShortcuts(OSD* osd, QWidget* window, QObject* parent = nullptr); enum Action { WiimotedevActiveDeactive = 0, @@ -50,20 +51,20 @@ public: PlayerSeekForward, PlayerStopAfter, PlayerShowOSD, - ActionNone = 0xff + ActionNone = 0xff }; -public slots: + public slots: void SetWiimotedevInterfaceActived(bool actived); void ReloadSettings(); -private slots: + private slots: void DbusWiimoteBatteryLife(uint id, uchar life); void DbusWiimoteConnected(uint id); void DbusWiimoteDisconnected(uint id); void DbusWiimoteGeneralButtons(uint id, qulonglong value); -private: + private: OSD* osd_; QWidget* main_window_; Player* player_; @@ -77,10 +78,10 @@ private: quint32 wiimotedev_device_; bool wiimotedev_enable_; bool wiimotedev_focus_; - boost::scoped_ptr wiimotedev_iface_; + std::unique_ptr wiimotedev_iface_; bool wiimotedev_notification_; - QHash actions_; + QHash actions_; QSettings settings_; signals: @@ -92,4 +93,4 @@ signals: void WiiremoteCriticalBattery(int, int); }; -#endif // WIIMOTEDEV_SHORTCUTS_H +#endif // WIIMOTEDEV_SHORTCUTS_H diff --git a/src/wiimotedev/wiimotesettingspage.cpp b/src/wiimotedev/wiimotesettingspage.cpp index 1c33c69a1..3c9adfcf3 100644 --- a/src/wiimotedev/wiimotesettingspage.cpp +++ b/src/wiimotedev/wiimotesettingspage.cpp @@ -23,11 +23,8 @@ #include - WiimoteSettingsPage::WiimoteSettingsPage(SettingsDialog* dialog) - : SettingsPage(dialog), - ui_(new Ui_WiimoteSettingsPage) -{ + : SettingsPage(dialog), ui_(new Ui_WiimoteSettingsPage) { ui_->setupUi(this); ui_->list->header()->setResizeMode(QHeaderView::ResizeToContents); setWindowIcon(QIcon(":/icons/32x32/wiimotedev.png")); @@ -95,39 +92,55 @@ WiimoteSettingsPage::WiimoteSettingsPage(SettingsDialog* dialog) text_buttons_.insert(WIIMOTE_BTN_SHIFT_SHAKE, "Wiiremote Shift Shake"); text_buttons_.insert(NUNCHUK_BTN_SHIFT_SHAKE, "Nunchuk Shift Shake"); - text_actions_.insert(WiimotedevShortcuts::WiimotedevActiveDeactive, tr("Active/deactive Wiiremote")); + text_actions_.insert(WiimotedevShortcuts::WiimotedevActiveDeactive, + tr("Active/deactive Wiiremote")); text_actions_.insert(WiimotedevShortcuts::PlayerNextTrack, tr("Next track")); - text_actions_.insert(WiimotedevShortcuts::PlayerPreviousTrack, tr("Previous track")); + text_actions_.insert(WiimotedevShortcuts::PlayerPreviousTrack, + tr("Previous track")); text_actions_.insert(WiimotedevShortcuts::PlayerPlay, tr("Play")); text_actions_.insert(WiimotedevShortcuts::PlayerStop, tr("Stop")); - text_actions_.insert(WiimotedevShortcuts::PlayerIncVolume, tr("Increase volume")); - text_actions_.insert(WiimotedevShortcuts::PlayerDecVolume, tr("Decrease volume")); + text_actions_.insert(WiimotedevShortcuts::PlayerIncVolume, + tr("Increase volume")); + text_actions_.insert(WiimotedevShortcuts::PlayerDecVolume, + tr("Decrease volume")); text_actions_.insert(WiimotedevShortcuts::PlayerMute, tr("Mute")); text_actions_.insert(WiimotedevShortcuts::PlayerPause, tr("Pause")); - text_actions_.insert(WiimotedevShortcuts::PlayerTogglePause, tr("Play/Pause")); - text_actions_.insert(WiimotedevShortcuts::PlayerSeekBackward, tr("Seek backward")); - text_actions_.insert(WiimotedevShortcuts::PlayerSeekForward, tr("Seek forward")); + text_actions_.insert(WiimotedevShortcuts::PlayerTogglePause, + tr("Play/Pause")); + text_actions_.insert(WiimotedevShortcuts::PlayerSeekBackward, + tr("Seek backward")); + text_actions_.insert(WiimotedevShortcuts::PlayerSeekForward, + tr("Seek forward")); text_actions_.insert(WiimotedevShortcuts::PlayerStopAfter, tr("Stop after")); text_actions_.insert(WiimotedevShortcuts::PlayerShowOSD, tr("Show OSD")); - connect(ui_->list, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(ItemClicked(QTreeWidgetItem*))); + connect(ui_->list, + SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), + SLOT(ItemClicked(QTreeWidgetItem*))); - connect(ui_->wiimotedev_add_action, SIGNAL(clicked()), this, SLOT(AddAction())); - connect(ui_->wiimotedev_delete_action, SIGNAL(clicked()), this, SLOT(DeleteAction())); - connect(ui_->wiimotedev_reload, SIGNAL(clicked()), this , SLOT(DefaultSettings())); + connect(ui_->wiimotedev_add_action, SIGNAL(clicked()), this, + SLOT(AddAction())); + connect(ui_->wiimotedev_delete_action, SIGNAL(clicked()), this, + SLOT(DeleteAction())); + connect(ui_->wiimotedev_reload, SIGNAL(clicked()), this, + SLOT(DefaultSettings())); } - void WiimoteSettingsPage::AddShortcut(quint64 button, quint32 action) { - foreach (const Shortcut& shortcut, actions_) { + for (const Shortcut& shortcut : actions_) { if (shortcut.button == button) { - QMessageBox::information(this, tr("Information"), QString(tr("Shortcut for %1 already exists")).arg(GetReadableWiiremoteSequence(button)), QMessageBox::Ok); + QMessageBox::information(this, tr("Information"), + QString(tr("Shortcut for %1 already exists")) + .arg(GetReadableWiiremoteSequence(button)), + QMessageBox::Ok); return; } } Shortcut s; - s.object = new QTreeWidgetItem(ui_->list, QStringList() << GetReadableWiiremoteSequence(button) << text_actions_[action]); + s.object = new QTreeWidgetItem( + ui_->list, QStringList() << GetReadableWiiremoteSequence(button) + << text_actions_[action]); s.button = button; s.action = action; actions_ << s; @@ -137,9 +150,12 @@ void WiimoteSettingsPage::Load() { QSettings s; s.beginGroup(WiimotedevShortcuts::kSettingsGroup); ui_->wiimotedev_enable->setChecked(s.value("enabled", false).toBool()); - ui_->wiimotedev_active->setChecked(s.value("use_active_action", true).toBool()); - ui_->wiimotedev_focus->setChecked(s.value("only_when_focused", false).toBool()); - ui_->wiimotedev_notification->setChecked(s.value("use_notification", true).toBool()); + ui_->wiimotedev_active->setChecked( + s.value("use_active_action", true).toBool()); + ui_->wiimotedev_focus->setChecked( + s.value("only_when_focused", false).toBool()); + ui_->wiimotedev_notification->setChecked( + s.value("use_notification", true).toBool()); ui_->wiimotedev_device->setValue(s.value("device", 1).toUInt()); bool first_conf = s.value("first_conf", true).toBool(); s.endGroup(); @@ -156,11 +172,10 @@ void WiimoteSettingsPage::Load() { quint64 fvalue, svalue; bool fvalid, svalid; - foreach (const QString& str, s.allKeys()) { + for (const QString& str : s.allKeys()) { fvalue = str.toULongLong(&fvalid, 10); svalue = s.value(str, 0).toULongLong(&svalid); - if (fvalid && svalid) - AddShortcut(fvalue, svalue); + if (fvalid && svalid) AddShortcut(fvalue, svalue); } s.endGroup(); @@ -172,7 +187,7 @@ void WiimoteSettingsPage::Save() { s.beginGroup(WiimotedevShortcuts::kActionsGroup); s.remove(""); - foreach (const Shortcut& shortcut, actions_) + for (const Shortcut& shortcut : actions_) s.setValue(QString::number(shortcut.button), shortcut.action); s.endGroup(); @@ -213,15 +228,12 @@ QString WiimoteSettingsPage::GetReadableWiiremoteSequence(quint64 value) { QStringList list; while (text.hasNext()) { text.next(); - if ((text.key() & value) == text.key()) - list << text.value(); + if ((text.key() & value) == text.key()) list << text.value(); } - QString output; if (!list.isEmpty()) { - for (int i = 0; i < (list.count() - 1); ++i) - output += list.at(i) + " + "; + for (int i = 0; i < (list.count() - 1); ++i) output += list.at(i) + " + "; output += list.last(); } else output = tr("Push Wiiremote button"); @@ -232,7 +244,8 @@ QString WiimoteSettingsPage::GetReadableWiiremoteSequence(quint64 value) { void WiimoteSettingsPage::AddAction() { emit SetWiimotedevInterfaceActived(false); WiimoteShortcutGrabber grabber(0, ui_->wiimotedev_device->value(), this); - connect(&grabber, SIGNAL(AddShortcut(quint64,quint32)), this, SLOT(AddShortcut(quint64,quint32)), Qt::QueuedConnection); + connect(&grabber, SIGNAL(AddShortcut(quint64, quint32)), this, + SLOT(AddShortcut(quint64, quint32)), Qt::QueuedConnection); grabber.exec(); emit SetWiimotedevInterfaceActived(true); diff --git a/src/wiimotedev/wiimotesettingspage.h b/src/wiimotedev/wiimotesettingspage.h index af31966d1..6597b91b8 100644 --- a/src/wiimotedev/wiimotesettingspage.h +++ b/src/wiimotedev/wiimotesettingspage.h @@ -28,7 +28,7 @@ class Ui_WiimoteSettingsPage; class WiimoteSettingsPage : public SettingsPage { Q_OBJECT -public: + public: WiimoteSettingsPage(SettingsDialog* dialog); void Load(); @@ -40,14 +40,14 @@ public: signals: void SetWiimotedevInterfaceActived(bool); -private slots: + private slots: void AddAction(); void AddShortcut(quint64 button, quint32 action); void DefaultSettings(); void DeleteAction(); void ItemClicked(QTreeWidgetItem*); -private: + private: struct Shortcut { QTreeWidgetItem* object; quint64 button; @@ -65,4 +65,4 @@ private: QTreeWidgetItem* selected_item_; }; -#endif // WIIMOTESETTINGSPAGE_H +#endif // WIIMOTESETTINGSPAGE_H diff --git a/src/wiimotedev/wiimoteshortcutgrabber.cpp b/src/wiimotedev/wiimoteshortcutgrabber.cpp index 3cfbc57dc..6e2259fa0 100644 --- a/src/wiimotedev/wiimoteshortcutgrabber.cpp +++ b/src/wiimotedev/wiimoteshortcutgrabber.cpp @@ -21,46 +21,43 @@ WiimoteShortcutGrabber::WiimoteShortcutGrabber(quint32 action, quint32 device, WiimoteSettingsPage* parent) - :QDialog(parent), - pref_action_(action), - ui_(new Ui_WiimoteShortcutGrabber), - config_(parent), - wiimotedev_device_(device), - wiimotedev_buttons_(0), - remember_wiimote_shifts_(0), - remember_nunchuk_shifts_(0) -{ + : QDialog(parent), + pref_action_(action), + ui_(new Ui_WiimoteShortcutGrabber), + config_(parent), + wiimotedev_device_(device), + wiimotedev_buttons_(0), + remember_wiimote_shifts_(0), + remember_nunchuk_shifts_(0) { ui_->setupUi(this); if (QDBusConnection::systemBus().isConnected()) { wiimotedev_iface_.reset(new OrgWiimotedevDeviceEventsInterface( - WIIMOTEDEV_DBUS_SERVICE_NAME, - WIIMOTEDEV_DBUS_EVENTS_OBJECT, - QDBusConnection::systemBus(), - this)); + WIIMOTEDEV_DBUS_SERVICE_NAME, WIIMOTEDEV_DBUS_EVENTS_OBJECT, + QDBusConnection::systemBus(), this)); - connect(wiimotedev_iface_.get(), SIGNAL(dbusWiimoteGeneralButtons(uint,qulonglong)), - this, SLOT(DbusWiimoteGeneralButtons(uint,qulonglong))); + connect(wiimotedev_iface_.get(), + SIGNAL(dbusWiimoteGeneralButtons(uint, qulonglong)), this, + SLOT(DbusWiimoteGeneralButtons(uint, qulonglong))); } - foreach (const QString& name, config_->TextActions()) + for (const QString& name : config_->TextActions()) ui_->comboBox->addItem(name); ui_->comboBox->setCurrentIndex(pref_action_); ui_->keep_label->setVisible(false); - connect(ui_->remember_shifts, SIGNAL(clicked(bool)), this, SLOT(RememberSwingChecked(bool))); - connect(ui_->buttonBox, SIGNAL(rejected()), this, SLOT(close())); + connect(ui_->remember_shifts, SIGNAL(clicked(bool)), this, + SLOT(RememberSwingChecked(bool))); + connect(ui_->buttonBox, SIGNAL(rejected()), this, SLOT(close())); connect(&line_, SIGNAL(frameChanged(int)), this, SLOT(Timeout(int))); line_.setFrameRange(4, 0); line_.setEasingCurve(QEasingCurve::Linear); - line_.setDuration(line_.startFrame()*1000); + line_.setDuration(line_.startFrame() * 1000); } -WiimoteShortcutGrabber::~WiimoteShortcutGrabber() { - delete ui_; -} +WiimoteShortcutGrabber::~WiimoteShortcutGrabber() { delete ui_; } void WiimoteShortcutGrabber::Timeout(int secs) { if (!secs) { @@ -69,8 +66,11 @@ void WiimoteShortcutGrabber::Timeout(int secs) { } if (secs == 1) - ui_->keep_label->setText(QString(tr("Keep buttons for %1 second...")).arg(QString::number(secs))); else - ui_->keep_label->setText(QString(tr("Keep buttons for %1 seconds...")).arg(QString::number(secs))); + ui_->keep_label->setText(QString(tr("Keep buttons for %1 second...")) + .arg(QString::number(secs))); + else + ui_->keep_label->setText(QString(tr("Keep buttons for %1 seconds...")) + .arg(QString::number(secs))); } void WiimoteShortcutGrabber::RememberSwingChecked(bool checked) { @@ -78,9 +78,8 @@ void WiimoteShortcutGrabber::RememberSwingChecked(bool checked) { line_.stop(); ui_->keep_label->setVisible(false); - if (checked) { - buttons |= remember_wiimote_shifts_ | remember_nunchuk_shifts_; + buttons |= remember_wiimote_shifts_ | remember_nunchuk_shifts_; ui_->combo->setText(config_->GetReadableWiiremoteSequence(buttons)); } else { remember_wiimote_shifts_ = 0; @@ -90,15 +89,13 @@ void WiimoteShortcutGrabber::RememberSwingChecked(bool checked) { } } - -void WiimoteShortcutGrabber::DbusWiimoteGeneralButtons(uint id, qulonglong value) { +void WiimoteShortcutGrabber::DbusWiimoteGeneralButtons(uint id, + qulonglong value) { if (wiimotedev_device_ != id) return; - quint64 buttons = value & ~( - WIIMOTE_TILT_MASK | - NUNCHUK_TILT_MASK | - WIIMOTE_BTN_SHIFT_SHAKE | - NUNCHUK_BTN_SHIFT_SHAKE); + quint64 buttons = + value & ~(WIIMOTE_TILT_MASK | NUNCHUK_TILT_MASK | + WIIMOTE_BTN_SHIFT_SHAKE | NUNCHUK_BTN_SHIFT_SHAKE); if (ui_->remember_shifts->isChecked()) { if (!(buttons & WIIMOTE_SHIFT_MASK)) buttons |= remember_wiimote_shifts_; @@ -114,7 +111,8 @@ void WiimoteShortcutGrabber::DbusWiimoteGeneralButtons(uint id, qulonglong value if (buttons) line_.start(); ui_->keep_label->setVisible(buttons); - ui_->keep_label->setText(QString(tr("Keep buttons for %1 seconds...")).arg(QString::number(line_.startFrame()))); + ui_->keep_label->setText(QString(tr("Keep buttons for %1 seconds...")) + .arg(QString::number(line_.startFrame()))); ui_->combo->setText(config_->GetReadableWiiremoteSequence(buttons)); wiimotedev_buttons_ = buttons; diff --git a/src/wiimotedev/wiimoteshortcutgrabber.h b/src/wiimotedev/wiimoteshortcutgrabber.h index 130e167e8..853573987 100644 --- a/src/wiimotedev/wiimoteshortcutgrabber.h +++ b/src/wiimotedev/wiimoteshortcutgrabber.h @@ -18,36 +18,35 @@ #ifndef WIIMOTESHORTCUTGRABBER_H #define WIIMOTESHORTCUTGRABBER_H +#include + #include #include -#include - #include "wiimotesettingspage.h" #include "dbus/wiimotedev.h" class Ui_WiimoteShortcutGrabber; - class WiimoteShortcutGrabber : public QDialog { Q_OBJECT -public: + public: WiimoteShortcutGrabber(quint32 action, quint32 device, WiimoteSettingsPage* parent); ~WiimoteShortcutGrabber(); -private slots: + private slots: void DbusWiimoteGeneralButtons(uint id, qulonglong value); void RememberSwingChecked(bool checked); void Timeout(int); -private: + private: QTimeLine line_; quint32 pref_action_; Ui_WiimoteShortcutGrabber* ui_; WiimoteSettingsPage* config_; - boost::scoped_ptr wiimotedev_iface_; + std::unique_ptr wiimotedev_iface_; quint32 wiimotedev_device_; quint64 wiimotedev_buttons_; @@ -56,7 +55,6 @@ private: signals: void AddShortcut(quint64 buttons, quint32 action); - }; -#endif // WIIMOTESHORTCUTGRABBER_H +#endif // WIIMOTESHORTCUTGRABBER_H diff --git a/tests/albumcoverfetcher_test.cpp b/tests/albumcoverfetcher_test.cpp index bfb104c38..a1a052c05 100644 --- a/tests/albumcoverfetcher_test.cpp +++ b/tests/albumcoverfetcher_test.cpp @@ -40,7 +40,7 @@ class AlbumCoverFetcherTest : public ::testing::Test { } void SetUp() { - network_ = new NetworkAccessManager(NULL, mock_network_); + network_ = new NetworkAccessManager(nullptr, mock_network_); } void TearDown() { @@ -71,7 +71,7 @@ TEST_F(AlbumCoverFetcherTest, FetchesAlbumCover) { params.clear(); MockNetworkReply* album_reply = mock_network_->ExpectGet("http://example.com/image.jpg", params, 200, ""); - AlbumCoverFetcher fetcher(network_, NULL); + AlbumCoverFetcher fetcher(network_, nullptr); QSignalSpy spy(&fetcher, SIGNAL(AlbumCoverFetched(quint64, const QImage&))); ASSERT_TRUE(spy.isValid()); fetcher.FetchAlbumCover("Foo", "Bar"); diff --git a/tests/albumcovermanager_test.cpp b/tests/albumcovermanager_test.cpp index 2315c7866..8c0b3fa02 100644 --- a/tests/albumcovermanager_test.cpp +++ b/tests/albumcovermanager_test.cpp @@ -27,7 +27,7 @@ class AlbumCoverManagerTest : public ::testing::Test { protected: AlbumCoverManagerTest() - : manager_(NULL, &cover_providers_, NULL, &mock_network_) { + : manager_(nullptr, &cover_providers_, nullptr, &mock_network_) { } MockNetworkAccessManager mock_network_; diff --git a/tests/asxiniparser_test.cpp b/tests/asxiniparser_test.cpp index 4702bea9b..035969860 100644 --- a/tests/asxiniparser_test.cpp +++ b/tests/asxiniparser_test.cpp @@ -27,7 +27,7 @@ class AsxIniParserTest : public ::testing::Test { protected: - AsxIniParserTest() : parser_(NULL) {} + AsxIniParserTest() : parser_(nullptr) {} AsxIniParser parser_; }; diff --git a/tests/asxparser_test.cpp b/tests/asxparser_test.cpp index bf14bd453..adba1833a 100644 --- a/tests/asxparser_test.cpp +++ b/tests/asxparser_test.cpp @@ -41,7 +41,7 @@ TEST_F(ASXParserTest, ParsesOneTrackFromXML) { ""; QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - ASXParser parser(NULL); + ASXParser parser(nullptr); SongList songs = parser.Load(&buffer); ASSERT_EQ(1, songs.length()); const Song& song = songs[0]; @@ -63,7 +63,7 @@ TEST_F(ASXParserTest, ParsesMoreThanOneTrackFromXML) { ""; QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - ASXParser parser(NULL); + ASXParser parser(nullptr); SongList songs = parser.Load(&buffer); ASSERT_EQ(2, songs.length()); EXPECT_EQ(QUrl("http://example.com/foo.mp3"), songs[0].url()); @@ -89,7 +89,7 @@ TEST_F(ASXParserTest, ParsesBrokenXmlEntities) { QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - ASXParser parser(NULL); + ASXParser parser(nullptr); SongList songs = parser.Load(&buffer); ASSERT_EQ(1, songs.length()); EXPECT_EQ(QUrl("mms://72.26.204.105/classictrance128k?user=h&pass=xxxxxxxxxxxxxxx"), songs[0].url()); @@ -99,7 +99,7 @@ TEST_F(ASXParserTest, SavesSong) { QByteArray data; QBuffer buffer(&data); buffer.open(QIODevice::WriteOnly); - ASXParser parser(NULL); + ASXParser parser(nullptr); Song one; one.set_url(QUrl("http://www.example.com/foo.mp3")); one.set_filetype(Song::Type_Stream); @@ -119,7 +119,7 @@ TEST_F(ASXParserTest, ParsesSomaFM) { QFile somafm(":/testdata/secretagent.asx"); somafm.open(QIODevice::ReadOnly); - ASXParser parser(NULL); + ASXParser parser(nullptr); SongList songs = parser.Load(&somafm); ASSERT_EQ(4, songs.count()); diff --git a/tests/closure_test.cpp b/tests/closure_test.cpp index 7d8f768e9..9c45c8213 100644 --- a/tests/closure_test.cpp +++ b/tests/closure_test.cpp @@ -1,12 +1,13 @@ #include "gtest/gtest.h" +#include +#include + #include #include #include #include -#include - #include "config.h" #include "core/closure.h" #include "test_utils.h" @@ -44,7 +45,7 @@ TEST(ClosureTest, ClosureDeletesSelf) { TEST(ClosureTest, ClosureDoesNotCrashWithSharedPointerSender) { TestQObject receiver; TestQObject* sender; - boost::scoped_ptr spy; + std::unique_ptr spy; QPointer<_detail::ObjectHelper> closure; { QSharedPointer sender_shared(new TestQObject); @@ -94,7 +95,7 @@ TEST(ClosureTest, ClosureWorksWithStandardFunctions) { bool called = false; int question = 42; int answer = 0; - boost::function callback(&Foo); + std::function callback(&Foo); NewClosure( &sender, SIGNAL(Emitted()), callback, &called, question, &answer); @@ -132,7 +133,6 @@ TEST(ClosureTest, ClosureWorksWithMemberFunctionPointers) { EXPECT_EQ(42, q); } -#ifdef HAVE_LAMBDAS TEST(ClosureTest, ClosureCallsLambda) { TestQObject sender; bool called = false; @@ -143,4 +143,3 @@ TEST(ClosureTest, ClosureCallsLambda) { sender.Emit(); EXPECT_TRUE(called); } -#endif // HAVE_LAMBDAS diff --git a/tests/cueparser_test.cpp b/tests/cueparser_test.cpp index 25db6daed..28257174c 100644 --- a/tests/cueparser_test.cpp +++ b/tests/cueparser_test.cpp @@ -28,7 +28,7 @@ class CueParserTest : public ::testing::Test { protected: CueParserTest() - : parser_(NULL) { + : parser_(nullptr) { } // We believe CUE - all songs with proper CUE entries should be valid. diff --git a/tests/database_test.cpp b/tests/database_test.cpp index ba95b4e44..0e726dcf7 100644 --- a/tests/database_test.cpp +++ b/tests/database_test.cpp @@ -15,13 +15,13 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" #include "core/database.h" -#include - #include #include #include @@ -32,7 +32,7 @@ class DatabaseTest : public ::testing::Test { database_.reset(new MemoryDatabase); } - boost::scoped_ptr database_; + std::unique_ptr database_; }; TEST_F(DatabaseTest, DatabaseInitialises) { @@ -54,8 +54,8 @@ TEST_F(DatabaseTest, DatabaseInitialises) { } TEST_F(DatabaseTest, FTSOpenParsesSimpleInput) { - sqlite3_tokenizer_cursor* cursor = NULL; - Database::FTSOpen(NULL, "foo", 3, &cursor); + sqlite3_tokenizer_cursor* cursor = nullptr; + Database::FTSOpen(nullptr, "foo", 3, &cursor); ASSERT_TRUE(cursor); Database::UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); QList tokens = real_cursor->tokens; @@ -69,8 +69,8 @@ TEST_F(DatabaseTest, FTSOpenParsesSimpleInput) { } TEST_F(DatabaseTest, FTSOpenParsesUTF8Input) { - sqlite3_tokenizer_cursor* cursor = NULL; - Database::FTSOpen(NULL, "Röyksopp", 9, &cursor); + sqlite3_tokenizer_cursor* cursor = nullptr; + Database::FTSOpen(nullptr, "Röyksopp", 9, &cursor); ASSERT_TRUE(cursor); Database::UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); QList tokens = real_cursor->tokens; @@ -84,8 +84,8 @@ TEST_F(DatabaseTest, FTSOpenParsesUTF8Input) { } TEST_F(DatabaseTest, FTSOpenParsesMultipleTokens) { - sqlite3_tokenizer_cursor* cursor = NULL; - Database::FTSOpen(NULL, "Röyksopp foo", 13, &cursor); + sqlite3_tokenizer_cursor* cursor = nullptr; + Database::FTSOpen(nullptr, "Röyksopp foo", 13, &cursor); ASSERT_TRUE(cursor); Database::UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); QList tokens = real_cursor->tokens; @@ -103,9 +103,9 @@ TEST_F(DatabaseTest, FTSOpenParsesMultipleTokens) { } TEST_F(DatabaseTest, FTSOpenLeavesCyrillicQueries) { - sqlite3_tokenizer_cursor* cursor = NULL; + sqlite3_tokenizer_cursor* cursor = nullptr; const char* query = "Снег"; - Database::FTSOpen(NULL, query, strlen(query), &cursor); + Database::FTSOpen(nullptr, query, strlen(query), &cursor); ASSERT_TRUE(cursor); Database::UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); QList tokens = real_cursor->tokens; @@ -119,8 +119,8 @@ TEST_F(DatabaseTest, FTSOpenLeavesCyrillicQueries) { } TEST_F(DatabaseTest, FTSCursorWorks) { - sqlite3_tokenizer_cursor* cursor = NULL; - Database::FTSOpen(NULL, "Röyksopp foo", 13, &cursor); + sqlite3_tokenizer_cursor* cursor = nullptr; + Database::FTSOpen(nullptr, "Röyksopp foo", 13, &cursor); ASSERT_TRUE(cursor); Database::UnicodeTokenizerCursor* real_cursor = reinterpret_cast(cursor); diff --git a/tests/fileformats_test.cpp b/tests/fileformats_test.cpp index 209ce94b6..caa0166c7 100644 --- a/tests/fileformats_test.cpp +++ b/tests/fileformats_test.cpp @@ -41,7 +41,7 @@ class FileformatsTest : public ::testing::TestWithParam { static void TearDownTestCase() { delete sGstEngine; - sGstEngine = NULL; + sGstEngine = nullptr; } protected: @@ -74,7 +74,7 @@ class FileformatsTest : public ::testing::TestWithParam { QString temp_filetemplate_; }; -GstEngine* FileformatsTest::sGstEngine = NULL; +GstEngine* FileformatsTest::sGstEngine = nullptr; TEST_P(FileformatsTest, Exists) { diff --git a/tests/librarybackend_test.cpp b/tests/librarybackend_test.cpp index 53fee439e..8d3f70a49 100644 --- a/tests/librarybackend_test.cpp +++ b/tests/librarybackend_test.cpp @@ -15,21 +15,21 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" -#include "library/librarybackend.h" -#include "library/library.h" -#include "core/song.h" -#include "core/database.h" - -#include - #include #include #include #include +#include "library/librarybackend.h" +#include "library/library.h" +#include "core/song.h" +#include "core/database.h" + namespace { class LibraryBackendTest : public ::testing::Test { @@ -53,8 +53,8 @@ class LibraryBackendTest : public ::testing::Test { return ret; } - boost::shared_ptr database_; - boost::scoped_ptr backend_; + std::shared_ptr database_; + std::unique_ptr backend_; }; TEST_F(LibraryBackendTest, EmptyDatabase) { diff --git a/tests/librarymodel_test.cpp b/tests/librarymodel_test.cpp index 7596c3a60..e265978ec 100644 --- a/tests/librarymodel_test.cpp +++ b/tests/librarymodel_test.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" @@ -37,7 +39,7 @@ class LibraryModelTest : public ::testing::Test { backend_.reset(new LibraryBackend); backend_->Init(database_, Library::kSongsTable, Library::kDirsTable, Library::kSubdirsTable, Library::kFtsTable); - model_.reset(new LibraryModel(backend_.get(), NULL)); + model_.reset(new LibraryModel(backend_.get(), nullptr)); added_dir_ = false; @@ -70,10 +72,10 @@ class LibraryModelTest : public ::testing::Test { return AddSong(song); } - boost::shared_ptr database_; - boost::scoped_ptr backend_; - boost::scoped_ptr model_; - boost::scoped_ptr model_sorted_; + std::shared_ptr database_; + std::unique_ptr backend_; + std::unique_ptr model_; + std::unique_ptr model_sorted_; bool added_dir_; }; diff --git a/tests/m3uparser_test.cpp b/tests/m3uparser_test.cpp index 7e96ea4a3..650f12127 100644 --- a/tests/m3uparser_test.cpp +++ b/tests/m3uparser_test.cpp @@ -30,7 +30,7 @@ using ::testing::HasSubstr; class M3UParserTest : public ::testing::Test { protected: M3UParserTest() - : parser_(NULL) { + : parser_(nullptr) { } M3UParser parser_; @@ -66,7 +66,7 @@ TEST_F(M3UParserTest, ParsesTrackLocationRelative) { temp.open(); QFileInfo info(temp); taglib_.ExpectCall(temp.fileName(), "foo", "bar", "baz"); - M3UParser parser(NULL); + M3UParser parser(nullptr); QString line(info.fileName()); Song song(&taglib_); parser.LoadSong(line, 0, info.dir(), &song); @@ -90,7 +90,7 @@ TEST_F(M3UParserTest, ParsesSongsFromDevice) { "http://foo.com/bar/somefile.mp3\n"; QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - M3UParser parser(NULL); + M3UParser parser(nullptr); SongList songs = parser.Load(&buffer); ASSERT_EQ(1, songs.size()); Song s = songs[0]; @@ -105,7 +105,7 @@ TEST_F(M3UParserTest, ParsesNonExtendedM3U) { "http://baz.com/thing.mp3\n"; QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - M3UParser parser(NULL); + M3UParser parser(nullptr); SongList songs = parser.Load(&buffer, "", QDir("somedir")); ASSERT_EQ(2, songs.size()); EXPECT_EQ(QUrl("http://foo.com/bar/somefile.mp3"), songs[0].url()); @@ -118,7 +118,7 @@ TEST_F(M3UParserTest, ParsesNonExtendedM3U) { TEST_F(M3UParserTest, ParsesActualM3U) { QFile file(":testdata/test.m3u"); file.open(QIODevice::ReadOnly); - M3UParser parser(NULL); + M3UParser parser(nullptr); SongList songs = parser.Load(&file, "", QDir("somedir")); ASSERT_EQ(239, songs.size()); EXPECT_EQ("gravity", songs[0].title()); @@ -139,7 +139,7 @@ TEST_F(M3UParserTest, SavesSong) { one.set_url(QUrl("http://www.example.com/foo.mp3")); SongList songs; songs << one; - M3UParser parser(NULL); + M3UParser parser(nullptr); parser.Save(songs, &buffer); EXPECT_THAT(data.constData(), HasSubstr("#EXTM3U")); EXPECT_THAT(data.constData(), HasSubstr("#EXTINF:123,bar - foo")); @@ -152,7 +152,7 @@ TEST_F(M3UParserTest, ParsesUTF8) { "/foo/Разные/исполнители.mp3\n"; QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - M3UParser parser(NULL); + M3UParser parser(nullptr); SongList songs = parser.Load(&buffer); ASSERT_EQ(1, songs.length()); EXPECT_EQ(6, songs[0].artist().length()); diff --git a/tests/mock_networkaccessmanager.cpp b/tests/mock_networkaccessmanager.cpp index 99b95a9fe..64d6d5f68 100644 --- a/tests/mock_networkaccessmanager.cpp +++ b/tests/mock_networkaccessmanager.cpp @@ -83,14 +83,14 @@ MockNetworkReply* MockNetworkAccessManager::ExpectGet( reply->setAttribute(QNetworkRequest::HttpStatusCodeAttribute, status); EXPECT_CALL(*this, createRequest( - GetOperation, RequestForUrl(contains, expected_params), NULL)). + GetOperation, RequestForUrl(contains, expected_params), nullptr)). WillOnce(Return(reply)); return reply; } MockNetworkReply::MockNetworkReply() - : data_(NULL) { + : data_(nullptr) { } MockNetworkReply::MockNetworkReply(const QByteArray& data) diff --git a/tests/mpris1_test.cpp b/tests/mpris1_test.cpp index 61a153368..01c3b27e7 100644 --- a/tests/mpris1_test.cpp +++ b/tests/mpris1_test.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include "core/encoding.h" #include "core/mpris1.h" #include "core/song.h" @@ -64,15 +66,15 @@ protected: MockPlayer player_; MockPlaylistManager playlists_; - boost::scoped_ptr sequence_; + std::unique_ptr sequence_; }; TEST_F(Mpris1BasicTest, CreatesDBusService) { EXPECT_FALSE(QDBusConnection::sessionBus().interface()-> isServiceRegistered(service_name())); - boost::scoped_ptr mpris( - new mpris::Mpris1(&player_, NULL, NULL, service_name())); + std::unique_ptr mpris( + new mpris::Mpris1(&player_, nullptr, nullptr, service_name())); EXPECT_TRUE(QDBusConnection::sessionBus().interface()-> isServiceRegistered(service_name())); @@ -87,10 +89,10 @@ protected: void SetUp() { Mpris1BasicTest::SetUp(); - mpris_.reset(new mpris::Mpris1(&player_, NULL, NULL, service_name())); + mpris_.reset(new mpris::Mpris1(&player_, nullptr, nullptr, service_name())); } - boost::scoped_ptr mpris_; + std::unique_ptr mpris_; }; TEST_F(Mpris1Test, CorrectNameAndVersion) { diff --git a/tests/playlist_test.cpp b/tests/playlist_test.cpp index a55de6b54..417bb0cdb 100644 --- a/tests/playlist_test.cpp +++ b/tests/playlist_test.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" @@ -26,7 +28,7 @@ #include #include -using boost::shared_ptr; +using std::shared_ptr; using ::testing::Return; namespace { @@ -34,8 +36,8 @@ namespace { class PlaylistTest : public ::testing::Test { protected: PlaylistTest() - : playlist_(NULL, NULL, NULL, 1), - sequence_(NULL, new DummySettingsProvider) + : playlist_(nullptr, nullptr, nullptr, 1), + sequence_(nullptr, new DummySettingsProvider) { } diff --git a/tests/plsparser_test.cpp b/tests/plsparser_test.cpp index 691895563..8af6daaaa 100644 --- a/tests/plsparser_test.cpp +++ b/tests/plsparser_test.cpp @@ -15,6 +15,8 @@ along with Clementine. If not, see . */ +#include + #include "test_utils.h" #include "gtest/gtest.h" @@ -27,13 +29,11 @@ #include #include -#include - -using boost::shared_ptr; +using std::shared_ptr; class PLSParserTest : public ::testing::Test { protected: - PLSParserTest() : parser_(NULL) {} + PLSParserTest() : parser_(nullptr) {} shared_ptr Open(const QString& filename) { shared_ptr ret(new QFile(":/testdata/" + filename)); diff --git a/tests/songloader_test.cpp b/tests/songloader_test.cpp index dbbff390b..b72c09075 100644 --- a/tests/songloader_test.cpp +++ b/tests/songloader_test.cpp @@ -15,13 +15,7 @@ along with Clementine. If not, see . */ -#include "test_utils.h" -#include "gmock/gmock-matchers.h" -#include "gtest/gtest.h" -#include "mock_librarybackend.h" - -#include "core/songloader.h" -#include "engines/gstengine.h" +#include #include #include @@ -29,9 +23,16 @@ #include #include -#include #include +#include "test_utils.h" +#include "gmock/gmock-matchers.h" +#include "gtest/gtest.h" +#include "mock_librarybackend.h" + +#include "core/songloader.h" +#include "engines/gstengine.h" + using ::testing::_; using ::testing::Return; @@ -45,7 +46,7 @@ public: static void TearDownTestCase() { delete sGstEngine; - sGstEngine = NULL; + sGstEngine = nullptr; } protected: @@ -63,12 +64,12 @@ protected: static const char* kRemoteUrl; static GstEngine* sGstEngine; - boost::scoped_ptr loader_; - boost::scoped_ptr library_; + std::unique_ptr loader_; + std::unique_ptr library_; }; const char* SongLoaderTest::kRemoteUrl = "http://remotetestdata.clementine-player.org"; -GstEngine* SongLoaderTest::sGstEngine = NULL; +GstEngine* SongLoaderTest::sGstEngine = nullptr; TEST_F(SongLoaderTest, LoadLocalMp3) { TemporaryResource file(":/testdata/beep.mp3"); diff --git a/tests/songplaylistitem_test.cpp b/tests/songplaylistitem_test.cpp index 7dee583f7..3d603686f 100644 --- a/tests/songplaylistitem_test.cpp +++ b/tests/songplaylistitem_test.cpp @@ -15,11 +15,12 @@ along with Clementine. If not, see . */ +#include + #include "playlist/songplaylistitem.h" #include "test_utils.h" #include -#include #include #include @@ -30,7 +31,7 @@ namespace { class SongPlaylistItemTest : public ::testing::TestWithParam { protected: SongPlaylistItemTest() : temp_file_(GetParam()) {} - + void SetUp() { // SongPlaylistItem::Url() checks if the file exists, so we need a real file temp_file_.open(); @@ -49,7 +50,7 @@ class SongPlaylistItemTest : public ::testing::TestWithParam { Song song_; QTemporaryFile temp_file_; QString absolute_file_name_; - boost::scoped_ptr item_; + std::unique_ptr item_; }; INSTANTIATE_TEST_CASE_P(RealFiles, SongPlaylistItemTest, testing::Values( diff --git a/tests/sqlite_test.cpp b/tests/sqlite_test.cpp index e1181845a..2470101fd 100644 --- a/tests/sqlite_test.cpp +++ b/tests/sqlite_test.cpp @@ -3,14 +3,14 @@ #include TEST(SqliteTest, FTS3SupportEnabled) { - sqlite3* db = NULL; + sqlite3* db = nullptr; int rc = sqlite3_open(":memory:", &db); ASSERT_EQ(0, rc); - char* errmsg = NULL; + char* errmsg = nullptr; rc = sqlite3_exec( db, "CREATE VIRTUAL TABLE foo USING fts3(content, TEXT)", - NULL, NULL, &errmsg); + nullptr, nullptr, &errmsg); ASSERT_EQ(0, rc) << errmsg; sqlite3_close(db); diff --git a/tests/utilities_test.cpp b/tests/utilities_test.cpp index 40b07773b..85d60bab2 100644 --- a/tests/utilities_test.cpp +++ b/tests/utilities_test.cpp @@ -21,8 +21,6 @@ #include "core/utilities.h" -#include - #include TEST(UtilitiesTest, HmacFunctions) { diff --git a/tests/xspfparser_test.cpp b/tests/xspfparser_test.cpp index 982d9ce31..becdabbbc 100644 --- a/tests/xspfparser_test.cpp +++ b/tests/xspfparser_test.cpp @@ -44,7 +44,7 @@ TEST_F(XSPFParserTest, ParsesOneTrackFromXML) { ""; QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - XSPFParser parser(NULL); + XSPFParser parser(nullptr); SongList songs = parser.Load(&buffer); ASSERT_EQ(1, songs.length()); const Song& song = songs[0]; @@ -68,7 +68,7 @@ TEST_F(XSPFParserTest, ParsesMoreThanOneTrackFromXML) { ""; QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - XSPFParser parser(NULL); + XSPFParser parser(nullptr); SongList songs = parser.Load(&buffer); ASSERT_EQ(2, songs.length()); EXPECT_EQ(QUrl("http://example.com/foo.mp3"), songs[0].url()); @@ -90,7 +90,7 @@ TEST_F(XSPFParserTest, IgnoresInvalidLength) { ""; QBuffer buffer(&data); buffer.open(QIODevice::ReadOnly); - XSPFParser parser(NULL); + XSPFParser parser(nullptr); SongList songs = parser.Load(&buffer); ASSERT_EQ(1, songs.length()); EXPECT_EQ(-1, songs[0].length_nanosec()); @@ -100,7 +100,7 @@ TEST_F(XSPFParserTest, SavesSong) { QByteArray data; QBuffer buffer(&data); buffer.open(QIODevice::WriteOnly); - XSPFParser parser(NULL); + XSPFParser parser(nullptr); Song one; one.set_url(QUrl("http://www.example.com/foo.mp3")); one.set_filetype(Song::Type_Stream); @@ -121,7 +121,7 @@ TEST_F(XSPFParserTest, SavesLocalFile) { QByteArray data; QBuffer buffer(&data); buffer.open(QIODevice::WriteOnly); - XSPFParser parser(NULL); + XSPFParser parser(nullptr); Song one; one.set_url(QUrl("file:///bar/foo.mp3")); one.set_filetype(Song::Type_Mpeg);